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

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 +57 -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 +56 -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 +1 -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-cauchy (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1288,6 +1288,10 @@
1288
1288
  this._setPathVisibility();
1289
1289
  }
1290
1290
  break;
1291
+ case 'layer':
1292
+ this._hostSvg();
1293
+ this._draw();
1294
+ break;
1291
1295
  }
1292
1296
  }
1293
1297
  disconnectedCallback() {
@@ -1329,27 +1333,67 @@
1329
1333
  pacemCore.Utils.addClass(svg, pacemCore.PCSS + '-binder ' + this.className);
1330
1334
  svg.style.top = '0';
1331
1335
  svg.style.left = '0';
1332
- svg.style.overflow = 'hidden';
1333
1336
  svg.style.pointerEvents = 'none';
1334
1337
  const path = this._path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
1335
1338
  path.setAttribute('fill', 'none');
1336
1339
  path.setAttribute('display', 'none');
1337
1340
  this._setPathVisibility();
1338
1341
  svg.appendChild(path);
1339
- this.invalidateSize();
1340
- document.body.appendChild(svg);
1342
+ this._hostSvg();
1341
1343
  STD_EVENTS.forEach(e => {
1342
1344
  path.addEventListener(e, this._broadcastHandler, false);
1343
1345
  });
1344
1346
  }
1345
1347
  }
1346
- /** 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. */
1348
+ /** Whether the SVG lives in a custom {@link layer} rather than in the full-page overlay. */
1349
+ get _layered() {
1350
+ const layer = this.layer;
1351
+ return !pacemCore.Utils.isNull(layer) && layer !== document.body;
1352
+ }
1353
+ /** Appends the SVG to its host ({@link layer} or `document.body`), adapting its overflow and size accordingly. */
1354
+ _hostSvg() {
1355
+ const svg = this._svg;
1356
+ if (pacemCore.Utils.isNull(svg)) {
1357
+ return;
1358
+ }
1359
+ const layered = this._layered;
1360
+ // a full-page overlay must not grow the document, a layer must not crop the curve
1361
+ svg.style.overflow = layered ? 'visible' : 'hidden';
1362
+ this.invalidateSize();
1363
+ const host = layered ? this.layer : document.body;
1364
+ if (svg.parentNode !== host) {
1365
+ host.appendChild(svg);
1366
+ }
1367
+ }
1368
+ /** 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. */
1347
1369
  invalidateSize() {
1348
1370
  const svg = this._svg;
1349
- if (!pacemCore.Utils.isNull(svg)) {
1350
- svg.setAttribute('width', document.body.scrollWidth.toString());
1351
- svg.setAttribute('height', document.body.scrollHeight.toString());
1371
+ if (pacemCore.Utils.isNull(svg)) {
1372
+ return;
1352
1373
  }
1374
+ if (this._layered) {
1375
+ svg.setAttribute('width', '100%');
1376
+ svg.setAttribute('height', '100%');
1377
+ return;
1378
+ }
1379
+ svg.setAttribute('width', document.body.scrollWidth.toString());
1380
+ svg.setAttribute('height', document.body.scrollHeight.toString());
1381
+ }
1382
+ /** Page coordinates of the origin the curve is drawn against: the {@link layer}'s (scrolled) padding box, or the page itself. */
1383
+ _getOrigin() {
1384
+ if (!this._layered) {
1385
+ return { x: 0, y: 0 };
1386
+ }
1387
+ const layer = this.layer;
1388
+ const offset = pacemCore.Utils.offset(layer);
1389
+ return {
1390
+ x: offset.left + layer.clientLeft - layer.scrollLeft,
1391
+ y: offset.top + layer.clientTop - layer.scrollTop
1392
+ };
1393
+ }
1394
+ /** Translates a page-based layout into the coordinates of the drawing origin. */
1395
+ _toLocal(size, origin) {
1396
+ return { ...size, left: size.left - origin.x, top: size.top - origin.y };
1353
1397
  }
1354
1398
  _computeAnchorPoints(target, anchor, end, ref, refAnchor, refEnd, tension) {
1355
1399
  var p1, p2, c1, c2;
@@ -1702,7 +1746,8 @@
1702
1746
  path.setAttribute('d', '');
1703
1747
  return;
1704
1748
  }
1705
- 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];
1749
+ const origin = this._getOrigin(), size1 = this._toLocal(state1.size, origin), size2 = this._toLocal(state2.size, origin);
1750
+ 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];
1706
1751
  const x0 = p0.x;
1707
1752
  const y0 = p0.y;
1708
1753
  const cx0 = c0.x;
@@ -1798,6 +1843,9 @@
1798
1843
  __decorate$y([
1799
1844
  pacemCore.Watch({ emit: false, converter: pacemCore.PropertyConverters.Boolean })
1800
1845
  ], PacemBinderElement.prototype, "interactive", void 0);
1846
+ __decorate$y([
1847
+ pacemCore.Watch({ emit: false, converter: pacemCore.PropertyConverters.Element })
1848
+ ], PacemBinderElement.prototype, "layer", void 0);
1801
1849
  PacemBinderElement = __decorate$y([
1802
1850
  pacemCore.CustomElement({ tagName: pacemCore.P + '-binder' })
1803
1851
  ], PacemBinderElement);