formstrap 0.1.3 → 0.2.0

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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -1
  3. data/app/assets/javascripts/formstrap/controllers/file_preview_controller.js +5 -5
  4. data/app/assets/javascripts/formstrap/controllers/media_controller.js +4 -2
  5. data/app/assets/javascripts/formstrap/controllers/media_modal_controller.js +38 -2
  6. data/app/assets/javascripts/formstrap/controllers/popup_controller.js +75 -0
  7. data/app/assets/javascripts/formstrap/controllers/repeater_controller.js +4 -4
  8. data/app/assets/javascripts/formstrap/index.js +2 -0
  9. data/app/assets/javascripts/formstrap.js +1790 -129
  10. data/app/assets/stylesheets/formstrap/{forms/autocomplete.scss → autocomplete.scss} +1 -1
  11. data/app/assets/stylesheets/formstrap/{forms/file.scss → file.scss} +10 -10
  12. data/app/assets/stylesheets/formstrap/general.scss +8 -1
  13. data/app/assets/stylesheets/formstrap/media/_modal.scss +9 -0
  14. data/app/assets/stylesheets/formstrap/{forms/media.scss → media/_validation.scss} +2 -2
  15. data/app/assets/stylesheets/formstrap/media.scss +2 -1
  16. data/app/assets/stylesheets/formstrap/{forms/repeater.scss → repeater.scss} +8 -8
  17. data/app/assets/stylesheets/formstrap/shared/popup.scss +17 -0
  18. data/app/assets/stylesheets/formstrap/shared/thumbnail.scss +23 -0
  19. data/app/assets/stylesheets/formstrap/shared.scss +2 -0
  20. data/app/assets/stylesheets/formstrap/utilities/dropzone.scss +2 -2
  21. data/app/assets/stylesheets/formstrap/utilities.scss +0 -1
  22. data/app/assets/stylesheets/formstrap.css +155 -143
  23. data/app/assets/stylesheets/formstrap.scss +5 -1
  24. data/app/controllers/formstrap/media_controller.rb +6 -12
  25. data/app/helpers/application_helper.rb +20 -0
  26. data/app/models/concerns/formstrap/attachment.rb +16 -0
  27. data/app/models/concerns/formstrap/blob.rb +56 -0
  28. data/app/models/formstrap/file_view.rb +3 -3
  29. data/app/models/formstrap/media_view.rb +12 -1
  30. data/app/models/formstrap/thumbnail_view.rb +108 -0
  31. data/app/views/formstrap/_autocomplete.html.erb +1 -1
  32. data/app/views/formstrap/_file.html.erb +8 -8
  33. data/app/views/formstrap/_media.html.erb +5 -4
  34. data/app/views/formstrap/_repeater.html.erb +3 -3
  35. data/app/views/formstrap/media/_item.html.erb +10 -7
  36. data/app/views/formstrap/media/_modal.html.erb +35 -8
  37. data/app/views/formstrap/media/_thumbnail.html.erb +12 -8
  38. data/app/views/formstrap/media/_validation.html.erb +1 -1
  39. data/app/views/formstrap/media/create.turbo_stream.erb +3 -1
  40. data/app/views/formstrap/media/index.html.erb +1 -1
  41. data/app/views/formstrap/repeater/_row.html.erb +4 -4
  42. data/app/views/formstrap/shared/_popup.html.erb +1 -1
  43. data/app/views/formstrap/shared/_thumbnail.html.erb +5 -3
  44. data/config/locales/formstrap/forms/en.yml +0 -14
  45. data/config/locales/formstrap/forms/nl.yml +1 -15
  46. data/config/locales/formstrap/media/en.yml +2 -10
  47. data/config/locales/formstrap/media/nl.yml +2 -10
  48. data/config/routes.rb +0 -2
  49. data/lib/formstrap/version.rb +1 -1
  50. metadata +16 -29
  51. data/app/assets/stylesheets/formstrap/forms.scss +0 -12
  52. data/app/assets/stylesheets/formstrap/media/index.scss +0 -9
  53. data/app/assets/stylesheets/formstrap/utilities/buttons.scss +0 -27
  54. data/app/models/formstrap/blocks_view.rb +0 -43
  55. data/app/views/formstrap/_blocks.html.erb +0 -45
  56. data/app/views/formstrap/_to_ary.html.erb +0 -0
  57. data/app/views/formstrap/blocks/_modal.html.erb +0 -20
  58. data/app/views/formstrap/fields/_base.html.erb +0 -25
  59. data/app/views/formstrap/fields/_file.html.erb +0 -17
  60. data/app/views/formstrap/fields/_files.html.erb +0 -17
  61. data/app/views/formstrap/fields/_group.html.erb +0 -52
  62. data/app/views/formstrap/fields/_list.html.erb +0 -31
  63. data/app/views/formstrap/fields/_text.html.erb +0 -17
  64. data/app/views/formstrap/media/_media_item_modal.html.erb +0 -77
  65. data/app/views/formstrap/media/show.html.erb +0 -9
  66. data/app/views/formstrap/media/update.turbo_stream.erb +0 -3
  67. data/config/locales/activerecord/en.yml +0 -12
  68. data/config/locales/activerecord/nl.yml +0 -13
  69. data/config/locales/defaults/en.yml +0 -215
  70. data/config/locales/defaults/nl.yml +0 -213
  71. data/config/locales/devise/en.yml +0 -65
  72. data/config/locales/devise/nl.yml +0 -85
  73. /data/app/assets/stylesheets/formstrap/{forms/search.scss → search.scss} +0 -0
@@ -86,10 +86,10 @@ var require_tom_select_complete = __commonJS({
86
86
  loaded: {}
87
87
  };
88
88
  }
89
- static define(name, fn) {
89
+ static define(name, fn2) {
90
90
  Interface.plugins[name] = {
91
91
  "name": name,
92
- "fn": fn
92
+ "fn": fn2
93
93
  };
94
94
  }
95
95
  initializePlugins(plugins2) {
@@ -192,8 +192,8 @@ var require_tom_select_complete = __commonJS({
192
192
  if (input.length === 1)
193
193
  return [[input]];
194
194
  let result = [];
195
- const start = input.substring(1);
196
- const suba = allSubstrings(start);
195
+ const start2 = input.substring(1);
196
+ const suba = allSubstrings(start2);
197
197
  suba.forEach(function(subresult) {
198
198
  let tmp = subresult.slice(0);
199
199
  tmp[0] = input.charAt(0) + tmp[0];
@@ -1047,7 +1047,7 @@ var require_tom_select_complete = __commonJS({
1047
1047
  const escape_html = (str) => {
1048
1048
  return (str + "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
1049
1049
  };
1050
- const loadDebounce = (fn, delay) => {
1050
+ const loadDebounce = (fn2, delay) => {
1051
1051
  var timeout;
1052
1052
  return function(value, callback) {
1053
1053
  var self2 = this;
@@ -1058,11 +1058,11 @@ var require_tom_select_complete = __commonJS({
1058
1058
  timeout = setTimeout(function() {
1059
1059
  timeout = null;
1060
1060
  self2.loadedSearches[value] = true;
1061
- fn.call(self2, value, callback);
1061
+ fn2.call(self2, value, callback);
1062
1062
  }, delay);
1063
1063
  };
1064
1064
  };
1065
- const debounce_events = (self2, types, fn) => {
1065
+ const debounce_events = (self2, types, fn2) => {
1066
1066
  var type;
1067
1067
  var trigger = self2.trigger;
1068
1068
  var event_args = {};
@@ -1074,7 +1074,7 @@ var require_tom_select_complete = __commonJS({
1074
1074
  return trigger.apply(self2, arguments);
1075
1075
  }
1076
1076
  };
1077
- fn.apply(self2, []);
1077
+ fn2.apply(self2, []);
1078
1078
  self2.trigger = trigger;
1079
1079
  for (type of types) {
1080
1080
  if (type in event_args) {
@@ -1579,7 +1579,7 @@ var require_tom_select_complete = __commonJS({
1579
1579
  self2.settings.render = Object.assign({}, templates, self2.settings.render);
1580
1580
  }
1581
1581
  setupCallbacks() {
1582
- var key, fn;
1582
+ var key, fn2;
1583
1583
  var callbacks = {
1584
1584
  "initialize": "onInitialize",
1585
1585
  "change": "onChange",
@@ -1601,9 +1601,9 @@ var require_tom_select_complete = __commonJS({
1601
1601
  "blur": "onBlur"
1602
1602
  };
1603
1603
  for (key in callbacks) {
1604
- fn = this.settings[callbacks[key]];
1605
- if (fn)
1606
- this.on(key, fn);
1604
+ fn2 = this.settings[callbacks[key]];
1605
+ if (fn2)
1606
+ this.on(key, fn2);
1607
1607
  }
1608
1608
  }
1609
1609
  sync(get_settings = true) {
@@ -1650,8 +1650,8 @@ var require_tom_select_complete = __commonJS({
1650
1650
  }
1651
1651
  var splitInput = pastedText.trim().split(self2.settings.splitOn);
1652
1652
  iterate$1(splitInput, (piece) => {
1653
- const hash = hash_key(piece);
1654
- if (hash) {
1653
+ const hash3 = hash_key(piece);
1654
+ if (hash3) {
1655
1655
  if (this.options[piece]) {
1656
1656
  self2.addItem(piece);
1657
1657
  } else {
@@ -1921,7 +1921,7 @@ var require_tom_select_complete = __commonJS({
1921
1921
  setActiveItem(item, e) {
1922
1922
  var self2 = this;
1923
1923
  var eventName;
1924
- var i, begin, end, swap;
1924
+ var i, begin, end2, swap;
1925
1925
  var last;
1926
1926
  if (self2.settings.mode === "single")
1927
1927
  return;
@@ -1936,13 +1936,13 @@ var require_tom_select_complete = __commonJS({
1936
1936
  if (eventName === "click" && isKeyDown("shiftKey", e) && self2.activeItems.length) {
1937
1937
  last = self2.getLastActive();
1938
1938
  begin = Array.prototype.indexOf.call(self2.control.children, last);
1939
- end = Array.prototype.indexOf.call(self2.control.children, item);
1940
- if (begin > end) {
1939
+ end2 = Array.prototype.indexOf.call(self2.control.children, item);
1940
+ if (begin > end2) {
1941
1941
  swap = begin;
1942
- begin = end;
1943
- end = swap;
1942
+ begin = end2;
1943
+ end2 = swap;
1944
1944
  }
1945
- for (i = begin; i <= end; i++) {
1945
+ for (i = begin; i <= end2; i++) {
1946
1946
  item = self2.control.children[i];
1947
1947
  if (self2.activeItems.indexOf(item) === -1) {
1948
1948
  self2.setActiveItemClass(item);
@@ -2749,12 +2749,12 @@ var require_tom_select_complete = __commonJS({
2749
2749
  }
2750
2750
  var context = this.control;
2751
2751
  var rect = context.getBoundingClientRect();
2752
- var top = context.offsetHeight + rect.top + window.scrollY;
2753
- var left = rect.left + window.scrollX;
2752
+ var top2 = context.offsetHeight + rect.top + window.scrollY;
2753
+ var left2 = rect.left + window.scrollX;
2754
2754
  applyCSS(this.dropdown, {
2755
2755
  width: rect.width + "px",
2756
- top: top + "px",
2757
- left: left + "px"
2756
+ top: top2 + "px",
2757
+ left: left2 + "px"
2758
2758
  });
2759
2759
  }
2760
2760
  clear(silent) {
@@ -3552,8 +3552,8 @@ var EventListener = class {
3552
3552
  return this.unorderedBindings.size > 0;
3553
3553
  }
3554
3554
  get bindings() {
3555
- return Array.from(this.unorderedBindings).sort((left, right) => {
3556
- const leftIndex = left.index, rightIndex = right.index;
3555
+ return Array.from(this.unorderedBindings).sort((left2, right2) => {
3556
+ const leftIndex = left2.index, rightIndex = right2.index;
3557
3557
  return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;
3558
3558
  });
3559
3559
  }
@@ -4358,12 +4358,12 @@ var TokenListObserver = class {
4358
4358
  function parseTokenString(tokenString, element, attributeName) {
4359
4359
  return tokenString.trim().split(/\s+/).filter((content) => content.length).map((content, index2) => ({ element, attributeName, content, index: index2 }));
4360
4360
  }
4361
- function zip(left, right) {
4362
- const length = Math.max(left.length, right.length);
4363
- return Array.from({ length }, (_, index2) => [left[index2], right[index2]]);
4361
+ function zip(left2, right2) {
4362
+ const length = Math.max(left2.length, right2.length);
4363
+ return Array.from({ length }, (_, index2) => [left2[index2], right2[index2]]);
4364
4364
  }
4365
- function tokensAreEqual(left, right) {
4366
- return left && right && left.index == right.index && left.content == right.content;
4365
+ function tokensAreEqual(left2, right2) {
4366
+ return left2 && right2 && left2.index == right2.index && left2.content == right2.content;
4367
4367
  }
4368
4368
  var ValueListObserver = class {
4369
4369
  constructor(element, attributeName, delegate) {
@@ -5598,13 +5598,13 @@ function ValuePropertiesBlessing(constructor) {
5598
5598
  }
5599
5599
  function propertiesForValueDefinitionPair(valueDefinitionPair, controller) {
5600
5600
  const definition = parseValueDefinitionPair(valueDefinitionPair, controller);
5601
- const { key, name, reader: read, writer: write } = definition;
5601
+ const { key, name, reader: read2, writer: write2 } = definition;
5602
5602
  return {
5603
5603
  [name]: {
5604
5604
  get() {
5605
5605
  const value = this.data.get(key);
5606
5606
  if (value !== null) {
5607
- return read(value);
5607
+ return read2(value);
5608
5608
  } else {
5609
5609
  return definition.defaultValue;
5610
5610
  }
@@ -5613,7 +5613,7 @@ function propertiesForValueDefinitionPair(valueDefinitionPair, controller) {
5613
5613
  if (value === void 0) {
5614
5614
  this.data.delete(key);
5615
5615
  } else {
5616
- this.data.set(key, write(value));
5616
+ this.data.set(key, write2(value));
5617
5617
  }
5618
5618
  }
5619
5619
  },
@@ -6243,7 +6243,7 @@ var file_preview_controller_default = class extends Controller {
6243
6243
  return (bytes / Math.pow(1024, i)).toFixed(2) * 1 + " " + ["B", "kB", "MB", "GB", "TB"][i];
6244
6244
  }
6245
6245
  updateThumbnailRemoveButton(thumbnail, fileName) {
6246
- const removeButton = thumbnail.querySelector(".h-form-file-thumbnail-remove");
6246
+ const removeButton = thumbnail.querySelector(".formstrap-file-thumbnail-remove");
6247
6247
  if (removeButton) {
6248
6248
  removeButton.dataset.filePreviewNameParam = fileName;
6249
6249
  }
@@ -6252,14 +6252,14 @@ var file_preview_controller_default = class extends Controller {
6252
6252
  thumbnail.title = title;
6253
6253
  }
6254
6254
  updateThumbnailBackground(thumbnail, url) {
6255
- const thumbnailBackground = thumbnail.querySelector(".h-thumbnail-bg");
6255
+ const thumbnailBackground = thumbnail.querySelector(".formstrap-thumbnail-bg");
6256
6256
  thumbnailBackground.style.backgroundImage = `url('${url}')`;
6257
6257
  }
6258
6258
  removeThumbnailIcon(thumbnail) {
6259
- thumbnail.querySelector(".h-thumbnail-bg").innerHTML = "";
6259
+ thumbnail.querySelector(".formstrap-thumbnail-bg").innerHTML = "";
6260
6260
  }
6261
6261
  updateThumbnailIcon(thumbnail, icon) {
6262
- thumbnail.querySelector(".h-thumbnail-bg").innerHTML = icon;
6262
+ thumbnail.querySelector(".formstrap-thumbnail-bg").innerHTML = icon;
6263
6263
  }
6264
6264
  iconForMimeType(mimeType) {
6265
6265
  const typeMap = {
@@ -6277,7 +6277,7 @@ var file_preview_controller_default = class extends Controller {
6277
6277
  };
6278
6278
  const iconName = Object.keys(typeMap).find((key) => typeMap[key].includes(mimeType));
6279
6279
  const fullIconName = ["bi", "file", "earmark", iconName].filter((e) => typeof e === "string" && e !== "").join("-");
6280
- return `<i class="bi ${fullIconName} h-thumbnail-icon"></i>`;
6280
+ return `<i class="bi ${fullIconName} formstrap-thumbnail-icon"></i>`;
6281
6281
  }
6282
6282
  isImage(file) {
6283
6283
  return file.type.match(/^image/) !== null;
@@ -6471,14 +6471,14 @@ var pad = function(number, length) {
6471
6471
  var int = function(bool) {
6472
6472
  return bool === true ? 1 : 0;
6473
6473
  };
6474
- function debounce(fn, wait) {
6474
+ function debounce(fn2, wait) {
6475
6475
  var t;
6476
6476
  return function() {
6477
6477
  var _this = this;
6478
6478
  var args = arguments;
6479
6479
  clearTimeout(t);
6480
6480
  t = setTimeout(function() {
6481
- return fn.apply(_this, args);
6481
+ return fn2.apply(_this, args);
6482
6482
  }, wait);
6483
6483
  };
6484
6484
  }
@@ -6738,21 +6738,21 @@ var createDateParser = function(_a) {
6738
6738
  else if (typeof date !== "string" && date.toFixed !== void 0)
6739
6739
  parsedDate = new Date(date);
6740
6740
  else if (typeof date === "string") {
6741
- var format = givenFormat || (config || defaults).dateFormat;
6741
+ var format2 = givenFormat || (config || defaults).dateFormat;
6742
6742
  var datestr = String(date).trim();
6743
6743
  if (datestr === "today") {
6744
6744
  parsedDate = new Date();
6745
6745
  timeless = true;
6746
6746
  } else if (config && config.parseDate) {
6747
- parsedDate = config.parseDate(date, format);
6747
+ parsedDate = config.parseDate(date, format2);
6748
6748
  } else if (/Z$/.test(datestr) || /GMT$/.test(datestr)) {
6749
6749
  parsedDate = new Date(date);
6750
6750
  } else {
6751
6751
  var matched = void 0, ops = [];
6752
- for (var i = 0, matchIndex = 0, regexStr = ""; i < format.length; i++) {
6753
- var token = format[i];
6752
+ for (var i = 0, matchIndex = 0, regexStr = ""; i < format2.length; i++) {
6753
+ var token = format2[i];
6754
6754
  var isBackSlash = token === "\\";
6755
- var escaped = format[i - 1] === "\\" || isBackSlash;
6755
+ var escaped = format2[i - 1] === "\\" || isBackSlash;
6756
6756
  if (tokenRegex[token] && !escaped) {
6757
6757
  regexStr += tokenRegex[token];
6758
6758
  var match = new RegExp(regexStr).exec(date);
@@ -6767,8 +6767,8 @@ var createDateParser = function(_a) {
6767
6767
  }
6768
6768
  parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));
6769
6769
  ops.forEach(function(_a2) {
6770
- var fn = _a2.fn, val = _a2.val;
6771
- return parsedDate = fn(parsedDate, val, locale) || parsedDate;
6770
+ var fn2 = _a2.fn, val = _a2.val;
6771
+ return parsedDate = fn2(parsedDate, val, locale) || parsedDate;
6772
6772
  });
6773
6773
  parsedDate = matched ? parsedDate : void 0;
6774
6774
  }
@@ -6951,8 +6951,8 @@ function FlatpickrInstance(element, instanceConfig) {
6951
6951
  var _a;
6952
6952
  return ((_a = self2.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode()).activeElement || document.activeElement;
6953
6953
  }
6954
- function bindToInstance(fn) {
6955
- return fn.bind(self2);
6954
+ function bindToInstance(fn2) {
6955
+ return fn2.bind(self2);
6956
6956
  }
6957
6957
  function setCalendarWidth() {
6958
6958
  var config = self2.config;
@@ -7309,16 +7309,16 @@ function FlatpickrInstance(element, instanceConfig) {
7309
7309
  focusOnDay(getFirstAvailableDay(loopDelta), 0);
7310
7310
  return void 0;
7311
7311
  }
7312
- function focusOnDay(current, offset) {
7312
+ function focusOnDay(current, offset2) {
7313
7313
  var activeElement = getClosestActiveElement();
7314
7314
  var dayFocused = isInView(activeElement || document.body);
7315
- var startElem = current !== void 0 ? current : dayFocused ? activeElement : self2.selectedDateElem !== void 0 && isInView(self2.selectedDateElem) ? self2.selectedDateElem : self2.todayDateElem !== void 0 && isInView(self2.todayDateElem) ? self2.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);
7315
+ var startElem = current !== void 0 ? current : dayFocused ? activeElement : self2.selectedDateElem !== void 0 && isInView(self2.selectedDateElem) ? self2.selectedDateElem : self2.todayDateElem !== void 0 && isInView(self2.todayDateElem) ? self2.todayDateElem : getFirstAvailableDay(offset2 > 0 ? 1 : -1);
7316
7316
  if (startElem === void 0) {
7317
7317
  self2._input.focus();
7318
7318
  } else if (!dayFocused) {
7319
7319
  focusOnDayElem(startElem);
7320
7320
  } else {
7321
- getNextAvailableDay(startElem, offset);
7321
+ getNextAvailableDay(startElem, offset2);
7322
7322
  }
7323
7323
  }
7324
7324
  function buildMonthDays(year, month) {
@@ -8128,37 +8128,37 @@ function FlatpickrInstance(element, instanceConfig) {
8128
8128
  var calendarHeight = Array.prototype.reduce.call(self2.calendarContainer.children, function(acc, child) {
8129
8129
  return acc + child.offsetHeight;
8130
8130
  }, 0), calendarWidth = self2.calendarContainer.offsetWidth, configPos = self2.config.position.split(" "), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === "above" || configPosVertical !== "below" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;
8131
- var top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
8131
+ var top2 = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
8132
8132
  toggleClass(self2.calendarContainer, "arrowTop", !showOnTop);
8133
8133
  toggleClass(self2.calendarContainer, "arrowBottom", showOnTop);
8134
8134
  if (self2.config.inline)
8135
8135
  return;
8136
- var left = window.pageXOffset + inputBounds.left;
8136
+ var left2 = window.pageXOffset + inputBounds.left;
8137
8137
  var isCenter = false;
8138
8138
  var isRight = false;
8139
8139
  if (configPosHorizontal === "center") {
8140
- left -= (calendarWidth - inputBounds.width) / 2;
8140
+ left2 -= (calendarWidth - inputBounds.width) / 2;
8141
8141
  isCenter = true;
8142
8142
  } else if (configPosHorizontal === "right") {
8143
- left -= calendarWidth - inputBounds.width;
8143
+ left2 -= calendarWidth - inputBounds.width;
8144
8144
  isRight = true;
8145
8145
  }
8146
8146
  toggleClass(self2.calendarContainer, "arrowLeft", !isCenter && !isRight);
8147
8147
  toggleClass(self2.calendarContainer, "arrowCenter", isCenter);
8148
8148
  toggleClass(self2.calendarContainer, "arrowRight", isRight);
8149
- var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);
8150
- var rightMost = left + calendarWidth > window.document.body.offsetWidth;
8151
- var centerMost = right + calendarWidth > window.document.body.offsetWidth;
8149
+ var right2 = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);
8150
+ var rightMost = left2 + calendarWidth > window.document.body.offsetWidth;
8151
+ var centerMost = right2 + calendarWidth > window.document.body.offsetWidth;
8152
8152
  toggleClass(self2.calendarContainer, "rightMost", rightMost);
8153
8153
  if (self2.config.static)
8154
8154
  return;
8155
- self2.calendarContainer.style.top = top + "px";
8155
+ self2.calendarContainer.style.top = top2 + "px";
8156
8156
  if (!rightMost) {
8157
- self2.calendarContainer.style.left = left + "px";
8157
+ self2.calendarContainer.style.left = left2 + "px";
8158
8158
  self2.calendarContainer.style.right = "auto";
8159
8159
  } else if (!centerMost) {
8160
8160
  self2.calendarContainer.style.left = "auto";
8161
- self2.calendarContainer.style.right = right + "px";
8161
+ self2.calendarContainer.style.right = right2 + "px";
8162
8162
  } else {
8163
8163
  var doc = getDocumentStyleSheet();
8164
8164
  if (doc === void 0)
@@ -8313,28 +8313,28 @@ function FlatpickrInstance(element, instanceConfig) {
8313
8313
  self2.redraw();
8314
8314
  updateValue(true);
8315
8315
  }
8316
- function setSelectedDate(inputDate, format) {
8316
+ function setSelectedDate(inputDate, format2) {
8317
8317
  var dates = [];
8318
8318
  if (inputDate instanceof Array)
8319
8319
  dates = inputDate.map(function(d) {
8320
- return self2.parseDate(d, format);
8320
+ return self2.parseDate(d, format2);
8321
8321
  });
8322
8322
  else if (inputDate instanceof Date || typeof inputDate === "number")
8323
- dates = [self2.parseDate(inputDate, format)];
8323
+ dates = [self2.parseDate(inputDate, format2)];
8324
8324
  else if (typeof inputDate === "string") {
8325
8325
  switch (self2.config.mode) {
8326
8326
  case "single":
8327
8327
  case "time":
8328
- dates = [self2.parseDate(inputDate, format)];
8328
+ dates = [self2.parseDate(inputDate, format2)];
8329
8329
  break;
8330
8330
  case "multiple":
8331
8331
  dates = inputDate.split(self2.config.conjunction).map(function(date) {
8332
- return self2.parseDate(date, format);
8332
+ return self2.parseDate(date, format2);
8333
8333
  });
8334
8334
  break;
8335
8335
  case "range":
8336
8336
  dates = inputDate.split(self2.l10n.rangeSeparator).map(function(date) {
8337
- return self2.parseDate(date, format);
8337
+ return self2.parseDate(date, format2);
8338
8338
  });
8339
8339
  break;
8340
8340
  default:
@@ -8350,16 +8350,16 @@ function FlatpickrInstance(element, instanceConfig) {
8350
8350
  return a.getTime() - b.getTime();
8351
8351
  });
8352
8352
  }
8353
- function setDate(date, triggerChange2, format) {
8353
+ function setDate(date, triggerChange2, format2) {
8354
8354
  if (triggerChange2 === void 0) {
8355
8355
  triggerChange2 = false;
8356
8356
  }
8357
- if (format === void 0) {
8358
- format = self2.config.dateFormat;
8357
+ if (format2 === void 0) {
8358
+ format2 = self2.config.dateFormat;
8359
8359
  }
8360
8360
  if (date !== 0 && !date || date instanceof Array && date.length === 0)
8361
8361
  return self2.clear(triggerChange2);
8362
- setSelectedDate(date, format);
8362
+ setSelectedDate(date, format2);
8363
8363
  self2.latestSelectedDateObj = self2.selectedDates[self2.selectedDates.length - 1];
8364
8364
  self2.redraw();
8365
8365
  jumpToDate(void 0, triggerChange2);
@@ -8517,9 +8517,9 @@ function FlatpickrInstance(element, instanceConfig) {
8517
8517
  self2._hideNextMonthArrow = self2.config.maxDate !== void 0 && (self2.currentYear === self2.config.maxDate.getFullYear() ? self2.currentMonth + 1 > self2.config.maxDate.getMonth() : self2.currentYear > self2.config.maxDate.getFullYear());
8518
8518
  }
8519
8519
  function getDateStr(specificFormat) {
8520
- var format = specificFormat || (self2.config.altInput ? self2.config.altFormat : self2.config.dateFormat);
8520
+ var format2 = specificFormat || (self2.config.altInput ? self2.config.altFormat : self2.config.dateFormat);
8521
8521
  return self2.selectedDates.map(function(dObj) {
8522
- return self2.formatDate(dObj, format);
8522
+ return self2.formatDate(dObj, format2);
8523
8523
  }).filter(function(d, i, arr) {
8524
8524
  return self2.config.mode !== "range" || self2.config.enableTime || arr.indexOf(d) === i;
8525
8525
  }).join(self2.config.mode !== "range" ? self2.config.conjunction : self2.l10n.rangeSeparator);
@@ -8558,16 +8558,16 @@ function FlatpickrInstance(element, instanceConfig) {
8558
8558
  if (self2.amPM !== void 0 && eventTarget === self2.amPM) {
8559
8559
  self2.amPM.textContent = self2.l10n.amPM[int(self2.amPM.textContent === self2.l10n.amPM[0])];
8560
8560
  }
8561
- var min = parseFloat(input.getAttribute("min")), max = parseFloat(input.getAttribute("max")), step = parseFloat(input.getAttribute("step")), curValue = parseInt(input.value, 10), delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);
8561
+ var min2 = parseFloat(input.getAttribute("min")), max2 = parseFloat(input.getAttribute("max")), step = parseFloat(input.getAttribute("step")), curValue = parseInt(input.value, 10), delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);
8562
8562
  var newValue = curValue + step * delta;
8563
8563
  if (typeof input.value !== "undefined" && input.value.length === 2) {
8564
8564
  var isHourElem = input === self2.hourElement, isMinuteElem = input === self2.minuteElement;
8565
- if (newValue < min) {
8566
- newValue = max + newValue + int(!isHourElem) + (int(isHourElem) && int(!self2.amPM));
8565
+ if (newValue < min2) {
8566
+ newValue = max2 + newValue + int(!isHourElem) + (int(isHourElem) && int(!self2.amPM));
8567
8567
  if (isMinuteElem)
8568
8568
  incrementNumInput(void 0, -1, self2.hourElement);
8569
- } else if (newValue > max) {
8570
- newValue = input === self2.hourElement ? newValue - max - int(!self2.amPM) : min;
8569
+ } else if (newValue > max2) {
8570
+ newValue = input === self2.hourElement ? newValue - max2 - int(!self2.amPM) : min2;
8571
8571
  if (isMinuteElem)
8572
8572
  incrementNumInput(void 0, 1, self2.hourElement);
8573
8573
  }
@@ -8891,11 +8891,11 @@ var captureMode = {
8891
8891
  capture: false,
8892
8892
  passive: false
8893
8893
  };
8894
- function on(el, event, fn) {
8895
- el.addEventListener(event, fn, !IE11OrLess && captureMode);
8894
+ function on(el, event, fn2) {
8895
+ el.addEventListener(event, fn2, !IE11OrLess && captureMode);
8896
8896
  }
8897
- function off(el, event, fn) {
8898
- el.removeEventListener(event, fn, !IE11OrLess && captureMode);
8897
+ function off(el, event, fn2) {
8898
+ el.removeEventListener(event, fn2, !IE11OrLess && captureMode);
8899
8899
  }
8900
8900
  function matches(el, selector) {
8901
8901
  if (!selector)
@@ -8999,20 +8999,20 @@ function getWindowScrollingElement() {
8999
8999
  function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {
9000
9000
  if (!el.getBoundingClientRect && el !== window)
9001
9001
  return;
9002
- var elRect, top, left, bottom, right, height, width;
9002
+ var elRect, top2, left2, bottom2, right2, height, width;
9003
9003
  if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {
9004
9004
  elRect = el.getBoundingClientRect();
9005
- top = elRect.top;
9006
- left = elRect.left;
9007
- bottom = elRect.bottom;
9008
- right = elRect.right;
9005
+ top2 = elRect.top;
9006
+ left2 = elRect.left;
9007
+ bottom2 = elRect.bottom;
9008
+ right2 = elRect.right;
9009
9009
  height = elRect.height;
9010
9010
  width = elRect.width;
9011
9011
  } else {
9012
- top = 0;
9013
- left = 0;
9014
- bottom = window.innerHeight;
9015
- right = window.innerWidth;
9012
+ top2 = 0;
9013
+ left2 = 0;
9014
+ bottom2 = window.innerHeight;
9015
+ right2 = window.innerWidth;
9016
9016
  height = window.innerHeight;
9017
9017
  width = window.innerWidth;
9018
9018
  }
@@ -9022,10 +9022,10 @@ function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoS
9022
9022
  do {
9023
9023
  if (container && container.getBoundingClientRect && (css(container, "transform") !== "none" || relativeToNonStaticParent && css(container, "position") !== "static")) {
9024
9024
  var containerRect = container.getBoundingClientRect();
9025
- top -= containerRect.top + parseInt(css(container, "border-top-width"));
9026
- left -= containerRect.left + parseInt(css(container, "border-left-width"));
9027
- bottom = top + elRect.height;
9028
- right = left + elRect.width;
9025
+ top2 -= containerRect.top + parseInt(css(container, "border-top-width"));
9026
+ left2 -= containerRect.left + parseInt(css(container, "border-left-width"));
9027
+ bottom2 = top2 + elRect.height;
9028
+ right2 = left2 + elRect.width;
9029
9029
  break;
9030
9030
  }
9031
9031
  } while (container = container.parentNode);
@@ -9034,19 +9034,19 @@ function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoS
9034
9034
  if (undoScale && el !== window) {
9035
9035
  var elMatrix = matrix(container || el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d;
9036
9036
  if (elMatrix) {
9037
- top /= scaleY;
9038
- left /= scaleX;
9037
+ top2 /= scaleY;
9038
+ left2 /= scaleX;
9039
9039
  width /= scaleX;
9040
9040
  height /= scaleY;
9041
- bottom = top + height;
9042
- right = left + width;
9041
+ bottom2 = top2 + height;
9042
+ right2 = left2 + width;
9043
9043
  }
9044
9044
  }
9045
9045
  return {
9046
- top,
9047
- left,
9048
- bottom,
9049
- right,
9046
+ top: top2,
9047
+ left: left2,
9048
+ bottom: bottom2,
9049
+ right: right2,
9050
9050
  width,
9051
9051
  height
9052
9052
  };
@@ -9681,9 +9681,9 @@ function Sortable(el, options) {
9681
9681
  !(name in options) && (options[name] = defaults3[name]);
9682
9682
  }
9683
9683
  _prepareGroup(options);
9684
- for (var fn in this) {
9685
- if (fn.charAt(0) === "_" && typeof this[fn] === "function") {
9686
- this[fn] = this[fn].bind(this);
9684
+ for (var fn2 in this) {
9685
+ if (fn2.charAt(0) === "_" && typeof this[fn2] === "function") {
9686
+ this[fn2] = this[fn2].bind(this);
9687
9687
  }
9688
9688
  }
9689
9689
  this.nativeDraggable = options.forceFallback ? false : supportDraggable;
@@ -10461,16 +10461,16 @@ Sortable.prototype = {
10461
10461
  }
10462
10462
  },
10463
10463
  toArray: function toArray() {
10464
- var order = [], el, children = this.el.children, i = 0, n = children.length, options = this.options;
10464
+ var order2 = [], el, children = this.el.children, i = 0, n = children.length, options = this.options;
10465
10465
  for (; i < n; i++) {
10466
10466
  el = children[i];
10467
10467
  if (closest(el, options.draggable, this.el, false)) {
10468
- order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));
10468
+ order2.push(el.getAttribute(options.dataIdAttr) || _generateId(el));
10469
10469
  }
10470
10470
  }
10471
- return order;
10471
+ return order2;
10472
10472
  },
10473
- sort: function sort(order, useAnimation) {
10473
+ sort: function sort(order2, useAnimation) {
10474
10474
  var items = {}, rootEl2 = this.el;
10475
10475
  this.toArray().forEach(function(id, i) {
10476
10476
  var el = rootEl2.children[i];
@@ -10479,7 +10479,7 @@ Sortable.prototype = {
10479
10479
  }
10480
10480
  }, this);
10481
10481
  useAnimation && this.captureAnimationState();
10482
- order.forEach(function(id) {
10482
+ order2.forEach(function(id) {
10483
10483
  if (items[id]) {
10484
10484
  rootEl2.removeChild(items[id]);
10485
10485
  rootEl2.appendChild(items[id]);
@@ -10663,8 +10663,8 @@ function _saveInputCheckedState(root) {
10663
10663
  el.checked && savedInputChecked.push(el);
10664
10664
  }
10665
10665
  }
10666
- function _nextTick(fn) {
10667
- return setTimeout(fn, 0);
10666
+ function _nextTick(fn2) {
10667
+ return setTimeout(fn2, 0);
10668
10668
  }
10669
10669
  function _cancelNextTick(id) {
10670
10670
  return clearTimeout(id);
@@ -10734,9 +10734,9 @@ function AutoScrollPlugin() {
10734
10734
  scrollSpeed: 10,
10735
10735
  bubbleScroll: true
10736
10736
  };
10737
- for (var fn in this) {
10738
- if (fn.charAt(0) === "_" && typeof this[fn] === "function") {
10739
- this[fn] = this[fn].bind(this);
10737
+ for (var fn2 in this) {
10738
+ if (fn2.charAt(0) === "_" && typeof this[fn2] === "function") {
10739
+ this[fn2] = this[fn2].bind(this);
10740
10740
  }
10741
10741
  }
10742
10742
  }
@@ -10840,7 +10840,7 @@ var autoScroll = throttle(function(evt, options, rootEl2, isFallback) {
10840
10840
  var layersOut = 0;
10841
10841
  var currentParent = scrollEl;
10842
10842
  do {
10843
- var el = currentParent, rect = getRect(el), top = rect.top, bottom = rect.bottom, left = rect.left, right = rect.right, width = rect.width, height = rect.height, canScrollX = void 0, canScrollY = void 0, scrollWidth = el.scrollWidth, scrollHeight = el.scrollHeight, elCSS = css(el), scrollPosX = el.scrollLeft, scrollPosY = el.scrollTop;
10843
+ var el = currentParent, rect = getRect(el), top2 = rect.top, bottom2 = rect.bottom, left2 = rect.left, right2 = rect.right, width = rect.width, height = rect.height, canScrollX = void 0, canScrollY = void 0, scrollWidth = el.scrollWidth, scrollHeight = el.scrollHeight, elCSS = css(el), scrollPosX = el.scrollLeft, scrollPosY = el.scrollTop;
10844
10844
  if (el === winScroller) {
10845
10845
  canScrollX = width < scrollWidth && (elCSS.overflowX === "auto" || elCSS.overflowX === "scroll" || elCSS.overflowX === "visible");
10846
10846
  canScrollY = height < scrollHeight && (elCSS.overflowY === "auto" || elCSS.overflowY === "scroll" || elCSS.overflowY === "visible");
@@ -10848,8 +10848,8 @@ var autoScroll = throttle(function(evt, options, rootEl2, isFallback) {
10848
10848
  canScrollX = width < scrollWidth && (elCSS.overflowX === "auto" || elCSS.overflowX === "scroll");
10849
10849
  canScrollY = height < scrollHeight && (elCSS.overflowY === "auto" || elCSS.overflowY === "scroll");
10850
10850
  }
10851
- var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);
10852
- var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);
10851
+ var vx = canScrollX && (Math.abs(right2 - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left2 - x) <= sens && !!scrollPosX);
10852
+ var vy = canScrollY && (Math.abs(bottom2 - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top2 - y) <= sens && !!scrollPosY);
10853
10853
  if (!autoScrolls[layersOut]) {
10854
10854
  for (var i = 0; i <= layersOut; i++) {
10855
10855
  if (!autoScrolls[i]) {
@@ -11087,8 +11087,10 @@ var media_controller_default = class extends Controller {
11087
11087
  newItem.querySelector('input[name*="[blob_id]"]').value = item.blobId;
11088
11088
  newItem.querySelector('input[name*="[_destroy]"]').value = false;
11089
11089
  const editButton = newItem.querySelector('[data-media-target="editButton"]');
11090
- editButton.setAttribute("href", editButton.getAttribute("href").replace("$1", item.blobId));
11091
- const oldThumbnail = newItem.querySelector(".h-thumbnail");
11090
+ if (editButton) {
11091
+ editButton.setAttribute("href", editButton.getAttribute("href").replace(":id", item.blobId));
11092
+ }
11093
+ const oldThumbnail = newItem.querySelector(".formstrap-thumbnail");
11092
11094
  const newThumbnail = item.thumbnail.cloneNode(true);
11093
11095
  oldThumbnail.parentNode.replaceChild(newThumbnail, oldThumbnail);
11094
11096
  }
@@ -11139,7 +11141,7 @@ var media_controller_default = class extends Controller {
11139
11141
  // app/assets/javascripts/formstrap/controllers/media_modal_controller.js
11140
11142
  var media_modal_controller_default = class extends Controller {
11141
11143
  static get targets() {
11142
- return ["idCheckbox", "item", "form", "selectButton", "placeholder", "count"];
11144
+ return ["idCheckbox", "item", "form", "selectButton", "placeholder", "count", "search", "searchId"];
11143
11145
  }
11144
11146
  static get values() {
11145
11147
  return { ids: Array };
@@ -11153,6 +11155,7 @@ var media_modal_controller_default = class extends Controller {
11153
11155
  }
11154
11156
  submitForm() {
11155
11157
  this.hidePlaceholder();
11158
+ this.search("");
11156
11159
  this.triggerFormSubmission();
11157
11160
  }
11158
11161
  inputChange(event) {
@@ -11162,6 +11165,11 @@ var media_modal_controller_default = class extends Controller {
11162
11165
  hidePlaceholder() {
11163
11166
  this.placeholderTarget.classList.add("d-none");
11164
11167
  }
11168
+ search(string) {
11169
+ const search = this.searchTarget.querySelector("input[name='search']");
11170
+ search.value = string;
11171
+ this.searchTarget.requestSubmit();
11172
+ }
11165
11173
  handleIdsUpdate(element) {
11166
11174
  if (element.checked) {
11167
11175
  const arr = this.idsValue;
@@ -11172,6 +11180,7 @@ var media_modal_controller_default = class extends Controller {
11172
11180
  return element.value !== value;
11173
11181
  });
11174
11182
  }
11183
+ this.handleSearchdIdsUpdate();
11175
11184
  }
11176
11185
  itemTargetConnected(element) {
11177
11186
  this.updateItem(element.querySelector("input"));
@@ -11217,7 +11226,7 @@ var media_modal_controller_default = class extends Controller {
11217
11226
  const element = this.element.querySelector(blobId);
11218
11227
  return {
11219
11228
  blobId: id,
11220
- thumbnail: element ? element.querySelector(".h-thumbnail") : ""
11229
+ thumbnail: element ? element.querySelector(".formstrap-thumbnail") : ""
11221
11230
  };
11222
11231
  }
11223
11232
  selectedItems() {
@@ -11255,6 +11264,1657 @@ var media_modal_controller_default = class extends Controller {
11255
11264
  updateCount() {
11256
11265
  this.countTarget.innerHTML = this.selectedItemsCount();
11257
11266
  }
11267
+ handleSearchdIdsUpdate() {
11268
+ this.deleteSearchIdInputs();
11269
+ this.createSearchIdInputs();
11270
+ }
11271
+ deleteSearchIdInputs() {
11272
+ for (const searchId of this.searchIdTargets) {
11273
+ searchId.remove();
11274
+ }
11275
+ }
11276
+ createSearchIdInputs() {
11277
+ for (const id of this.idsValue) {
11278
+ this.createSearchIdInput(id);
11279
+ }
11280
+ }
11281
+ createSearchIdInput(value) {
11282
+ const input = document.createElement("input");
11283
+ input.type = "hidden";
11284
+ input.name = "ids[]";
11285
+ input.setAttribute("data-media-modal-target", "searchId");
11286
+ input.value = value;
11287
+ this.searchTarget.appendChild(input);
11288
+ }
11289
+ };
11290
+
11291
+ // node_modules/@popperjs/core/lib/enums.js
11292
+ var top = "top";
11293
+ var bottom = "bottom";
11294
+ var right = "right";
11295
+ var left = "left";
11296
+ var auto = "auto";
11297
+ var basePlacements = [top, bottom, right, left];
11298
+ var start = "start";
11299
+ var end = "end";
11300
+ var clippingParents = "clippingParents";
11301
+ var viewport = "viewport";
11302
+ var popper = "popper";
11303
+ var reference = "reference";
11304
+ var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
11305
+ return acc.concat([placement + "-" + start, placement + "-" + end]);
11306
+ }, []);
11307
+ var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
11308
+ return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
11309
+ }, []);
11310
+ var beforeRead = "beforeRead";
11311
+ var read = "read";
11312
+ var afterRead = "afterRead";
11313
+ var beforeMain = "beforeMain";
11314
+ var main = "main";
11315
+ var afterMain = "afterMain";
11316
+ var beforeWrite = "beforeWrite";
11317
+ var write = "write";
11318
+ var afterWrite = "afterWrite";
11319
+ var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
11320
+
11321
+ // node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
11322
+ function getNodeName(element) {
11323
+ return element ? (element.nodeName || "").toLowerCase() : null;
11324
+ }
11325
+
11326
+ // node_modules/@popperjs/core/lib/dom-utils/getWindow.js
11327
+ function getWindow(node) {
11328
+ if (node == null) {
11329
+ return window;
11330
+ }
11331
+ if (node.toString() !== "[object Window]") {
11332
+ var ownerDocument = node.ownerDocument;
11333
+ return ownerDocument ? ownerDocument.defaultView || window : window;
11334
+ }
11335
+ return node;
11336
+ }
11337
+
11338
+ // node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
11339
+ function isElement(node) {
11340
+ var OwnElement = getWindow(node).Element;
11341
+ return node instanceof OwnElement || node instanceof Element;
11342
+ }
11343
+ function isHTMLElement(node) {
11344
+ var OwnElement = getWindow(node).HTMLElement;
11345
+ return node instanceof OwnElement || node instanceof HTMLElement;
11346
+ }
11347
+ function isShadowRoot(node) {
11348
+ if (typeof ShadowRoot === "undefined") {
11349
+ return false;
11350
+ }
11351
+ var OwnElement = getWindow(node).ShadowRoot;
11352
+ return node instanceof OwnElement || node instanceof ShadowRoot;
11353
+ }
11354
+
11355
+ // node_modules/@popperjs/core/lib/modifiers/applyStyles.js
11356
+ function applyStyles(_ref) {
11357
+ var state = _ref.state;
11358
+ Object.keys(state.elements).forEach(function(name) {
11359
+ var style = state.styles[name] || {};
11360
+ var attributes = state.attributes[name] || {};
11361
+ var element = state.elements[name];
11362
+ if (!isHTMLElement(element) || !getNodeName(element)) {
11363
+ return;
11364
+ }
11365
+ Object.assign(element.style, style);
11366
+ Object.keys(attributes).forEach(function(name2) {
11367
+ var value = attributes[name2];
11368
+ if (value === false) {
11369
+ element.removeAttribute(name2);
11370
+ } else {
11371
+ element.setAttribute(name2, value === true ? "" : value);
11372
+ }
11373
+ });
11374
+ });
11375
+ }
11376
+ function effect(_ref2) {
11377
+ var state = _ref2.state;
11378
+ var initialStyles = {
11379
+ popper: {
11380
+ position: state.options.strategy,
11381
+ left: "0",
11382
+ top: "0",
11383
+ margin: "0"
11384
+ },
11385
+ arrow: {
11386
+ position: "absolute"
11387
+ },
11388
+ reference: {}
11389
+ };
11390
+ Object.assign(state.elements.popper.style, initialStyles.popper);
11391
+ state.styles = initialStyles;
11392
+ if (state.elements.arrow) {
11393
+ Object.assign(state.elements.arrow.style, initialStyles.arrow);
11394
+ }
11395
+ return function() {
11396
+ Object.keys(state.elements).forEach(function(name) {
11397
+ var element = state.elements[name];
11398
+ var attributes = state.attributes[name] || {};
11399
+ var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
11400
+ var style = styleProperties.reduce(function(style2, property) {
11401
+ style2[property] = "";
11402
+ return style2;
11403
+ }, {});
11404
+ if (!isHTMLElement(element) || !getNodeName(element)) {
11405
+ return;
11406
+ }
11407
+ Object.assign(element.style, style);
11408
+ Object.keys(attributes).forEach(function(attribute) {
11409
+ element.removeAttribute(attribute);
11410
+ });
11411
+ });
11412
+ };
11413
+ }
11414
+ var applyStyles_default = {
11415
+ name: "applyStyles",
11416
+ enabled: true,
11417
+ phase: "write",
11418
+ fn: applyStyles,
11419
+ effect,
11420
+ requires: ["computeStyles"]
11421
+ };
11422
+
11423
+ // node_modules/@popperjs/core/lib/utils/getBasePlacement.js
11424
+ function getBasePlacement(placement) {
11425
+ return placement.split("-")[0];
11426
+ }
11427
+
11428
+ // node_modules/@popperjs/core/lib/utils/math.js
11429
+ var max = Math.max;
11430
+ var min = Math.min;
11431
+ var round = Math.round;
11432
+
11433
+ // node_modules/@popperjs/core/lib/utils/userAgent.js
11434
+ function getUAString() {
11435
+ var uaData = navigator.userAgentData;
11436
+ if (uaData != null && uaData.brands) {
11437
+ return uaData.brands.map(function(item) {
11438
+ return item.brand + "/" + item.version;
11439
+ }).join(" ");
11440
+ }
11441
+ return navigator.userAgent;
11442
+ }
11443
+
11444
+ // node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
11445
+ function isLayoutViewport() {
11446
+ return !/^((?!chrome|android).)*safari/i.test(getUAString());
11447
+ }
11448
+
11449
+ // node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
11450
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
11451
+ if (includeScale === void 0) {
11452
+ includeScale = false;
11453
+ }
11454
+ if (isFixedStrategy === void 0) {
11455
+ isFixedStrategy = false;
11456
+ }
11457
+ var clientRect = element.getBoundingClientRect();
11458
+ var scaleX = 1;
11459
+ var scaleY = 1;
11460
+ if (includeScale && isHTMLElement(element)) {
11461
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
11462
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
11463
+ }
11464
+ var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
11465
+ var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
11466
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
11467
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
11468
+ var width = clientRect.width / scaleX;
11469
+ var height = clientRect.height / scaleY;
11470
+ return {
11471
+ width,
11472
+ height,
11473
+ top: y,
11474
+ right: x + width,
11475
+ bottom: y + height,
11476
+ left: x,
11477
+ x,
11478
+ y
11479
+ };
11480
+ }
11481
+
11482
+ // node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
11483
+ function getLayoutRect(element) {
11484
+ var clientRect = getBoundingClientRect(element);
11485
+ var width = element.offsetWidth;
11486
+ var height = element.offsetHeight;
11487
+ if (Math.abs(clientRect.width - width) <= 1) {
11488
+ width = clientRect.width;
11489
+ }
11490
+ if (Math.abs(clientRect.height - height) <= 1) {
11491
+ height = clientRect.height;
11492
+ }
11493
+ return {
11494
+ x: element.offsetLeft,
11495
+ y: element.offsetTop,
11496
+ width,
11497
+ height
11498
+ };
11499
+ }
11500
+
11501
+ // node_modules/@popperjs/core/lib/dom-utils/contains.js
11502
+ function contains(parent, child) {
11503
+ var rootNode = child.getRootNode && child.getRootNode();
11504
+ if (parent.contains(child)) {
11505
+ return true;
11506
+ } else if (rootNode && isShadowRoot(rootNode)) {
11507
+ var next = child;
11508
+ do {
11509
+ if (next && parent.isSameNode(next)) {
11510
+ return true;
11511
+ }
11512
+ next = next.parentNode || next.host;
11513
+ } while (next);
11514
+ }
11515
+ return false;
11516
+ }
11517
+
11518
+ // node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
11519
+ function getComputedStyle(element) {
11520
+ return getWindow(element).getComputedStyle(element);
11521
+ }
11522
+
11523
+ // node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
11524
+ function isTableElement(element) {
11525
+ return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
11526
+ }
11527
+
11528
+ // node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
11529
+ function getDocumentElement(element) {
11530
+ return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
11531
+ }
11532
+
11533
+ // node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
11534
+ function getParentNode(element) {
11535
+ if (getNodeName(element) === "html") {
11536
+ return element;
11537
+ }
11538
+ return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
11539
+ }
11540
+
11541
+ // node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
11542
+ function getTrueOffsetParent(element) {
11543
+ if (!isHTMLElement(element) || getComputedStyle(element).position === "fixed") {
11544
+ return null;
11545
+ }
11546
+ return element.offsetParent;
11547
+ }
11548
+ function getContainingBlock(element) {
11549
+ var isFirefox = /firefox/i.test(getUAString());
11550
+ var isIE = /Trident/i.test(getUAString());
11551
+ if (isIE && isHTMLElement(element)) {
11552
+ var elementCss = getComputedStyle(element);
11553
+ if (elementCss.position === "fixed") {
11554
+ return null;
11555
+ }
11556
+ }
11557
+ var currentNode = getParentNode(element);
11558
+ if (isShadowRoot(currentNode)) {
11559
+ currentNode = currentNode.host;
11560
+ }
11561
+ while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
11562
+ var css2 = getComputedStyle(currentNode);
11563
+ if (css2.transform !== "none" || css2.perspective !== "none" || css2.contain === "paint" || ["transform", "perspective"].indexOf(css2.willChange) !== -1 || isFirefox && css2.willChange === "filter" || isFirefox && css2.filter && css2.filter !== "none") {
11564
+ return currentNode;
11565
+ } else {
11566
+ currentNode = currentNode.parentNode;
11567
+ }
11568
+ }
11569
+ return null;
11570
+ }
11571
+ function getOffsetParent(element) {
11572
+ var window2 = getWindow(element);
11573
+ var offsetParent = getTrueOffsetParent(element);
11574
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") {
11575
+ offsetParent = getTrueOffsetParent(offsetParent);
11576
+ }
11577
+ if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static")) {
11578
+ return window2;
11579
+ }
11580
+ return offsetParent || getContainingBlock(element) || window2;
11581
+ }
11582
+
11583
+ // node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
11584
+ function getMainAxisFromPlacement(placement) {
11585
+ return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
11586
+ }
11587
+
11588
+ // node_modules/@popperjs/core/lib/utils/within.js
11589
+ function within(min2, value, max2) {
11590
+ return max(min2, min(value, max2));
11591
+ }
11592
+ function withinMaxClamp(min2, value, max2) {
11593
+ var v = within(min2, value, max2);
11594
+ return v > max2 ? max2 : v;
11595
+ }
11596
+
11597
+ // node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
11598
+ function getFreshSideObject() {
11599
+ return {
11600
+ top: 0,
11601
+ right: 0,
11602
+ bottom: 0,
11603
+ left: 0
11604
+ };
11605
+ }
11606
+
11607
+ // node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
11608
+ function mergePaddingObject(paddingObject) {
11609
+ return Object.assign({}, getFreshSideObject(), paddingObject);
11610
+ }
11611
+
11612
+ // node_modules/@popperjs/core/lib/utils/expandToHashMap.js
11613
+ function expandToHashMap(value, keys) {
11614
+ return keys.reduce(function(hashMap, key) {
11615
+ hashMap[key] = value;
11616
+ return hashMap;
11617
+ }, {});
11618
+ }
11619
+
11620
+ // node_modules/@popperjs/core/lib/modifiers/arrow.js
11621
+ var toPaddingObject = function toPaddingObject2(padding, state) {
11622
+ padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
11623
+ placement: state.placement
11624
+ })) : padding;
11625
+ return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
11626
+ };
11627
+ function arrow(_ref) {
11628
+ var _state$modifiersData$;
11629
+ var state = _ref.state, name = _ref.name, options = _ref.options;
11630
+ var arrowElement = state.elements.arrow;
11631
+ var popperOffsets2 = state.modifiersData.popperOffsets;
11632
+ var basePlacement = getBasePlacement(state.placement);
11633
+ var axis = getMainAxisFromPlacement(basePlacement);
11634
+ var isVertical = [left, right].indexOf(basePlacement) >= 0;
11635
+ var len = isVertical ? "height" : "width";
11636
+ if (!arrowElement || !popperOffsets2) {
11637
+ return;
11638
+ }
11639
+ var paddingObject = toPaddingObject(options.padding, state);
11640
+ var arrowRect = getLayoutRect(arrowElement);
11641
+ var minProp = axis === "y" ? top : left;
11642
+ var maxProp = axis === "y" ? bottom : right;
11643
+ var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
11644
+ var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
11645
+ var arrowOffsetParent = getOffsetParent(arrowElement);
11646
+ var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
11647
+ var centerToReference = endDiff / 2 - startDiff / 2;
11648
+ var min2 = paddingObject[minProp];
11649
+ var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
11650
+ var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
11651
+ var offset2 = within(min2, center, max2);
11652
+ var axisProp = axis;
11653
+ state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
11654
+ }
11655
+ function effect2(_ref2) {
11656
+ var state = _ref2.state, options = _ref2.options;
11657
+ var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
11658
+ if (arrowElement == null) {
11659
+ return;
11660
+ }
11661
+ if (typeof arrowElement === "string") {
11662
+ arrowElement = state.elements.popper.querySelector(arrowElement);
11663
+ if (!arrowElement) {
11664
+ return;
11665
+ }
11666
+ }
11667
+ if (true) {
11668
+ if (!isHTMLElement(arrowElement)) {
11669
+ console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" "));
11670
+ }
11671
+ }
11672
+ if (!contains(state.elements.popper, arrowElement)) {
11673
+ if (true) {
11674
+ console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" "));
11675
+ }
11676
+ return;
11677
+ }
11678
+ state.elements.arrow = arrowElement;
11679
+ }
11680
+ var arrow_default = {
11681
+ name: "arrow",
11682
+ enabled: true,
11683
+ phase: "main",
11684
+ fn: arrow,
11685
+ effect: effect2,
11686
+ requires: ["popperOffsets"],
11687
+ requiresIfExists: ["preventOverflow"]
11688
+ };
11689
+
11690
+ // node_modules/@popperjs/core/lib/utils/getVariation.js
11691
+ function getVariation(placement) {
11692
+ return placement.split("-")[1];
11693
+ }
11694
+
11695
+ // node_modules/@popperjs/core/lib/modifiers/computeStyles.js
11696
+ var unsetSides = {
11697
+ top: "auto",
11698
+ right: "auto",
11699
+ bottom: "auto",
11700
+ left: "auto"
11701
+ };
11702
+ function roundOffsetsByDPR(_ref) {
11703
+ var x = _ref.x, y = _ref.y;
11704
+ var win = window;
11705
+ var dpr = win.devicePixelRatio || 1;
11706
+ return {
11707
+ x: round(x * dpr) / dpr || 0,
11708
+ y: round(y * dpr) / dpr || 0
11709
+ };
11710
+ }
11711
+ function mapToStyles(_ref2) {
11712
+ var _Object$assign2;
11713
+ var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
11714
+ var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
11715
+ var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
11716
+ x,
11717
+ y
11718
+ }) : {
11719
+ x,
11720
+ y
11721
+ };
11722
+ x = _ref3.x;
11723
+ y = _ref3.y;
11724
+ var hasX = offsets.hasOwnProperty("x");
11725
+ var hasY = offsets.hasOwnProperty("y");
11726
+ var sideX = left;
11727
+ var sideY = top;
11728
+ var win = window;
11729
+ if (adaptive) {
11730
+ var offsetParent = getOffsetParent(popper2);
11731
+ var heightProp = "clientHeight";
11732
+ var widthProp = "clientWidth";
11733
+ if (offsetParent === getWindow(popper2)) {
11734
+ offsetParent = getDocumentElement(popper2);
11735
+ if (getComputedStyle(offsetParent).position !== "static" && position === "absolute") {
11736
+ heightProp = "scrollHeight";
11737
+ widthProp = "scrollWidth";
11738
+ }
11739
+ }
11740
+ offsetParent = offsetParent;
11741
+ if (placement === top || (placement === left || placement === right) && variation === end) {
11742
+ sideY = bottom;
11743
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
11744
+ y -= offsetY - popperRect.height;
11745
+ y *= gpuAcceleration ? 1 : -1;
11746
+ }
11747
+ if (placement === left || (placement === top || placement === bottom) && variation === end) {
11748
+ sideX = right;
11749
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
11750
+ x -= offsetX - popperRect.width;
11751
+ x *= gpuAcceleration ? 1 : -1;
11752
+ }
11753
+ }
11754
+ var commonStyles = Object.assign({
11755
+ position
11756
+ }, adaptive && unsetSides);
11757
+ var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
11758
+ x,
11759
+ y
11760
+ }) : {
11761
+ x,
11762
+ y
11763
+ };
11764
+ x = _ref4.x;
11765
+ y = _ref4.y;
11766
+ if (gpuAcceleration) {
11767
+ var _Object$assign;
11768
+ return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
11769
+ }
11770
+ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
11771
+ }
11772
+ function computeStyles(_ref5) {
11773
+ var state = _ref5.state, options = _ref5.options;
11774
+ var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
11775
+ if (true) {
11776
+ var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || "";
11777
+ if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) {
11778
+ return transitionProperty.indexOf(property) >= 0;
11779
+ })) {
11780
+ console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" "));
11781
+ }
11782
+ }
11783
+ var commonStyles = {
11784
+ placement: getBasePlacement(state.placement),
11785
+ variation: getVariation(state.placement),
11786
+ popper: state.elements.popper,
11787
+ popperRect: state.rects.popper,
11788
+ gpuAcceleration,
11789
+ isFixed: state.options.strategy === "fixed"
11790
+ };
11791
+ if (state.modifiersData.popperOffsets != null) {
11792
+ state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
11793
+ offsets: state.modifiersData.popperOffsets,
11794
+ position: state.options.strategy,
11795
+ adaptive,
11796
+ roundOffsets
11797
+ })));
11798
+ }
11799
+ if (state.modifiersData.arrow != null) {
11800
+ state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
11801
+ offsets: state.modifiersData.arrow,
11802
+ position: "absolute",
11803
+ adaptive: false,
11804
+ roundOffsets
11805
+ })));
11806
+ }
11807
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
11808
+ "data-popper-placement": state.placement
11809
+ });
11810
+ }
11811
+ var computeStyles_default = {
11812
+ name: "computeStyles",
11813
+ enabled: true,
11814
+ phase: "beforeWrite",
11815
+ fn: computeStyles,
11816
+ data: {}
11817
+ };
11818
+
11819
+ // node_modules/@popperjs/core/lib/modifiers/eventListeners.js
11820
+ var passive = {
11821
+ passive: true
11822
+ };
11823
+ function effect3(_ref) {
11824
+ var state = _ref.state, instance = _ref.instance, options = _ref.options;
11825
+ var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
11826
+ var window2 = getWindow(state.elements.popper);
11827
+ var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
11828
+ if (scroll) {
11829
+ scrollParents.forEach(function(scrollParent) {
11830
+ scrollParent.addEventListener("scroll", instance.update, passive);
11831
+ });
11832
+ }
11833
+ if (resize) {
11834
+ window2.addEventListener("resize", instance.update, passive);
11835
+ }
11836
+ return function() {
11837
+ if (scroll) {
11838
+ scrollParents.forEach(function(scrollParent) {
11839
+ scrollParent.removeEventListener("scroll", instance.update, passive);
11840
+ });
11841
+ }
11842
+ if (resize) {
11843
+ window2.removeEventListener("resize", instance.update, passive);
11844
+ }
11845
+ };
11846
+ }
11847
+ var eventListeners_default = {
11848
+ name: "eventListeners",
11849
+ enabled: true,
11850
+ phase: "write",
11851
+ fn: function fn() {
11852
+ },
11853
+ effect: effect3,
11854
+ data: {}
11855
+ };
11856
+
11857
+ // node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
11858
+ var hash = {
11859
+ left: "right",
11860
+ right: "left",
11861
+ bottom: "top",
11862
+ top: "bottom"
11863
+ };
11864
+ function getOppositePlacement(placement) {
11865
+ return placement.replace(/left|right|bottom|top/g, function(matched) {
11866
+ return hash[matched];
11867
+ });
11868
+ }
11869
+
11870
+ // node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
11871
+ var hash2 = {
11872
+ start: "end",
11873
+ end: "start"
11874
+ };
11875
+ function getOppositeVariationPlacement(placement) {
11876
+ return placement.replace(/start|end/g, function(matched) {
11877
+ return hash2[matched];
11878
+ });
11879
+ }
11880
+
11881
+ // node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
11882
+ function getWindowScroll(node) {
11883
+ var win = getWindow(node);
11884
+ var scrollLeft = win.pageXOffset;
11885
+ var scrollTop = win.pageYOffset;
11886
+ return {
11887
+ scrollLeft,
11888
+ scrollTop
11889
+ };
11890
+ }
11891
+
11892
+ // node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
11893
+ function getWindowScrollBarX(element) {
11894
+ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
11895
+ }
11896
+
11897
+ // node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
11898
+ function getViewportRect(element, strategy) {
11899
+ var win = getWindow(element);
11900
+ var html = getDocumentElement(element);
11901
+ var visualViewport = win.visualViewport;
11902
+ var width = html.clientWidth;
11903
+ var height = html.clientHeight;
11904
+ var x = 0;
11905
+ var y = 0;
11906
+ if (visualViewport) {
11907
+ width = visualViewport.width;
11908
+ height = visualViewport.height;
11909
+ var layoutViewport = isLayoutViewport();
11910
+ if (layoutViewport || !layoutViewport && strategy === "fixed") {
11911
+ x = visualViewport.offsetLeft;
11912
+ y = visualViewport.offsetTop;
11913
+ }
11914
+ }
11915
+ return {
11916
+ width,
11917
+ height,
11918
+ x: x + getWindowScrollBarX(element),
11919
+ y
11920
+ };
11921
+ }
11922
+
11923
+ // node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
11924
+ function getDocumentRect(element) {
11925
+ var _element$ownerDocumen;
11926
+ var html = getDocumentElement(element);
11927
+ var winScroll = getWindowScroll(element);
11928
+ var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
11929
+ var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
11930
+ var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
11931
+ var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
11932
+ var y = -winScroll.scrollTop;
11933
+ if (getComputedStyle(body || html).direction === "rtl") {
11934
+ x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
11935
+ }
11936
+ return {
11937
+ width,
11938
+ height,
11939
+ x,
11940
+ y
11941
+ };
11942
+ }
11943
+
11944
+ // node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
11945
+ function isScrollParent(element) {
11946
+ var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
11947
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
11948
+ }
11949
+
11950
+ // node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
11951
+ function getScrollParent(node) {
11952
+ if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
11953
+ return node.ownerDocument.body;
11954
+ }
11955
+ if (isHTMLElement(node) && isScrollParent(node)) {
11956
+ return node;
11957
+ }
11958
+ return getScrollParent(getParentNode(node));
11959
+ }
11960
+
11961
+ // node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
11962
+ function listScrollParents(element, list) {
11963
+ var _element$ownerDocumen;
11964
+ if (list === void 0) {
11965
+ list = [];
11966
+ }
11967
+ var scrollParent = getScrollParent(element);
11968
+ var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
11969
+ var win = getWindow(scrollParent);
11970
+ var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
11971
+ var updatedList = list.concat(target);
11972
+ return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
11973
+ }
11974
+
11975
+ // node_modules/@popperjs/core/lib/utils/rectToClientRect.js
11976
+ function rectToClientRect(rect) {
11977
+ return Object.assign({}, rect, {
11978
+ left: rect.x,
11979
+ top: rect.y,
11980
+ right: rect.x + rect.width,
11981
+ bottom: rect.y + rect.height
11982
+ });
11983
+ }
11984
+
11985
+ // node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
11986
+ function getInnerBoundingClientRect(element, strategy) {
11987
+ var rect = getBoundingClientRect(element, false, strategy === "fixed");
11988
+ rect.top = rect.top + element.clientTop;
11989
+ rect.left = rect.left + element.clientLeft;
11990
+ rect.bottom = rect.top + element.clientHeight;
11991
+ rect.right = rect.left + element.clientWidth;
11992
+ rect.width = element.clientWidth;
11993
+ rect.height = element.clientHeight;
11994
+ rect.x = rect.left;
11995
+ rect.y = rect.top;
11996
+ return rect;
11997
+ }
11998
+ function getClientRectFromMixedType(element, clippingParent, strategy) {
11999
+ return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
12000
+ }
12001
+ function getClippingParents(element) {
12002
+ var clippingParents2 = listScrollParents(getParentNode(element));
12003
+ var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle(element).position) >= 0;
12004
+ var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
12005
+ if (!isElement(clipperElement)) {
12006
+ return [];
12007
+ }
12008
+ return clippingParents2.filter(function(clippingParent) {
12009
+ return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
12010
+ });
12011
+ }
12012
+ function getClippingRect(element, boundary, rootBoundary, strategy) {
12013
+ var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
12014
+ var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
12015
+ var firstClippingParent = clippingParents2[0];
12016
+ var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
12017
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
12018
+ accRect.top = max(rect.top, accRect.top);
12019
+ accRect.right = min(rect.right, accRect.right);
12020
+ accRect.bottom = min(rect.bottom, accRect.bottom);
12021
+ accRect.left = max(rect.left, accRect.left);
12022
+ return accRect;
12023
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
12024
+ clippingRect.width = clippingRect.right - clippingRect.left;
12025
+ clippingRect.height = clippingRect.bottom - clippingRect.top;
12026
+ clippingRect.x = clippingRect.left;
12027
+ clippingRect.y = clippingRect.top;
12028
+ return clippingRect;
12029
+ }
12030
+
12031
+ // node_modules/@popperjs/core/lib/utils/computeOffsets.js
12032
+ function computeOffsets(_ref) {
12033
+ var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
12034
+ var basePlacement = placement ? getBasePlacement(placement) : null;
12035
+ var variation = placement ? getVariation(placement) : null;
12036
+ var commonX = reference2.x + reference2.width / 2 - element.width / 2;
12037
+ var commonY = reference2.y + reference2.height / 2 - element.height / 2;
12038
+ var offsets;
12039
+ switch (basePlacement) {
12040
+ case top:
12041
+ offsets = {
12042
+ x: commonX,
12043
+ y: reference2.y - element.height
12044
+ };
12045
+ break;
12046
+ case bottom:
12047
+ offsets = {
12048
+ x: commonX,
12049
+ y: reference2.y + reference2.height
12050
+ };
12051
+ break;
12052
+ case right:
12053
+ offsets = {
12054
+ x: reference2.x + reference2.width,
12055
+ y: commonY
12056
+ };
12057
+ break;
12058
+ case left:
12059
+ offsets = {
12060
+ x: reference2.x - element.width,
12061
+ y: commonY
12062
+ };
12063
+ break;
12064
+ default:
12065
+ offsets = {
12066
+ x: reference2.x,
12067
+ y: reference2.y
12068
+ };
12069
+ }
12070
+ var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
12071
+ if (mainAxis != null) {
12072
+ var len = mainAxis === "y" ? "height" : "width";
12073
+ switch (variation) {
12074
+ case start:
12075
+ offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
12076
+ break;
12077
+ case end:
12078
+ offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
12079
+ break;
12080
+ default:
12081
+ }
12082
+ }
12083
+ return offsets;
12084
+ }
12085
+
12086
+ // node_modules/@popperjs/core/lib/utils/detectOverflow.js
12087
+ function detectOverflow(state, options) {
12088
+ if (options === void 0) {
12089
+ options = {};
12090
+ }
12091
+ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
12092
+ var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
12093
+ var altContext = elementContext === popper ? reference : popper;
12094
+ var popperRect = state.rects.popper;
12095
+ var element = state.elements[altBoundary ? altContext : elementContext];
12096
+ var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
12097
+ var referenceClientRect = getBoundingClientRect(state.elements.reference);
12098
+ var popperOffsets2 = computeOffsets({
12099
+ reference: referenceClientRect,
12100
+ element: popperRect,
12101
+ strategy: "absolute",
12102
+ placement
12103
+ });
12104
+ var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
12105
+ var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
12106
+ var overflowOffsets = {
12107
+ top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
12108
+ bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
12109
+ left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
12110
+ right: elementClientRect.right - clippingClientRect.right + paddingObject.right
12111
+ };
12112
+ var offsetData = state.modifiersData.offset;
12113
+ if (elementContext === popper && offsetData) {
12114
+ var offset2 = offsetData[placement];
12115
+ Object.keys(overflowOffsets).forEach(function(key) {
12116
+ var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
12117
+ var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
12118
+ overflowOffsets[key] += offset2[axis] * multiply;
12119
+ });
12120
+ }
12121
+ return overflowOffsets;
12122
+ }
12123
+
12124
+ // node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
12125
+ function computeAutoPlacement(state, options) {
12126
+ if (options === void 0) {
12127
+ options = {};
12128
+ }
12129
+ var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
12130
+ var variation = getVariation(placement);
12131
+ var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
12132
+ return getVariation(placement2) === variation;
12133
+ }) : basePlacements;
12134
+ var allowedPlacements = placements2.filter(function(placement2) {
12135
+ return allowedAutoPlacements.indexOf(placement2) >= 0;
12136
+ });
12137
+ if (allowedPlacements.length === 0) {
12138
+ allowedPlacements = placements2;
12139
+ if (true) {
12140
+ console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" "));
12141
+ }
12142
+ }
12143
+ var overflows = allowedPlacements.reduce(function(acc, placement2) {
12144
+ acc[placement2] = detectOverflow(state, {
12145
+ placement: placement2,
12146
+ boundary,
12147
+ rootBoundary,
12148
+ padding
12149
+ })[getBasePlacement(placement2)];
12150
+ return acc;
12151
+ }, {});
12152
+ return Object.keys(overflows).sort(function(a, b) {
12153
+ return overflows[a] - overflows[b];
12154
+ });
12155
+ }
12156
+
12157
+ // node_modules/@popperjs/core/lib/modifiers/flip.js
12158
+ function getExpandedFallbackPlacements(placement) {
12159
+ if (getBasePlacement(placement) === auto) {
12160
+ return [];
12161
+ }
12162
+ var oppositePlacement = getOppositePlacement(placement);
12163
+ return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
12164
+ }
12165
+ function flip(_ref) {
12166
+ var state = _ref.state, options = _ref.options, name = _ref.name;
12167
+ if (state.modifiersData[name]._skip) {
12168
+ return;
12169
+ }
12170
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
12171
+ var preferredPlacement = state.options.placement;
12172
+ var basePlacement = getBasePlacement(preferredPlacement);
12173
+ var isBasePlacement = basePlacement === preferredPlacement;
12174
+ var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
12175
+ var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
12176
+ return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
12177
+ placement: placement2,
12178
+ boundary,
12179
+ rootBoundary,
12180
+ padding,
12181
+ flipVariations,
12182
+ allowedAutoPlacements
12183
+ }) : placement2);
12184
+ }, []);
12185
+ var referenceRect = state.rects.reference;
12186
+ var popperRect = state.rects.popper;
12187
+ var checksMap = /* @__PURE__ */ new Map();
12188
+ var makeFallbackChecks = true;
12189
+ var firstFittingPlacement = placements2[0];
12190
+ for (var i = 0; i < placements2.length; i++) {
12191
+ var placement = placements2[i];
12192
+ var _basePlacement = getBasePlacement(placement);
12193
+ var isStartVariation = getVariation(placement) === start;
12194
+ var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
12195
+ var len = isVertical ? "width" : "height";
12196
+ var overflow = detectOverflow(state, {
12197
+ placement,
12198
+ boundary,
12199
+ rootBoundary,
12200
+ altBoundary,
12201
+ padding
12202
+ });
12203
+ var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
12204
+ if (referenceRect[len] > popperRect[len]) {
12205
+ mainVariationSide = getOppositePlacement(mainVariationSide);
12206
+ }
12207
+ var altVariationSide = getOppositePlacement(mainVariationSide);
12208
+ var checks = [];
12209
+ if (checkMainAxis) {
12210
+ checks.push(overflow[_basePlacement] <= 0);
12211
+ }
12212
+ if (checkAltAxis) {
12213
+ checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
12214
+ }
12215
+ if (checks.every(function(check) {
12216
+ return check;
12217
+ })) {
12218
+ firstFittingPlacement = placement;
12219
+ makeFallbackChecks = false;
12220
+ break;
12221
+ }
12222
+ checksMap.set(placement, checks);
12223
+ }
12224
+ if (makeFallbackChecks) {
12225
+ var numberOfChecks = flipVariations ? 3 : 1;
12226
+ var _loop = function _loop2(_i2) {
12227
+ var fittingPlacement = placements2.find(function(placement2) {
12228
+ var checks2 = checksMap.get(placement2);
12229
+ if (checks2) {
12230
+ return checks2.slice(0, _i2).every(function(check) {
12231
+ return check;
12232
+ });
12233
+ }
12234
+ });
12235
+ if (fittingPlacement) {
12236
+ firstFittingPlacement = fittingPlacement;
12237
+ return "break";
12238
+ }
12239
+ };
12240
+ for (var _i = numberOfChecks; _i > 0; _i--) {
12241
+ var _ret = _loop(_i);
12242
+ if (_ret === "break")
12243
+ break;
12244
+ }
12245
+ }
12246
+ if (state.placement !== firstFittingPlacement) {
12247
+ state.modifiersData[name]._skip = true;
12248
+ state.placement = firstFittingPlacement;
12249
+ state.reset = true;
12250
+ }
12251
+ }
12252
+ var flip_default = {
12253
+ name: "flip",
12254
+ enabled: true,
12255
+ phase: "main",
12256
+ fn: flip,
12257
+ requiresIfExists: ["offset"],
12258
+ data: {
12259
+ _skip: false
12260
+ }
12261
+ };
12262
+
12263
+ // node_modules/@popperjs/core/lib/modifiers/hide.js
12264
+ function getSideOffsets(overflow, rect, preventedOffsets) {
12265
+ if (preventedOffsets === void 0) {
12266
+ preventedOffsets = {
12267
+ x: 0,
12268
+ y: 0
12269
+ };
12270
+ }
12271
+ return {
12272
+ top: overflow.top - rect.height - preventedOffsets.y,
12273
+ right: overflow.right - rect.width + preventedOffsets.x,
12274
+ bottom: overflow.bottom - rect.height + preventedOffsets.y,
12275
+ left: overflow.left - rect.width - preventedOffsets.x
12276
+ };
12277
+ }
12278
+ function isAnySideFullyClipped(overflow) {
12279
+ return [top, right, bottom, left].some(function(side) {
12280
+ return overflow[side] >= 0;
12281
+ });
12282
+ }
12283
+ function hide(_ref) {
12284
+ var state = _ref.state, name = _ref.name;
12285
+ var referenceRect = state.rects.reference;
12286
+ var popperRect = state.rects.popper;
12287
+ var preventedOffsets = state.modifiersData.preventOverflow;
12288
+ var referenceOverflow = detectOverflow(state, {
12289
+ elementContext: "reference"
12290
+ });
12291
+ var popperAltOverflow = detectOverflow(state, {
12292
+ altBoundary: true
12293
+ });
12294
+ var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
12295
+ var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
12296
+ var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
12297
+ var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
12298
+ state.modifiersData[name] = {
12299
+ referenceClippingOffsets,
12300
+ popperEscapeOffsets,
12301
+ isReferenceHidden,
12302
+ hasPopperEscaped
12303
+ };
12304
+ state.attributes.popper = Object.assign({}, state.attributes.popper, {
12305
+ "data-popper-reference-hidden": isReferenceHidden,
12306
+ "data-popper-escaped": hasPopperEscaped
12307
+ });
12308
+ }
12309
+ var hide_default = {
12310
+ name: "hide",
12311
+ enabled: true,
12312
+ phase: "main",
12313
+ requiresIfExists: ["preventOverflow"],
12314
+ fn: hide
12315
+ };
12316
+
12317
+ // node_modules/@popperjs/core/lib/modifiers/offset.js
12318
+ function distanceAndSkiddingToXY(placement, rects, offset2) {
12319
+ var basePlacement = getBasePlacement(placement);
12320
+ var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
12321
+ var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
12322
+ placement
12323
+ })) : offset2, skidding = _ref[0], distance = _ref[1];
12324
+ skidding = skidding || 0;
12325
+ distance = (distance || 0) * invertDistance;
12326
+ return [left, right].indexOf(basePlacement) >= 0 ? {
12327
+ x: distance,
12328
+ y: skidding
12329
+ } : {
12330
+ x: skidding,
12331
+ y: distance
12332
+ };
12333
+ }
12334
+ function offset(_ref2) {
12335
+ var state = _ref2.state, options = _ref2.options, name = _ref2.name;
12336
+ var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
12337
+ var data = placements.reduce(function(acc, placement) {
12338
+ acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
12339
+ return acc;
12340
+ }, {});
12341
+ var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
12342
+ if (state.modifiersData.popperOffsets != null) {
12343
+ state.modifiersData.popperOffsets.x += x;
12344
+ state.modifiersData.popperOffsets.y += y;
12345
+ }
12346
+ state.modifiersData[name] = data;
12347
+ }
12348
+ var offset_default = {
12349
+ name: "offset",
12350
+ enabled: true,
12351
+ phase: "main",
12352
+ requires: ["popperOffsets"],
12353
+ fn: offset
12354
+ };
12355
+
12356
+ // node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
12357
+ function popperOffsets(_ref) {
12358
+ var state = _ref.state, name = _ref.name;
12359
+ state.modifiersData[name] = computeOffsets({
12360
+ reference: state.rects.reference,
12361
+ element: state.rects.popper,
12362
+ strategy: "absolute",
12363
+ placement: state.placement
12364
+ });
12365
+ }
12366
+ var popperOffsets_default = {
12367
+ name: "popperOffsets",
12368
+ enabled: true,
12369
+ phase: "read",
12370
+ fn: popperOffsets,
12371
+ data: {}
12372
+ };
12373
+
12374
+ // node_modules/@popperjs/core/lib/utils/getAltAxis.js
12375
+ function getAltAxis(axis) {
12376
+ return axis === "x" ? "y" : "x";
12377
+ }
12378
+
12379
+ // node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
12380
+ function preventOverflow(_ref) {
12381
+ var state = _ref.state, options = _ref.options, name = _ref.name;
12382
+ var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
12383
+ var overflow = detectOverflow(state, {
12384
+ boundary,
12385
+ rootBoundary,
12386
+ padding,
12387
+ altBoundary
12388
+ });
12389
+ var basePlacement = getBasePlacement(state.placement);
12390
+ var variation = getVariation(state.placement);
12391
+ var isBasePlacement = !variation;
12392
+ var mainAxis = getMainAxisFromPlacement(basePlacement);
12393
+ var altAxis = getAltAxis(mainAxis);
12394
+ var popperOffsets2 = state.modifiersData.popperOffsets;
12395
+ var referenceRect = state.rects.reference;
12396
+ var popperRect = state.rects.popper;
12397
+ var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
12398
+ placement: state.placement
12399
+ })) : tetherOffset;
12400
+ var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
12401
+ mainAxis: tetherOffsetValue,
12402
+ altAxis: tetherOffsetValue
12403
+ } : Object.assign({
12404
+ mainAxis: 0,
12405
+ altAxis: 0
12406
+ }, tetherOffsetValue);
12407
+ var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
12408
+ var data = {
12409
+ x: 0,
12410
+ y: 0
12411
+ };
12412
+ if (!popperOffsets2) {
12413
+ return;
12414
+ }
12415
+ if (checkMainAxis) {
12416
+ var _offsetModifierState$;
12417
+ var mainSide = mainAxis === "y" ? top : left;
12418
+ var altSide = mainAxis === "y" ? bottom : right;
12419
+ var len = mainAxis === "y" ? "height" : "width";
12420
+ var offset2 = popperOffsets2[mainAxis];
12421
+ var min2 = offset2 + overflow[mainSide];
12422
+ var max2 = offset2 - overflow[altSide];
12423
+ var additive = tether ? -popperRect[len] / 2 : 0;
12424
+ var minLen = variation === start ? referenceRect[len] : popperRect[len];
12425
+ var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
12426
+ var arrowElement = state.elements.arrow;
12427
+ var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
12428
+ width: 0,
12429
+ height: 0
12430
+ };
12431
+ var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
12432
+ var arrowPaddingMin = arrowPaddingObject[mainSide];
12433
+ var arrowPaddingMax = arrowPaddingObject[altSide];
12434
+ var arrowLen = within(0, referenceRect[len], arrowRect[len]);
12435
+ var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
12436
+ var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
12437
+ var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
12438
+ var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
12439
+ var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
12440
+ var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
12441
+ var tetherMax = offset2 + maxOffset - offsetModifierValue;
12442
+ var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);
12443
+ popperOffsets2[mainAxis] = preventedOffset;
12444
+ data[mainAxis] = preventedOffset - offset2;
12445
+ }
12446
+ if (checkAltAxis) {
12447
+ var _offsetModifierState$2;
12448
+ var _mainSide = mainAxis === "x" ? top : left;
12449
+ var _altSide = mainAxis === "x" ? bottom : right;
12450
+ var _offset = popperOffsets2[altAxis];
12451
+ var _len = altAxis === "y" ? "height" : "width";
12452
+ var _min = _offset + overflow[_mainSide];
12453
+ var _max = _offset - overflow[_altSide];
12454
+ var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
12455
+ var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
12456
+ var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
12457
+ var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
12458
+ var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
12459
+ popperOffsets2[altAxis] = _preventedOffset;
12460
+ data[altAxis] = _preventedOffset - _offset;
12461
+ }
12462
+ state.modifiersData[name] = data;
12463
+ }
12464
+ var preventOverflow_default = {
12465
+ name: "preventOverflow",
12466
+ enabled: true,
12467
+ phase: "main",
12468
+ fn: preventOverflow,
12469
+ requiresIfExists: ["offset"]
12470
+ };
12471
+
12472
+ // node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
12473
+ function getHTMLElementScroll(element) {
12474
+ return {
12475
+ scrollLeft: element.scrollLeft,
12476
+ scrollTop: element.scrollTop
12477
+ };
12478
+ }
12479
+
12480
+ // node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
12481
+ function getNodeScroll(node) {
12482
+ if (node === getWindow(node) || !isHTMLElement(node)) {
12483
+ return getWindowScroll(node);
12484
+ } else {
12485
+ return getHTMLElementScroll(node);
12486
+ }
12487
+ }
12488
+
12489
+ // node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
12490
+ function isElementScaled(element) {
12491
+ var rect = element.getBoundingClientRect();
12492
+ var scaleX = round(rect.width) / element.offsetWidth || 1;
12493
+ var scaleY = round(rect.height) / element.offsetHeight || 1;
12494
+ return scaleX !== 1 || scaleY !== 1;
12495
+ }
12496
+ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
12497
+ if (isFixed === void 0) {
12498
+ isFixed = false;
12499
+ }
12500
+ var isOffsetParentAnElement = isHTMLElement(offsetParent);
12501
+ var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
12502
+ var documentElement = getDocumentElement(offsetParent);
12503
+ var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
12504
+ var scroll = {
12505
+ scrollLeft: 0,
12506
+ scrollTop: 0
12507
+ };
12508
+ var offsets = {
12509
+ x: 0,
12510
+ y: 0
12511
+ };
12512
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
12513
+ if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
12514
+ scroll = getNodeScroll(offsetParent);
12515
+ }
12516
+ if (isHTMLElement(offsetParent)) {
12517
+ offsets = getBoundingClientRect(offsetParent, true);
12518
+ offsets.x += offsetParent.clientLeft;
12519
+ offsets.y += offsetParent.clientTop;
12520
+ } else if (documentElement) {
12521
+ offsets.x = getWindowScrollBarX(documentElement);
12522
+ }
12523
+ }
12524
+ return {
12525
+ x: rect.left + scroll.scrollLeft - offsets.x,
12526
+ y: rect.top + scroll.scrollTop - offsets.y,
12527
+ width: rect.width,
12528
+ height: rect.height
12529
+ };
12530
+ }
12531
+
12532
+ // node_modules/@popperjs/core/lib/utils/orderModifiers.js
12533
+ function order(modifiers) {
12534
+ var map = /* @__PURE__ */ new Map();
12535
+ var visited = /* @__PURE__ */ new Set();
12536
+ var result = [];
12537
+ modifiers.forEach(function(modifier) {
12538
+ map.set(modifier.name, modifier);
12539
+ });
12540
+ function sort2(modifier) {
12541
+ visited.add(modifier.name);
12542
+ var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
12543
+ requires.forEach(function(dep) {
12544
+ if (!visited.has(dep)) {
12545
+ var depModifier = map.get(dep);
12546
+ if (depModifier) {
12547
+ sort2(depModifier);
12548
+ }
12549
+ }
12550
+ });
12551
+ result.push(modifier);
12552
+ }
12553
+ modifiers.forEach(function(modifier) {
12554
+ if (!visited.has(modifier.name)) {
12555
+ sort2(modifier);
12556
+ }
12557
+ });
12558
+ return result;
12559
+ }
12560
+ function orderModifiers(modifiers) {
12561
+ var orderedModifiers = order(modifiers);
12562
+ return modifierPhases.reduce(function(acc, phase) {
12563
+ return acc.concat(orderedModifiers.filter(function(modifier) {
12564
+ return modifier.phase === phase;
12565
+ }));
12566
+ }, []);
12567
+ }
12568
+
12569
+ // node_modules/@popperjs/core/lib/utils/debounce.js
12570
+ function debounce2(fn2) {
12571
+ var pending;
12572
+ return function() {
12573
+ if (!pending) {
12574
+ pending = new Promise(function(resolve) {
12575
+ Promise.resolve().then(function() {
12576
+ pending = void 0;
12577
+ resolve(fn2());
12578
+ });
12579
+ });
12580
+ }
12581
+ return pending;
12582
+ };
12583
+ }
12584
+
12585
+ // node_modules/@popperjs/core/lib/utils/format.js
12586
+ function format(str) {
12587
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
12588
+ args[_key - 1] = arguments[_key];
12589
+ }
12590
+ return [].concat(args).reduce(function(p, c) {
12591
+ return p.replace(/%s/, c);
12592
+ }, str);
12593
+ }
12594
+
12595
+ // node_modules/@popperjs/core/lib/utils/validateModifiers.js
12596
+ var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
12597
+ var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
12598
+ var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"];
12599
+ function validateModifiers(modifiers) {
12600
+ modifiers.forEach(function(modifier) {
12601
+ [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index2, self2) {
12602
+ return self2.indexOf(value) === index2;
12603
+ }).forEach(function(key) {
12604
+ switch (key) {
12605
+ case "name":
12606
+ if (typeof modifier.name !== "string") {
12607
+ console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"'));
12608
+ }
12609
+ break;
12610
+ case "enabled":
12611
+ if (typeof modifier.enabled !== "boolean") {
12612
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"'));
12613
+ }
12614
+ break;
12615
+ case "phase":
12616
+ if (modifierPhases.indexOf(modifier.phase) < 0) {
12617
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"'));
12618
+ }
12619
+ break;
12620
+ case "fn":
12621
+ if (typeof modifier.fn !== "function") {
12622
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"'));
12623
+ }
12624
+ break;
12625
+ case "effect":
12626
+ if (modifier.effect != null && typeof modifier.effect !== "function") {
12627
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"'));
12628
+ }
12629
+ break;
12630
+ case "requires":
12631
+ if (modifier.requires != null && !Array.isArray(modifier.requires)) {
12632
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"'));
12633
+ }
12634
+ break;
12635
+ case "requiresIfExists":
12636
+ if (!Array.isArray(modifier.requiresIfExists)) {
12637
+ console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"'));
12638
+ }
12639
+ break;
12640
+ case "options":
12641
+ case "data":
12642
+ break;
12643
+ default:
12644
+ console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) {
12645
+ return '"' + s + '"';
12646
+ }).join(", ") + '; but "' + key + '" was provided.');
12647
+ }
12648
+ modifier.requires && modifier.requires.forEach(function(requirement) {
12649
+ if (modifiers.find(function(mod) {
12650
+ return mod.name === requirement;
12651
+ }) == null) {
12652
+ console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
12653
+ }
12654
+ });
12655
+ });
12656
+ });
12657
+ }
12658
+
12659
+ // node_modules/@popperjs/core/lib/utils/uniqueBy.js
12660
+ function uniqueBy(arr, fn2) {
12661
+ var identifiers = /* @__PURE__ */ new Set();
12662
+ return arr.filter(function(item) {
12663
+ var identifier = fn2(item);
12664
+ if (!identifiers.has(identifier)) {
12665
+ identifiers.add(identifier);
12666
+ return true;
12667
+ }
12668
+ });
12669
+ }
12670
+
12671
+ // node_modules/@popperjs/core/lib/utils/mergeByName.js
12672
+ function mergeByName(modifiers) {
12673
+ var merged = modifiers.reduce(function(merged2, current) {
12674
+ var existing = merged2[current.name];
12675
+ merged2[current.name] = existing ? Object.assign({}, existing, current, {
12676
+ options: Object.assign({}, existing.options, current.options),
12677
+ data: Object.assign({}, existing.data, current.data)
12678
+ }) : current;
12679
+ return merged2;
12680
+ }, {});
12681
+ return Object.keys(merged).map(function(key) {
12682
+ return merged[key];
12683
+ });
12684
+ }
12685
+
12686
+ // node_modules/@popperjs/core/lib/createPopper.js
12687
+ var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.";
12688
+ var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.";
12689
+ var DEFAULT_OPTIONS = {
12690
+ placement: "bottom",
12691
+ modifiers: [],
12692
+ strategy: "absolute"
12693
+ };
12694
+ function areValidElements() {
12695
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12696
+ args[_key] = arguments[_key];
12697
+ }
12698
+ return !args.some(function(element) {
12699
+ return !(element && typeof element.getBoundingClientRect === "function");
12700
+ });
12701
+ }
12702
+ function popperGenerator(generatorOptions) {
12703
+ if (generatorOptions === void 0) {
12704
+ generatorOptions = {};
12705
+ }
12706
+ var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
12707
+ return function createPopper2(reference2, popper2, options) {
12708
+ if (options === void 0) {
12709
+ options = defaultOptions;
12710
+ }
12711
+ var state = {
12712
+ placement: "bottom",
12713
+ orderedModifiers: [],
12714
+ options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
12715
+ modifiersData: {},
12716
+ elements: {
12717
+ reference: reference2,
12718
+ popper: popper2
12719
+ },
12720
+ attributes: {},
12721
+ styles: {}
12722
+ };
12723
+ var effectCleanupFns = [];
12724
+ var isDestroyed = false;
12725
+ var instance = {
12726
+ state,
12727
+ setOptions: function setOptions(setOptionsAction) {
12728
+ var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
12729
+ cleanupModifierEffects();
12730
+ state.options = Object.assign({}, defaultOptions, state.options, options2);
12731
+ state.scrollParents = {
12732
+ reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
12733
+ popper: listScrollParents(popper2)
12734
+ };
12735
+ var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
12736
+ state.orderedModifiers = orderedModifiers.filter(function(m) {
12737
+ return m.enabled;
12738
+ });
12739
+ if (true) {
12740
+ var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {
12741
+ var name = _ref.name;
12742
+ return name;
12743
+ });
12744
+ validateModifiers(modifiers);
12745
+ if (getBasePlacement(state.options.placement) === auto) {
12746
+ var flipModifier = state.orderedModifiers.find(function(_ref2) {
12747
+ var name = _ref2.name;
12748
+ return name === "flip";
12749
+ });
12750
+ if (!flipModifier) {
12751
+ console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" "));
12752
+ }
12753
+ }
12754
+ var _getComputedStyle = getComputedStyle(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft;
12755
+ if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {
12756
+ return parseFloat(margin);
12757
+ })) {
12758
+ console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" "));
12759
+ }
12760
+ }
12761
+ runModifierEffects();
12762
+ return instance.update();
12763
+ },
12764
+ forceUpdate: function forceUpdate() {
12765
+ if (isDestroyed) {
12766
+ return;
12767
+ }
12768
+ var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
12769
+ if (!areValidElements(reference3, popper3)) {
12770
+ if (true) {
12771
+ console.error(INVALID_ELEMENT_ERROR);
12772
+ }
12773
+ return;
12774
+ }
12775
+ state.rects = {
12776
+ reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
12777
+ popper: getLayoutRect(popper3)
12778
+ };
12779
+ state.reset = false;
12780
+ state.placement = state.options.placement;
12781
+ state.orderedModifiers.forEach(function(modifier) {
12782
+ return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
12783
+ });
12784
+ var __debug_loops__ = 0;
12785
+ for (var index2 = 0; index2 < state.orderedModifiers.length; index2++) {
12786
+ if (true) {
12787
+ __debug_loops__ += 1;
12788
+ if (__debug_loops__ > 100) {
12789
+ console.error(INFINITE_LOOP_ERROR);
12790
+ break;
12791
+ }
12792
+ }
12793
+ if (state.reset === true) {
12794
+ state.reset = false;
12795
+ index2 = -1;
12796
+ continue;
12797
+ }
12798
+ var _state$orderedModifie = state.orderedModifiers[index2], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
12799
+ if (typeof fn2 === "function") {
12800
+ state = fn2({
12801
+ state,
12802
+ options: _options,
12803
+ name,
12804
+ instance
12805
+ }) || state;
12806
+ }
12807
+ }
12808
+ },
12809
+ update: debounce2(function() {
12810
+ return new Promise(function(resolve) {
12811
+ instance.forceUpdate();
12812
+ resolve(state);
12813
+ });
12814
+ }),
12815
+ destroy: function destroy2() {
12816
+ cleanupModifierEffects();
12817
+ isDestroyed = true;
12818
+ }
12819
+ };
12820
+ if (!areValidElements(reference2, popper2)) {
12821
+ if (true) {
12822
+ console.error(INVALID_ELEMENT_ERROR);
12823
+ }
12824
+ return instance;
12825
+ }
12826
+ instance.setOptions(options).then(function(state2) {
12827
+ if (!isDestroyed && options.onFirstUpdate) {
12828
+ options.onFirstUpdate(state2);
12829
+ }
12830
+ });
12831
+ function runModifierEffects() {
12832
+ state.orderedModifiers.forEach(function(_ref3) {
12833
+ var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect4 = _ref3.effect;
12834
+ if (typeof effect4 === "function") {
12835
+ var cleanupFn = effect4({
12836
+ state,
12837
+ name,
12838
+ instance,
12839
+ options: options2
12840
+ });
12841
+ var noopFn = function noopFn2() {
12842
+ };
12843
+ effectCleanupFns.push(cleanupFn || noopFn);
12844
+ }
12845
+ });
12846
+ }
12847
+ function cleanupModifierEffects() {
12848
+ effectCleanupFns.forEach(function(fn2) {
12849
+ return fn2();
12850
+ });
12851
+ effectCleanupFns = [];
12852
+ }
12853
+ return instance;
12854
+ };
12855
+ }
12856
+
12857
+ // node_modules/@popperjs/core/lib/popper.js
12858
+ var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
12859
+ var createPopper = /* @__PURE__ */ popperGenerator({
12860
+ defaultModifiers
12861
+ });
12862
+
12863
+ // app/assets/javascripts/formstrap/controllers/popup_controller.js
12864
+ var popup_controller_default = class extends Controller {
12865
+ static get targets() {
12866
+ return ["popup", "button"];
12867
+ }
12868
+ static get values() {
12869
+ return { id: String };
12870
+ }
12871
+ connect() {
12872
+ document.addEventListener("click", (event) => {
12873
+ this.handleOutsideClick(event);
12874
+ });
12875
+ }
12876
+ handleOutsideClick(event) {
12877
+ const itemRemoved = !document.body.contains(event.target);
12878
+ if (itemRemoved)
12879
+ return;
12880
+ const inPopup = event.target.closest('[data-popup-target="popup"]') !== null;
12881
+ const inButton = event.target.closest('[data-popup-target="button"]') !== null;
12882
+ const openPopup = document.querySelector('[data-popup-target="popup"]:not(.closed)');
12883
+ if (!inButton && !inPopup && openPopup) {
12884
+ this.closePopup(openPopup);
12885
+ }
12886
+ }
12887
+ open(event) {
12888
+ const button = event.target.closest('[data-popup-target="button"]');
12889
+ const popup = this.popupById(button.dataset.popupId);
12890
+ const passThru = button.dataset.popupPassThru;
12891
+ createPopper(button, popup);
12892
+ this.openPopup(popup);
12893
+ if (passThru) {
12894
+ const passThruElement = popup.querySelector(passThru);
12895
+ passThruElement.click();
12896
+ if (passThruElement instanceof HTMLInputElement) {
12897
+ passThruElement.focus();
12898
+ passThruElement.select();
12899
+ }
12900
+ }
12901
+ }
12902
+ close(event) {
12903
+ const button = event.target.closest('[data-popup-target="button"]');
12904
+ const popup = this.popupById(button.dataset.popupId);
12905
+ this.closePopup(popup);
12906
+ }
12907
+ popupById(id) {
12908
+ return this.popupTargets.find((popup) => {
12909
+ return popup.dataset.popupId === id;
12910
+ });
12911
+ }
12912
+ openPopup(popup) {
12913
+ popup.classList.remove("closed");
12914
+ }
12915
+ closePopup(popup) {
12916
+ popup.classList.add("closed");
12917
+ }
11258
12918
  };
11259
12919
 
11260
12920
  // app/assets/javascripts/formstrap/controllers/redactorx_controller.js
@@ -11301,8 +12961,8 @@ var repeater_controller_default = class extends Controller {
11301
12961
  sortable_esm_default.create(this.listTarget, {
11302
12962
  animation: 150,
11303
12963
  ghostClass: "list-group-item-dark",
11304
- draggable: ".repeater-row",
11305
- handle: ".repeater-row-handle",
12964
+ draggable: ".formstrap-repeater-row",
12965
+ handle: ".formstrap-repeater-row-handle",
11306
12966
  onEnd: () => {
11307
12967
  this.resetIndices();
11308
12968
  this.resetPositions();
@@ -11311,7 +12971,7 @@ var repeater_controller_default = class extends Controller {
11311
12971
  this.toggleEmpty();
11312
12972
  }
11313
12973
  resetButtonIndices(event) {
11314
- const row = event.target.closest(".repeater-row");
12974
+ const row = event.target.closest(".formstrap-repeater-row");
11315
12975
  const index2 = this.containsRow(row) ? row.dataset.rowIndex : "";
11316
12976
  this.updatePopupButtonIndices(index2);
11317
12977
  }
@@ -11344,7 +13004,7 @@ var repeater_controller_default = class extends Controller {
11344
13004
  }
11345
13005
  removeRow(event) {
11346
13006
  event.preventDefault();
11347
- const row = event.target.closest(".repeater-row");
13007
+ const row = event.target.closest(".formstrap-repeater-row");
11348
13008
  if (row.dataset.newRecord === "true") {
11349
13009
  row.remove();
11350
13010
  } else {
@@ -11497,6 +13157,7 @@ var Formstrap = class {
11497
13157
  Stimulus.register("infinite-scroller", infinite_scroller_controller_default);
11498
13158
  Stimulus.register("media", media_controller_default);
11499
13159
  Stimulus.register("media-modal", media_modal_controller_default);
13160
+ Stimulus.register("popup", popup_controller_default);
11500
13161
  Stimulus.register("redactorx", redactorx_controller_default);
11501
13162
  Stimulus.register("repeater", repeater_controller_default);
11502
13163
  Stimulus.register("select", select_controller_default);