pds-dev-kit-web-test 0.3.10 → 0.3.12

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.
@@ -694,9 +694,9 @@ exports.sampleCustomsection1 = {
694
694
  },
695
695
  CB_PLACEMENT_PROP_PLACEMENT: {
696
696
  CB_PLACEMENT_PROP_PLACEMENT_SPEC_COLS: 8,
697
- 'CB_PLACEMENT_PROP_PLACEMENT_SPEC_COLS:MOBILE': 1,
697
+ 'CB_PLACEMENT_PROP_PLACEMENT_SPEC_COLS:MOBILE': 8,
698
698
  CB_PLACEMENT_PROP_PLACEMENT_SPEC_ROWS: 12,
699
- 'CB_PLACEMENT_PROP_PLACEMENT_SPEC_ROWS:MOBILE': 3,
699
+ 'CB_PLACEMENT_PROP_PLACEMENT_SPEC_ROWS:MOBILE': 8,
700
700
  CB_PLACEMENT_PROP_PLACEMENT_SPEC_STARTX: 1,
701
701
  'CB_PLACEMENT_PROP_PLACEMENT_SPEC_STARTX:MOBILE': 2,
702
702
  CB_PLACEMENT_PROP_PLACEMENT_SPEC_STARTY: 1,
@@ -1147,7 +1147,7 @@ exports.sampleCustomsection1 = {
1147
1147
  availableTemplates: [],
1148
1148
  schema: 'GENERAL'
1149
1149
  },
1150
- order: 1,
1150
+ order: 5,
1151
1151
  program: '',
1152
1152
  programData: {},
1153
1153
  properties: {
@@ -19,6 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  var jsx_runtime_1 = require("react/jsx-runtime");
22
+ /* eslint-disable no-console */
22
23
  var react_1 = require("react");
23
24
  var DynamicLayout_1 = require("../../../../../../../DynamicLayout");
24
25
  var hooks_1 = require("../../../../../../../DynamicLayout/sections/CustomSection/hooks");
@@ -50,23 +51,41 @@ function Youtube(props) {
50
51
  : CB_EFFECT_PROP_ENTANIM['CB_EFFECT_PROP_ENTANIM_SPEC_TYPE:MOBILE'] === 'NONE';
51
52
  var hasEffect = !isNoneEffectType;
52
53
  var effectVisibleStyle = hasEffect ? { opacity: isVisible ? 1 : 0 } : {};
54
+ var iframeRef = (0, react_1.useRef)(null);
53
55
  var autoplayRef = (0, react_1.useRef)(null);
54
56
  var autoplayEntry = (0, hooks_1.useIntersectionObserver)(autoplayRef, {
55
57
  freezeOnceVisible: youtubeAutoplayMode === 'VIEWPORT-FREEZE' ? true : false
56
58
  });
57
59
  var shouldAutoPlay = function () {
60
+ var _a, _b;
58
61
  if (youtubeAutoplayMode === 'ALWAYS') {
59
62
  return true;
60
63
  }
61
64
  if (youtubeAutoplayMode === 'VIEWPORT' && (autoplayEntry === null || autoplayEntry === void 0 ? void 0 : autoplayEntry.isIntersecting)) {
65
+ if (!((_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow)) {
66
+ console.log('ERROR: no CONTENT WINDOW');
67
+ return true;
68
+ }
69
+ iframeRef.current.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*');
70
+ console.log('VIEWPORT & intersecting');
62
71
  return true;
63
72
  }
64
73
  if (youtubeAutoplayMode === 'VIEWPORT-FREEZE' && (autoplayEntry === null || autoplayEntry === void 0 ? void 0 : autoplayEntry.isIntersecting)) {
65
74
  return true;
66
75
  }
76
+ if (youtubeAutoplayMode === 'VIEWPORT' && !(autoplayEntry === null || autoplayEntry === void 0 ? void 0 : autoplayEntry.isIntersecting)) {
77
+ console.log('viewport and NOT intersecting');
78
+ if (!((_b = iframeRef.current) === null || _b === void 0 ? void 0 : _b.contentWindow)) {
79
+ console.log('no window, return true');
80
+ return true;
81
+ }
82
+ iframeRef.current.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
83
+ console.log('send pause');
84
+ return true;
85
+ }
67
86
  return false;
68
87
  };
69
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isEditModeAndHidden && (0, jsx_runtime_1.jsx)(S_HiddenCover_1.S_HiddenCover, {}), (0, jsx_runtime_1.jsx)(S_CB_AnimationObserverBox_1.S_CB_AnimationObserverBox, __assign({ ref: hasEffect ? cbRef : null, effectVisibleStyle: effectVisibleStyle }, { children: (0, jsx_runtime_1.jsx)(S_CB_BoxWithShadow_1.S_CB_BoxWithShadow, __assign({ ref: autoplayRef, className: "cb-layout-box", normalStyle: __assign(__assign(__assign(__assign({}, propsStyle), layoutStyle), effectCssProperties), bgColorStyle), hoverStyle: __assign(__assign({}, propsHoverStyle), bgColorHoverStyle), cbStylePropsShadowSpecs: CB_STYLE_PROP_SHADOW, device: device }, { children: isEditMode ? ((0, jsx_runtime_1.jsxs)(S_ThumbnailBox, { children: [(0, jsx_runtime_1.jsx)(YoutubeButton, {}), (0, jsx_runtime_1.jsx)(S_Thumbnail, { src: thumbnailSrc })] })) : ((0, jsx_runtime_1.jsx)(S_Iframe, { title: id, src: shouldAutoPlay() ? getAutoplaySrc(youtubeSrc) : youtubeSrc, allow: "accelerometer; encrypted-media; gyroscope; picture-in-picture" })) })) }))] }));
88
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isEditModeAndHidden && (0, jsx_runtime_1.jsx)(S_HiddenCover_1.S_HiddenCover, {}), (0, jsx_runtime_1.jsx)(S_CB_AnimationObserverBox_1.S_CB_AnimationObserverBox, __assign({ ref: hasEffect ? cbRef : null, effectVisibleStyle: effectVisibleStyle }, { children: (0, jsx_runtime_1.jsx)(S_CB_BoxWithShadow_1.S_CB_BoxWithShadow, __assign({ ref: autoplayRef, className: "cb-layout-box", normalStyle: __assign(__assign(__assign(__assign({}, propsStyle), layoutStyle), effectCssProperties), bgColorStyle), hoverStyle: __assign(__assign({}, propsHoverStyle), bgColorHoverStyle), cbStylePropsShadowSpecs: CB_STYLE_PROP_SHADOW, device: device }, { children: isEditMode ? ((0, jsx_runtime_1.jsxs)(S_ThumbnailBox, { children: [(0, jsx_runtime_1.jsx)(YoutubeButton, {}), (0, jsx_runtime_1.jsx)(S_Thumbnail, { src: thumbnailSrc })] })) : ((0, jsx_runtime_1.jsx)(S_Iframe, { ref: iframeRef, title: id, src: shouldAutoPlay() ? getAutoplaySrc(youtubeSrc, youtubeAutoplayMode) : youtubeSrc, allow: "accelerometer; encrypted-media; gyroscope; picture-in-picture" })) })) }))] }));
70
89
  }
71
90
  function getBGColorStyles(props, device) {
72
91
  var availableSpecCodes = [
@@ -88,12 +107,17 @@ var S_YoutubeButton = styled_components_1.default.div(templateObject_4 || (templ
88
107
  function YoutubeButton() {
89
108
  return ((0, jsx_runtime_1.jsx)(S_YoutubeButton, { children: (0, jsx_runtime_1.jsxs)("svg", __assign({ height: "100%", version: "1.1", viewBox: "0 0 68 48", width: "100%" }, { children: [(0, jsx_runtime_1.jsx)("path", { className: "ytp-large-play-button-bg", d: "M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z", fill: "#f00" }), (0, jsx_runtime_1.jsx)("path", { d: "M 45,24 27,14 27,34", fill: "#fff" })] })) }));
90
109
  }
91
- function getAutoplaySrc(youtubeSrc) {
110
+ function getAutoplaySrc(youtubeSrc, youtubeAutoplayMode) {
92
111
  try {
93
112
  var url = new URL(youtubeSrc);
94
113
  if (url.hostname.includes('youtube.com') || url.hostname.includes('youtu.be')) {
95
114
  var id = utils_1.YouTubeLinkParser.getId(youtubeSrc);
96
- url.searchParams.set('autoplay', '1');
115
+ if (youtubeAutoplayMode === 'VIEWPORT') {
116
+ url.searchParams.set('enablejsapi', '1');
117
+ }
118
+ else {
119
+ url.searchParams.set('autoplay', '1');
120
+ }
97
121
  url.searchParams.set('mute', '1');
98
122
  url.searchParams.set('loop', '1');
99
123
  url.searchParams.set('playlist', "".concat(id));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pds-dev-kit-web-test",
3
- "version": "0.3.10",
3
+ "version": "0.3.12",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
package/release-note.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # pds-dev-kit-web-test Release Notes
2
- ## [v0.3.10]
2
+ ## [v0.3.12]
3
3
  ## 기준 pds-dev-kit-web 버전 @2.2.34
4
4
  ### sub
5
5
  * DynamicLayout
6
- * youtube CB autoplay mode 3가지 개발
6
+ * fix - VIEWPORT진입 전에도 재생되는 이슈