coveragebook_components 0.7.4 → 0.7.5

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.
@@ -14032,7 +14032,7 @@
14032
14032
  var package_default = {
14033
14033
  name: "coveragebook-components",
14034
14034
  type: "module",
14035
- version: "0.7.4",
14035
+ version: "0.7.5",
14036
14036
  main: "index.js",
14037
14037
  repository: "git@github.com:coveragebook/coco.git",
14038
14038
  author: "Mark Perkins <mark@coveragebook.com>",
@@ -14115,14 +14115,13 @@
14115
14115
  "before:init": [
14116
14116
  "npm install",
14117
14117
  "bundle install",
14118
- "bundle exec rake test",
14119
- "cd lookbook && bundle"
14118
+ "bundle exec rake test"
14120
14119
  ],
14121
14120
  "after:bump": [
14122
14121
  "npm run lint:fix",
14123
14122
  "npm run build"
14124
14123
  ],
14125
- "after:version:bump": "./bin/bump-version ${version} && bundle",
14124
+ "after:version:bump": "./bin/bump-version ${version} && bundle && cd lookbook && bundle",
14126
14125
  "after:release": "./bin/build-gem ${version}"
14127
14126
  }
14128
14127
  }
@@ -17960,15 +17959,15 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
17960
17959
  };
17961
17960
  directive("ignore", handler);
17962
17961
  directive("effect", (el, { expression }, { effect: effect32 }) => effect32(evaluateLater(el, expression)));
17963
- function on(el, event2, modifiers, callback) {
17962
+ function on(el, event, modifiers, callback) {
17964
17963
  let listenerTarget = el;
17965
17964
  let handler3 = (e3) => callback(e3);
17966
17965
  let options = {};
17967
17966
  let wrapHandler = (callback2, wrapper) => (e3) => wrapper(callback2, e3);
17968
17967
  if (modifiers.includes("dot"))
17969
- event2 = dotSyntax(event2);
17968
+ event = dotSyntax(event);
17970
17969
  if (modifiers.includes("camel"))
17971
- event2 = camelCase2(event2);
17970
+ event = camelCase2(event);
17972
17971
  if (modifiers.includes("passive"))
17973
17972
  options.passive = true;
17974
17973
  if (modifiers.includes("capture"))
@@ -18018,20 +18017,20 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18018
18017
  if (modifiers.includes("once")) {
18019
18018
  handler3 = wrapHandler(handler3, (next, e3) => {
18020
18019
  next(e3);
18021
- listenerTarget.removeEventListener(event2, handler3, options);
18020
+ listenerTarget.removeEventListener(event, handler3, options);
18022
18021
  });
18023
18022
  }
18024
18023
  handler3 = wrapHandler(handler3, (next, e3) => {
18025
- if (isKeyEvent(event2)) {
18024
+ if (isKeyEvent(event)) {
18026
18025
  if (isListeningForASpecificKeyThatHasntBeenPressed(e3, modifiers)) {
18027
18026
  return;
18028
18027
  }
18029
18028
  }
18030
18029
  next(e3);
18031
18030
  });
18032
- listenerTarget.addEventListener(event2, handler3, options);
18031
+ listenerTarget.addEventListener(event, handler3, options);
18033
18032
  return () => {
18034
- listenerTarget.removeEventListener(event2, handler3, options);
18033
+ listenerTarget.removeEventListener(event, handler3, options);
18035
18034
  };
18036
18035
  }
18037
18036
  function dotSyntax(subject) {
@@ -18048,8 +18047,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18048
18047
  return subject;
18049
18048
  return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase();
18050
18049
  }
18051
- function isKeyEvent(event2) {
18052
- return ["keydown", "keyup"].includes(event2);
18050
+ function isKeyEvent(event) {
18051
+ return ["keydown", "keyup"].includes(event);
18053
18052
  }
18054
18053
  function isListeningForASpecificKeyThatHasntBeenPressed(e3, modifiers) {
18055
18054
  let keyModifiers = modifiers.filter((i3) => {
@@ -18147,13 +18146,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18147
18146
  el.setAttribute("name", expression);
18148
18147
  });
18149
18148
  }
18150
- var event2 = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
18149
+ var event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input";
18151
18150
  let removeListener = isCloning ? () => {
18152
- } : on(el, event2, modifiers, (e3) => {
18151
+ } : on(el, event, modifiers, (e3) => {
18153
18152
  setValue(getInputValue(el, modifiers, e3, getValue()));
18154
18153
  });
18155
18154
  if (modifiers.includes("fill") && [null, ""].includes(getValue())) {
18156
- el.dispatchEvent(new Event(event2, {}));
18155
+ el.dispatchEvent(new Event(event, {}));
18157
18156
  }
18158
18157
  if (!el._x_removeModelListeners)
18159
18158
  el._x_removeModelListeners = {};
@@ -18188,27 +18187,27 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
18188
18187
  el._x_forceModelUpdate(value);
18189
18188
  });
18190
18189
  });
18191
- function getInputValue(el, modifiers, event2, currentValue) {
18190
+ function getInputValue(el, modifiers, event, currentValue) {
18192
18191
  return mutateDom(() => {
18193
18192
  var _a;
18194
- if (event2 instanceof CustomEvent && event2.detail !== void 0)
18195
- return (_a = event2.detail) != null ? _a : event2.target.value;
18193
+ if (event instanceof CustomEvent && event.detail !== void 0)
18194
+ return (_a = event.detail) != null ? _a : event.target.value;
18196
18195
  else if (el.type === "checkbox") {
18197
18196
  if (Array.isArray(currentValue)) {
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));
18197
+ let newValue = modifiers.includes("number") ? safeParseNumber(event.target.value) : event.target.value;
18198
+ return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));
18200
18199
  } else {
18201
- return event2.target.checked;
18200
+ return event.target.checked;
18202
18201
  }
18203
18202
  } else if (el.tagName.toLowerCase() === "select" && el.multiple) {
18204
- return modifiers.includes("number") ? Array.from(event2.target.selectedOptions).map((option) => {
18203
+ return modifiers.includes("number") ? Array.from(event.target.selectedOptions).map((option) => {
18205
18204
  let rawValue = option.value || option.text;
18206
18205
  return safeParseNumber(rawValue);
18207
- }) : Array.from(event2.target.selectedOptions).map((option) => {
18206
+ }) : Array.from(event.target.selectedOptions).map((option) => {
18208
18207
  return option.value || option.text;
18209
18208
  });
18210
18209
  } else {
18211
- let rawValue = event2.target.value;
18210
+ let rawValue = event.target.value;
18212
18211
  return modifiers.includes("number") ? safeParseNumber(rawValue) : modifiers.includes("trim") ? rawValue.trim() : rawValue;
18213
18212
  }
18214
18213
  });
@@ -21880,8 +21879,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
21880
21879
  var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0];
21881
21880
  return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
21882
21881
  }
21883
- function isCursorOutsideInteractiveBorder(popperTreeData, event2) {
21884
- var clientX = event2.clientX, clientY = event2.clientY;
21882
+ function isCursorOutsideInteractiveBorder(popperTreeData, event) {
21883
+ var clientX = event.clientX, clientY = event.clientY;
21885
21884
  return popperTreeData.every(function(_ref) {
21886
21885
  var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props;
21887
21886
  var interactiveBorder = props.interactiveBorder;
@@ -21903,8 +21902,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
21903
21902
  }
21904
21903
  function updateTransitionEndListener(box, action, listener) {
21905
21904
  var method = action + "EventListener";
21906
- ["transitionend", "webkitTransitionEnd"].forEach(function(event2) {
21907
- box[method](event2, listener);
21905
+ ["transitionend", "webkitTransitionEnd"].forEach(function(event) {
21906
+ box[method](event, listener);
21908
21907
  });
21909
21908
  }
21910
21909
  function actualContains(parent, child) {
@@ -22428,13 +22427,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22428
22427
  return listener !== debouncedOnMouseMove;
22429
22428
  });
22430
22429
  }
22431
- function onDocumentPress(event2) {
22430
+ function onDocumentPress(event) {
22432
22431
  if (currentInput.isTouch) {
22433
- if (didTouchMove || event2.type === "mousedown") {
22432
+ if (didTouchMove || event.type === "mousedown") {
22434
22433
  return;
22435
22434
  }
22436
22435
  }
22437
- var actualTarget = event2.composedPath && event2.composedPath()[0] || event2.target;
22436
+ var actualTarget = event.composedPath && event.composedPath()[0] || event.target;
22438
22437
  if (instance.props.interactive && actualContains(popper2, actualTarget)) {
22439
22438
  return;
22440
22439
  }
@@ -22448,7 +22447,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22448
22447
  return;
22449
22448
  }
22450
22449
  } else {
22451
- invokeHook("onClickOutside", [instance, event2]);
22450
+ invokeHook("onClickOutside", [instance, event]);
22452
22451
  }
22453
22452
  if (instance.props.hideOnClick === true) {
22454
22453
  instance.clearDelayTimeouts();
@@ -22494,8 +22493,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22494
22493
  }
22495
22494
  function onTransitionEnd(duration, callback) {
22496
22495
  var box = getDefaultTemplateChildren().box;
22497
- function listener(event2) {
22498
- if (event2.target === box) {
22496
+ function listener(event) {
22497
+ if (event.target === box) {
22499
22498
  updateTransitionEndListener(box, "remove", listener);
22500
22499
  callback();
22501
22500
  }
@@ -22556,37 +22555,37 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22556
22555
  });
22557
22556
  listeners = [];
22558
22557
  }
22559
- function onTrigger2(event2) {
22558
+ function onTrigger2(event) {
22560
22559
  var _lastTriggerEvent;
22561
22560
  var shouldScheduleClickHide = false;
22562
- if (!instance.state.isEnabled || isEventListenerStopped(event2) || didHideDueToDocumentMouseDown) {
22561
+ if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {
22563
22562
  return;
22564
22563
  }
22565
22564
  var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === "focus";
22566
- lastTriggerEvent = event2;
22567
- currentTarget = event2.currentTarget;
22565
+ lastTriggerEvent = event;
22566
+ currentTarget = event.currentTarget;
22568
22567
  handleAriaExpandedAttribute();
22569
- if (!instance.state.isVisible && isMouseEvent(event2)) {
22568
+ if (!instance.state.isVisible && isMouseEvent(event)) {
22570
22569
  mouseMoveListeners.forEach(function(listener) {
22571
- return listener(event2);
22570
+ return listener(event);
22572
22571
  });
22573
22572
  }
22574
- if (event2.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
22573
+ if (event.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
22575
22574
  shouldScheduleClickHide = true;
22576
22575
  } else {
22577
- scheduleShow(event2);
22576
+ scheduleShow(event);
22578
22577
  }
22579
- if (event2.type === "click") {
22578
+ if (event.type === "click") {
22580
22579
  isVisibleFromClick = !shouldScheduleClickHide;
22581
22580
  }
22582
22581
  if (shouldScheduleClickHide && !wasFocused) {
22583
- scheduleHide(event2);
22582
+ scheduleHide(event);
22584
22583
  }
22585
22584
  }
22586
- function onMouseMove(event2) {
22587
- var target = event2.target;
22585
+ function onMouseMove(event) {
22586
+ var target = event.target;
22588
22587
  var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper2.contains(target);
22589
- if (event2.type === "mousemove" && isCursorOverReferenceOrPopper) {
22588
+ if (event.type === "mousemove" && isCursorOverReferenceOrPopper) {
22590
22589
  return;
22591
22590
  }
22592
22591
  var popperTreeData = getNestedPopperTree().concat(popper2).map(function(popper3) {
@@ -22602,33 +22601,33 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22602
22601
  }
22603
22602
  return null;
22604
22603
  }).filter(Boolean);
22605
- if (isCursorOutsideInteractiveBorder(popperTreeData, event2)) {
22604
+ if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {
22606
22605
  cleanupInteractiveMouseListeners();
22607
- scheduleHide(event2);
22606
+ scheduleHide(event);
22608
22607
  }
22609
22608
  }
22610
- function onMouseLeave(event2) {
22611
- var shouldBail = isEventListenerStopped(event2) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
22609
+ function onMouseLeave(event) {
22610
+ var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
22612
22611
  if (shouldBail) {
22613
22612
  return;
22614
22613
  }
22615
22614
  if (instance.props.interactive) {
22616
- instance.hideWithInteractivity(event2);
22615
+ instance.hideWithInteractivity(event);
22617
22616
  return;
22618
22617
  }
22619
- scheduleHide(event2);
22618
+ scheduleHide(event);
22620
22619
  }
22621
- function onBlurOrFocusOut(event2) {
22622
- if (instance.props.trigger.indexOf("focusin") < 0 && event2.target !== getCurrentTarget()) {
22620
+ function onBlurOrFocusOut(event) {
22621
+ if (instance.props.trigger.indexOf("focusin") < 0 && event.target !== getCurrentTarget()) {
22623
22622
  return;
22624
22623
  }
22625
- if (instance.props.interactive && event2.relatedTarget && popper2.contains(event2.relatedTarget)) {
22624
+ if (instance.props.interactive && event.relatedTarget && popper2.contains(event.relatedTarget)) {
22626
22625
  return;
22627
22626
  }
22628
- scheduleHide(event2);
22627
+ scheduleHide(event);
22629
22628
  }
22630
- function isEventListenerStopped(event2) {
22631
- return currentInput.isTouch ? getIsCustomTouchBehavior() !== event2.type.indexOf("touch") >= 0 : false;
22629
+ function isEventListenerStopped(event) {
22630
+ return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf("touch") >= 0 : false;
22632
22631
  }
22633
22632
  function createPopperInstance() {
22634
22633
  destroyPopperInstance();
@@ -22731,10 +22730,10 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22731
22730
  function getNestedPopperTree() {
22732
22731
  return arrayFrom(popper2.querySelectorAll("[data-tippy-root]"));
22733
22732
  }
22734
- function scheduleShow(event2) {
22733
+ function scheduleShow(event) {
22735
22734
  instance.clearDelayTimeouts();
22736
- if (event2) {
22737
- invokeHook("onTrigger", [instance, event2]);
22735
+ if (event) {
22736
+ invokeHook("onTrigger", [instance, event]);
22738
22737
  }
22739
22738
  addDocumentPress();
22740
22739
  var delay3 = getDelay(true);
@@ -22750,14 +22749,14 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22750
22749
  instance.show();
22751
22750
  }
22752
22751
  }
22753
- function scheduleHide(event2) {
22752
+ function scheduleHide(event) {
22754
22753
  instance.clearDelayTimeouts();
22755
- invokeHook("onUntrigger", [instance, event2]);
22754
+ invokeHook("onUntrigger", [instance, event]);
22756
22755
  if (!instance.state.isVisible) {
22757
22756
  removeDocumentPress();
22758
22757
  return;
22759
22758
  }
22760
- if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event2.type) >= 0 && isVisibleFromClick) {
22759
+ if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event.type) >= 0 && isVisibleFromClick) {
22761
22760
  return;
22762
22761
  }
22763
22762
  var delay3 = getDelay(false);
@@ -22930,13 +22929,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
22930
22929
  instance.unmount();
22931
22930
  }
22932
22931
  }
22933
- function hideWithInteractivity(event2) {
22932
+ function hideWithInteractivity(event) {
22934
22933
  if (true) {
22935
22934
  warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hideWithInteractivity"));
22936
22935
  }
22937
22936
  getDocument().addEventListener("mousemove", debouncedOnMouseMove);
22938
22937
  pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
22939
- debouncedOnMouseMove(event2);
22938
+ debouncedOnMouseMove(event);
22940
22939
  }
22941
22940
  function unmount() {
22942
22941
  if (true) {
@@ -23120,8 +23119,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23120
23119
  prepareInstance(instance, references[0]);
23121
23120
  }
23122
23121
  },
23123
- onTrigger: function onTrigger2(instance, event2) {
23124
- prepareInstance(instance, event2.currentTarget);
23122
+ onTrigger: function onTrigger2(instance, event) {
23123
+ prepareInstance(instance, event.currentTarget);
23125
23124
  }
23126
23125
  };
23127
23126
  }
@@ -23236,10 +23235,10 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23236
23235
  });
23237
23236
  isInternalUpdate = false;
23238
23237
  }
23239
- function onMouseMove(event2) {
23240
- var isCursorOverReference = event2.target ? reference2.contains(event2.target) : true;
23238
+ function onMouseMove(event) {
23239
+ var isCursorOverReference = event.target ? reference2.contains(event.target) : true;
23241
23240
  var followCursor2 = instance.props.followCursor;
23242
- var clientX = event2.clientX, clientY = event2.clientY;
23241
+ var clientX = event.clientX, clientY = event.clientY;
23243
23242
  var rect = reference2.getBoundingClientRect();
23244
23243
  var relativeX = clientX - rect.left;
23245
23244
  var relativeY = clientY - rect.top;
@@ -23324,14 +23323,14 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23324
23323
  }
23325
23324
  }
23326
23325
  },
23327
- onTrigger: function onTrigger2(_3, event2) {
23328
- if (isMouseEvent(event2)) {
23326
+ onTrigger: function onTrigger2(_3, event) {
23327
+ if (isMouseEvent(event)) {
23329
23328
  mouseCoords = {
23330
- clientX: event2.clientX,
23331
- clientY: event2.clientY
23329
+ clientX: event.clientX,
23330
+ clientY: event.clientY
23332
23331
  };
23333
23332
  }
23334
- wasFocusEvent = event2.type === "focus";
23333
+ wasFocusEvent = event.type === "focus";
23335
23334
  },
23336
23335
  onHidden: function onHidden2() {
23337
23336
  if (instance.props.followCursor) {
@@ -23353,8 +23352,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23353
23352
  name: "hideOnEsc",
23354
23353
  defaultValue: true,
23355
23354
  fn({ hide: hide2 }) {
23356
- function onKeyDown(event2) {
23357
- if (event2.keyCode === 27) {
23355
+ function onKeyDown(event) {
23356
+ if (event.keyCode === 27) {
23358
23357
  hide2();
23359
23358
  }
23360
23359
  }
@@ -23635,8 +23634,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23635
23634
  clearAutoDismiss() {
23636
23635
  clearTimeout(notification.dismissTimer);
23637
23636
  },
23638
- clearFromQueue(event2) {
23639
- if (notification.type === event2.detail.type && notification.position === "fixed" && notification.id !== event2.detail.id && notification.queuePosition < event2.detail.queuePosition) {
23637
+ clearFromQueue(event) {
23638
+ if (notification.type === event.detail.type && notification.position === "fixed" && notification.id !== event.detail.id && notification.queuePosition < event.detail.queuePosition) {
23640
23639
  notification.dismiss();
23641
23640
  }
23642
23641
  }
@@ -23750,15 +23749,15 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23750
23749
  }
23751
23750
  },
23752
23751
  /* confirmation */
23753
- checkConfirmation(event2) {
23752
+ checkConfirmation(event) {
23754
23753
  if (!this.confirmed) {
23755
23754
  this.approving = true;
23756
- event2.preventDefault();
23755
+ event.preventDefault();
23757
23756
  }
23758
23757
  },
23759
- approveAndRun(event2) {
23758
+ approveAndRun(event) {
23760
23759
  if (this.approving) {
23761
- event2.stopPropagation();
23760
+ event.stopPropagation();
23762
23761
  this.confirmed = true;
23763
23762
  this.dropdown.trigger.click();
23764
23763
  this.dropdown.hide();
@@ -23766,9 +23765,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23766
23765
  this.approving = false;
23767
23766
  }
23768
23767
  },
23769
- cancelConfirmation(event2) {
23768
+ cancelConfirmation(event) {
23770
23769
  if (this.approving) {
23771
- event2.stopPropagation();
23770
+ event.stopPropagation();
23772
23771
  this.approving = false;
23773
23772
  this.dropdown.hide();
23774
23773
  }
@@ -23916,8 +23915,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23916
23915
  this.file = null;
23917
23916
  this.$dispatch("image-uploader:clear");
23918
23917
  },
23919
- handleDrop(event2) {
23920
- const files = event2.detail.files || event2.dataTransfer.files;
23918
+ handleDrop(event) {
23919
+ const files = event.detail.files || event.dataTransfer.files;
23921
23920
  this.handleFiles(files);
23922
23921
  },
23923
23922
  handleFiles(files) {
@@ -23952,8 +23951,10 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23952
23951
  return {
23953
23952
  open: false,
23954
23953
  frame: null,
23954
+ modal: null,
23955
23955
  options: ["dismissable", "closeOnSubmit"],
23956
23956
  init() {
23957
+ this.modal = this;
23957
23958
  this.onFrameSubmitEnd = this.onFrameSubmitEnd.bind(this);
23958
23959
  this.frame = this.$el.closest("turbo-frame");
23959
23960
  this.frame.addEventListener("turbo:submit-end", this.onFrameSubmitEnd);
@@ -23961,21 +23962,30 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23961
23962
  },
23962
23963
  show() {
23963
23964
  this.open = true;
23965
+ setTimeout(() => {
23966
+ this.$dispatch("modal:shown");
23967
+ }, 400);
23964
23968
  },
23965
23969
  hide() {
23966
23970
  this.open = false;
23967
- setTimeout(() => this.clearFrame(), 100);
23971
+ setTimeout(() => {
23972
+ this.clearFrame();
23973
+ this.$dispatch("modal:hidden");
23974
+ }, 200);
23968
23975
  },
23969
- dismiss(event2) {
23976
+ dismiss(event) {
23970
23977
  if (this.$options.dismissable)
23971
23978
  this.hide();
23972
23979
  },
23980
+ scrollTo(pos) {
23981
+ this.$root.scrollTop = pos + this.contentOffsetTop;
23982
+ },
23973
23983
  clearFrame() {
23974
23984
  this.frame.removeAttribute("src");
23975
23985
  this.frame.removeAttribute("complete");
23976
23986
  this.frame.innerHTML = "";
23977
23987
  },
23978
- onFrameSubmitEnd() {
23988
+ onFrameSubmitEnd(event) {
23979
23989
  if (this.$options.closeOnSubmit && event.detail.success) {
23980
23990
  this.hide();
23981
23991
  }
@@ -23983,11 +23993,35 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
23983
23993
  destroy() {
23984
23994
  this.frame.removeEventListener("turbo:submit-end", this.onFrameSubmitEnd);
23985
23995
  },
23996
+ get contentOffsetTop() {
23997
+ return parseInt(
23998
+ window.getComputedStyle(this.$refs.container).paddingTop,
23999
+ 10
24000
+ );
24001
+ },
23986
24002
  root: {
23987
24003
  "x-options": "options",
23988
24004
  "x-show": "open",
23989
24005
  "@keydown.escape.document": "dismiss",
23990
24006
  "@modal:hide.document": "hide"
24007
+ },
24008
+ overlay: {
24009
+ "x-show": "open",
24010
+ "x-transition:enter": "overlay-enter",
24011
+ "x-transition:enter-start": "overlay-enter-start",
24012
+ "x-transition:enter-end": "overlay-enter-end",
24013
+ "x-transition:leave": "overlay-leave",
24014
+ "x-transition:leave-start": "overlay-leave-start",
24015
+ "x-transition:leave-end": "overlay-leave-end"
24016
+ },
24017
+ container: {
24018
+ "x-show": "open",
24019
+ "x-transition:enter": "container-enter",
24020
+ "x-transition:enter-start": "container-enter-start",
24021
+ "x-transition:enter-end": "container-enter-end",
24022
+ "x-transition:leave": "container-leave",
24023
+ "x-transition:leave-start": "container-leave-start",
24024
+ "x-transition:leave-end": "container-leave-end"
23991
24025
  }
23992
24026
  };
23993
24027
  });
@@ -24008,7 +24042,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24008
24042
  }
24009
24043
  },
24010
24044
  close() {
24011
- this.$dispatch("modal:hide");
24045
+ this.modal.hide();
24012
24046
  },
24013
24047
  onFrameLoad() {
24014
24048
  this.$focus.focus(this.firstInput);
@@ -24026,8 +24060,42 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24026
24060
  };
24027
24061
  });
24028
24062
 
24063
+ // ../../components/coco/base/modal_lightbox/modal_lightbox.js
24064
+ var modal_lightbox_exports = {};
24065
+ __export(modal_lightbox_exports, {
24066
+ default: () => modal_lightbox_default
24067
+ });
24068
+ var modal_lightbox_default = CocoComponent("modalLightbox", () => {
24069
+ return {
24070
+ loaded: false,
24071
+ init() {
24072
+ if (this.img.complete && this.img.naturalHeight !== 0) {
24073
+ this.imageLoaded();
24074
+ }
24075
+ },
24076
+ close() {
24077
+ this.modal.hide();
24078
+ },
24079
+ imageLoaded() {
24080
+ this.loaded = true;
24081
+ this.$nextTick(() => {
24082
+ const scrollTop = parseInt(this.img.dataset.scrollTop, 10);
24083
+ if (!isNaN(scrollTop) && scrollTop !== 0) {
24084
+ this.modal.scrollTo(scrollTop);
24085
+ }
24086
+ });
24087
+ },
24088
+ get img() {
24089
+ return this.$refs.media.querySelector("img");
24090
+ },
24091
+ root: {
24092
+ ":class": "{loaded}"
24093
+ }
24094
+ };
24095
+ });
24096
+
24029
24097
  // import-glob:/Users/mark/Code/coveragebook/coco/app/assets/js/base|@baseComponents/**/*.js
24030
- var modules = [button_exports, dropdown_exports, icon_exports, image_uploader_exports, modal_exports, modal_dialog_exports];
24098
+ var modules = [button_exports, dropdown_exports, icon_exports, image_uploader_exports, modal_exports, modal_dialog_exports, modal_lightbox_exports];
24031
24099
  var __default = modules;
24032
24100
 
24033
24101
  // base/components.js
@@ -24166,8 +24234,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24166
24234
  }
24167
24235
 
24168
24236
  // helpers/turbo_events.js
24169
- function wasSuccessful(event2) {
24170
- return getEventDetail(event2).success;
24237
+ function wasSuccessful(event) {
24238
+ return getEventDetail(event).success;
24171
24239
  }
24172
24240
  function getEventDetail(obj) {
24173
24241
  return obj instanceof CustomEvent ? obj.detail : obj;
@@ -24248,12 +24316,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24248
24316
  setLayout(layout) {
24249
24317
  this.layout = layout;
24250
24318
  },
24251
- handleImageDrop(event2) {
24319
+ handleImageDrop(event) {
24252
24320
  this.dragging = false;
24253
24321
  if (this.bgImagePicker) {
24254
- this.bgImagePicker.handleExternalDrop(event2);
24322
+ this.bgImagePicker.handleExternalDrop(event);
24255
24323
  } else {
24256
- event2.preventDefault();
24324
+ event.preventDefault();
24257
24325
  }
24258
24326
  },
24259
24327
  async save() {
@@ -24315,9 +24383,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
24315
24383
  }
24316
24384
  input.files = dataTransfer.files;
24317
24385
  },
24318
- handleSlideClick(event2) {
24319
- if (Array.from(event2.target.classList).includes("slide-text")) {
24320
- event2.target.querySelector("textarea").focus();
24386
+ handleSlideClick(event) {
24387
+ if (Array.from(event.target.classList).includes("slide-text")) {
24388
+ event.target.querySelector("textarea").focus();
24321
24389
  }
24322
24390
  },
24323
24391
  get blankTextAreasList() {
@@ -25707,8 +25775,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
25707
25775
  /* Start */
25708
25776
  );
25709
25777
  if (result !== false) {
25710
- SECONDARY_EVENTS.forEach(function(event2) {
25711
- document.addEventListener(event2, this$1, { passive: false });
25778
+ SECONDARY_EVENTS.forEach(function(event) {
25779
+ document.addEventListener(event, this$1, { passive: false });
25712
25780
  });
25713
25781
  }
25714
25782
  break;
@@ -25729,8 +25797,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
25729
25797
  2
25730
25798
  /* End */
25731
25799
  );
25732
- SECONDARY_EVENTS.forEach(function(event2) {
25733
- document.removeEventListener(event2, this$1, { passive: false });
25800
+ SECONDARY_EVENTS.forEach(function(event) {
25801
+ document.removeEventListener(event, this$1, { passive: false });
25734
25802
  });
25735
25803
  break;
25736
25804
  }
@@ -26394,8 +26462,8 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
26394
26462
  this.$root.querySelector("[data-role='image-picker'").firstElementChild
26395
26463
  );
26396
26464
  },
26397
- handleExternalDrop(event2) {
26398
- this.readFile(event2.dataTransfer.files[0]);
26465
+ handleExternalDrop(event) {
26466
+ this.readFile(event.dataTransfer.files[0]);
26399
26467
  },
26400
26468
  readFile(file) {
26401
26469
  const reader = new FileReader();