@bagelink/vue 0.0.974 → 0.0.978
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/components/Image.vue.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
- package/dist/index.cjs +68 -28
- package/dist/index.mjs +68 -28
- package/dist/style.css +29 -22
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Image.vue +50 -6
- package/src/components/index.ts +2 -1
- package/src/components/layout/Skeleton.vue +2 -2
- package/src/components/lightbox/Lightbox.vue +1 -8
- package/src/utils/index.ts +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.vue.d.ts","sourceRoot":"","sources":["../../src/components/Image.vue"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Image.vue.d.ts","sourceRoot":"","sources":["../../src/components/Image.vue"],"names":[],"mappings":";SAyFM,MAAM;UACL,MAAM;YACJ,MAAM,GAAG,MAAM;aACd,MAAM,GAAG,MAAM;;SAHnB,MAAM;UACL,MAAM;YACJ,MAAM,GAAG,MAAM;aACd,MAAM,GAAG,MAAM;;AAwHzB,wBAMG"}
|
|
@@ -13,6 +13,7 @@ export { default as DataPreview } from './DataPreview.vue';
|
|
|
13
13
|
export { default as Dropdown } from './Dropdown.vue';
|
|
14
14
|
export { default as Flag } from './Flag.vue';
|
|
15
15
|
export * from './form';
|
|
16
|
+
export { default as Image } from './Image.vue';
|
|
16
17
|
export * from './layout';
|
|
17
18
|
export { default as ListItem } from './ListItem.vue';
|
|
18
19
|
export { default as ListView } from './ListView.vue';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,cAAc,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAE9C,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lightbox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/lightbox/Lightbox.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Lightbox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/lightbox/Lightbox.vue"],"names":[],"mappings":"AAiRA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAYpD,iBAAS,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,QAO5D;AAED,iBAAS,KAAK,SAGb;;;;;AAwfD,wBAMG"}
|
package/dist/index.cjs
CHANGED
|
@@ -19726,19 +19726,48 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
|
19726
19726
|
__name: "Image",
|
|
19727
19727
|
props: {
|
|
19728
19728
|
src: {},
|
|
19729
|
-
alt: {},
|
|
19729
|
+
alt: { default: "" },
|
|
19730
19730
|
width: {},
|
|
19731
19731
|
height: {}
|
|
19732
19732
|
},
|
|
19733
19733
|
setup(__props) {
|
|
19734
19734
|
let imageSrc = vue.ref(null);
|
|
19735
19735
|
async function loadImage(src) {
|
|
19736
|
-
|
|
19736
|
+
var _a2;
|
|
19737
|
+
if (!src) {
|
|
19738
|
+
imageSrc.value = null;
|
|
19739
|
+
return;
|
|
19740
|
+
}
|
|
19741
|
+
src = normalizeURL(src);
|
|
19742
|
+
const ext = (_a2 = src.split(".").pop()) == null ? void 0 : _a2.toLowerCase().split("?").shift();
|
|
19743
|
+
if (ext === "heic") {
|
|
19744
|
+
if (!("caches" in window)) {
|
|
19745
|
+
console.warn("Caching is not available. Proceeding without cache.");
|
|
19746
|
+
} else {
|
|
19747
|
+
try {
|
|
19748
|
+
const imgCache = await window.caches.open("img-cache");
|
|
19749
|
+
const cachedResponse = await imgCache.match(src);
|
|
19750
|
+
if (cachedResponse) {
|
|
19751
|
+
imageSrc.value = URL.createObjectURL(await cachedResponse.blob());
|
|
19752
|
+
return;
|
|
19753
|
+
}
|
|
19754
|
+
} catch (error) {
|
|
19755
|
+
console.warn("Error accessing cache:", error);
|
|
19756
|
+
}
|
|
19757
|
+
}
|
|
19737
19758
|
try {
|
|
19738
19759
|
const response = await fetch(src);
|
|
19739
19760
|
const blob = await response.blob();
|
|
19740
19761
|
const convertedBlob = await heic2any({ blob });
|
|
19741
19762
|
imageSrc.value = URL.createObjectURL(convertedBlob);
|
|
19763
|
+
if ("caches" in window) {
|
|
19764
|
+
try {
|
|
19765
|
+
const imgCache = await window.caches.open("img-cache");
|
|
19766
|
+
imgCache.put(src, new Response(convertedBlob));
|
|
19767
|
+
} catch (cacheError) {
|
|
19768
|
+
console.warn("Failed to cache the image:", cacheError);
|
|
19769
|
+
}
|
|
19770
|
+
}
|
|
19742
19771
|
} catch (error) {
|
|
19743
19772
|
console.error("Error converting HEIC file:", error);
|
|
19744
19773
|
}
|
|
@@ -19748,19 +19777,23 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
|
19748
19777
|
}
|
|
19749
19778
|
vue.watch(() => __props.src, loadImage, { immediate: true });
|
|
19750
19779
|
return (_ctx, _cache) => {
|
|
19751
|
-
return vue.openBlock(), vue.createElementBlock("
|
|
19752
|
-
|
|
19753
|
-
|
|
19754
|
-
|
|
19755
|
-
|
|
19756
|
-
|
|
19757
|
-
|
|
19758
|
-
|
|
19759
|
-
|
|
19760
|
-
|
|
19780
|
+
return vue.unref(imageSrc) ? (vue.openBlock(), vue.createElementBlock("img", vue.mergeProps({
|
|
19781
|
+
key: 0,
|
|
19782
|
+
src: vue.unref(imageSrc)
|
|
19783
|
+
}, _ctx.$attrs, {
|
|
19784
|
+
alt: _ctx.alt,
|
|
19785
|
+
width: vue.unref(normalizeDimension)(_ctx.width),
|
|
19786
|
+
height: vue.unref(normalizeDimension)(_ctx.height)
|
|
19787
|
+
}), null, 16, _hoisted_1$w)) : (vue.openBlock(), vue.createBlock(vue.unref(Skeleton), {
|
|
19788
|
+
key: 1,
|
|
19789
|
+
class: "img-web-kit",
|
|
19790
|
+
width: vue.unref(normalizeDimension)(_ctx.width),
|
|
19791
|
+
height: vue.unref(normalizeDimension)(_ctx.height)
|
|
19792
|
+
}, null, 8, ["width", "height"]));
|
|
19761
19793
|
};
|
|
19762
19794
|
}
|
|
19763
19795
|
});
|
|
19796
|
+
const Image$2 = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-e1f932a8"]]);
|
|
19764
19797
|
const _hoisted_1$v = { class: "bagel-input" };
|
|
19765
19798
|
const _hoisted_2$l = {
|
|
19766
19799
|
key: 0,
|
|
@@ -20071,7 +20104,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
20071
20104
|
key: file.id,
|
|
20072
20105
|
class: "multi-image-item-preview"
|
|
20073
20106
|
}, [
|
|
20074
|
-
isImage(file.extension || file.url) ? (vue.openBlock(), vue.createBlock(
|
|
20107
|
+
isImage(file.extension || file.url) ? (vue.openBlock(), vue.createBlock(Image$2, {
|
|
20075
20108
|
key: 0,
|
|
20076
20109
|
class: "multi-preview",
|
|
20077
20110
|
src: file.url,
|
|
@@ -20099,7 +20132,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
20099
20132
|
class: "multi-image-item-preview"
|
|
20100
20133
|
}, [
|
|
20101
20134
|
isImage(fileQ.file.type) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
|
|
20102
|
-
_ctx.multiple ? (vue.openBlock(), vue.createBlock(
|
|
20135
|
+
_ctx.multiple ? (vue.openBlock(), vue.createBlock(Image$2, {
|
|
20103
20136
|
key: 0,
|
|
20104
20137
|
width: _ctx.width || "220",
|
|
20105
20138
|
class: "multi-preview",
|
|
@@ -20162,7 +20195,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
20162
20195
|
])
|
|
20163
20196
|
]),
|
|
20164
20197
|
isImage(file.extension || file.url) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12$1, [
|
|
20165
|
-
vue.withDirectives(vue.createVNode(
|
|
20198
|
+
vue.withDirectives(vue.createVNode(Image$2, {
|
|
20166
20199
|
class: "single-preview",
|
|
20167
20200
|
src: file.url,
|
|
20168
20201
|
alt: ""
|
|
@@ -20195,7 +20228,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
20195
20228
|
icon: "check"
|
|
20196
20229
|
})
|
|
20197
20230
|
], 6),
|
|
20198
|
-
isImage(fileQ.file.type) ? (vue.openBlock(), vue.createBlock(
|
|
20231
|
+
isImage(fileQ.file.type) ? (vue.openBlock(), vue.createBlock(Image$2, {
|
|
20199
20232
|
key: 0,
|
|
20200
20233
|
class: "single-preview",
|
|
20201
20234
|
src: fileToUrl(fileQ.file),
|
|
@@ -56328,8 +56361,8 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
|
|
|
56328
56361
|
__name: "Skeleton",
|
|
56329
56362
|
props: {
|
|
56330
56363
|
count: { default: 1 },
|
|
56331
|
-
height: {
|
|
56332
|
-
width: {
|
|
56364
|
+
height: {},
|
|
56365
|
+
width: {},
|
|
56333
56366
|
round: { type: Boolean, default: false },
|
|
56334
56367
|
borderRadius: { default: "var(--skeleton-radius)" },
|
|
56335
56368
|
class: { default: "" }
|
|
@@ -56355,7 +56388,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
|
|
|
56355
56388
|
};
|
|
56356
56389
|
}
|
|
56357
56390
|
});
|
|
56358
|
-
const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-
|
|
56391
|
+
const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-4da8c0d1"]]);
|
|
56359
56392
|
const _hoisted_1$e = { class: "bgl_card tabs-top" };
|
|
56360
56393
|
const _hoisted_2$8 = { class: "tabs grid auto-flow-columns fit-content" };
|
|
56361
56394
|
const _hoisted_3$6 = ["onClick"];
|
|
@@ -58935,11 +58968,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
58935
58968
|
if (val) document.body.style.overflow = "hidden";
|
|
58936
58969
|
else document.body.style.overflow = "";
|
|
58937
58970
|
});
|
|
58938
|
-
function normalizeURL(url) {
|
|
58939
|
-
if (url.startsWith("https://")) return url;
|
|
58940
|
-
url = url.replace(/http:\/\//, "");
|
|
58941
|
-
return `//${url}`;
|
|
58942
|
-
}
|
|
58943
58971
|
function handleKeydown(event) {
|
|
58944
58972
|
if (event.key === "Escape") {
|
|
58945
58973
|
close2();
|
|
@@ -59052,7 +59080,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
59052
59080
|
default: vue.withCtx(() => {
|
|
59053
59081
|
var _a3;
|
|
59054
59082
|
return [
|
|
59055
|
-
vue.createVNode(
|
|
59083
|
+
vue.createVNode(vue.unref(Image$2), {
|
|
59056
59084
|
draggable: false,
|
|
59057
59085
|
src: (_a3 = vue.unref(currentItem)) == null ? void 0 : _a3.src,
|
|
59058
59086
|
alt: "Preview",
|
|
@@ -59069,7 +59097,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
59069
59097
|
class: "vw90"
|
|
59070
59098
|
}, null, 8, ["src"])) : ((_m = vue.unref(currentItem)) == null ? void 0 : _m.type) === "pdf" ? (vue.openBlock(), vue.createElementBlock("embed", {
|
|
59071
59099
|
key: 2,
|
|
59072
|
-
src: normalizeURL((_n2 = vue.unref(currentItem)) == null ? void 0 : _n2.src),
|
|
59100
|
+
src: vue.unref(normalizeURL)((_n2 = vue.unref(currentItem)) == null ? void 0 : _n2.src),
|
|
59073
59101
|
type: "application/pdf",
|
|
59074
59102
|
width: "100%",
|
|
59075
59103
|
height: "1080",
|
|
@@ -59111,7 +59139,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
59111
59139
|
vue.unref(group) && vue.unref(group).length > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
|
|
59112
59140
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(group), (item, index2) => {
|
|
59113
59141
|
return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: index2 }, [
|
|
59114
|
-
item.type === "image" ? (vue.openBlock(), vue.createBlock(
|
|
59142
|
+
item.type === "image" ? (vue.openBlock(), vue.createBlock(vue.unref(Image$2), {
|
|
59115
59143
|
key: 0,
|
|
59116
59144
|
class: vue.normalizeClass(["thumbnail object-fit-cover hover opacity-5 rounded flex bg-popup justify-content-center align-items-center flex-shrink-0", { active: vue.unref(currentIndex) === index2 }]),
|
|
59117
59145
|
src: item.src,
|
|
@@ -59135,7 +59163,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
59135
59163
|
};
|
|
59136
59164
|
}
|
|
59137
59165
|
});
|
|
59138
|
-
const Lightbox$1 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
59166
|
+
const Lightbox$1 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d5e5a1db"]]);
|
|
59139
59167
|
const groups = {};
|
|
59140
59168
|
let clickHandler = (_e2) => void 0;
|
|
59141
59169
|
const lightboxDirective = {
|
|
@@ -59488,6 +59516,15 @@ function appendScript(src) {
|
|
|
59488
59516
|
document.head.append(script2);
|
|
59489
59517
|
});
|
|
59490
59518
|
}
|
|
59519
|
+
function normalizeURL(url) {
|
|
59520
|
+
if (url.startsWith("https://")) return url;
|
|
59521
|
+
url = url.replace(/http:\/\//, "");
|
|
59522
|
+
return `https://${url}`;
|
|
59523
|
+
}
|
|
59524
|
+
function normalizeDimension(value, defaultMetric = "px") {
|
|
59525
|
+
if (typeof value === "number") return `${value}${defaultMetric}`;
|
|
59526
|
+
return value;
|
|
59527
|
+
}
|
|
59491
59528
|
const clickOutside = {
|
|
59492
59529
|
beforeMount(el, binding) {
|
|
59493
59530
|
el.clickOutsideEvent = (event) => {
|
|
@@ -60085,6 +60122,7 @@ exports.Flag = Flag;
|
|
|
60085
60122
|
exports.IMAGE_FORMATS = IMAGE_FORMATS;
|
|
60086
60123
|
exports.IMAGE_FORMATS_REGEXP = IMAGE_FORMATS_REGEXP;
|
|
60087
60124
|
exports.Icon = _sfc_main$c;
|
|
60125
|
+
exports.Image = Image$2;
|
|
60088
60126
|
exports.JSONInput = JSONInput;
|
|
60089
60127
|
exports.Layout = Layout;
|
|
60090
60128
|
exports.Lineart = _sfc_main$Q;
|
|
@@ -60141,6 +60179,8 @@ exports.iffer = iffer;
|
|
|
60141
60179
|
exports.initials = initials;
|
|
60142
60180
|
exports.isDate = isDate;
|
|
60143
60181
|
exports.keyToLabel = keyToLabel;
|
|
60182
|
+
exports.normalizeDimension = normalizeDimension;
|
|
60183
|
+
exports.normalizeURL = normalizeURL;
|
|
60144
60184
|
exports.sleep = sleep;
|
|
60145
60185
|
exports.timeAgo = timeAgo;
|
|
60146
60186
|
exports.useBagel = useBagel;
|
package/dist/index.mjs
CHANGED
|
@@ -19724,19 +19724,48 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
|
|
|
19724
19724
|
__name: "Image",
|
|
19725
19725
|
props: {
|
|
19726
19726
|
src: {},
|
|
19727
|
-
alt: {},
|
|
19727
|
+
alt: { default: "" },
|
|
19728
19728
|
width: {},
|
|
19729
19729
|
height: {}
|
|
19730
19730
|
},
|
|
19731
19731
|
setup(__props) {
|
|
19732
19732
|
let imageSrc = ref(null);
|
|
19733
19733
|
async function loadImage(src) {
|
|
19734
|
-
|
|
19734
|
+
var _a2;
|
|
19735
|
+
if (!src) {
|
|
19736
|
+
imageSrc.value = null;
|
|
19737
|
+
return;
|
|
19738
|
+
}
|
|
19739
|
+
src = normalizeURL(src);
|
|
19740
|
+
const ext = (_a2 = src.split(".").pop()) == null ? void 0 : _a2.toLowerCase().split("?").shift();
|
|
19741
|
+
if (ext === "heic") {
|
|
19742
|
+
if (!("caches" in window)) {
|
|
19743
|
+
console.warn("Caching is not available. Proceeding without cache.");
|
|
19744
|
+
} else {
|
|
19745
|
+
try {
|
|
19746
|
+
const imgCache = await window.caches.open("img-cache");
|
|
19747
|
+
const cachedResponse = await imgCache.match(src);
|
|
19748
|
+
if (cachedResponse) {
|
|
19749
|
+
imageSrc.value = URL.createObjectURL(await cachedResponse.blob());
|
|
19750
|
+
return;
|
|
19751
|
+
}
|
|
19752
|
+
} catch (error) {
|
|
19753
|
+
console.warn("Error accessing cache:", error);
|
|
19754
|
+
}
|
|
19755
|
+
}
|
|
19735
19756
|
try {
|
|
19736
19757
|
const response = await fetch(src);
|
|
19737
19758
|
const blob = await response.blob();
|
|
19738
19759
|
const convertedBlob = await heic2any({ blob });
|
|
19739
19760
|
imageSrc.value = URL.createObjectURL(convertedBlob);
|
|
19761
|
+
if ("caches" in window) {
|
|
19762
|
+
try {
|
|
19763
|
+
const imgCache = await window.caches.open("img-cache");
|
|
19764
|
+
imgCache.put(src, new Response(convertedBlob));
|
|
19765
|
+
} catch (cacheError) {
|
|
19766
|
+
console.warn("Failed to cache the image:", cacheError);
|
|
19767
|
+
}
|
|
19768
|
+
}
|
|
19740
19769
|
} catch (error) {
|
|
19741
19770
|
console.error("Error converting HEIC file:", error);
|
|
19742
19771
|
}
|
|
@@ -19746,19 +19775,23 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
|
|
|
19746
19775
|
}
|
|
19747
19776
|
watch(() => __props.src, loadImage, { immediate: true });
|
|
19748
19777
|
return (_ctx, _cache) => {
|
|
19749
|
-
return openBlock(), createElementBlock("
|
|
19750
|
-
|
|
19751
|
-
|
|
19752
|
-
|
|
19753
|
-
|
|
19754
|
-
|
|
19755
|
-
|
|
19756
|
-
|
|
19757
|
-
|
|
19758
|
-
|
|
19778
|
+
return unref(imageSrc) ? (openBlock(), createElementBlock("img", mergeProps({
|
|
19779
|
+
key: 0,
|
|
19780
|
+
src: unref(imageSrc)
|
|
19781
|
+
}, _ctx.$attrs, {
|
|
19782
|
+
alt: _ctx.alt,
|
|
19783
|
+
width: unref(normalizeDimension)(_ctx.width),
|
|
19784
|
+
height: unref(normalizeDimension)(_ctx.height)
|
|
19785
|
+
}), null, 16, _hoisted_1$w)) : (openBlock(), createBlock(unref(Skeleton), {
|
|
19786
|
+
key: 1,
|
|
19787
|
+
class: "img-web-kit",
|
|
19788
|
+
width: unref(normalizeDimension)(_ctx.width),
|
|
19789
|
+
height: unref(normalizeDimension)(_ctx.height)
|
|
19790
|
+
}, null, 8, ["width", "height"]));
|
|
19759
19791
|
};
|
|
19760
19792
|
}
|
|
19761
19793
|
});
|
|
19794
|
+
const Image$2 = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-e1f932a8"]]);
|
|
19762
19795
|
const _hoisted_1$v = { class: "bagel-input" };
|
|
19763
19796
|
const _hoisted_2$l = {
|
|
19764
19797
|
key: 0,
|
|
@@ -20069,7 +20102,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
20069
20102
|
key: file.id,
|
|
20070
20103
|
class: "multi-image-item-preview"
|
|
20071
20104
|
}, [
|
|
20072
|
-
isImage(file.extension || file.url) ? (openBlock(), createBlock(
|
|
20105
|
+
isImage(file.extension || file.url) ? (openBlock(), createBlock(Image$2, {
|
|
20073
20106
|
key: 0,
|
|
20074
20107
|
class: "multi-preview",
|
|
20075
20108
|
src: file.url,
|
|
@@ -20097,7 +20130,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
20097
20130
|
class: "multi-image-item-preview"
|
|
20098
20131
|
}, [
|
|
20099
20132
|
isImage(fileQ.file.type) ? (openBlock(), createElementBlock(Fragment$1, { key: 0 }, [
|
|
20100
|
-
_ctx.multiple ? (openBlock(), createBlock(
|
|
20133
|
+
_ctx.multiple ? (openBlock(), createBlock(Image$2, {
|
|
20101
20134
|
key: 0,
|
|
20102
20135
|
width: _ctx.width || "220",
|
|
20103
20136
|
class: "multi-preview",
|
|
@@ -20160,7 +20193,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
20160
20193
|
])
|
|
20161
20194
|
]),
|
|
20162
20195
|
isImage(file.extension || file.url) ? (openBlock(), createElementBlock("div", _hoisted_12$1, [
|
|
20163
|
-
withDirectives(createVNode(
|
|
20196
|
+
withDirectives(createVNode(Image$2, {
|
|
20164
20197
|
class: "single-preview",
|
|
20165
20198
|
src: file.url,
|
|
20166
20199
|
alt: ""
|
|
@@ -20193,7 +20226,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
20193
20226
|
icon: "check"
|
|
20194
20227
|
})
|
|
20195
20228
|
], 6),
|
|
20196
|
-
isImage(fileQ.file.type) ? (openBlock(), createBlock(
|
|
20229
|
+
isImage(fileQ.file.type) ? (openBlock(), createBlock(Image$2, {
|
|
20197
20230
|
key: 0,
|
|
20198
20231
|
class: "single-preview",
|
|
20199
20232
|
src: fileToUrl(fileQ.file),
|
|
@@ -56326,8 +56359,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
56326
56359
|
__name: "Skeleton",
|
|
56327
56360
|
props: {
|
|
56328
56361
|
count: { default: 1 },
|
|
56329
|
-
height: {
|
|
56330
|
-
width: {
|
|
56362
|
+
height: {},
|
|
56363
|
+
width: {},
|
|
56331
56364
|
round: { type: Boolean, default: false },
|
|
56332
56365
|
borderRadius: { default: "var(--skeleton-radius)" },
|
|
56333
56366
|
class: { default: "" }
|
|
@@ -56353,7 +56386,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
56353
56386
|
};
|
|
56354
56387
|
}
|
|
56355
56388
|
});
|
|
56356
|
-
const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-
|
|
56389
|
+
const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-4da8c0d1"]]);
|
|
56357
56390
|
const _hoisted_1$e = { class: "bgl_card tabs-top" };
|
|
56358
56391
|
const _hoisted_2$8 = { class: "tabs grid auto-flow-columns fit-content" };
|
|
56359
56392
|
const _hoisted_3$6 = ["onClick"];
|
|
@@ -58933,11 +58966,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
58933
58966
|
if (val) document.body.style.overflow = "hidden";
|
|
58934
58967
|
else document.body.style.overflow = "";
|
|
58935
58968
|
});
|
|
58936
|
-
function normalizeURL(url) {
|
|
58937
|
-
if (url.startsWith("https://")) return url;
|
|
58938
|
-
url = url.replace(/http:\/\//, "");
|
|
58939
|
-
return `//${url}`;
|
|
58940
|
-
}
|
|
58941
58969
|
function handleKeydown(event) {
|
|
58942
58970
|
if (event.key === "Escape") {
|
|
58943
58971
|
close2();
|
|
@@ -59050,7 +59078,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59050
59078
|
default: withCtx(() => {
|
|
59051
59079
|
var _a3;
|
|
59052
59080
|
return [
|
|
59053
|
-
createVNode(
|
|
59081
|
+
createVNode(unref(Image$2), {
|
|
59054
59082
|
draggable: false,
|
|
59055
59083
|
src: (_a3 = unref(currentItem)) == null ? void 0 : _a3.src,
|
|
59056
59084
|
alt: "Preview",
|
|
@@ -59067,7 +59095,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59067
59095
|
class: "vw90"
|
|
59068
59096
|
}, null, 8, ["src"])) : ((_m = unref(currentItem)) == null ? void 0 : _m.type) === "pdf" ? (openBlock(), createElementBlock("embed", {
|
|
59069
59097
|
key: 2,
|
|
59070
|
-
src: normalizeURL((_n2 = unref(currentItem)) == null ? void 0 : _n2.src),
|
|
59098
|
+
src: unref(normalizeURL)((_n2 = unref(currentItem)) == null ? void 0 : _n2.src),
|
|
59071
59099
|
type: "application/pdf",
|
|
59072
59100
|
width: "100%",
|
|
59073
59101
|
height: "1080",
|
|
@@ -59109,7 +59137,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59109
59137
|
unref(group) && unref(group).length > 1 ? (openBlock(), createElementBlock("div", _hoisted_13, [
|
|
59110
59138
|
(openBlock(true), createElementBlock(Fragment$1, null, renderList(unref(group), (item, index2) => {
|
|
59111
59139
|
return openBlock(), createElementBlock(Fragment$1, { key: index2 }, [
|
|
59112
|
-
item.type === "image" ? (openBlock(), createBlock(
|
|
59140
|
+
item.type === "image" ? (openBlock(), createBlock(unref(Image$2), {
|
|
59113
59141
|
key: 0,
|
|
59114
59142
|
class: normalizeClass(["thumbnail object-fit-cover hover opacity-5 rounded flex bg-popup justify-content-center align-items-center flex-shrink-0", { active: unref(currentIndex) === index2 }]),
|
|
59115
59143
|
src: item.src,
|
|
@@ -59133,7 +59161,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59133
59161
|
};
|
|
59134
59162
|
}
|
|
59135
59163
|
});
|
|
59136
|
-
const Lightbox$1 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
59164
|
+
const Lightbox$1 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d5e5a1db"]]);
|
|
59137
59165
|
const groups = {};
|
|
59138
59166
|
let clickHandler = (_e2) => void 0;
|
|
59139
59167
|
const lightboxDirective = {
|
|
@@ -59486,6 +59514,15 @@ function appendScript(src) {
|
|
|
59486
59514
|
document.head.append(script2);
|
|
59487
59515
|
});
|
|
59488
59516
|
}
|
|
59517
|
+
function normalizeURL(url) {
|
|
59518
|
+
if (url.startsWith("https://")) return url;
|
|
59519
|
+
url = url.replace(/http:\/\//, "");
|
|
59520
|
+
return `https://${url}`;
|
|
59521
|
+
}
|
|
59522
|
+
function normalizeDimension(value, defaultMetric = "px") {
|
|
59523
|
+
if (typeof value === "number") return `${value}${defaultMetric}`;
|
|
59524
|
+
return value;
|
|
59525
|
+
}
|
|
59489
59526
|
const clickOutside = {
|
|
59490
59527
|
beforeMount(el, binding) {
|
|
59491
59528
|
el.clickOutsideEvent = (event) => {
|
|
@@ -60084,6 +60121,7 @@ export {
|
|
|
60084
60121
|
IMAGE_FORMATS,
|
|
60085
60122
|
IMAGE_FORMATS_REGEXP,
|
|
60086
60123
|
_sfc_main$c as Icon,
|
|
60124
|
+
Image$2 as Image,
|
|
60087
60125
|
JSONInput,
|
|
60088
60126
|
Layout,
|
|
60089
60127
|
_sfc_main$Q as Lineart,
|
|
@@ -60140,6 +60178,8 @@ export {
|
|
|
60140
60178
|
initials,
|
|
60141
60179
|
isDate,
|
|
60142
60180
|
keyToLabel,
|
|
60181
|
+
normalizeDimension,
|
|
60182
|
+
normalizeURL,
|
|
60143
60183
|
sleep,
|
|
60144
60184
|
timeAgo,
|
|
60145
60185
|
useBagel,
|
package/dist/style.css
CHANGED
|
@@ -707,6 +707,13 @@ data[data-v-6c27f163] {
|
|
|
707
707
|
}
|
|
708
708
|
}
|
|
709
709
|
|
|
710
|
+
.img-web-kit[data-v-e1f932a8] {
|
|
711
|
+
max-width: 100%;
|
|
712
|
+
vertical-align: middle;
|
|
713
|
+
border: 0;
|
|
714
|
+
width: 100%;
|
|
715
|
+
}
|
|
716
|
+
|
|
710
717
|
.fileUploadWrap[data-v-e057bb0f] {
|
|
711
718
|
outline: 1px solid var(--border-color);
|
|
712
719
|
border-radius: var(--input-border-radius);
|
|
@@ -1805,25 +1812,25 @@ p {
|
|
|
1805
1812
|
transform: translateX(-20px);
|
|
1806
1813
|
}
|
|
1807
1814
|
|
|
1808
|
-
.skeleton-wrap[data-v-
|
|
1815
|
+
.skeleton-wrap[data-v-4da8c0d1] {
|
|
1809
1816
|
margin-bottom: var(--skeleton-margin);
|
|
1810
1817
|
}
|
|
1811
|
-
.skeleton[data-v-
|
|
1818
|
+
.skeleton[data-v-4da8c0d1] {
|
|
1812
1819
|
background-color: var(--skeleton-bg);
|
|
1813
1820
|
border-radius: var(--bg-card-radius);
|
|
1814
1821
|
margin-bottom: 0.25em;
|
|
1815
1822
|
position: relative;
|
|
1816
1823
|
overflow: hidden;
|
|
1817
1824
|
}
|
|
1818
|
-
.skeleton[data-v-
|
|
1825
|
+
.skeleton[data-v-4da8c0d1]::before {
|
|
1819
1826
|
content: "";
|
|
1820
1827
|
background: linear-gradient(90deg, transparent 20%, var(--skeleton-pulse) 50%, transparent 80%);
|
|
1821
|
-
animation: loadingAnimation-
|
|
1828
|
+
animation: loadingAnimation-4da8c0d1 1s ease-in-out infinite;
|
|
1822
1829
|
position: absolute;
|
|
1823
1830
|
inset: 0px;
|
|
1824
1831
|
transform: translateX(-100%);
|
|
1825
1832
|
}
|
|
1826
|
-
@keyframes loadingAnimation-
|
|
1833
|
+
@keyframes loadingAnimation-4da8c0d1 {
|
|
1827
1834
|
to {
|
|
1828
1835
|
transform: translateX(100%);
|
|
1829
1836
|
}
|
|
@@ -3474,19 +3481,19 @@ tbody tr[data-v-fae54756]:hover {
|
|
|
3474
3481
|
-moz-user-drag: none;
|
|
3475
3482
|
}
|
|
3476
3483
|
|
|
3477
|
-
.lightbox-image[data-v-
|
|
3484
|
+
.lightbox-image[data-v-d5e5a1db]{
|
|
3478
3485
|
object-fit: contain;
|
|
3479
3486
|
}
|
|
3480
|
-
.bgl-lightbox-overlay[data-v-
|
|
3487
|
+
.bgl-lightbox-overlay[data-v-d5e5a1db] {
|
|
3481
3488
|
background: rgba(0, 0, 0, 0.8);
|
|
3482
3489
|
}
|
|
3483
|
-
.bgl-lightbox[data-v-
|
|
3490
|
+
.bgl-lightbox[data-v-d5e5a1db] {
|
|
3484
3491
|
max-height: 90%;
|
|
3485
3492
|
}
|
|
3486
|
-
.bgl-lightbox-item[data-v-
|
|
3487
|
-
animation: 500ms ease bgl-lightbox-load-
|
|
3493
|
+
.bgl-lightbox-item[data-v-d5e5a1db]{
|
|
3494
|
+
animation: 500ms ease bgl-lightbox-load-d5e5a1db;
|
|
3488
3495
|
}
|
|
3489
|
-
@keyframes bgl-lightbox-load-
|
|
3496
|
+
@keyframes bgl-lightbox-load-d5e5a1db {
|
|
3490
3497
|
from {
|
|
3491
3498
|
scale:0.7;
|
|
3492
3499
|
}
|
|
@@ -3494,44 +3501,44 @@ to {
|
|
|
3494
3501
|
scale:1;
|
|
3495
3502
|
}
|
|
3496
3503
|
}
|
|
3497
|
-
.bgl-lightbox-item[data-v-
|
|
3504
|
+
.bgl-lightbox-item[data-v-d5e5a1db] * {
|
|
3498
3505
|
max-width: 90%;
|
|
3499
3506
|
max-height: calc(80vh - 90px);
|
|
3500
3507
|
border-radius: 3px;
|
|
3501
3508
|
margin: auto;
|
|
3502
|
-
animation: 200ms ease bgl-lightbox-load-
|
|
3509
|
+
animation: 200ms ease bgl-lightbox-load-d5e5a1db;
|
|
3503
3510
|
}
|
|
3504
|
-
.navigation[data-v-
|
|
3511
|
+
.navigation[data-v-d5e5a1db] {
|
|
3505
3512
|
top: 50%;
|
|
3506
3513
|
transform: translateY(-50%);
|
|
3507
3514
|
}
|
|
3508
|
-
.navigation-btn[data-v-
|
|
3515
|
+
.navigation-btn[data-v-d5e5a1db] {
|
|
3509
3516
|
width: var(--input-height);
|
|
3510
3517
|
height: var(--input-height);
|
|
3511
3518
|
}
|
|
3512
|
-
.thumbnail[data-v-
|
|
3519
|
+
.thumbnail[data-v-d5e5a1db] {
|
|
3513
3520
|
height: 50px;
|
|
3514
3521
|
width: 50px;
|
|
3515
3522
|
}
|
|
3516
|
-
.thumbnail[data-v-
|
|
3523
|
+
.thumbnail[data-v-d5e5a1db]:hover {
|
|
3517
3524
|
opacity: 1;
|
|
3518
3525
|
}
|
|
3519
|
-
.thumbnail[data-v-
|
|
3526
|
+
.thumbnail[data-v-d5e5a1db]:active {
|
|
3520
3527
|
opacity: 0.8;
|
|
3521
3528
|
}
|
|
3522
|
-
.thumbnail.active[data-v-
|
|
3529
|
+
.thumbnail.active[data-v-d5e5a1db] {
|
|
3523
3530
|
opacity: 1;
|
|
3524
3531
|
outline: 2px solid white;
|
|
3525
3532
|
}
|
|
3526
|
-
.file-info[data-v-
|
|
3533
|
+
.file-info[data-v-d5e5a1db]{
|
|
3527
3534
|
max-width: 420px
|
|
3528
3535
|
}
|
|
3529
3536
|
@media screen and (max-width: 910px) {
|
|
3530
|
-
.file-info[data-v-
|
|
3537
|
+
.file-info[data-v-d5e5a1db]{
|
|
3531
3538
|
max-width: 220px;
|
|
3532
3539
|
text-align: center !important;
|
|
3533
3540
|
}
|
|
3534
|
-
.file-info[data-v-
|
|
3541
|
+
.file-info[data-v-d5e5a1db] *{
|
|
3535
3542
|
text-align: center !important;
|
|
3536
3543
|
margin-inline: 0 !important;;
|
|
3537
3544
|
max-width: 100% !important;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export declare const isDate: (dateToTest: any) => boolean;
|
|
|
16
16
|
export declare function getFallbackSchema<T>(data?: any[], showFields?: string[]): BglFormSchemaT<T>;
|
|
17
17
|
export declare function sleep(ms?: number): Promise<unknown>;
|
|
18
18
|
export declare function appendScript(src: string): Promise<void>;
|
|
19
|
+
export declare function normalizeURL(url: string): string;
|
|
20
|
+
export declare function normalizeDimension(value: string | number | undefined, defaultMetric?: string): string | undefined;
|
|
19
21
|
export * as bagelFormUtils from './BagelFormUtils';
|
|
20
22
|
export { useLang } from './lang';
|
|
21
23
|
export { formatString } from './strings';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE/D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAC3E,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GACjB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAelC;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ3D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,iBAGtE;AAED,wBAAgB,QAAQ,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,UAG3C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,QAIrE;AAED,wBAAgB,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,UAOpE;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EACnD,KAAK,CAAC,EAAE,UAAU,EAClB,QAAQ,CAAC,EAAE,GAAG,EACd,GAAG,CAAC,EAAE,CAAC,OAcP;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAO9C;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,OAG5E;AAED,eAAO,MAAM,MAAM,eAAgB,GAAG,YAA0C,CAAA;AAEhF,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,IAAI,CAAC,EAAE,GAAG,EAAE,EACZ,UAAU,CAAC,EAAE,MAAM,EAAE,GACnB,cAAc,CAAC,CAAC,CAAC,CAWnB;AAED,wBAAgB,KAAK,CAAC,EAAE,GAAE,MAAY,oBAErC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvD;AAED,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE/D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAC3E,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GACjB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAelC;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ3D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,iBAGtE;AAED,wBAAgB,QAAQ,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,UAG3C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,QAIrE;AAED,wBAAgB,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,UAOpE;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EACnD,KAAK,CAAC,EAAE,UAAU,EAClB,QAAQ,CAAC,EAAE,GAAG,EACd,GAAG,CAAC,EAAE,CAAC,OAcP;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAO9C;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,OAG5E;AAED,eAAO,MAAM,MAAM,eAAgB,GAAG,YAA0C,CAAA;AAEhF,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,IAAI,CAAC,EAAE,GAAG,EAAE,EACZ,UAAU,CAAC,EAAE,MAAM,EAAE,GACnB,cAAc,CAAC,CAAC,CAAC,CAWnB;AAED,wBAAgB,KAAK,CAAC,EAAE,GAAE,MAAY,oBAErC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAIvC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,aAAa,SAAO,GAAG,MAAM,GAAG,SAAS,CAG/G;AAED,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
|
package/package.json
CHANGED
package/src/components/Image.vue
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { Skeleton, normalizeURL, normalizeDimension } from '@bagelink/vue'
|
|
2
3
|
import heic2any from 'heic2any'
|
|
3
4
|
import { watch } from 'vue'
|
|
4
5
|
|
|
5
|
-
const {
|
|
6
|
+
const { height, width, alt = '', src } = defineProps<{
|
|
6
7
|
src: string
|
|
7
8
|
alt?: string
|
|
8
9
|
width?: string | number
|
|
@@ -12,12 +13,42 @@ const { src, alt, width, height } = defineProps<{
|
|
|
12
13
|
let imageSrc = $ref<string | null>(null)
|
|
13
14
|
|
|
14
15
|
async function loadImage(src: string) {
|
|
15
|
-
if (src
|
|
16
|
+
if (!src) {
|
|
17
|
+
imageSrc = null
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
src = normalizeURL(src)
|
|
21
|
+
const ext = src.split('.').pop()?.toLowerCase().split('?').shift()
|
|
22
|
+
|
|
23
|
+
if (ext === 'heic') {
|
|
24
|
+
if (!('caches' in window)) {
|
|
25
|
+
console.warn('Caching is not available. Proceeding without cache.')
|
|
26
|
+
} else {
|
|
27
|
+
try {
|
|
28
|
+
const imgCache = await window.caches.open('img-cache')
|
|
29
|
+
const cachedResponse = await imgCache.match(src)
|
|
30
|
+
if (cachedResponse) {
|
|
31
|
+
imageSrc = URL.createObjectURL(await cachedResponse.blob())
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.warn('Error accessing cache:', error)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
16
38
|
try {
|
|
17
39
|
const response = await fetch(src)
|
|
18
40
|
const blob = await response.blob()
|
|
19
41
|
const convertedBlob = await heic2any({ blob }) as Blob
|
|
20
42
|
imageSrc = URL.createObjectURL(convertedBlob)
|
|
43
|
+
// Only attempt to cache if the cache API is available
|
|
44
|
+
if ('caches' in window) {
|
|
45
|
+
try {
|
|
46
|
+
const imgCache = await window.caches.open('img-cache')
|
|
47
|
+
imgCache.put(src, new Response(convertedBlob))
|
|
48
|
+
} catch (cacheError) {
|
|
49
|
+
console.warn('Failed to cache the image:', cacheError)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
21
52
|
} catch (error) {
|
|
22
53
|
console.error('Error converting HEIC file:', error)
|
|
23
54
|
}
|
|
@@ -25,12 +56,25 @@ async function loadImage(src: string) {
|
|
|
25
56
|
imageSrc = src
|
|
26
57
|
}
|
|
27
58
|
}
|
|
28
|
-
|
|
29
59
|
watch(() => src, loadImage, { immediate: true })
|
|
30
60
|
</script>
|
|
31
61
|
|
|
32
62
|
<template>
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
63
|
+
<img v-if="imageSrc" :src="imageSrc" v-bind="$attrs" :alt="alt" :width="normalizeDimension(width)" :height="normalizeDimension(height)">
|
|
64
|
+
<Skeleton
|
|
65
|
+
v-else
|
|
66
|
+
class="img-web-kit"
|
|
67
|
+
:width="normalizeDimension(width)"
|
|
68
|
+
:height="normalizeDimension(height)"
|
|
69
|
+
/>
|
|
36
70
|
</template>
|
|
71
|
+
|
|
72
|
+
<style scoped>
|
|
73
|
+
.img-web-kit {
|
|
74
|
+
max-width: 100%;
|
|
75
|
+
vertical-align: middle;
|
|
76
|
+
border: 0;
|
|
77
|
+
width: 100%;
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
</style>
|
package/src/components/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ export { default as DataPreview } from './DataPreview.vue'
|
|
|
13
13
|
export { default as Dropdown } from './Dropdown.vue'
|
|
14
14
|
export { default as Flag } from './Flag.vue'
|
|
15
15
|
export * from './form'
|
|
16
|
+
export { default as Image } from './Image.vue'
|
|
16
17
|
// export * from './whatsapp';
|
|
17
18
|
export * from './layout'
|
|
18
19
|
export { default as ListItem } from './ListItem.vue'
|
|
@@ -25,8 +26,8 @@ export { default as ModalConfirm } from './ModalConfirm.vue'
|
|
|
25
26
|
export { default as ModalForm } from './ModalForm.vue'
|
|
26
27
|
export { default as NavBar } from './NavBar.vue'
|
|
27
28
|
export { default as PageTitle } from './PageTitle.vue'
|
|
28
|
-
export { default as Pill } from './Pill.vue'
|
|
29
29
|
|
|
30
|
+
export { default as Pill } from './Pill.vue'
|
|
30
31
|
export { default as RouterWrapper } from './RouterWrapper.vue'
|
|
31
32
|
export { default as TableSchema } from './TableSchema.vue'
|
|
32
33
|
export { default as Title } from './Title.vue'
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { LightboxItem } from './lightbox.types'
|
|
3
3
|
|
|
4
|
-
import { BglVideo, Btn, Icon, Zoomer } from '@bagelink/vue'
|
|
4
|
+
import { BglVideo, Btn, Icon, Zoomer, Image, normalizeURL } from '@bagelink/vue'
|
|
5
5
|
import { watch } from 'vue'
|
|
6
|
-
import Image from '../Image.vue'
|
|
7
6
|
|
|
8
7
|
let isOpen = $ref(false)
|
|
9
8
|
let currentItem = $ref<LightboxItem>()
|
|
@@ -48,12 +47,6 @@ watch(() => isOpen, (val) => {
|
|
|
48
47
|
else document.body.style.overflow = ''
|
|
49
48
|
})
|
|
50
49
|
|
|
51
|
-
function normalizeURL(url: string) {
|
|
52
|
-
if (url.startsWith('https://')) return url
|
|
53
|
-
url = url.replace(/http:\/\//, '')
|
|
54
|
-
return `//${url}`
|
|
55
|
-
}
|
|
56
|
-
|
|
57
50
|
function handleKeydown(event: KeyboardEvent) {
|
|
58
51
|
if (event.key === 'Escape') {
|
|
59
52
|
close()
|
package/src/utils/index.ts
CHANGED
|
@@ -127,6 +127,17 @@ export function appendScript(src: string): Promise<void> {
|
|
|
127
127
|
})
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
export function normalizeURL(url: string) {
|
|
131
|
+
if (url.startsWith('https://')) return url
|
|
132
|
+
url = url.replace(/http:\/\//, '')
|
|
133
|
+
return `https://${url}`
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function normalizeDimension(value: string | number | undefined, defaultMetric = 'px'): string | undefined {
|
|
137
|
+
if (typeof value === 'number') return `${value}${defaultMetric}`
|
|
138
|
+
return value
|
|
139
|
+
}
|
|
140
|
+
|
|
130
141
|
export * as bagelFormUtils from './BagelFormUtils'
|
|
131
142
|
|
|
132
143
|
export { useLang } from './lang'
|