@getflip/swirl-components 0.271.0 → 0.272.0
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/components.json +1 -1
- package/dist/cjs/swirl-image-grid-item.cjs.entry.js +10 -8
- package/dist/collection/components/swirl-image-grid-item/swirl-image-grid-item.js +10 -8
- package/dist/components/assets/pdfjs/pdf.worker.min.js +1 -1
- package/dist/components/swirl-image-grid-item.js +10 -8
- package/dist/esm/swirl-image-grid-item.entry.js +10 -8
- package/dist/swirl-components/p-0e41e194.entry.js +1 -0
- package/dist/swirl-components/swirl-components.esm.js +1 -1
- package/dist/types/components/swirl-image-grid-item/swirl-image-grid-item.d.ts +1 -1
- package/package.json +1 -1
- package/dist/swirl-components/p-7a566f48.entry.js +0 -1
package/components.json
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const index = require('./index-2ab5d772.js');
|
|
6
6
|
const index$1 = require('./index-9f94303c.js');
|
|
7
|
+
const utils = require('./utils-ea8f1bbc.js');
|
|
7
8
|
|
|
8
9
|
const swirlImageGridItemCss = ":host{display:block;width:100%;min-height:0}:host *{box-sizing:border-box}:host(:not(:only-child)) .image-grid-item__background{display:none}:host(:not(:only-child)) .image-grid-item__image{-o-object-fit:cover;object-fit:cover}:host(:only-child) button.image-grid-item:focus-visible:before,:host(:only-child) button.image-grid-item:focus-visible:after{border-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"2\"]:nth-child(1)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"2\"]:nth-child(1)) button.image-grid-item:focus-visible:after,:host([data-sibling-count=\"3\"]:nth-child(1)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"3\"]:nth-child(1)) button.image-grid-item:focus-visible:after{border-top-left-radius:var(--s-border-radius-sm);border-bottom-left-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"2\"]:nth-child(2)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"2\"]:nth-child(2)) button.image-grid-item:focus-visible:after{border-top-right-radius:var(--s-border-radius-sm);border-bottom-right-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"3\"]:nth-child(2)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"3\"]:nth-child(2)) button.image-grid-item:focus-visible:after{border-top-right-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"3\"]:nth-child(3)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"3\"]:nth-child(3)) button.image-grid-item:focus-visible:after{border-bottom-right-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"4\"]:nth-child(1)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"4\"]:nth-child(1)) button.image-grid-item:focus-visible:after{border-top-left-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"4\"]:nth-child(2)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"4\"]:nth-child(2)) button.image-grid-item:focus-visible:after{border-top-right-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"4\"]:nth-child(3)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"4\"]:nth-child(3)) button.image-grid-item:focus-visible:after{border-bottom-left-radius:var(--s-border-radius-sm)}:host([data-sibling-count=\"4\"]:nth-child(4)) button.image-grid-item:focus-visible:before,:host([data-sibling-count=\"4\"]:nth-child(4)) button.image-grid-item:focus-visible:after{border-bottom-right-radius:var(--s-border-radius-sm)}:host(:nth-child(n+5)){display:none}.image-grid-item{position:relative;display:inline-flex;overflow:hidden;width:100%;height:100%}button.image-grid-item{padding:0;border:none;background-color:transparent;cursor:pointer}button.image-grid-item:focus{outline:none}button.image-grid-item:focus-visible:before{content:\"\";position:absolute;inset:0;border:0.125rem solid var(--s-focus-default);z-index:3}button.image-grid-item:focus-visible:after{content:\"\";position:absolute;inset:0;border:0.1875rem solid var(--s-background-default);z-index:2}.image-grid-item--has-error .image-grid-item__image{display:none}.image-grid-item--has-overlay .image-grid-item__image{scale:1.1;filter:blur(5px)}.image-grid-item__background{position:absolute;background-size:cover;inset:-40px;filter:blur(20px)}.image-grid-item__image{z-index:1;display:inline-flex;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center}.image-grid-item__loading-placeholder{display:inline-flex;width:100%;height:100%}.image-grid-item__icon{position:absolute;z-index:1;top:50%;left:50%;display:flex;width:3rem;height:3rem;justify-content:center;align-items:center;border-radius:50%;color:var(--s-icon-on-image);background-color:rgba(0, 0, 0, 0.6);transform:translate3d(-50%, -50%, 0)}.image-grid-item__icon ::part(icon){width:2rem;height:2rem}.image-grid-item__gif-controls{position:absolute;z-index:1;bottom:var(--s-space-8);left:var(--s-space-8)}.image-grid-item__gif-controls .image-grid-item__gif-controls__icon{display:flex;padding:var(--s-space-2);justify-content:center;align-items:center;border-radius:var(--s-border-radius-s);color:var(--s-icon-on-image);background-color:var(--s-surface-on-image-default)}.image-grid-item__gif-controls .image-grid-item__gif-controls__icon--button{border:none;cursor:pointer}.image-grid-item__gif-controls .image-grid-item__gif-controls__icon--label{padding-left:var(--s-space-8);padding-right:var(--s-space-8)}.image-grid-item__overlay{position:absolute;z-index:2;display:flex;justify-content:center;align-items:center;color:var(--s-text-on-image);background-color:rgba(0, 0, 0, 0.4);font-size:var(--s-font-size-2xl);inset:0}.image-grid-item__spinner{position:absolute;z-index:3;display:flex;justify-content:center;align-items:center;background-color:rgba(0, 0, 0, 0.4);inset:0}.image-grid-item__error{position:absolute;z-index:3;display:flex;justify-content:center;align-items:center;background-color:rgba(0, 0, 0, 0.1);inset:0}";
|
|
9
10
|
const SwirlImageGridItemStyle0 = swirlImageGridItemCss;
|
|
@@ -15,6 +16,10 @@ const SwirlImageGridItem = class {
|
|
|
15
16
|
this.gifStopped = index.createEvent(this, "gifStopped", 7);
|
|
16
17
|
this.imageError = index.createEvent(this, "imageError", 7);
|
|
17
18
|
this.imageLoad = index.createEvent(this, "imageLoad", 7);
|
|
19
|
+
this.handleIntersectionEntries = utils.debounce((entries) => {
|
|
20
|
+
const sorted = [...entries].sort((a, b) => a.time - b.time);
|
|
21
|
+
this.inViewport = sorted.at(-1).isIntersecting;
|
|
22
|
+
}, 250);
|
|
18
23
|
this.onLoad = () => {
|
|
19
24
|
this.error = false;
|
|
20
25
|
this.loaded = true;
|
|
@@ -89,14 +94,11 @@ const SwirlImageGridItem = class {
|
|
|
89
94
|
if (this.loading !== "intersecting") {
|
|
90
95
|
return;
|
|
91
96
|
}
|
|
92
|
-
this.intersectionObserver = new IntersectionObserver(
|
|
93
|
-
|
|
97
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
98
|
+
this.handleIntersectionEntries(entries);
|
|
94
99
|
});
|
|
95
100
|
this.intersectionObserver.observe(this.el);
|
|
96
101
|
}
|
|
97
|
-
onVisibilityChange(entries) {
|
|
98
|
-
this.inViewport = entries.some((entry) => entry.isIntersecting);
|
|
99
|
-
}
|
|
100
102
|
async pauseGif() {
|
|
101
103
|
const imageEl = this.img;
|
|
102
104
|
const staticImage = await this.readImageFromCanvas(imageEl.src);
|
|
@@ -130,16 +132,16 @@ const SwirlImageGridItem = class {
|
|
|
130
132
|
"image-grid-item--has-error": this.error,
|
|
131
133
|
"image-grid-item--has-overlay": this.overlay,
|
|
132
134
|
});
|
|
133
|
-
return (index.h(index.Host, { key: '
|
|
135
|
+
return (index.h(index.Host, { key: '3df6b790bbb8606b4eed5d6d0788d105e04f4b8a', "data-sibling-count": siblingCount, role: "listitem" }, index.h(Tag, { key: 'bb91bd8a691464f03e90ed9e89149f395df74a9d', class: className, type: this.interactive ? "button" : undefined }, index.h("div", { key: '8c1193c46a7d739a0b0980bbb8ba1fc6085800d7', class: "image-grid-item__background", style: {
|
|
134
136
|
backgroundImage: showBlurredBackground
|
|
135
137
|
? `url(${this.computedSrc})`
|
|
136
138
|
: undefined,
|
|
137
139
|
} }), this.loading !== "intersecting" ||
|
|
138
140
|
this.inViewport ||
|
|
139
|
-
this.gifPaused ? (index.h("img", { alt: this.alt, class: "image-grid-item__image", loading: this.loading !== "intersecting" ? this.loading : undefined, onError: this.onError, onLoad: this.onLoad, ref: (el) => (this.img = el), src: this.computedSrc })) : (index.h("div", { class: "image-grid-item__loading-placeholder" })), this.showGifControls && (index.h("swirl-stack", { key: '
|
|
141
|
+
this.gifPaused ? (index.h("img", { alt: this.alt, class: "image-grid-item__image", loading: this.loading !== "intersecting" ? this.loading : undefined, onError: this.onError, onLoad: this.onLoad, ref: (el) => (this.img = el), src: this.computedSrc })) : (index.h("div", { class: "image-grid-item__loading-placeholder" })), this.showGifControls && (index.h("swirl-stack", { key: 'ddbdaa408afe0d8fe445256196a23ace3c0fb75b', class: "image-grid-item__gif-controls", orientation: "horizontal", spacing: "4" }, index.h("button", { key: 'd0d2b4ca348272191442dba90619f4ac9a1bd7ec', class: "image-grid-item__gif-controls__icon image-grid-item__gif-controls__icon--button", onClick: this.handleControlClick, type: "button", "aria-label": this.gifPaused ? this.gifPlayLabel : this.gifPauseLabel }, this.gifPaused ? (index.h("swirl-icon-play-arrow", { size: 20 })) : (index.h("swirl-icon-pause", { size: 20 }))), index.h("div", { key: '2818e0abc2a61e1483a69c32678c2ac4e4989290', class: "image-grid-item__gif-controls__icon image-grid-item__gif-controls__icon--label" }, index.h("swirl-icon-gif", { key: 'c514991c015cd6f9767dd175f2370eb20937eeda', size: 20 })))), this.loaded &&
|
|
140
142
|
!this.error &&
|
|
141
143
|
this.icon &&
|
|
142
|
-
!Boolean(this.overlay) && (index.h("div", { key: '
|
|
144
|
+
!Boolean(this.overlay) && (index.h("div", { key: '3fbb938d73610ca670018d66422ce58d92a2c91c', class: "image-grid-item__icon", innerHTML: this.icon })), this.overlay && (index.h("div", { key: '435b2fd7a8a94fbe0905636b82a1793202cb1c41', class: "image-grid-item__overlay" }, this.overlay)), !this.loaded && (index.h("div", { key: 'a4a2276318afe3424504a200185a038d6dc4161f', class: "image-grid-item__spinner" }, index.h("swirl-spinner", { key: '55a074bfe0459222049673788d7b755608fd9f27' }))), this.loaded && this.error && (index.h("div", { key: 'cd48b68ce0970d73fed49bad653b9de2f0f4907f', class: "image-grid-item__error" }, index.h("swirl-icon-error", { key: '60b1c44bb59cf45b8cf5a27528dc680100344896', color: "critical" }))))));
|
|
143
145
|
}
|
|
144
146
|
get el() { return index.getElement(this); }
|
|
145
147
|
static get watchers() { return {
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { h, Host, } from "@stencil/core";
|
|
2
2
|
import classnames from "classnames";
|
|
3
|
+
import { debounce } from "../../utils";
|
|
3
4
|
export class SwirlImageGridItem {
|
|
4
5
|
constructor() {
|
|
6
|
+
this.handleIntersectionEntries = debounce((entries) => {
|
|
7
|
+
const sorted = [...entries].sort((a, b) => a.time - b.time);
|
|
8
|
+
this.inViewport = sorted.at(-1).isIntersecting;
|
|
9
|
+
}, 250);
|
|
5
10
|
this.onLoad = () => {
|
|
6
11
|
this.error = false;
|
|
7
12
|
this.loaded = true;
|
|
@@ -76,14 +81,11 @@ export class SwirlImageGridItem {
|
|
|
76
81
|
if (this.loading !== "intersecting") {
|
|
77
82
|
return;
|
|
78
83
|
}
|
|
79
|
-
this.intersectionObserver = new IntersectionObserver(
|
|
80
|
-
|
|
84
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
85
|
+
this.handleIntersectionEntries(entries);
|
|
81
86
|
});
|
|
82
87
|
this.intersectionObserver.observe(this.el);
|
|
83
88
|
}
|
|
84
|
-
onVisibilityChange(entries) {
|
|
85
|
-
this.inViewport = entries.some((entry) => entry.isIntersecting);
|
|
86
|
-
}
|
|
87
89
|
async pauseGif() {
|
|
88
90
|
const imageEl = this.img;
|
|
89
91
|
const staticImage = await this.readImageFromCanvas(imageEl.src);
|
|
@@ -117,16 +119,16 @@ export class SwirlImageGridItem {
|
|
|
117
119
|
"image-grid-item--has-error": this.error,
|
|
118
120
|
"image-grid-item--has-overlay": this.overlay,
|
|
119
121
|
});
|
|
120
|
-
return (h(Host, { key: '
|
|
122
|
+
return (h(Host, { key: '3df6b790bbb8606b4eed5d6d0788d105e04f4b8a', "data-sibling-count": siblingCount, role: "listitem" }, h(Tag, { key: 'bb91bd8a691464f03e90ed9e89149f395df74a9d', class: className, type: this.interactive ? "button" : undefined }, h("div", { key: '8c1193c46a7d739a0b0980bbb8ba1fc6085800d7', class: "image-grid-item__background", style: {
|
|
121
123
|
backgroundImage: showBlurredBackground
|
|
122
124
|
? `url(${this.computedSrc})`
|
|
123
125
|
: undefined,
|
|
124
126
|
} }), this.loading !== "intersecting" ||
|
|
125
127
|
this.inViewport ||
|
|
126
|
-
this.gifPaused ? (h("img", { alt: this.alt, class: "image-grid-item__image", loading: this.loading !== "intersecting" ? this.loading : undefined, onError: this.onError, onLoad: this.onLoad, ref: (el) => (this.img = el), src: this.computedSrc })) : (h("div", { class: "image-grid-item__loading-placeholder" })), this.showGifControls && (h("swirl-stack", { key: '
|
|
128
|
+
this.gifPaused ? (h("img", { alt: this.alt, class: "image-grid-item__image", loading: this.loading !== "intersecting" ? this.loading : undefined, onError: this.onError, onLoad: this.onLoad, ref: (el) => (this.img = el), src: this.computedSrc })) : (h("div", { class: "image-grid-item__loading-placeholder" })), this.showGifControls && (h("swirl-stack", { key: 'ddbdaa408afe0d8fe445256196a23ace3c0fb75b', class: "image-grid-item__gif-controls", orientation: "horizontal", spacing: "4" }, h("button", { key: 'd0d2b4ca348272191442dba90619f4ac9a1bd7ec', class: "image-grid-item__gif-controls__icon image-grid-item__gif-controls__icon--button", onClick: this.handleControlClick, type: "button", "aria-label": this.gifPaused ? this.gifPlayLabel : this.gifPauseLabel }, this.gifPaused ? (h("swirl-icon-play-arrow", { size: 20 })) : (h("swirl-icon-pause", { size: 20 }))), h("div", { key: '2818e0abc2a61e1483a69c32678c2ac4e4989290', class: "image-grid-item__gif-controls__icon image-grid-item__gif-controls__icon--label" }, h("swirl-icon-gif", { key: 'c514991c015cd6f9767dd175f2370eb20937eeda', size: 20 })))), this.loaded &&
|
|
127
129
|
!this.error &&
|
|
128
130
|
this.icon &&
|
|
129
|
-
!Boolean(this.overlay) && (h("div", { key: '
|
|
131
|
+
!Boolean(this.overlay) && (h("div", { key: '3fbb938d73610ca670018d66422ce58d92a2c91c', class: "image-grid-item__icon", innerHTML: this.icon })), this.overlay && (h("div", { key: '435b2fd7a8a94fbe0905636b82a1793202cb1c41', class: "image-grid-item__overlay" }, this.overlay)), !this.loaded && (h("div", { key: 'a4a2276318afe3424504a200185a038d6dc4161f', class: "image-grid-item__spinner" }, h("swirl-spinner", { key: '55a074bfe0459222049673788d7b755608fd9f27' }))), this.loaded && this.error && (h("div", { key: 'cd48b68ce0970d73fed49bad653b9de2f0f4907f', class: "image-grid-item__error" }, h("swirl-icon-error", { key: '60b1c44bb59cf45b8cf5a27528dc680100344896', color: "critical" }))))));
|
|
130
132
|
}
|
|
131
133
|
static get is() { return "swirl-image-grid-item"; }
|
|
132
134
|
static get encapsulation() { return "shadow"; }
|