super 0.0.5 → 0.0.6

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -1
  3. data/README.md +55 -23
  4. data/app/assets/javascripts/super/application.js +1062 -261
  5. data/app/assets/stylesheets/super/application.css +72775 -50711
  6. data/app/controllers/super/application_controller.rb +39 -50
  7. data/app/helpers/super/application_helper.rb +24 -17
  8. data/app/views/layouts/super/application.html.erb +4 -0
  9. data/app/views/super/application/{_resources_header.html.erb → _collection_header.html.erb} +5 -6
  10. data/app/views/super/application/_flash.html.erb +13 -13
  11. data/app/views/super/application/_form_field_select.html.erb +1 -1
  12. data/app/views/super/application/_form_has_many.html.erb +1 -1
  13. data/app/views/super/application/{_resource_header.html.erb → _member_header.html.erb} +6 -6
  14. data/app/views/super/application/_super_layout.html.erb +7 -12
  15. data/app/views/super/application/_super_panel.html.erb +2 -6
  16. data/app/views/super/application/_super_schema_display_actions.html.erb +5 -0
  17. data/app/views/super/application/_super_schema_display_index.html.erb +39 -0
  18. data/app/views/super/application/_super_schema_display_show.html.erb +8 -0
  19. data/app/views/super/application/{_form.html.erb → _super_schema_form.html.erb} +2 -4
  20. data/app/views/super/application/edit.html.erb +2 -2
  21. data/app/views/super/application/index.html.erb +2 -2
  22. data/app/views/super/application/new.html.erb +2 -2
  23. data/app/views/super/application/show.html.erb +2 -2
  24. data/app/views/super/feather/{_chevron_down.svg → _chevron_down.html} +0 -0
  25. data/config/locales/en.yml +5 -0
  26. data/docs/cheat.md +41 -0
  27. data/docs/webpacker.md +1 -1
  28. data/frontend/super-frontend/dist/application.css +72775 -50711
  29. data/frontend/super-frontend/dist/application.js +1062 -261
  30. data/frontend/super-frontend/package.json +1 -1
  31. data/frontend/super-frontend/src/javascripts/super/apply_template_controller.ts +6 -8
  32. data/frontend/super-frontend/tailwind.config.js +7 -1
  33. data/frontend/super-frontend/yarn.lock +1103 -1195
  34. data/lib/generators/super/install/install_generator.rb +16 -0
  35. data/lib/super.rb +2 -2
  36. data/lib/super/action_inquirer.rb +2 -2
  37. data/lib/super/client_error.rb +43 -0
  38. data/lib/super/configuration.rb +1 -1
  39. data/lib/super/controls.rb +17 -101
  40. data/lib/super/controls/optional.rb +65 -0
  41. data/lib/super/controls/required.rb +41 -0
  42. data/lib/super/controls/steps.rb +115 -0
  43. data/lib/super/display/schema_types.rb +45 -2
  44. data/lib/super/error.rb +8 -9
  45. data/lib/super/form.rb +48 -0
  46. data/lib/super/form/schema_types.rb +8 -1
  47. data/lib/super/layout.rb +28 -0
  48. data/lib/super/link.rb +55 -32
  49. data/lib/super/panel.rb +13 -0
  50. data/lib/super/partial/resolving.rb +24 -0
  51. data/lib/super/schema.rb +19 -5
  52. data/lib/super/version.rb +1 -1
  53. data/lib/super/view_helper.rb +1 -1
  54. metadata +40 -15
  55. data/app/views/super/application/_index.html.erb +0 -45
  56. data/app/views/super/application/_show.html.erb +0 -10
  57. data/docs/controls.md +0 -39
  58. data/lib/super/display.rb +0 -9
  59. data/lib/super/step.rb +0 -36
  60. data/lib/tasks/super_tasks.rake +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b59b4010b17c09a380b5aff7b71a7f3f17c8406553c24349454ed8bc2e80028
4
- data.tar.gz: 6854ff2172e6c70ce60b64718133b71970e84d60db0e5a15296ba5bcf9b7a981
3
+ metadata.gz: cfd2be7e756bd5000efcf53557039621d67df3705df3a35c5806256c66ee4e96
4
+ data.tar.gz: eccb74df362766a46c1fc951ca327168a4febb06cacd11f3297201e898576053
5
5
  SHA512:
6
- metadata.gz: c243fa381ef6be45965a63a77d6684206b9e12e6a392059cca8dfcc4e7fec57bd8b14da4f26a8af05bf2c65aeeae8791aaa39801fe684c03df1e099f2ea3dff6
7
- data.tar.gz: c7c4e6312ad9bd301effddf4363c1cea2e01d1e4221f113160b6571dd0e07b4709d7dbc0da87660960147a9a81c79a0da812cccc10fa81231cbcd8700e5b9c0b
6
+ metadata.gz: 85ab056714996f2030f786e4f9498761b41374614078a7fd27155a1200cce25b583361d5b44f02c7f1bf88b6792e83ea40c9985bd6f5c51f3e117b0950732b7c
7
+ data.tar.gz: 5e7dc0e1216c67fb5a24cb392dc5d5f1193dbc4ac8acafc39afadd42809ba7cd15c813b729fef9e3026a87cdfaf69eadfe3ef670b9099b62d75fde1c8d14c058
data/.yardopts CHANGED
@@ -3,8 +3,9 @@
3
3
  --load ./docs/yard_customizations.rb
4
4
  -
5
5
  CONTRIBUTING.md
6
+ STABILITY.md
6
7
  LICENSE
7
8
  docs/quick_start.md
8
9
  docs/webpacker.md
9
- docs/controls.md
10
+ docs/cheat.md
10
11
  docs/faq.md
data/README.md CHANGED
@@ -1,14 +1,30 @@
1
1
  # Super
2
2
 
3
- Super is a zero dependency admin framework for Ruby on Rails applications.
3
+ Super is an admin framework for Ruby on Rails applications. Super helps you make
4
+ powerful admin pages quickly.
4
5
 
5
- Super is made for developers. They will find it easy to build and modify admin
6
- pages. It builds on top of Rails controllers and views, so it's straightforward
7
- to customize. It's fully configurable without a DSL.
6
+ Super strives to let engineers build great admin pages quickly and easily by:
8
7
 
9
- Super is made for admins. Power users and casual users alike will find the admin
10
- pages simple and efficient. And the Professional add-on can make it even more
11
- powerful.
8
+ * Providing a useful CRUD interface
9
+ * Relying on Rails' built in features whenever possible
10
+ * Preferring plain Ruby objects rather than requiring DSLs
11
+ * Supporting a wide range of Ruby and Rails versions
12
+ * Having zero dependencies
13
+
14
+
15
+ Super has no dependencies. That means when you install Super, only Super gets
16
+ added to your `Gemfile.lock`. This leads to many benefits:
17
+
18
+ * Super doesn't require common Rails libraries like [Kaminari][Kaminari],
19
+ [Devise][Devise], or [Sass][Sass], so it'll never conflict with the libraries
20
+ you have installed. If you want to upgrade Super, you won't have to upgrade
21
+ any of your other gems. And if you want to upgrade your other gems, you won't
22
+ have to upgrade Super! This will greatly reduce your maintenance burden since
23
+ your admin framework won't dictate which libraries and which versions your
24
+ application uses.
25
+ * All code has the possibility of bugs and security issues, whether they're
26
+ written by you or by others. Having fewer dependencies can reduce the risk of
27
+ introducing problems into your application.
12
28
 
13
29
 
14
30
  ## Features
@@ -16,41 +32,49 @@ powerful.
16
32
  * Sprockets and Webpacker compatibility
17
33
  * Note: Webpacker support depends on one additional NPM package for parsing
18
34
  ERB
19
- * Pagination
20
35
  * Configurable forms (new and edit forms)
36
+ * Nested associations are supported out of the box
21
37
  * Configurable display (index and show tables)
22
- * Supports Rails 5.0+, Ruby 2.3+
23
- * Configurable without a DSL
24
- * Looks reasonably nice and modern
25
38
  * Pre-built frontend assets (doesn't require Sass, PostCSS, Babel, etc)
26
39
  * Vendored assets include
27
40
  * Stimulus JS
41
+ * Rails UJS
28
42
  * Tailwind CSS
29
- * Feather icons
43
+ * Supports Rails 5.0+, Ruby 2.3+
44
+
30
45
 
31
- Super was inspired in part by the admin frameworks [ActiveAdmin][activeadmin]
32
- and [Administrate][administrate]. If Super doesn't quite fit your requirements
33
- at this moment, one of those might meet your needs better.
46
+ ## Super doesn't fit my needs. What should I look at?
47
+
48
+ There are lots of Rails admin frameworks. I've personally used
49
+ [ActiveAdmin][ActiveAdmin] and [Administrate][Administrate], and I had some
50
+ brief exposure to [RailsAdmin][RailsAdmin].
51
+
52
+ If you need a ton of features, I'd probably suggest looking at ActiveAdmin. It
53
+ relies pretty heavily on DSLs but is pretty flexible and popular.
54
+
55
+ I like Administrate as well. I found that it doesn't have quite as many features
56
+ as ActiveAdmin, but it's nice and feels like developing a normal Rails app.
57
+ There's no DSL.
34
58
 
35
59
 
36
60
  ## Professional edition
37
61
 
38
- Super Professional is a paid add-on and provides additional benefits:
62
+ Super Professional is a paid add-on that provides additional benefits:
39
63
 
40
- * Feature: Filtering by column values
64
+ * Productivity improvements and quality of life features for admins
41
65
  * Priority email support
42
66
  * Supporting long term development of Super
43
67
  * An LGPL exemption
44
68
 
45
- It will be available soon. Subscribe to the [newsletter][newsletter] to be
46
- notified of its availability or for brief, occasional updates.
69
+ It isn't available yet. Contact me if you're interested, or subscribe to the
70
+ [newsletter][newsletter] to be notified of its availability and for brief,
71
+ occasional updates to Super.
47
72
 
48
73
 
49
74
  ## Demos
50
75
 
51
76
  * [Super Demo][super_demo]
52
77
  * [Super Demo source][super_demo_source]
53
- * [Super Professional Demo][super_professional]
54
78
 
55
79
 
56
80
  ## Installation and Usage
@@ -58,6 +82,11 @@ notified of its availability or for brief, occasional updates.
58
82
  See [Quick start](./docs/quick_start.md)
59
83
 
60
84
 
85
+ ## Path to 1.0
86
+
87
+ See [STABILITY](./STABILITY.md)
88
+
89
+
61
90
  ## Contributing
62
91
 
63
92
  See [CONTRIBUTING](./CONTRIBUTING.md)
@@ -68,9 +97,12 @@ See [CONTRIBUTING](./CONTRIBUTING.md)
68
97
  The gem is available under the terms of the [GNU LGPLv3](./LICENSE).
69
98
 
70
99
 
71
- [administrate]: https://github.com/thoughtbot/administrate
72
- [activeadmin]: https://github.com/activeadmin/activeadmin
100
+ [Administrate]: https://github.com/thoughtbot/administrate
101
+ [ActiveAdmin]: https://github.com/activeadmin/activeadmin
102
+ [RailsAdmin]: https://github.com/sferik/rails_admin
103
+ [Kaminari]: https://github.com/kaminari/kaminari
104
+ [Devise]: https://github.com/heartcombo/devise
105
+ [Sass]: https://github.com/sass/sassc-ruby
73
106
  [newsletter]: https://tinyletter.com/zachahn
74
107
  [super_demo]: https://demo-super.herokuapp.com/admin/members
75
108
  [super_demo_source]: https://github.com/zachahn/super_demo
76
- [super_professional]: https://demo-super-professional.herokuapp.com/admin/members
@@ -866,7 +866,7 @@ Released under the MIT license
866
866
  }
867
867
  }).call(this);
868
868
 
869
- },{}],"../node_modules/@stimulus/core/dist/src/event_listener.js":[function(require,module,exports) {
869
+ },{}],"../node_modules/@stimulus/core/dist/event_listener.js":[function(require,module,exports) {
870
870
  "use strict";
871
871
 
872
872
  Object.defineProperty(exports, "__esModule", {
@@ -877,18 +877,19 @@ exports.EventListener = void 0;
877
877
  var EventListener =
878
878
  /** @class */
879
879
  function () {
880
- function EventListener(eventTarget, eventName) {
880
+ function EventListener(eventTarget, eventName, eventOptions) {
881
881
  this.eventTarget = eventTarget;
882
882
  this.eventName = eventName;
883
+ this.eventOptions = eventOptions;
883
884
  this.unorderedBindings = new Set();
884
885
  }
885
886
 
886
887
  EventListener.prototype.connect = function () {
887
- this.eventTarget.addEventListener(this.eventName, this, false);
888
+ this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);
888
889
  };
889
890
 
890
891
  EventListener.prototype.disconnect = function () {
891
- this.eventTarget.removeEventListener(this.eventName, this, false);
892
+ this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);
892
893
  }; // Binding observer delegate
893
894
 
894
895
  /** @hidden */
@@ -926,7 +927,7 @@ function () {
926
927
  return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;
927
928
  });
928
929
  },
929
- enumerable: true,
930
+ enumerable: false,
930
931
  configurable: true
931
932
  });
932
933
  return EventListener;
@@ -948,7 +949,7 @@ function extendEvent(event) {
948
949
  });
949
950
  }
950
951
  }
951
- },{}],"../node_modules/@stimulus/core/dist/src/dispatcher.js":[function(require,module,exports) {
952
+ },{}],"../node_modules/@stimulus/core/dist/dispatcher.js":[function(require,module,exports) {
952
953
  "use strict";
953
954
 
954
955
  Object.defineProperty(exports, "__esModule", {
@@ -991,7 +992,7 @@ function () {
991
992
  return listeners.concat(Array.from(map.values()));
992
993
  }, []);
993
994
  },
994
- enumerable: true,
995
+ enumerable: false,
995
996
  configurable: true
996
997
  }); // Binding observer delegate
997
998
 
@@ -1018,24 +1019,26 @@ function () {
1018
1019
 
1019
1020
  Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {
1020
1021
  var eventTarget = binding.eventTarget,
1021
- eventName = binding.eventName;
1022
- return this.fetchEventListener(eventTarget, eventName);
1022
+ eventName = binding.eventName,
1023
+ eventOptions = binding.eventOptions;
1024
+ return this.fetchEventListener(eventTarget, eventName, eventOptions);
1023
1025
  };
1024
1026
 
1025
- Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {
1027
+ Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName, eventOptions) {
1026
1028
  var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
1027
- var eventListener = eventListenerMap.get(eventName);
1029
+ var cacheKey = this.cacheKey(eventName, eventOptions);
1030
+ var eventListener = eventListenerMap.get(cacheKey);
1028
1031
 
1029
1032
  if (!eventListener) {
1030
- eventListener = this.createEventListener(eventTarget, eventName);
1031
- eventListenerMap.set(eventName, eventListener);
1033
+ eventListener = this.createEventListener(eventTarget, eventName, eventOptions);
1034
+ eventListenerMap.set(cacheKey, eventListener);
1032
1035
  }
1033
1036
 
1034
1037
  return eventListener;
1035
1038
  };
1036
1039
 
1037
- Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {
1038
- var eventListener = new _event_listener.EventListener(eventTarget, eventName);
1040
+ Dispatcher.prototype.createEventListener = function (eventTarget, eventName, eventOptions) {
1041
+ var eventListener = new _event_listener.EventListener(eventTarget, eventName, eventOptions);
1039
1042
 
1040
1043
  if (this.started) {
1041
1044
  eventListener.connect();
@@ -1055,27 +1058,36 @@ function () {
1055
1058
  return eventListenerMap;
1056
1059
  };
1057
1060
 
1061
+ Dispatcher.prototype.cacheKey = function (eventName, eventOptions) {
1062
+ var parts = [eventName];
1063
+ Object.keys(eventOptions).sort().forEach(function (key) {
1064
+ parts.push("" + (eventOptions[key] ? "" : "!") + key);
1065
+ });
1066
+ return parts.join(":");
1067
+ };
1068
+
1058
1069
  return Dispatcher;
1059
1070
  }();
1060
1071
 
1061
1072
  exports.Dispatcher = Dispatcher;
1062
- },{"./event_listener":"../node_modules/@stimulus/core/dist/src/event_listener.js"}],"../node_modules/@stimulus/core/dist/src/action_descriptor.js":[function(require,module,exports) {
1073
+ },{"./event_listener":"../node_modules/@stimulus/core/dist/event_listener.js"}],"../node_modules/@stimulus/core/dist/action_descriptor.js":[function(require,module,exports) {
1063
1074
  "use strict";
1064
1075
 
1065
1076
  Object.defineProperty(exports, "__esModule", {
1066
1077
  value: true
1067
1078
  });
1068
- exports.parseDescriptorString = parseDescriptorString;
1079
+ exports.parseActionDescriptorString = parseActionDescriptorString;
1069
1080
  exports.stringifyEventTarget = stringifyEventTarget;
1070
- // capture nos.: 12 23 4 43 1 5 56 7 76
1071
- var descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;
1081
+ // capture nos.: 12 23 4 43 1 5 56 7 768 9 98
1082
+ var descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;
1072
1083
 
1073
- function parseDescriptorString(descriptorString) {
1084
+ function parseActionDescriptorString(descriptorString) {
1074
1085
  var source = descriptorString.trim();
1075
1086
  var matches = source.match(descriptorPattern) || [];
1076
1087
  return {
1077
1088
  eventTarget: parseEventTarget(matches[4]),
1078
1089
  eventName: matches[2],
1090
+ eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},
1079
1091
  identifier: matches[5],
1080
1092
  methodName: matches[7]
1081
1093
  };
@@ -1089,6 +1101,14 @@ function parseEventTarget(eventTargetName) {
1089
1101
  }
1090
1102
  }
1091
1103
 
1104
+ function parseEventOptions(eventOptions) {
1105
+ return eventOptions.split(":").reduce(function (options, token) {
1106
+ var _a;
1107
+
1108
+ return Object.assign(options, (_a = {}, _a[token.replace(/^!/, "")] = !/^!/.test(token), _a));
1109
+ }, {});
1110
+ }
1111
+
1092
1112
  function stringifyEventTarget(eventTarget) {
1093
1113
  if (eventTarget == window) {
1094
1114
  return "window";
@@ -1096,7 +1116,7 @@ function stringifyEventTarget(eventTarget) {
1096
1116
  return "document";
1097
1117
  }
1098
1118
  }
1099
- },{}],"../node_modules/@stimulus/core/dist/src/action.js":[function(require,module,exports) {
1119
+ },{}],"../node_modules/@stimulus/core/dist/action.js":[function(require,module,exports) {
1100
1120
  "use strict";
1101
1121
 
1102
1122
  Object.defineProperty(exports, "__esModule", {
@@ -1115,12 +1135,13 @@ function () {
1115
1135
  this.index = index;
1116
1136
  this.eventTarget = descriptor.eventTarget || element;
1117
1137
  this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error("missing event name");
1138
+ this.eventOptions = descriptor.eventOptions || {};
1118
1139
  this.identifier = descriptor.identifier || error("missing identifier");
1119
1140
  this.methodName = descriptor.methodName || error("missing method name");
1120
1141
  }
1121
1142
 
1122
1143
  Action.forToken = function (token) {
1123
- return new this(token.element, token.index, (0, _action_descriptor.parseDescriptorString)(token.content));
1144
+ return new this(token.element, token.index, (0, _action_descriptor.parseActionDescriptorString)(token.content));
1124
1145
  };
1125
1146
 
1126
1147
  Action.prototype.toString = function () {
@@ -1132,7 +1153,7 @@ function () {
1132
1153
  get: function () {
1133
1154
  return (0, _action_descriptor.stringifyEventTarget)(this.eventTarget);
1134
1155
  },
1135
- enumerable: true,
1156
+ enumerable: false,
1136
1157
  configurable: true
1137
1158
  });
1138
1159
  return Action;
@@ -1150,13 +1171,13 @@ var defaultEventNames = {
1150
1171
  return "submit";
1151
1172
  },
1152
1173
  "input": function (e) {
1153
- return e.getAttribute("type") == "submit" ? "click" : "change";
1174
+ return e.getAttribute("type") == "submit" ? "click" : "input";
1154
1175
  },
1155
1176
  "select": function (e) {
1156
1177
  return "change";
1157
1178
  },
1158
1179
  "textarea": function (e) {
1159
- return "change";
1180
+ return "input";
1160
1181
  }
1161
1182
  };
1162
1183
 
@@ -1171,7 +1192,7 @@ function getDefaultEventNameForElement(element) {
1171
1192
  function error(message) {
1172
1193
  throw new Error(message);
1173
1194
  }
1174
- },{"./action_descriptor":"../node_modules/@stimulus/core/dist/src/action_descriptor.js"}],"../node_modules/@stimulus/core/dist/src/binding.js":[function(require,module,exports) {
1195
+ },{"./action_descriptor":"../node_modules/@stimulus/core/dist/action_descriptor.js"}],"../node_modules/@stimulus/core/dist/binding.js":[function(require,module,exports) {
1175
1196
  "use strict";
1176
1197
 
1177
1198
  Object.defineProperty(exports, "__esModule", {
@@ -1191,21 +1212,28 @@ function () {
1191
1212
  get: function () {
1192
1213
  return this.action.index;
1193
1214
  },
1194
- enumerable: true,
1215
+ enumerable: false,
1195
1216
  configurable: true
1196
1217
  });
1197
1218
  Object.defineProperty(Binding.prototype, "eventTarget", {
1198
1219
  get: function () {
1199
1220
  return this.action.eventTarget;
1200
1221
  },
1201
- enumerable: true,
1222
+ enumerable: false,
1223
+ configurable: true
1224
+ });
1225
+ Object.defineProperty(Binding.prototype, "eventOptions", {
1226
+ get: function () {
1227
+ return this.action.eventOptions;
1228
+ },
1229
+ enumerable: false,
1202
1230
  configurable: true
1203
1231
  });
1204
1232
  Object.defineProperty(Binding.prototype, "identifier", {
1205
1233
  get: function () {
1206
1234
  return this.context.identifier;
1207
1235
  },
1208
- enumerable: true,
1236
+ enumerable: false,
1209
1237
  configurable: true
1210
1238
  });
1211
1239
 
@@ -1219,7 +1247,7 @@ function () {
1219
1247
  get: function () {
1220
1248
  return this.action.eventName;
1221
1249
  },
1222
- enumerable: true,
1250
+ enumerable: false,
1223
1251
  configurable: true
1224
1252
  });
1225
1253
  Object.defineProperty(Binding.prototype, "method", {
@@ -1232,7 +1260,7 @@ function () {
1232
1260
 
1233
1261
  throw new Error("Action \"" + this.action + "\" references undefined method \"" + this.methodName + "\"");
1234
1262
  },
1235
- enumerable: true,
1263
+ enumerable: false,
1236
1264
  configurable: true
1237
1265
  });
1238
1266
 
@@ -1265,7 +1293,7 @@ function () {
1265
1293
  } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {
1266
1294
  return this.scope.containsElement(eventTarget);
1267
1295
  } else {
1268
- return true;
1296
+ return this.scope.containsElement(this.action.element);
1269
1297
  }
1270
1298
  };
1271
1299
 
@@ -1273,35 +1301,35 @@ function () {
1273
1301
  get: function () {
1274
1302
  return this.context.controller;
1275
1303
  },
1276
- enumerable: true,
1304
+ enumerable: false,
1277
1305
  configurable: true
1278
1306
  });
1279
1307
  Object.defineProperty(Binding.prototype, "methodName", {
1280
1308
  get: function () {
1281
1309
  return this.action.methodName;
1282
1310
  },
1283
- enumerable: true,
1311
+ enumerable: false,
1284
1312
  configurable: true
1285
1313
  });
1286
1314
  Object.defineProperty(Binding.prototype, "element", {
1287
1315
  get: function () {
1288
1316
  return this.scope.element;
1289
1317
  },
1290
- enumerable: true,
1318
+ enumerable: false,
1291
1319
  configurable: true
1292
1320
  });
1293
1321
  Object.defineProperty(Binding.prototype, "scope", {
1294
1322
  get: function () {
1295
1323
  return this.context.scope;
1296
1324
  },
1297
- enumerable: true,
1325
+ enumerable: false,
1298
1326
  configurable: true
1299
1327
  });
1300
1328
  return Binding;
1301
1329
  }();
1302
1330
 
1303
1331
  exports.Binding = Binding;
1304
- },{}],"../node_modules/@stimulus/mutation-observers/dist/src/element_observer.js":[function(require,module,exports) {
1332
+ },{}],"../node_modules/@stimulus/mutation-observers/dist/element_observer.js":[function(require,module,exports) {
1305
1333
  "use strict";
1306
1334
 
1307
1335
  Object.defineProperty(exports, "__esModule", {
@@ -1479,7 +1507,7 @@ function () {
1479
1507
  }();
1480
1508
 
1481
1509
  exports.ElementObserver = ElementObserver;
1482
- },{}],"../node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js":[function(require,module,exports) {
1510
+ },{}],"../node_modules/@stimulus/mutation-observers/dist/attribute_observer.js":[function(require,module,exports) {
1483
1511
  "use strict";
1484
1512
 
1485
1513
  Object.defineProperty(exports, "__esModule", {
@@ -1502,14 +1530,14 @@ function () {
1502
1530
  get: function () {
1503
1531
  return this.elementObserver.element;
1504
1532
  },
1505
- enumerable: true,
1533
+ enumerable: false,
1506
1534
  configurable: true
1507
1535
  });
1508
1536
  Object.defineProperty(AttributeObserver.prototype, "selector", {
1509
1537
  get: function () {
1510
1538
  return "[" + this.attributeName + "]";
1511
1539
  },
1512
- enumerable: true,
1540
+ enumerable: false,
1513
1541
  configurable: true
1514
1542
  });
1515
1543
 
@@ -1529,7 +1557,7 @@ function () {
1529
1557
  get: function () {
1530
1558
  return this.elementObserver.started;
1531
1559
  },
1532
- enumerable: true,
1560
+ enumerable: false,
1533
1561
  configurable: true
1534
1562
  }); // Element observer delegate
1535
1563
 
@@ -1565,7 +1593,144 @@ function () {
1565
1593
  }();
1566
1594
 
1567
1595
  exports.AttributeObserver = AttributeObserver;
1568
- },{"./element_observer":"../node_modules/@stimulus/mutation-observers/dist/src/element_observer.js"}],"../node_modules/@stimulus/multimap/dist/src/set_operations.js":[function(require,module,exports) {
1596
+ },{"./element_observer":"../node_modules/@stimulus/mutation-observers/dist/element_observer.js"}],"../node_modules/@stimulus/mutation-observers/dist/string_map_observer.js":[function(require,module,exports) {
1597
+ "use strict";
1598
+
1599
+ Object.defineProperty(exports, "__esModule", {
1600
+ value: true
1601
+ });
1602
+ exports.StringMapObserver = void 0;
1603
+
1604
+ var StringMapObserver =
1605
+ /** @class */
1606
+ function () {
1607
+ function StringMapObserver(element, delegate) {
1608
+ var _this = this;
1609
+
1610
+ this.element = element;
1611
+ this.delegate = delegate;
1612
+ this.started = false;
1613
+ this.stringMap = new Map();
1614
+ this.mutationObserver = new MutationObserver(function (mutations) {
1615
+ return _this.processMutations(mutations);
1616
+ });
1617
+ }
1618
+
1619
+ StringMapObserver.prototype.start = function () {
1620
+ if (!this.started) {
1621
+ this.started = true;
1622
+ this.mutationObserver.observe(this.element, {
1623
+ attributes: true
1624
+ });
1625
+ this.refresh();
1626
+ }
1627
+ };
1628
+
1629
+ StringMapObserver.prototype.stop = function () {
1630
+ if (this.started) {
1631
+ this.mutationObserver.takeRecords();
1632
+ this.mutationObserver.disconnect();
1633
+ this.started = false;
1634
+ }
1635
+ };
1636
+
1637
+ StringMapObserver.prototype.refresh = function () {
1638
+ if (this.started) {
1639
+ for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {
1640
+ var attributeName = _a[_i];
1641
+ this.refreshAttribute(attributeName);
1642
+ }
1643
+ }
1644
+ }; // Mutation record processing
1645
+
1646
+
1647
+ StringMapObserver.prototype.processMutations = function (mutations) {
1648
+ if (this.started) {
1649
+ for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {
1650
+ var mutation = mutations_1[_i];
1651
+ this.processMutation(mutation);
1652
+ }
1653
+ }
1654
+ };
1655
+
1656
+ StringMapObserver.prototype.processMutation = function (mutation) {
1657
+ var attributeName = mutation.attributeName;
1658
+
1659
+ if (attributeName) {
1660
+ this.refreshAttribute(attributeName);
1661
+ }
1662
+ }; // State tracking
1663
+
1664
+
1665
+ StringMapObserver.prototype.refreshAttribute = function (attributeName) {
1666
+ var key = this.delegate.getStringMapKeyForAttribute(attributeName);
1667
+
1668
+ if (key != null) {
1669
+ if (!this.stringMap.has(attributeName)) {
1670
+ this.stringMapKeyAdded(key, attributeName);
1671
+ }
1672
+
1673
+ var value = this.element.getAttribute(attributeName);
1674
+
1675
+ if (this.stringMap.get(attributeName) != value) {
1676
+ this.stringMapValueChanged(value, key);
1677
+ }
1678
+
1679
+ if (value == null) {
1680
+ this.stringMap.delete(attributeName);
1681
+ this.stringMapKeyRemoved(key, attributeName);
1682
+ } else {
1683
+ this.stringMap.set(attributeName, value);
1684
+ }
1685
+ }
1686
+ };
1687
+
1688
+ StringMapObserver.prototype.stringMapKeyAdded = function (key, attributeName) {
1689
+ if (this.delegate.stringMapKeyAdded) {
1690
+ this.delegate.stringMapKeyAdded(key, attributeName);
1691
+ }
1692
+ };
1693
+
1694
+ StringMapObserver.prototype.stringMapValueChanged = function (value, key) {
1695
+ if (this.delegate.stringMapValueChanged) {
1696
+ this.delegate.stringMapValueChanged(value, key);
1697
+ }
1698
+ };
1699
+
1700
+ StringMapObserver.prototype.stringMapKeyRemoved = function (key, attributeName) {
1701
+ if (this.delegate.stringMapKeyRemoved) {
1702
+ this.delegate.stringMapKeyRemoved(key, attributeName);
1703
+ }
1704
+ };
1705
+
1706
+ Object.defineProperty(StringMapObserver.prototype, "knownAttributeNames", {
1707
+ get: function () {
1708
+ return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));
1709
+ },
1710
+ enumerable: false,
1711
+ configurable: true
1712
+ });
1713
+ Object.defineProperty(StringMapObserver.prototype, "currentAttributeNames", {
1714
+ get: function () {
1715
+ return Array.from(this.element.attributes).map(function (attribute) {
1716
+ return attribute.name;
1717
+ });
1718
+ },
1719
+ enumerable: false,
1720
+ configurable: true
1721
+ });
1722
+ Object.defineProperty(StringMapObserver.prototype, "recordedAttributeNames", {
1723
+ get: function () {
1724
+ return Array.from(this.stringMap.keys());
1725
+ },
1726
+ enumerable: false,
1727
+ configurable: true
1728
+ });
1729
+ return StringMapObserver;
1730
+ }();
1731
+
1732
+ exports.StringMapObserver = StringMapObserver;
1733
+ },{}],"../node_modules/@stimulus/multimap/dist/set_operations.js":[function(require,module,exports) {
1569
1734
  "use strict";
1570
1735
 
1571
1736
  Object.defineProperty(exports, "__esModule", {
@@ -1603,7 +1768,7 @@ function prune(map, key) {
1603
1768
  map.delete(key);
1604
1769
  }
1605
1770
  }
1606
- },{}],"../node_modules/@stimulus/multimap/dist/src/multimap.js":[function(require,module,exports) {
1771
+ },{}],"../node_modules/@stimulus/multimap/dist/multimap.js":[function(require,module,exports) {
1607
1772
  "use strict";
1608
1773
 
1609
1774
  Object.defineProperty(exports, "__esModule", {
@@ -1627,7 +1792,7 @@ function () {
1627
1792
  return values.concat(Array.from(set));
1628
1793
  }, []);
1629
1794
  },
1630
- enumerable: true,
1795
+ enumerable: false,
1631
1796
  configurable: true
1632
1797
  });
1633
1798
  Object.defineProperty(Multimap.prototype, "size", {
@@ -1637,7 +1802,7 @@ function () {
1637
1802
  return size + set.size;
1638
1803
  }, 0);
1639
1804
  },
1640
- enumerable: true,
1805
+ enumerable: false,
1641
1806
  configurable: true
1642
1807
  });
1643
1808
 
@@ -1686,7 +1851,7 @@ function () {
1686
1851
  }();
1687
1852
 
1688
1853
  exports.Multimap = Multimap;
1689
- },{"./set_operations":"../node_modules/@stimulus/multimap/dist/src/set_operations.js"}],"../node_modules/@stimulus/multimap/dist/src/indexed_multimap.js":[function(require,module,exports) {
1854
+ },{"./set_operations":"../node_modules/@stimulus/multimap/dist/set_operations.js"}],"../node_modules/@stimulus/multimap/dist/indexed_multimap.js":[function(require,module,exports) {
1690
1855
  "use strict";
1691
1856
 
1692
1857
  Object.defineProperty(exports, "__esModule", {
@@ -1699,12 +1864,16 @@ var _multimap = require("./multimap");
1699
1864
  var _set_operations = require("./set_operations");
1700
1865
 
1701
1866
  var __extends = void 0 && (void 0).__extends || function () {
1702
- var extendStatics = Object.setPrototypeOf || {
1703
- __proto__: []
1704
- } instanceof Array && function (d, b) {
1705
- d.__proto__ = b;
1706
- } || function (d, b) {
1707
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
1867
+ var extendStatics = function (d, b) {
1868
+ extendStatics = Object.setPrototypeOf || {
1869
+ __proto__: []
1870
+ } instanceof Array && function (d, b) {
1871
+ d.__proto__ = b;
1872
+ } || function (d, b) {
1873
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
1874
+ };
1875
+
1876
+ return extendStatics(d, b);
1708
1877
  };
1709
1878
 
1710
1879
  return function (d, b) {
@@ -1734,7 +1903,7 @@ function (_super) {
1734
1903
  get: function () {
1735
1904
  return Array.from(this.keysByValue.keys());
1736
1905
  },
1737
- enumerable: true,
1906
+ enumerable: false,
1738
1907
  configurable: true
1739
1908
  });
1740
1909
 
@@ -1763,17 +1932,31 @@ function (_super) {
1763
1932
  }(_multimap.Multimap);
1764
1933
 
1765
1934
  exports.IndexedMultimap = IndexedMultimap;
1766
- },{"./multimap":"../node_modules/@stimulus/multimap/dist/src/multimap.js","./set_operations":"../node_modules/@stimulus/multimap/dist/src/set_operations.js"}],"../node_modules/@stimulus/multimap/dist/index.js":[function(require,module,exports) {
1935
+ },{"./multimap":"../node_modules/@stimulus/multimap/dist/multimap.js","./set_operations":"../node_modules/@stimulus/multimap/dist/set_operations.js"}],"../node_modules/@stimulus/multimap/dist/index.js":[function(require,module,exports) {
1767
1936
  "use strict";
1768
1937
 
1769
1938
  Object.defineProperty(exports, "__esModule", {
1770
1939
  value: true
1771
1940
  });
1772
1941
 
1773
- var _multimap = require("./src/multimap");
1942
+ var _indexed_multimap = require("./indexed_multimap");
1943
+
1944
+ Object.keys(_indexed_multimap).forEach(function (key) {
1945
+ if (key === "default" || key === "__esModule") return;
1946
+ if (key in exports && exports[key] === _indexed_multimap[key]) return;
1947
+ Object.defineProperty(exports, key, {
1948
+ enumerable: true,
1949
+ get: function () {
1950
+ return _indexed_multimap[key];
1951
+ }
1952
+ });
1953
+ });
1954
+
1955
+ var _multimap = require("./multimap");
1774
1956
 
1775
1957
  Object.keys(_multimap).forEach(function (key) {
1776
1958
  if (key === "default" || key === "__esModule") return;
1959
+ if (key in exports && exports[key] === _multimap[key]) return;
1777
1960
  Object.defineProperty(exports, key, {
1778
1961
  enumerable: true,
1779
1962
  get: function () {
@@ -1782,18 +1965,19 @@ Object.keys(_multimap).forEach(function (key) {
1782
1965
  });
1783
1966
  });
1784
1967
 
1785
- var _indexed_multimap = require("./src/indexed_multimap");
1968
+ var _set_operations = require("./set_operations");
1786
1969
 
1787
- Object.keys(_indexed_multimap).forEach(function (key) {
1970
+ Object.keys(_set_operations).forEach(function (key) {
1788
1971
  if (key === "default" || key === "__esModule") return;
1972
+ if (key in exports && exports[key] === _set_operations[key]) return;
1789
1973
  Object.defineProperty(exports, key, {
1790
1974
  enumerable: true,
1791
1975
  get: function () {
1792
- return _indexed_multimap[key];
1976
+ return _set_operations[key];
1793
1977
  }
1794
1978
  });
1795
1979
  });
1796
- },{"./src/multimap":"../node_modules/@stimulus/multimap/dist/src/multimap.js","./src/indexed_multimap":"../node_modules/@stimulus/multimap/dist/src/indexed_multimap.js"}],"../node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js":[function(require,module,exports) {
1980
+ },{"./indexed_multimap":"../node_modules/@stimulus/multimap/dist/indexed_multimap.js","./multimap":"../node_modules/@stimulus/multimap/dist/multimap.js","./set_operations":"../node_modules/@stimulus/multimap/dist/set_operations.js"}],"../node_modules/@stimulus/mutation-observers/dist/token_list_observer.js":[function(require,module,exports) {
1797
1981
  "use strict";
1798
1982
 
1799
1983
  Object.defineProperty(exports, "__esModule", {
@@ -1818,7 +2002,7 @@ function () {
1818
2002
  get: function () {
1819
2003
  return this.attributeObserver.started;
1820
2004
  },
1821
- enumerable: true,
2005
+ enumerable: false,
1822
2006
  configurable: true
1823
2007
  });
1824
2008
 
@@ -1838,14 +2022,14 @@ function () {
1838
2022
  get: function () {
1839
2023
  return this.attributeObserver.element;
1840
2024
  },
1841
- enumerable: true,
2025
+ enumerable: false,
1842
2026
  configurable: true
1843
2027
  });
1844
2028
  Object.defineProperty(TokenListObserver.prototype, "attributeName", {
1845
2029
  get: function () {
1846
2030
  return this.attributeObserver.attributeName;
1847
2031
  },
1848
- enumerable: true,
2032
+ enumerable: false,
1849
2033
  configurable: true
1850
2034
  }); // Attribute observer delegate
1851
2035
 
@@ -1944,7 +2128,7 @@ function zip(left, right) {
1944
2128
  function tokensAreEqual(left, right) {
1945
2129
  return left && right && left.index == right.index && left.content == right.content;
1946
2130
  }
1947
- },{"./attribute_observer":"../node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","@stimulus/multimap":"../node_modules/@stimulus/multimap/dist/index.js"}],"../node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js":[function(require,module,exports) {
2131
+ },{"./attribute_observer":"../node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","@stimulus/multimap":"../node_modules/@stimulus/multimap/dist/index.js"}],"../node_modules/@stimulus/mutation-observers/dist/value_list_observer.js":[function(require,module,exports) {
1948
2132
  "use strict";
1949
2133
 
1950
2134
  Object.defineProperty(exports, "__esModule", {
@@ -1968,7 +2152,7 @@ function () {
1968
2152
  get: function () {
1969
2153
  return this.tokenListObserver.started;
1970
2154
  },
1971
- enumerable: true,
2155
+ enumerable: false,
1972
2156
  configurable: true
1973
2157
  });
1974
2158
 
@@ -1988,14 +2172,14 @@ function () {
1988
2172
  get: function () {
1989
2173
  return this.tokenListObserver.element;
1990
2174
  },
1991
- enumerable: true,
2175
+ enumerable: false,
1992
2176
  configurable: true
1993
2177
  });
1994
2178
  Object.defineProperty(ValueListObserver.prototype, "attributeName", {
1995
2179
  get: function () {
1996
2180
  return this.tokenListObserver.attributeName;
1997
2181
  },
1998
- enumerable: true,
2182
+ enumerable: false,
1999
2183
  configurable: true
2000
2184
  });
2001
2185
 
@@ -2058,17 +2242,18 @@ function () {
2058
2242
  }();
2059
2243
 
2060
2244
  exports.ValueListObserver = ValueListObserver;
2061
- },{"./token_list_observer":"../node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js"}],"../node_modules/@stimulus/mutation-observers/dist/index.js":[function(require,module,exports) {
2245
+ },{"./token_list_observer":"../node_modules/@stimulus/mutation-observers/dist/token_list_observer.js"}],"../node_modules/@stimulus/mutation-observers/dist/index.js":[function(require,module,exports) {
2062
2246
  "use strict";
2063
2247
 
2064
2248
  Object.defineProperty(exports, "__esModule", {
2065
2249
  value: true
2066
2250
  });
2067
2251
 
2068
- var _attribute_observer = require("./src/attribute_observer");
2252
+ var _attribute_observer = require("./attribute_observer");
2069
2253
 
2070
2254
  Object.keys(_attribute_observer).forEach(function (key) {
2071
2255
  if (key === "default" || key === "__esModule") return;
2256
+ if (key in exports && exports[key] === _attribute_observer[key]) return;
2072
2257
  Object.defineProperty(exports, key, {
2073
2258
  enumerable: true,
2074
2259
  get: function () {
@@ -2077,10 +2262,11 @@ Object.keys(_attribute_observer).forEach(function (key) {
2077
2262
  });
2078
2263
  });
2079
2264
 
2080
- var _element_observer = require("./src/element_observer");
2265
+ var _element_observer = require("./element_observer");
2081
2266
 
2082
2267
  Object.keys(_element_observer).forEach(function (key) {
2083
2268
  if (key === "default" || key === "__esModule") return;
2269
+ if (key in exports && exports[key] === _element_observer[key]) return;
2084
2270
  Object.defineProperty(exports, key, {
2085
2271
  enumerable: true,
2086
2272
  get: function () {
@@ -2089,10 +2275,24 @@ Object.keys(_element_observer).forEach(function (key) {
2089
2275
  });
2090
2276
  });
2091
2277
 
2092
- var _token_list_observer = require("./src/token_list_observer");
2278
+ var _string_map_observer = require("./string_map_observer");
2279
+
2280
+ Object.keys(_string_map_observer).forEach(function (key) {
2281
+ if (key === "default" || key === "__esModule") return;
2282
+ if (key in exports && exports[key] === _string_map_observer[key]) return;
2283
+ Object.defineProperty(exports, key, {
2284
+ enumerable: true,
2285
+ get: function () {
2286
+ return _string_map_observer[key];
2287
+ }
2288
+ });
2289
+ });
2290
+
2291
+ var _token_list_observer = require("./token_list_observer");
2093
2292
 
2094
2293
  Object.keys(_token_list_observer).forEach(function (key) {
2095
2294
  if (key === "default" || key === "__esModule") return;
2295
+ if (key in exports && exports[key] === _token_list_observer[key]) return;
2096
2296
  Object.defineProperty(exports, key, {
2097
2297
  enumerable: true,
2098
2298
  get: function () {
@@ -2101,10 +2301,11 @@ Object.keys(_token_list_observer).forEach(function (key) {
2101
2301
  });
2102
2302
  });
2103
2303
 
2104
- var _value_list_observer = require("./src/value_list_observer");
2304
+ var _value_list_observer = require("./value_list_observer");
2105
2305
 
2106
2306
  Object.keys(_value_list_observer).forEach(function (key) {
2107
2307
  if (key === "default" || key === "__esModule") return;
2308
+ if (key in exports && exports[key] === _value_list_observer[key]) return;
2108
2309
  Object.defineProperty(exports, key, {
2109
2310
  enumerable: true,
2110
2311
  get: function () {
@@ -2112,7 +2313,7 @@ Object.keys(_value_list_observer).forEach(function (key) {
2112
2313
  }
2113
2314
  });
2114
2315
  });
2115
- },{"./src/attribute_observer":"../node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","./src/element_observer":"../node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","./src/token_list_observer":"../node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","./src/value_list_observer":"../node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js"}],"../node_modules/@stimulus/core/dist/src/binding_observer.js":[function(require,module,exports) {
2316
+ },{"./attribute_observer":"../node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","./element_observer":"../node_modules/@stimulus/mutation-observers/dist/element_observer.js","./string_map_observer":"../node_modules/@stimulus/mutation-observers/dist/string_map_observer.js","./token_list_observer":"../node_modules/@stimulus/mutation-observers/dist/token_list_observer.js","./value_list_observer":"../node_modules/@stimulus/mutation-observers/dist/value_list_observer.js"}],"../node_modules/@stimulus/core/dist/binding_observer.js":[function(require,module,exports) {
2116
2317
  "use strict";
2117
2318
 
2118
2319
  Object.defineProperty(exports, "__esModule", {
@@ -2154,35 +2355,35 @@ function () {
2154
2355
  get: function () {
2155
2356
  return this.context.element;
2156
2357
  },
2157
- enumerable: true,
2358
+ enumerable: false,
2158
2359
  configurable: true
2159
2360
  });
2160
2361
  Object.defineProperty(BindingObserver.prototype, "identifier", {
2161
2362
  get: function () {
2162
2363
  return this.context.identifier;
2163
2364
  },
2164
- enumerable: true,
2365
+ enumerable: false,
2165
2366
  configurable: true
2166
2367
  });
2167
2368
  Object.defineProperty(BindingObserver.prototype, "actionAttribute", {
2168
2369
  get: function () {
2169
2370
  return this.schema.actionAttribute;
2170
2371
  },
2171
- enumerable: true,
2372
+ enumerable: false,
2172
2373
  configurable: true
2173
2374
  });
2174
2375
  Object.defineProperty(BindingObserver.prototype, "schema", {
2175
2376
  get: function () {
2176
2377
  return this.context.schema;
2177
2378
  },
2178
- enumerable: true,
2379
+ enumerable: false,
2179
2380
  configurable: true
2180
2381
  });
2181
2382
  Object.defineProperty(BindingObserver.prototype, "bindings", {
2182
2383
  get: function () {
2183
2384
  return Array.from(this.bindingsByAction.values());
2184
2385
  },
2185
- enumerable: true,
2386
+ enumerable: false,
2186
2387
  configurable: true
2187
2388
  });
2188
2389
 
@@ -2231,7 +2432,98 @@ function () {
2231
2432
  }();
2232
2433
 
2233
2434
  exports.BindingObserver = BindingObserver;
2234
- },{"./action":"../node_modules/@stimulus/core/dist/src/action.js","./binding":"../node_modules/@stimulus/core/dist/src/binding.js","@stimulus/mutation-observers":"../node_modules/@stimulus/mutation-observers/dist/index.js"}],"../node_modules/@stimulus/core/dist/src/context.js":[function(require,module,exports) {
2435
+ },{"./action":"../node_modules/@stimulus/core/dist/action.js","./binding":"../node_modules/@stimulus/core/dist/binding.js","@stimulus/mutation-observers":"../node_modules/@stimulus/mutation-observers/dist/index.js"}],"../node_modules/@stimulus/core/dist/value_observer.js":[function(require,module,exports) {
2436
+ "use strict";
2437
+
2438
+ Object.defineProperty(exports, "__esModule", {
2439
+ value: true
2440
+ });
2441
+ exports.ValueObserver = void 0;
2442
+
2443
+ var _mutationObservers = require("@stimulus/mutation-observers");
2444
+
2445
+ var ValueObserver =
2446
+ /** @class */
2447
+ function () {
2448
+ function ValueObserver(context, receiver) {
2449
+ this.context = context;
2450
+ this.receiver = receiver;
2451
+ this.stringMapObserver = new _mutationObservers.StringMapObserver(this.element, this);
2452
+ this.valueDescriptorMap = this.controller.valueDescriptorMap;
2453
+ this.invokeChangedCallbacksForDefaultValues();
2454
+ }
2455
+
2456
+ ValueObserver.prototype.start = function () {
2457
+ this.stringMapObserver.start();
2458
+ };
2459
+
2460
+ ValueObserver.prototype.stop = function () {
2461
+ this.stringMapObserver.stop();
2462
+ };
2463
+
2464
+ Object.defineProperty(ValueObserver.prototype, "element", {
2465
+ get: function () {
2466
+ return this.context.element;
2467
+ },
2468
+ enumerable: false,
2469
+ configurable: true
2470
+ });
2471
+ Object.defineProperty(ValueObserver.prototype, "controller", {
2472
+ get: function () {
2473
+ return this.context.controller;
2474
+ },
2475
+ enumerable: false,
2476
+ configurable: true
2477
+ }); // String map observer delegate
2478
+
2479
+ ValueObserver.prototype.getStringMapKeyForAttribute = function (attributeName) {
2480
+ if (attributeName in this.valueDescriptorMap) {
2481
+ return this.valueDescriptorMap[attributeName].name;
2482
+ }
2483
+ };
2484
+
2485
+ ValueObserver.prototype.stringMapValueChanged = function (attributeValue, name) {
2486
+ this.invokeChangedCallbackForValue(name);
2487
+ };
2488
+
2489
+ ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function () {
2490
+ for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {
2491
+ var _b = _a[_i],
2492
+ key = _b.key,
2493
+ name_1 = _b.name,
2494
+ defaultValue = _b.defaultValue;
2495
+
2496
+ if (defaultValue != undefined && !this.controller.data.has(key)) {
2497
+ this.invokeChangedCallbackForValue(name_1);
2498
+ }
2499
+ }
2500
+ };
2501
+
2502
+ ValueObserver.prototype.invokeChangedCallbackForValue = function (name) {
2503
+ var methodName = name + "Changed";
2504
+ var method = this.receiver[methodName];
2505
+
2506
+ if (typeof method == "function") {
2507
+ var value = this.receiver[name];
2508
+ method.call(this.receiver, value);
2509
+ }
2510
+ };
2511
+
2512
+ Object.defineProperty(ValueObserver.prototype, "valueDescriptors", {
2513
+ get: function () {
2514
+ var valueDescriptorMap = this.valueDescriptorMap;
2515
+ return Object.keys(valueDescriptorMap).map(function (key) {
2516
+ return valueDescriptorMap[key];
2517
+ });
2518
+ },
2519
+ enumerable: false,
2520
+ configurable: true
2521
+ });
2522
+ return ValueObserver;
2523
+ }();
2524
+
2525
+ exports.ValueObserver = ValueObserver;
2526
+ },{"@stimulus/mutation-observers":"../node_modules/@stimulus/mutation-observers/dist/index.js"}],"../node_modules/@stimulus/core/dist/context.js":[function(require,module,exports) {
2235
2527
  "use strict";
2236
2528
 
2237
2529
  Object.defineProperty(exports, "__esModule", {
@@ -2241,6 +2533,8 @@ exports.Context = void 0;
2241
2533
 
2242
2534
  var _binding_observer = require("./binding_observer");
2243
2535
 
2536
+ var _value_observer = require("./value_observer");
2537
+
2244
2538
  var Context =
2245
2539
  /** @class */
2246
2540
  function () {
@@ -2249,6 +2543,7 @@ function () {
2249
2543
  this.scope = scope;
2250
2544
  this.controller = new module.controllerConstructor(this);
2251
2545
  this.bindingObserver = new _binding_observer.BindingObserver(this, this.dispatcher);
2546
+ this.valueObserver = new _value_observer.ValueObserver(this, this.controller);
2252
2547
 
2253
2548
  try {
2254
2549
  this.controller.initialize();
@@ -2259,6 +2554,7 @@ function () {
2259
2554
 
2260
2555
  Context.prototype.connect = function () {
2261
2556
  this.bindingObserver.start();
2557
+ this.valueObserver.start();
2262
2558
 
2263
2559
  try {
2264
2560
  this.controller.connect();
@@ -2274,6 +2570,7 @@ function () {
2274
2570
  this.handleError(error, "disconnecting controller");
2275
2571
  }
2276
2572
 
2573
+ this.valueObserver.stop();
2277
2574
  this.bindingObserver.stop();
2278
2575
  };
2279
2576
 
@@ -2281,42 +2578,42 @@ function () {
2281
2578
  get: function () {
2282
2579
  return this.module.application;
2283
2580
  },
2284
- enumerable: true,
2581
+ enumerable: false,
2285
2582
  configurable: true
2286
2583
  });
2287
2584
  Object.defineProperty(Context.prototype, "identifier", {
2288
2585
  get: function () {
2289
2586
  return this.module.identifier;
2290
2587
  },
2291
- enumerable: true,
2588
+ enumerable: false,
2292
2589
  configurable: true
2293
2590
  });
2294
2591
  Object.defineProperty(Context.prototype, "schema", {
2295
2592
  get: function () {
2296
2593
  return this.application.schema;
2297
2594
  },
2298
- enumerable: true,
2595
+ enumerable: false,
2299
2596
  configurable: true
2300
2597
  });
2301
2598
  Object.defineProperty(Context.prototype, "dispatcher", {
2302
2599
  get: function () {
2303
2600
  return this.application.dispatcher;
2304
2601
  },
2305
- enumerable: true,
2602
+ enumerable: false,
2306
2603
  configurable: true
2307
2604
  });
2308
2605
  Object.defineProperty(Context.prototype, "element", {
2309
2606
  get: function () {
2310
2607
  return this.scope.element;
2311
2608
  },
2312
- enumerable: true,
2609
+ enumerable: false,
2313
2610
  configurable: true
2314
2611
  });
2315
2612
  Object.defineProperty(Context.prototype, "parentElement", {
2316
2613
  get: function () {
2317
2614
  return this.element.parentElement;
2318
2615
  },
2319
- enumerable: true,
2616
+ enumerable: false,
2320
2617
  configurable: true
2321
2618
  }); // Error handling
2322
2619
 
@@ -2342,21 +2639,76 @@ function () {
2342
2639
  }();
2343
2640
 
2344
2641
  exports.Context = Context;
2345
- },{"./binding_observer":"../node_modules/@stimulus/core/dist/src/binding_observer.js"}],"../node_modules/@stimulus/core/dist/src/definition.js":[function(require,module,exports) {
2642
+ },{"./binding_observer":"../node_modules/@stimulus/core/dist/binding_observer.js","./value_observer":"../node_modules/@stimulus/core/dist/value_observer.js"}],"../node_modules/@stimulus/core/dist/inheritable_statics.js":[function(require,module,exports) {
2346
2643
  "use strict";
2347
2644
 
2348
2645
  Object.defineProperty(exports, "__esModule", {
2349
2646
  value: true
2350
2647
  });
2351
- exports.blessDefinition = blessDefinition;
2648
+ exports.readInheritableStaticArrayValues = readInheritableStaticArrayValues;
2649
+ exports.readInheritableStaticObjectPairs = readInheritableStaticObjectPairs;
2650
+
2651
+ function readInheritableStaticArrayValues(constructor, propertyName) {
2652
+ var ancestors = getAncestorsForConstructor(constructor);
2653
+ return Array.from(ancestors.reduce(function (values, constructor) {
2654
+ getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {
2655
+ return values.add(name);
2656
+ });
2657
+ return values;
2658
+ }, new Set()));
2659
+ }
2660
+
2661
+ function readInheritableStaticObjectPairs(constructor, propertyName) {
2662
+ var ancestors = getAncestorsForConstructor(constructor);
2663
+ return ancestors.reduce(function (pairs, constructor) {
2664
+ pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));
2665
+ return pairs;
2666
+ }, []);
2667
+ }
2668
+
2669
+ function getAncestorsForConstructor(constructor) {
2670
+ var ancestors = [];
2671
+
2672
+ while (constructor) {
2673
+ ancestors.push(constructor);
2674
+ constructor = Object.getPrototypeOf(constructor);
2675
+ }
2676
+
2677
+ return ancestors.reverse();
2678
+ }
2679
+
2680
+ function getOwnStaticArrayValues(constructor, propertyName) {
2681
+ var definition = constructor[propertyName];
2682
+ return Array.isArray(definition) ? definition : [];
2683
+ }
2684
+
2685
+ function getOwnStaticObjectPairs(constructor, propertyName) {
2686
+ var definition = constructor[propertyName];
2687
+ return definition ? Object.keys(definition).map(function (key) {
2688
+ return [key, definition[key]];
2689
+ }) : [];
2690
+ }
2691
+ },{}],"../node_modules/@stimulus/core/dist/blessing.js":[function(require,module,exports) {
2692
+ "use strict";
2693
+
2694
+ Object.defineProperty(exports, "__esModule", {
2695
+ value: true
2696
+ });
2697
+ exports.bless = bless;
2698
+
2699
+ var _inheritable_statics = require("./inheritable_statics");
2352
2700
 
2353
2701
  var __extends = void 0 && (void 0).__extends || function () {
2354
- var extendStatics = Object.setPrototypeOf || {
2355
- __proto__: []
2356
- } instanceof Array && function (d, b) {
2357
- d.__proto__ = b;
2358
- } || function (d, b) {
2359
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
2702
+ var extendStatics = function (d, b) {
2703
+ extendStatics = Object.setPrototypeOf || {
2704
+ __proto__: []
2705
+ } instanceof Array && function (d, b) {
2706
+ d.__proto__ = b;
2707
+ } || function (d, b) {
2708
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
2709
+ };
2710
+
2711
+ return extendStatics(d, b);
2360
2712
  };
2361
2713
 
2362
2714
  return function (d, b) {
@@ -2369,37 +2721,96 @@ var __extends = void 0 && (void 0).__extends || function () {
2369
2721
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2370
2722
  };
2371
2723
  }();
2372
- /** @hidden */
2373
2724
 
2725
+ var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
2726
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
2374
2727
 
2375
- function blessDefinition(definition) {
2376
- return {
2377
- identifier: definition.identifier,
2378
- controllerConstructor: blessControllerConstructor(definition.controllerConstructor)
2379
- };
2728
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];
2729
+
2730
+ return r;
2731
+ };
2732
+
2733
+ /** @hidden */
2734
+ function bless(constructor) {
2735
+ return shadow(constructor, getBlessedProperties(constructor));
2380
2736
  }
2381
2737
 
2382
- function blessControllerConstructor(controllerConstructor) {
2383
- var constructor = extend(controllerConstructor);
2384
- constructor.bless();
2385
- return constructor;
2738
+ function shadow(constructor, properties) {
2739
+ var shadowConstructor = extend(constructor);
2740
+ var shadowProperties = getShadowProperties(constructor.prototype, properties);
2741
+ Object.defineProperties(shadowConstructor.prototype, shadowProperties);
2742
+ return shadowConstructor;
2386
2743
  }
2387
2744
 
2745
+ function getBlessedProperties(constructor) {
2746
+ var blessings = (0, _inheritable_statics.readInheritableStaticArrayValues)(constructor, "blessings");
2747
+ return blessings.reduce(function (blessedProperties, blessing) {
2748
+ var properties = blessing(constructor);
2749
+
2750
+ for (var key in properties) {
2751
+ var descriptor = blessedProperties[key] || {};
2752
+ blessedProperties[key] = Object.assign(descriptor, properties[key]);
2753
+ }
2754
+
2755
+ return blessedProperties;
2756
+ }, {});
2757
+ }
2758
+
2759
+ function getShadowProperties(prototype, properties) {
2760
+ return getOwnKeys(properties).reduce(function (shadowProperties, key) {
2761
+ var _a;
2762
+
2763
+ var descriptor = getShadowedDescriptor(prototype, properties, key);
2764
+
2765
+ if (descriptor) {
2766
+ Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));
2767
+ }
2768
+
2769
+ return shadowProperties;
2770
+ }, {});
2771
+ }
2772
+
2773
+ function getShadowedDescriptor(prototype, properties, key) {
2774
+ var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);
2775
+ var shadowedByValue = shadowingDescriptor && "value" in shadowingDescriptor;
2776
+
2777
+ if (!shadowedByValue) {
2778
+ var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;
2779
+
2780
+ if (shadowingDescriptor) {
2781
+ descriptor.get = shadowingDescriptor.get || descriptor.get;
2782
+ descriptor.set = shadowingDescriptor.set || descriptor.set;
2783
+ }
2784
+
2785
+ return descriptor;
2786
+ }
2787
+ }
2788
+
2789
+ var getOwnKeys = function () {
2790
+ if (typeof Object.getOwnPropertySymbols == "function") {
2791
+ return function (object) {
2792
+ return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object));
2793
+ };
2794
+ } else {
2795
+ return Object.getOwnPropertyNames;
2796
+ }
2797
+ }();
2798
+
2388
2799
  var extend = function () {
2389
2800
  function extendWithReflect(constructor) {
2390
- function Controller() {
2391
- var _newTarget = this && this instanceof Controller ? this.constructor : void 0;
2801
+ function extended() {
2802
+ var _newTarget = this && this instanceof extended ? this.constructor : void 0;
2392
2803
 
2393
2804
  return Reflect.construct(constructor, arguments, _newTarget);
2394
2805
  }
2395
2806
 
2396
- Controller.prototype = Object.create(constructor.prototype, {
2807
+ extended.prototype = Object.create(constructor.prototype, {
2397
2808
  constructor: {
2398
- value: Controller
2809
+ value: extended
2399
2810
  }
2400
2811
  });
2401
- Reflect.setPrototypeOf(Controller, constructor);
2402
- return Controller;
2812
+ Reflect.setPrototypeOf(extended, constructor);
2813
+ return extended;
2403
2814
  }
2404
2815
 
2405
2816
  function testReflectExtension() {
@@ -2422,19 +2833,36 @@ var extend = function () {
2422
2833
  return (
2423
2834
  /** @class */
2424
2835
  function (_super) {
2425
- __extends(Controller, _super);
2836
+ __extends(extended, _super);
2426
2837
 
2427
- function Controller() {
2838
+ function extended() {
2428
2839
  return _super !== null && _super.apply(this, arguments) || this;
2429
2840
  }
2430
2841
 
2431
- return Controller;
2842
+ return extended;
2432
2843
  }(constructor)
2433
2844
  );
2434
2845
  };
2435
2846
  }
2436
2847
  }();
2437
- },{}],"../node_modules/@stimulus/core/dist/src/module.js":[function(require,module,exports) {
2848
+ },{"./inheritable_statics":"../node_modules/@stimulus/core/dist/inheritable_statics.js"}],"../node_modules/@stimulus/core/dist/definition.js":[function(require,module,exports) {
2849
+ "use strict";
2850
+
2851
+ Object.defineProperty(exports, "__esModule", {
2852
+ value: true
2853
+ });
2854
+ exports.blessDefinition = blessDefinition;
2855
+
2856
+ var _blessing = require("./blessing");
2857
+
2858
+ /** @hidden */
2859
+ function blessDefinition(definition) {
2860
+ return {
2861
+ identifier: definition.identifier,
2862
+ controllerConstructor: (0, _blessing.bless)(definition.controllerConstructor)
2863
+ };
2864
+ }
2865
+ },{"./blessing":"../node_modules/@stimulus/core/dist/blessing.js"}],"../node_modules/@stimulus/core/dist/module.js":[function(require,module,exports) {
2438
2866
  "use strict";
2439
2867
 
2440
2868
  Object.defineProperty(exports, "__esModule", {
@@ -2460,21 +2888,21 @@ function () {
2460
2888
  get: function () {
2461
2889
  return this.definition.identifier;
2462
2890
  },
2463
- enumerable: true,
2891
+ enumerable: false,
2464
2892
  configurable: true
2465
2893
  });
2466
2894
  Object.defineProperty(Module.prototype, "controllerConstructor", {
2467
2895
  get: function () {
2468
2896
  return this.definition.controllerConstructor;
2469
2897
  },
2470
- enumerable: true,
2898
+ enumerable: false,
2471
2899
  configurable: true
2472
2900
  });
2473
2901
  Object.defineProperty(Module.prototype, "contexts", {
2474
2902
  get: function () {
2475
2903
  return Array.from(this.connectedContexts);
2476
2904
  },
2477
- enumerable: true,
2905
+ enumerable: false,
2478
2906
  configurable: true
2479
2907
  });
2480
2908
 
@@ -2508,7 +2936,74 @@ function () {
2508
2936
  }();
2509
2937
 
2510
2938
  exports.Module = Module;
2511
- },{"./context":"../node_modules/@stimulus/core/dist/src/context.js","./definition":"../node_modules/@stimulus/core/dist/src/definition.js"}],"../node_modules/@stimulus/core/dist/src/data_map.js":[function(require,module,exports) {
2939
+ },{"./context":"../node_modules/@stimulus/core/dist/context.js","./definition":"../node_modules/@stimulus/core/dist/definition.js"}],"../node_modules/@stimulus/core/dist/class_map.js":[function(require,module,exports) {
2940
+ "use strict";
2941
+
2942
+ Object.defineProperty(exports, "__esModule", {
2943
+ value: true
2944
+ });
2945
+ exports.ClassMap = void 0;
2946
+
2947
+ var ClassMap =
2948
+ /** @class */
2949
+ function () {
2950
+ function ClassMap(scope) {
2951
+ this.scope = scope;
2952
+ }
2953
+
2954
+ ClassMap.prototype.has = function (name) {
2955
+ return this.data.has(this.getDataKey(name));
2956
+ };
2957
+
2958
+ ClassMap.prototype.get = function (name) {
2959
+ return this.data.get(this.getDataKey(name));
2960
+ };
2961
+
2962
+ ClassMap.prototype.getAttributeName = function (name) {
2963
+ return this.data.getAttributeNameForKey(this.getDataKey(name));
2964
+ };
2965
+
2966
+ ClassMap.prototype.getDataKey = function (name) {
2967
+ return name + "-class";
2968
+ };
2969
+
2970
+ Object.defineProperty(ClassMap.prototype, "data", {
2971
+ get: function () {
2972
+ return this.scope.data;
2973
+ },
2974
+ enumerable: false,
2975
+ configurable: true
2976
+ });
2977
+ return ClassMap;
2978
+ }();
2979
+
2980
+ exports.ClassMap = ClassMap;
2981
+ },{}],"../node_modules/@stimulus/core/dist/string_helpers.js":[function(require,module,exports) {
2982
+ "use strict";
2983
+
2984
+ Object.defineProperty(exports, "__esModule", {
2985
+ value: true
2986
+ });
2987
+ exports.camelize = camelize;
2988
+ exports.capitalize = capitalize;
2989
+ exports.dasherize = dasherize;
2990
+
2991
+ function camelize(value) {
2992
+ return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {
2993
+ return char.toUpperCase();
2994
+ });
2995
+ }
2996
+
2997
+ function capitalize(value) {
2998
+ return value.charAt(0).toUpperCase() + value.slice(1);
2999
+ }
3000
+
3001
+ function dasherize(value) {
3002
+ return value.replace(/([A-Z])/g, function (_, char) {
3003
+ return "-" + char.toLowerCase();
3004
+ });
3005
+ }
3006
+ },{}],"../node_modules/@stimulus/core/dist/data_map.js":[function(require,module,exports) {
2512
3007
  "use strict";
2513
3008
 
2514
3009
  Object.defineProperty(exports, "__esModule", {
@@ -2516,6 +3011,8 @@ Object.defineProperty(exports, "__esModule", {
2516
3011
  });
2517
3012
  exports.DataMap = void 0;
2518
3013
 
3014
+ var _string_helpers = require("./string_helpers");
3015
+
2519
3016
  var DataMap =
2520
3017
  /** @class */
2521
3018
  function () {
@@ -2527,58 +3024,86 @@ function () {
2527
3024
  get: function () {
2528
3025
  return this.scope.element;
2529
3026
  },
2530
- enumerable: true,
3027
+ enumerable: false,
2531
3028
  configurable: true
2532
3029
  });
2533
3030
  Object.defineProperty(DataMap.prototype, "identifier", {
2534
3031
  get: function () {
2535
3032
  return this.scope.identifier;
2536
3033
  },
2537
- enumerable: true,
3034
+ enumerable: false,
2538
3035
  configurable: true
2539
3036
  });
2540
3037
 
2541
3038
  DataMap.prototype.get = function (key) {
2542
- key = this.getFormattedKey(key);
2543
- return this.element.getAttribute(key);
3039
+ var name = this.getAttributeNameForKey(key);
3040
+ return this.element.getAttribute(name);
2544
3041
  };
2545
3042
 
2546
3043
  DataMap.prototype.set = function (key, value) {
2547
- key = this.getFormattedKey(key);
2548
- this.element.setAttribute(key, value);
3044
+ var name = this.getAttributeNameForKey(key);
3045
+ this.element.setAttribute(name, value);
2549
3046
  return this.get(key);
2550
3047
  };
2551
3048
 
2552
3049
  DataMap.prototype.has = function (key) {
2553
- key = this.getFormattedKey(key);
2554
- return this.element.hasAttribute(key);
3050
+ var name = this.getAttributeNameForKey(key);
3051
+ return this.element.hasAttribute(name);
2555
3052
  };
2556
3053
 
2557
3054
  DataMap.prototype.delete = function (key) {
2558
3055
  if (this.has(key)) {
2559
- key = this.getFormattedKey(key);
2560
- this.element.removeAttribute(key);
3056
+ var name_1 = this.getAttributeNameForKey(key);
3057
+ this.element.removeAttribute(name_1);
2561
3058
  return true;
2562
3059
  } else {
2563
3060
  return false;
2564
3061
  }
2565
3062
  };
2566
3063
 
2567
- DataMap.prototype.getFormattedKey = function (key) {
2568
- return "data-" + this.identifier + "-" + dasherize(key);
3064
+ DataMap.prototype.getAttributeNameForKey = function (key) {
3065
+ return "data-" + this.identifier + "-" + (0, _string_helpers.dasherize)(key);
2569
3066
  };
2570
3067
 
2571
3068
  return DataMap;
2572
3069
  }();
2573
3070
 
2574
3071
  exports.DataMap = DataMap;
3072
+ },{"./string_helpers":"../node_modules/@stimulus/core/dist/string_helpers.js"}],"../node_modules/@stimulus/core/dist/guide.js":[function(require,module,exports) {
3073
+ "use strict";
2575
3074
 
2576
- function dasherize(value) {
2577
- return value.replace(/([A-Z])/g, function (_, char) {
2578
- return "-" + char.toLowerCase();
2579
- });
2580
- }
2581
- },{}],"../node_modules/@stimulus/core/dist/src/selectors.js":[function(require,module,exports) {
3075
+ Object.defineProperty(exports, "__esModule", {
3076
+ value: true
3077
+ });
3078
+ exports.Guide = void 0;
3079
+
3080
+ var Guide =
3081
+ /** @class */
3082
+ function () {
3083
+ function Guide(logger) {
3084
+ this.warnedKeysByObject = new WeakMap();
3085
+ this.logger = logger;
3086
+ }
3087
+
3088
+ Guide.prototype.warn = function (object, key, message) {
3089
+ var warnedKeys = this.warnedKeysByObject.get(object);
3090
+
3091
+ if (!warnedKeys) {
3092
+ warnedKeys = new Set();
3093
+ this.warnedKeysByObject.set(object, warnedKeys);
3094
+ }
3095
+
3096
+ if (!warnedKeys.has(key)) {
3097
+ warnedKeys.add(key);
3098
+ this.logger.warn(message, object);
3099
+ }
3100
+ };
3101
+
3102
+ return Guide;
3103
+ }();
3104
+
3105
+ exports.Guide = Guide;
3106
+ },{}],"../node_modules/@stimulus/core/dist/selectors.js":[function(require,module,exports) {
2582
3107
  "use strict";
2583
3108
 
2584
3109
  Object.defineProperty(exports, "__esModule", {
@@ -2590,7 +3115,7 @@ exports.attributeValueContainsToken = attributeValueContainsToken;
2590
3115
  function attributeValueContainsToken(attributeName, token) {
2591
3116
  return "[" + attributeName + "~=\"" + token + "\"]";
2592
3117
  }
2593
- },{}],"../node_modules/@stimulus/core/dist/src/target_set.js":[function(require,module,exports) {
3118
+ },{}],"../node_modules/@stimulus/core/dist/target_set.js":[function(require,module,exports) {
2594
3119
  "use strict";
2595
3120
 
2596
3121
  Object.defineProperty(exports, "__esModule", {
@@ -2600,6 +3125,14 @@ exports.TargetSet = void 0;
2600
3125
 
2601
3126
  var _selectors = require("./selectors");
2602
3127
 
3128
+ var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
3129
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
3130
+
3131
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];
3132
+
3133
+ return r;
3134
+ };
3135
+
2603
3136
  var TargetSet =
2604
3137
  /** @class */
2605
3138
  function () {
@@ -2611,21 +3144,21 @@ function () {
2611
3144
  get: function () {
2612
3145
  return this.scope.element;
2613
3146
  },
2614
- enumerable: true,
3147
+ enumerable: false,
2615
3148
  configurable: true
2616
3149
  });
2617
3150
  Object.defineProperty(TargetSet.prototype, "identifier", {
2618
3151
  get: function () {
2619
3152
  return this.scope.identifier;
2620
3153
  },
2621
- enumerable: true,
3154
+ enumerable: false,
2622
3155
  configurable: true
2623
3156
  });
2624
3157
  Object.defineProperty(TargetSet.prototype, "schema", {
2625
3158
  get: function () {
2626
3159
  return this.scope.schema;
2627
3160
  },
2628
- enumerable: true,
3161
+ enumerable: false,
2629
3162
  configurable: true
2630
3163
  });
2631
3164
 
@@ -2634,45 +3167,89 @@ function () {
2634
3167
  };
2635
3168
 
2636
3169
  TargetSet.prototype.find = function () {
3170
+ var _this = this;
3171
+
2637
3172
  var targetNames = [];
2638
3173
 
2639
3174
  for (var _i = 0; _i < arguments.length; _i++) {
2640
3175
  targetNames[_i] = arguments[_i];
2641
3176
  }
2642
3177
 
2643
- var selector = this.getSelectorForTargetNames(targetNames);
2644
- return this.scope.findElement(selector);
3178
+ return targetNames.reduce(function (target, targetName) {
3179
+ return target || _this.findTarget(targetName) || _this.findLegacyTarget(targetName);
3180
+ }, undefined);
2645
3181
  };
2646
3182
 
2647
3183
  TargetSet.prototype.findAll = function () {
3184
+ var _this = this;
3185
+
2648
3186
  var targetNames = [];
2649
3187
 
2650
3188
  for (var _i = 0; _i < arguments.length; _i++) {
2651
3189
  targetNames[_i] = arguments[_i];
2652
3190
  }
2653
3191
 
2654
- var selector = this.getSelectorForTargetNames(targetNames);
3192
+ return targetNames.reduce(function (targets, targetName) {
3193
+ return __spreadArrays(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName));
3194
+ }, []);
3195
+ };
3196
+
3197
+ TargetSet.prototype.findTarget = function (targetName) {
3198
+ var selector = this.getSelectorForTargetName(targetName);
3199
+ return this.scope.findElement(selector);
3200
+ };
3201
+
3202
+ TargetSet.prototype.findAllTargets = function (targetName) {
3203
+ var selector = this.getSelectorForTargetName(targetName);
2655
3204
  return this.scope.findAllElements(selector);
2656
3205
  };
2657
3206
 
2658
- TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {
3207
+ TargetSet.prototype.getSelectorForTargetName = function (targetName) {
3208
+ var attributeName = "data-" + this.identifier + "-target";
3209
+ return (0, _selectors.attributeValueContainsToken)(attributeName, targetName);
3210
+ };
3211
+
3212
+ TargetSet.prototype.findLegacyTarget = function (targetName) {
3213
+ var selector = this.getLegacySelectorForTargetName(targetName);
3214
+ return this.deprecate(this.scope.findElement(selector), targetName);
3215
+ };
3216
+
3217
+ TargetSet.prototype.findAllLegacyTargets = function (targetName) {
2659
3218
  var _this = this;
2660
3219
 
2661
- return targetNames.map(function (targetName) {
2662
- return _this.getSelectorForTargetName(targetName);
2663
- }).join(", ");
3220
+ var selector = this.getLegacySelectorForTargetName(targetName);
3221
+ return this.scope.findAllElements(selector).map(function (element) {
3222
+ return _this.deprecate(element, targetName);
3223
+ });
2664
3224
  };
2665
3225
 
2666
- TargetSet.prototype.getSelectorForTargetName = function (targetName) {
3226
+ TargetSet.prototype.getLegacySelectorForTargetName = function (targetName) {
2667
3227
  var targetDescriptor = this.identifier + "." + targetName;
2668
3228
  return (0, _selectors.attributeValueContainsToken)(this.schema.targetAttribute, targetDescriptor);
2669
3229
  };
2670
3230
 
3231
+ TargetSet.prototype.deprecate = function (element, targetName) {
3232
+ if (element) {
3233
+ var identifier = this.identifier;
3234
+ var attributeName = this.schema.targetAttribute;
3235
+ this.guide.warn(element, "target:" + targetName, "Please replace " + attributeName + "=\"" + identifier + "." + targetName + "\" with data-" + identifier + "-target=\"" + targetName + "\". " + ("The " + attributeName + " attribute is deprecated and will be removed in a future version of Stimulus."));
3236
+ }
3237
+
3238
+ return element;
3239
+ };
3240
+
3241
+ Object.defineProperty(TargetSet.prototype, "guide", {
3242
+ get: function () {
3243
+ return this.scope.guide;
3244
+ },
3245
+ enumerable: false,
3246
+ configurable: true
3247
+ });
2671
3248
  return TargetSet;
2672
3249
  }();
2673
3250
 
2674
3251
  exports.TargetSet = TargetSet;
2675
- },{"./selectors":"../node_modules/@stimulus/core/dist/src/selectors.js"}],"../node_modules/@stimulus/core/dist/src/scope.js":[function(require,module,exports) {
3252
+ },{"./selectors":"../node_modules/@stimulus/core/dist/selectors.js"}],"../node_modules/@stimulus/core/dist/scope.js":[function(require,module,exports) {
2676
3253
  "use strict";
2677
3254
 
2678
3255
  Object.defineProperty(exports, "__esModule", {
@@ -2680,57 +3257,68 @@ Object.defineProperty(exports, "__esModule", {
2680
3257
  });
2681
3258
  exports.Scope = void 0;
2682
3259
 
3260
+ var _class_map = require("./class_map");
3261
+
2683
3262
  var _data_map = require("./data_map");
2684
3263
 
2685
- var _target_set = require("./target_set");
3264
+ var _guide = require("./guide");
2686
3265
 
2687
3266
  var _selectors = require("./selectors");
2688
3267
 
3268
+ var _target_set = require("./target_set");
3269
+
3270
+ var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
3271
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
3272
+
3273
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];
3274
+
3275
+ return r;
3276
+ };
3277
+
2689
3278
  var Scope =
2690
3279
  /** @class */
2691
3280
  function () {
2692
- function Scope(schema, identifier, element) {
2693
- this.schema = schema;
2694
- this.identifier = identifier;
2695
- this.element = element;
3281
+ function Scope(schema, element, identifier, logger) {
3282
+ var _this = this;
3283
+
2696
3284
  this.targets = new _target_set.TargetSet(this);
3285
+ this.classes = new _class_map.ClassMap(this);
2697
3286
  this.data = new _data_map.DataMap(this);
3287
+
3288
+ this.containsElement = function (element) {
3289
+ return element.closest(_this.controllerSelector) === _this.element;
3290
+ };
3291
+
3292
+ this.schema = schema;
3293
+ this.element = element;
3294
+ this.identifier = identifier;
3295
+ this.guide = new _guide.Guide(logger);
2698
3296
  }
2699
3297
 
2700
3298
  Scope.prototype.findElement = function (selector) {
2701
- return this.findAllElements(selector)[0];
3299
+ return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);
2702
3300
  };
2703
3301
 
2704
3302
  Scope.prototype.findAllElements = function (selector) {
2705
- var head = this.element.matches(selector) ? [this.element] : [];
2706
- var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));
2707
- return head.concat(tail);
3303
+ return __spreadArrays(this.element.matches(selector) ? [this.element] : [], this.queryElements(selector).filter(this.containsElement));
2708
3304
  };
2709
3305
 
2710
- Scope.prototype.filterElements = function (elements) {
2711
- var _this = this;
2712
-
2713
- return elements.filter(function (element) {
2714
- return _this.containsElement(element);
2715
- });
2716
- };
2717
-
2718
- Scope.prototype.containsElement = function (element) {
2719
- return element.closest(this.controllerSelector) === this.element;
3306
+ Scope.prototype.queryElements = function (selector) {
3307
+ return Array.from(this.element.querySelectorAll(selector));
2720
3308
  };
2721
3309
 
2722
3310
  Object.defineProperty(Scope.prototype, "controllerSelector", {
2723
3311
  get: function () {
2724
3312
  return (0, _selectors.attributeValueContainsToken)(this.schema.controllerAttribute, this.identifier);
2725
3313
  },
2726
- enumerable: true,
3314
+ enumerable: false,
2727
3315
  configurable: true
2728
3316
  });
2729
3317
  return Scope;
2730
3318
  }();
2731
3319
 
2732
3320
  exports.Scope = Scope;
2733
- },{"./data_map":"../node_modules/@stimulus/core/dist/src/data_map.js","./target_set":"../node_modules/@stimulus/core/dist/src/target_set.js","./selectors":"../node_modules/@stimulus/core/dist/src/selectors.js"}],"../node_modules/@stimulus/core/dist/src/scope_observer.js":[function(require,module,exports) {
3321
+ },{"./class_map":"../node_modules/@stimulus/core/dist/class_map.js","./data_map":"../node_modules/@stimulus/core/dist/data_map.js","./guide":"../node_modules/@stimulus/core/dist/guide.js","./selectors":"../node_modules/@stimulus/core/dist/selectors.js","./target_set":"../node_modules/@stimulus/core/dist/target_set.js"}],"../node_modules/@stimulus/core/dist/scope_observer.js":[function(require,module,exports) {
2734
3322
  "use strict";
2735
3323
 
2736
3324
  Object.defineProperty(exports, "__esModule", {
@@ -2738,8 +3326,6 @@ Object.defineProperty(exports, "__esModule", {
2738
3326
  });
2739
3327
  exports.ScopeObserver = void 0;
2740
3328
 
2741
- var _scope = require("./scope");
2742
-
2743
3329
  var _mutationObservers = require("@stimulus/mutation-observers");
2744
3330
 
2745
3331
  var ScopeObserver =
@@ -2766,7 +3352,7 @@ function () {
2766
3352
  get: function () {
2767
3353
  return this.schema.controllerAttribute;
2768
3354
  },
2769
- enumerable: true,
3355
+ enumerable: false,
2770
3356
  configurable: true
2771
3357
  }); // Value observer delegate
2772
3358
 
@@ -2779,7 +3365,7 @@ function () {
2779
3365
  var scope = scopesByIdentifier.get(identifier);
2780
3366
 
2781
3367
  if (!scope) {
2782
- scope = new _scope.Scope(this.schema, identifier, element);
3368
+ scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);
2783
3369
  scopesByIdentifier.set(identifier, scope);
2784
3370
  }
2785
3371
 
@@ -2826,7 +3412,7 @@ function () {
2826
3412
  }();
2827
3413
 
2828
3414
  exports.ScopeObserver = ScopeObserver;
2829
- },{"./scope":"../node_modules/@stimulus/core/dist/src/scope.js","@stimulus/mutation-observers":"../node_modules/@stimulus/mutation-observers/dist/index.js"}],"../node_modules/@stimulus/core/dist/src/router.js":[function(require,module,exports) {
3415
+ },{"@stimulus/mutation-observers":"../node_modules/@stimulus/mutation-observers/dist/index.js"}],"../node_modules/@stimulus/core/dist/router.js":[function(require,module,exports) {
2830
3416
  "use strict";
2831
3417
 
2832
3418
  Object.defineProperty(exports, "__esModule", {
@@ -2838,6 +3424,8 @@ var _module = require("./module");
2838
3424
 
2839
3425
  var _multimap = require("@stimulus/multimap");
2840
3426
 
3427
+ var _scope = require("./scope");
3428
+
2841
3429
  var _scope_observer = require("./scope_observer");
2842
3430
 
2843
3431
  var Router =
@@ -2854,28 +3442,35 @@ function () {
2854
3442
  get: function () {
2855
3443
  return this.application.element;
2856
3444
  },
2857
- enumerable: true,
3445
+ enumerable: false,
2858
3446
  configurable: true
2859
3447
  });
2860
3448
  Object.defineProperty(Router.prototype, "schema", {
2861
3449
  get: function () {
2862
3450
  return this.application.schema;
2863
3451
  },
2864
- enumerable: true,
3452
+ enumerable: false,
3453
+ configurable: true
3454
+ });
3455
+ Object.defineProperty(Router.prototype, "logger", {
3456
+ get: function () {
3457
+ return this.application.logger;
3458
+ },
3459
+ enumerable: false,
2865
3460
  configurable: true
2866
3461
  });
2867
3462
  Object.defineProperty(Router.prototype, "controllerAttribute", {
2868
3463
  get: function () {
2869
3464
  return this.schema.controllerAttribute;
2870
3465
  },
2871
- enumerable: true,
3466
+ enumerable: false,
2872
3467
  configurable: true
2873
3468
  });
2874
3469
  Object.defineProperty(Router.prototype, "modules", {
2875
3470
  get: function () {
2876
3471
  return Array.from(this.modulesByIdentifier.values());
2877
3472
  },
2878
- enumerable: true,
3473
+ enumerable: false,
2879
3474
  configurable: true
2880
3475
  });
2881
3476
  Object.defineProperty(Router.prototype, "contexts", {
@@ -2884,7 +3479,7 @@ function () {
2884
3479
  return contexts.concat(module.contexts);
2885
3480
  }, []);
2886
3481
  },
2887
- enumerable: true,
3482
+ enumerable: false,
2888
3483
  configurable: true
2889
3484
  });
2890
3485
 
@@ -2930,6 +3525,12 @@ function () {
2930
3525
  /** @hidden */
2931
3526
 
2932
3527
 
3528
+ Router.prototype.createScopeForElementAndIdentifier = function (element, identifier) {
3529
+ return new _scope.Scope(this.schema, element, identifier, this.logger);
3530
+ };
3531
+ /** @hidden */
3532
+
3533
+
2933
3534
  Router.prototype.scopeConnected = function (scope) {
2934
3535
  this.scopesByIdentifier.add(scope.identifier, scope);
2935
3536
  var module = this.modulesByIdentifier.get(scope.identifier);
@@ -2971,7 +3572,7 @@ function () {
2971
3572
  }();
2972
3573
 
2973
3574
  exports.Router = Router;
2974
- },{"./module":"../node_modules/@stimulus/core/dist/src/module.js","@stimulus/multimap":"../node_modules/@stimulus/multimap/dist/index.js","./scope_observer":"../node_modules/@stimulus/core/dist/src/scope_observer.js"}],"../node_modules/@stimulus/core/dist/src/schema.js":[function(require,module,exports) {
3575
+ },{"./module":"../node_modules/@stimulus/core/dist/module.js","@stimulus/multimap":"../node_modules/@stimulus/multimap/dist/index.js","./scope":"../node_modules/@stimulus/core/dist/scope.js","./scope_observer":"../node_modules/@stimulus/core/dist/scope_observer.js"}],"../node_modules/@stimulus/core/dist/schema.js":[function(require,module,exports) {
2975
3576
  "use strict";
2976
3577
 
2977
3578
  Object.defineProperty(exports, "__esModule", {
@@ -2984,7 +3585,7 @@ var defaultSchema = {
2984
3585
  targetAttribute: "data-target"
2985
3586
  };
2986
3587
  exports.defaultSchema = defaultSchema;
2987
- },{}],"../node_modules/@stimulus/core/dist/src/application.js":[function(require,module,exports) {
3588
+ },{}],"../node_modules/@stimulus/core/dist/application.js":[function(require,module,exports) {
2988
3589
  "use strict";
2989
3590
 
2990
3591
  Object.defineProperty(exports, "__esModule", {
@@ -2999,6 +3600,12 @@ var _router = require("./router");
2999
3600
  var _schema = require("./schema");
3000
3601
 
3001
3602
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
3603
+ function adopt(value) {
3604
+ return value instanceof P ? value : new P(function (resolve) {
3605
+ resolve(value);
3606
+ });
3607
+ }
3608
+
3002
3609
  return new (P || (P = Promise))(function (resolve, reject) {
3003
3610
  function fulfilled(value) {
3004
3611
  try {
@@ -3017,9 +3624,7 @@ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P
3017
3624
  }
3018
3625
 
3019
3626
  function step(result) {
3020
- result.done ? resolve(result.value) : new P(function (resolve) {
3021
- resolve(result.value);
3022
- }).then(fulfilled, rejected);
3627
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
3023
3628
  }
3024
3629
 
3025
3630
  step((generator = generator.apply(thisArg, _arguments || [])).next());
@@ -3058,8 +3663,8 @@ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
3058
3663
  if (f) throw new TypeError("Generator is already executing.");
3059
3664
 
3060
3665
  while (_) try {
3061
- if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
3062
- if (y = 0, t) op = [0, t.value];
3666
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
3667
+ if (y = 0, t) op = [op[0] & 2, t.value];
3063
3668
 
3064
3669
  switch (op[0]) {
3065
3670
  case 0:
@@ -3135,6 +3740,14 @@ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
3135
3740
  }
3136
3741
  };
3137
3742
 
3743
+ var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
3744
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
3745
+
3746
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];
3747
+
3748
+ return r;
3749
+ };
3750
+
3138
3751
  var Application =
3139
3752
  /** @class */
3140
3753
  function () {
@@ -3147,6 +3760,7 @@ function () {
3147
3760
  schema = _schema.defaultSchema;
3148
3761
  }
3149
3762
 
3763
+ this.logger = console;
3150
3764
  this.element = element;
3151
3765
  this.schema = schema;
3152
3766
  this.dispatcher = new _dispatcher.Dispatcher(this);
@@ -3171,8 +3785,8 @@ function () {
3171
3785
  case 1:
3172
3786
  _a.sent();
3173
3787
 
3174
- this.router.start();
3175
3788
  this.dispatcher.start();
3789
+ this.router.start();
3176
3790
  return [2
3177
3791
  /*return*/
3178
3792
  ];
@@ -3182,8 +3796,8 @@ function () {
3182
3796
  };
3183
3797
 
3184
3798
  Application.prototype.stop = function () {
3185
- this.router.stop();
3186
3799
  this.dispatcher.stop();
3800
+ this.router.stop();
3187
3801
  };
3188
3802
 
3189
3803
  Application.prototype.register = function (identifier, controllerConstructor) {
@@ -3202,7 +3816,7 @@ function () {
3202
3816
  rest[_i - 1] = arguments[_i];
3203
3817
  }
3204
3818
 
3205
- var definitions = Array.isArray(head) ? head : [head].concat(rest);
3819
+ var definitions = Array.isArray(head) ? head : __spreadArrays([head], rest);
3206
3820
  definitions.forEach(function (definition) {
3207
3821
  return _this.router.loadDefinition(definition);
3208
3822
  });
@@ -3217,7 +3831,7 @@ function () {
3217
3831
  rest[_i - 1] = arguments[_i];
3218
3832
  }
3219
3833
 
3220
- var identifiers = Array.isArray(head) ? head : [head].concat(rest);
3834
+ var identifiers = Array.isArray(head) ? head : __spreadArrays([head], rest);
3221
3835
  identifiers.forEach(function (identifier) {
3222
3836
  return _this.router.unloadIdentifier(identifier);
3223
3837
  });
@@ -3230,7 +3844,7 @@ function () {
3230
3844
  return context.controller;
3231
3845
  });
3232
3846
  },
3233
- enumerable: true,
3847
+ enumerable: false,
3234
3848
  configurable: true
3235
3849
  });
3236
3850
 
@@ -3241,7 +3855,7 @@ function () {
3241
3855
 
3242
3856
 
3243
3857
  Application.prototype.handleError = function (error, message, detail) {
3244
- console.error("%s\n\n%o\n\n%o", message, error, detail);
3858
+ this.logger.error("%s\n\n%o\n\n%o", message, error, detail);
3245
3859
  };
3246
3860
 
3247
3861
  return Application;
@@ -3258,82 +3872,262 @@ function domReady() {
3258
3872
  }
3259
3873
  });
3260
3874
  }
3261
- },{"./dispatcher":"../node_modules/@stimulus/core/dist/src/dispatcher.js","./router":"../node_modules/@stimulus/core/dist/src/router.js","./schema":"../node_modules/@stimulus/core/dist/src/schema.js"}],"../node_modules/@stimulus/core/dist/src/target_properties.js":[function(require,module,exports) {
3875
+ },{"./dispatcher":"../node_modules/@stimulus/core/dist/dispatcher.js","./router":"../node_modules/@stimulus/core/dist/router.js","./schema":"../node_modules/@stimulus/core/dist/schema.js"}],"../node_modules/@stimulus/core/dist/class_properties.js":[function(require,module,exports) {
3262
3876
  "use strict";
3263
3877
 
3264
3878
  Object.defineProperty(exports, "__esModule", {
3265
3879
  value: true
3266
3880
  });
3267
- exports.defineTargetProperties = defineTargetProperties;
3881
+ exports.ClassPropertiesBlessing = ClassPropertiesBlessing;
3882
+
3883
+ var _inheritable_statics = require("./inheritable_statics");
3884
+
3885
+ var _string_helpers = require("./string_helpers");
3268
3886
 
3269
3887
  /** @hidden */
3270
- function defineTargetProperties(constructor) {
3271
- var prototype = constructor.prototype;
3272
- var targetNames = getTargetNamesForConstructor(constructor);
3273
- targetNames.forEach(function (name) {
3274
- var _a;
3888
+ function ClassPropertiesBlessing(constructor) {
3889
+ var classes = (0, _inheritable_statics.readInheritableStaticArrayValues)(constructor, "classes");
3890
+ return classes.reduce(function (properties, classDefinition) {
3891
+ return Object.assign(properties, propertiesForClassDefinition(classDefinition));
3892
+ }, {});
3893
+ }
3275
3894
 
3276
- return defineLinkedProperties(prototype, (_a = {}, _a[name + "Target"] = {
3277
- get: function () {
3278
- var target = this.targets.find(name);
3895
+ function propertiesForClassDefinition(key) {
3896
+ var _a;
3279
3897
 
3280
- if (target) {
3281
- return target;
3282
- } else {
3283
- throw new Error("Missing target element \"" + this.identifier + "." + name + "\"");
3284
- }
3898
+ var name = key + "Class";
3899
+ return _a = {}, _a[name] = {
3900
+ get: function () {
3901
+ var classes = this.classes;
3902
+
3903
+ if (classes.has(key)) {
3904
+ return classes.get(key);
3905
+ } else {
3906
+ var attribute = classes.getAttributeName(key);
3907
+ throw new Error("Missing attribute \"" + attribute + "\"");
3285
3908
  }
3286
- }, _a[name + "Targets"] = {
3287
- get: function () {
3288
- return this.targets.findAll(name);
3909
+ }
3910
+ }, _a["has" + (0, _string_helpers.capitalize)(name)] = {
3911
+ get: function () {
3912
+ return this.classes.has(key);
3913
+ }
3914
+ }, _a;
3915
+ }
3916
+ },{"./inheritable_statics":"../node_modules/@stimulus/core/dist/inheritable_statics.js","./string_helpers":"../node_modules/@stimulus/core/dist/string_helpers.js"}],"../node_modules/@stimulus/core/dist/target_properties.js":[function(require,module,exports) {
3917
+ "use strict";
3918
+
3919
+ Object.defineProperty(exports, "__esModule", {
3920
+ value: true
3921
+ });
3922
+ exports.TargetPropertiesBlessing = TargetPropertiesBlessing;
3923
+
3924
+ var _inheritable_statics = require("./inheritable_statics");
3925
+
3926
+ var _string_helpers = require("./string_helpers");
3927
+
3928
+ /** @hidden */
3929
+ function TargetPropertiesBlessing(constructor) {
3930
+ var targets = (0, _inheritable_statics.readInheritableStaticArrayValues)(constructor, "targets");
3931
+ return targets.reduce(function (properties, targetDefinition) {
3932
+ return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));
3933
+ }, {});
3934
+ }
3935
+
3936
+ function propertiesForTargetDefinition(name) {
3937
+ var _a;
3938
+
3939
+ return _a = {}, _a[name + "Target"] = {
3940
+ get: function () {
3941
+ var target = this.targets.find(name);
3942
+
3943
+ if (target) {
3944
+ return target;
3945
+ } else {
3946
+ throw new Error("Missing target element \"" + this.identifier + "." + name + "\"");
3289
3947
  }
3290
- }, _a["has" + capitalize(name) + "Target"] = {
3948
+ }
3949
+ }, _a[name + "Targets"] = {
3950
+ get: function () {
3951
+ return this.targets.findAll(name);
3952
+ }
3953
+ }, _a["has" + (0, _string_helpers.capitalize)(name) + "Target"] = {
3954
+ get: function () {
3955
+ return this.targets.has(name);
3956
+ }
3957
+ }, _a;
3958
+ }
3959
+ },{"./inheritable_statics":"../node_modules/@stimulus/core/dist/inheritable_statics.js","./string_helpers":"../node_modules/@stimulus/core/dist/string_helpers.js"}],"../node_modules/@stimulus/core/dist/value_properties.js":[function(require,module,exports) {
3960
+ "use strict";
3961
+
3962
+ Object.defineProperty(exports, "__esModule", {
3963
+ value: true
3964
+ });
3965
+ exports.ValuePropertiesBlessing = ValuePropertiesBlessing;
3966
+ exports.propertiesForValueDefinitionPair = propertiesForValueDefinitionPair;
3967
+
3968
+ var _inheritable_statics = require("./inheritable_statics");
3969
+
3970
+ var _string_helpers = require("./string_helpers");
3971
+
3972
+ /** @hidden */
3973
+ function ValuePropertiesBlessing(constructor) {
3974
+ var valueDefinitionPairs = (0, _inheritable_statics.readInheritableStaticObjectPairs)(constructor, "values");
3975
+ var propertyDescriptorMap = {
3976
+ valueDescriptorMap: {
3291
3977
  get: function () {
3292
- return this.targets.has(name);
3978
+ var _this = this;
3979
+
3980
+ return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {
3981
+ var _a;
3982
+
3983
+ var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);
3984
+
3985
+ var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);
3986
+
3987
+ return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));
3988
+ }, {});
3293
3989
  }
3294
- }, _a));
3295
- });
3990
+ }
3991
+ };
3992
+ return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {
3993
+ return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));
3994
+ }, propertyDescriptorMap);
3296
3995
  }
3996
+ /** @hidden */
3297
3997
 
3298
- function getTargetNamesForConstructor(constructor) {
3299
- var ancestors = getAncestorsForConstructor(constructor);
3300
- return Array.from(ancestors.reduce(function (targetNames, constructor) {
3301
- getOwnTargetNamesForConstructor(constructor).forEach(function (name) {
3302
- return targetNames.add(name);
3303
- });
3304
- return targetNames;
3305
- }, new Set()));
3998
+
3999
+ function propertiesForValueDefinitionPair(valueDefinitionPair) {
4000
+ var _a;
4001
+
4002
+ var definition = parseValueDefinitionPair(valueDefinitionPair);
4003
+ var type = definition.type,
4004
+ key = definition.key,
4005
+ name = definition.name;
4006
+ var read = readers[type],
4007
+ write = writers[type] || writers.default;
4008
+ return _a = {}, _a[name] = {
4009
+ get: function () {
4010
+ var value = this.data.get(key);
4011
+
4012
+ if (value !== null) {
4013
+ return read(value);
4014
+ } else {
4015
+ return definition.defaultValue;
4016
+ }
4017
+ },
4018
+ set: function (value) {
4019
+ if (value === undefined) {
4020
+ this.data.delete(key);
4021
+ } else {
4022
+ this.data.set(key, write(value));
4023
+ }
4024
+ }
4025
+ }, _a["has" + (0, _string_helpers.capitalize)(name)] = {
4026
+ get: function () {
4027
+ return this.data.has(key);
4028
+ }
4029
+ }, _a;
3306
4030
  }
3307
4031
 
3308
- function getAncestorsForConstructor(constructor) {
3309
- var ancestors = [];
4032
+ function parseValueDefinitionPair(_a) {
4033
+ var token = _a[0],
4034
+ typeConstant = _a[1];
4035
+ var type = parseValueTypeConstant(typeConstant);
4036
+ return valueDescriptorForTokenAndType(token, type);
4037
+ }
3310
4038
 
3311
- while (constructor) {
3312
- ancestors.push(constructor);
3313
- constructor = Object.getPrototypeOf(constructor);
4039
+ function parseValueTypeConstant(typeConstant) {
4040
+ switch (typeConstant) {
4041
+ case Array:
4042
+ return "array";
4043
+
4044
+ case Boolean:
4045
+ return "boolean";
4046
+
4047
+ case Number:
4048
+ return "number";
4049
+
4050
+ case Object:
4051
+ return "object";
4052
+
4053
+ case String:
4054
+ return "string";
3314
4055
  }
3315
4056
 
3316
- return ancestors;
4057
+ throw new Error("Unknown value type constant \"" + typeConstant + "\"");
3317
4058
  }
3318
4059
 
3319
- function getOwnTargetNamesForConstructor(constructor) {
3320
- var definition = constructor["targets"];
3321
- return Array.isArray(definition) ? definition : [];
4060
+ function valueDescriptorForTokenAndType(token, type) {
4061
+ var key = (0, _string_helpers.dasherize)(token) + "-value";
4062
+ return {
4063
+ type: type,
4064
+ key: key,
4065
+ name: (0, _string_helpers.camelize)(key),
4066
+
4067
+ get defaultValue() {
4068
+ return defaultValuesByType[type];
4069
+ }
4070
+
4071
+ };
3322
4072
  }
3323
4073
 
3324
- function defineLinkedProperties(object, properties) {
3325
- Object.keys(properties).forEach(function (name) {
3326
- if (!(name in object)) {
3327
- var descriptor = properties[name];
3328
- Object.defineProperty(object, name, descriptor);
4074
+ var defaultValuesByType = {
4075
+ get array() {
4076
+ return [];
4077
+ },
4078
+
4079
+ boolean: false,
4080
+ number: 0,
4081
+
4082
+ get object() {
4083
+ return {};
4084
+ },
4085
+
4086
+ string: ""
4087
+ };
4088
+ var readers = {
4089
+ array: function (value) {
4090
+ var array = JSON.parse(value);
4091
+
4092
+ if (!Array.isArray(array)) {
4093
+ throw new TypeError("Expected array");
3329
4094
  }
3330
- });
4095
+
4096
+ return array;
4097
+ },
4098
+ boolean: function (value) {
4099
+ return !(value == "0" || value == "false");
4100
+ },
4101
+ number: function (value) {
4102
+ return parseFloat(value);
4103
+ },
4104
+ object: function (value) {
4105
+ var object = JSON.parse(value);
4106
+
4107
+ if (object === null || typeof object != "object" || Array.isArray(object)) {
4108
+ throw new TypeError("Expected object");
4109
+ }
4110
+
4111
+ return object;
4112
+ },
4113
+ string: function (value) {
4114
+ return value;
4115
+ }
4116
+ };
4117
+ var writers = {
4118
+ default: writeString,
4119
+ array: writeJSON,
4120
+ object: writeJSON
4121
+ };
4122
+
4123
+ function writeJSON(value) {
4124
+ return JSON.stringify(value);
3331
4125
  }
3332
4126
 
3333
- function capitalize(name) {
3334
- return name.charAt(0).toUpperCase() + name.slice(1);
4127
+ function writeString(value) {
4128
+ return "" + value;
3335
4129
  }
3336
- },{}],"../node_modules/@stimulus/core/dist/src/controller.js":[function(require,module,exports) {
4130
+ },{"./inheritable_statics":"../node_modules/@stimulus/core/dist/inheritable_statics.js","./string_helpers":"../node_modules/@stimulus/core/dist/string_helpers.js"}],"../node_modules/@stimulus/core/dist/controller.js":[function(require,module,exports) {
3337
4131
  "use strict";
3338
4132
 
3339
4133
  Object.defineProperty(exports, "__esModule", {
@@ -3341,8 +4135,12 @@ Object.defineProperty(exports, "__esModule", {
3341
4135
  });
3342
4136
  exports.Controller = void 0;
3343
4137
 
4138
+ var _class_properties = require("./class_properties");
4139
+
3344
4140
  var _target_properties = require("./target_properties");
3345
4141
 
4142
+ var _value_properties = require("./value_properties");
4143
+
3346
4144
  var Controller =
3347
4145
  /** @class */
3348
4146
  function () {
@@ -3350,50 +4148,53 @@ function () {
3350
4148
  this.context = context;
3351
4149
  }
3352
4150
 
3353
- Controller.bless = function () {
3354
- (0, _target_properties.defineTargetProperties)(this);
3355
- };
3356
-
3357
4151
  Object.defineProperty(Controller.prototype, "application", {
3358
4152
  get: function () {
3359
4153
  return this.context.application;
3360
4154
  },
3361
- enumerable: true,
4155
+ enumerable: false,
3362
4156
  configurable: true
3363
4157
  });
3364
4158
  Object.defineProperty(Controller.prototype, "scope", {
3365
4159
  get: function () {
3366
4160
  return this.context.scope;
3367
4161
  },
3368
- enumerable: true,
4162
+ enumerable: false,
3369
4163
  configurable: true
3370
4164
  });
3371
4165
  Object.defineProperty(Controller.prototype, "element", {
3372
4166
  get: function () {
3373
4167
  return this.scope.element;
3374
4168
  },
3375
- enumerable: true,
4169
+ enumerable: false,
3376
4170
  configurable: true
3377
4171
  });
3378
4172
  Object.defineProperty(Controller.prototype, "identifier", {
3379
4173
  get: function () {
3380
4174
  return this.scope.identifier;
3381
4175
  },
3382
- enumerable: true,
4176
+ enumerable: false,
3383
4177
  configurable: true
3384
4178
  });
3385
4179
  Object.defineProperty(Controller.prototype, "targets", {
3386
4180
  get: function () {
3387
4181
  return this.scope.targets;
3388
4182
  },
3389
- enumerable: true,
4183
+ enumerable: false,
4184
+ configurable: true
4185
+ });
4186
+ Object.defineProperty(Controller.prototype, "classes", {
4187
+ get: function () {
4188
+ return this.scope.classes;
4189
+ },
4190
+ enumerable: false,
3390
4191
  configurable: true
3391
4192
  });
3392
4193
  Object.defineProperty(Controller.prototype, "data", {
3393
4194
  get: function () {
3394
4195
  return this.scope.data;
3395
4196
  },
3396
- enumerable: true,
4197
+ enumerable: false,
3397
4198
  configurable: true
3398
4199
  });
3399
4200
 
@@ -3406,12 +4207,14 @@ function () {
3406
4207
  Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM
3407
4208
  };
3408
4209
 
4210
+ Controller.blessings = [_class_properties.ClassPropertiesBlessing, _target_properties.TargetPropertiesBlessing, _value_properties.ValuePropertiesBlessing];
3409
4211
  Controller.targets = [];
4212
+ Controller.values = {};
3410
4213
  return Controller;
3411
4214
  }();
3412
4215
 
3413
4216
  exports.Controller = Controller;
3414
- },{"./target_properties":"../node_modules/@stimulus/core/dist/src/target_properties.js"}],"../node_modules/@stimulus/core/dist/index.js":[function(require,module,exports) {
4217
+ },{"./class_properties":"../node_modules/@stimulus/core/dist/class_properties.js","./target_properties":"../node_modules/@stimulus/core/dist/target_properties.js","./value_properties":"../node_modules/@stimulus/core/dist/value_properties.js"}],"../node_modules/@stimulus/core/dist/index.js":[function(require,module,exports) {
3415
4218
  "use strict";
3416
4219
 
3417
4220
  Object.defineProperty(exports, "__esModule", {
@@ -3442,14 +4245,14 @@ Object.defineProperty(exports, "defaultSchema", {
3442
4245
  }
3443
4246
  });
3444
4247
 
3445
- var _application = require("./src/application");
4248
+ var _application = require("./application");
3446
4249
 
3447
- var _context = require("./src/context");
4250
+ var _context = require("./context");
3448
4251
 
3449
- var _controller = require("./src/controller");
4252
+ var _controller = require("./controller");
3450
4253
 
3451
- var _schema = require("./src/schema");
3452
- },{"./src/application":"../node_modules/@stimulus/core/dist/src/application.js","./src/context":"../node_modules/@stimulus/core/dist/src/context.js","./src/controller":"../node_modules/@stimulus/core/dist/src/controller.js","./src/schema":"../node_modules/@stimulus/core/dist/src/schema.js"}],"../node_modules/stimulus/index.js":[function(require,module,exports) {
4254
+ var _schema = require("./schema");
4255
+ },{"./application":"../node_modules/@stimulus/core/dist/application.js","./context":"../node_modules/@stimulus/core/dist/context.js","./controller":"../node_modules/@stimulus/core/dist/controller.js","./schema":"../node_modules/@stimulus/core/dist/schema.js"}],"../node_modules/stimulus/index.js":[function(require,module,exports) {
3453
4256
  "use strict";
3454
4257
 
3455
4258
  Object.defineProperty(exports, "__esModule", {
@@ -3460,6 +4263,7 @@ var _core = require("@stimulus/core");
3460
4263
 
3461
4264
  Object.keys(_core).forEach(function (key) {
3462
4265
  if (key === "default" || key === "__esModule") return;
4266
+ if (key in exports && exports[key] === _core[key]) return;
3463
4267
  Object.defineProperty(exports, key, {
3464
4268
  enumerable: true,
3465
4269
  get: function () {
@@ -3513,12 +4317,9 @@ function (_super) {
3513
4317
 
3514
4318
  default_1.prototype.call = function (event) {
3515
4319
  event.preventDefault();
3516
-
3517
- if (this.templateTarget) {
3518
- var unixtime = new Date().getTime();
3519
- var content = this.templateTarget.innerHTML.replace(/TEMPLATEINDEX/g, unixtime.toString());
3520
- this.templateTarget.insertAdjacentHTML("beforebegin", content);
3521
- }
4320
+ var unixtime = new Date().getTime();
4321
+ var content = this.templateTarget.innerHTML.replace(/TEMPLATEINDEX/g, unixtime.toString());
4322
+ this.templateTarget.insertAdjacentHTML("beforebegin", content);
3522
4323
  };
3523
4324
 
3524
4325
  default_1.targets = ["template"];