@pacem/pacem-ui 2.0.0-babbage → 2.0.0-chebyshev

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 (54) hide show
  1. package/dist/browser/pacem-ui.js +71 -9
  2. package/dist/browser/pacem-ui.js.map +1 -1
  3. package/dist/browser/pacem-ui.min.js +2 -2
  4. package/dist/bundle/pacem-ui.min.mjs +57 -57
  5. package/dist/bundle/pacem-ui.mjs +67 -9
  6. package/dist/bundle/pacem-ui.mjs.map +2 -2
  7. package/dist/docs/pacem-ui.json +32 -1
  8. package/dist/esm/adapter.js +1 -1
  9. package/dist/esm/anchor.js +1 -1
  10. package/dist/esm/balloon.js +1 -1
  11. package/dist/esm/binder.js +57 -9
  12. package/dist/esm/blade.js +1 -1
  13. package/dist/esm/bottom-sheet.js +1 -1
  14. package/dist/esm/button.js +1 -1
  15. package/dist/esm/buttonset.js +1 -1
  16. package/dist/esm/calendar.js +1 -1
  17. package/dist/esm/collapse.js +1 -1
  18. package/dist/esm/dialog-abstractions.js +1 -1
  19. package/dist/esm/dialog.js +1 -1
  20. package/dist/esm/divider.js +1 -1
  21. package/dist/esm/icon.js +1 -1
  22. package/dist/esm/image.js +1 -1
  23. package/dist/esm/index-components-ui.js +1 -1
  24. package/dist/esm/index-components.js +1 -1
  25. package/dist/esm/index-iife.js +1 -1
  26. package/dist/esm/index.js +1 -1
  27. package/dist/esm/infinite-scroller.js +1 -1
  28. package/dist/esm/iterative.js +1 -1
  29. package/dist/esm/lightbox-abstractions.js +1 -1
  30. package/dist/esm/lightbox.js +1 -1
  31. package/dist/esm/loader.js +1 -1
  32. package/dist/esm/markdown-svc.js +1 -1
  33. package/dist/esm/markdown.js +1 -1
  34. package/dist/esm/marquee.js +1 -1
  35. package/dist/esm/media-query.js +1 -1
  36. package/dist/esm/menu.js +1 -1
  37. package/dist/esm/pager.js +1 -1
  38. package/dist/esm/picture.js +1 -1
  39. package/dist/esm/progressbar.js +1 -1
  40. package/dist/esm/sidebar.js +1 -1
  41. package/dist/esm/slideshow.js +1 -1
  42. package/dist/esm/social-twitter.js +1 -1
  43. package/dist/esm/sticky-header.js +1 -1
  44. package/dist/esm/tabs.js +1 -1
  45. package/dist/esm/ticker.js +1 -1
  46. package/dist/esm/toast.js +1 -1
  47. package/dist/esm/toc.js +1 -1
  48. package/dist/esm/tuner.js +1 -1
  49. package/dist/esm/types.js +1 -1
  50. package/dist/esm/vibration.js +1 -1
  51. package/dist/esm/view.js +15 -1
  52. package/dist/esm/window.js +1 -1
  53. package/package.json +1 -1
  54. package/typings/index.d.ts +11 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem-ui v2.0.0-babbage (https://js.pacem.it)
2
+ * @pacem/pacem-ui v2.0.0-chebyshev (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1318,6 +1318,10 @@ var PacemBinderElement = class PacemBinderElement2 extends Components4.PacemElem
1318
1318
  this._setPathVisibility();
1319
1319
  }
1320
1320
  break;
1321
+ case "layer":
1322
+ this._hostSvg();
1323
+ this._draw();
1324
+ break;
1321
1325
  }
1322
1326
  }
1323
1327
  disconnectedCallback() {
@@ -1357,27 +1361,66 @@ var PacemBinderElement = class PacemBinderElement2 extends Components4.PacemElem
1357
1361
  Utils4.addClass(svg, PCSS4 + "-binder " + this.className);
1358
1362
  svg.style.top = "0";
1359
1363
  svg.style.left = "0";
1360
- svg.style.overflow = "hidden";
1361
1364
  svg.style.pointerEvents = "none";
1362
1365
  const path = this._path = document.createElementNS("http://www.w3.org/2000/svg", "path");
1363
1366
  path.setAttribute("fill", "none");
1364
1367
  path.setAttribute("display", "none");
1365
1368
  this._setPathVisibility();
1366
1369
  svg.appendChild(path);
1367
- this.invalidateSize();
1368
- document.body.appendChild(svg);
1370
+ this._hostSvg();
1369
1371
  STD_EVENTS.forEach((e) => {
1370
1372
  path.addEventListener(e, this._broadcastHandler, false);
1371
1373
  });
1372
1374
  }
1373
1375
  }
1374
- /** Resizes the shared full-page SVG overlay to match the current document size; call after layout changes that may affect `document.body`'s scroll size. */
1376
+ /** Whether the SVG lives in a custom {@link layer} rather than in the full-page overlay. */
1377
+ get _layered() {
1378
+ const layer = this.layer;
1379
+ return !Utils4.isNull(layer) && layer !== document.body;
1380
+ }
1381
+ /** Appends the SVG to its host ({@link layer} or `document.body`), adapting its overflow and size accordingly. */
1382
+ _hostSvg() {
1383
+ const svg = this._svg;
1384
+ if (Utils4.isNull(svg)) {
1385
+ return;
1386
+ }
1387
+ const layered = this._layered;
1388
+ svg.style.overflow = layered ? "visible" : "hidden";
1389
+ this.invalidateSize();
1390
+ const host = layered ? this.layer : document.body;
1391
+ if (svg.parentNode !== host) {
1392
+ host.appendChild(svg);
1393
+ }
1394
+ }
1395
+ /** Resizes the shared full-page SVG overlay to match the current document size; call after layout changes that may affect `document.body`'s scroll size. A {@link layer}-hosted SVG just fills its host. */
1375
1396
  invalidateSize() {
1376
1397
  const svg = this._svg;
1377
- if (!Utils4.isNull(svg)) {
1378
- svg.setAttribute("width", document.body.scrollWidth.toString());
1379
- svg.setAttribute("height", document.body.scrollHeight.toString());
1398
+ if (Utils4.isNull(svg)) {
1399
+ return;
1400
+ }
1401
+ if (this._layered) {
1402
+ svg.setAttribute("width", "100%");
1403
+ svg.setAttribute("height", "100%");
1404
+ return;
1380
1405
  }
1406
+ svg.setAttribute("width", document.body.scrollWidth.toString());
1407
+ svg.setAttribute("height", document.body.scrollHeight.toString());
1408
+ }
1409
+ /** Page coordinates of the origin the curve is drawn against: the {@link layer}'s (scrolled) padding box, or the page itself. */
1410
+ _getOrigin() {
1411
+ if (!this._layered) {
1412
+ return { x: 0, y: 0 };
1413
+ }
1414
+ const layer = this.layer;
1415
+ const offset = Utils4.offset(layer);
1416
+ return {
1417
+ x: offset.left + layer.clientLeft - layer.scrollLeft,
1418
+ y: offset.top + layer.clientTop - layer.scrollTop
1419
+ };
1420
+ }
1421
+ /** Translates a page-based layout into the coordinates of the drawing origin. */
1422
+ _toLocal(size, origin) {
1423
+ return { ...size, left: size.left - origin.x, top: size.top - origin.y };
1381
1424
  }
1382
1425
  _computeAnchorPoints(target, anchor, end, ref, refAnchor, refEnd, tension) {
1383
1426
  var p1, p2, c1, c2;
@@ -1709,7 +1752,8 @@ var PacemBinderElement = class PacemBinderElement2 extends Components4.PacemElem
1709
1752
  path.setAttribute("d", "");
1710
1753
  return;
1711
1754
  }
1712
- const { points, anchors } = this._computeAnchorPoints(state1.size, state1.anchor, this.fromEnd, state2.size, state2.anchor, this.toEnd, this.tension), p0 = points[0], c0 = points[1], p1 = points[2], c1 = points[3], anchor0 = anchors[0], anchor1 = anchors[1];
1755
+ const origin = this._getOrigin(), size1 = this._toLocal(state1.size, origin), size2 = this._toLocal(state2.size, origin);
1756
+ const { points, anchors } = this._computeAnchorPoints(size1, state1.anchor, this.fromEnd, size2, state2.anchor, this.toEnd, this.tension), p0 = points[0], c0 = points[1], p1 = points[2], c1 = points[3], anchor0 = anchors[0], anchor1 = anchors[1];
1713
1757
  const x0 = p0.x;
1714
1758
  const y0 = p0.y;
1715
1759
  const cx0 = c0.x;
@@ -1805,6 +1849,9 @@ __decorate4([
1805
1849
  __decorate4([
1806
1850
  Watch4({ emit: false, converter: PropertyConverters4.Boolean })
1807
1851
  ], PacemBinderElement.prototype, "interactive", void 0);
1852
+ __decorate4([
1853
+ Watch4({ emit: false, converter: PropertyConverters4.Element })
1854
+ ], PacemBinderElement.prototype, "layer", void 0);
1808
1855
  PacemBinderElement = __decorate4([
1809
1856
  CustomElement4({ tagName: P4 + "-binder" })
1810
1857
  ], PacemBinderElement);
@@ -5789,6 +5836,7 @@ var ElementOrStringPropertyConverter = {
5789
5836
  var PacemViewElement = class PacemViewElement2 extends PacemEventTarget6 {
5790
5837
  constructor() {
5791
5838
  super(...arguments);
5839
+ this.#renderVersion = 0;
5792
5840
  this._templateChangeHandler = (evt) => {
5793
5841
  const tmplProxy = evt.target;
5794
5842
  this._setTmpl(tmplProxy.target);
@@ -5809,6 +5857,8 @@ var PacemViewElement = class PacemViewElement2 extends PacemEventTarget6 {
5809
5857
  );
5810
5858
  };
5811
5859
  }
5860
+ /** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */
5861
+ #renderVersion;
5812
5862
  propertyChangedCallback(name, old, val, first) {
5813
5863
  super.propertyChangedCallback(name, old, val, first);
5814
5864
  if (name === "url" || name === "disabled") {
@@ -5865,6 +5915,7 @@ var PacemViewElement = class PacemViewElement2 extends PacemEventTarget6 {
5865
5915
  }
5866
5916
  _setTmpl(tmpl) {
5867
5917
  cancelAnimationFrame(this._renderHandle);
5918
+ this.#renderVersion++;
5868
5919
  this.innerHTML = "";
5869
5920
  this._dispatchPrerender();
5870
5921
  this._renderHandle = requestAnimationFrame(() => {
@@ -5927,6 +5978,7 @@ var PacemViewElement = class PacemViewElement2 extends PacemEventTarget6 {
5927
5978
  }
5928
5979
  _manageResult(result) {
5929
5980
  cancelAnimationFrame(this._renderHandle);
5981
+ const version = ++this.#renderVersion;
5930
5982
  this.scrollTo({ top: 0, left: 0, behavior: "instant" });
5931
5983
  this.innerHTML = "";
5932
5984
  this._dispatchPrerender();
@@ -5935,12 +5987,18 @@ var PacemViewElement = class PacemViewElement2 extends PacemEventTarget6 {
5935
5987
  this.fetching = false;
5936
5988
  this.progress = Number.NaN;
5937
5989
  Utils32.addAnimationEndCallback(this, () => {
5990
+ if (version !== this.#renderVersion) {
5991
+ return;
5992
+ }
5938
5993
  this._dispatchRender();
5939
5994
  }, ANIM_TIMEOUT);
5940
5995
  });
5941
5996
  }
5942
5997
  #resizeHandle;
5943
5998
  _dispatchRender() {
5999
+ if (!this.isConnected) {
6000
+ return;
6001
+ }
5944
6002
  const resizer = new Components33.PacemResizeElement();
5945
6003
  resizer.target = this;
5946
6004
  resizer.addEventListener(Components33.ResizeEventName, this._debounceDispatchHandler);