renalware-core 2.0.137 → 2.0.138

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.
Files changed (173) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/renalware/icons/home.svg +1 -0
  3. data/app/assets/images/renalware/icons/settings.svg +1 -0
  4. data/app/assets/javascripts/renalware/components/hd.js +0 -109
  5. data/app/assets/javascripts/renalware/components/toggler.js +0 -29
  6. data/app/assets/javascripts/renalware/core.js.erb +5 -1
  7. data/app/assets/javascripts/renalware/rollup_compiled.js +3888 -0
  8. data/app/assets/stylesheets/renalware/modules/_hd.scss +40 -17
  9. data/app/assets/stylesheets/renalware/partials/_dashboards.scss +1 -1
  10. data/app/assets/stylesheets/renalware/partials/_modal_window.scss +1 -0
  11. data/app/assets/stylesheets/renalware/partials/_navigation.scss +45 -2
  12. data/app/assets/stylesheets/renalware/partials/_pagination.scss +21 -0
  13. data/app/assets/stylesheets/renalware/partials/_tables.scss +9 -0
  14. data/app/assets/stylesheets/renalware/protocol_pdf.scss +45 -6
  15. data/app/components/renalware/application_component.rb +1 -1
  16. data/app/components/renalware/hd/administer_prescription_dropdown_component.html.slim +22 -0
  17. data/app/components/renalware/hd/administer_prescription_dropdown_component.rb +22 -0
  18. data/app/components/renalware/hd/prescription_last_administration_component.html.slim +6 -0
  19. data/app/components/renalware/hd/prescription_last_administration_component.rb +19 -0
  20. data/app/components/renalware/letters/letters_in_progress_component.html.slim +1 -1
  21. data/app/components/renalware/system/admin_menu_component.html.slim +25 -0
  22. data/app/components/renalware/system/admin_menu_component.rb +56 -0
  23. data/app/components/renalware/system/users_awaiting_approval_component.html.slim +6 -0
  24. data/app/components/renalware/system/users_awaiting_approval_component.rb +25 -0
  25. data/app/controllers/renalware/admin/dashboards_controller.rb +9 -0
  26. data/app/controllers/renalware/hd/base_controller.rb +4 -0
  27. data/app/controllers/renalware/hd/prescription_administrations_controller.rb +87 -0
  28. data/app/controllers/renalware/hd/sessions_controller.rb +6 -44
  29. data/app/controllers/renalware/hd/transmission_logs_controller.rb +7 -6
  30. data/app/controllers/renalware/hd/witnesses_controller.rb +62 -0
  31. data/app/helpers/renalware/application_helper.rb +1 -0
  32. data/app/helpers/renalware/layout_helper.rb +12 -0
  33. data/app/helpers/renalware/toggle_helper.rb +13 -4
  34. data/app/javascript/renalware/controllers/another_test_controller.js +8 -0
  35. data/app/javascript/renalware/controllers/hd/prescription_administration_controller.js +22 -0
  36. data/app/javascript/renalware/controllers/test_controller.js +8 -0
  37. data/app/javascript/renalware/controllers/toggle_controller.js +36 -0
  38. data/app/javascript/renalware/index.js +25 -0
  39. data/app/models/renalware/hd/patient.rb +1 -0
  40. data/app/models/renalware/hd/prescription_administration.rb +57 -33
  41. data/app/models/renalware/hd/prescription_last_administration_query.rb +29 -0
  42. data/app/models/renalware/hd/sessions/save_session.rb +1 -25
  43. data/app/models/renalware/hd/witness_form.rb +31 -0
  44. data/app/policies/renalware/hd/prescription_administration_policy.rb +8 -0
  45. data/app/presenters/renalware/admin/users/{summary_part.rb → summary_part.rb.dead} +0 -0
  46. data/app/presenters/renalware/hd/dashboard_presenter.rb +16 -7
  47. data/app/views/renalware/accesses/plans/_details.html.slim +1 -1
  48. data/app/views/renalware/admin/cache/show.html.slim +1 -1
  49. data/app/views/renalware/admin/dashboards/show.html.slim +4 -0
  50. data/app/views/renalware/admin/users/{_summary_part.html.slim → _summary_part.html.slim.dead} +1 -1
  51. data/app/views/renalware/admin/users/edit.html.slim +1 -1
  52. data/app/views/renalware/admin/users/index.html.slim +1 -1
  53. data/app/views/renalware/admissions/_summary_part.html.slim +5 -4
  54. data/app/views/renalware/admissions/consults/_summary_part.html.slim +7 -7
  55. data/app/views/renalware/dashboard/dashboards/_content.html.slim +5 -5
  56. data/app/views/renalware/drugs/drugs/edit.html.slim +2 -2
  57. data/app/views/renalware/drugs/drugs/index.html.slim +1 -1
  58. data/app/views/renalware/drugs/drugs/new.html.slim +1 -1
  59. data/app/views/renalware/events/types/edit.html.slim +1 -1
  60. data/app/views/renalware/events/types/index.html.slim +1 -1
  61. data/app/views/renalware/events/types/new.html.slim +1 -1
  62. data/app/views/renalware/hd/cannulation_types/edit.html.slim +1 -1
  63. data/app/views/renalware/hd/cannulation_types/index.html.slim +5 -5
  64. data/app/views/renalware/hd/cannulation_types/new.html.slim +1 -1
  65. data/app/views/renalware/hd/dashboards/_page_actions.html.slim +4 -1
  66. data/app/views/renalware/hd/dashboards/show.html.slim +1 -0
  67. data/app/views/renalware/hd/dialysates/edit.html.slim +1 -1
  68. data/app/views/renalware/hd/dialysates/index.html.slim +1 -1
  69. data/app/views/renalware/hd/dialysates/new.html.slim +1 -1
  70. data/app/views/renalware/hd/dialysers/edit.html.slim +1 -1
  71. data/app/views/renalware/hd/dialysers/index.html.slim +4 -5
  72. data/app/views/renalware/hd/dialysers/new.html.slim +1 -1
  73. data/app/views/renalware/hd/prescription_administrations/_form.html.slim +96 -0
  74. data/app/views/renalware/hd/prescription_administrations/_row.html.slim +25 -0
  75. data/app/views/renalware/hd/prescription_administrations/_table.html.slim +8 -0
  76. data/app/views/renalware/hd/prescription_administrations/_thead.html.slim +11 -0
  77. data/app/views/renalware/hd/prescription_administrations/create.js.erb +4 -0
  78. data/app/views/renalware/hd/prescription_administrations/edit.html.slim +5 -0
  79. data/app/views/renalware/hd/prescription_administrations/edit.js.erb +11 -0
  80. data/app/views/renalware/hd/prescription_administrations/index.html.slim +3 -0
  81. data/app/views/renalware/hd/prescription_administrations/new.html.slim +3 -0
  82. data/app/views/renalware/hd/prescription_administrations/new.js.erb +5 -0
  83. data/app/views/renalware/hd/protocols/_allergies.html.slim +3 -0
  84. data/app/views/renalware/hd/protocols/_latest_dry_weight.html.slim +3 -2
  85. data/app/views/renalware/hd/protocols/_prescriptions.html.slim +15 -7
  86. data/app/views/renalware/hd/protocols/_profile.html.slim +12 -12
  87. data/app/views/renalware/hd/protocols/_protocol.pdf.slim +2 -3
  88. data/app/views/renalware/hd/sessions/_form.html.slim +2 -6
  89. data/app/views/renalware/hd/sessions/_index_tabs.html.slim +11 -0
  90. data/app/views/renalware/hd/sessions/_list.html.slim +21 -1
  91. data/app/views/renalware/hd/sessions/_table.html.slim +1 -18
  92. data/app/views/renalware/hd/sessions/closed/_form.html.slim +1 -2
  93. data/app/views/renalware/hd/sessions/edit.html.slim +1 -2
  94. data/app/views/renalware/hd/sessions/new.html.slim +1 -2
  95. data/app/views/renalware/hd/sessions/open/_form.html.slim +1 -2
  96. data/app/views/renalware/hd/transmission_logs/index.html.slim +2 -2
  97. data/app/views/renalware/hd/witnesses/_form.html.slim +49 -0
  98. data/app/views/renalware/hd/witnesses/edit.html.slim +1 -0
  99. data/app/views/renalware/hd/witnesses/edit.js.erb +3 -0
  100. data/app/views/renalware/hd/witnesses/update.js.erb +4 -0
  101. data/app/views/renalware/layouts/_admin.html.slim +28 -0
  102. data/app/views/renalware/layouts/_patient.html.slim +1 -1
  103. data/app/views/renalware/letters/batches/index.html.slim +1 -1
  104. data/app/views/renalware/letters/letters/_letter.html.slim +1 -1
  105. data/app/views/renalware/modalities/descriptions/edit.html.slim +1 -1
  106. data/app/views/renalware/modalities/descriptions/index.html.slim +1 -1
  107. data/app/views/renalware/modalities/descriptions/new.html.slim +1 -1
  108. data/app/views/renalware/navigation/_admin.html.slim +1 -1
  109. data/app/views/renalware/navigation/_menu.html.slim +7 -6
  110. data/app/views/renalware/navigation/_user.html.slim +3 -4
  111. data/app/views/renalware/pathology/observation_requests/_filters.html.slim +1 -1
  112. data/app/views/renalware/pathology/requests/requests/index.html.slim +1 -1
  113. data/app/views/renalware/pathology/requests/rules/index.html.slim +1 -1
  114. data/app/views/renalware/patients/_layout.html.slim +1 -1
  115. data/app/views/renalware/patients/_summary_part.html.slim +1 -1
  116. data/app/views/renalware/patients/primary_care_physicians/edit.html.slim +1 -1
  117. data/app/views/renalware/patients/primary_care_physicians/index.html.slim +3 -5
  118. data/app/views/renalware/patients/primary_care_physicians/new.html.slim +1 -1
  119. data/app/views/renalware/pd/bag_types/edit.html.slim +1 -1
  120. data/app/views/renalware/pd/bag_types/index.html.slim +1 -1
  121. data/app/views/renalware/pd/bag_types/new.html.slim +1 -1
  122. data/app/views/renalware/problems/problems/_summary_part.html.slim +1 -1
  123. data/app/views/renalware/research/study_participants/index.html.slim +2 -3
  124. data/app/views/renalware/surveys/_pos_s_summary_part.html.slim +2 -1
  125. data/app/views/renalware/system/email_templates/index.html.slim +5 -1
  126. data/app/views/renalware/system/messages/edit.html.slim +1 -1
  127. data/app/views/renalware/system/messages/index.html.slim +1 -1
  128. data/app/views/renalware/system/messages/new.html.slim +1 -1
  129. data/app/views/renalware/system/user_feedback/edit.html.slim +1 -1
  130. data/app/views/renalware/system/user_feedback/index.html.slim +1 -1
  131. data/app/views/renalware/transplants/mdm/_bottom.html.slim +1 -1
  132. data/config/initializers/pagy.rb +9 -0
  133. data/config/locales/renalware/hd/dashboards.en.yml +1 -0
  134. data/config/locales/renalware/hd/session.en.yml +2 -1
  135. data/config/routes/admin.rb +1 -0
  136. data/config/routes/hd.rb +9 -0
  137. data/db/migrate/20190627141751_add_tokens_to_hd_prescription_administrations.rb +0 -2
  138. data/db/migrate/20200204153231_alter_hd_prescription_administrations.rb +18 -0
  139. data/db/seeds/default/accesses/access_pd_catheter_insertion_techniques.rb +0 -1
  140. data/db/seeds/default/accesses/access_plan_types.rb +0 -1
  141. data/db/seeds/default/accesses/access_sites.rb +0 -1
  142. data/db/seeds/default/clinics/clinics.rb +0 -1
  143. data/db/seeds/default/events/event_types.rb +0 -1
  144. data/db/seeds/default/hd/cannulation_types.rb +0 -1
  145. data/db/seeds/default/hd/dialysers.rb +0 -1
  146. data/db/seeds/default/modalities/reasons.rb +19 -19
  147. data/db/seeds/default/pathology/measurement_units.rb +0 -1
  148. data/db/seeds/default/patients/patients_ethnicities.rb +0 -1
  149. data/db/seeds/default/patients/patients_languages.rb +1 -0
  150. data/db/seeds/default/patients/patients_religions.rb +0 -1
  151. data/db/seeds/default/pd/bag_types.rb +0 -1
  152. data/db/seeds/default/pd/organisms.rb +0 -1
  153. data/db/seeds/default/pd/systems.rb +0 -1
  154. data/db/seeds/default/pd/training_sites.rb +0 -1
  155. data/db/seeds/default/pd/training_types.rb +0 -1
  156. data/db/seeds/default/practices/practices.rb +2 -2
  157. data/db/seeds/default/practices/primary_care_physicians.rb +1 -2
  158. data/db/seeds/default/renal/prd_descriptions.rb +1 -0
  159. data/db/seeds/default/system/roles.rb +1 -1
  160. data/lib/renalware/engine.rb +1 -0
  161. data/lib/renalware/version.rb +1 -1
  162. data/spec/factories/hd/prescription_administrations.rb +17 -0
  163. data/spec/support/factory_bot.rb +2 -0
  164. data/spec/support/pages/hd/prescription_administration_dialog.rb +132 -0
  165. metadata +62 -12
  166. data/app/assets/javascripts/renalware/components/bla.es6 +0 -1
  167. data/app/controllers/renalware/hd/prescription_administration_authorisations_controller.rb +0 -27
  168. data/app/javascript/controllers/clipboard_controller.js.dead +0 -16
  169. data/app/views/renalware/hd/sessions/_administered_drugs_row.html.slim +0 -27
  170. data/app/views/renalware/hd/sessions/_administered_drugs_thead.html.slim +0 -11
  171. data/app/views/renalware/hd/sessions/_prescription_administrations.html.slim +0 -20
  172. data/app/views/renalware/hd/sessions/closed/_administered_drugs_row.html.slim +0 -3
  173. data/app/views/renalware/hd/sessions/form/_drugs_to_be_administered.html.slim +0 -84
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81d09134cf1a4ea4796c62cae9f367d2e336ee1d65e4707efcb49d7c58c7dcb4
4
- data.tar.gz: 7cb276e32f591a30a8e94874e6d51330c765720acc9800d3c34828d85052e996
3
+ metadata.gz: f8f7059d114355fbc49605fcde385d8044508d02c5c1b7aeefa2c42b8f335335
4
+ data.tar.gz: 1835b91beea4880a15219eb58df05a47e5833f81613d65ae6a9910938652648c
5
5
  SHA512:
6
- metadata.gz: 7a8927c295304770d15f255702c1ad63cfeeb84a730745de3cd18bb438e6170c687f005d80019d434ea5170a5e84fe3c3935790fa3ea0fa181903f8ef163dfa4
7
- data.tar.gz: 9c15f68020b3f733a6883ce21982057541d882b2ccd1432e3613970cfcf72229ef181a721abf9b600e1d49a4ffb190895d49bd682f333b2352a21f4d6eca6654
6
+ metadata.gz: 7dd8130e88327dfb88d0e0447917642723af2adab2f23ac7992d4891633eb2804f0b5200701d9a91cd4065bc5a7980a61d73e6375d0623e40429b81bca134911
7
+ data.tar.gz: 5a3b2ecbd70ca5484c3527c2550c97cd067169ace37ebbc1c7d78cf704d8411feb5f4c109f8d43fabc6cbca1084bd056749832c992174f294e165c5180e0aaf5
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#DDD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-home"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#DDD" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-settings"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
@@ -1,112 +1,3 @@
1
- /*
2
- These are functions relating to the authorisation by nurse + witness of prescriptions
3
- within the HD Session form.
4
- TODO: This needs refactoring.
5
- */
6
- $(document).ready(function() {
7
- /*
8
- If enter is pressed in a password field (out of habit as enter is oftern used when logging in,
9
- after entering their password) throw it away. We could map it to a tab but frankly that gets
10
- a bit complicated - see here:
11
- https://stackoverflow.com/questions/2335553/jquery-how-to-catch-enter-key-and-change-event-to-tab
12
- */
13
- $("input.user-password").on("keypress", function(e) {
14
- if (e.keyCode == 13) { return false; }
15
- });
16
-
17
- $(".hd-drug-administered input[type='radio']").on("change", function(e) {
18
- var checked = ($(this).val() == "true");
19
- var container = $(this).closest(".hd-drug-administration");
20
- $(container).toggleClass("administered", checked);
21
- $(container).toggleClass("not-administered", !checked);
22
- $(container).removeClass("undecided");
23
- $(".authentication", container).toggle(checked);
24
- $(".authentication", container).toggleClass("disabled-with-faded-overlay", !checked);
25
- $(".reason-why-not-administered", container).toggle(!checked)
26
- });
27
-
28
- $(".hd-drug-administration .authentication-user-id").on("select2:select", function(e) {
29
- var container = $(this).closest(".user-and-password");
30
- var topContainer = $(container).closest(".hd-drug-administration");
31
- $(container).find(".authentication-token").val("");
32
- $("input.user-password", container).val("");
33
- $(container).removeClass("authorised");
34
- var tokenCount = $(topContainer).find(".authorised").length;
35
- $(topContainer).attr("data-token-count", tokenCount);
36
- });
37
-
38
-
39
- // When a user clicks the link to clear the authorisation (they might have used the wrong user
40
- // for instance) the clear the relevant token and password fields and classes.
41
- $(".hd-drug-administration .user-and-password .user-and-password--clear").on("click", function(e) {
42
- e.preventDefault();
43
- var container = $(this).closest(".user-and-password");
44
- var topContainer = $(container).closest(".hd-drug-administration");
45
- $(container).find(".authentication-token").val("");
46
- $("input.user-password", container).val("");
47
- $(container).removeClass("authorised");
48
- var tokenCount = $(topContainer).find(".authorised").length;
49
- $(topContainer).attr("data-token-count", tokenCount);
50
- });
51
-
52
- // When the user has entered a password and leaves the password field, make an ajax POST to
53
- // authenticate the user and on success return an authorisation token which is added to the html
54
- // form - it will be validated when the form is submitted.
55
- // TODO: also do this if enter pressed while in the password field.
56
- $(".user-and-password input.user-password").on("blur", function(e) {
57
- var container = $(this).closest(".user-and-password");
58
- var topContainer = $(container).closest(".hd-drug-administration");
59
- var authUrl = $(container).closest(".authentication").data("authentication-url");
60
- var userSelect = $(container).find(".authentication-user-id");
61
- var userId = $(userSelect).find("option:selected").val();
62
- var authorisationTokenHiddenField = $(container).find(".authentication-token");
63
- var password = $(this).val();
64
-
65
- // Prevent the a 401 xhr code from redirecting us to the login page - see ajax_errors.js
66
- $(document).off('ajaxError');
67
-
68
- if (userId && password) {
69
- $.ajax({
70
- async: false, /* needed as if pwd field has focus and user clicks submit, it would not wait for ajax */
71
- url: authUrl,
72
- type: "POST",
73
- data: "[user][id]=" + userId + "&[user][password]=" + password,
74
- beforeSend: function() {
75
- // Add a 'working' class during ajax operations so we can show a spinner for example
76
- $(container).addClass("working");
77
- $(container).removeClass("error");
78
- // $(".hd-session-form button[type='submit]").prop("disabled", "disabled")
79
- },
80
- complete: function() {
81
- $(container).removeClass("working");
82
- // $(".hd-session-form input[type='submit']").removeProp("disabled")
83
- },
84
- statusCode: {
85
- 200: function (token) {
86
- // The user id/password combination is valid and a token has been returned.
87
- // We save the token to a hidden field so it wikll be submitted in the session form.
88
- $(authorisationTokenHiddenField).val(token);
89
- $(container).removeClass("unauthorised").addClass("authorised").removeClass("error");
90
- // $(userSelect).prop("disabled", true);
91
- var tokenCount = $(topContainer).find(".authorised").length;
92
- $(topContainer).attr("data-token-count", tokenCount);
93
-
94
- },
95
- 401: function (data) {
96
- // The user id/password combination was not valid
97
- console.log('401: Unauthenticated');
98
- $(authorisationTokenHiddenField).prop("value", "");
99
- $(container).removeClass("authorised").addClass("error");
100
-
101
- var tokenCount = $(topContainer).find(".authorised").length;
102
- $(topContainer).attr("data-token-count", tokenCount);
103
- }
104
- }
105
- });
106
- }
107
- });
108
- });
109
-
110
1
  var Renalware = typeof Renalware === 'undefined' ? {} : Renalware;
111
2
 
112
3
  Renalware.HD = (function() {
@@ -57,35 +57,6 @@ function initTogglers() {
57
57
  triggerMasonryLayoutRefresh();
58
58
  })
59
59
  }
60
-
61
- // These two handlers mimic the row-toggler stimulus stimulus controller methods which
62
- // are not ywt wired up because of lack of stimulus polyfill support in the asset pipline
63
- // which means stimulus will not work with IE11. Hence the use of data-action etc here so
64
- // once stimulus is working we can remove these 2 handlers without changing any markup.
65
-
66
- // This handler toggles the last tr in the current tbody. We use multiple tbodys in each table
67
- // to make toggling like this simpler, and to group the related (visible and toggleable) rows
68
- // together.
69
- // Note table must have the .toggleable class
70
- $("a[data-action='row-toggler#toggleRow']").on("click", function(event) {
71
- event.preventDefault();
72
- $(event.target).closest("tbody").toggleClass("toggleable--open");
73
- triggerMasonryLayoutRefresh();
74
- });
75
-
76
- // This handler toggles the last tr in each tbody in the current table.
77
- // The link will probably sit in a thead < th
78
- $("a[data-action='row-toggler#toggleTable']").on("click", function(event) {
79
- event.preventDefault();
80
- var link = event.target;
81
- var table = $(link).closest("table");
82
- var thead = $(link).closest("thead");
83
- var tbodies = $("tbody", table);
84
- var hide = thead.hasClass("toggleable--open");
85
- thead.toggleClass("toggleable--open");
86
- $(tbodies).toggleClass("toggleable--open", !hide);
87
- triggerMasonryLayoutRefresh();
88
- });
89
60
  }
90
61
 
91
62
  $(function() {
@@ -44,7 +44,11 @@
44
44
  //= require print-js/dist/print
45
45
  //= require moment/moment
46
46
  //= require_directory ./components
47
- //
47
+
48
+ // This next file is compiled by rollup using files in app/javascripts.
49
+ // We need to ensure it is always up to date, perhaps using a precommit hook
50
+ // and CI check
51
+ //= require ./rollup_compiled
48
52
 
49
53
  // Define a console.log if one does not yet exist - e.g. we in IE11
50
54
  window.console = window.console || { log: function() {} };
@@ -0,0 +1,3888 @@
1
+ function createCommonjsModule(fn, module) {
2
+ return module = {
3
+ exports: {}
4
+ }, fn(module, module.exports), module.exports;
5
+ }
6
+
7
+ var _global = createCommonjsModule(function(module) {
8
+ var global = module.exports = typeof window != "undefined" && window.Math == Math ? window : typeof self != "undefined" && self.Math == Math ? self : Function("return this")();
9
+ if (typeof __g == "number") __g = global;
10
+ });
11
+
12
+ var _core = createCommonjsModule(function(module) {
13
+ var core = module.exports = {
14
+ version: "2.6.11"
15
+ };
16
+ if (typeof __e == "number") __e = core;
17
+ });
18
+
19
+ var _core_1 = _core.version;
20
+
21
+ var _isObject = function(it) {
22
+ return typeof it === "object" ? it !== null : typeof it === "function";
23
+ };
24
+
25
+ var _anObject = function(it) {
26
+ if (!_isObject(it)) throw TypeError(it + " is not an object!");
27
+ return it;
28
+ };
29
+
30
+ var _fails = function(exec) {
31
+ try {
32
+ return !!exec();
33
+ } catch (e) {
34
+ return true;
35
+ }
36
+ };
37
+
38
+ var _descriptors = !_fails(function() {
39
+ return Object.defineProperty({}, "a", {
40
+ get: function() {
41
+ return 7;
42
+ }
43
+ }).a != 7;
44
+ });
45
+
46
+ var document$1 = _global.document;
47
+
48
+ var is = _isObject(document$1) && _isObject(document$1.createElement);
49
+
50
+ var _domCreate = function(it) {
51
+ return is ? document$1.createElement(it) : {};
52
+ };
53
+
54
+ var _ie8DomDefine = !_descriptors && !_fails(function() {
55
+ return Object.defineProperty(_domCreate("div"), "a", {
56
+ get: function() {
57
+ return 7;
58
+ }
59
+ }).a != 7;
60
+ });
61
+
62
+ var _toPrimitive = function(it, S) {
63
+ if (!_isObject(it)) return it;
64
+ var fn, val;
65
+ if (S && typeof (fn = it.toString) == "function" && !_isObject(val = fn.call(it))) return val;
66
+ if (typeof (fn = it.valueOf) == "function" && !_isObject(val = fn.call(it))) return val;
67
+ if (!S && typeof (fn = it.toString) == "function" && !_isObject(val = fn.call(it))) return val;
68
+ throw TypeError("Can't convert object to primitive value");
69
+ };
70
+
71
+ var dP = Object.defineProperty;
72
+
73
+ var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
74
+ _anObject(O);
75
+ P = _toPrimitive(P, true);
76
+ _anObject(Attributes);
77
+ if (_ie8DomDefine) try {
78
+ return dP(O, P, Attributes);
79
+ } catch (e) {}
80
+ if ("get" in Attributes || "set" in Attributes) throw TypeError("Accessors not supported!");
81
+ if ("value" in Attributes) O[P] = Attributes.value;
82
+ return O;
83
+ };
84
+
85
+ var _objectDp = {
86
+ f: f
87
+ };
88
+
89
+ var _propertyDesc = function(bitmap, value) {
90
+ return {
91
+ enumerable: !(bitmap & 1),
92
+ configurable: !(bitmap & 2),
93
+ writable: !(bitmap & 4),
94
+ value: value
95
+ };
96
+ };
97
+
98
+ var _hide = _descriptors ? function(object, key, value) {
99
+ return _objectDp.f(object, key, _propertyDesc(1, value));
100
+ } : function(object, key, value) {
101
+ object[key] = value;
102
+ return object;
103
+ };
104
+
105
+ var hasOwnProperty = {}.hasOwnProperty;
106
+
107
+ var _has = function(it, key) {
108
+ return hasOwnProperty.call(it, key);
109
+ };
110
+
111
+ var id = 0;
112
+
113
+ var px = Math.random();
114
+
115
+ var _uid = function(key) {
116
+ return "Symbol(".concat(key === undefined ? "" : key, ")_", (++id + px).toString(36));
117
+ };
118
+
119
+ var _shared = createCommonjsModule(function(module) {
120
+ var SHARED = "__core-js_shared__";
121
+ var store = _global[SHARED] || (_global[SHARED] = {});
122
+ (module.exports = function(key, value) {
123
+ return store[key] || (store[key] = value !== undefined ? value : {});
124
+ })("versions", []).push({
125
+ version: _core.version,
126
+ mode: "global",
127
+ copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
128
+ });
129
+ });
130
+
131
+ var _functionToString = _shared("native-function-to-string", Function.toString);
132
+
133
+ var _redefine = createCommonjsModule(function(module) {
134
+ var SRC = _uid("src");
135
+ var TO_STRING = "toString";
136
+ var TPL = ("" + _functionToString).split(TO_STRING);
137
+ _core.inspectSource = function(it) {
138
+ return _functionToString.call(it);
139
+ };
140
+ (module.exports = function(O, key, val, safe) {
141
+ var isFunction = typeof val == "function";
142
+ if (isFunction) _has(val, "name") || _hide(val, "name", key);
143
+ if (O[key] === val) return;
144
+ if (isFunction) _has(val, SRC) || _hide(val, SRC, O[key] ? "" + O[key] : TPL.join(String(key)));
145
+ if (O === _global) {
146
+ O[key] = val;
147
+ } else if (!safe) {
148
+ delete O[key];
149
+ _hide(O, key, val);
150
+ } else if (O[key]) {
151
+ O[key] = val;
152
+ } else {
153
+ _hide(O, key, val);
154
+ }
155
+ })(Function.prototype, TO_STRING, function toString() {
156
+ return typeof this == "function" && this[SRC] || _functionToString.call(this);
157
+ });
158
+ });
159
+
160
+ var _aFunction = function(it) {
161
+ if (typeof it != "function") throw TypeError(it + " is not a function!");
162
+ return it;
163
+ };
164
+
165
+ var _ctx = function(fn, that, length) {
166
+ _aFunction(fn);
167
+ if (that === undefined) return fn;
168
+ switch (length) {
169
+ case 1:
170
+ return function(a) {
171
+ return fn.call(that, a);
172
+ };
173
+
174
+ case 2:
175
+ return function(a, b) {
176
+ return fn.call(that, a, b);
177
+ };
178
+
179
+ case 3:
180
+ return function(a, b, c) {
181
+ return fn.call(that, a, b, c);
182
+ };
183
+ }
184
+ return function() {
185
+ return fn.apply(that, arguments);
186
+ };
187
+ };
188
+
189
+ var PROTOTYPE = "prototype";
190
+
191
+ var $export = function(type, name, source) {
192
+ var IS_FORCED = type & $export.F;
193
+ var IS_GLOBAL = type & $export.G;
194
+ var IS_STATIC = type & $export.S;
195
+ var IS_PROTO = type & $export.P;
196
+ var IS_BIND = type & $export.B;
197
+ var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];
198
+ var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
199
+ var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
200
+ var key, own, out, exp;
201
+ if (IS_GLOBAL) source = name;
202
+ for (key in source) {
203
+ own = !IS_FORCED && target && target[key] !== undefined;
204
+ out = (own ? target : source)[key];
205
+ exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == "function" ? _ctx(Function.call, out) : out;
206
+ if (target) _redefine(target, key, out, type & $export.U);
207
+ if (exports[key] != out) _hide(exports, key, exp);
208
+ if (IS_PROTO && expProto[key] != out) expProto[key] = out;
209
+ }
210
+ };
211
+
212
+ _global.core = _core;
213
+
214
+ $export.F = 1;
215
+
216
+ $export.G = 2;
217
+
218
+ $export.S = 4;
219
+
220
+ $export.P = 8;
221
+
222
+ $export.B = 16;
223
+
224
+ $export.W = 32;
225
+
226
+ $export.U = 64;
227
+
228
+ $export.R = 128;
229
+
230
+ var _export = $export;
231
+
232
+ var toString = {}.toString;
233
+
234
+ var _cof = function(it) {
235
+ return toString.call(it).slice(8, -1);
236
+ };
237
+
238
+ var _iobject = Object("z").propertyIsEnumerable(0) ? Object : function(it) {
239
+ return _cof(it) == "String" ? it.split("") : Object(it);
240
+ };
241
+
242
+ var _defined = function(it) {
243
+ if (it == undefined) throw TypeError("Can't call method on " + it);
244
+ return it;
245
+ };
246
+
247
+ var _toObject = function(it) {
248
+ return Object(_defined(it));
249
+ };
250
+
251
+ var ceil = Math.ceil;
252
+
253
+ var floor = Math.floor;
254
+
255
+ var _toInteger = function(it) {
256
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
257
+ };
258
+
259
+ var min = Math.min;
260
+
261
+ var _toLength = function(it) {
262
+ return it > 0 ? min(_toInteger(it), 9007199254740991) : 0;
263
+ };
264
+
265
+ var _isArray = Array.isArray || function isArray(arg) {
266
+ return _cof(arg) == "Array";
267
+ };
268
+
269
+ var _wks = createCommonjsModule(function(module) {
270
+ var store = _shared("wks");
271
+ var Symbol = _global.Symbol;
272
+ var USE_SYMBOL = typeof Symbol == "function";
273
+ var $exports = module.exports = function(name) {
274
+ return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)("Symbol." + name));
275
+ };
276
+ $exports.store = store;
277
+ });
278
+
279
+ var SPECIES = _wks("species");
280
+
281
+ var _arraySpeciesConstructor = function(original) {
282
+ var C;
283
+ if (_isArray(original)) {
284
+ C = original.constructor;
285
+ if (typeof C == "function" && (C === Array || _isArray(C.prototype))) C = undefined;
286
+ if (_isObject(C)) {
287
+ C = C[SPECIES];
288
+ if (C === null) C = undefined;
289
+ }
290
+ }
291
+ return C === undefined ? Array : C;
292
+ };
293
+
294
+ var _arraySpeciesCreate = function(original, length) {
295
+ return new (_arraySpeciesConstructor(original))(length);
296
+ };
297
+
298
+ var _arrayMethods = function(TYPE, $create) {
299
+ var IS_MAP = TYPE == 1;
300
+ var IS_FILTER = TYPE == 2;
301
+ var IS_SOME = TYPE == 3;
302
+ var IS_EVERY = TYPE == 4;
303
+ var IS_FIND_INDEX = TYPE == 6;
304
+ var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
305
+ var create = $create || _arraySpeciesCreate;
306
+ return function($this, callbackfn, that) {
307
+ var O = _toObject($this);
308
+ var self = _iobject(O);
309
+ var f = _ctx(callbackfn, that, 3);
310
+ var length = _toLength(self.length);
311
+ var index = 0;
312
+ var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
313
+ var val, res;
314
+ for (;length > index; index++) if (NO_HOLES || index in self) {
315
+ val = self[index];
316
+ res = f(val, index, O);
317
+ if (TYPE) {
318
+ if (IS_MAP) result[index] = res; else if (res) switch (TYPE) {
319
+ case 3:
320
+ return true;
321
+
322
+ case 5:
323
+ return val;
324
+
325
+ case 6:
326
+ return index;
327
+
328
+ case 2:
329
+ result.push(val);
330
+ } else if (IS_EVERY) return false;
331
+ }
332
+ }
333
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
334
+ };
335
+ };
336
+
337
+ var UNSCOPABLES = _wks("unscopables");
338
+
339
+ var ArrayProto = Array.prototype;
340
+
341
+ if (ArrayProto[UNSCOPABLES] == undefined) _hide(ArrayProto, UNSCOPABLES, {});
342
+
343
+ var _addToUnscopables = function(key) {
344
+ ArrayProto[UNSCOPABLES][key] = true;
345
+ };
346
+
347
+ var $find = _arrayMethods(5);
348
+
349
+ var KEY = "find";
350
+
351
+ var forced = true;
352
+
353
+ if (KEY in []) Array(1)[KEY](function() {
354
+ forced = false;
355
+ });
356
+
357
+ _export(_export.P + _export.F * forced, "Array", {
358
+ find: function find(callbackfn) {
359
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
360
+ }
361
+ });
362
+
363
+ _addToUnscopables(KEY);
364
+
365
+ var find = _core.Array.find;
366
+
367
+ var $find$1 = _arrayMethods(6);
368
+
369
+ var KEY$1 = "findIndex";
370
+
371
+ var forced$1 = true;
372
+
373
+ if (KEY$1 in []) Array(1)[KEY$1](function() {
374
+ forced$1 = false;
375
+ });
376
+
377
+ _export(_export.P + _export.F * forced$1, "Array", {
378
+ findIndex: function findIndex(callbackfn) {
379
+ return $find$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
380
+ }
381
+ });
382
+
383
+ _addToUnscopables(KEY$1);
384
+
385
+ var findIndex = _core.Array.findIndex;
386
+
387
+ var _stringAt = function(TO_STRING) {
388
+ return function(that, pos) {
389
+ var s = String(_defined(that));
390
+ var i = _toInteger(pos);
391
+ var l = s.length;
392
+ var a, b;
393
+ if (i < 0 || i >= l) return TO_STRING ? "" : undefined;
394
+ a = s.charCodeAt(i);
395
+ return a < 55296 || a > 56319 || i + 1 === l || (b = s.charCodeAt(i + 1)) < 56320 || b > 57343 ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 55296 << 10) + (b - 56320) + 65536;
396
+ };
397
+ };
398
+
399
+ var _iterators = {};
400
+
401
+ var _toIobject = function(it) {
402
+ return _iobject(_defined(it));
403
+ };
404
+
405
+ var max = Math.max;
406
+
407
+ var min$1 = Math.min;
408
+
409
+ var _toAbsoluteIndex = function(index, length) {
410
+ index = _toInteger(index);
411
+ return index < 0 ? max(index + length, 0) : min$1(index, length);
412
+ };
413
+
414
+ var _arrayIncludes = function(IS_INCLUDES) {
415
+ return function($this, el, fromIndex) {
416
+ var O = _toIobject($this);
417
+ var length = _toLength(O.length);
418
+ var index = _toAbsoluteIndex(fromIndex, length);
419
+ var value;
420
+ if (IS_INCLUDES && el != el) while (length > index) {
421
+ value = O[index++];
422
+ if (value != value) return true;
423
+ } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
424
+ if (O[index] === el) return IS_INCLUDES || index || 0;
425
+ }
426
+ return !IS_INCLUDES && -1;
427
+ };
428
+ };
429
+
430
+ var shared = _shared("keys");
431
+
432
+ var _sharedKey = function(key) {
433
+ return shared[key] || (shared[key] = _uid(key));
434
+ };
435
+
436
+ var arrayIndexOf = _arrayIncludes(false);
437
+
438
+ var IE_PROTO = _sharedKey("IE_PROTO");
439
+
440
+ var _objectKeysInternal = function(object, names) {
441
+ var O = _toIobject(object);
442
+ var i = 0;
443
+ var result = [];
444
+ var key;
445
+ for (key in O) if (key != IE_PROTO) _has(O, key) && result.push(key);
446
+ while (names.length > i) if (_has(O, key = names[i++])) {
447
+ ~arrayIndexOf(result, key) || result.push(key);
448
+ }
449
+ return result;
450
+ };
451
+
452
+ var _enumBugKeys = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
453
+
454
+ var _objectKeys = Object.keys || function keys(O) {
455
+ return _objectKeysInternal(O, _enumBugKeys);
456
+ };
457
+
458
+ var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
459
+ _anObject(O);
460
+ var keys = _objectKeys(Properties);
461
+ var length = keys.length;
462
+ var i = 0;
463
+ var P;
464
+ while (length > i) _objectDp.f(O, P = keys[i++], Properties[P]);
465
+ return O;
466
+ };
467
+
468
+ var document$2 = _global.document;
469
+
470
+ var _html = document$2 && document$2.documentElement;
471
+
472
+ var IE_PROTO$1 = _sharedKey("IE_PROTO");
473
+
474
+ var Empty = function() {};
475
+
476
+ var PROTOTYPE$1 = "prototype";
477
+
478
+ var createDict = function() {
479
+ var iframe = _domCreate("iframe");
480
+ var i = _enumBugKeys.length;
481
+ var lt = "<";
482
+ var gt = ">";
483
+ var iframeDocument;
484
+ iframe.style.display = "none";
485
+ _html.appendChild(iframe);
486
+ iframe.src = "javascript:";
487
+ iframeDocument = iframe.contentWindow.document;
488
+ iframeDocument.open();
489
+ iframeDocument.write(lt + "script" + gt + "document.F=Object" + lt + "/script" + gt);
490
+ iframeDocument.close();
491
+ createDict = iframeDocument.F;
492
+ while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]];
493
+ return createDict();
494
+ };
495
+
496
+ var _objectCreate = Object.create || function create(O, Properties) {
497
+ var result;
498
+ if (O !== null) {
499
+ Empty[PROTOTYPE$1] = _anObject(O);
500
+ result = new Empty();
501
+ Empty[PROTOTYPE$1] = null;
502
+ result[IE_PROTO$1] = O;
503
+ } else result = createDict();
504
+ return Properties === undefined ? result : _objectDps(result, Properties);
505
+ };
506
+
507
+ var def = _objectDp.f;
508
+
509
+ var TAG = _wks("toStringTag");
510
+
511
+ var _setToStringTag = function(it, tag, stat) {
512
+ if (it && !_has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
513
+ configurable: true,
514
+ value: tag
515
+ });
516
+ };
517
+
518
+ var IteratorPrototype = {};
519
+
520
+ _hide(IteratorPrototype, _wks("iterator"), function() {
521
+ return this;
522
+ });
523
+
524
+ var _iterCreate = function(Constructor, NAME, next) {
525
+ Constructor.prototype = _objectCreate(IteratorPrototype, {
526
+ next: _propertyDesc(1, next)
527
+ });
528
+ _setToStringTag(Constructor, NAME + " Iterator");
529
+ };
530
+
531
+ var IE_PROTO$2 = _sharedKey("IE_PROTO");
532
+
533
+ var ObjectProto = Object.prototype;
534
+
535
+ var _objectGpo = Object.getPrototypeOf || function(O) {
536
+ O = _toObject(O);
537
+ if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2];
538
+ if (typeof O.constructor == "function" && O instanceof O.constructor) {
539
+ return O.constructor.prototype;
540
+ }
541
+ return O instanceof Object ? ObjectProto : null;
542
+ };
543
+
544
+ var ITERATOR = _wks("iterator");
545
+
546
+ var BUGGY = !([].keys && "next" in [].keys());
547
+
548
+ var FF_ITERATOR = "@@iterator";
549
+
550
+ var KEYS = "keys";
551
+
552
+ var VALUES = "values";
553
+
554
+ var returnThis = function() {
555
+ return this;
556
+ };
557
+
558
+ var _iterDefine = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
559
+ _iterCreate(Constructor, NAME, next);
560
+ var getMethod = function(kind) {
561
+ if (!BUGGY && kind in proto) return proto[kind];
562
+ switch (kind) {
563
+ case KEYS:
564
+ return function keys() {
565
+ return new Constructor(this, kind);
566
+ };
567
+
568
+ case VALUES:
569
+ return function values() {
570
+ return new Constructor(this, kind);
571
+ };
572
+ }
573
+ return function entries() {
574
+ return new Constructor(this, kind);
575
+ };
576
+ };
577
+ var TAG = NAME + " Iterator";
578
+ var DEF_VALUES = DEFAULT == VALUES;
579
+ var VALUES_BUG = false;
580
+ var proto = Base.prototype;
581
+ var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
582
+ var $default = $native || getMethod(DEFAULT);
583
+ var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod("entries") : undefined;
584
+ var $anyNative = NAME == "Array" ? proto.entries || $native : $native;
585
+ var methods, key, IteratorPrototype;
586
+ if ($anyNative) {
587
+ IteratorPrototype = _objectGpo($anyNative.call(new Base()));
588
+ if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
589
+ _setToStringTag(IteratorPrototype, TAG, true);
590
+ if (typeof IteratorPrototype[ITERATOR] != "function") _hide(IteratorPrototype, ITERATOR, returnThis);
591
+ }
592
+ }
593
+ if (DEF_VALUES && $native && $native.name !== VALUES) {
594
+ VALUES_BUG = true;
595
+ $default = function values() {
596
+ return $native.call(this);
597
+ };
598
+ }
599
+ if (BUGGY || VALUES_BUG || !proto[ITERATOR]) {
600
+ _hide(proto, ITERATOR, $default);
601
+ }
602
+ _iterators[NAME] = $default;
603
+ _iterators[TAG] = returnThis;
604
+ if (DEFAULT) {
605
+ methods = {
606
+ values: DEF_VALUES ? $default : getMethod(VALUES),
607
+ keys: IS_SET ? $default : getMethod(KEYS),
608
+ entries: $entries
609
+ };
610
+ if (FORCED) for (key in methods) {
611
+ if (!(key in proto)) _redefine(proto, key, methods[key]);
612
+ } else _export(_export.P + _export.F * (BUGGY || VALUES_BUG), NAME, methods);
613
+ }
614
+ return methods;
615
+ };
616
+
617
+ var $at = _stringAt(true);
618
+
619
+ _iterDefine(String, "String", function(iterated) {
620
+ this._t = String(iterated);
621
+ this._i = 0;
622
+ }, function() {
623
+ var O = this._t;
624
+ var index = this._i;
625
+ var point;
626
+ if (index >= O.length) return {
627
+ value: undefined,
628
+ done: true
629
+ };
630
+ point = $at(O, index);
631
+ this._i += point.length;
632
+ return {
633
+ value: point,
634
+ done: false
635
+ };
636
+ });
637
+
638
+ var _iterCall = function(iterator, fn, value, entries) {
639
+ try {
640
+ return entries ? fn(_anObject(value)[0], value[1]) : fn(value);
641
+ } catch (e) {
642
+ var ret = iterator["return"];
643
+ if (ret !== undefined) _anObject(ret.call(iterator));
644
+ throw e;
645
+ }
646
+ };
647
+
648
+ var ITERATOR$1 = _wks("iterator");
649
+
650
+ var ArrayProto$1 = Array.prototype;
651
+
652
+ var _isArrayIter = function(it) {
653
+ return it !== undefined && (_iterators.Array === it || ArrayProto$1[ITERATOR$1] === it);
654
+ };
655
+
656
+ var _createProperty = function(object, index, value) {
657
+ if (index in object) _objectDp.f(object, index, _propertyDesc(0, value)); else object[index] = value;
658
+ };
659
+
660
+ var TAG$1 = _wks("toStringTag");
661
+
662
+ var ARG = _cof(function() {
663
+ return arguments;
664
+ }()) == "Arguments";
665
+
666
+ var tryGet = function(it, key) {
667
+ try {
668
+ return it[key];
669
+ } catch (e) {}
670
+ };
671
+
672
+ var _classof = function(it) {
673
+ var O, T, B;
674
+ return it === undefined ? "Undefined" : it === null ? "Null" : typeof (T = tryGet(O = Object(it), TAG$1)) == "string" ? T : ARG ? _cof(O) : (B = _cof(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : B;
675
+ };
676
+
677
+ var ITERATOR$2 = _wks("iterator");
678
+
679
+ var core_getIteratorMethod = _core.getIteratorMethod = function(it) {
680
+ if (it != undefined) return it[ITERATOR$2] || it["@@iterator"] || _iterators[_classof(it)];
681
+ };
682
+
683
+ var ITERATOR$3 = _wks("iterator");
684
+
685
+ var SAFE_CLOSING = false;
686
+
687
+ try {
688
+ var riter = [ 7 ][ITERATOR$3]();
689
+ riter["return"] = function() {
690
+ SAFE_CLOSING = true;
691
+ };
692
+ Array.from(riter, function() {
693
+ throw 2;
694
+ });
695
+ } catch (e) {}
696
+
697
+ var _iterDetect = function(exec, skipClosing) {
698
+ if (!skipClosing && !SAFE_CLOSING) return false;
699
+ var safe = false;
700
+ try {
701
+ var arr = [ 7 ];
702
+ var iter = arr[ITERATOR$3]();
703
+ iter.next = function() {
704
+ return {
705
+ done: safe = true
706
+ };
707
+ };
708
+ arr[ITERATOR$3] = function() {
709
+ return iter;
710
+ };
711
+ exec(arr);
712
+ } catch (e) {}
713
+ return safe;
714
+ };
715
+
716
+ _export(_export.S + _export.F * !_iterDetect(function(iter) {
717
+ Array.from(iter);
718
+ }), "Array", {
719
+ from: function from(arrayLike) {
720
+ var O = _toObject(arrayLike);
721
+ var C = typeof this == "function" ? this : Array;
722
+ var aLen = arguments.length;
723
+ var mapfn = aLen > 1 ? arguments[1] : undefined;
724
+ var mapping = mapfn !== undefined;
725
+ var index = 0;
726
+ var iterFn = core_getIteratorMethod(O);
727
+ var length, result, step, iterator;
728
+ if (mapping) mapfn = _ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
729
+ if (iterFn != undefined && !(C == Array && _isArrayIter(iterFn))) {
730
+ for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
731
+ _createProperty(result, index, mapping ? _iterCall(iterator, mapfn, [ step.value, index ], true) : step.value);
732
+ }
733
+ } else {
734
+ length = _toLength(O.length);
735
+ for (result = new C(length); length > index; index++) {
736
+ _createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
737
+ }
738
+ }
739
+ result.length = index;
740
+ return result;
741
+ }
742
+ });
743
+
744
+ var from_1 = _core.Array.from;
745
+
746
+ var test = {};
747
+
748
+ test[_wks("toStringTag")] = "z";
749
+
750
+ if (test + "" != "[object z]") {
751
+ _redefine(Object.prototype, "toString", function toString() {
752
+ return "[object " + _classof(this) + "]";
753
+ }, true);
754
+ }
755
+
756
+ var _iterStep = function(done, value) {
757
+ return {
758
+ value: value,
759
+ done: !!done
760
+ };
761
+ };
762
+
763
+ var es6_array_iterator = _iterDefine(Array, "Array", function(iterated, kind) {
764
+ this._t = _toIobject(iterated);
765
+ this._i = 0;
766
+ this._k = kind;
767
+ }, function() {
768
+ var O = this._t;
769
+ var kind = this._k;
770
+ var index = this._i++;
771
+ if (!O || index >= O.length) {
772
+ this._t = undefined;
773
+ return _iterStep(1);
774
+ }
775
+ if (kind == "keys") return _iterStep(0, index);
776
+ if (kind == "values") return _iterStep(0, O[index]);
777
+ return _iterStep(0, [ index, O[index] ]);
778
+ }, "values");
779
+
780
+ _iterators.Arguments = _iterators.Array;
781
+
782
+ _addToUnscopables("keys");
783
+
784
+ _addToUnscopables("values");
785
+
786
+ _addToUnscopables("entries");
787
+
788
+ var ITERATOR$4 = _wks("iterator");
789
+
790
+ var TO_STRING_TAG = _wks("toStringTag");
791
+
792
+ var ArrayValues = _iterators.Array;
793
+
794
+ var DOMIterables = {
795
+ CSSRuleList: true,
796
+ CSSStyleDeclaration: false,
797
+ CSSValueList: false,
798
+ ClientRectList: false,
799
+ DOMRectList: false,
800
+ DOMStringList: false,
801
+ DOMTokenList: true,
802
+ DataTransferItemList: false,
803
+ FileList: false,
804
+ HTMLAllCollection: false,
805
+ HTMLCollection: false,
806
+ HTMLFormElement: false,
807
+ HTMLSelectElement: false,
808
+ MediaList: true,
809
+ MimeTypeArray: false,
810
+ NamedNodeMap: false,
811
+ NodeList: true,
812
+ PaintRequestList: false,
813
+ Plugin: false,
814
+ PluginArray: false,
815
+ SVGLengthList: false,
816
+ SVGNumberList: false,
817
+ SVGPathSegList: false,
818
+ SVGPointList: false,
819
+ SVGStringList: false,
820
+ SVGTransformList: false,
821
+ SourceBufferList: false,
822
+ StyleSheetList: true,
823
+ TextTrackCueList: false,
824
+ TextTrackList: false,
825
+ TouchList: false
826
+ };
827
+
828
+ for (var collections = _objectKeys(DOMIterables), i = 0; i < collections.length; i++) {
829
+ var NAME = collections[i];
830
+ var explicit = DOMIterables[NAME];
831
+ var Collection = _global[NAME];
832
+ var proto = Collection && Collection.prototype;
833
+ var key;
834
+ if (proto) {
835
+ if (!proto[ITERATOR$4]) _hide(proto, ITERATOR$4, ArrayValues);
836
+ if (!proto[TO_STRING_TAG]) _hide(proto, TO_STRING_TAG, NAME);
837
+ _iterators[NAME] = ArrayValues;
838
+ if (explicit) for (key in es6_array_iterator) if (!proto[key]) _redefine(proto, key, es6_array_iterator[key], true);
839
+ }
840
+ }
841
+
842
+ var _redefineAll = function(target, src, safe) {
843
+ for (var key in src) _redefine(target, key, src[key], safe);
844
+ return target;
845
+ };
846
+
847
+ var _anInstance = function(it, Constructor, name, forbiddenField) {
848
+ if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
849
+ throw TypeError(name + ": incorrect invocation!");
850
+ }
851
+ return it;
852
+ };
853
+
854
+ var _forOf = createCommonjsModule(function(module) {
855
+ var BREAK = {};
856
+ var RETURN = {};
857
+ var exports = module.exports = function(iterable, entries, fn, that, ITERATOR) {
858
+ var iterFn = ITERATOR ? function() {
859
+ return iterable;
860
+ } : core_getIteratorMethod(iterable);
861
+ var f = _ctx(fn, that, entries ? 2 : 1);
862
+ var index = 0;
863
+ var length, step, iterator, result;
864
+ if (typeof iterFn != "function") throw TypeError(iterable + " is not iterable!");
865
+ if (_isArrayIter(iterFn)) for (length = _toLength(iterable.length); length > index; index++) {
866
+ result = entries ? f(_anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
867
+ if (result === BREAK || result === RETURN) return result;
868
+ } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done; ) {
869
+ result = _iterCall(iterator, f, step.value, entries);
870
+ if (result === BREAK || result === RETURN) return result;
871
+ }
872
+ };
873
+ exports.BREAK = BREAK;
874
+ exports.RETURN = RETURN;
875
+ });
876
+
877
+ var SPECIES$1 = _wks("species");
878
+
879
+ var _setSpecies = function(KEY) {
880
+ var C = _global[KEY];
881
+ if (_descriptors && C && !C[SPECIES$1]) _objectDp.f(C, SPECIES$1, {
882
+ configurable: true,
883
+ get: function() {
884
+ return this;
885
+ }
886
+ });
887
+ };
888
+
889
+ var _meta = createCommonjsModule(function(module) {
890
+ var META = _uid("meta");
891
+ var setDesc = _objectDp.f;
892
+ var id = 0;
893
+ var isExtensible = Object.isExtensible || function() {
894
+ return true;
895
+ };
896
+ var FREEZE = !_fails(function() {
897
+ return isExtensible(Object.preventExtensions({}));
898
+ });
899
+ var setMeta = function(it) {
900
+ setDesc(it, META, {
901
+ value: {
902
+ i: "O" + ++id,
903
+ w: {}
904
+ }
905
+ });
906
+ };
907
+ var fastKey = function(it, create) {
908
+ if (!_isObject(it)) return typeof it == "symbol" ? it : (typeof it == "string" ? "S" : "P") + it;
909
+ if (!_has(it, META)) {
910
+ if (!isExtensible(it)) return "F";
911
+ if (!create) return "E";
912
+ setMeta(it);
913
+ }
914
+ return it[META].i;
915
+ };
916
+ var getWeak = function(it, create) {
917
+ if (!_has(it, META)) {
918
+ if (!isExtensible(it)) return true;
919
+ if (!create) return false;
920
+ setMeta(it);
921
+ }
922
+ return it[META].w;
923
+ };
924
+ var onFreeze = function(it) {
925
+ if (FREEZE && meta.NEED && isExtensible(it) && !_has(it, META)) setMeta(it);
926
+ return it;
927
+ };
928
+ var meta = module.exports = {
929
+ KEY: META,
930
+ NEED: false,
931
+ fastKey: fastKey,
932
+ getWeak: getWeak,
933
+ onFreeze: onFreeze
934
+ };
935
+ });
936
+
937
+ var _meta_1 = _meta.KEY;
938
+
939
+ var _meta_2 = _meta.NEED;
940
+
941
+ var _meta_3 = _meta.fastKey;
942
+
943
+ var _meta_4 = _meta.getWeak;
944
+
945
+ var _meta_5 = _meta.onFreeze;
946
+
947
+ var _validateCollection = function(it, TYPE) {
948
+ if (!_isObject(it) || it._t !== TYPE) throw TypeError("Incompatible receiver, " + TYPE + " required!");
949
+ return it;
950
+ };
951
+
952
+ var dP$1 = _objectDp.f;
953
+
954
+ var fastKey = _meta.fastKey;
955
+
956
+ var SIZE = _descriptors ? "_s" : "size";
957
+
958
+ var getEntry = function(that, key) {
959
+ var index = fastKey(key);
960
+ var entry;
961
+ if (index !== "F") return that._i[index];
962
+ for (entry = that._f; entry; entry = entry.n) {
963
+ if (entry.k == key) return entry;
964
+ }
965
+ };
966
+
967
+ var _collectionStrong = {
968
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER) {
969
+ var C = wrapper(function(that, iterable) {
970
+ _anInstance(that, C, NAME, "_i");
971
+ that._t = NAME;
972
+ that._i = _objectCreate(null);
973
+ that._f = undefined;
974
+ that._l = undefined;
975
+ that[SIZE] = 0;
976
+ if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that);
977
+ });
978
+ _redefineAll(C.prototype, {
979
+ clear: function clear() {
980
+ for (var that = _validateCollection(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
981
+ entry.r = true;
982
+ if (entry.p) entry.p = entry.p.n = undefined;
983
+ delete data[entry.i];
984
+ }
985
+ that._f = that._l = undefined;
986
+ that[SIZE] = 0;
987
+ },
988
+ delete: function(key) {
989
+ var that = _validateCollection(this, NAME);
990
+ var entry = getEntry(that, key);
991
+ if (entry) {
992
+ var next = entry.n;
993
+ var prev = entry.p;
994
+ delete that._i[entry.i];
995
+ entry.r = true;
996
+ if (prev) prev.n = next;
997
+ if (next) next.p = prev;
998
+ if (that._f == entry) that._f = next;
999
+ if (that._l == entry) that._l = prev;
1000
+ that[SIZE]--;
1001
+ }
1002
+ return !!entry;
1003
+ },
1004
+ forEach: function forEach(callbackfn) {
1005
+ _validateCollection(this, NAME);
1006
+ var f = _ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
1007
+ var entry;
1008
+ while (entry = entry ? entry.n : this._f) {
1009
+ f(entry.v, entry.k, this);
1010
+ while (entry && entry.r) entry = entry.p;
1011
+ }
1012
+ },
1013
+ has: function has(key) {
1014
+ return !!getEntry(_validateCollection(this, NAME), key);
1015
+ }
1016
+ });
1017
+ if (_descriptors) dP$1(C.prototype, "size", {
1018
+ get: function() {
1019
+ return _validateCollection(this, NAME)[SIZE];
1020
+ }
1021
+ });
1022
+ return C;
1023
+ },
1024
+ def: function(that, key, value) {
1025
+ var entry = getEntry(that, key);
1026
+ var prev, index;
1027
+ if (entry) {
1028
+ entry.v = value;
1029
+ } else {
1030
+ that._l = entry = {
1031
+ i: index = fastKey(key, true),
1032
+ k: key,
1033
+ v: value,
1034
+ p: prev = that._l,
1035
+ n: undefined,
1036
+ r: false
1037
+ };
1038
+ if (!that._f) that._f = entry;
1039
+ if (prev) prev.n = entry;
1040
+ that[SIZE]++;
1041
+ if (index !== "F") that._i[index] = entry;
1042
+ }
1043
+ return that;
1044
+ },
1045
+ getEntry: getEntry,
1046
+ setStrong: function(C, NAME, IS_MAP) {
1047
+ _iterDefine(C, NAME, function(iterated, kind) {
1048
+ this._t = _validateCollection(iterated, NAME);
1049
+ this._k = kind;
1050
+ this._l = undefined;
1051
+ }, function() {
1052
+ var that = this;
1053
+ var kind = that._k;
1054
+ var entry = that._l;
1055
+ while (entry && entry.r) entry = entry.p;
1056
+ if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
1057
+ that._t = undefined;
1058
+ return _iterStep(1);
1059
+ }
1060
+ if (kind == "keys") return _iterStep(0, entry.k);
1061
+ if (kind == "values") return _iterStep(0, entry.v);
1062
+ return _iterStep(0, [ entry.k, entry.v ]);
1063
+ }, IS_MAP ? "entries" : "values", !IS_MAP, true);
1064
+ _setSpecies(NAME);
1065
+ }
1066
+ };
1067
+
1068
+ var f$1 = {}.propertyIsEnumerable;
1069
+
1070
+ var _objectPie = {
1071
+ f: f$1
1072
+ };
1073
+
1074
+ var gOPD = Object.getOwnPropertyDescriptor;
1075
+
1076
+ var f$2 = _descriptors ? gOPD : function getOwnPropertyDescriptor(O, P) {
1077
+ O = _toIobject(O);
1078
+ P = _toPrimitive(P, true);
1079
+ if (_ie8DomDefine) try {
1080
+ return gOPD(O, P);
1081
+ } catch (e) {}
1082
+ if (_has(O, P)) return _propertyDesc(!_objectPie.f.call(O, P), O[P]);
1083
+ };
1084
+
1085
+ var _objectGopd = {
1086
+ f: f$2
1087
+ };
1088
+
1089
+ var check = function(O, proto) {
1090
+ _anObject(O);
1091
+ if (!_isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
1092
+ };
1093
+
1094
+ var _setProto = {
1095
+ set: Object.setPrototypeOf || ("__proto__" in {} ? function(test, buggy, set) {
1096
+ try {
1097
+ set = _ctx(Function.call, _objectGopd.f(Object.prototype, "__proto__").set, 2);
1098
+ set(test, []);
1099
+ buggy = !(test instanceof Array);
1100
+ } catch (e) {
1101
+ buggy = true;
1102
+ }
1103
+ return function setPrototypeOf(O, proto) {
1104
+ check(O, proto);
1105
+ if (buggy) O.__proto__ = proto; else set(O, proto);
1106
+ return O;
1107
+ };
1108
+ }({}, false) : undefined),
1109
+ check: check
1110
+ };
1111
+
1112
+ var setPrototypeOf = _setProto.set;
1113
+
1114
+ var _inheritIfRequired = function(that, target, C) {
1115
+ var S = target.constructor;
1116
+ var P;
1117
+ if (S !== C && typeof S == "function" && (P = S.prototype) !== C.prototype && _isObject(P) && setPrototypeOf) {
1118
+ setPrototypeOf(that, P);
1119
+ }
1120
+ return that;
1121
+ };
1122
+
1123
+ var _collection = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
1124
+ var Base = _global[NAME];
1125
+ var C = Base;
1126
+ var ADDER = IS_MAP ? "set" : "add";
1127
+ var proto = C && C.prototype;
1128
+ var O = {};
1129
+ var fixMethod = function(KEY) {
1130
+ var fn = proto[KEY];
1131
+ _redefine(proto, KEY, KEY == "delete" ? function(a) {
1132
+ return IS_WEAK && !_isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
1133
+ } : KEY == "has" ? function has(a) {
1134
+ return IS_WEAK && !_isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
1135
+ } : KEY == "get" ? function get(a) {
1136
+ return IS_WEAK && !_isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
1137
+ } : KEY == "add" ? function add(a) {
1138
+ fn.call(this, a === 0 ? 0 : a);
1139
+ return this;
1140
+ } : function set(a, b) {
1141
+ fn.call(this, a === 0 ? 0 : a, b);
1142
+ return this;
1143
+ });
1144
+ };
1145
+ if (typeof C != "function" || !(IS_WEAK || proto.forEach && !_fails(function() {
1146
+ new C().entries().next();
1147
+ }))) {
1148
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
1149
+ _redefineAll(C.prototype, methods);
1150
+ _meta.NEED = true;
1151
+ } else {
1152
+ var instance = new C();
1153
+ var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
1154
+ var THROWS_ON_PRIMITIVES = _fails(function() {
1155
+ instance.has(1);
1156
+ });
1157
+ var ACCEPT_ITERABLES = _iterDetect(function(iter) {
1158
+ new C(iter);
1159
+ });
1160
+ var BUGGY_ZERO = !IS_WEAK && _fails(function() {
1161
+ var $instance = new C();
1162
+ var index = 5;
1163
+ while (index--) $instance[ADDER](index, index);
1164
+ return !$instance.has(-0);
1165
+ });
1166
+ if (!ACCEPT_ITERABLES) {
1167
+ C = wrapper(function(target, iterable) {
1168
+ _anInstance(target, C, NAME);
1169
+ var that = _inheritIfRequired(new Base(), target, C);
1170
+ if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that);
1171
+ return that;
1172
+ });
1173
+ C.prototype = proto;
1174
+ proto.constructor = C;
1175
+ }
1176
+ if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
1177
+ fixMethod("delete");
1178
+ fixMethod("has");
1179
+ IS_MAP && fixMethod("get");
1180
+ }
1181
+ if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
1182
+ if (IS_WEAK && proto.clear) delete proto.clear;
1183
+ }
1184
+ _setToStringTag(C, NAME);
1185
+ O[NAME] = C;
1186
+ _export(_export.G + _export.W + _export.F * (C != Base), O);
1187
+ if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
1188
+ return C;
1189
+ };
1190
+
1191
+ var MAP = "Map";
1192
+
1193
+ var es6_map = _collection(MAP, function(get) {
1194
+ return function Map() {
1195
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
1196
+ };
1197
+ }, {
1198
+ get: function get(key) {
1199
+ var entry = _collectionStrong.getEntry(_validateCollection(this, MAP), key);
1200
+ return entry && entry.v;
1201
+ },
1202
+ set: function set(key, value) {
1203
+ return _collectionStrong.def(_validateCollection(this, MAP), key === 0 ? 0 : key, value);
1204
+ }
1205
+ }, _collectionStrong, true);
1206
+
1207
+ var _arrayFromIterable = function(iter, ITERATOR) {
1208
+ var result = [];
1209
+ _forOf(iter, false, result.push, result, ITERATOR);
1210
+ return result;
1211
+ };
1212
+
1213
+ var _collectionToJson = function(NAME) {
1214
+ return function toJSON() {
1215
+ if (_classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
1216
+ return _arrayFromIterable(this);
1217
+ };
1218
+ };
1219
+
1220
+ _export(_export.P + _export.R, "Map", {
1221
+ toJSON: _collectionToJson("Map")
1222
+ });
1223
+
1224
+ var _setCollectionOf = function(COLLECTION) {
1225
+ _export(_export.S, COLLECTION, {
1226
+ of: function of() {
1227
+ var length = arguments.length;
1228
+ var A = new Array(length);
1229
+ while (length--) A[length] = arguments[length];
1230
+ return new this(A);
1231
+ }
1232
+ });
1233
+ };
1234
+
1235
+ _setCollectionOf("Map");
1236
+
1237
+ var _setCollectionFrom = function(COLLECTION) {
1238
+ _export(_export.S, COLLECTION, {
1239
+ from: function from(source) {
1240
+ var mapFn = arguments[1];
1241
+ var mapping, A, n, cb;
1242
+ _aFunction(this);
1243
+ mapping = mapFn !== undefined;
1244
+ if (mapping) _aFunction(mapFn);
1245
+ if (source == undefined) return new this();
1246
+ A = [];
1247
+ if (mapping) {
1248
+ n = 0;
1249
+ cb = _ctx(mapFn, arguments[2], 2);
1250
+ _forOf(source, false, function(nextItem) {
1251
+ A.push(cb(nextItem, n++));
1252
+ });
1253
+ } else {
1254
+ _forOf(source, false, A.push, A);
1255
+ }
1256
+ return new this(A);
1257
+ }
1258
+ });
1259
+ };
1260
+
1261
+ _setCollectionFrom("Map");
1262
+
1263
+ var map = _core.Map;
1264
+
1265
+ var f$3 = Object.getOwnPropertySymbols;
1266
+
1267
+ var _objectGops = {
1268
+ f: f$3
1269
+ };
1270
+
1271
+ var $assign = Object.assign;
1272
+
1273
+ var _objectAssign = !$assign || _fails(function() {
1274
+ var A = {};
1275
+ var B = {};
1276
+ var S = Symbol();
1277
+ var K = "abcdefghijklmnopqrst";
1278
+ A[S] = 7;
1279
+ K.split("").forEach(function(k) {
1280
+ B[k] = k;
1281
+ });
1282
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join("") != K;
1283
+ }) ? function assign(target, source) {
1284
+ var T = _toObject(target);
1285
+ var aLen = arguments.length;
1286
+ var index = 1;
1287
+ var getSymbols = _objectGops.f;
1288
+ var isEnum = _objectPie.f;
1289
+ while (aLen > index) {
1290
+ var S = _iobject(arguments[index++]);
1291
+ var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S);
1292
+ var length = keys.length;
1293
+ var j = 0;
1294
+ var key;
1295
+ while (length > j) {
1296
+ key = keys[j++];
1297
+ if (!_descriptors || isEnum.call(S, key)) T[key] = S[key];
1298
+ }
1299
+ }
1300
+ return T;
1301
+ } : $assign;
1302
+
1303
+ _export(_export.S + _export.F, "Object", {
1304
+ assign: _objectAssign
1305
+ });
1306
+
1307
+ var assign = _core.Object.assign;
1308
+
1309
+ var SPECIES$2 = _wks("species");
1310
+
1311
+ var _speciesConstructor = function(O, D) {
1312
+ var C = _anObject(O).constructor;
1313
+ var S;
1314
+ return C === undefined || (S = _anObject(C)[SPECIES$2]) == undefined ? D : _aFunction(S);
1315
+ };
1316
+
1317
+ var _invoke = function(fn, args, that) {
1318
+ var un = that === undefined;
1319
+ switch (args.length) {
1320
+ case 0:
1321
+ return un ? fn() : fn.call(that);
1322
+
1323
+ case 1:
1324
+ return un ? fn(args[0]) : fn.call(that, args[0]);
1325
+
1326
+ case 2:
1327
+ return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
1328
+
1329
+ case 3:
1330
+ return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
1331
+
1332
+ case 4:
1333
+ return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
1334
+ }
1335
+ return fn.apply(that, args);
1336
+ };
1337
+
1338
+ var process = _global.process;
1339
+
1340
+ var setTask = _global.setImmediate;
1341
+
1342
+ var clearTask = _global.clearImmediate;
1343
+
1344
+ var MessageChannel = _global.MessageChannel;
1345
+
1346
+ var Dispatch = _global.Dispatch;
1347
+
1348
+ var counter = 0;
1349
+
1350
+ var queue = {};
1351
+
1352
+ var ONREADYSTATECHANGE = "onreadystatechange";
1353
+
1354
+ var defer, channel, port;
1355
+
1356
+ var run = function() {
1357
+ var id = +this;
1358
+ if (queue.hasOwnProperty(id)) {
1359
+ var fn = queue[id];
1360
+ delete queue[id];
1361
+ fn();
1362
+ }
1363
+ };
1364
+
1365
+ var listener = function(event) {
1366
+ run.call(event.data);
1367
+ };
1368
+
1369
+ if (!setTask || !clearTask) {
1370
+ setTask = function setImmediate(fn) {
1371
+ var args = [];
1372
+ var i = 1;
1373
+ while (arguments.length > i) args.push(arguments[i++]);
1374
+ queue[++counter] = function() {
1375
+ _invoke(typeof fn == "function" ? fn : Function(fn), args);
1376
+ };
1377
+ defer(counter);
1378
+ return counter;
1379
+ };
1380
+ clearTask = function clearImmediate(id) {
1381
+ delete queue[id];
1382
+ };
1383
+ if (_cof(process) == "process") {
1384
+ defer = function(id) {
1385
+ process.nextTick(_ctx(run, id, 1));
1386
+ };
1387
+ } else if (Dispatch && Dispatch.now) {
1388
+ defer = function(id) {
1389
+ Dispatch.now(_ctx(run, id, 1));
1390
+ };
1391
+ } else if (MessageChannel) {
1392
+ channel = new MessageChannel();
1393
+ port = channel.port2;
1394
+ channel.port1.onmessage = listener;
1395
+ defer = _ctx(port.postMessage, port, 1);
1396
+ } else if (_global.addEventListener && typeof postMessage == "function" && !_global.importScripts) {
1397
+ defer = function(id) {
1398
+ _global.postMessage(id + "", "*");
1399
+ };
1400
+ _global.addEventListener("message", listener, false);
1401
+ } else if (ONREADYSTATECHANGE in _domCreate("script")) {
1402
+ defer = function(id) {
1403
+ _html.appendChild(_domCreate("script"))[ONREADYSTATECHANGE] = function() {
1404
+ _html.removeChild(this);
1405
+ run.call(id);
1406
+ };
1407
+ };
1408
+ } else {
1409
+ defer = function(id) {
1410
+ setTimeout(_ctx(run, id, 1), 0);
1411
+ };
1412
+ }
1413
+ }
1414
+
1415
+ var _task = {
1416
+ set: setTask,
1417
+ clear: clearTask
1418
+ };
1419
+
1420
+ var macrotask = _task.set;
1421
+
1422
+ var Observer = _global.MutationObserver || _global.WebKitMutationObserver;
1423
+
1424
+ var process$1 = _global.process;
1425
+
1426
+ var Promise$1 = _global.Promise;
1427
+
1428
+ var isNode = _cof(process$1) == "process";
1429
+
1430
+ var _microtask = function() {
1431
+ var head, last, notify;
1432
+ var flush = function() {
1433
+ var parent, fn;
1434
+ if (isNode && (parent = process$1.domain)) parent.exit();
1435
+ while (head) {
1436
+ fn = head.fn;
1437
+ head = head.next;
1438
+ try {
1439
+ fn();
1440
+ } catch (e) {
1441
+ if (head) notify(); else last = undefined;
1442
+ throw e;
1443
+ }
1444
+ }
1445
+ last = undefined;
1446
+ if (parent) parent.enter();
1447
+ };
1448
+ if (isNode) {
1449
+ notify = function() {
1450
+ process$1.nextTick(flush);
1451
+ };
1452
+ } else if (Observer && !(_global.navigator && _global.navigator.standalone)) {
1453
+ var toggle = true;
1454
+ var node = document.createTextNode("");
1455
+ new Observer(flush).observe(node, {
1456
+ characterData: true
1457
+ });
1458
+ notify = function() {
1459
+ node.data = toggle = !toggle;
1460
+ };
1461
+ } else if (Promise$1 && Promise$1.resolve) {
1462
+ var promise = Promise$1.resolve(undefined);
1463
+ notify = function() {
1464
+ promise.then(flush);
1465
+ };
1466
+ } else {
1467
+ notify = function() {
1468
+ macrotask.call(_global, flush);
1469
+ };
1470
+ }
1471
+ return function(fn) {
1472
+ var task = {
1473
+ fn: fn,
1474
+ next: undefined
1475
+ };
1476
+ if (last) last.next = task;
1477
+ if (!head) {
1478
+ head = task;
1479
+ notify();
1480
+ }
1481
+ last = task;
1482
+ };
1483
+ };
1484
+
1485
+ function PromiseCapability(C) {
1486
+ var resolve, reject;
1487
+ this.promise = new C(function($$resolve, $$reject) {
1488
+ if (resolve !== undefined || reject !== undefined) throw TypeError("Bad Promise constructor");
1489
+ resolve = $$resolve;
1490
+ reject = $$reject;
1491
+ });
1492
+ this.resolve = _aFunction(resolve);
1493
+ this.reject = _aFunction(reject);
1494
+ }
1495
+
1496
+ var f$4 = function(C) {
1497
+ return new PromiseCapability(C);
1498
+ };
1499
+
1500
+ var _newPromiseCapability = {
1501
+ f: f$4
1502
+ };
1503
+
1504
+ var _perform = function(exec) {
1505
+ try {
1506
+ return {
1507
+ e: false,
1508
+ v: exec()
1509
+ };
1510
+ } catch (e) {
1511
+ return {
1512
+ e: true,
1513
+ v: e
1514
+ };
1515
+ }
1516
+ };
1517
+
1518
+ var navigator = _global.navigator;
1519
+
1520
+ var _userAgent = navigator && navigator.userAgent || "";
1521
+
1522
+ var _promiseResolve = function(C, x) {
1523
+ _anObject(C);
1524
+ if (_isObject(x) && x.constructor === C) return x;
1525
+ var promiseCapability = _newPromiseCapability.f(C);
1526
+ var resolve = promiseCapability.resolve;
1527
+ resolve(x);
1528
+ return promiseCapability.promise;
1529
+ };
1530
+
1531
+ var task = _task.set;
1532
+
1533
+ var microtask = _microtask();
1534
+
1535
+ var PROMISE = "Promise";
1536
+
1537
+ var TypeError$1 = _global.TypeError;
1538
+
1539
+ var process$2 = _global.process;
1540
+
1541
+ var versions = process$2 && process$2.versions;
1542
+
1543
+ var v8 = versions && versions.v8 || "";
1544
+
1545
+ var $Promise = _global[PROMISE];
1546
+
1547
+ var isNode$1 = _classof(process$2) == "process";
1548
+
1549
+ var empty = function() {};
1550
+
1551
+ var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
1552
+
1553
+ var newPromiseCapability = newGenericPromiseCapability = _newPromiseCapability.f;
1554
+
1555
+ var USE_NATIVE = !!function() {
1556
+ try {
1557
+ var promise = $Promise.resolve(1);
1558
+ var FakePromise = (promise.constructor = {})[_wks("species")] = function(exec) {
1559
+ exec(empty, empty);
1560
+ };
1561
+ return (isNode$1 || typeof PromiseRejectionEvent == "function") && promise.then(empty) instanceof FakePromise && v8.indexOf("6.6") !== 0 && _userAgent.indexOf("Chrome/66") === -1;
1562
+ } catch (e) {}
1563
+ }();
1564
+
1565
+ var isThenable = function(it) {
1566
+ var then;
1567
+ return _isObject(it) && typeof (then = it.then) == "function" ? then : false;
1568
+ };
1569
+
1570
+ var notify = function(promise, isReject) {
1571
+ if (promise._n) return;
1572
+ promise._n = true;
1573
+ var chain = promise._c;
1574
+ microtask(function() {
1575
+ var value = promise._v;
1576
+ var ok = promise._s == 1;
1577
+ var i = 0;
1578
+ var run = function(reaction) {
1579
+ var handler = ok ? reaction.ok : reaction.fail;
1580
+ var resolve = reaction.resolve;
1581
+ var reject = reaction.reject;
1582
+ var domain = reaction.domain;
1583
+ var result, then, exited;
1584
+ try {
1585
+ if (handler) {
1586
+ if (!ok) {
1587
+ if (promise._h == 2) onHandleUnhandled(promise);
1588
+ promise._h = 1;
1589
+ }
1590
+ if (handler === true) result = value; else {
1591
+ if (domain) domain.enter();
1592
+ result = handler(value);
1593
+ if (domain) {
1594
+ domain.exit();
1595
+ exited = true;
1596
+ }
1597
+ }
1598
+ if (result === reaction.promise) {
1599
+ reject(TypeError$1("Promise-chain cycle"));
1600
+ } else if (then = isThenable(result)) {
1601
+ then.call(result, resolve, reject);
1602
+ } else resolve(result);
1603
+ } else reject(value);
1604
+ } catch (e) {
1605
+ if (domain && !exited) domain.exit();
1606
+ reject(e);
1607
+ }
1608
+ };
1609
+ while (chain.length > i) run(chain[i++]);
1610
+ promise._c = [];
1611
+ promise._n = false;
1612
+ if (isReject && !promise._h) onUnhandled(promise);
1613
+ });
1614
+ };
1615
+
1616
+ var onUnhandled = function(promise) {
1617
+ task.call(_global, function() {
1618
+ var value = promise._v;
1619
+ var unhandled = isUnhandled(promise);
1620
+ var result, handler, console;
1621
+ if (unhandled) {
1622
+ result = _perform(function() {
1623
+ if (isNode$1) {
1624
+ process$2.emit("unhandledRejection", value, promise);
1625
+ } else if (handler = _global.onunhandledrejection) {
1626
+ handler({
1627
+ promise: promise,
1628
+ reason: value
1629
+ });
1630
+ } else if ((console = _global.console) && console.error) {
1631
+ console.error("Unhandled promise rejection", value);
1632
+ }
1633
+ });
1634
+ promise._h = isNode$1 || isUnhandled(promise) ? 2 : 1;
1635
+ }
1636
+ promise._a = undefined;
1637
+ if (unhandled && result.e) throw result.v;
1638
+ });
1639
+ };
1640
+
1641
+ var isUnhandled = function(promise) {
1642
+ return promise._h !== 1 && (promise._a || promise._c).length === 0;
1643
+ };
1644
+
1645
+ var onHandleUnhandled = function(promise) {
1646
+ task.call(_global, function() {
1647
+ var handler;
1648
+ if (isNode$1) {
1649
+ process$2.emit("rejectionHandled", promise);
1650
+ } else if (handler = _global.onrejectionhandled) {
1651
+ handler({
1652
+ promise: promise,
1653
+ reason: promise._v
1654
+ });
1655
+ }
1656
+ });
1657
+ };
1658
+
1659
+ var $reject = function(value) {
1660
+ var promise = this;
1661
+ if (promise._d) return;
1662
+ promise._d = true;
1663
+ promise = promise._w || promise;
1664
+ promise._v = value;
1665
+ promise._s = 2;
1666
+ if (!promise._a) promise._a = promise._c.slice();
1667
+ notify(promise, true);
1668
+ };
1669
+
1670
+ var $resolve = function(value) {
1671
+ var promise = this;
1672
+ var then;
1673
+ if (promise._d) return;
1674
+ promise._d = true;
1675
+ promise = promise._w || promise;
1676
+ try {
1677
+ if (promise === value) throw TypeError$1("Promise can't be resolved itself");
1678
+ if (then = isThenable(value)) {
1679
+ microtask(function() {
1680
+ var wrapper = {
1681
+ _w: promise,
1682
+ _d: false
1683
+ };
1684
+ try {
1685
+ then.call(value, _ctx($resolve, wrapper, 1), _ctx($reject, wrapper, 1));
1686
+ } catch (e) {
1687
+ $reject.call(wrapper, e);
1688
+ }
1689
+ });
1690
+ } else {
1691
+ promise._v = value;
1692
+ promise._s = 1;
1693
+ notify(promise, false);
1694
+ }
1695
+ } catch (e) {
1696
+ $reject.call({
1697
+ _w: promise,
1698
+ _d: false
1699
+ }, e);
1700
+ }
1701
+ };
1702
+
1703
+ if (!USE_NATIVE) {
1704
+ $Promise = function Promise(executor) {
1705
+ _anInstance(this, $Promise, PROMISE, "_h");
1706
+ _aFunction(executor);
1707
+ Internal.call(this);
1708
+ try {
1709
+ executor(_ctx($resolve, this, 1), _ctx($reject, this, 1));
1710
+ } catch (err) {
1711
+ $reject.call(this, err);
1712
+ }
1713
+ };
1714
+ Internal = function Promise(executor) {
1715
+ this._c = [];
1716
+ this._a = undefined;
1717
+ this._s = 0;
1718
+ this._d = false;
1719
+ this._v = undefined;
1720
+ this._h = 0;
1721
+ this._n = false;
1722
+ };
1723
+ Internal.prototype = _redefineAll($Promise.prototype, {
1724
+ then: function then(onFulfilled, onRejected) {
1725
+ var reaction = newPromiseCapability(_speciesConstructor(this, $Promise));
1726
+ reaction.ok = typeof onFulfilled == "function" ? onFulfilled : true;
1727
+ reaction.fail = typeof onRejected == "function" && onRejected;
1728
+ reaction.domain = isNode$1 ? process$2.domain : undefined;
1729
+ this._c.push(reaction);
1730
+ if (this._a) this._a.push(reaction);
1731
+ if (this._s) notify(this, false);
1732
+ return reaction.promise;
1733
+ },
1734
+ catch: function(onRejected) {
1735
+ return this.then(undefined, onRejected);
1736
+ }
1737
+ });
1738
+ OwnPromiseCapability = function() {
1739
+ var promise = new Internal();
1740
+ this.promise = promise;
1741
+ this.resolve = _ctx($resolve, promise, 1);
1742
+ this.reject = _ctx($reject, promise, 1);
1743
+ };
1744
+ _newPromiseCapability.f = newPromiseCapability = function(C) {
1745
+ return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
1746
+ };
1747
+ }
1748
+
1749
+ _export(_export.G + _export.W + _export.F * !USE_NATIVE, {
1750
+ Promise: $Promise
1751
+ });
1752
+
1753
+ _setToStringTag($Promise, PROMISE);
1754
+
1755
+ _setSpecies(PROMISE);
1756
+
1757
+ Wrapper = _core[PROMISE];
1758
+
1759
+ _export(_export.S + _export.F * !USE_NATIVE, PROMISE, {
1760
+ reject: function reject(r) {
1761
+ var capability = newPromiseCapability(this);
1762
+ var $$reject = capability.reject;
1763
+ $$reject(r);
1764
+ return capability.promise;
1765
+ }
1766
+ });
1767
+
1768
+ _export(_export.S + _export.F * !USE_NATIVE, PROMISE, {
1769
+ resolve: function resolve(x) {
1770
+ return _promiseResolve(this, x);
1771
+ }
1772
+ });
1773
+
1774
+ _export(_export.S + _export.F * !(USE_NATIVE && _iterDetect(function(iter) {
1775
+ $Promise.all(iter)["catch"](empty);
1776
+ })), PROMISE, {
1777
+ all: function all(iterable) {
1778
+ var C = this;
1779
+ var capability = newPromiseCapability(C);
1780
+ var resolve = capability.resolve;
1781
+ var reject = capability.reject;
1782
+ var result = _perform(function() {
1783
+ var values = [];
1784
+ var index = 0;
1785
+ var remaining = 1;
1786
+ _forOf(iterable, false, function(promise) {
1787
+ var $index = index++;
1788
+ var alreadyCalled = false;
1789
+ values.push(undefined);
1790
+ remaining++;
1791
+ C.resolve(promise).then(function(value) {
1792
+ if (alreadyCalled) return;
1793
+ alreadyCalled = true;
1794
+ values[$index] = value;
1795
+ --remaining || resolve(values);
1796
+ }, reject);
1797
+ });
1798
+ --remaining || resolve(values);
1799
+ });
1800
+ if (result.e) reject(result.v);
1801
+ return capability.promise;
1802
+ },
1803
+ race: function race(iterable) {
1804
+ var C = this;
1805
+ var capability = newPromiseCapability(C);
1806
+ var reject = capability.reject;
1807
+ var result = _perform(function() {
1808
+ _forOf(iterable, false, function(promise) {
1809
+ C.resolve(promise).then(capability.resolve, reject);
1810
+ });
1811
+ });
1812
+ if (result.e) reject(result.v);
1813
+ return capability.promise;
1814
+ }
1815
+ });
1816
+
1817
+ _export(_export.P + _export.R, "Promise", {
1818
+ finally: function(onFinally) {
1819
+ var C = _speciesConstructor(this, _core.Promise || _global.Promise);
1820
+ var isFunction = typeof onFinally == "function";
1821
+ return this.then(isFunction ? function(x) {
1822
+ return _promiseResolve(C, onFinally()).then(function() {
1823
+ return x;
1824
+ });
1825
+ } : onFinally, isFunction ? function(e) {
1826
+ return _promiseResolve(C, onFinally()).then(function() {
1827
+ throw e;
1828
+ });
1829
+ } : onFinally);
1830
+ }
1831
+ });
1832
+
1833
+ _export(_export.S, "Promise", {
1834
+ try: function(callbackfn) {
1835
+ var promiseCapability = _newPromiseCapability.f(this);
1836
+ var result = _perform(callbackfn);
1837
+ (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
1838
+ return promiseCapability.promise;
1839
+ }
1840
+ });
1841
+
1842
+ var promise = _core.Promise;
1843
+
1844
+ var SET = "Set";
1845
+
1846
+ var es6_set = _collection(SET, function(get) {
1847
+ return function Set() {
1848
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
1849
+ };
1850
+ }, {
1851
+ add: function add(value) {
1852
+ return _collectionStrong.def(_validateCollection(this, SET), value = value === 0 ? 0 : value, value);
1853
+ }
1854
+ }, _collectionStrong);
1855
+
1856
+ _export(_export.P + _export.R, "Set", {
1857
+ toJSON: _collectionToJson("Set")
1858
+ });
1859
+
1860
+ _setCollectionOf("Set");
1861
+
1862
+ _setCollectionFrom("Set");
1863
+
1864
+ var set = _core.Set;
1865
+
1866
+ (function(ElementProto) {
1867
+ if (typeof ElementProto.matches !== "function") {
1868
+ ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {
1869
+ var element = this;
1870
+ var elements = (element.document || element.ownerDocument).querySelectorAll(selector);
1871
+ var index = 0;
1872
+ while (elements[index] && elements[index] !== element) {
1873
+ ++index;
1874
+ }
1875
+ return Boolean(elements[index]);
1876
+ };
1877
+ }
1878
+ if (typeof ElementProto.closest !== "function") {
1879
+ ElementProto.closest = function closest(selector) {
1880
+ var element = this;
1881
+ while (element && element.nodeType === 1) {
1882
+ if (element.matches(selector)) {
1883
+ return element;
1884
+ }
1885
+ element = element.parentNode;
1886
+ }
1887
+ return null;
1888
+ };
1889
+ }
1890
+ })(window.Element.prototype);
1891
+
1892
+ if (window.MutationObserver) {
1893
+ var element = document.createElement("div");
1894
+ element.innerHTML = "<div><div></div></div>";
1895
+ new MutationObserver(function(mutations, observer) {
1896
+ observer.disconnect();
1897
+ if (mutations[0] && mutations[0].type == "childList" && mutations[0].removedNodes[0].childNodes.length == 0) {
1898
+ var prototype = HTMLElement.prototype;
1899
+ var descriptor = Object.getOwnPropertyDescriptor(prototype, "innerHTML");
1900
+ if (descriptor && descriptor.set) {
1901
+ Object.defineProperty(prototype, "innerHTML", {
1902
+ set: function(value) {
1903
+ while (this.lastChild) this.removeChild(this.lastChild);
1904
+ descriptor.set.call(this, value);
1905
+ }
1906
+ });
1907
+ }
1908
+ }
1909
+ }).observe(element, {
1910
+ childList: true,
1911
+ subtree: true
1912
+ });
1913
+ element.innerHTML = "";
1914
+ }
1915
+
1916
+ var EventListener = function() {
1917
+ function EventListener(eventTarget, eventName) {
1918
+ this.eventTarget = eventTarget;
1919
+ this.eventName = eventName;
1920
+ this.unorderedBindings = new Set();
1921
+ }
1922
+ EventListener.prototype.connect = function() {
1923
+ this.eventTarget.addEventListener(this.eventName, this, false);
1924
+ };
1925
+ EventListener.prototype.disconnect = function() {
1926
+ this.eventTarget.removeEventListener(this.eventName, this, false);
1927
+ };
1928
+ EventListener.prototype.bindingConnected = function(binding) {
1929
+ this.unorderedBindings.add(binding);
1930
+ };
1931
+ EventListener.prototype.bindingDisconnected = function(binding) {
1932
+ this.unorderedBindings.delete(binding);
1933
+ };
1934
+ EventListener.prototype.handleEvent = function(event) {
1935
+ var extendedEvent = extendEvent(event);
1936
+ for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {
1937
+ var binding = _a[_i];
1938
+ if (extendedEvent.immediatePropagationStopped) {
1939
+ break;
1940
+ } else {
1941
+ binding.handleEvent(extendedEvent);
1942
+ }
1943
+ }
1944
+ };
1945
+ Object.defineProperty(EventListener.prototype, "bindings", {
1946
+ get: function() {
1947
+ return Array.from(this.unorderedBindings).sort(function(left, right) {
1948
+ var leftIndex = left.index, rightIndex = right.index;
1949
+ return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;
1950
+ });
1951
+ },
1952
+ enumerable: true,
1953
+ configurable: true
1954
+ });
1955
+ return EventListener;
1956
+ }();
1957
+
1958
+ function extendEvent(event) {
1959
+ if ("immediatePropagationStopped" in event) {
1960
+ return event;
1961
+ } else {
1962
+ var stopImmediatePropagation_1 = event.stopImmediatePropagation;
1963
+ return Object.assign(event, {
1964
+ immediatePropagationStopped: false,
1965
+ stopImmediatePropagation: function() {
1966
+ this.immediatePropagationStopped = true;
1967
+ stopImmediatePropagation_1.call(this);
1968
+ }
1969
+ });
1970
+ }
1971
+ }
1972
+
1973
+ var Dispatcher = function() {
1974
+ function Dispatcher(application) {
1975
+ this.application = application;
1976
+ this.eventListenerMaps = new Map();
1977
+ this.started = false;
1978
+ }
1979
+ Dispatcher.prototype.start = function() {
1980
+ if (!this.started) {
1981
+ this.started = true;
1982
+ this.eventListeners.forEach(function(eventListener) {
1983
+ return eventListener.connect();
1984
+ });
1985
+ }
1986
+ };
1987
+ Dispatcher.prototype.stop = function() {
1988
+ if (this.started) {
1989
+ this.started = false;
1990
+ this.eventListeners.forEach(function(eventListener) {
1991
+ return eventListener.disconnect();
1992
+ });
1993
+ }
1994
+ };
1995
+ Object.defineProperty(Dispatcher.prototype, "eventListeners", {
1996
+ get: function() {
1997
+ return Array.from(this.eventListenerMaps.values()).reduce(function(listeners, map) {
1998
+ return listeners.concat(Array.from(map.values()));
1999
+ }, []);
2000
+ },
2001
+ enumerable: true,
2002
+ configurable: true
2003
+ });
2004
+ Dispatcher.prototype.bindingConnected = function(binding) {
2005
+ this.fetchEventListenerForBinding(binding).bindingConnected(binding);
2006
+ };
2007
+ Dispatcher.prototype.bindingDisconnected = function(binding) {
2008
+ this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);
2009
+ };
2010
+ Dispatcher.prototype.handleError = function(error, message, detail) {
2011
+ if (detail === void 0) {
2012
+ detail = {};
2013
+ }
2014
+ this.application.handleError(error, "Error " + message, detail);
2015
+ };
2016
+ Dispatcher.prototype.fetchEventListenerForBinding = function(binding) {
2017
+ var eventTarget = binding.eventTarget, eventName = binding.eventName;
2018
+ return this.fetchEventListener(eventTarget, eventName);
2019
+ };
2020
+ Dispatcher.prototype.fetchEventListener = function(eventTarget, eventName) {
2021
+ var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
2022
+ var eventListener = eventListenerMap.get(eventName);
2023
+ if (!eventListener) {
2024
+ eventListener = this.createEventListener(eventTarget, eventName);
2025
+ eventListenerMap.set(eventName, eventListener);
2026
+ }
2027
+ return eventListener;
2028
+ };
2029
+ Dispatcher.prototype.createEventListener = function(eventTarget, eventName) {
2030
+ var eventListener = new EventListener(eventTarget, eventName);
2031
+ if (this.started) {
2032
+ eventListener.connect();
2033
+ }
2034
+ return eventListener;
2035
+ };
2036
+ Dispatcher.prototype.fetchEventListenerMapForEventTarget = function(eventTarget) {
2037
+ var eventListenerMap = this.eventListenerMaps.get(eventTarget);
2038
+ if (!eventListenerMap) {
2039
+ eventListenerMap = new Map();
2040
+ this.eventListenerMaps.set(eventTarget, eventListenerMap);
2041
+ }
2042
+ return eventListenerMap;
2043
+ };
2044
+ return Dispatcher;
2045
+ }();
2046
+
2047
+ var descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;
2048
+
2049
+ function parseDescriptorString(descriptorString) {
2050
+ var source = descriptorString.trim();
2051
+ var matches = source.match(descriptorPattern) || [];
2052
+ return {
2053
+ eventTarget: parseEventTarget(matches[4]),
2054
+ eventName: matches[2],
2055
+ identifier: matches[5],
2056
+ methodName: matches[7]
2057
+ };
2058
+ }
2059
+
2060
+ function parseEventTarget(eventTargetName) {
2061
+ if (eventTargetName == "window") {
2062
+ return window;
2063
+ } else if (eventTargetName == "document") {
2064
+ return document;
2065
+ }
2066
+ }
2067
+
2068
+ function stringifyEventTarget(eventTarget) {
2069
+ if (eventTarget == window) {
2070
+ return "window";
2071
+ } else if (eventTarget == document) {
2072
+ return "document";
2073
+ }
2074
+ }
2075
+
2076
+ var Action = function() {
2077
+ function Action(element, index, descriptor) {
2078
+ this.element = element;
2079
+ this.index = index;
2080
+ this.eventTarget = descriptor.eventTarget || element;
2081
+ this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error("missing event name");
2082
+ this.identifier = descriptor.identifier || error("missing identifier");
2083
+ this.methodName = descriptor.methodName || error("missing method name");
2084
+ }
2085
+ Action.forToken = function(token) {
2086
+ return new this(token.element, token.index, parseDescriptorString(token.content));
2087
+ };
2088
+ Action.prototype.toString = function() {
2089
+ var eventNameSuffix = this.eventTargetName ? "@" + this.eventTargetName : "";
2090
+ return "" + this.eventName + eventNameSuffix + "->" + this.identifier + "#" + this.methodName;
2091
+ };
2092
+ Object.defineProperty(Action.prototype, "eventTargetName", {
2093
+ get: function() {
2094
+ return stringifyEventTarget(this.eventTarget);
2095
+ },
2096
+ enumerable: true,
2097
+ configurable: true
2098
+ });
2099
+ return Action;
2100
+ }();
2101
+
2102
+ var defaultEventNames = {
2103
+ a: function(e) {
2104
+ return "click";
2105
+ },
2106
+ button: function(e) {
2107
+ return "click";
2108
+ },
2109
+ form: function(e) {
2110
+ return "submit";
2111
+ },
2112
+ input: function(e) {
2113
+ return e.getAttribute("type") == "submit" ? "click" : "change";
2114
+ },
2115
+ select: function(e) {
2116
+ return "change";
2117
+ },
2118
+ textarea: function(e) {
2119
+ return "change";
2120
+ }
2121
+ };
2122
+
2123
+ function getDefaultEventNameForElement(element) {
2124
+ var tagName = element.tagName.toLowerCase();
2125
+ if (tagName in defaultEventNames) {
2126
+ return defaultEventNames[tagName](element);
2127
+ }
2128
+ }
2129
+
2130
+ function error(message) {
2131
+ throw new Error(message);
2132
+ }
2133
+
2134
+ var Binding = function() {
2135
+ function Binding(context, action) {
2136
+ this.context = context;
2137
+ this.action = action;
2138
+ }
2139
+ Object.defineProperty(Binding.prototype, "index", {
2140
+ get: function() {
2141
+ return this.action.index;
2142
+ },
2143
+ enumerable: true,
2144
+ configurable: true
2145
+ });
2146
+ Object.defineProperty(Binding.prototype, "eventTarget", {
2147
+ get: function() {
2148
+ return this.action.eventTarget;
2149
+ },
2150
+ enumerable: true,
2151
+ configurable: true
2152
+ });
2153
+ Object.defineProperty(Binding.prototype, "identifier", {
2154
+ get: function() {
2155
+ return this.context.identifier;
2156
+ },
2157
+ enumerable: true,
2158
+ configurable: true
2159
+ });
2160
+ Binding.prototype.handleEvent = function(event) {
2161
+ if (this.willBeInvokedByEvent(event)) {
2162
+ this.invokeWithEvent(event);
2163
+ }
2164
+ };
2165
+ Object.defineProperty(Binding.prototype, "eventName", {
2166
+ get: function() {
2167
+ return this.action.eventName;
2168
+ },
2169
+ enumerable: true,
2170
+ configurable: true
2171
+ });
2172
+ Object.defineProperty(Binding.prototype, "method", {
2173
+ get: function() {
2174
+ var method = this.controller[this.methodName];
2175
+ if (typeof method == "function") {
2176
+ return method;
2177
+ }
2178
+ throw new Error('Action "' + this.action + '" references undefined method "' + this.methodName + '"');
2179
+ },
2180
+ enumerable: true,
2181
+ configurable: true
2182
+ });
2183
+ Binding.prototype.invokeWithEvent = function(event) {
2184
+ try {
2185
+ this.method.call(this.controller, event);
2186
+ } catch (error) {
2187
+ var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element, index = _a.index;
2188
+ var detail = {
2189
+ identifier: identifier,
2190
+ controller: controller,
2191
+ element: element,
2192
+ index: index,
2193
+ event: event
2194
+ };
2195
+ this.context.handleError(error, 'invoking action "' + this.action + '"', detail);
2196
+ }
2197
+ };
2198
+ Binding.prototype.willBeInvokedByEvent = function(event) {
2199
+ var eventTarget = event.target;
2200
+ if (this.element === eventTarget) {
2201
+ return true;
2202
+ } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {
2203
+ return this.scope.containsElement(eventTarget);
2204
+ } else {
2205
+ return true;
2206
+ }
2207
+ };
2208
+ Object.defineProperty(Binding.prototype, "controller", {
2209
+ get: function() {
2210
+ return this.context.controller;
2211
+ },
2212
+ enumerable: true,
2213
+ configurable: true
2214
+ });
2215
+ Object.defineProperty(Binding.prototype, "methodName", {
2216
+ get: function() {
2217
+ return this.action.methodName;
2218
+ },
2219
+ enumerable: true,
2220
+ configurable: true
2221
+ });
2222
+ Object.defineProperty(Binding.prototype, "element", {
2223
+ get: function() {
2224
+ return this.scope.element;
2225
+ },
2226
+ enumerable: true,
2227
+ configurable: true
2228
+ });
2229
+ Object.defineProperty(Binding.prototype, "scope", {
2230
+ get: function() {
2231
+ return this.context.scope;
2232
+ },
2233
+ enumerable: true,
2234
+ configurable: true
2235
+ });
2236
+ return Binding;
2237
+ }();
2238
+
2239
+ var ElementObserver = function() {
2240
+ function ElementObserver(element, delegate) {
2241
+ var _this = this;
2242
+ this.element = element;
2243
+ this.started = false;
2244
+ this.delegate = delegate;
2245
+ this.elements = new Set();
2246
+ this.mutationObserver = new MutationObserver(function(mutations) {
2247
+ return _this.processMutations(mutations);
2248
+ });
2249
+ }
2250
+ ElementObserver.prototype.start = function() {
2251
+ if (!this.started) {
2252
+ this.started = true;
2253
+ this.mutationObserver.observe(this.element, {
2254
+ attributes: true,
2255
+ childList: true,
2256
+ subtree: true
2257
+ });
2258
+ this.refresh();
2259
+ }
2260
+ };
2261
+ ElementObserver.prototype.stop = function() {
2262
+ if (this.started) {
2263
+ this.mutationObserver.takeRecords();
2264
+ this.mutationObserver.disconnect();
2265
+ this.started = false;
2266
+ }
2267
+ };
2268
+ ElementObserver.prototype.refresh = function() {
2269
+ if (this.started) {
2270
+ var matches = new Set(this.matchElementsInTree());
2271
+ for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {
2272
+ var element = _a[_i];
2273
+ if (!matches.has(element)) {
2274
+ this.removeElement(element);
2275
+ }
2276
+ }
2277
+ for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {
2278
+ var element = _c[_b];
2279
+ this.addElement(element);
2280
+ }
2281
+ }
2282
+ };
2283
+ ElementObserver.prototype.processMutations = function(mutations) {
2284
+ if (this.started) {
2285
+ for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {
2286
+ var mutation = mutations_1[_i];
2287
+ this.processMutation(mutation);
2288
+ }
2289
+ }
2290
+ };
2291
+ ElementObserver.prototype.processMutation = function(mutation) {
2292
+ if (mutation.type == "attributes") {
2293
+ this.processAttributeChange(mutation.target, mutation.attributeName);
2294
+ } else if (mutation.type == "childList") {
2295
+ this.processRemovedNodes(mutation.removedNodes);
2296
+ this.processAddedNodes(mutation.addedNodes);
2297
+ }
2298
+ };
2299
+ ElementObserver.prototype.processAttributeChange = function(node, attributeName) {
2300
+ var element = node;
2301
+ if (this.elements.has(element)) {
2302
+ if (this.delegate.elementAttributeChanged && this.matchElement(element)) {
2303
+ this.delegate.elementAttributeChanged(element, attributeName);
2304
+ } else {
2305
+ this.removeElement(element);
2306
+ }
2307
+ } else if (this.matchElement(element)) {
2308
+ this.addElement(element);
2309
+ }
2310
+ };
2311
+ ElementObserver.prototype.processRemovedNodes = function(nodes) {
2312
+ for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {
2313
+ var node = _a[_i];
2314
+ var element = this.elementFromNode(node);
2315
+ if (element) {
2316
+ this.processTree(element, this.removeElement);
2317
+ }
2318
+ }
2319
+ };
2320
+ ElementObserver.prototype.processAddedNodes = function(nodes) {
2321
+ for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {
2322
+ var node = _a[_i];
2323
+ var element = this.elementFromNode(node);
2324
+ if (element && this.elementIsActive(element)) {
2325
+ this.processTree(element, this.addElement);
2326
+ }
2327
+ }
2328
+ };
2329
+ ElementObserver.prototype.matchElement = function(element) {
2330
+ return this.delegate.matchElement(element);
2331
+ };
2332
+ ElementObserver.prototype.matchElementsInTree = function(tree) {
2333
+ if (tree === void 0) {
2334
+ tree = this.element;
2335
+ }
2336
+ return this.delegate.matchElementsInTree(tree);
2337
+ };
2338
+ ElementObserver.prototype.processTree = function(tree, processor) {
2339
+ for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {
2340
+ var element = _a[_i];
2341
+ processor.call(this, element);
2342
+ }
2343
+ };
2344
+ ElementObserver.prototype.elementFromNode = function(node) {
2345
+ if (node.nodeType == Node.ELEMENT_NODE) {
2346
+ return node;
2347
+ }
2348
+ };
2349
+ ElementObserver.prototype.elementIsActive = function(element) {
2350
+ if (element.isConnected != this.element.isConnected) {
2351
+ return false;
2352
+ } else {
2353
+ return this.element.contains(element);
2354
+ }
2355
+ };
2356
+ ElementObserver.prototype.addElement = function(element) {
2357
+ if (!this.elements.has(element)) {
2358
+ if (this.elementIsActive(element)) {
2359
+ this.elements.add(element);
2360
+ if (this.delegate.elementMatched) {
2361
+ this.delegate.elementMatched(element);
2362
+ }
2363
+ }
2364
+ }
2365
+ };
2366
+ ElementObserver.prototype.removeElement = function(element) {
2367
+ if (this.elements.has(element)) {
2368
+ this.elements.delete(element);
2369
+ if (this.delegate.elementUnmatched) {
2370
+ this.delegate.elementUnmatched(element);
2371
+ }
2372
+ }
2373
+ };
2374
+ return ElementObserver;
2375
+ }();
2376
+
2377
+ var AttributeObserver = function() {
2378
+ function AttributeObserver(element, attributeName, delegate) {
2379
+ this.attributeName = attributeName;
2380
+ this.delegate = delegate;
2381
+ this.elementObserver = new ElementObserver(element, this);
2382
+ }
2383
+ Object.defineProperty(AttributeObserver.prototype, "element", {
2384
+ get: function() {
2385
+ return this.elementObserver.element;
2386
+ },
2387
+ enumerable: true,
2388
+ configurable: true
2389
+ });
2390
+ Object.defineProperty(AttributeObserver.prototype, "selector", {
2391
+ get: function() {
2392
+ return "[" + this.attributeName + "]";
2393
+ },
2394
+ enumerable: true,
2395
+ configurable: true
2396
+ });
2397
+ AttributeObserver.prototype.start = function() {
2398
+ this.elementObserver.start();
2399
+ };
2400
+ AttributeObserver.prototype.stop = function() {
2401
+ this.elementObserver.stop();
2402
+ };
2403
+ AttributeObserver.prototype.refresh = function() {
2404
+ this.elementObserver.refresh();
2405
+ };
2406
+ Object.defineProperty(AttributeObserver.prototype, "started", {
2407
+ get: function() {
2408
+ return this.elementObserver.started;
2409
+ },
2410
+ enumerable: true,
2411
+ configurable: true
2412
+ });
2413
+ AttributeObserver.prototype.matchElement = function(element) {
2414
+ return element.hasAttribute(this.attributeName);
2415
+ };
2416
+ AttributeObserver.prototype.matchElementsInTree = function(tree) {
2417
+ var match = this.matchElement(tree) ? [ tree ] : [];
2418
+ var matches = Array.from(tree.querySelectorAll(this.selector));
2419
+ return match.concat(matches);
2420
+ };
2421
+ AttributeObserver.prototype.elementMatched = function(element) {
2422
+ if (this.delegate.elementMatchedAttribute) {
2423
+ this.delegate.elementMatchedAttribute(element, this.attributeName);
2424
+ }
2425
+ };
2426
+ AttributeObserver.prototype.elementUnmatched = function(element) {
2427
+ if (this.delegate.elementUnmatchedAttribute) {
2428
+ this.delegate.elementUnmatchedAttribute(element, this.attributeName);
2429
+ }
2430
+ };
2431
+ AttributeObserver.prototype.elementAttributeChanged = function(element, attributeName) {
2432
+ if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {
2433
+ this.delegate.elementAttributeValueChanged(element, attributeName);
2434
+ }
2435
+ };
2436
+ return AttributeObserver;
2437
+ }();
2438
+
2439
+ function add(map, key, value) {
2440
+ fetch(map, key).add(value);
2441
+ }
2442
+
2443
+ function del(map, key, value) {
2444
+ fetch(map, key).delete(value);
2445
+ prune(map, key);
2446
+ }
2447
+
2448
+ function fetch(map, key) {
2449
+ var values = map.get(key);
2450
+ if (!values) {
2451
+ values = new Set();
2452
+ map.set(key, values);
2453
+ }
2454
+ return values;
2455
+ }
2456
+
2457
+ function prune(map, key) {
2458
+ var values = map.get(key);
2459
+ if (values != null && values.size == 0) {
2460
+ map.delete(key);
2461
+ }
2462
+ }
2463
+
2464
+ var Multimap = function() {
2465
+ function Multimap() {
2466
+ this.valuesByKey = new Map();
2467
+ }
2468
+ Object.defineProperty(Multimap.prototype, "values", {
2469
+ get: function() {
2470
+ var sets = Array.from(this.valuesByKey.values());
2471
+ return sets.reduce(function(values, set) {
2472
+ return values.concat(Array.from(set));
2473
+ }, []);
2474
+ },
2475
+ enumerable: true,
2476
+ configurable: true
2477
+ });
2478
+ Object.defineProperty(Multimap.prototype, "size", {
2479
+ get: function() {
2480
+ var sets = Array.from(this.valuesByKey.values());
2481
+ return sets.reduce(function(size, set) {
2482
+ return size + set.size;
2483
+ }, 0);
2484
+ },
2485
+ enumerable: true,
2486
+ configurable: true
2487
+ });
2488
+ Multimap.prototype.add = function(key, value) {
2489
+ add(this.valuesByKey, key, value);
2490
+ };
2491
+ Multimap.prototype.delete = function(key, value) {
2492
+ del(this.valuesByKey, key, value);
2493
+ };
2494
+ Multimap.prototype.has = function(key, value) {
2495
+ var values = this.valuesByKey.get(key);
2496
+ return values != null && values.has(value);
2497
+ };
2498
+ Multimap.prototype.hasKey = function(key) {
2499
+ return this.valuesByKey.has(key);
2500
+ };
2501
+ Multimap.prototype.hasValue = function(value) {
2502
+ var sets = Array.from(this.valuesByKey.values());
2503
+ return sets.some(function(set) {
2504
+ return set.has(value);
2505
+ });
2506
+ };
2507
+ Multimap.prototype.getValuesForKey = function(key) {
2508
+ var values = this.valuesByKey.get(key);
2509
+ return values ? Array.from(values) : [];
2510
+ };
2511
+ Multimap.prototype.getKeysForValue = function(value) {
2512
+ return Array.from(this.valuesByKey).filter(function(_a) {
2513
+ var key = _a[0], values = _a[1];
2514
+ return values.has(value);
2515
+ }).map(function(_a) {
2516
+ var key = _a[0], values = _a[1];
2517
+ return key;
2518
+ });
2519
+ };
2520
+ return Multimap;
2521
+ }();
2522
+
2523
+ var __extends = window && window.__extends || function() {
2524
+ var extendStatics = Object.setPrototypeOf || {
2525
+ __proto__: []
2526
+ } instanceof Array && function(d, b) {
2527
+ d.__proto__ = b;
2528
+ } || function(d, b) {
2529
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
2530
+ };
2531
+ return function(d, b) {
2532
+ extendStatics(d, b);
2533
+ function __() {
2534
+ this.constructor = d;
2535
+ }
2536
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2537
+ };
2538
+ }();
2539
+
2540
+ var IndexedMultimap = function(_super) {
2541
+ __extends(IndexedMultimap, _super);
2542
+ function IndexedMultimap() {
2543
+ var _this = _super.call(this) || this;
2544
+ _this.keysByValue = new Map();
2545
+ return _this;
2546
+ }
2547
+ Object.defineProperty(IndexedMultimap.prototype, "values", {
2548
+ get: function() {
2549
+ return Array.from(this.keysByValue.keys());
2550
+ },
2551
+ enumerable: true,
2552
+ configurable: true
2553
+ });
2554
+ IndexedMultimap.prototype.add = function(key, value) {
2555
+ _super.prototype.add.call(this, key, value);
2556
+ add(this.keysByValue, value, key);
2557
+ };
2558
+ IndexedMultimap.prototype.delete = function(key, value) {
2559
+ _super.prototype.delete.call(this, key, value);
2560
+ del(this.keysByValue, value, key);
2561
+ };
2562
+ IndexedMultimap.prototype.hasValue = function(value) {
2563
+ return this.keysByValue.has(value);
2564
+ };
2565
+ IndexedMultimap.prototype.getKeysForValue = function(value) {
2566
+ var set = this.keysByValue.get(value);
2567
+ return set ? Array.from(set) : [];
2568
+ };
2569
+ return IndexedMultimap;
2570
+ }(Multimap);
2571
+
2572
+ var TokenListObserver = function() {
2573
+ function TokenListObserver(element, attributeName, delegate) {
2574
+ this.attributeObserver = new AttributeObserver(element, attributeName, this);
2575
+ this.delegate = delegate;
2576
+ this.tokensByElement = new Multimap();
2577
+ }
2578
+ Object.defineProperty(TokenListObserver.prototype, "started", {
2579
+ get: function() {
2580
+ return this.attributeObserver.started;
2581
+ },
2582
+ enumerable: true,
2583
+ configurable: true
2584
+ });
2585
+ TokenListObserver.prototype.start = function() {
2586
+ this.attributeObserver.start();
2587
+ };
2588
+ TokenListObserver.prototype.stop = function() {
2589
+ this.attributeObserver.stop();
2590
+ };
2591
+ TokenListObserver.prototype.refresh = function() {
2592
+ this.attributeObserver.refresh();
2593
+ };
2594
+ Object.defineProperty(TokenListObserver.prototype, "element", {
2595
+ get: function() {
2596
+ return this.attributeObserver.element;
2597
+ },
2598
+ enumerable: true,
2599
+ configurable: true
2600
+ });
2601
+ Object.defineProperty(TokenListObserver.prototype, "attributeName", {
2602
+ get: function() {
2603
+ return this.attributeObserver.attributeName;
2604
+ },
2605
+ enumerable: true,
2606
+ configurable: true
2607
+ });
2608
+ TokenListObserver.prototype.elementMatchedAttribute = function(element) {
2609
+ this.tokensMatched(this.readTokensForElement(element));
2610
+ };
2611
+ TokenListObserver.prototype.elementAttributeValueChanged = function(element) {
2612
+ var _a = this.refreshTokensForElement(element), unmatchedTokens = _a[0], matchedTokens = _a[1];
2613
+ this.tokensUnmatched(unmatchedTokens);
2614
+ this.tokensMatched(matchedTokens);
2615
+ };
2616
+ TokenListObserver.prototype.elementUnmatchedAttribute = function(element) {
2617
+ this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));
2618
+ };
2619
+ TokenListObserver.prototype.tokensMatched = function(tokens) {
2620
+ var _this = this;
2621
+ tokens.forEach(function(token) {
2622
+ return _this.tokenMatched(token);
2623
+ });
2624
+ };
2625
+ TokenListObserver.prototype.tokensUnmatched = function(tokens) {
2626
+ var _this = this;
2627
+ tokens.forEach(function(token) {
2628
+ return _this.tokenUnmatched(token);
2629
+ });
2630
+ };
2631
+ TokenListObserver.prototype.tokenMatched = function(token) {
2632
+ this.delegate.tokenMatched(token);
2633
+ this.tokensByElement.add(token.element, token);
2634
+ };
2635
+ TokenListObserver.prototype.tokenUnmatched = function(token) {
2636
+ this.delegate.tokenUnmatched(token);
2637
+ this.tokensByElement.delete(token.element, token);
2638
+ };
2639
+ TokenListObserver.prototype.refreshTokensForElement = function(element) {
2640
+ var previousTokens = this.tokensByElement.getValuesForKey(element);
2641
+ var currentTokens = this.readTokensForElement(element);
2642
+ var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function(_a) {
2643
+ var previousToken = _a[0], currentToken = _a[1];
2644
+ return !tokensAreEqual(previousToken, currentToken);
2645
+ });
2646
+ if (firstDifferingIndex == -1) {
2647
+ return [ [], [] ];
2648
+ } else {
2649
+ return [ previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex) ];
2650
+ }
2651
+ };
2652
+ TokenListObserver.prototype.readTokensForElement = function(element) {
2653
+ var attributeName = this.attributeName;
2654
+ var tokenString = element.getAttribute(attributeName) || "";
2655
+ return parseTokenString(tokenString, element, attributeName);
2656
+ };
2657
+ return TokenListObserver;
2658
+ }();
2659
+
2660
+ function parseTokenString(tokenString, element, attributeName) {
2661
+ return tokenString.trim().split(/\s+/).filter(function(content) {
2662
+ return content.length;
2663
+ }).map(function(content, index) {
2664
+ return {
2665
+ element: element,
2666
+ attributeName: attributeName,
2667
+ content: content,
2668
+ index: index
2669
+ };
2670
+ });
2671
+ }
2672
+
2673
+ function zip(left, right) {
2674
+ var length = Math.max(left.length, right.length);
2675
+ return Array.from({
2676
+ length: length
2677
+ }, function(_, index) {
2678
+ return [ left[index], right[index] ];
2679
+ });
2680
+ }
2681
+
2682
+ function tokensAreEqual(left, right) {
2683
+ return left && right && left.index == right.index && left.content == right.content;
2684
+ }
2685
+
2686
+ var ValueListObserver = function() {
2687
+ function ValueListObserver(element, attributeName, delegate) {
2688
+ this.tokenListObserver = new TokenListObserver(element, attributeName, this);
2689
+ this.delegate = delegate;
2690
+ this.parseResultsByToken = new WeakMap();
2691
+ this.valuesByTokenByElement = new WeakMap();
2692
+ }
2693
+ Object.defineProperty(ValueListObserver.prototype, "started", {
2694
+ get: function() {
2695
+ return this.tokenListObserver.started;
2696
+ },
2697
+ enumerable: true,
2698
+ configurable: true
2699
+ });
2700
+ ValueListObserver.prototype.start = function() {
2701
+ this.tokenListObserver.start();
2702
+ };
2703
+ ValueListObserver.prototype.stop = function() {
2704
+ this.tokenListObserver.stop();
2705
+ };
2706
+ ValueListObserver.prototype.refresh = function() {
2707
+ this.tokenListObserver.refresh();
2708
+ };
2709
+ Object.defineProperty(ValueListObserver.prototype, "element", {
2710
+ get: function() {
2711
+ return this.tokenListObserver.element;
2712
+ },
2713
+ enumerable: true,
2714
+ configurable: true
2715
+ });
2716
+ Object.defineProperty(ValueListObserver.prototype, "attributeName", {
2717
+ get: function() {
2718
+ return this.tokenListObserver.attributeName;
2719
+ },
2720
+ enumerable: true,
2721
+ configurable: true
2722
+ });
2723
+ ValueListObserver.prototype.tokenMatched = function(token) {
2724
+ var element = token.element;
2725
+ var value = this.fetchParseResultForToken(token).value;
2726
+ if (value) {
2727
+ this.fetchValuesByTokenForElement(element).set(token, value);
2728
+ this.delegate.elementMatchedValue(element, value);
2729
+ }
2730
+ };
2731
+ ValueListObserver.prototype.tokenUnmatched = function(token) {
2732
+ var element = token.element;
2733
+ var value = this.fetchParseResultForToken(token).value;
2734
+ if (value) {
2735
+ this.fetchValuesByTokenForElement(element).delete(token);
2736
+ this.delegate.elementUnmatchedValue(element, value);
2737
+ }
2738
+ };
2739
+ ValueListObserver.prototype.fetchParseResultForToken = function(token) {
2740
+ var parseResult = this.parseResultsByToken.get(token);
2741
+ if (!parseResult) {
2742
+ parseResult = this.parseToken(token);
2743
+ this.parseResultsByToken.set(token, parseResult);
2744
+ }
2745
+ return parseResult;
2746
+ };
2747
+ ValueListObserver.prototype.fetchValuesByTokenForElement = function(element) {
2748
+ var valuesByToken = this.valuesByTokenByElement.get(element);
2749
+ if (!valuesByToken) {
2750
+ valuesByToken = new Map();
2751
+ this.valuesByTokenByElement.set(element, valuesByToken);
2752
+ }
2753
+ return valuesByToken;
2754
+ };
2755
+ ValueListObserver.prototype.parseToken = function(token) {
2756
+ try {
2757
+ var value = this.delegate.parseValueForToken(token);
2758
+ return {
2759
+ value: value
2760
+ };
2761
+ } catch (error) {
2762
+ return {
2763
+ error: error
2764
+ };
2765
+ }
2766
+ };
2767
+ return ValueListObserver;
2768
+ }();
2769
+
2770
+ var BindingObserver = function() {
2771
+ function BindingObserver(context, delegate) {
2772
+ this.context = context;
2773
+ this.delegate = delegate;
2774
+ this.bindingsByAction = new Map();
2775
+ }
2776
+ BindingObserver.prototype.start = function() {
2777
+ if (!this.valueListObserver) {
2778
+ this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);
2779
+ this.valueListObserver.start();
2780
+ }
2781
+ };
2782
+ BindingObserver.prototype.stop = function() {
2783
+ if (this.valueListObserver) {
2784
+ this.valueListObserver.stop();
2785
+ delete this.valueListObserver;
2786
+ this.disconnectAllActions();
2787
+ }
2788
+ };
2789
+ Object.defineProperty(BindingObserver.prototype, "element", {
2790
+ get: function() {
2791
+ return this.context.element;
2792
+ },
2793
+ enumerable: true,
2794
+ configurable: true
2795
+ });
2796
+ Object.defineProperty(BindingObserver.prototype, "identifier", {
2797
+ get: function() {
2798
+ return this.context.identifier;
2799
+ },
2800
+ enumerable: true,
2801
+ configurable: true
2802
+ });
2803
+ Object.defineProperty(BindingObserver.prototype, "actionAttribute", {
2804
+ get: function() {
2805
+ return this.schema.actionAttribute;
2806
+ },
2807
+ enumerable: true,
2808
+ configurable: true
2809
+ });
2810
+ Object.defineProperty(BindingObserver.prototype, "schema", {
2811
+ get: function() {
2812
+ return this.context.schema;
2813
+ },
2814
+ enumerable: true,
2815
+ configurable: true
2816
+ });
2817
+ Object.defineProperty(BindingObserver.prototype, "bindings", {
2818
+ get: function() {
2819
+ return Array.from(this.bindingsByAction.values());
2820
+ },
2821
+ enumerable: true,
2822
+ configurable: true
2823
+ });
2824
+ BindingObserver.prototype.connectAction = function(action) {
2825
+ var binding = new Binding(this.context, action);
2826
+ this.bindingsByAction.set(action, binding);
2827
+ this.delegate.bindingConnected(binding);
2828
+ };
2829
+ BindingObserver.prototype.disconnectAction = function(action) {
2830
+ var binding = this.bindingsByAction.get(action);
2831
+ if (binding) {
2832
+ this.bindingsByAction.delete(action);
2833
+ this.delegate.bindingDisconnected(binding);
2834
+ }
2835
+ };
2836
+ BindingObserver.prototype.disconnectAllActions = function() {
2837
+ var _this = this;
2838
+ this.bindings.forEach(function(binding) {
2839
+ return _this.delegate.bindingDisconnected(binding);
2840
+ });
2841
+ this.bindingsByAction.clear();
2842
+ };
2843
+ BindingObserver.prototype.parseValueForToken = function(token) {
2844
+ var action = Action.forToken(token);
2845
+ if (action.identifier == this.identifier) {
2846
+ return action;
2847
+ }
2848
+ };
2849
+ BindingObserver.prototype.elementMatchedValue = function(element, action) {
2850
+ this.connectAction(action);
2851
+ };
2852
+ BindingObserver.prototype.elementUnmatchedValue = function(element, action) {
2853
+ this.disconnectAction(action);
2854
+ };
2855
+ return BindingObserver;
2856
+ }();
2857
+
2858
+ var Context = function() {
2859
+ function Context(module, scope) {
2860
+ this.module = module;
2861
+ this.scope = scope;
2862
+ this.controller = new module.controllerConstructor(this);
2863
+ this.bindingObserver = new BindingObserver(this, this.dispatcher);
2864
+ try {
2865
+ this.controller.initialize();
2866
+ } catch (error) {
2867
+ this.handleError(error, "initializing controller");
2868
+ }
2869
+ }
2870
+ Context.prototype.connect = function() {
2871
+ this.bindingObserver.start();
2872
+ try {
2873
+ this.controller.connect();
2874
+ } catch (error) {
2875
+ this.handleError(error, "connecting controller");
2876
+ }
2877
+ };
2878
+ Context.prototype.disconnect = function() {
2879
+ try {
2880
+ this.controller.disconnect();
2881
+ } catch (error) {
2882
+ this.handleError(error, "disconnecting controller");
2883
+ }
2884
+ this.bindingObserver.stop();
2885
+ };
2886
+ Object.defineProperty(Context.prototype, "application", {
2887
+ get: function() {
2888
+ return this.module.application;
2889
+ },
2890
+ enumerable: true,
2891
+ configurable: true
2892
+ });
2893
+ Object.defineProperty(Context.prototype, "identifier", {
2894
+ get: function() {
2895
+ return this.module.identifier;
2896
+ },
2897
+ enumerable: true,
2898
+ configurable: true
2899
+ });
2900
+ Object.defineProperty(Context.prototype, "schema", {
2901
+ get: function() {
2902
+ return this.application.schema;
2903
+ },
2904
+ enumerable: true,
2905
+ configurable: true
2906
+ });
2907
+ Object.defineProperty(Context.prototype, "dispatcher", {
2908
+ get: function() {
2909
+ return this.application.dispatcher;
2910
+ },
2911
+ enumerable: true,
2912
+ configurable: true
2913
+ });
2914
+ Object.defineProperty(Context.prototype, "element", {
2915
+ get: function() {
2916
+ return this.scope.element;
2917
+ },
2918
+ enumerable: true,
2919
+ configurable: true
2920
+ });
2921
+ Object.defineProperty(Context.prototype, "parentElement", {
2922
+ get: function() {
2923
+ return this.element.parentElement;
2924
+ },
2925
+ enumerable: true,
2926
+ configurable: true
2927
+ });
2928
+ Context.prototype.handleError = function(error, message, detail) {
2929
+ if (detail === void 0) {
2930
+ detail = {};
2931
+ }
2932
+ var _a = this, identifier = _a.identifier, controller = _a.controller, element = _a.element;
2933
+ detail = Object.assign({
2934
+ identifier: identifier,
2935
+ controller: controller,
2936
+ element: element
2937
+ }, detail);
2938
+ this.application.handleError(error, "Error " + message, detail);
2939
+ };
2940
+ return Context;
2941
+ }();
2942
+
2943
+ var __extends$1 = window && window.__extends || function() {
2944
+ var extendStatics = Object.setPrototypeOf || {
2945
+ __proto__: []
2946
+ } instanceof Array && function(d, b) {
2947
+ d.__proto__ = b;
2948
+ } || function(d, b) {
2949
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
2950
+ };
2951
+ return function(d, b) {
2952
+ extendStatics(d, b);
2953
+ function __() {
2954
+ this.constructor = d;
2955
+ }
2956
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2957
+ };
2958
+ }();
2959
+
2960
+ function blessDefinition(definition) {
2961
+ return {
2962
+ identifier: definition.identifier,
2963
+ controllerConstructor: blessControllerConstructor(definition.controllerConstructor)
2964
+ };
2965
+ }
2966
+
2967
+ function blessControllerConstructor(controllerConstructor) {
2968
+ var constructor = extend(controllerConstructor);
2969
+ constructor.bless();
2970
+ return constructor;
2971
+ }
2972
+
2973
+ var extend = function() {
2974
+ function extendWithReflect(constructor) {
2975
+ function Controller() {
2976
+ var _newTarget = this && this instanceof Controller ? this.constructor : void 0;
2977
+ return Reflect.construct(constructor, arguments, _newTarget);
2978
+ }
2979
+ Controller.prototype = Object.create(constructor.prototype, {
2980
+ constructor: {
2981
+ value: Controller
2982
+ }
2983
+ });
2984
+ Reflect.setPrototypeOf(Controller, constructor);
2985
+ return Controller;
2986
+ }
2987
+ function testReflectExtension() {
2988
+ var a = function() {
2989
+ this.a.call(this);
2990
+ };
2991
+ var b = extendWithReflect(a);
2992
+ b.prototype.a = function() {};
2993
+ return new b();
2994
+ }
2995
+ try {
2996
+ testReflectExtension();
2997
+ return extendWithReflect;
2998
+ } catch (error) {
2999
+ return function(constructor) {
3000
+ return function(_super) {
3001
+ __extends$1(Controller, _super);
3002
+ function Controller() {
3003
+ return _super !== null && _super.apply(this, arguments) || this;
3004
+ }
3005
+ return Controller;
3006
+ }(constructor);
3007
+ };
3008
+ }
3009
+ }();
3010
+
3011
+ var Module = function() {
3012
+ function Module(application, definition) {
3013
+ this.application = application;
3014
+ this.definition = blessDefinition(definition);
3015
+ this.contextsByScope = new WeakMap();
3016
+ this.connectedContexts = new Set();
3017
+ }
3018
+ Object.defineProperty(Module.prototype, "identifier", {
3019
+ get: function() {
3020
+ return this.definition.identifier;
3021
+ },
3022
+ enumerable: true,
3023
+ configurable: true
3024
+ });
3025
+ Object.defineProperty(Module.prototype, "controllerConstructor", {
3026
+ get: function() {
3027
+ return this.definition.controllerConstructor;
3028
+ },
3029
+ enumerable: true,
3030
+ configurable: true
3031
+ });
3032
+ Object.defineProperty(Module.prototype, "contexts", {
3033
+ get: function() {
3034
+ return Array.from(this.connectedContexts);
3035
+ },
3036
+ enumerable: true,
3037
+ configurable: true
3038
+ });
3039
+ Module.prototype.connectContextForScope = function(scope) {
3040
+ var context = this.fetchContextForScope(scope);
3041
+ this.connectedContexts.add(context);
3042
+ context.connect();
3043
+ };
3044
+ Module.prototype.disconnectContextForScope = function(scope) {
3045
+ var context = this.contextsByScope.get(scope);
3046
+ if (context) {
3047
+ this.connectedContexts.delete(context);
3048
+ context.disconnect();
3049
+ }
3050
+ };
3051
+ Module.prototype.fetchContextForScope = function(scope) {
3052
+ var context = this.contextsByScope.get(scope);
3053
+ if (!context) {
3054
+ context = new Context(this, scope);
3055
+ this.contextsByScope.set(scope, context);
3056
+ }
3057
+ return context;
3058
+ };
3059
+ return Module;
3060
+ }();
3061
+
3062
+ var DataMap = function() {
3063
+ function DataMap(scope) {
3064
+ this.scope = scope;
3065
+ }
3066
+ Object.defineProperty(DataMap.prototype, "element", {
3067
+ get: function() {
3068
+ return this.scope.element;
3069
+ },
3070
+ enumerable: true,
3071
+ configurable: true
3072
+ });
3073
+ Object.defineProperty(DataMap.prototype, "identifier", {
3074
+ get: function() {
3075
+ return this.scope.identifier;
3076
+ },
3077
+ enumerable: true,
3078
+ configurable: true
3079
+ });
3080
+ DataMap.prototype.get = function(key) {
3081
+ key = this.getFormattedKey(key);
3082
+ return this.element.getAttribute(key);
3083
+ };
3084
+ DataMap.prototype.set = function(key, value) {
3085
+ key = this.getFormattedKey(key);
3086
+ this.element.setAttribute(key, value);
3087
+ return this.get(key);
3088
+ };
3089
+ DataMap.prototype.has = function(key) {
3090
+ key = this.getFormattedKey(key);
3091
+ return this.element.hasAttribute(key);
3092
+ };
3093
+ DataMap.prototype.delete = function(key) {
3094
+ if (this.has(key)) {
3095
+ key = this.getFormattedKey(key);
3096
+ this.element.removeAttribute(key);
3097
+ return true;
3098
+ } else {
3099
+ return false;
3100
+ }
3101
+ };
3102
+ DataMap.prototype.getFormattedKey = function(key) {
3103
+ return "data-" + this.identifier + "-" + dasherize(key);
3104
+ };
3105
+ return DataMap;
3106
+ }();
3107
+
3108
+ function dasherize(value) {
3109
+ return value.replace(/([A-Z])/g, function(_, char) {
3110
+ return "-" + char.toLowerCase();
3111
+ });
3112
+ }
3113
+
3114
+ function attributeValueContainsToken(attributeName, token) {
3115
+ return "[" + attributeName + '~="' + token + '"]';
3116
+ }
3117
+
3118
+ var TargetSet = function() {
3119
+ function TargetSet(scope) {
3120
+ this.scope = scope;
3121
+ }
3122
+ Object.defineProperty(TargetSet.prototype, "element", {
3123
+ get: function() {
3124
+ return this.scope.element;
3125
+ },
3126
+ enumerable: true,
3127
+ configurable: true
3128
+ });
3129
+ Object.defineProperty(TargetSet.prototype, "identifier", {
3130
+ get: function() {
3131
+ return this.scope.identifier;
3132
+ },
3133
+ enumerable: true,
3134
+ configurable: true
3135
+ });
3136
+ Object.defineProperty(TargetSet.prototype, "schema", {
3137
+ get: function() {
3138
+ return this.scope.schema;
3139
+ },
3140
+ enumerable: true,
3141
+ configurable: true
3142
+ });
3143
+ TargetSet.prototype.has = function(targetName) {
3144
+ return this.find(targetName) != null;
3145
+ };
3146
+ TargetSet.prototype.find = function() {
3147
+ var targetNames = [];
3148
+ for (var _i = 0; _i < arguments.length; _i++) {
3149
+ targetNames[_i] = arguments[_i];
3150
+ }
3151
+ var selector = this.getSelectorForTargetNames(targetNames);
3152
+ return this.scope.findElement(selector);
3153
+ };
3154
+ TargetSet.prototype.findAll = function() {
3155
+ var targetNames = [];
3156
+ for (var _i = 0; _i < arguments.length; _i++) {
3157
+ targetNames[_i] = arguments[_i];
3158
+ }
3159
+ var selector = this.getSelectorForTargetNames(targetNames);
3160
+ return this.scope.findAllElements(selector);
3161
+ };
3162
+ TargetSet.prototype.getSelectorForTargetNames = function(targetNames) {
3163
+ var _this = this;
3164
+ return targetNames.map(function(targetName) {
3165
+ return _this.getSelectorForTargetName(targetName);
3166
+ }).join(", ");
3167
+ };
3168
+ TargetSet.prototype.getSelectorForTargetName = function(targetName) {
3169
+ var targetDescriptor = this.identifier + "." + targetName;
3170
+ return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);
3171
+ };
3172
+ return TargetSet;
3173
+ }();
3174
+
3175
+ var Scope = function() {
3176
+ function Scope(schema, identifier, element) {
3177
+ this.schema = schema;
3178
+ this.identifier = identifier;
3179
+ this.element = element;
3180
+ this.targets = new TargetSet(this);
3181
+ this.data = new DataMap(this);
3182
+ }
3183
+ Scope.prototype.findElement = function(selector) {
3184
+ return this.findAllElements(selector)[0];
3185
+ };
3186
+ Scope.prototype.findAllElements = function(selector) {
3187
+ var head = this.element.matches(selector) ? [ this.element ] : [];
3188
+ var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));
3189
+ return head.concat(tail);
3190
+ };
3191
+ Scope.prototype.filterElements = function(elements) {
3192
+ var _this = this;
3193
+ return elements.filter(function(element) {
3194
+ return _this.containsElement(element);
3195
+ });
3196
+ };
3197
+ Scope.prototype.containsElement = function(element) {
3198
+ return element.closest(this.controllerSelector) === this.element;
3199
+ };
3200
+ Object.defineProperty(Scope.prototype, "controllerSelector", {
3201
+ get: function() {
3202
+ return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);
3203
+ },
3204
+ enumerable: true,
3205
+ configurable: true
3206
+ });
3207
+ return Scope;
3208
+ }();
3209
+
3210
+ var ScopeObserver = function() {
3211
+ function ScopeObserver(element, schema, delegate) {
3212
+ this.element = element;
3213
+ this.schema = schema;
3214
+ this.delegate = delegate;
3215
+ this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);
3216
+ this.scopesByIdentifierByElement = new WeakMap();
3217
+ this.scopeReferenceCounts = new WeakMap();
3218
+ }
3219
+ ScopeObserver.prototype.start = function() {
3220
+ this.valueListObserver.start();
3221
+ };
3222
+ ScopeObserver.prototype.stop = function() {
3223
+ this.valueListObserver.stop();
3224
+ };
3225
+ Object.defineProperty(ScopeObserver.prototype, "controllerAttribute", {
3226
+ get: function() {
3227
+ return this.schema.controllerAttribute;
3228
+ },
3229
+ enumerable: true,
3230
+ configurable: true
3231
+ });
3232
+ ScopeObserver.prototype.parseValueForToken = function(token) {
3233
+ var element = token.element, identifier = token.content;
3234
+ var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);
3235
+ var scope = scopesByIdentifier.get(identifier);
3236
+ if (!scope) {
3237
+ scope = new Scope(this.schema, identifier, element);
3238
+ scopesByIdentifier.set(identifier, scope);
3239
+ }
3240
+ return scope;
3241
+ };
3242
+ ScopeObserver.prototype.elementMatchedValue = function(element, value) {
3243
+ var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;
3244
+ this.scopeReferenceCounts.set(value, referenceCount);
3245
+ if (referenceCount == 1) {
3246
+ this.delegate.scopeConnected(value);
3247
+ }
3248
+ };
3249
+ ScopeObserver.prototype.elementUnmatchedValue = function(element, value) {
3250
+ var referenceCount = this.scopeReferenceCounts.get(value);
3251
+ if (referenceCount) {
3252
+ this.scopeReferenceCounts.set(value, referenceCount - 1);
3253
+ if (referenceCount == 1) {
3254
+ this.delegate.scopeDisconnected(value);
3255
+ }
3256
+ }
3257
+ };
3258
+ ScopeObserver.prototype.fetchScopesByIdentifierForElement = function(element) {
3259
+ var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);
3260
+ if (!scopesByIdentifier) {
3261
+ scopesByIdentifier = new Map();
3262
+ this.scopesByIdentifierByElement.set(element, scopesByIdentifier);
3263
+ }
3264
+ return scopesByIdentifier;
3265
+ };
3266
+ return ScopeObserver;
3267
+ }();
3268
+
3269
+ var Router = function() {
3270
+ function Router(application) {
3271
+ this.application = application;
3272
+ this.scopeObserver = new ScopeObserver(this.element, this.schema, this);
3273
+ this.scopesByIdentifier = new Multimap();
3274
+ this.modulesByIdentifier = new Map();
3275
+ }
3276
+ Object.defineProperty(Router.prototype, "element", {
3277
+ get: function() {
3278
+ return this.application.element;
3279
+ },
3280
+ enumerable: true,
3281
+ configurable: true
3282
+ });
3283
+ Object.defineProperty(Router.prototype, "schema", {
3284
+ get: function() {
3285
+ return this.application.schema;
3286
+ },
3287
+ enumerable: true,
3288
+ configurable: true
3289
+ });
3290
+ Object.defineProperty(Router.prototype, "controllerAttribute", {
3291
+ get: function() {
3292
+ return this.schema.controllerAttribute;
3293
+ },
3294
+ enumerable: true,
3295
+ configurable: true
3296
+ });
3297
+ Object.defineProperty(Router.prototype, "modules", {
3298
+ get: function() {
3299
+ return Array.from(this.modulesByIdentifier.values());
3300
+ },
3301
+ enumerable: true,
3302
+ configurable: true
3303
+ });
3304
+ Object.defineProperty(Router.prototype, "contexts", {
3305
+ get: function() {
3306
+ return this.modules.reduce(function(contexts, module) {
3307
+ return contexts.concat(module.contexts);
3308
+ }, []);
3309
+ },
3310
+ enumerable: true,
3311
+ configurable: true
3312
+ });
3313
+ Router.prototype.start = function() {
3314
+ this.scopeObserver.start();
3315
+ };
3316
+ Router.prototype.stop = function() {
3317
+ this.scopeObserver.stop();
3318
+ };
3319
+ Router.prototype.loadDefinition = function(definition) {
3320
+ this.unloadIdentifier(definition.identifier);
3321
+ var module = new Module(this.application, definition);
3322
+ this.connectModule(module);
3323
+ };
3324
+ Router.prototype.unloadIdentifier = function(identifier) {
3325
+ var module = this.modulesByIdentifier.get(identifier);
3326
+ if (module) {
3327
+ this.disconnectModule(module);
3328
+ }
3329
+ };
3330
+ Router.prototype.getContextForElementAndIdentifier = function(element, identifier) {
3331
+ var module = this.modulesByIdentifier.get(identifier);
3332
+ if (module) {
3333
+ return module.contexts.find(function(context) {
3334
+ return context.element == element;
3335
+ });
3336
+ }
3337
+ };
3338
+ Router.prototype.handleError = function(error, message, detail) {
3339
+ this.application.handleError(error, message, detail);
3340
+ };
3341
+ Router.prototype.scopeConnected = function(scope) {
3342
+ this.scopesByIdentifier.add(scope.identifier, scope);
3343
+ var module = this.modulesByIdentifier.get(scope.identifier);
3344
+ if (module) {
3345
+ module.connectContextForScope(scope);
3346
+ }
3347
+ };
3348
+ Router.prototype.scopeDisconnected = function(scope) {
3349
+ this.scopesByIdentifier.delete(scope.identifier, scope);
3350
+ var module = this.modulesByIdentifier.get(scope.identifier);
3351
+ if (module) {
3352
+ module.disconnectContextForScope(scope);
3353
+ }
3354
+ };
3355
+ Router.prototype.connectModule = function(module) {
3356
+ this.modulesByIdentifier.set(module.identifier, module);
3357
+ var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);
3358
+ scopes.forEach(function(scope) {
3359
+ return module.connectContextForScope(scope);
3360
+ });
3361
+ };
3362
+ Router.prototype.disconnectModule = function(module) {
3363
+ this.modulesByIdentifier.delete(module.identifier);
3364
+ var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);
3365
+ scopes.forEach(function(scope) {
3366
+ return module.disconnectContextForScope(scope);
3367
+ });
3368
+ };
3369
+ return Router;
3370
+ }();
3371
+
3372
+ var defaultSchema = {
3373
+ controllerAttribute: "data-controller",
3374
+ actionAttribute: "data-action",
3375
+ targetAttribute: "data-target"
3376
+ };
3377
+
3378
+ var __awaiter = window && window.__awaiter || function(thisArg, _arguments, P, generator) {
3379
+ return new (P || (P = Promise))(function(resolve, reject) {
3380
+ function fulfilled(value) {
3381
+ try {
3382
+ step(generator.next(value));
3383
+ } catch (e) {
3384
+ reject(e);
3385
+ }
3386
+ }
3387
+ function rejected(value) {
3388
+ try {
3389
+ step(generator["throw"](value));
3390
+ } catch (e) {
3391
+ reject(e);
3392
+ }
3393
+ }
3394
+ function step(result) {
3395
+ result.done ? resolve(result.value) : new P(function(resolve) {
3396
+ resolve(result.value);
3397
+ }).then(fulfilled, rejected);
3398
+ }
3399
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
3400
+ });
3401
+ };
3402
+
3403
+ var __generator = window && window.__generator || function(thisArg, body) {
3404
+ var _ = {
3405
+ label: 0,
3406
+ sent: function() {
3407
+ if (t[0] & 1) throw t[1];
3408
+ return t[1];
3409
+ },
3410
+ trys: [],
3411
+ ops: []
3412
+ }, f, y, t, g;
3413
+ return g = {
3414
+ next: verb(0),
3415
+ throw: verb(1),
3416
+ return: verb(2)
3417
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
3418
+ return this;
3419
+ }), g;
3420
+ function verb(n) {
3421
+ return function(v) {
3422
+ return step([ n, v ]);
3423
+ };
3424
+ }
3425
+ function step(op) {
3426
+ if (f) throw new TypeError("Generator is already executing.");
3427
+ while (_) try {
3428
+ if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
3429
+ if (y = 0, t) op = [ 0, t.value ];
3430
+ switch (op[0]) {
3431
+ case 0:
3432
+ case 1:
3433
+ t = op;
3434
+ break;
3435
+
3436
+ case 4:
3437
+ _.label++;
3438
+ return {
3439
+ value: op[1],
3440
+ done: false
3441
+ };
3442
+
3443
+ case 5:
3444
+ _.label++;
3445
+ y = op[1];
3446
+ op = [ 0 ];
3447
+ continue;
3448
+
3449
+ case 7:
3450
+ op = _.ops.pop();
3451
+ _.trys.pop();
3452
+ continue;
3453
+
3454
+ default:
3455
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
3456
+ _ = 0;
3457
+ continue;
3458
+ }
3459
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
3460
+ _.label = op[1];
3461
+ break;
3462
+ }
3463
+ if (op[0] === 6 && _.label < t[1]) {
3464
+ _.label = t[1];
3465
+ t = op;
3466
+ break;
3467
+ }
3468
+ if (t && _.label < t[2]) {
3469
+ _.label = t[2];
3470
+ _.ops.push(op);
3471
+ break;
3472
+ }
3473
+ if (t[2]) _.ops.pop();
3474
+ _.trys.pop();
3475
+ continue;
3476
+ }
3477
+ op = body.call(thisArg, _);
3478
+ } catch (e) {
3479
+ op = [ 6, e ];
3480
+ y = 0;
3481
+ } finally {
3482
+ f = t = 0;
3483
+ }
3484
+ if (op[0] & 5) throw op[1];
3485
+ return {
3486
+ value: op[0] ? op[1] : void 0,
3487
+ done: true
3488
+ };
3489
+ }
3490
+ };
3491
+
3492
+ var Application = function() {
3493
+ function Application(element, schema) {
3494
+ if (element === void 0) {
3495
+ element = document.documentElement;
3496
+ }
3497
+ if (schema === void 0) {
3498
+ schema = defaultSchema;
3499
+ }
3500
+ this.element = element;
3501
+ this.schema = schema;
3502
+ this.dispatcher = new Dispatcher(this);
3503
+ this.router = new Router(this);
3504
+ }
3505
+ Application.start = function(element, schema) {
3506
+ var application = new Application(element, schema);
3507
+ application.start();
3508
+ return application;
3509
+ };
3510
+ Application.prototype.start = function() {
3511
+ return __awaiter(this, void 0, void 0, function() {
3512
+ return __generator(this, function(_a) {
3513
+ switch (_a.label) {
3514
+ case 0:
3515
+ return [ 4, domReady() ];
3516
+
3517
+ case 1:
3518
+ _a.sent();
3519
+ this.router.start();
3520
+ this.dispatcher.start();
3521
+ return [ 2 ];
3522
+ }
3523
+ });
3524
+ });
3525
+ };
3526
+ Application.prototype.stop = function() {
3527
+ this.router.stop();
3528
+ this.dispatcher.stop();
3529
+ };
3530
+ Application.prototype.register = function(identifier, controllerConstructor) {
3531
+ this.load({
3532
+ identifier: identifier,
3533
+ controllerConstructor: controllerConstructor
3534
+ });
3535
+ };
3536
+ Application.prototype.load = function(head) {
3537
+ var _this = this;
3538
+ var rest = [];
3539
+ for (var _i = 1; _i < arguments.length; _i++) {
3540
+ rest[_i - 1] = arguments[_i];
3541
+ }
3542
+ var definitions = Array.isArray(head) ? head : [ head ].concat(rest);
3543
+ definitions.forEach(function(definition) {
3544
+ return _this.router.loadDefinition(definition);
3545
+ });
3546
+ };
3547
+ Application.prototype.unload = function(head) {
3548
+ var _this = this;
3549
+ var rest = [];
3550
+ for (var _i = 1; _i < arguments.length; _i++) {
3551
+ rest[_i - 1] = arguments[_i];
3552
+ }
3553
+ var identifiers = Array.isArray(head) ? head : [ head ].concat(rest);
3554
+ identifiers.forEach(function(identifier) {
3555
+ return _this.router.unloadIdentifier(identifier);
3556
+ });
3557
+ };
3558
+ Object.defineProperty(Application.prototype, "controllers", {
3559
+ get: function() {
3560
+ return this.router.contexts.map(function(context) {
3561
+ return context.controller;
3562
+ });
3563
+ },
3564
+ enumerable: true,
3565
+ configurable: true
3566
+ });
3567
+ Application.prototype.getControllerForElementAndIdentifier = function(element, identifier) {
3568
+ var context = this.router.getContextForElementAndIdentifier(element, identifier);
3569
+ return context ? context.controller : null;
3570
+ };
3571
+ Application.prototype.handleError = function(error, message, detail) {
3572
+ console.error("%s\n\n%o\n\n%o", message, error, detail);
3573
+ };
3574
+ return Application;
3575
+ }();
3576
+
3577
+ function domReady() {
3578
+ return new Promise(function(resolve) {
3579
+ if (document.readyState == "loading") {
3580
+ document.addEventListener("DOMContentLoaded", resolve);
3581
+ } else {
3582
+ resolve();
3583
+ }
3584
+ });
3585
+ }
3586
+
3587
+ function defineTargetProperties(constructor) {
3588
+ var prototype = constructor.prototype;
3589
+ var targetNames = getTargetNamesForConstructor(constructor);
3590
+ targetNames.forEach(function(name) {
3591
+ var _a;
3592
+ return defineLinkedProperties(prototype, (_a = {}, _a[name + "Target"] = {
3593
+ get: function() {
3594
+ var target = this.targets.find(name);
3595
+ if (target) {
3596
+ return target;
3597
+ } else {
3598
+ throw new Error('Missing target element "' + this.identifier + "." + name + '"');
3599
+ }
3600
+ }
3601
+ }, _a[name + "Targets"] = {
3602
+ get: function() {
3603
+ return this.targets.findAll(name);
3604
+ }
3605
+ }, _a["has" + capitalize(name) + "Target"] = {
3606
+ get: function() {
3607
+ return this.targets.has(name);
3608
+ }
3609
+ }, _a));
3610
+ });
3611
+ }
3612
+
3613
+ function getTargetNamesForConstructor(constructor) {
3614
+ var ancestors = getAncestorsForConstructor(constructor);
3615
+ return Array.from(ancestors.reduce(function(targetNames, constructor) {
3616
+ getOwnTargetNamesForConstructor(constructor).forEach(function(name) {
3617
+ return targetNames.add(name);
3618
+ });
3619
+ return targetNames;
3620
+ }, new Set()));
3621
+ }
3622
+
3623
+ function getAncestorsForConstructor(constructor) {
3624
+ var ancestors = [];
3625
+ while (constructor) {
3626
+ ancestors.push(constructor);
3627
+ constructor = Object.getPrototypeOf(constructor);
3628
+ }
3629
+ return ancestors;
3630
+ }
3631
+
3632
+ function getOwnTargetNamesForConstructor(constructor) {
3633
+ var definition = constructor["targets"];
3634
+ return Array.isArray(definition) ? definition : [];
3635
+ }
3636
+
3637
+ function defineLinkedProperties(object, properties) {
3638
+ Object.keys(properties).forEach(function(name) {
3639
+ if (!(name in object)) {
3640
+ var descriptor = properties[name];
3641
+ Object.defineProperty(object, name, descriptor);
3642
+ }
3643
+ });
3644
+ }
3645
+
3646
+ function capitalize(name) {
3647
+ return name.charAt(0).toUpperCase() + name.slice(1);
3648
+ }
3649
+
3650
+ var Controller = function() {
3651
+ function Controller(context) {
3652
+ this.context = context;
3653
+ }
3654
+ Controller.bless = function() {
3655
+ defineTargetProperties(this);
3656
+ };
3657
+ Object.defineProperty(Controller.prototype, "application", {
3658
+ get: function() {
3659
+ return this.context.application;
3660
+ },
3661
+ enumerable: true,
3662
+ configurable: true
3663
+ });
3664
+ Object.defineProperty(Controller.prototype, "scope", {
3665
+ get: function() {
3666
+ return this.context.scope;
3667
+ },
3668
+ enumerable: true,
3669
+ configurable: true
3670
+ });
3671
+ Object.defineProperty(Controller.prototype, "element", {
3672
+ get: function() {
3673
+ return this.scope.element;
3674
+ },
3675
+ enumerable: true,
3676
+ configurable: true
3677
+ });
3678
+ Object.defineProperty(Controller.prototype, "identifier", {
3679
+ get: function() {
3680
+ return this.scope.identifier;
3681
+ },
3682
+ enumerable: true,
3683
+ configurable: true
3684
+ });
3685
+ Object.defineProperty(Controller.prototype, "targets", {
3686
+ get: function() {
3687
+ return this.scope.targets;
3688
+ },
3689
+ enumerable: true,
3690
+ configurable: true
3691
+ });
3692
+ Object.defineProperty(Controller.prototype, "data", {
3693
+ get: function() {
3694
+ return this.scope.data;
3695
+ },
3696
+ enumerable: true,
3697
+ configurable: true
3698
+ });
3699
+ Controller.prototype.initialize = function() {};
3700
+ Controller.prototype.connect = function() {};
3701
+ Controller.prototype.disconnect = function() {};
3702
+ Controller.targets = [];
3703
+ return Controller;
3704
+ }();
3705
+
3706
+ function _classCallCheck(instance, Constructor) {
3707
+ if (!(instance instanceof Constructor)) {
3708
+ throw new TypeError("Cannot call a class as a function");
3709
+ }
3710
+ }
3711
+
3712
+ function _defineProperties(target, props) {
3713
+ for (var i = 0; i < props.length; i++) {
3714
+ var descriptor = props[i];
3715
+ descriptor.enumerable = descriptor.enumerable || false;
3716
+ descriptor.configurable = true;
3717
+ if ("value" in descriptor) descriptor.writable = true;
3718
+ Object.defineProperty(target, descriptor.key, descriptor);
3719
+ }
3720
+ }
3721
+
3722
+ function _createClass(Constructor, protoProps, staticProps) {
3723
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
3724
+ if (staticProps) _defineProperties(Constructor, staticProps);
3725
+ return Constructor;
3726
+ }
3727
+
3728
+ function _defineProperty(obj, key, value) {
3729
+ if (key in obj) {
3730
+ Object.defineProperty(obj, key, {
3731
+ value: value,
3732
+ enumerable: true,
3733
+ configurable: true,
3734
+ writable: true
3735
+ });
3736
+ } else {
3737
+ obj[key] = value;
3738
+ }
3739
+ return obj;
3740
+ }
3741
+
3742
+ function _inherits(subClass, superClass) {
3743
+ if (typeof superClass !== "function" && superClass !== null) {
3744
+ throw new TypeError("Super expression must either be null or a function");
3745
+ }
3746
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
3747
+ constructor: {
3748
+ value: subClass,
3749
+ writable: true,
3750
+ configurable: true
3751
+ }
3752
+ });
3753
+ if (superClass) _setPrototypeOf(subClass, superClass);
3754
+ }
3755
+
3756
+ function _getPrototypeOf(o) {
3757
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
3758
+ return o.__proto__ || Object.getPrototypeOf(o);
3759
+ };
3760
+ return _getPrototypeOf(o);
3761
+ }
3762
+
3763
+ function _setPrototypeOf(o, p) {
3764
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
3765
+ o.__proto__ = p;
3766
+ return o;
3767
+ };
3768
+ return _setPrototypeOf(o, p);
3769
+ }
3770
+
3771
+ function _assertThisInitialized(self) {
3772
+ if (self === void 0) {
3773
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
3774
+ }
3775
+ return self;
3776
+ }
3777
+
3778
+ function _possibleConstructorReturn(self, call) {
3779
+ if (call && (typeof call === "object" || typeof call === "function")) {
3780
+ return call;
3781
+ }
3782
+ return _assertThisInitialized(self);
3783
+ }
3784
+
3785
+ var _default = function(_Controller) {
3786
+ _inherits(_default, _Controller);
3787
+ function _default() {
3788
+ _classCallCheck(this, _default);
3789
+ return _possibleConstructorReturn(this, _getPrototypeOf(_default).apply(this, arguments));
3790
+ }
3791
+ _createClass(_default, [ {
3792
+ key: "connect",
3793
+ value: function connect() {
3794
+ this.element.textContent = "TestController connected.";
3795
+ }
3796
+ } ]);
3797
+ return _default;
3798
+ }(Controller);
3799
+
3800
+ var _default$1 = function(_Controller) {
3801
+ _inherits(_default, _Controller);
3802
+ function _default() {
3803
+ _classCallCheck(this, _default);
3804
+ return _possibleConstructorReturn(this, _getPrototypeOf(_default).apply(this, arguments));
3805
+ }
3806
+ _createClass(_default, [ {
3807
+ key: "connect",
3808
+ value: function connect() {
3809
+ this.element.textContent = "AnotherTestController connected";
3810
+ }
3811
+ } ]);
3812
+ return _default;
3813
+ }(Controller);
3814
+
3815
+ var $ = window.$;
3816
+
3817
+ var _default$2 = function(_Controller) {
3818
+ _inherits(_default, _Controller);
3819
+ function _default() {
3820
+ _classCallCheck(this, _default);
3821
+ return _possibleConstructorReturn(this, _getPrototypeOf(_default).apply(this, arguments));
3822
+ }
3823
+ _createClass(_default, [ {
3824
+ key: "row",
3825
+ value: function row(event) {
3826
+ event.preventDefault;
3827
+ var tbody = event.target.closest("tbody");
3828
+ tbody.classList.toggle("toggleable--open");
3829
+ $(".grid > .row").masonry("layout");
3830
+ }
3831
+ }, {
3832
+ key: "table",
3833
+ value: function table(event) {
3834
+ event.preventDefault;
3835
+ var table = event.target.closest("table");
3836
+ var thead = event.target.closest("thead");
3837
+ var tbodies = Array.prototype.slice.call(table.querySelectorAll("tbody"));
3838
+ var hide = thead.classList.contains("toggleable--open");
3839
+ thead.classList.toggle("toggleable--open");
3840
+ tbodies.forEach(function(tbody) {
3841
+ tbody.classList.toggle("toggleable--open", !hide);
3842
+ });
3843
+ $(".grid > .row").masonry("layout");
3844
+ }
3845
+ } ]);
3846
+ return _default;
3847
+ }(Controller);
3848
+
3849
+ var $$1 = window.$;
3850
+
3851
+ var _default$3 = function(_Controller) {
3852
+ _inherits(_default, _Controller);
3853
+ function _default() {
3854
+ _classCallCheck(this, _default);
3855
+ return _possibleConstructorReturn(this, _getPrototypeOf(_default).apply(this, arguments));
3856
+ }
3857
+ _createClass(_default, [ {
3858
+ key: "connect",
3859
+ value: function connect() {
3860
+ window.initDatepickersIn(".hd-drug-administration");
3861
+ }
3862
+ }, {
3863
+ key: "toggleAdministered",
3864
+ value: function toggleAdministered() {
3865
+ var checked = event.target.value == "true";
3866
+ this.containerTarget.classList.toggle("administered", checked);
3867
+ this.containerTarget.classList.toggle("not-administered", !checked);
3868
+ this.containerTarget.classList.remove("undecided");
3869
+ $$1(".authentication", this.containerTarget).toggle(checked);
3870
+ $$1(".authentication", this.containerTarget).toggleClass("disabled-with-faded-overlay", !checked);
3871
+ $$1(".reason-why-not-administered", this.containerTarget).toggle(!checked);
3872
+ $$1("#btn_save_and_witness_later").toggle(checked);
3873
+ }
3874
+ } ]);
3875
+ return _default;
3876
+ }(Controller);
3877
+
3878
+ _defineProperty(_default$3, "targets", [ "container", "radio" ]);
3879
+
3880
+ var application = Application.start();
3881
+
3882
+ application.register("test", _default);
3883
+
3884
+ application.register("another_test", _default$1);
3885
+
3886
+ application.register("toggle", _default$2);
3887
+
3888
+ application.register("hd-prescription-administration", _default$3);