coveragebook_components 0.6.5 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -14032,7 +14032,7 @@
14032
14032
  var package_default = {
14033
14033
  name: "coveragebook-components",
14034
14034
  type: "module",
14035
- version: "0.6.5",
14035
+ version: "0.7.0",
14036
14036
  main: "index.js",
14037
14037
  repository: "git@github.com:coveragebook/coco.git",
14038
14038
  author: "Mark Perkins <mark@coveragebook.com>",
@@ -17960,15 +17960,15 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
17960
17960
  };
17961
17961
  directive("ignore", handler);
17962
17962
  directive("effect", (el, { expression }, { effect: effect32 }) => effect32(evaluateLater(el, expression)));
17963
- function on(el, event, modifiers, callback) {
17963
+ function on(el, event2, modifiers, callback) {
17964
17964
  let listenerTarget = el;
17965
17965
  let handler3 = (e3) => callback(e3);
17966
17966
  let options = {};
17967
17967
  let wrapHandler = (callback2, wrapper) => (e3) => wrapper(callback2, e3);
17968
17968
  if (modifiers.includes("dot"))
17969
- event = dotSyntax(event);
17969
+ event2 = dotSyntax(event2);
17970
17970
  if (modifiers.includes("camel"))
17971
- event = camelCase2(event);
17971
+ event2 = camelCase2(event2);
17972
17972
  if (modifiers.includes("passive"))
17973
17973
  options.passive = true;
17974
17974
  if (modifiers.includes("capture"))
@@ -18018,20 +18018,20 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18018
18018
  if (modifiers.includes("once")) {
18019
18019
  handler3 = wrapHandler(handler3, (next, e3) => {
18020
18020
  next(e3);
18021
- listenerTarget.removeEventListener(event, handler3, options);
18021
+ listenerTarget.removeEventListener(event2, handler3, options);
18022
18022
  });
18023
18023
  }
18024
18024
  handler3 = wrapHandler(handler3, (next, e3) => {
18025
- if (isKeyEvent(event)) {
18025
+ if (isKeyEvent(event2)) {
18026
18026
  if (isListeningForASpecificKeyThatHasntBeenPressed(e3, modifiers)) {
18027
18027
  return;
18028
18028
  }
18029
18029
  }
18030
18030
  next(e3);
18031
18031
  });
18032
- listenerTarget.addEventListener(event, handler3, options);
18032
+ listenerTarget.addEventListener(event2, handler3, options);
18033
18033
  return () => {
18034
- listenerTarget.removeEventListener(event, handler3, options);
18034
+ listenerTarget.removeEventListener(event2, handler3, options);
18035
18035
  };
18036
18036
  }
18037
18037
  function dotSyntax(subject) {
@@ -18048,8 +18048,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18048
18048
  return subject;
18049
18049
  return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase();
18050
18050
  }
18051
- function isKeyEvent(event) {
18052
- return ["keydown", "keyup"].includes(event);
18051
+ function isKeyEvent(event2) {
18052
+ return ["keydown", "keyup"].includes(event2);
18053
18053
  }
18054
18054
  function isListeningForASpecificKeyThatHasntBeenPressed(e3, modifiers) {
18055
18055
  let keyModifiers = modifiers.filter((i3) => {
@@ -18147,13 +18147,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18147
18147
  el.setAttribute("name", expression);
18148
18148
  });
18149
18149
  }
18150
- var event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
18150
+ var event2 = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
18151
18151
  let removeListener = isCloning ? () => {
18152
- } : on(el, event, modifiers, (e3) => {
18152
+ } : on(el, event2, modifiers, (e3) => {
18153
18153
  setValue(getInputValue(el, modifiers, e3, getValue()));
18154
18154
  });
18155
18155
  if (modifiers.includes("fill") && [null, ""].includes(getValue())) {
18156
- el.dispatchEvent(new Event(event, {}));
18156
+ el.dispatchEvent(new Event(event2, {}));
18157
18157
  }
18158
18158
  if (!el._x_removeModelListeners)
18159
18159
  el._x_removeModelListeners = {};
@@ -18188,27 +18188,27 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18188
18188
  el._x_forceModelUpdate(value);
18189
18189
  });
18190
18190
  });
18191
- function getInputValue(el, modifiers, event, currentValue) {
18191
+ function getInputValue(el, modifiers, event2, currentValue) {
18192
18192
  return mutateDom(() => {
18193
18193
  var _a;
18194
- if (event instanceof CustomEvent && event.detail !== void 0)
18195
- return (_a = event.detail) != null ? _a : event.target.value;
18194
+ if (event2 instanceof CustomEvent && event2.detail !== void 0)
18195
+ return (_a = event2.detail) != null ? _a : event2.target.value;
18196
18196
  else if (el.type === "checkbox") {
18197
18197
  if (Array.isArray(currentValue)) {
18198
- let newValue = modifiers.includes("number") ? safeParseNumber(event.target.value) : event.target.value;
18199
- return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
18198
+ let newValue = modifiers.includes("number") ? safeParseNumber(event2.target.value) : event2.target.value;
18199
+ return event2.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
18200
18200
  } else {
18201
- return event.target.checked;
18201
+ return event2.target.checked;
18202
18202
  }
18203
18203
  } else if (el.tagName.toLowerCase() === "select" && el.multiple) {
18204
- return modifiers.includes("number") ? Array.from(event.target.selectedOptions).map((option) => {
18204
+ return modifiers.includes("number") ? Array.from(event2.target.selectedOptions).map((option) => {
18205
18205
  let rawValue = option.value || option.text;
18206
18206
  return safeParseNumber(rawValue);
18207
- }) : Array.from(event.target.selectedOptions).map((option) => {
18207
+ }) : Array.from(event2.target.selectedOptions).map((option) => {
18208
18208
  return option.value || option.text;
18209
18209
  });
18210
18210
  } else {
18211
- let rawValue = event.target.value;
18211
+ let rawValue = event2.target.value;
18212
18212
  return modifiers.includes("number") ? safeParseNumber(rawValue) : modifiers.includes("trim") ? rawValue.trim() : rawValue;
18213
18213
  }
18214
18214
  });
@@ -21810,8 +21810,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
21810
21810
  var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0];
21811
21811
  return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
21812
21812
  }
21813
- function isCursorOutsideInteractiveBorder(popperTreeData, event) {
21814
- var clientX = event.clientX, clientY = event.clientY;
21813
+ function isCursorOutsideInteractiveBorder(popperTreeData, event2) {
21814
+ var clientX = event2.clientX, clientY = event2.clientY;
21815
21815
  return popperTreeData.every(function(_ref) {
21816
21816
  var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props;
21817
21817
  var interactiveBorder = props.interactiveBorder;
@@ -21833,8 +21833,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
21833
21833
  }
21834
21834
  function updateTransitionEndListener(box, action, listener) {
21835
21835
  var method = action + "EventListener";
21836
- ["transitionend", "webkitTransitionEnd"].forEach(function(event) {
21837
- box[method](event, listener);
21836
+ ["transitionend", "webkitTransitionEnd"].forEach(function(event2) {
21837
+ box[method](event2, listener);
21838
21838
  });
21839
21839
  }
21840
21840
  function actualContains(parent, child) {
@@ -22358,13 +22358,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22358
22358
  return listener !== debouncedOnMouseMove;
22359
22359
  });
22360
22360
  }
22361
- function onDocumentPress(event) {
22361
+ function onDocumentPress(event2) {
22362
22362
  if (currentInput.isTouch) {
22363
- if (didTouchMove || event.type === "mousedown") {
22363
+ if (didTouchMove || event2.type === "mousedown") {
22364
22364
  return;
22365
22365
  }
22366
22366
  }
22367
- var actualTarget = event.composedPath && event.composedPath()[0] || event.target;
22367
+ var actualTarget = event2.composedPath && event2.composedPath()[0] || event2.target;
22368
22368
  if (instance.props.interactive && actualContains(popper2, actualTarget)) {
22369
22369
  return;
22370
22370
  }
@@ -22378,7 +22378,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22378
22378
  return;
22379
22379
  }
22380
22380
  } else {
22381
- invokeHook("onClickOutside", [instance, event]);
22381
+ invokeHook("onClickOutside", [instance, event2]);
22382
22382
  }
22383
22383
  if (instance.props.hideOnClick === true) {
22384
22384
  instance.clearDelayTimeouts();
@@ -22424,8 +22424,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22424
22424
  }
22425
22425
  function onTransitionEnd(duration, callback) {
22426
22426
  var box = getDefaultTemplateChildren().box;
22427
- function listener(event) {
22428
- if (event.target === box) {
22427
+ function listener(event2) {
22428
+ if (event2.target === box) {
22429
22429
  updateTransitionEndListener(box, "remove", listener);
22430
22430
  callback();
22431
22431
  }
@@ -22486,37 +22486,37 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22486
22486
  });
22487
22487
  listeners = [];
22488
22488
  }
22489
- function onTrigger2(event) {
22489
+ function onTrigger2(event2) {
22490
22490
  var _lastTriggerEvent;
22491
22491
  var shouldScheduleClickHide = false;
22492
- if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {
22492
+ if (!instance.state.isEnabled || isEventListenerStopped(event2) || didHideDueToDocumentMouseDown) {
22493
22493
  return;
22494
22494
  }
22495
22495
  var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === "focus";
22496
- lastTriggerEvent = event;
22497
- currentTarget = event.currentTarget;
22496
+ lastTriggerEvent = event2;
22497
+ currentTarget = event2.currentTarget;
22498
22498
  handleAriaExpandedAttribute();
22499
- if (!instance.state.isVisible && isMouseEvent(event)) {
22499
+ if (!instance.state.isVisible && isMouseEvent(event2)) {
22500
22500
  mouseMoveListeners.forEach(function(listener) {
22501
- return listener(event);
22501
+ return listener(event2);
22502
22502
  });
22503
22503
  }
22504
- if (event.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
22504
+ if (event2.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
22505
22505
  shouldScheduleClickHide = true;
22506
22506
  } else {
22507
- scheduleShow(event);
22507
+ scheduleShow(event2);
22508
22508
  }
22509
- if (event.type === "click") {
22509
+ if (event2.type === "click") {
22510
22510
  isVisibleFromClick = !shouldScheduleClickHide;
22511
22511
  }
22512
22512
  if (shouldScheduleClickHide && !wasFocused) {
22513
- scheduleHide(event);
22513
+ scheduleHide(event2);
22514
22514
  }
22515
22515
  }
22516
- function onMouseMove(event) {
22517
- var target = event.target;
22516
+ function onMouseMove(event2) {
22517
+ var target = event2.target;
22518
22518
  var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper2.contains(target);
22519
- if (event.type === "mousemove" && isCursorOverReferenceOrPopper) {
22519
+ if (event2.type === "mousemove" && isCursorOverReferenceOrPopper) {
22520
22520
  return;
22521
22521
  }
22522
22522
  var popperTreeData = getNestedPopperTree().concat(popper2).map(function(popper3) {
@@ -22532,33 +22532,33 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22532
22532
  }
22533
22533
  return null;
22534
22534
  }).filter(Boolean);
22535
- if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {
22535
+ if (isCursorOutsideInteractiveBorder(popperTreeData, event2)) {
22536
22536
  cleanupInteractiveMouseListeners();
22537
- scheduleHide(event);
22537
+ scheduleHide(event2);
22538
22538
  }
22539
22539
  }
22540
- function onMouseLeave(event) {
22541
- var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
22540
+ function onMouseLeave(event2) {
22541
+ var shouldBail = isEventListenerStopped(event2) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
22542
22542
  if (shouldBail) {
22543
22543
  return;
22544
22544
  }
22545
22545
  if (instance.props.interactive) {
22546
- instance.hideWithInteractivity(event);
22546
+ instance.hideWithInteractivity(event2);
22547
22547
  return;
22548
22548
  }
22549
- scheduleHide(event);
22549
+ scheduleHide(event2);
22550
22550
  }
22551
- function onBlurOrFocusOut(event) {
22552
- if (instance.props.trigger.indexOf("focusin") < 0 && event.target !== getCurrentTarget()) {
22551
+ function onBlurOrFocusOut(event2) {
22552
+ if (instance.props.trigger.indexOf("focusin") < 0 && event2.target !== getCurrentTarget()) {
22553
22553
  return;
22554
22554
  }
22555
- if (instance.props.interactive && event.relatedTarget && popper2.contains(event.relatedTarget)) {
22555
+ if (instance.props.interactive && event2.relatedTarget && popper2.contains(event2.relatedTarget)) {
22556
22556
  return;
22557
22557
  }
22558
- scheduleHide(event);
22558
+ scheduleHide(event2);
22559
22559
  }
22560
- function isEventListenerStopped(event) {
22561
- return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf("touch") >= 0 : false;
22560
+ function isEventListenerStopped(event2) {
22561
+ return currentInput.isTouch ? getIsCustomTouchBehavior() !== event2.type.indexOf("touch") >= 0 : false;
22562
22562
  }
22563
22563
  function createPopperInstance() {
22564
22564
  destroyPopperInstance();
@@ -22661,10 +22661,10 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22661
22661
  function getNestedPopperTree() {
22662
22662
  return arrayFrom(popper2.querySelectorAll("[data-tippy-root]"));
22663
22663
  }
22664
- function scheduleShow(event) {
22664
+ function scheduleShow(event2) {
22665
22665
  instance.clearDelayTimeouts();
22666
- if (event) {
22667
- invokeHook("onTrigger", [instance, event]);
22666
+ if (event2) {
22667
+ invokeHook("onTrigger", [instance, event2]);
22668
22668
  }
22669
22669
  addDocumentPress();
22670
22670
  var delay3 = getDelay(true);
@@ -22680,14 +22680,14 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22680
22680
  instance.show();
22681
22681
  }
22682
22682
  }
22683
- function scheduleHide(event) {
22683
+ function scheduleHide(event2) {
22684
22684
  instance.clearDelayTimeouts();
22685
- invokeHook("onUntrigger", [instance, event]);
22685
+ invokeHook("onUntrigger", [instance, event2]);
22686
22686
  if (!instance.state.isVisible) {
22687
22687
  removeDocumentPress();
22688
22688
  return;
22689
22689
  }
22690
- if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event.type) >= 0 && isVisibleFromClick) {
22690
+ if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event2.type) >= 0 && isVisibleFromClick) {
22691
22691
  return;
22692
22692
  }
22693
22693
  var delay3 = getDelay(false);
@@ -22860,13 +22860,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22860
22860
  instance.unmount();
22861
22861
  }
22862
22862
  }
22863
- function hideWithInteractivity(event) {
22863
+ function hideWithInteractivity(event2) {
22864
22864
  if (true) {
22865
22865
  warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hideWithInteractivity"));
22866
22866
  }
22867
22867
  getDocument().addEventListener("mousemove", debouncedOnMouseMove);
22868
22868
  pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
22869
- debouncedOnMouseMove(event);
22869
+ debouncedOnMouseMove(event2);
22870
22870
  }
22871
22871
  function unmount() {
22872
22872
  if (true) {
@@ -23050,8 +23050,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23050
23050
  prepareInstance(instance, references[0]);
23051
23051
  }
23052
23052
  },
23053
- onTrigger: function onTrigger2(instance, event) {
23054
- prepareInstance(instance, event.currentTarget);
23053
+ onTrigger: function onTrigger2(instance, event2) {
23054
+ prepareInstance(instance, event2.currentTarget);
23055
23055
  }
23056
23056
  };
23057
23057
  }
@@ -23166,10 +23166,10 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23166
23166
  });
23167
23167
  isInternalUpdate = false;
23168
23168
  }
23169
- function onMouseMove(event) {
23170
- var isCursorOverReference = event.target ? reference2.contains(event.target) : true;
23169
+ function onMouseMove(event2) {
23170
+ var isCursorOverReference = event2.target ? reference2.contains(event2.target) : true;
23171
23171
  var followCursor2 = instance.props.followCursor;
23172
- var clientX = event.clientX, clientY = event.clientY;
23172
+ var clientX = event2.clientX, clientY = event2.clientY;
23173
23173
  var rect = reference2.getBoundingClientRect();
23174
23174
  var relativeX = clientX - rect.left;
23175
23175
  var relativeY = clientY - rect.top;
@@ -23254,14 +23254,14 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23254
23254
  }
23255
23255
  }
23256
23256
  },
23257
- onTrigger: function onTrigger2(_3, event) {
23258
- if (isMouseEvent(event)) {
23257
+ onTrigger: function onTrigger2(_3, event2) {
23258
+ if (isMouseEvent(event2)) {
23259
23259
  mouseCoords = {
23260
- clientX: event.clientX,
23261
- clientY: event.clientY
23260
+ clientX: event2.clientX,
23261
+ clientY: event2.clientY
23262
23262
  };
23263
23263
  }
23264
- wasFocusEvent = event.type === "focus";
23264
+ wasFocusEvent = event2.type === "focus";
23265
23265
  },
23266
23266
  onHidden: function onHidden2() {
23267
23267
  if (instance.props.followCursor) {
@@ -23283,8 +23283,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23283
23283
  name: "hideOnEsc",
23284
23284
  defaultValue: true,
23285
23285
  fn({ hide: hide2 }) {
23286
- function onKeyDown(event) {
23287
- if (event.keyCode === 27) {
23286
+ function onKeyDown(event2) {
23287
+ if (event2.keyCode === 27) {
23288
23288
  hide2();
23289
23289
  }
23290
23290
  }
@@ -23565,8 +23565,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23565
23565
  clearAutoDismiss() {
23566
23566
  clearTimeout(notification.dismissTimer);
23567
23567
  },
23568
- clearFromQueue(event) {
23569
- if (notification.type === event.detail.type && notification.position === "fixed" && notification.id !== event.detail.id && notification.queuePosition < event.detail.queuePosition) {
23568
+ clearFromQueue(event2) {
23569
+ if (notification.type === event2.detail.type && notification.position === "fixed" && notification.id !== event2.detail.id && notification.queuePosition < event2.detail.queuePosition) {
23570
23570
  notification.dismiss();
23571
23571
  }
23572
23572
  }
@@ -23912,15 +23912,15 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23912
23912
  }
23913
23913
  },
23914
23914
  /* confirmation */
23915
- checkConfirmation(event) {
23915
+ checkConfirmation(event2) {
23916
23916
  if (!this.confirmed) {
23917
23917
  this.approving = true;
23918
- event.preventDefault();
23918
+ event2.preventDefault();
23919
23919
  }
23920
23920
  },
23921
- approveAndRun(event) {
23921
+ approveAndRun(event2) {
23922
23922
  if (this.approving) {
23923
- event.stopPropagation();
23923
+ event2.stopPropagation();
23924
23924
  this.confirmed = true;
23925
23925
  this.dropdown.trigger.click();
23926
23926
  this.dropdown.hide();
@@ -23928,9 +23928,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23928
23928
  this.approving = false;
23929
23929
  }
23930
23930
  },
23931
- cancelConfirmation(event) {
23931
+ cancelConfirmation(event2) {
23932
23932
  if (this.approving) {
23933
- event.stopPropagation();
23933
+ event2.stopPropagation();
23934
23934
  this.approving = false;
23935
23935
  this.dropdown.hide();
23936
23936
  }
@@ -24080,8 +24080,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24080
24080
  this.file = null;
24081
24081
  this.$dispatch("image-uploader:clear");
24082
24082
  },
24083
- handleDrop(event) {
24084
- const files = event.detail.files || event.dataTransfer.files;
24083
+ handleDrop(event2) {
24084
+ const files = event2.detail.files || event2.dataTransfer.files;
24085
24085
  this.handleFiles(files);
24086
24086
  },
24087
24087
  handleFiles(files) {
@@ -24107,8 +24107,91 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24107
24107
  };
24108
24108
  });
24109
24109
 
24110
+ // ../../components/coco/base/modal/modal.js
24111
+ var modal_exports = {};
24112
+ __export(modal_exports, {
24113
+ default: () => modal_default
24114
+ });
24115
+ var modal_default = CocoComponent("modal", () => {
24116
+ return {
24117
+ open: false,
24118
+ frame: null,
24119
+ options: ["dismissable", "closeOnSubmit"],
24120
+ init() {
24121
+ this.onFrameSubmitEnd = this.onFrameSubmitEnd.bind(this);
24122
+ this.frame = this.$el.closest("turbo-frame");
24123
+ this.frame.addEventListener("turbo:submit-end", this.onFrameSubmitEnd);
24124
+ this.$nextTick(() => this.show());
24125
+ },
24126
+ show() {
24127
+ this.open = true;
24128
+ },
24129
+ hide() {
24130
+ this.open = false;
24131
+ setTimeout(() => this.clearFrame(), 100);
24132
+ },
24133
+ dismiss(event2) {
24134
+ if (this.$options.dismissable)
24135
+ this.hide();
24136
+ },
24137
+ clearFrame() {
24138
+ this.frame.removeAttribute("src");
24139
+ this.frame.removeAttribute("complete");
24140
+ this.frame.innerHTML = "";
24141
+ },
24142
+ onFrameSubmitEnd() {
24143
+ if (this.$options.closeOnSubmit && event.detail.success) {
24144
+ this.hide();
24145
+ }
24146
+ },
24147
+ destroy() {
24148
+ this.frame.removeEventListener("turbo:submit-end", this.onFrameSubmitEnd);
24149
+ },
24150
+ root: {
24151
+ "x-options": "options",
24152
+ "x-show": "open",
24153
+ "@keydown.escape.document": "dismiss",
24154
+ "@modal:hide.document": "hide"
24155
+ }
24156
+ };
24157
+ });
24158
+
24159
+ // ../../components/coco/base/modal_dialog/modal_dialog.js
24160
+ var modal_dialog_exports = {};
24161
+ __export(modal_dialog_exports, {
24162
+ default: () => modal_dialog_default
24163
+ });
24164
+ var modal_dialog_default = CocoComponent("modalDialog", () => {
24165
+ return {
24166
+ frame: null,
24167
+ init() {
24168
+ this.onFrameLoad = this.onFrameLoad.bind(this);
24169
+ this.frame = this.$el.closest("turbo-frame");
24170
+ if (this.frame) {
24171
+ this.frame.addEventListener("turbo:frame-load", this.onFrameLoad);
24172
+ }
24173
+ },
24174
+ close() {
24175
+ this.$dispatch("modal:hide");
24176
+ },
24177
+ onFrameLoad() {
24178
+ this.$focus.focus(this.firstInput);
24179
+ },
24180
+ destroy() {
24181
+ if (this.frame) {
24182
+ this.frame.removeEventListener("turbo:frame-load", this.onFrameLoad);
24183
+ }
24184
+ },
24185
+ get firstInput() {
24186
+ return this.$root.querySelector(
24187
+ "input:not([type=hidden]), textarea, select"
24188
+ );
24189
+ }
24190
+ };
24191
+ });
24192
+
24110
24193
  // import-glob:/Users/mark/Code/coveragebook/coco/app/assets/js/base|@baseComponents/**/*.js
24111
- var modules = [button_exports, dropdown_exports, icon_exports, image_uploader_exports];
24194
+ var modules = [button_exports, dropdown_exports, icon_exports, image_uploader_exports, modal_exports, modal_dialog_exports];
24112
24195
  var __default = modules;
24113
24196
 
24114
24197
  // base/components.js
@@ -24247,8 +24330,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24247
24330
  }
24248
24331
 
24249
24332
  // helpers/turbo_events.js
24250
- function wasSuccessful(event) {
24251
- return getEventDetail(event).success;
24333
+ function wasSuccessful(event2) {
24334
+ return getEventDetail(event2).success;
24252
24335
  }
24253
24336
  function getEventDetail(obj) {
24254
24337
  return obj instanceof CustomEvent ? obj.detail : obj;
@@ -24331,12 +24414,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24331
24414
  setLayout(layout) {
24332
24415
  this.layout = layout;
24333
24416
  },
24334
- handleImageDrop(event) {
24417
+ handleImageDrop(event2) {
24335
24418
  this.dragging = false;
24336
24419
  if (this.bgImagePicker) {
24337
- this.bgImagePicker.handleExternalDrop(event);
24420
+ this.bgImagePicker.handleExternalDrop(event2);
24338
24421
  } else {
24339
- event.preventDefault();
24422
+ event2.preventDefault();
24340
24423
  }
24341
24424
  },
24342
24425
  async save() {
@@ -24398,9 +24481,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24398
24481
  }
24399
24482
  input.files = dataTransfer.files;
24400
24483
  },
24401
- handleSlideClick(event) {
24402
- if (Array.from(event.target.classList).includes("slide-text")) {
24403
- event.target.querySelector("textarea").focus();
24484
+ handleSlideClick(event2) {
24485
+ if (Array.from(event2.target.classList).includes("slide-text")) {
24486
+ event2.target.querySelector("textarea").focus();
24404
24487
  }
24405
24488
  },
24406
24489
  get blankTextAreasList() {
@@ -25790,8 +25873,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
25790
25873
  /* Start */
25791
25874
  );
25792
25875
  if (result !== false) {
25793
- SECONDARY_EVENTS.forEach(function(event) {
25794
- document.addEventListener(event, this$1, { passive: false });
25876
+ SECONDARY_EVENTS.forEach(function(event2) {
25877
+ document.addEventListener(event2, this$1, { passive: false });
25795
25878
  });
25796
25879
  }
25797
25880
  break;
@@ -25812,8 +25895,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
25812
25895
  2
25813
25896
  /* End */
25814
25897
  );
25815
- SECONDARY_EVENTS.forEach(function(event) {
25816
- document.removeEventListener(event, this$1, { passive: false });
25898
+ SECONDARY_EVENTS.forEach(function(event2) {
25899
+ document.removeEventListener(event2, this$1, { passive: false });
25817
25900
  });
25818
25901
  break;
25819
25902
  }
@@ -26479,8 +26562,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
26479
26562
  this.$root.querySelector("[data-role='image-picker'").firstElementChild
26480
26563
  );
26481
26564
  },
26482
- handleExternalDrop(event) {
26483
- this.readFile(event.dataTransfer.files[0]);
26565
+ handleExternalDrop(event2) {
26566
+ this.readFile(event2.dataTransfer.files[0]);
26484
26567
  },
26485
26568
  readFile(file) {
26486
26569
  const reader = new FileReader();