stream-engine-widgets 0.3.32 → 0.3.34

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 (34) hide show
  1. package/dist/{ArrowForwardIosRounded-CV9m6PqB.js → ArrowForwardIosRounded-D67u0d-4.js} +2 -2
  2. package/dist/{ArrowForwardIosRounded-CV9m6PqB.js.map → ArrowForwardIosRounded-D67u0d-4.js.map} +1 -1
  3. package/dist/{PlayArrowRounded-Z4bJBiOU.js → PlayArrowRounded-BKW6KAmf.js} +2 -2
  4. package/dist/{PlayArrowRounded-Z4bJBiOU.js.map → PlayArrowRounded-BKW6KAmf.js.map} +1 -1
  5. package/dist/blaze-U-0WyijO.js +577 -0
  6. package/dist/blaze-U-0WyijO.js.map +1 -0
  7. package/dist/{gallery-5SIToFzL.js → gallery-B8UKIAh-.js} +3 -3
  8. package/dist/{gallery-5SIToFzL.js.map → gallery-B8UKIAh-.js.map} +1 -1
  9. package/dist/{index-C71587Bw.js → index-dH4vuIYq.js} +37 -15
  10. package/dist/{index-C71587Bw.js.map → index-dH4vuIYq.js.map} +1 -1
  11. package/dist/{matchItem-aVTILA5y.js → matchItem-BxLw-bNT.js} +2 -2
  12. package/dist/{matchItem-aVTILA5y.js.map → matchItem-BxLw-bNT.js.map} +1 -1
  13. package/dist/{matches-DuZk3Cp-.js → matches-BvR4UouE.js} +4 -4
  14. package/dist/{matches-DuZk3Cp-.js.map → matches-BvR4UouE.js.map} +1 -1
  15. package/dist/{matchesStandalone-CHWvYhVw.js → matchesStandalone-DWB0A4tW.js} +4 -4
  16. package/dist/{matchesStandalone-CHWvYhVw.js.map → matchesStandalone-DWB0A4tW.js.map} +1 -1
  17. package/dist/{player-D-gUIB7T.js → player-CB5PGe6F.js} +2 -2
  18. package/dist/{player-D-gUIB7T.js.map → player-CB5PGe6F.js.map} +1 -1
  19. package/dist/{poster-BOVPVuvb.js → poster-CBkHfxaF.js} +3 -3
  20. package/dist/{poster-BOVPVuvb.js.map → poster-CBkHfxaF.js.map} +1 -1
  21. package/dist/{posterItem-Ct2DsRS3.js → posterItem-BdwxBTeJ.js} +4 -4
  22. package/dist/{posterItem-Ct2DsRS3.js.map → posterItem-BdwxBTeJ.js.map} +1 -1
  23. package/dist/{scroll-sT9ZAVU9.js → scroll-DAy_hwO7.js} +4 -4
  24. package/dist/{scroll-sT9ZAVU9.js.map → scroll-DAy_hwO7.js.map} +1 -1
  25. package/dist/{stateTimeIndicator-C5V2VU3P.js → stateTimeIndicator-BPii1z-j.js} +2 -2
  26. package/dist/{stateTimeIndicator-C5V2VU3P.js.map → stateTimeIndicator-BPii1z-j.js.map} +1 -1
  27. package/dist/{story-B_cCY0tf.js → story-1UZw7p_f.js} +4 -4
  28. package/dist/{story-B_cCY0tf.js.map → story-1UZw7p_f.js.map} +1 -1
  29. package/dist/stream-engine-widgets.js +1 -1
  30. package/dist/{useMediaQuery-DzwgxUGF.js → useMediaQuery-BQBMrtrJ.js} +4 -4
  31. package/dist/{useMediaQuery-DzwgxUGF.js.map → useMediaQuery-BQBMrtrJ.js.map} +1 -1
  32. package/package.json +2 -2
  33. package/dist/blaze-BRzy94bq.js +0 -573
  34. package/dist/blaze-BRzy94bq.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { i as importShared, j as jsxRuntimeExports, P as Player } from './index-C71587Bw.js';
2
- import { u as useMediaQuery, G as GalleryItem } from './useMediaQuery-DzwgxUGF.js';
1
+ import { i as importShared, j as jsxRuntimeExports, P as Player } from './index-dH4vuIYq.js';
2
+ import { u as useMediaQuery, G as GalleryItem } from './useMediaQuery-BQBMrtrJ.js';
3
3
 
4
4
  const {useState,useEffect,useRef} = await importShared('react');
5
5
  const Gallery = ({ data, apiUrl }) => {
@@ -49,4 +49,4 @@ const Gallery = ({ data, apiUrl }) => {
49
49
  };
50
50
 
51
51
  export { Gallery as default };
52
- //# sourceMappingURL=gallery-5SIToFzL.js.map
52
+ //# sourceMappingURL=gallery-B8UKIAh-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gallery-5SIToFzL.js","sources":["../src/widgets/gallery/gallery.jsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport GalleryItem from \"../../components/galleryItem\";\nimport Player from \"../../player/player-static\";\nimport { useMediaQuery } from \"../../utils/useMediaQuery\";\n\n\nconst Gallery = ({ data, apiUrl }) => {\n const [error, setError] = useState(\"\");\n const [playerOpen, setPlayerOpen] = useState(false);\n const [itemData, setItemData] = useState({});\n\n const gridSize = useMediaQuery({\n default:data.settings.itemsPerRow.s,\n md:data.settings.itemsPerRow.md,\n lg:data.settings.itemsPerRow.lg,\n xl:data.settings.itemsPerRow.xl,\n xxl:data.settings.itemsPerRow.xxl,\n });\n\n const openPlayer = (item) => {\n setItemData(item);\n setPlayerOpen(true);\n };\n\n const closePlayer = () => {\n setPlayerOpen(false);\n };\n\n if (error) {\n return (\n <div className=\"w-full h-full flex justify-center items-center\">\n <div className=\"bg-black/90 p-5 rounded-md\">\n <span className=\"text-white\">{error}</span>\n </div>\n </div>\n );\n } else {\n return (\n <div id={`widget-${data.id}`} className=\"w-full relative select-none\">\n <div className=\"vf-grid grid h-full w-full grid-cols-1\" style={{\n gridTemplateColumns : `repeat(${gridSize}, minmax(0, 1fr))`,\n gridGap : `${data.settings.gap}px`\n }}\n >\n {data.content.map((item) => (\n <GalleryItem\n key={item.id}\n item={item}\n settings = {data.settings}\n onClick={openPlayer}\n ></GalleryItem>\n ))}\n </div>\n {playerOpen && <Player onClose={closePlayer} item={itemData} widgetToken={data.id} settings={data.settings} apiUrl={apiUrl}/>}\n </div>\n );\n }\n};\n\nexport default Gallery;\n"],"names":["jsx","jsxs"],"mappings":";;;AAAA,MAAA,CAAA,QAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAA,YAAA,CAAA,OAAA,CAAA;AAMA,MAAM,OAAA,GAAU,CAAC,EAAE,IAAA,EAAM,QAAO,KAAM;AACpC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAAS,EAAE,CAAA;AAE3C,EAAA,MAAM,WAAW,aAAA,CAAc;AAAA,IAC7B,OAAA,EAAQ,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,CAAA;AAAA,IAClC,EAAA,EAAG,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,EAAA;AAAA,IAC7B,EAAA,EAAG,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,EAAA;AAAA,IAC7B,EAAA,EAAG,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,EAAA;AAAA,IAC7B,GAAA,EAAI,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY;AAAA,GAC/B,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAS;AAC3B,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA;AAED,EAAA,IAAI,KAAA,EAAO;AACR,IAAA,uBACEA,qBAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,gDAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,kBAAAA,qBAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAA,EAAc,QAAA,EAAA,KAAA,EAAM,GACtC,CAAA,EACF,CAAA;AAAA,EAEJ,CAAA,MAAO;AACL,IAAA,uBACEC,sBAAA,CAAC,SAAI,EAAA,EAAI,CAAA,OAAA,EAAU,KAAK,EAAE,CAAA,CAAA,EAAI,WAAU,6BAAA,EACtC,QAAA,EAAA;AAAA,sBAAAD,qBAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAAI,SAAA,EAAU,wCAAA;AAAA,UAAyC,KAAA,EAAO;AAAA,YAC7D,mBAAA,EAAsB,UAAU,QAAQ,CAAA,iBAAA,CAAA;AAAA,YACxC,OAAA,EAAU,CAAA,EAAG,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAA;AAAA,WAChC;AAAA,UAEG,QAAA,EAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,qBACjBA,qBAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cAEC,IAAA;AAAA,cACA,UAAY,IAAA,CAAK,QAAA;AAAA,cACjB,OAAA,EAAS;AAAA,aAAA;AAAA,YAHJ,IAAA,CAAK;AAAA,WAKb;AAAA;AAAA,OACH;AAAA,MACC,UAAA,oBAAcA,qBAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAS,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,IAAA,CAAK,EAAA,EAAI,QAAA,EAAU,IAAA,CAAK,UAAU,MAAA,EAAe;AAAA,KAAA,EAC7H,CAAA;AAAA,EAEJ;AACF;;;;"}
1
+ {"version":3,"file":"gallery-B8UKIAh-.js","sources":["../src/widgets/gallery/gallery.jsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport GalleryItem from \"../../components/galleryItem\";\nimport Player from \"../../player/player-static\";\nimport { useMediaQuery } from \"../../utils/useMediaQuery\";\n\n\nconst Gallery = ({ data, apiUrl }) => {\n const [error, setError] = useState(\"\");\n const [playerOpen, setPlayerOpen] = useState(false);\n const [itemData, setItemData] = useState({});\n\n const gridSize = useMediaQuery({\n default:data.settings.itemsPerRow.s,\n md:data.settings.itemsPerRow.md,\n lg:data.settings.itemsPerRow.lg,\n xl:data.settings.itemsPerRow.xl,\n xxl:data.settings.itemsPerRow.xxl,\n });\n\n const openPlayer = (item) => {\n setItemData(item);\n setPlayerOpen(true);\n };\n\n const closePlayer = () => {\n setPlayerOpen(false);\n };\n\n if (error) {\n return (\n <div className=\"w-full h-full flex justify-center items-center\">\n <div className=\"bg-black/90 p-5 rounded-md\">\n <span className=\"text-white\">{error}</span>\n </div>\n </div>\n );\n } else {\n return (\n <div id={`widget-${data.id}`} className=\"w-full relative select-none\">\n <div className=\"vf-grid grid h-full w-full grid-cols-1\" style={{\n gridTemplateColumns : `repeat(${gridSize}, minmax(0, 1fr))`,\n gridGap : `${data.settings.gap}px`\n }}\n >\n {data.content.map((item) => (\n <GalleryItem\n key={item.id}\n item={item}\n settings = {data.settings}\n onClick={openPlayer}\n ></GalleryItem>\n ))}\n </div>\n {playerOpen && <Player onClose={closePlayer} item={itemData} widgetToken={data.id} settings={data.settings} apiUrl={apiUrl}/>}\n </div>\n );\n }\n};\n\nexport default Gallery;\n"],"names":["jsx","jsxs"],"mappings":";;;AAAA,MAAA,CAAA,QAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAA,YAAA,CAAA,OAAA,CAAA;AAMA,MAAM,OAAA,GAAU,CAAC,EAAE,IAAA,EAAM,QAAO,KAAM;AACpC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAAS,EAAE,CAAA;AAE3C,EAAA,MAAM,WAAW,aAAA,CAAc;AAAA,IAC7B,OAAA,EAAQ,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,CAAA;AAAA,IAClC,EAAA,EAAG,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,EAAA;AAAA,IAC7B,EAAA,EAAG,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,EAAA;AAAA,IAC7B,EAAA,EAAG,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,EAAA;AAAA,IAC7B,GAAA,EAAI,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY;AAAA,GAC/B,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAS;AAC3B,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA;AAED,EAAA,IAAI,KAAA,EAAO;AACR,IAAA,uBACEA,qBAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,gDAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,kBAAAA,qBAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAA,EAAc,QAAA,EAAA,KAAA,EAAM,GACtC,CAAA,EACF,CAAA;AAAA,EAEJ,CAAA,MAAO;AACL,IAAA,uBACEC,sBAAA,CAAC,SAAI,EAAA,EAAI,CAAA,OAAA,EAAU,KAAK,EAAE,CAAA,CAAA,EAAI,WAAU,6BAAA,EACtC,QAAA,EAAA;AAAA,sBAAAD,qBAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAAI,SAAA,EAAU,wCAAA;AAAA,UAAyC,KAAA,EAAO;AAAA,YAC7D,mBAAA,EAAsB,UAAU,QAAQ,CAAA,iBAAA,CAAA;AAAA,YACxC,OAAA,EAAU,CAAA,EAAG,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAA;AAAA,WAChC;AAAA,UAEG,QAAA,EAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,qBACjBA,qBAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cAEC,IAAA;AAAA,cACA,UAAY,IAAA,CAAK,QAAA;AAAA,cACjB,OAAA,EAAS;AAAA,aAAA;AAAA,YAHJ,IAAA,CAAK;AAAA,WAKb;AAAA;AAAA,OACH;AAAA,MACC,UAAA,oBAAcA,qBAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAS,WAAA,EAAa,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,IAAA,CAAK,EAAA,EAAI,QAAA,EAAU,IAAA,CAAK,UAAU,MAAA,EAAe;AAAA,KAAA,EAC7H,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -72790,8 +72790,9 @@ const SECTION_COMPONENTS = {
72790
72790
  scroll: SectionScroll,
72791
72791
  default: SectionGrid
72792
72792
  };
72793
- const Widget = ({ token, apiurl, viewercountry, requireauth, labels, searchtext, orderby }) => {
72793
+ const Widget = ({ token, apiurl, viewercountry, requireauth, labels, searchtext, orderby, refreshkey }) => {
72794
72794
  const widgetRef = useRef(null);
72795
+ const styleElementRef = useRef(null);
72795
72796
  const [widgetState, setWidgetState] = useState$1({
72796
72797
  data: {},
72797
72798
  untransformedData: {},
@@ -72881,22 +72882,14 @@ const Widget = ({ token, apiurl, viewercountry, requireauth, labels, searchtext,
72881
72882
  eventHandlers
72882
72883
  };
72883
72884
  }, [apiUrl, eventHandlers]);
72884
- const applyStyle = (css) => {
72885
- if (!css) return;
72886
- const style = document.createElement("style");
72887
- style.type = "text/css";
72888
- style.appendChild(document.createTextNode(css));
72889
- document.head.appendChild(style);
72890
- return () => style.remove();
72891
- };
72892
72885
  const getComponent = (type2, layout) => {
72893
72886
  if (type2 === VIDEO_SECTION_TYPE) {
72894
72887
  return SECTION_COMPONENTS[layout] || SECTION_COMPONENTS.default;
72895
72888
  }
72896
72889
  if (type2 === BLAZE_WIDGET_TYPE) {
72897
- return lazy$1(() => import('./blaze-BRzy94bq.js'));
72890
+ return lazy$1(() => import('./blaze-U-0WyijO.js'));
72898
72891
  }
72899
- return lazy$1(() => __variableDynamicImportRuntimeHelper((/* #__PURE__ */ Object.assign({"./widgets/gallery/gallery.jsx": () => import('./gallery-5SIToFzL.js'),"./widgets/matches/matches.jsx": () => import('./matches-DuZk3Cp-.js'),"./widgets/matchesStandalone/matchesStandalone.jsx": () => import('./matchesStandalone-CHWvYhVw.js'),"./widgets/player/player.jsx": () => import('./player-D-gUIB7T.js'),"./widgets/poster/poster.jsx": () => import('./poster-BOVPVuvb.js'),"./widgets/poster/posterItem.jsx": () => import('./posterItem-Ct2DsRS3.js'),"./widgets/scroll/scroll.jsx": () => import('./scroll-sT9ZAVU9.js'),"./widgets/story/story.jsx": () => import('./story-B_cCY0tf.js')})), `./widgets/${type2}/${type2}.jsx`, 4));
72892
+ return lazy$1(() => __variableDynamicImportRuntimeHelper((/* #__PURE__ */ Object.assign({"./widgets/gallery/gallery.jsx": () => import('./gallery-B8UKIAh-.js'),"./widgets/matches/matches.jsx": () => import('./matches-BvR4UouE.js'),"./widgets/matchesStandalone/matchesStandalone.jsx": () => import('./matchesStandalone-DWB0A4tW.js'),"./widgets/player/player.jsx": () => import('./player-CB5PGe6F.js'),"./widgets/poster/poster.jsx": () => import('./poster-CBkHfxaF.js'),"./widgets/poster/posterItem.jsx": () => import('./posterItem-BdwxBTeJ.js'),"./widgets/scroll/scroll.jsx": () => import('./scroll-DAy_hwO7.js'),"./widgets/story/story.jsx": () => import('./story-1UZw7p_f.js')})), `./widgets/${type2}/${type2}.jsx`, 4));
72900
72893
  };
72901
72894
  useEffect$1(() => {
72902
72895
  const fetchWidgetConfig = async () => {
@@ -72910,7 +72903,14 @@ const Widget = ({ token, apiurl, viewercountry, requireauth, labels, searchtext,
72910
72903
  const transformedData = widgetDataToSectionData(resData);
72911
72904
  const component = getComponent(resData.type, resData.settings?.layout);
72912
72905
  if (resData.style && resData.type !== VIDEO_SECTION_TYPE) {
72913
- applyStyle(resData.style);
72906
+ if (styleElementRef.current) {
72907
+ styleElementRef.current.remove();
72908
+ }
72909
+ const styleEl = document.createElement("style");
72910
+ styleEl.type = "text/css";
72911
+ styleEl.appendChild(document.createTextNode(resData.style));
72912
+ document.head.appendChild(styleEl);
72913
+ styleElementRef.current = styleEl;
72914
72914
  }
72915
72915
  setWidgetState({
72916
72916
  data: transformedData,
@@ -72930,7 +72930,13 @@ const Widget = ({ token, apiurl, viewercountry, requireauth, labels, searchtext,
72930
72930
  }
72931
72931
  };
72932
72932
  fetchWidgetConfig();
72933
- }, [token, apiUrl, eventHandlers, widgetDataToSectionData]);
72933
+ return () => {
72934
+ if (styleElementRef.current) {
72935
+ styleElementRef.current.remove();
72936
+ styleElementRef.current = null;
72937
+ }
72938
+ };
72939
+ }, [token, apiUrl, eventHandlers, widgetDataToSectionData, refreshkey]);
72934
72940
  const { data, loading, error, Component, type } = widgetState;
72935
72941
  if (error) return null;
72936
72942
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: widgetRef, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Suspense$1, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx(Loader, {}), children: Component && (type === VIDEO_SECTION_TYPE ? /* @__PURE__ */ jsxRuntimeExports.jsxs(WidgetI18nProvider, { children: [
@@ -73008,6 +73014,8 @@ const React = await importShared('react');
73008
73014
  * Example: 'football highlights'
73009
73015
  * @property {string} orderby - Sort order parameter from search page (e.g., '-start_time', 'start_time')
73010
73016
  * Maps to Blaze SDK OrderType in the widget implementation
73017
+ * @property {string} refreshkey - Internal counter incremented by VfWidgetElement.refresh() to trigger
73018
+ * a live data re-fetch without remounting the element or losing event listeners
73011
73019
  */
73012
73020
  Widget.propTypes = {
73013
73021
  token : PropTypes.string,
@@ -73017,6 +73025,7 @@ Widget.propTypes = {
73017
73025
  labels : PropTypes.string,
73018
73026
  searchtext : PropTypes.string,
73019
73027
  orderby : PropTypes.string,
73028
+ refreshkey : PropTypes.string,
73020
73029
  };
73021
73030
 
73022
73031
  ChannelWidget.propTypes = {
@@ -73031,7 +73040,7 @@ ChannelWidget.propTypes = {
73031
73040
  */
73032
73041
  class VfWidgetElement extends HTMLElement {
73033
73042
  static get observedAttributes() {
73034
- return ['token', 'apiurl', 'viewercountry', 'requireauth', 'labels', 'searchtext', 'orderby'];
73043
+ return ['token', 'apiurl', 'viewercountry', 'requireauth', 'labels', 'searchtext', 'orderby', 'refreshkey'];
73035
73044
  }
73036
73045
 
73037
73046
  constructor() {
@@ -73039,6 +73048,18 @@ class VfWidgetElement extends HTMLElement {
73039
73048
  this._root = null;
73040
73049
  this._isMounted = false;
73041
73050
  this._isUpdating = false;
73051
+ this._refreshCounter = 0;
73052
+ }
73053
+
73054
+ /**
73055
+ * Imperatively trigger a data refresh inside the widget.
73056
+ * Increments an internal counter and sets it as the `refreshkey` attribute,
73057
+ * which causes attributeChangedCallback → _render() → Widget re-fetches its data.
73058
+ * The DOM element and all attached event listeners are preserved.
73059
+ */
73060
+ refresh() {
73061
+ this._refreshCounter += 1;
73062
+ this.setAttribute('refreshkey', String(this._refreshCounter));
73042
73063
  }
73043
73064
 
73044
73065
  /**
@@ -73113,6 +73134,7 @@ class VfWidgetElement extends HTMLElement {
73113
73134
  labels: this.getAttribute('labels'),
73114
73135
  searchtext: this.getAttribute('searchtext'),
73115
73136
  orderby: this.getAttribute('orderby'),
73137
+ refreshkey: this.getAttribute('refreshkey'),
73116
73138
  };
73117
73139
 
73118
73140
  // Render the React component with current props
@@ -73137,4 +73159,4 @@ customElements.define("vf-widget", VfWidgetElement);
73137
73159
  customElements.define("vfc-widget", S(ChannelWidget, React, ReactDOM));
73138
73160
 
73139
73161
  export { API_URL as A, CloseRounded as C, Loader as L, Player as P, SpinLoader as S, Thumbnail as T, _setPrototypeOf as _, axios$1 as a, _assertThisInitialized as b, createSvgIcon as c, _extends as d, _getPrototypeOf as e, _inherits as f, importShared as i, jsxRuntimeExports as j, require$$1$1 as r };
73140
- //# sourceMappingURL=index-C71587Bw.js.map
73162
+ //# sourceMappingURL=index-dH4vuIYq.js.map