@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.
- package/dist/browser/pacem-ui.js +71 -9
- package/dist/browser/pacem-ui.js.map +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/bundle/pacem-ui.min.mjs +57 -57
- package/dist/bundle/pacem-ui.mjs +67 -9
- package/dist/bundle/pacem-ui.mjs.map +2 -2
- package/dist/docs/pacem-ui.json +32 -1
- package/dist/esm/adapter.js +1 -1
- package/dist/esm/anchor.js +1 -1
- package/dist/esm/balloon.js +1 -1
- package/dist/esm/binder.js +57 -9
- package/dist/esm/blade.js +1 -1
- package/dist/esm/bottom-sheet.js +1 -1
- package/dist/esm/button.js +1 -1
- package/dist/esm/buttonset.js +1 -1
- package/dist/esm/calendar.js +1 -1
- package/dist/esm/collapse.js +1 -1
- package/dist/esm/dialog-abstractions.js +1 -1
- package/dist/esm/dialog.js +1 -1
- package/dist/esm/divider.js +1 -1
- package/dist/esm/icon.js +1 -1
- package/dist/esm/image.js +1 -1
- package/dist/esm/index-components-ui.js +1 -1
- package/dist/esm/index-components.js +1 -1
- package/dist/esm/index-iife.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/infinite-scroller.js +1 -1
- package/dist/esm/iterative.js +1 -1
- package/dist/esm/lightbox-abstractions.js +1 -1
- package/dist/esm/lightbox.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/markdown-svc.js +1 -1
- package/dist/esm/markdown.js +1 -1
- package/dist/esm/marquee.js +1 -1
- package/dist/esm/media-query.js +1 -1
- package/dist/esm/menu.js +1 -1
- package/dist/esm/pager.js +1 -1
- package/dist/esm/picture.js +1 -1
- package/dist/esm/progressbar.js +1 -1
- package/dist/esm/sidebar.js +1 -1
- package/dist/esm/slideshow.js +1 -1
- package/dist/esm/social-twitter.js +1 -1
- package/dist/esm/sticky-header.js +1 -1
- package/dist/esm/tabs.js +1 -1
- package/dist/esm/ticker.js +1 -1
- package/dist/esm/toast.js +1 -1
- package/dist/esm/toc.js +1 -1
- package/dist/esm/tuner.js +1 -1
- package/dist/esm/types.js +1 -1
- package/dist/esm/vibration.js +1 -1
- package/dist/esm/view.js +15 -1
- package/dist/esm/window.js +1 -1
- package/package.json +1 -1
- package/typings/index.d.ts +11 -1
package/dist/browser/pacem-ui.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pacem/pacem-ui v2.0.0-
|
|
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
|
*/
|
|
@@ -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.
|
|
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
|
-
/**
|
|
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 (
|
|
1350
|
-
|
|
1351
|
-
|
|
1371
|
+
if (pacemCore.Utils.isNull(svg)) {
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
if (this._layered) {
|
|
1375
|
+
svg.setAttribute('width', '100%');
|
|
1376
|
+
svg.setAttribute('height', '100%');
|
|
1377
|
+
return;
|
|
1352
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
|
|
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);
|
|
@@ -5886,6 +5934,8 @@ css-class="{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item
|
|
|
5886
5934
|
let PacemViewElement = class PacemViewElement extends pacemCore.PacemEventTarget {
|
|
5887
5935
|
constructor() {
|
|
5888
5936
|
super(...arguments);
|
|
5937
|
+
/** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */
|
|
5938
|
+
this.#renderVersion = 0;
|
|
5889
5939
|
this._templateChangeHandler = (evt) => {
|
|
5890
5940
|
const tmplProxy = evt.target;
|
|
5891
5941
|
this._setTmpl(tmplProxy.target);
|
|
@@ -5903,6 +5953,8 @@ css-class="{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item
|
|
|
5903
5953
|
}, 100 /* tenth of a second limit */);
|
|
5904
5954
|
};
|
|
5905
5955
|
}
|
|
5956
|
+
/** Bumped by every new content: a pending `render` dispatch from superseded content is dropped. */
|
|
5957
|
+
#renderVersion;
|
|
5906
5958
|
propertyChangedCallback(name, old, val, first) {
|
|
5907
5959
|
super.propertyChangedCallback(name, old, val, first);
|
|
5908
5960
|
// url
|
|
@@ -5967,6 +6019,7 @@ css-class="{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item
|
|
|
5967
6019
|
}
|
|
5968
6020
|
_setTmpl(tmpl) {
|
|
5969
6021
|
cancelAnimationFrame(this._renderHandle);
|
|
6022
|
+
this.#renderVersion++;
|
|
5970
6023
|
// this way, `this._container.innerHTML = ''` instruction will eventually let the page "scroll up"...
|
|
5971
6024
|
this.innerHTML = '';
|
|
5972
6025
|
this._dispatchPrerender();
|
|
@@ -6039,6 +6092,7 @@ css-class="{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item
|
|
|
6039
6092
|
_manageResult(result) {
|
|
6040
6093
|
// this way, `this._container.innerHTML = ''` instruction will eventually let the page "scroll up"...
|
|
6041
6094
|
cancelAnimationFrame(this._renderHandle);
|
|
6095
|
+
const version = ++this.#renderVersion;
|
|
6042
6096
|
this.scrollTo({ top: 0, left: 0, behavior: 'instant' });
|
|
6043
6097
|
this.innerHTML = '';
|
|
6044
6098
|
this._dispatchPrerender();
|
|
@@ -6049,12 +6103,20 @@ css-class="{{ ['hour-start-'+ (^item.hour + 1), 'hour-end-'+ (^item.hour + ^item
|
|
|
6049
6103
|
// setting fetching to `false` triggers a css class change that could/should cause a css transition to happen
|
|
6050
6104
|
// TODO: manage to switch to native in a near future (https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API or https://youtu.be/oDcb3fvtETs)
|
|
6051
6105
|
pacemCore.Utils.addAnimationEndCallback(this, () => {
|
|
6106
|
+
if (version !== this.#renderVersion) {
|
|
6107
|
+
return;
|
|
6108
|
+
}
|
|
6052
6109
|
this._dispatchRender();
|
|
6053
6110
|
}, ANIM_TIMEOUT);
|
|
6054
6111
|
});
|
|
6055
6112
|
}
|
|
6056
6113
|
#resizeHandle;
|
|
6057
6114
|
_dispatchRender() {
|
|
6115
|
+
// the view might have been removed meanwhile (e.g. a nested view whose container got re-rendered):
|
|
6116
|
+
// no shell to host the resizer, nothing to notify.
|
|
6117
|
+
if (!this.isConnected) {
|
|
6118
|
+
return;
|
|
6119
|
+
}
|
|
6058
6120
|
const resizer = new pacemCore.Components.PacemResizeElement();
|
|
6059
6121
|
resizer.target = this;
|
|
6060
6122
|
resizer.addEventListener(pacemCore.Components.ResizeEventName, this._debounceDispatchHandler);
|