@blaze-cms/react-page-builder 0.123.1-alpha.2 → 0.124.0-alpha.2

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 (84) hide show
  1. package/CHANGELOG.md +213 -0
  2. package/lib/components/BackToTop/BackToTop.js +94 -0
  3. package/lib/components/BackToTop/BackToTop.js.map +1 -0
  4. package/lib/components/BackToTop/index.js +16 -0
  5. package/lib/components/BackToTop/index.js.map +1 -0
  6. package/lib/components/CarouselWrapper.js +6 -8
  7. package/lib/components/CarouselWrapper.js.map +1 -1
  8. package/lib/components/SearchContent/index.js +5 -2
  9. package/lib/components/SearchContent/index.js.map +1 -1
  10. package/lib/components/Video/Video.js +32 -9
  11. package/lib/components/Video/Video.js.map +1 -1
  12. package/lib/components/Video/VideoModal.js +72 -0
  13. package/lib/components/Video/VideoModal.js.map +1 -0
  14. package/lib/components/Video/VideoRender.js +2 -2
  15. package/lib/components/Video/VideoRender.js.map +1 -1
  16. package/lib/components/Video/providers/JWPlayer/JWPlayerProvider.js +7 -15
  17. package/lib/components/Video/providers/JWPlayer/JWPlayerProvider.js.map +1 -1
  18. package/lib/components/Video/providers/YouTube/YouTubeProvider.js +12 -4
  19. package/lib/components/Video/providers/YouTube/YouTubeProvider.js.map +1 -1
  20. package/lib/components/Video/providers/YouTube/YoutubeEmbeded.js +23 -14
  21. package/lib/components/Video/providers/YouTube/YoutubeEmbeded.js.map +1 -1
  22. package/lib/components/Video/providers/YouTube/helpers/index.js +24 -0
  23. package/lib/components/Video/providers/YouTube/helpers/index.js.map +1 -1
  24. package/lib/components/Wrapper.js +10 -3
  25. package/lib/components/Wrapper.js.map +1 -1
  26. package/lib/components/index.js +5 -0
  27. package/lib/components/index.js.map +1 -1
  28. package/lib/helpers/build-raw-query.js +1 -1
  29. package/lib/helpers/build-raw-query.js.map +1 -1
  30. package/lib-es/components/BackToTop/BackToTop.js +50 -0
  31. package/lib-es/components/BackToTop/BackToTop.js.map +1 -0
  32. package/lib-es/components/BackToTop/index.js +3 -0
  33. package/lib-es/components/BackToTop/index.js.map +1 -0
  34. package/lib-es/components/CarouselWrapper.js +6 -7
  35. package/lib-es/components/CarouselWrapper.js.map +1 -1
  36. package/lib-es/components/SearchContent/index.js +5 -2
  37. package/lib-es/components/SearchContent/index.js.map +1 -1
  38. package/lib-es/components/Video/Video.js +32 -10
  39. package/lib-es/components/Video/Video.js.map +1 -1
  40. package/lib-es/components/Video/VideoModal.js +31 -0
  41. package/lib-es/components/Video/VideoModal.js.map +1 -0
  42. package/lib-es/components/Video/VideoRender.js +2 -2
  43. package/lib-es/components/Video/VideoRender.js.map +1 -1
  44. package/lib-es/components/Video/providers/JWPlayer/JWPlayerProvider.js +6 -11
  45. package/lib-es/components/Video/providers/JWPlayer/JWPlayerProvider.js.map +1 -1
  46. package/lib-es/components/Video/providers/YouTube/YouTubeProvider.js +12 -4
  47. package/lib-es/components/Video/providers/YouTube/YouTubeProvider.js.map +1 -1
  48. package/lib-es/components/Video/providers/YouTube/YoutubeEmbeded.js +19 -10
  49. package/lib-es/components/Video/providers/YouTube/YoutubeEmbeded.js.map +1 -1
  50. package/lib-es/components/Video/providers/YouTube/helpers/index.js +18 -1
  51. package/lib-es/components/Video/providers/YouTube/helpers/index.js.map +1 -1
  52. package/lib-es/components/Wrapper.js +15 -9
  53. package/lib-es/components/Wrapper.js.map +1 -1
  54. package/lib-es/components/index.js +4 -1
  55. package/lib-es/components/index.js.map +1 -1
  56. package/lib-es/helpers/build-raw-query.js +1 -1
  57. package/lib-es/helpers/build-raw-query.js.map +1 -1
  58. package/package.json +3 -3
  59. package/src/components/BackToTop/BackToTop.js +52 -0
  60. package/src/components/BackToTop/index.js +3 -0
  61. package/src/components/CarouselWrapper.js +2 -7
  62. package/src/components/SearchContent/index.js +5 -2
  63. package/src/components/Video/Video.js +39 -12
  64. package/src/components/Video/VideoModal.js +31 -0
  65. package/src/components/Video/VideoRender.js +2 -2
  66. package/src/components/Video/providers/JWPlayer/JWPlayerProvider.js +6 -9
  67. package/src/components/Video/providers/YouTube/YouTubeProvider.js +14 -4
  68. package/src/components/Video/providers/YouTube/YoutubeEmbeded.js +19 -15
  69. package/src/components/Video/providers/YouTube/helpers/index.js +15 -1
  70. package/src/components/Wrapper.js +14 -12
  71. package/src/components/index.js +2 -1
  72. package/src/helpers/build-raw-query.js +2 -1
  73. package/tests/helpers/mocks.js +1 -1
  74. package/tests/unit/src/components/BackToTop/BackToTop.test.js +16 -0
  75. package/tests/unit/src/components/BackToTop/__snapshots__/BackToTop.test.js.snap +3 -0
  76. package/tests/unit/src/components/Card/__snapshots__/CardContainer.test.js.snap +3 -0
  77. package/tests/unit/src/components/Card/__snapshots__/CardRender.test.js.snap +3 -0
  78. package/tests/unit/src/components/Image/__snapshots__/ImageFactory.test.js.snap +9 -0
  79. package/tests/unit/src/components/Video/Video.test.js +12 -4
  80. package/tests/unit/src/components/Video/VideoModal.test.js +15 -0
  81. package/tests/unit/src/components/Video/__snapshots__/Video.test.js.snap +12 -0
  82. package/tests/unit/src/components/Video/__snapshots__/VideoModal.test.js.snap +13 -0
  83. package/tests/unit/src/components/__snapshots__/Wrapper.test.js.snap +3 -0
  84. package/tests/unit/src/components/__snapshots__/index.test.js.snap +4 -0
@@ -2,8 +2,7 @@ import React, { useState, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useInView } from '@blaze-react/utils/lib/customHooks';
4
4
  import { IN_VIEW_CONFIG } from '../../../../constants';
5
- const YT_HQ_FORMAT = 'hqdefault';
6
- const YT_IMAGE_URL = 'https://i.ytimg.com';
5
+ import { getPosterUrl, YT_HQ_FORMAT, YT_IMAGE_URL } from './helpers';
7
6
 
8
7
  const YoutubeEmbeded = ({
9
8
  autoplay,
@@ -20,7 +19,9 @@ const YoutubeEmbeded = ({
20
19
  muted,
21
20
  adNetwork,
22
21
  iframeClass,
23
- priority
22
+ priority,
23
+ placeholderOnly,
24
+ imageData
24
25
  }) => {
25
26
  const [isIntersecting, outerRef] = useInView(IN_VIEW_CONFIG);
26
27
  const [preconnected, setPreconnected] = useState(false);
@@ -33,12 +34,16 @@ const YoutubeEmbeded = ({
33
34
  displayImage: priority
34
35
  });
35
36
  const encodedId = encodeURIComponent(videoId);
36
- const videoPlaylisCovertId = typeof playlistCoverId === 'string' ? encodeURIComponent(playlistCoverId) : null;
37
37
  const paramsImp = videoParams ? `&${videoParams}` : '';
38
- const format = webp ? 'webp' : 'jpg';
39
- const vi = webp ? 'vi_webp' : 'vi';
40
- const posterUrl = !playlist ? `${YT_IMAGE_URL}/${vi}/${encodedId}/${imageSize}.${format}` : `${YT_IMAGE_URL}/${vi}/${videoPlaylisCovertId}/${imageSize}.${format}`;
41
38
  const ytUrl = noCookie ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com';
39
+ const posterUrl = getPosterUrl({
40
+ imageData,
41
+ playlistCoverId,
42
+ playlist,
43
+ encodedId,
44
+ imageSize,
45
+ webp
46
+ });
42
47
  const mutedValue = muted ? '&mute=1' : '';
43
48
  const iframeSrc = !playlist ? `${ytUrl}/embed/${encodedId}?autoplay=1${mutedValue}${paramsImp}` : `${ytUrl}/embed/videoseries?autoplay=1${mutedValue}&list=${encodedId}${paramsImp}`;
44
49
  const parsedWrapperClassname = `yt-facade ${renderIframe ? 'yt-activated' : ''}`;
@@ -64,7 +69,7 @@ const YoutubeEmbeded = ({
64
69
  };
65
70
 
66
71
  const addIframe = () => {
67
- if (renderIframe) return;
72
+ if (renderIframe || placeholderOnly) return;
68
73
  onIframeAdded();
69
74
  setRenderIframe(true);
70
75
  };
@@ -124,7 +129,9 @@ YoutubeEmbeded.propTypes = {
124
129
  announce: PropTypes.string,
125
130
  playlistCoverId: PropTypes.string,
126
131
  videoParams: PropTypes.string,
127
- videoTitle: PropTypes.string
132
+ videoTitle: PropTypes.string,
133
+ placeholderOnly: PropTypes.bool,
134
+ imageData: PropTypes.object
128
135
  };
129
136
  YoutubeEmbeded.defaultProps = {
130
137
  priority: true,
@@ -141,7 +148,9 @@ YoutubeEmbeded.defaultProps = {
141
148
  videoId: '',
142
149
  playlistCoverId: '',
143
150
  videoParams: '',
144
- videoTitle: ''
151
+ videoTitle: '',
152
+ placeholderOnly: false,
153
+ imageData: {}
145
154
  };
146
155
  export default YoutubeEmbeded;
147
156
  //# sourceMappingURL=YoutubeEmbeded.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Video/providers/YouTube/YoutubeEmbeded.js"],"names":["React","useState","useEffect","PropTypes","useInView","IN_VIEW_CONFIG","YT_HQ_FORMAT","YT_IMAGE_URL","YoutubeEmbeded","autoplay","videoId","playlistCoverId","videoTitle","poster","videoParams","announce","noCookie","webp","playlist","onIframeAdded","muted","adNetwork","iframeClass","priority","isIntersecting","outerRef","preconnected","setPreconnected","renderIframe","setRenderIframe","imageSize","displayImage","setImageDetails","encodedId","encodeURIComponent","videoPlaylisCovertId","paramsImp","format","vi","posterUrl","ytUrl","mutedValue","iframeSrc","parsedWrapperClassname","img","Image","onload","newImageSize","width","src","warmConnections","addIframe","backgroundImage","propTypes","bool","func","string","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useInView } from '@blaze-react/utils/lib/customHooks';\nimport { IN_VIEW_CONFIG } from '../../../../constants';\n\nconst YT_HQ_FORMAT = 'hqdefault';\nconst YT_IMAGE_URL = 'https://i.ytimg.com';\n\nconst YoutubeEmbeded = ({\n autoplay,\n videoId,\n playlistCoverId,\n videoTitle,\n poster,\n videoParams,\n announce,\n noCookie,\n webp,\n playlist,\n onIframeAdded,\n muted,\n adNetwork,\n iframeClass,\n priority\n}) => {\n const [isIntersecting, outerRef] = useInView(IN_VIEW_CONFIG);\n const [preconnected, setPreconnected] = useState(false);\n const [renderIframe, setRenderIframe] = useState(!!autoplay);\n const [{ imageSize, displayImage }, setImageDetails] = useState({\n imageSize: poster,\n displayImage: priority\n });\n\n const encodedId = encodeURIComponent(videoId);\n const videoPlaylisCovertId =\n typeof playlistCoverId === 'string' ? encodeURIComponent(playlistCoverId) : null;\n const paramsImp = videoParams ? `&${videoParams}` : '';\n const format = webp ? 'webp' : 'jpg';\n const vi = webp ? 'vi_webp' : 'vi';\n const posterUrl = !playlist\n ? `${YT_IMAGE_URL}/${vi}/${encodedId}/${imageSize}.${format}`\n : `${YT_IMAGE_URL}/${vi}/${videoPlaylisCovertId}/${imageSize}.${format}`;\n const ytUrl = noCookie ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com';\n\n const mutedValue = muted ? '&mute=1' : '';\n const iframeSrc = !playlist\n ? `${ytUrl}/embed/${encodedId}?autoplay=1${mutedValue}${paramsImp}`\n : `${ytUrl}/embed/videoseries?autoplay=1${mutedValue}&list=${encodedId}${paramsImp}`;\n const parsedWrapperClassname = `yt-facade ${renderIframe ? 'yt-activated' : ''}`;\n\n useEffect(\n () => {\n if ((!priority && !isIntersecting) || imageSize === YT_HQ_FORMAT) return;\n\n const img = new Image();\n // eslint-disable-next-line func-names\n img.onload = function() {\n let newImageSize = imageSize;\n if (this && this.width === 120) newImageSize = YT_HQ_FORMAT;\n setImageDetails({ imageSize: newImageSize, displayImage: true });\n };\n\n img.src = posterUrl;\n },\n [imageSize, isIntersecting, posterUrl, priority]\n );\n\n const warmConnections = () => {\n if (preconnected) return;\n setPreconnected(true);\n };\n\n const addIframe = () => {\n if (renderIframe) return;\n onIframeAdded();\n setRenderIframe(true);\n };\n\n return (\n <>\n {preconnected && (\n <>\n <link rel=\"preconnect\" href={YT_IMAGE_URL} />\n <link rel=\"preconnect\" href={ytUrl} />\n <link rel=\"preconnect\" href=\"https://www.google.com\" />\n {adNetwork && (\n <>\n <link rel=\"preconnect\" href=\"https://static.doubleclick.net\" />\n <link rel=\"preconnect\" href=\"https://googleads.g.doubleclick.net\" />\n </>\n )}\n </>\n )}\n <div\n ref={outerRef}\n role=\"button\"\n onPointerOver={warmConnections}\n onClick={addIframe}\n className={parsedWrapperClassname}\n data-title={videoTitle}\n style={{\n backgroundImage: `url(${displayImage ? posterUrl : ''})`\n }}>\n <div\n type=\"button\"\n className=\"yt-facade-button-wrapper\"\n aria-label={`${announce} ${videoTitle}`}>\n <div className=\"yt-facade-button\" />\n </div>\n {renderIframe && (\n <iframe\n className={iframeClass}\n title={videoTitle}\n allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={iframeSrc}\n />\n )}\n </div>\n </>\n );\n};\n\nYoutubeEmbeded.propTypes = {\n priority: PropTypes.bool,\n onIframeAdded: PropTypes.func,\n adNetwork: PropTypes.bool,\n autoplay: PropTypes.bool,\n playlist: PropTypes.bool,\n muted: PropTypes.bool,\n webp: PropTypes.bool,\n noCookie: PropTypes.bool,\n videoId: PropTypes.string,\n iframeClass: PropTypes.string,\n poster: PropTypes.string,\n announce: PropTypes.string,\n playlistCoverId: PropTypes.string,\n videoParams: PropTypes.string,\n videoTitle: PropTypes.string\n};\n\nYoutubeEmbeded.defaultProps = {\n priority: true,\n onIframeAdded: () => {},\n adNetwork: false,\n autoplay: false,\n playlist: false,\n muted: false,\n webp: false,\n noCookie: false,\n iframeClass: '',\n poster: 'sddefault',\n announce: 'Watch',\n videoId: '',\n playlistCoverId: '',\n videoParams: '',\n videoTitle: ''\n};\n\nexport default YoutubeEmbeded;\n"],"file":"YoutubeEmbeded.js"}
1
+ {"version":3,"sources":["../../../../../src/components/Video/providers/YouTube/YoutubeEmbeded.js"],"names":["React","useState","useEffect","PropTypes","useInView","IN_VIEW_CONFIG","getPosterUrl","YT_HQ_FORMAT","YT_IMAGE_URL","YoutubeEmbeded","autoplay","videoId","playlistCoverId","videoTitle","poster","videoParams","announce","noCookie","webp","playlist","onIframeAdded","muted","adNetwork","iframeClass","priority","placeholderOnly","imageData","isIntersecting","outerRef","preconnected","setPreconnected","renderIframe","setRenderIframe","imageSize","displayImage","setImageDetails","encodedId","encodeURIComponent","paramsImp","ytUrl","posterUrl","mutedValue","iframeSrc","parsedWrapperClassname","img","Image","onload","newImageSize","width","src","warmConnections","addIframe","backgroundImage","propTypes","bool","func","string","object","defaultProps"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useInView } from '@blaze-react/utils/lib/customHooks';\nimport { IN_VIEW_CONFIG } from '../../../../constants';\nimport { getPosterUrl, YT_HQ_FORMAT, YT_IMAGE_URL } from './helpers';\n\nconst YoutubeEmbeded = ({\n autoplay,\n videoId,\n playlistCoverId,\n videoTitle,\n poster,\n videoParams,\n announce,\n noCookie,\n webp,\n playlist,\n onIframeAdded,\n muted,\n adNetwork,\n iframeClass,\n priority,\n placeholderOnly,\n imageData\n}) => {\n const [isIntersecting, outerRef] = useInView(IN_VIEW_CONFIG);\n const [preconnected, setPreconnected] = useState(false);\n const [renderIframe, setRenderIframe] = useState(!!autoplay);\n const [{ imageSize, displayImage }, setImageDetails] = useState({\n imageSize: poster,\n displayImage: priority\n });\n\n const encodedId = encodeURIComponent(videoId);\n const paramsImp = videoParams ? `&${videoParams}` : '';\n const ytUrl = noCookie ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com';\n const posterUrl = getPosterUrl({\n imageData,\n playlistCoverId,\n playlist,\n encodedId,\n imageSize,\n webp\n });\n const mutedValue = muted ? '&mute=1' : '';\n const iframeSrc = !playlist\n ? `${ytUrl}/embed/${encodedId}?autoplay=1${mutedValue}${paramsImp}`\n : `${ytUrl}/embed/videoseries?autoplay=1${mutedValue}&list=${encodedId}${paramsImp}`;\n const parsedWrapperClassname = `yt-facade ${renderIframe ? 'yt-activated' : ''}`;\n\n useEffect(\n () => {\n if ((!priority && !isIntersecting) || imageSize === YT_HQ_FORMAT) return;\n\n const img = new Image();\n // eslint-disable-next-line func-names\n img.onload = function() {\n let newImageSize = imageSize;\n if (this && this.width === 120) newImageSize = YT_HQ_FORMAT;\n setImageDetails({ imageSize: newImageSize, displayImage: true });\n };\n\n img.src = posterUrl;\n },\n [imageSize, isIntersecting, posterUrl, priority]\n );\n\n const warmConnections = () => {\n if (preconnected) return;\n setPreconnected(true);\n };\n\n const addIframe = () => {\n if (renderIframe || placeholderOnly) return;\n onIframeAdded();\n setRenderIframe(true);\n };\n\n return (\n <>\n {preconnected && (\n <>\n <link rel=\"preconnect\" href={YT_IMAGE_URL} />\n <link rel=\"preconnect\" href={ytUrl} />\n <link rel=\"preconnect\" href=\"https://www.google.com\" />\n {adNetwork && (\n <>\n <link rel=\"preconnect\" href=\"https://static.doubleclick.net\" />\n <link rel=\"preconnect\" href=\"https://googleads.g.doubleclick.net\" />\n </>\n )}\n </>\n )}\n <div\n ref={outerRef}\n role=\"button\"\n onPointerOver={warmConnections}\n onClick={addIframe}\n className={parsedWrapperClassname}\n data-title={videoTitle}\n style={{\n backgroundImage: `url(${displayImage ? posterUrl : ''})`\n }}>\n <div\n type=\"button\"\n className=\"yt-facade-button-wrapper\"\n aria-label={`${announce} ${videoTitle}`}>\n <div className=\"yt-facade-button\" />\n </div>\n {renderIframe && (\n <iframe\n className={iframeClass}\n title={videoTitle}\n allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={iframeSrc}\n />\n )}\n </div>\n </>\n );\n};\n\nYoutubeEmbeded.propTypes = {\n priority: PropTypes.bool,\n onIframeAdded: PropTypes.func,\n adNetwork: PropTypes.bool,\n autoplay: PropTypes.bool,\n playlist: PropTypes.bool,\n muted: PropTypes.bool,\n webp: PropTypes.bool,\n noCookie: PropTypes.bool,\n videoId: PropTypes.string,\n iframeClass: PropTypes.string,\n poster: PropTypes.string,\n announce: PropTypes.string,\n playlistCoverId: PropTypes.string,\n videoParams: PropTypes.string,\n videoTitle: PropTypes.string,\n placeholderOnly: PropTypes.bool,\n imageData: PropTypes.object\n};\n\nYoutubeEmbeded.defaultProps = {\n priority: true,\n onIframeAdded: () => {},\n adNetwork: false,\n autoplay: false,\n playlist: false,\n muted: false,\n webp: false,\n noCookie: false,\n iframeClass: '',\n poster: 'sddefault',\n announce: 'Watch',\n videoId: '',\n playlistCoverId: '',\n videoParams: '',\n videoTitle: '',\n placeholderOnly: false,\n imageData: {}\n};\n\nexport default YoutubeEmbeded;\n"],"file":"YoutubeEmbeded.js"}
@@ -1,4 +1,6 @@
1
1
  const YOUTUBE_REGEX = /^.*((m\.)?youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/;
2
+ const YT_IMAGE_URL = 'https://i.ytimg.com';
3
+ const YT_HQ_FORMAT = 'hqdefault';
2
4
 
3
5
  function getYouTubeID(uri) {
4
6
  const [,,, videoId] = uri.match(YOUTUBE_REGEX) || [];
@@ -9,5 +11,20 @@ function booleanToNumber(flag) {
9
11
  return flag ? 1 : 0;
10
12
  }
11
13
 
12
- export { getYouTubeID, booleanToNumber };
14
+ const getPosterUrl = ({
15
+ imageData,
16
+ playlistCoverId,
17
+ playlist,
18
+ encodedId,
19
+ imageSize,
20
+ webp
21
+ }) => {
22
+ if (imageData && imageData.url) return imageData.url;
23
+ const videoPlaylisCovertId = typeof playlistCoverId === 'string' ? encodeURIComponent(playlistCoverId) : null;
24
+ const format = webp ? 'webp' : 'jpg';
25
+ const vi = webp ? 'vi_webp' : 'vi';
26
+ return !playlist ? `${YT_IMAGE_URL}/${vi}/${encodedId}/${imageSize}.${format}` : `${YT_IMAGE_URL}/${vi}/${videoPlaylisCovertId}/${imageSize}.${format}`;
27
+ };
28
+
29
+ export { getYouTubeID, booleanToNumber, getPosterUrl, YT_IMAGE_URL, YT_HQ_FORMAT };
13
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Video/providers/YouTube/helpers/index.js"],"names":["YOUTUBE_REGEX","getYouTubeID","uri","videoId","match","booleanToNumber","flag"],"mappings":"AAAA,MAAMA,aAAa,GAAG,yEAAtB;;AAEA,SAASC,YAAT,CAAsBC,GAAtB,EAA2B;AACzB,QAAM,KAAOC,OAAP,IAAkBD,GAAG,CAACE,KAAJ,CAAUJ,aAAV,KAA4B,EAApD;AACA,SAAOG,OAAP;AACD;;AAED,SAASE,eAAT,CAAyBC,IAAzB,EAA+B;AAC7B,SAAOA,IAAI,GAAG,CAAH,GAAO,CAAlB;AACD;;AAED,SAASL,YAAT,EAAuBI,eAAvB","sourcesContent":["const YOUTUBE_REGEX = /^.*((m\\.)?youtu\\.be\\/|vi?\\/|u\\/\\w\\/|embed\\/|\\?vi?=|\\&vi?=)([^#\\&\\?]*).*/;\n\nfunction getYouTubeID(uri) {\n const [, , , videoId] = uri.match(YOUTUBE_REGEX) || [];\n return videoId;\n}\n\nfunction booleanToNumber(flag) {\n return flag ? 1 : 0;\n}\n\nexport { getYouTubeID, booleanToNumber };\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../../../src/components/Video/providers/YouTube/helpers/index.js"],"names":["YOUTUBE_REGEX","YT_IMAGE_URL","YT_HQ_FORMAT","getYouTubeID","uri","videoId","match","booleanToNumber","flag","getPosterUrl","imageData","playlistCoverId","playlist","encodedId","imageSize","webp","url","videoPlaylisCovertId","encodeURIComponent","format","vi"],"mappings":"AAAA,MAAMA,aAAa,GAAG,yEAAtB;AACA,MAAMC,YAAY,GAAG,qBAArB;AACA,MAAMC,YAAY,GAAG,WAArB;;AAEA,SAASC,YAAT,CAAsBC,GAAtB,EAA2B;AACzB,QAAM,KAAOC,OAAP,IAAkBD,GAAG,CAACE,KAAJ,CAAUN,aAAV,KAA4B,EAApD;AACA,SAAOK,OAAP;AACD;;AAED,SAASE,eAAT,CAAyBC,IAAzB,EAA+B;AAC7B,SAAOA,IAAI,GAAG,CAAH,GAAO,CAAlB;AACD;;AAED,MAAMC,YAAY,GAAG,CAAC;AAAEC,EAAAA,SAAF;AAAaC,EAAAA,eAAb;AAA8BC,EAAAA,QAA9B;AAAwCC,EAAAA,SAAxC;AAAmDC,EAAAA,SAAnD;AAA8DC,EAAAA;AAA9D,CAAD,KAA0E;AAC7F,MAAIL,SAAS,IAAIA,SAAS,CAACM,GAA3B,EAAgC,OAAON,SAAS,CAACM,GAAjB;AAChC,QAAMC,oBAAoB,GACxB,OAAON,eAAP,KAA2B,QAA3B,GAAsCO,kBAAkB,CAACP,eAAD,CAAxD,GAA4E,IAD9E;AAGA,QAAMQ,MAAM,GAAGJ,IAAI,GAAG,MAAH,GAAY,KAA/B;AACA,QAAMK,EAAE,GAAGL,IAAI,GAAG,SAAH,GAAe,IAA9B;AACA,SAAO,CAACH,QAAD,GACF,GAAEX,YAAa,IAAGmB,EAAG,IAAGP,SAAU,IAAGC,SAAU,IAAGK,MAAO,EADvD,GAEF,GAAElB,YAAa,IAAGmB,EAAG,IAAGH,oBAAqB,IAAGH,SAAU,IAAGK,MAAO,EAFzE;AAGD,CAVD;;AAYA,SAAShB,YAAT,EAAuBI,eAAvB,EAAwCE,YAAxC,EAAsDR,YAAtD,EAAoEC,YAApE","sourcesContent":["const YOUTUBE_REGEX = /^.*((m\\.)?youtu\\.be\\/|vi?\\/|u\\/\\w\\/|embed\\/|\\?vi?=|\\&vi?=)([^#\\&\\?]*).*/;\nconst YT_IMAGE_URL = 'https://i.ytimg.com';\nconst YT_HQ_FORMAT = 'hqdefault';\n\nfunction getYouTubeID(uri) {\n const [, , , videoId] = uri.match(YOUTUBE_REGEX) || [];\n return videoId;\n}\n\nfunction booleanToNumber(flag) {\n return flag ? 1 : 0;\n}\n\nconst getPosterUrl = ({ imageData, playlistCoverId, playlist, encodedId, imageSize, webp }) => {\n if (imageData && imageData.url) return imageData.url;\n const videoPlaylisCovertId =\n typeof playlistCoverId === 'string' ? encodeURIComponent(playlistCoverId) : null;\n\n const format = webp ? 'webp' : 'jpg';\n const vi = webp ? 'vi_webp' : 'vi';\n return !playlist\n ? `${YT_IMAGE_URL}/${vi}/${encodedId}/${imageSize}.${format}`\n : `${YT_IMAGE_URL}/${vi}/${videoPlaylisCovertId}/${imageSize}.${format}`;\n};\n\nexport { getYouTubeID, booleanToNumber, getPosterUrl, YT_IMAGE_URL, YT_HQ_FORMAT };\n"],"file":"index.js"}
@@ -1,18 +1,24 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ const _excluded = ["children", "className", "modifiers", "style", "tagType"];
1
4
  import React from 'react';
2
5
  import PropTypes from 'prop-types';
3
- const Wrapper = React.forwardRef(({
4
- children,
5
- className,
6
- modifiers,
7
- style,
8
- tagType
9
- }, ref) => {
6
+ const Wrapper = React.forwardRef((_ref, ref) => {
7
+ let {
8
+ children,
9
+ className,
10
+ modifiers,
11
+ style,
12
+ tagType
13
+ } = _ref,
14
+ props = _objectWithoutProperties(_ref, _excluded);
15
+
10
16
  const TagType = !tagType || tagType === 'Default' ? 'div' : tagType;
11
- return /*#__PURE__*/React.createElement(React.Fragment, null, children && /*#__PURE__*/React.createElement(TagType, {
17
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children && /*#__PURE__*/React.createElement(TagType, _extends({
12
18
  ref: ref,
13
19
  className: `${className} ${modifiers}`,
14
20
  style: style
15
- }, children));
21
+ }, props), children));
16
22
  });
17
23
  Wrapper.propTypes = {
18
24
  children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Wrapper.js"],"names":["React","PropTypes","Wrapper","forwardRef","children","className","modifiers","style","tagType","ref","TagType","propTypes","oneOfType","arrayOf","node","isRequired","string","object","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,MAAMC,OAAO,GAAGF,KAAK,CAACG,UAAN,CAAiB,CAAC;AAAEC,EAAAA,QAAF;AAAYC,EAAAA,SAAZ;AAAuBC,EAAAA,SAAvB;AAAkCC,EAAAA,KAAlC;AAAyCC,EAAAA;AAAzC,CAAD,EAAqDC,GAArD,KAA6D;AAC5F,QAAMC,OAAO,GAAG,CAACF,OAAD,IAAYA,OAAO,KAAK,SAAxB,GAAoC,KAApC,GAA4CA,OAA5D;AACA,sBACE,0CACGJ,QAAQ,iBACP,oBAAC,OAAD;AAAS,IAAA,GAAG,EAAEK,GAAd;AAAmB,IAAA,SAAS,EAAG,GAAEJ,SAAU,IAAGC,SAAU,EAAxD;AAA2D,IAAA,KAAK,EAAEC;AAAlE,KACGH,QADH,CAFJ,CADF;AASD,CAXe,CAAhB;AAaAF,OAAO,CAACS,SAAR,GAAoB;AAClBP,EAAAA,QAAQ,EAAEH,SAAS,CAACW,SAAV,CAAoB,CAACX,SAAS,CAACY,OAAV,CAAkBZ,SAAS,CAACa,IAA5B,CAAD,EAAoCb,SAAS,CAACa,IAA9C,CAApB,EAAyEC,UADjE;AAElBV,EAAAA,SAAS,EAAEJ,SAAS,CAACe,MAFH;AAGlBV,EAAAA,SAAS,EAAEL,SAAS,CAACe,MAHH;AAIlBT,EAAAA,KAAK,EAAEN,SAAS,CAACgB,MAJC;AAKlBT,EAAAA,OAAO,EAAEP,SAAS,CAACe;AALD,CAApB;AAQAd,OAAO,CAACgB,YAAR,GAAuB;AACrBb,EAAAA,SAAS,EAAE,EADU;AAErBC,EAAAA,SAAS,EAAE,EAFU;AAGrBC,EAAAA,KAAK,EAAE,EAHc;AAIrBC,EAAAA,OAAO,EAAE;AAJY,CAAvB;AAOA,eAAeN,OAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Wrapper = React.forwardRef(({ children, className, modifiers, style, tagType }, ref) => {\n const TagType = !tagType || tagType === 'Default' ? 'div' : tagType;\n return (\n <>\n {children && (\n <TagType ref={ref} className={`${className} ${modifiers}`} style={style}>\n {children}\n </TagType>\n )}\n </>\n );\n});\n\nWrapper.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n modifiers: PropTypes.string,\n style: PropTypes.object,\n tagType: PropTypes.string\n};\n\nWrapper.defaultProps = {\n className: '',\n modifiers: '',\n style: {},\n tagType: ''\n};\n\nexport default Wrapper;\n"],"file":"Wrapper.js"}
1
+ {"version":3,"sources":["../../src/components/Wrapper.js"],"names":["React","PropTypes","Wrapper","forwardRef","ref","children","className","modifiers","style","tagType","props","TagType","propTypes","oneOfType","arrayOf","node","isRequired","string","object","defaultProps"],"mappings":";;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,MAAMC,OAAO,GAAGF,KAAK,CAACG,UAAN,CACd,OAA+DC,GAA/D,KAAuE;AAAA,MAAtE;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,SAAZ;AAAuBC,IAAAA,SAAvB;AAAkCC,IAAAA,KAAlC;AAAyCC,IAAAA;AAAzC,GAAsE;AAAA,MAAjBC,KAAiB;;AACrE,QAAMC,OAAO,GAAG,CAACF,OAAD,IAAYA,OAAO,KAAK,SAAxB,GAAoC,KAApC,GAA4CA,OAA5D;AACA,sBACE,0CACGJ,QAAQ,iBACP,oBAAC,OAAD;AAAS,IAAA,GAAG,EAAED,GAAd;AAAmB,IAAA,SAAS,EAAG,GAAEE,SAAU,IAAGC,SAAU,EAAxD;AAA2D,IAAA,KAAK,EAAEC;AAAlE,KAA6EE,KAA7E,GACGL,QADH,CAFJ,CADF;AASD,CAZa,CAAhB;AAeAH,OAAO,CAACU,SAAR,GAAoB;AAClBP,EAAAA,QAAQ,EAAEJ,SAAS,CAACY,SAAV,CAAoB,CAACZ,SAAS,CAACa,OAAV,CAAkBb,SAAS,CAACc,IAA5B,CAAD,EAAoCd,SAAS,CAACc,IAA9C,CAApB,EAAyEC,UADjE;AAElBV,EAAAA,SAAS,EAAEL,SAAS,CAACgB,MAFH;AAGlBV,EAAAA,SAAS,EAAEN,SAAS,CAACgB,MAHH;AAIlBT,EAAAA,KAAK,EAAEP,SAAS,CAACiB,MAJC;AAKlBT,EAAAA,OAAO,EAAER,SAAS,CAACgB;AALD,CAApB;AAQAf,OAAO,CAACiB,YAAR,GAAuB;AACrBb,EAAAA,SAAS,EAAE,EADU;AAErBC,EAAAA,SAAS,EAAE,EAFU;AAGrBC,EAAAA,KAAK,EAAE,EAHc;AAIrBC,EAAAA,OAAO,EAAE;AAJY,CAAvB;AAOA,eAAeP,OAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Wrapper = React.forwardRef(\n ({ children, className, modifiers, style, tagType, ...props }, ref) => {\n const TagType = !tagType || tagType === 'Default' ? 'div' : tagType;\n return (\n <>\n {children && (\n <TagType ref={ref} className={`${className} ${modifiers}`} style={style} {...props}>\n {children}\n </TagType>\n )}\n </>\n );\n }\n);\n\nWrapper.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n className: PropTypes.string,\n modifiers: PropTypes.string,\n style: PropTypes.object,\n tagType: PropTypes.string\n};\n\nWrapper.defaultProps = {\n className: '',\n modifiers: '',\n style: {},\n tagType: ''\n};\n\nexport default Wrapper;\n"],"file":"Wrapper.js"}
@@ -76,6 +76,9 @@ export default {
76
76
  './PasswordResetRequest')),
77
77
  breadcrumb: dynamic(() => import(
78
78
  /* webpackChunkName: "blazePbBreadcrumb" */
79
- './Breadcrumb'))
79
+ './Breadcrumb')),
80
+ backtotop: dynamic(() => import(
81
+ /* webpackChunkName: "blazePbBackToTop" */
82
+ './BackToTop'))
80
83
  };
81
84
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/index.js"],"names":["dynamic","Banner","banner","button","card","carousel","column","datasummary","image","row","list","socialfollow","textblock","video","wrapper","searchcontent","searchfilter","searchfiltersort","modal","code","login","menu","menuitem","submenu","emailconfirm","passwordreset","passwordresetrequest","breadcrumb"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,cAApB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe;AACbC,EAAAA,MAAM,EAAED,MADK;AAEbE,EAAAA,MAAM,EAAEH,OAAO,CAAC,MAAM;AAAO;AAAwC,YAA/C,CAAP,CAFF;AAGbI,EAAAA,IAAI,EAAEJ,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CAHA;AAIbK,EAAAA,QAAQ,EAAEL,OAAO,CAAC,MAAM;AAAO;AAA0C,cAAjD,CAAP,CAJJ;AAKbM,EAAAA,MAAM,EAAEN,OAAO,CAAC,MAAM;AAAO;AAAwC,YAA/C,CAAP,CALF;AAMbO,EAAAA,WAAW,EAAEP,OAAO,CAAC,MAAM;AAAO;AAA6C,iBAApD,CAAP,CANP;AAObQ,EAAAA,KAAK,EAAER,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CAPD;AAQbS,EAAAA,GAAG,EAAET,OAAO,CAAC,MAAM;AAAO;AAAwC,YAA/C,CAAP,CARC;AASbU,EAAAA,IAAI,EAAEV,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CATA;AAUbW,EAAAA,YAAY,EAAEX,OAAO,CAAC,MACpB;AAAO;AAA8C,kBAArD,CADmB,CAVR;AAabY,EAAAA,SAAS,EAAEZ,OAAO,CAAC,MAAM;AAAO;AAA2C,eAAlD,CAAP,CAbL;AAcba,EAAAA,KAAK,EAAEb,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CAdD;AAebc,EAAAA,OAAO,EAAEd,OAAO,CAAC,MAAM;AAAO;AAAyC,aAAhD,CAAP,CAfH;AAgBbe,EAAAA,aAAa,EAAEf,OAAO,CAAC,MACrB;AAAO;AAA8C,mBAArD,CADoB,CAhBT;AAmBbgB,EAAAA,YAAY,EAAEhB,OAAO,CAAC,MACpB;AAAO;AAA8C,kBAArD,CADmB,CAnBR;AAsBbiB,EAAAA,gBAAgB,EAAEjB,OAAO,CAAC,MACxB;AAAO;AAAiD,sBAAxD,CADuB,CAtBZ;AAyBbkB,EAAAA,KAAK,EAAElB,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CAzBD;AA0BbmB,EAAAA,IAAI,EAAEnB,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CA1BA;AA2BboB,EAAAA,KAAK,EAAEpB,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CA3BD;AA4BbqB,EAAAA,IAAI,EAAErB,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CA5BA;AA6BbsB,EAAAA,QAAQ,EAAEtB,OAAO,CAAC,MAAM;AAAO;AAA0C,cAAjD,CAAP,CA7BJ;AA8BbuB,EAAAA,OAAO,EAAEvB,OAAO,CAAC,MAAM;AAAO;AAAyC,aAAhD,CAAP,CA9BH;AA+BbwB,EAAAA,YAAY,EAAExB,OAAO,CAAC,MACpB;AAAO;AAA8C,kBAArD,CADmB,CA/BR;AAkCbyB,EAAAA,aAAa,EAAEzB,OAAO,CAAC,MACrB;AAAO;AAA+C,mBAAtD,CADoB,CAlCT;AAqCb0B,EAAAA,oBAAoB,EAAE1B,OAAO,CAAC,MAC5B;AAAO;AAAsD,0BAA7D,CAD2B,CArChB;AAwCb2B,EAAAA,UAAU,EAAE3B,OAAO,CAAC,MAAM;AAAO;AAA4C,gBAAnD,CAAP;AAxCN,CAAf","sourcesContent":["import dynamic from 'next/dynamic';\nimport Banner from './Banner';\n\nexport default {\n banner: Banner,\n button: dynamic(() => import(/* webpackChunkName: \"blazePbButton\" */ './Button')),\n card: dynamic(() => import(/* webpackChunkName: \"blazePbCard\" */ './Card')),\n carousel: dynamic(() => import(/* webpackChunkName: \"blazePbCarousel\" */ './Carousel')),\n column: dynamic(() => import(/* webpackChunkName: \"blazePbLayout\" */ './Layout')),\n datasummary: dynamic(() => import(/* webpackChunkName: \"blazePbDataSummary\" */ './DataSummary')),\n image: dynamic(() => import(/* webpackChunkName: \"blazePbImage\" */ './Image')),\n row: dynamic(() => import(/* webpackChunkName: \"blazePbLayout\" */ './Layout')),\n list: dynamic(() => import(/* webpackChunkName: \"blazePbList\" */ './List')),\n socialfollow: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSocialFollow\" */ './SocialFollow')\n ),\n textblock: dynamic(() => import(/* webpackChunkName: \"blazePbTextBlock\" */ './TextBlock')),\n video: dynamic(() => import(/* webpackChunkName: \"blazePbVideo\" */ './Video')),\n wrapper: dynamic(() => import(/* webpackChunkName: \"blazePbWrapper\" */ './Wrapper')),\n searchcontent: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSearchFilter\" */ './SearchContent')\n ),\n searchfilter: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSearchFilter\" */ './SearchFilter')\n ),\n searchfiltersort: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSearchFilteSort\" */ './SearchFilterSort')\n ),\n modal: dynamic(() => import(/* webpackChunkName: \"blazePbModal\" */ './Modal')),\n code: dynamic(() => import(/* webpackChunkName: \"blazePbCode\" */ './Code')),\n login: dynamic(() => import(/* webpackChunkName: \"blazePbLogin\" */ './Login')),\n menu: dynamic(() => import(/* webpackChunkName: \"blazePbMenu\" */ './Menu')),\n menuitem: dynamic(() => import(/* webpackChunkName: \"blazePbMenuItem\" */ './MenuItem')),\n submenu: dynamic(() => import(/* webpackChunkName: \"blazePbSubMenu\" */ './SubMenu')),\n emailconfirm: dynamic(() =>\n import(/* webpackChunkName: \"blazePbEmailConfirm\" */ './EmailConfirm')\n ),\n passwordreset: dynamic(() =>\n import(/* webpackChunkName: \"blazePbPasswordReset\" */ './PasswordReset')\n ),\n passwordresetrequest: dynamic(() =>\n import(/* webpackChunkName: \"blazePbPasswordResetRequest\" */ './PasswordResetRequest')\n ),\n breadcrumb: dynamic(() => import(/* webpackChunkName: \"blazePbBreadcrumb\" */ './Breadcrumb'))\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/components/index.js"],"names":["dynamic","Banner","banner","button","card","carousel","column","datasummary","image","row","list","socialfollow","textblock","video","wrapper","searchcontent","searchfilter","searchfiltersort","modal","code","login","menu","menuitem","submenu","emailconfirm","passwordreset","passwordresetrequest","breadcrumb","backtotop"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,cAApB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe;AACbC,EAAAA,MAAM,EAAED,MADK;AAEbE,EAAAA,MAAM,EAAEH,OAAO,CAAC,MAAM;AAAO;AAAwC,YAA/C,CAAP,CAFF;AAGbI,EAAAA,IAAI,EAAEJ,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CAHA;AAIbK,EAAAA,QAAQ,EAAEL,OAAO,CAAC,MAAM;AAAO;AAA0C,cAAjD,CAAP,CAJJ;AAKbM,EAAAA,MAAM,EAAEN,OAAO,CAAC,MAAM;AAAO;AAAwC,YAA/C,CAAP,CALF;AAMbO,EAAAA,WAAW,EAAEP,OAAO,CAAC,MAAM;AAAO;AAA6C,iBAApD,CAAP,CANP;AAObQ,EAAAA,KAAK,EAAER,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CAPD;AAQbS,EAAAA,GAAG,EAAET,OAAO,CAAC,MAAM;AAAO;AAAwC,YAA/C,CAAP,CARC;AASbU,EAAAA,IAAI,EAAEV,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CATA;AAUbW,EAAAA,YAAY,EAAEX,OAAO,CAAC,MACpB;AAAO;AAA8C,kBAArD,CADmB,CAVR;AAabY,EAAAA,SAAS,EAAEZ,OAAO,CAAC,MAAM;AAAO;AAA2C,eAAlD,CAAP,CAbL;AAcba,EAAAA,KAAK,EAAEb,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CAdD;AAebc,EAAAA,OAAO,EAAEd,OAAO,CAAC,MAAM;AAAO;AAAyC,aAAhD,CAAP,CAfH;AAgBbe,EAAAA,aAAa,EAAEf,OAAO,CAAC,MACrB;AAAO;AAA8C,mBAArD,CADoB,CAhBT;AAmBbgB,EAAAA,YAAY,EAAEhB,OAAO,CAAC,MACpB;AAAO;AAA8C,kBAArD,CADmB,CAnBR;AAsBbiB,EAAAA,gBAAgB,EAAEjB,OAAO,CAAC,MACxB;AAAO;AAAiD,sBAAxD,CADuB,CAtBZ;AAyBbkB,EAAAA,KAAK,EAAElB,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CAzBD;AA0BbmB,EAAAA,IAAI,EAAEnB,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CA1BA;AA2BboB,EAAAA,KAAK,EAAEpB,OAAO,CAAC,MAAM;AAAO;AAAuC,WAA9C,CAAP,CA3BD;AA4BbqB,EAAAA,IAAI,EAAErB,OAAO,CAAC,MAAM;AAAO;AAAsC,UAA7C,CAAP,CA5BA;AA6BbsB,EAAAA,QAAQ,EAAEtB,OAAO,CAAC,MAAM;AAAO;AAA0C,cAAjD,CAAP,CA7BJ;AA8BbuB,EAAAA,OAAO,EAAEvB,OAAO,CAAC,MAAM;AAAO;AAAyC,aAAhD,CAAP,CA9BH;AA+BbwB,EAAAA,YAAY,EAAExB,OAAO,CAAC,MACpB;AAAO;AAA8C,kBAArD,CADmB,CA/BR;AAkCbyB,EAAAA,aAAa,EAAEzB,OAAO,CAAC,MACrB;AAAO;AAA+C,mBAAtD,CADoB,CAlCT;AAqCb0B,EAAAA,oBAAoB,EAAE1B,OAAO,CAAC,MAC5B;AAAO;AAAsD,0BAA7D,CAD2B,CArChB;AAwCb2B,EAAAA,UAAU,EAAE3B,OAAO,CAAC,MAAM;AAAO;AAA4C,gBAAnD,CAAP,CAxCN;AAyCb4B,EAAAA,SAAS,EAAE5B,OAAO,CAAC,MAAM;AAAO;AAA2C,eAAlD,CAAP;AAzCL,CAAf","sourcesContent":["import dynamic from 'next/dynamic';\nimport Banner from './Banner';\n\nexport default {\n banner: Banner,\n button: dynamic(() => import(/* webpackChunkName: \"blazePbButton\" */ './Button')),\n card: dynamic(() => import(/* webpackChunkName: \"blazePbCard\" */ './Card')),\n carousel: dynamic(() => import(/* webpackChunkName: \"blazePbCarousel\" */ './Carousel')),\n column: dynamic(() => import(/* webpackChunkName: \"blazePbLayout\" */ './Layout')),\n datasummary: dynamic(() => import(/* webpackChunkName: \"blazePbDataSummary\" */ './DataSummary')),\n image: dynamic(() => import(/* webpackChunkName: \"blazePbImage\" */ './Image')),\n row: dynamic(() => import(/* webpackChunkName: \"blazePbLayout\" */ './Layout')),\n list: dynamic(() => import(/* webpackChunkName: \"blazePbList\" */ './List')),\n socialfollow: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSocialFollow\" */ './SocialFollow')\n ),\n textblock: dynamic(() => import(/* webpackChunkName: \"blazePbTextBlock\" */ './TextBlock')),\n video: dynamic(() => import(/* webpackChunkName: \"blazePbVideo\" */ './Video')),\n wrapper: dynamic(() => import(/* webpackChunkName: \"blazePbWrapper\" */ './Wrapper')),\n searchcontent: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSearchFilter\" */ './SearchContent')\n ),\n searchfilter: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSearchFilter\" */ './SearchFilter')\n ),\n searchfiltersort: dynamic(() =>\n import(/* webpackChunkName: \"blazePbSearchFilteSort\" */ './SearchFilterSort')\n ),\n modal: dynamic(() => import(/* webpackChunkName: \"blazePbModal\" */ './Modal')),\n code: dynamic(() => import(/* webpackChunkName: \"blazePbCode\" */ './Code')),\n login: dynamic(() => import(/* webpackChunkName: \"blazePbLogin\" */ './Login')),\n menu: dynamic(() => import(/* webpackChunkName: \"blazePbMenu\" */ './Menu')),\n menuitem: dynamic(() => import(/* webpackChunkName: \"blazePbMenuItem\" */ './MenuItem')),\n submenu: dynamic(() => import(/* webpackChunkName: \"blazePbSubMenu\" */ './SubMenu')),\n emailconfirm: dynamic(() =>\n import(/* webpackChunkName: \"blazePbEmailConfirm\" */ './EmailConfirm')\n ),\n passwordreset: dynamic(() =>\n import(/* webpackChunkName: \"blazePbPasswordReset\" */ './PasswordReset')\n ),\n passwordresetrequest: dynamic(() =>\n import(/* webpackChunkName: \"blazePbPasswordResetRequest\" */ './PasswordResetRequest')\n ),\n breadcrumb: dynamic(() => import(/* webpackChunkName: \"blazePbBreadcrumb\" */ './Breadcrumb')),\n backtotop: dynamic(() => import(/* webpackChunkName: \"blazePbBackToTop\" */ './BackToTop'))\n};\n"],"file":"index.js"}
@@ -92,7 +92,7 @@ const buildRawQuery = (docType, operator, searchValues, filterData, id, itemsToD
92
92
  type: 'number',
93
93
  script: {
94
94
  lang: 'painless',
95
- source: "doc['_id'].value != null ? params.sortOrder.indexOf(doc['_id'].value) : 0",
95
+ source: "!doc['id.keyword'].empty ? params.sortOrder.indexOf(doc['id.keyword'].value) : 0",
96
96
  params: {
97
97
  sortOrder: itemsToDisplayIds
98
98
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/build-raw-query.js"],"names":["buildRawQueryBase","getItemsToDisplayIds","getExtraAzBits","buildAzFilter","AND_OPERATOR","buildRawQuery","docType","operator","searchValues","filterData","id","itemsToDisplay","shouldApplySort","azOptions","searchValuesText","searchValuesCheckboxSelectRange","searchValuesCheckboxOr","filterValues","filterOperator","relations","stringProps","azFilter","shouldReturnAggs","isAZ","searchValuesTextCheckboxSelectJoined","searchValuesTextCheckboxOr","length","finalValue","finalValueWithCheckboxOrValues","must","bool","should","finalValueIfNoCheckboxOrValues","mustValues","query","azQueryBits","itemsToDisplayIds","push","ids","values","sort","_script","type","script","lang","source","params","sortOrder","order"],"mappings":"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","sourcesContent":["import buildRawQueryBase from './build-raw-query-base';\nimport getItemsToDisplayIds from './get-items-to-display-ids';\nimport getExtraAzBits from './get-extra-az-bits';\nimport buildAzFilter from './build-az-filter';\nimport { AND_OPERATOR } from '../constants';\n\nconst buildRawQuery = (\n docType,\n operator,\n searchValues,\n filterData,\n id,\n itemsToDisplay,\n shouldApplySort,\n azOptions\n) => {\n const {\n searchValuesText,\n searchValuesCheckboxSelectRange,\n searchValuesCheckboxOr\n } = searchValues;\n\n const { filterValues, filterOperator, relations, stringProps, azFilter } = filterData;\n const { shouldReturnAggs, isAZ } = azOptions || {};\n const searchValuesTextCheckboxSelectJoined =\n operator === AND_OPERATOR ? [...searchValuesText, ...searchValuesCheckboxSelectRange] : [];\n let searchValuesTextCheckboxOr = searchValuesText;\n if (searchValuesCheckboxOr.length) {\n searchValuesTextCheckboxOr = [...searchValuesText, ...searchValuesCheckboxOr];\n }\n\n let finalValue;\n\n if (searchValuesTextCheckboxSelectJoined.length) {\n const finalValueWithCheckboxOrValues = {\n must: [...searchValuesTextCheckboxSelectJoined, { bool: { should: searchValuesCheckboxOr } }]\n };\n const finalValueIfNoCheckboxOrValues = { must: searchValuesTextCheckboxSelectJoined };\n finalValue = searchValuesCheckboxOr.length\n ? finalValueWithCheckboxOrValues\n : finalValueIfNoCheckboxOrValues;\n } else {\n finalValue = {\n must: [...searchValuesCheckboxSelectRange, { bool: { should: searchValuesTextCheckboxOr } }]\n };\n }\n const mustValues = [\n {\n bool: finalValue\n }\n ];\n\n buildAzFilter(azFilter, mustValues);\n\n const query = {\n bool: {\n must: mustValues,\n ...buildRawQueryBase({ docType, id, filterValues, filterOperator, relations, stringProps })\n }\n };\n const azQueryBits = getExtraAzBits(shouldReturnAggs, isAZ, azFilter);\n\n if (itemsToDisplay && itemsToDisplay.length) {\n const itemsToDisplayIds = getItemsToDisplayIds(itemsToDisplay);\n query.bool.must.push({ ids: { values: itemsToDisplayIds } });\n if (shouldApplySort) {\n return {\n query,\n sort: {\n _script: {\n type: 'number',\n script: {\n lang: 'painless',\n source: \"doc['_id'].value != null ? params.sortOrder.indexOf(doc['_id'].value) : 0\",\n params: {\n sortOrder: itemsToDisplayIds\n }\n },\n order: 'asc'\n }\n },\n ...azQueryBits\n };\n }\n }\n\n return isAZ\n ? {\n query,\n ...azQueryBits\n }\n : query;\n};\n\nexport default buildRawQuery;\n"],"file":"build-raw-query.js"}
1
+ {"version":3,"sources":["../../src/helpers/build-raw-query.js"],"names":["buildRawQueryBase","getItemsToDisplayIds","getExtraAzBits","buildAzFilter","AND_OPERATOR","buildRawQuery","docType","operator","searchValues","filterData","id","itemsToDisplay","shouldApplySort","azOptions","searchValuesText","searchValuesCheckboxSelectRange","searchValuesCheckboxOr","filterValues","filterOperator","relations","stringProps","azFilter","shouldReturnAggs","isAZ","searchValuesTextCheckboxSelectJoined","searchValuesTextCheckboxOr","length","finalValue","finalValueWithCheckboxOrValues","must","bool","should","finalValueIfNoCheckboxOrValues","mustValues","query","azQueryBits","itemsToDisplayIds","push","ids","values","sort","_script","type","script","lang","source","params","sortOrder","order"],"mappings":"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","sourcesContent":["import buildRawQueryBase from './build-raw-query-base';\nimport getItemsToDisplayIds from './get-items-to-display-ids';\nimport getExtraAzBits from './get-extra-az-bits';\nimport buildAzFilter from './build-az-filter';\nimport { AND_OPERATOR } from '../constants';\n\nconst buildRawQuery = (\n docType,\n operator,\n searchValues,\n filterData,\n id,\n itemsToDisplay,\n shouldApplySort,\n azOptions\n) => {\n const {\n searchValuesText,\n searchValuesCheckboxSelectRange,\n searchValuesCheckboxOr\n } = searchValues;\n\n const { filterValues, filterOperator, relations, stringProps, azFilter } = filterData;\n const { shouldReturnAggs, isAZ } = azOptions || {};\n const searchValuesTextCheckboxSelectJoined =\n operator === AND_OPERATOR ? [...searchValuesText, ...searchValuesCheckboxSelectRange] : [];\n let searchValuesTextCheckboxOr = searchValuesText;\n if (searchValuesCheckboxOr.length) {\n searchValuesTextCheckboxOr = [...searchValuesText, ...searchValuesCheckboxOr];\n }\n\n let finalValue;\n\n if (searchValuesTextCheckboxSelectJoined.length) {\n const finalValueWithCheckboxOrValues = {\n must: [...searchValuesTextCheckboxSelectJoined, { bool: { should: searchValuesCheckboxOr } }]\n };\n const finalValueIfNoCheckboxOrValues = { must: searchValuesTextCheckboxSelectJoined };\n finalValue = searchValuesCheckboxOr.length\n ? finalValueWithCheckboxOrValues\n : finalValueIfNoCheckboxOrValues;\n } else {\n finalValue = {\n must: [...searchValuesCheckboxSelectRange, { bool: { should: searchValuesTextCheckboxOr } }]\n };\n }\n const mustValues = [\n {\n bool: finalValue\n }\n ];\n\n buildAzFilter(azFilter, mustValues);\n\n const query = {\n bool: {\n must: mustValues,\n ...buildRawQueryBase({ docType, id, filterValues, filterOperator, relations, stringProps })\n }\n };\n const azQueryBits = getExtraAzBits(shouldReturnAggs, isAZ, azFilter);\n\n if (itemsToDisplay && itemsToDisplay.length) {\n const itemsToDisplayIds = getItemsToDisplayIds(itemsToDisplay);\n query.bool.must.push({ ids: { values: itemsToDisplayIds } });\n if (shouldApplySort) {\n return {\n query,\n sort: {\n _script: {\n type: 'number',\n script: {\n lang: 'painless',\n source:\n \"!doc['id.keyword'].empty ? params.sortOrder.indexOf(doc['id.keyword'].value) : 0\",\n params: {\n sortOrder: itemsToDisplayIds\n }\n },\n order: 'asc'\n }\n },\n ...azQueryBits\n };\n }\n }\n\n return isAZ\n ? {\n query,\n ...azQueryBits\n }\n : query;\n};\n\nexport default buildRawQuery;\n"],"file":"build-raw-query.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.123.1-alpha.2",
3
+ "version": "0.124.0-alpha.2",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -30,7 +30,7 @@
30
30
  "@blaze-cms/core-auth-ui": "^0.119.0",
31
31
  "@blaze-cms/core-errors": "^0.118.0",
32
32
  "@blaze-cms/image-cdn-react": "^0.2.0",
33
- "@blaze-cms/nextjs-components": "^0.123.0",
33
+ "@blaze-cms/nextjs-components": "^0.124.0-alpha.2",
34
34
  "@blaze-cms/setup-ui": "^0.92.0",
35
35
  "@blaze-cms/utils": "^0.118.0",
36
36
  "@blaze-react/breadcrumb": "0.8.0-alpha.60",
@@ -84,5 +84,5 @@
84
84
  "lib/*",
85
85
  "lib-es/*"
86
86
  ],
87
- "gitHead": "58899ee04f3924154f702bb32269dee176b36f1c"
87
+ "gitHead": "52045d2ed84e79531b9634ad5ce95b89f674382a"
88
88
  }
@@ -0,0 +1,52 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { FaArrowUp } from 'react-icons/fa';
4
+ import Wrapper from '../Wrapper';
5
+ import { getClassModifiers } from '../../utils';
6
+
7
+ const BackToTop = ({ type, showAfterPixels, ...otherProps }) => {
8
+ const [goToTop, setGoToTop] = useState(false);
9
+ const modifiers = getClassModifiers(type, otherProps);
10
+
11
+ useEffect(
12
+ () => {
13
+ const handleOnScroll = () => setGoToTop(window.scrollY >= showAfterPixels);
14
+ document.addEventListener('scroll', handleOnScroll);
15
+ return () => document.removeEventListener('scroll', handleOnScroll);
16
+ },
17
+ [showAfterPixels]
18
+ );
19
+
20
+ const handleBackToTop = () => {
21
+ window.scroll({
22
+ top: 0,
23
+ left: 0,
24
+ behavior: 'smooth'
25
+ });
26
+ setGoToTop(false);
27
+ };
28
+
29
+ return (
30
+ <>
31
+ {goToTop && (
32
+ <Wrapper className={type} modifiers={modifiers} onClick={handleBackToTop}>
33
+ <i>
34
+ <FaArrowUp />
35
+ </i>
36
+ </Wrapper>
37
+ )}
38
+ </>
39
+ );
40
+ };
41
+
42
+ BackToTop.propTypes = {
43
+ type: PropTypes.string,
44
+ showAfterPixels: PropTypes.number
45
+ };
46
+
47
+ BackToTop.defaultProps = {
48
+ type: 'backtotop',
49
+ showAfterPixels: 200
50
+ };
51
+
52
+ export default BackToTop;
@@ -0,0 +1,3 @@
1
+ import BackToTop from './BackToTop';
2
+
3
+ export default BackToTop;
@@ -1,6 +1,5 @@
1
1
  import React, { useRef, useState, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { FaAngleLeft, FaAngleRight } from 'react-icons/fa';
4
3
 
5
4
  const CarouselWrapper = ({
6
5
  children,
@@ -81,9 +80,7 @@ const CarouselWrapper = ({
81
80
  setShouldAutoScroll(false);
82
81
  handleButtonNavigation();
83
82
  }}>
84
- <i>
85
- <FaAngleLeft size={arrowSize} />
86
- </i>
83
+ <i className="arrow left" />
87
84
  </button>
88
85
  )}
89
86
  </div>
@@ -96,9 +93,7 @@ const CarouselWrapper = ({
96
93
  setShouldAutoScroll(false);
97
94
  handleButtonNavigation(true);
98
95
  }}>
99
- <i>
100
- <FaAngleRight size={arrowSize} />
101
- </i>
96
+ <i className="arrow right" />
102
97
  </button>
103
98
  )}
104
99
  </div>
@@ -11,7 +11,8 @@ const SearchContent = ({
11
11
  searchInputWrapperMobile,
12
12
  searchInputWrapperDesktop,
13
13
  collapsible,
14
- isMobile
14
+ isMobile,
15
+ placeholder
15
16
  }) => {
16
17
  const [collapsed, setCollapsed] = useState(collapsible);
17
18
  const [searchTerm, setSearchTerm] = useState(null);
@@ -131,7 +132,7 @@ const SearchContent = ({
131
132
  onChange={e => setSearchTerm(e.target.value)}
132
133
  onKeyPress={handleKeyPress}
133
134
  className="search-content--expanded__input"
134
- placeholder="Search for anything..."
135
+ placeholder={placeholder}
135
136
  onBlur={() => {
136
137
  if (!collapsible) return;
137
138
  if (!searchTerm || searchTerm === '') setCollapsed(true);
@@ -160,6 +161,7 @@ SearchContent.propTypes = {
160
161
  searchInputAlignment: PropTypes.string,
161
162
  searchInputWrapperMobile: PropTypes.string,
162
163
  searchInputWrapperDesktop: PropTypes.string,
164
+ placeholder: PropTypes.string,
163
165
  isMobile: PropTypes.bool,
164
166
  collapsible: PropTypes.bool,
165
167
  entity: PropTypes.string.isRequired
@@ -169,6 +171,7 @@ SearchContent.defaultProps = {
169
171
  searchInputAlignment: '',
170
172
  searchInputWrapperMobile: '',
171
173
  searchInputWrapperDesktop: '',
174
+ placeholder: '',
172
175
  isMobile: false,
173
176
  collapsible: false
174
177
  };
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import useGetImages from '../../hooks/use-get-images';
3
4
  import VideoRender from './VideoRender';
5
+ import VideoModal from './VideoModal';
4
6
  import Wrapper from '../Wrapper';
5
7
  import getClassModifiers from '../../utils/get-class-modifiers';
6
8
  import { shouldShowProperty } from '../../helpers';
@@ -14,13 +16,21 @@ const Video = ({
14
16
  credits,
15
17
  areVideoCreditsDisplayed,
16
18
  provider,
17
- ...variableProps
19
+ playInModal,
20
+ imageId,
21
+ ...props
18
22
  }) => {
23
+ const {
24
+ data: { getFile: imageData },
25
+ loading
26
+ } = useGetImages(imageId);
27
+
28
+ if (loading) return '';
19
29
  if (!url) return null;
20
30
 
21
31
  const modifiers = `video--${provider.toLowerCase()} ${getClassModifiers('video', {
22
32
  modifier,
23
- ...variableProps
33
+ ...props
24
34
  })}`;
25
35
 
26
36
  const shouldDisplayCaption = shouldShowProperty({
@@ -34,13 +44,26 @@ const Video = ({
34
44
 
35
45
  return (
36
46
  <Wrapper className="video" modifiers={modifiers}>
37
- <VideoRender
38
- url={url}
39
- modifier={modifier}
40
- autoplay={autoplay}
41
- provider={provider}
42
- {...variableProps}
43
- />
47
+ {playInModal ? (
48
+ <VideoModal
49
+ url={url}
50
+ modifier={modifier}
51
+ autoplay={autoplay}
52
+ provider={provider}
53
+ imageData={imageData}
54
+ {...props}
55
+ />
56
+ ) : (
57
+ <VideoRender
58
+ url={url}
59
+ modifier={modifier}
60
+ autoplay={autoplay}
61
+ provider={provider}
62
+ imageData={imageData}
63
+ {...props}
64
+ />
65
+ )}
66
+
44
67
  {(shouldDisplayCaption || shouldDisplayCredits) && (
45
68
  <div className="video__details" data-testid="video-details">
46
69
  {shouldDisplayCaption && <div className="caption">{caption}</div>}
@@ -59,18 +82,22 @@ Video.propTypes = {
59
82
  autoplay: PropTypes.bool,
60
83
  areVideoCreditsDisplayed: PropTypes.bool,
61
84
  isCaptionDisplayed: PropTypes.bool,
62
- provider: PropTypes.string
85
+ provider: PropTypes.string,
86
+ playInModal: PropTypes.bool,
87
+ imageId: PropTypes.string
63
88
  };
64
89
 
65
90
  Video.defaultProps = {
66
91
  caption: '',
67
92
  credits: '',
68
93
  modifier: '',
69
- autoplay: false,
94
+ imageId: '',
70
95
  url: '',
71
96
  provider: 'youtube',
97
+ autoplay: false,
72
98
  isCaptionDisplayed: false,
73
- areVideoCreditsDisplayed: false
99
+ areVideoCreditsDisplayed: false,
100
+ playInModal: false
74
101
  };
75
102
 
76
103
  export default Video;
@@ -0,0 +1,31 @@
1
+ import React, { useState } from 'react';
2
+ import Modal from '@blaze-react/modal';
3
+ import VideoRender from './VideoRender';
4
+
5
+ const VideoModal = ({ ...props }) => {
6
+ const [displayModal, setDisplayModal] = useState(false);
7
+
8
+ return (
9
+ <>
10
+ <div
11
+ role="button"
12
+ onClick={() => {
13
+ setDisplayModal(!displayModal);
14
+ }}>
15
+ <VideoRender placeholderOnly autoplay={false} {...props} />
16
+ </div>
17
+ {displayModal && (
18
+ <Modal
19
+ className="modal--video"
20
+ isFullScreen
21
+ showFooter={false}
22
+ isSimple
23
+ onClose={() => setDisplayModal(!displayModal)}>
24
+ <VideoRender {...props} placeholderOnly={false} autoplay />
25
+ </Modal>
26
+ )}
27
+ </>
28
+ );
29
+ };
30
+
31
+ export default VideoModal;
@@ -3,9 +3,9 @@ import PropTypes from 'prop-types';
3
3
  import getProvider from './providers';
4
4
  import { withTitle } from '../../HOC';
5
5
 
6
- const VideoRender = ({ provider, ...varibleProps }) => {
6
+ const VideoRender = ({ provider, ...props }) => {
7
7
  const Provider = getProvider(provider);
8
- return <Provider {...varibleProps} />;
8
+ return <Provider {...props} />;
9
9
  };
10
10
 
11
11
  VideoRender.propTypes = {
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import ReactJWPlayer from 'react-jw-player';
4
- import useGetImages from '../../../../hooks/use-get-images';
5
4
  import { JW_PLAYER_TYPE_FILE, VIDEO_WRAPPER_CLASS_NAME } from '../../../../constants';
6
5
  import JWPlayerController from './JWPlayerController';
7
6
 
@@ -15,13 +14,9 @@ const JWPlayerProvider = ({
15
14
  type,
16
15
  urlScript,
17
16
  muted,
18
- imageId,
17
+ imageData,
19
18
  loop: repeat
20
19
  }) => {
21
- const { data, loading } = useGetImages(imageId);
22
-
23
- if (loading) return null;
24
-
25
20
  const handleOnReady = () => {
26
21
  const jwPlayer = window.jwplayer(name);
27
22
  if (jwPlayer) {
@@ -43,7 +38,7 @@ const JWPlayerProvider = ({
43
38
  };
44
39
 
45
40
  if (type === JW_PLAYER_TYPE_FILE) {
46
- const { url: imageURL = '' } = data.getFile || {};
41
+ const { url: imageURL = '' } = imageData;
47
42
  return { ...props, image: imageURL, file: url };
48
43
  }
49
44
 
@@ -62,7 +57,8 @@ JWPlayerProvider.propTypes = {
62
57
  loop: PropTypes.bool,
63
58
  controls: PropTypes.bool,
64
59
  muted: PropTypes.bool,
65
- type: PropTypes.string
60
+ type: PropTypes.string,
61
+ imageData: PropTypes.object
66
62
  };
67
63
 
68
64
  JWPlayerProvider.defaultProps = {
@@ -71,7 +67,8 @@ JWPlayerProvider.defaultProps = {
71
67
  controls: true,
72
68
  muted: false,
73
69
  type: 'playlist',
74
- imageId: null
70
+ imageId: null,
71
+ imageData: {}
75
72
  };
76
73
 
77
74
  export default JWPlayerProvider;