@bagelink/vue 1.2.141 → 1.2.143

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.
@@ -1 +1 @@
1
- {"version":3,"file":"BglVideo.vue.d.ts","sourceRoot":"","sources":["../../src/components/BglVideo.vue"],"names":[],"mappings":"AAuIA,KAAK,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;AACnC,UAAU,KAAK;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAcD,iBAAS,IAAI,SAEZ;AAED,iBAAS,KAAK,SAEb;;;;;;;;AAwID,wBASG"}
1
+ {"version":3,"file":"BglVideo.vue.d.ts","sourceRoot":"","sources":["../../src/components/BglVideo.vue"],"names":[],"mappings":"AA2JA,KAAK,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;AACnC,UAAU,KAAK;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAsBD,iBAAS,IAAI,SAEZ;AAED,iBAAS,KAAK,SAEb;;;;;;;;AAiJD,wBASG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Lightbox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/lightbox/Lightbox.vue"],"names":[],"mappings":"AAsRA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAUpD,iBAAS,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,QAK5D;AAED,iBAAS,KAAK,SAGb;;;;;AAikBD,wBAOG"}
1
+ {"version":3,"file":"Lightbox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/lightbox/Lightbox.vue"],"names":[],"mappings":"AAyRA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAUpD,iBAAS,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,QAK5D;AAED,iBAAS,KAAK,SAGb;;;;;AAkkBD,wBAOG"}
package/dist/index.cjs CHANGED
@@ -1253,14 +1253,19 @@ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
1253
1253
  var _a, _b, _c;
1254
1254
  return ((_c = (_b = (_a = props2.src) == null ? void 0 : _a.split(".").pop()) == null ? void 0 : _b.split("?").shift()) == null ? void 0 : _c.toLowerCase()) || "mp4";
1255
1255
  });
1256
+ const videoContainer = vue.ref();
1257
+ const isYoutubeShort = vue.computed(() => {
1258
+ var _a;
1259
+ return ((_a = props2.src) == null ? void 0 : _a.includes("youtube.com/shorts/")) || false;
1260
+ });
1256
1261
  const aspectRatio = vue.computed(
1257
1262
  () => {
1258
1263
  var _a;
1264
+ if (isYoutubeShort.value) return "9/16";
1259
1265
  return ((_a = props2.aspectRatio) == null ? void 0 : _a.replace(":", "/")) || "16/9";
1260
1266
  }
1261
1267
  );
1262
1268
  const video = vue.ref();
1263
- const videoContainer = vue.ref();
1264
1269
  function play() {
1265
1270
  var _a;
1266
1271
  (_a = video.value) == null ? void 0 : _a.play();
@@ -1295,10 +1300,15 @@ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
1295
1300
  if (vimeoRegex2.test(props2.src || "")) return "Vimeo";
1296
1301
  });
1297
1302
  const videoUrl = vue.computed(() => {
1298
- var _a, _b, _c, _d, _e2;
1303
+ var _a, _b, _c, _d, _e2, _f, _g;
1299
1304
  if (embedType.value) {
1300
1305
  if (embedType.value === "YouTube") {
1301
- const videoId = (_c = (_b = (_a = props2.src) == null ? void 0 : _a.split(/v=|youtu\.be\//)[1]) == null ? void 0 : _b.split("&")) == null ? void 0 : _c[0];
1306
+ let videoId = "";
1307
+ if ((_a = props2.src) == null ? void 0 : _a.includes("youtube.com/shorts/")) {
1308
+ videoId = ((_b = props2.src.split("/shorts/")[1]) == null ? void 0 : _b.split("?")[0]) || "";
1309
+ } else {
1310
+ videoId = ((_e2 = (_d = (_c = props2.src) == null ? void 0 : _c.split(/v=|youtu\.be\//)[1]) == null ? void 0 : _d.split("&")) == null ? void 0 : _e2[0]) || "";
1311
+ }
1302
1312
  const queryParams = new URLSearchParams({
1303
1313
  autoplay: props2.autoplay ? "1" : "0",
1304
1314
  controls: "0",
@@ -1309,7 +1319,7 @@ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
1309
1319
  }
1310
1320
  if (embedType.value === "Vimeo") {
1311
1321
  const vimeoRegex2 = /vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^/]*)\/videos\/|album\/(\d+)\/video\/)?(\d+)(?:$|\/|\?)/;
1312
- const videoId = (_e2 = (_d = props2.src) == null ? void 0 : _d.match(vimeoRegex2)) == null ? void 0 : _e2[3];
1322
+ const videoId = (_g = (_f = props2.src) == null ? void 0 : _f.match(vimeoRegex2)) == null ? void 0 : _g[3];
1313
1323
  return `https://player.vimeo.com/video/${videoId}`;
1314
1324
  }
1315
1325
  }
@@ -1319,7 +1329,7 @@ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
1319
1329
  return vue.openBlock(), vue.createElementBlock("div", {
1320
1330
  ref_key: "videoContainer",
1321
1331
  ref: videoContainer,
1322
- class: vue.normalizeClass(["bgl_vid", { vid_empty: !_ctx.src }])
1332
+ class: vue.normalizeClass(["bgl_vid", { vid_empty: !_ctx.src, vid_short: isYoutubeShort.value }])
1323
1333
  }, [
1324
1334
  embedType.value ? (vue.openBlock(), vue.createElementBlock("iframe", {
1325
1335
  key: 0,
@@ -1349,7 +1359,7 @@ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
1349
1359
  };
1350
1360
  }
1351
1361
  });
1352
- const BglVideo = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["__scopeId", "data-v-e5f32248"]]);
1362
+ const BglVideo = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["__scopeId", "data-v-1c895c6c"]]);
1353
1363
  const _sfc_main$1a = /* @__PURE__ */ vue.defineComponent({
1354
1364
  __name: "CalendarPopover",
1355
1365
  props: {
@@ -38484,7 +38494,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
38484
38494
  };
38485
38495
  }
38486
38496
  });
38487
- const Lightbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9521a8a8"]]);
38497
+ const Lightbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1fd40019"]]);
38488
38498
  const groups = {};
38489
38499
  let clickHandler = (_e2) => void 0;
38490
38500
  const lightboxDirective = {
package/dist/index.mjs CHANGED
@@ -1251,14 +1251,19 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
1251
1251
  var _a, _b, _c;
1252
1252
  return ((_c = (_b = (_a = props2.src) == null ? void 0 : _a.split(".").pop()) == null ? void 0 : _b.split("?").shift()) == null ? void 0 : _c.toLowerCase()) || "mp4";
1253
1253
  });
1254
+ const videoContainer = ref();
1255
+ const isYoutubeShort = computed(() => {
1256
+ var _a;
1257
+ return ((_a = props2.src) == null ? void 0 : _a.includes("youtube.com/shorts/")) || false;
1258
+ });
1254
1259
  const aspectRatio = computed(
1255
1260
  () => {
1256
1261
  var _a;
1262
+ if (isYoutubeShort.value) return "9/16";
1257
1263
  return ((_a = props2.aspectRatio) == null ? void 0 : _a.replace(":", "/")) || "16/9";
1258
1264
  }
1259
1265
  );
1260
1266
  const video = ref();
1261
- const videoContainer = ref();
1262
1267
  function play() {
1263
1268
  var _a;
1264
1269
  (_a = video.value) == null ? void 0 : _a.play();
@@ -1293,10 +1298,15 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
1293
1298
  if (vimeoRegex2.test(props2.src || "")) return "Vimeo";
1294
1299
  });
1295
1300
  const videoUrl = computed(() => {
1296
- var _a, _b, _c, _d, _e2;
1301
+ var _a, _b, _c, _d, _e2, _f, _g;
1297
1302
  if (embedType.value) {
1298
1303
  if (embedType.value === "YouTube") {
1299
- const videoId = (_c = (_b = (_a = props2.src) == null ? void 0 : _a.split(/v=|youtu\.be\//)[1]) == null ? void 0 : _b.split("&")) == null ? void 0 : _c[0];
1304
+ let videoId = "";
1305
+ if ((_a = props2.src) == null ? void 0 : _a.includes("youtube.com/shorts/")) {
1306
+ videoId = ((_b = props2.src.split("/shorts/")[1]) == null ? void 0 : _b.split("?")[0]) || "";
1307
+ } else {
1308
+ videoId = ((_e2 = (_d = (_c = props2.src) == null ? void 0 : _c.split(/v=|youtu\.be\//)[1]) == null ? void 0 : _d.split("&")) == null ? void 0 : _e2[0]) || "";
1309
+ }
1300
1310
  const queryParams = new URLSearchParams({
1301
1311
  autoplay: props2.autoplay ? "1" : "0",
1302
1312
  controls: "0",
@@ -1307,7 +1317,7 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
1307
1317
  }
1308
1318
  if (embedType.value === "Vimeo") {
1309
1319
  const vimeoRegex2 = /vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^/]*)\/videos\/|album\/(\d+)\/video\/)?(\d+)(?:$|\/|\?)/;
1310
- const videoId = (_e2 = (_d = props2.src) == null ? void 0 : _d.match(vimeoRegex2)) == null ? void 0 : _e2[3];
1320
+ const videoId = (_g = (_f = props2.src) == null ? void 0 : _f.match(vimeoRegex2)) == null ? void 0 : _g[3];
1311
1321
  return `https://player.vimeo.com/video/${videoId}`;
1312
1322
  }
1313
1323
  }
@@ -1317,7 +1327,7 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
1317
1327
  return openBlock(), createElementBlock("div", {
1318
1328
  ref_key: "videoContainer",
1319
1329
  ref: videoContainer,
1320
- class: normalizeClass(["bgl_vid", { vid_empty: !_ctx.src }])
1330
+ class: normalizeClass(["bgl_vid", { vid_empty: !_ctx.src, vid_short: isYoutubeShort.value }])
1321
1331
  }, [
1322
1332
  embedType.value ? (openBlock(), createElementBlock("iframe", {
1323
1333
  key: 0,
@@ -1347,7 +1357,7 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
1347
1357
  };
1348
1358
  }
1349
1359
  });
1350
- const BglVideo = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["__scopeId", "data-v-e5f32248"]]);
1360
+ const BglVideo = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["__scopeId", "data-v-1c895c6c"]]);
1351
1361
  const _sfc_main$1a = /* @__PURE__ */ defineComponent({
1352
1362
  __name: "CalendarPopover",
1353
1363
  props: {
@@ -38482,7 +38492,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
38482
38492
  };
38483
38493
  }
38484
38494
  });
38485
- const Lightbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9521a8a8"]]);
38495
+ const Lightbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1fd40019"]]);
38486
38496
  const groups = {};
38487
38497
  let clickHandler = (_e2) => void 0;
38488
38498
  const lightboxDirective = {
package/dist/style.css CHANGED
@@ -308,19 +308,23 @@ display: block;
308
308
  display: inline;
309
309
  }
310
310
 
311
- .bgl_vid iframe[data-v-e5f32248],
312
- .bgl_vid video[data-v-e5f32248] {
311
+ .bgl_vid iframe[data-v-1c895c6c],
312
+ .bgl_vid video[data-v-1c895c6c] {
313
313
  width: 100%;
314
314
  height: auto;
315
315
  display: block;
316
316
  margin: auto;
317
317
  border-radius: var(--input-border-radius);
318
318
  }
319
- .bgl_vid.vid_empty[data-v-e5f32248] {
319
+ .bgl_vid.vid_empty[data-v-1c895c6c] {
320
320
  padding-top: 56.25%;
321
321
  background: var(--input-bg);
322
322
  border-radius: var(--input-border-radius);
323
323
  }
324
+ .bgl_vid.vid_short[data-v-1c895c6c] {
325
+ max-width: 56.25vh; /* Limit width for shorts to maintain aspect ratio */
326
+ margin: 0 auto;
327
+ }
324
328
 
325
329
  .custom-popover[data-v-6f51f6b3] {
326
330
  position: fixed;
@@ -4545,22 +4549,25 @@ body>div:has(.spreadsheet) ::-webkit-scrollbar-track {
4545
4549
  -moz-user-drag: none;
4546
4550
  }
4547
4551
 
4548
- .bgl-lightbox[data-v-9521a8a8]:has(.bgl_vid) {
4552
+ .bgl-lightbox[data-v-1fd40019]:has(.bgl_vid) {
4549
4553
  width: 90vw;
4550
4554
  }
4551
- .lightbox-image[data-v-9521a8a8]{
4555
+ .bgl-lightbox[data-v-1fd40019]:has(.vid_short) {
4556
+ width: unset;
4557
+ }
4558
+ .lightbox-image[data-v-1fd40019]{
4552
4559
  object-fit: contain;
4553
4560
  }
4554
- .bgl-lightbox-overlay[data-v-9521a8a8] {
4561
+ .bgl-lightbox-overlay[data-v-1fd40019] {
4555
4562
  background: rgba(0, 0, 0, 0.8);
4556
4563
  }
4557
- .bgl-lightbox[data-v-9521a8a8] {
4564
+ .bgl-lightbox[data-v-1fd40019] {
4558
4565
  max-height: 90%;
4559
4566
  }
4560
- .bgl-lightbox-item[data-v-9521a8a8]{
4561
- animation: 500ms ease bgl-lightbox-load-9521a8a8;
4567
+ .bgl-lightbox-item[data-v-1fd40019]{
4568
+ animation: 500ms ease bgl-lightbox-load-1fd40019;
4562
4569
  }
4563
- @keyframes bgl-lightbox-load-9521a8a8 {
4570
+ @keyframes bgl-lightbox-load-1fd40019 {
4564
4571
  from {
4565
4572
  scale:0.7;
4566
4573
  }
@@ -4568,44 +4575,44 @@ to {
4568
4575
  scale:1;
4569
4576
  }
4570
4577
  }
4571
- .bgl-lightbox-item[data-v-9521a8a8] * {
4578
+ .bgl-lightbox-item[data-v-1fd40019] * {
4572
4579
  max-height: calc(80vh - 90px);
4573
4580
  border-radius: 3px;
4574
4581
  margin: auto;
4575
- animation: 200ms ease bgl-lightbox-load-9521a8a8;
4582
+ animation: 200ms ease bgl-lightbox-load-1fd40019;
4576
4583
  transition: max-height 200ms ease;
4577
4584
  }
4578
- .bgl-lightbox-item.zoomed[data-v-9521a8a8] * {
4585
+ .bgl-lightbox-item.zoomed[data-v-1fd40019] * {
4579
4586
  max-height: calc(100vh - 90px);
4580
4587
  height: calc(100vh - 90px);
4581
4588
  }
4582
- .navigation[data-v-9521a8a8] {
4589
+ .navigation[data-v-1fd40019] {
4583
4590
  top: 50%;
4584
4591
  transform: translateY(-50%);
4585
4592
  }
4586
- .thumbnail[data-v-9521a8a8] {
4593
+ .thumbnail[data-v-1fd40019] {
4587
4594
  height: 50px;
4588
4595
  width: 50px;
4589
4596
  }
4590
- .thumbnail[data-v-9521a8a8]:hover {
4597
+ .thumbnail[data-v-1fd40019]:hover {
4591
4598
  opacity: 1;
4592
4599
  }
4593
- .thumbnail[data-v-9521a8a8]:active {
4600
+ .thumbnail[data-v-1fd40019]:active {
4594
4601
  opacity: 0.8;
4595
4602
  }
4596
- .thumbnail.active[data-v-9521a8a8] {
4603
+ .thumbnail.active[data-v-1fd40019] {
4597
4604
  opacity: 1;
4598
4605
  outline: 2px solid white;
4599
4606
  }
4600
- .file-info[data-v-9521a8a8]{
4607
+ .file-info[data-v-1fd40019]{
4601
4608
  max-width: 420px
4602
4609
  }
4603
4610
  @media screen and (max-width: 910px) {
4604
- .file-info[data-v-9521a8a8]{
4611
+ .file-info[data-v-1fd40019]{
4605
4612
  max-width: 220px;
4606
4613
  text-align: center !important;
4607
4614
  }
4608
- .file-info[data-v-9521a8a8] *{
4615
+ .file-info[data-v-1fd40019] *{
4609
4616
  text-align: center !important;
4610
4617
  margin-inline: 0 !important;
4611
4618
  max-width: 100% !important;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "1.2.141",
4
+ "version": "1.2.143",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -18,12 +18,20 @@ const props = defineProps<Props>()
18
18
 
19
19
  const videoFormat = $computed(() => props.src?.split('.').pop()?.split('?').shift()?.toLowerCase() || 'mp4')
20
20
 
21
+ const videoContainer = $ref<HTMLElement | null>()
22
+
23
+ const isYoutubeShort = $computed(() => {
24
+ return props.src?.includes('youtube.com/shorts/') || false
25
+ })
26
+
21
27
  const aspectRatio = $computed(
22
- () => props.aspectRatio?.replace(':', '/') || '16/9',
28
+ () => {
29
+ if (isYoutubeShort) return '9/16' // Vertical aspect ratio for Shorts
30
+ return props.aspectRatio?.replace(':', '/') || '16/9'
31
+ }
23
32
  )
24
33
 
25
34
  const video = $ref<HTMLVideoElement | null>()
26
- const videoContainer = $ref<HTMLElement | null>()
27
35
 
28
36
  function play() {
29
37
  video?.play()
@@ -35,7 +43,7 @@ function pause() {
35
43
 
36
44
  // Setup intersection observer for autoplay="visible"
37
45
  if (props.autoplay === 'visible') {
38
- const { stop } = useIntersectionObserver(
46
+ useIntersectionObserver(
39
47
  videoContainer,
40
48
  ([{ isIntersecting }]) => {
41
49
  if (isIntersecting) {
@@ -65,7 +73,14 @@ const embedType = $computed<'YouTube' | 'Vimeo' | undefined>(() => {
65
73
  const videoUrl = $computed(() => {
66
74
  if (embedType) {
67
75
  if (embedType === 'YouTube') {
68
- const videoId = props.src?.split(/v=|youtu\.be\//)[1]?.split('&')?.[0]
76
+ // Extract video ID from YouTube regular or Shorts URL
77
+ let videoId = ''
78
+ if (props.src?.includes('youtube.com/shorts/')) {
79
+ videoId = props.src.split('/shorts/')[1]?.split('?')[0] || ''
80
+ } else {
81
+ videoId = props.src?.split(/v=|youtu\.be\//)[1]?.split('&')?.[0] || ''
82
+ }
83
+
69
84
  const queryParams = new URLSearchParams({
70
85
  autoplay: props.autoplay ? '1' : '0',
71
86
  controls: '0',
@@ -87,7 +102,7 @@ const videoUrl = $computed(() => {
87
102
  </script>
88
103
 
89
104
  <template>
90
- <div ref="videoContainer" class="bgl_vid" :class="{ vid_empty: !src }">
105
+ <div ref="videoContainer" class="bgl_vid" :class="{ vid_empty: !src, vid_short: isYoutubeShort }">
91
106
  <iframe
92
107
  v-if="embedType"
93
108
  :src="videoUrl"
@@ -127,4 +142,9 @@ const videoUrl = $computed(() => {
127
142
  background: var(--input-bg);
128
143
  border-radius: var(--input-border-radius);
129
144
  }
145
+
146
+ .bgl_vid.vid_short {
147
+ max-width: 56.25vh; /* Limit width for shorts to maintain aspect ratio */
148
+ margin: 0 auto;
149
+ }
130
150
  </style>
@@ -200,6 +200,9 @@ defineExpose({ open, close })
200
200
  .bgl-lightbox:has(.bgl_vid) {
201
201
  width: 90vw;
202
202
  }
203
+ .bgl-lightbox:has(.vid_short) {
204
+ width: unset;
205
+ }
203
206
  .lightbox-image{
204
207
  object-fit: contain;
205
208
  }