@smoud/playable-sdk 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -377,8 +377,9 @@ Get started quickly with our template projects:
377
377
  #### MRAID Networks
378
378
 
379
379
  - [MRAID 3.0](https://www.iab.com/wp-content/uploads/2017/07/MRAID_3.0_FINAL.pdf)
380
- - [IronSource - MRAID requirements](https://developers.is.com/ironsource-mobile/general/mraid-requirements/#step-1)
381
380
  - [IronSource - Interactive ad creative requirements](https://developers.is.com/ironsource-mobile/general/interactive-requirements/#step-1)
381
+ - [IronSource - MRAID requirements](https://developers.is.com/ironsource-mobile/general/mraid-requirements/#step-1)
382
+ - [IronSource - DAPI requirements](https://developers.is.com/ironsource-mobile/general/dapi-requirements/#step-1)
382
383
  - [Unity Ads Documentation](https://docs.unity.com/acquire/en-us/manual/playable-ads-specifications)
383
384
  - [Chartboost Integration](https://docs.chartboost.com/en/advertising/creatives/creative-assets/)
384
385
 
@@ -397,7 +398,7 @@ Get started quickly with our template projects:
397
398
  - [Vungle Creative QA](https://vungle.com/creative-verifier/)
398
399
  - [Facebook Playable Preview Tool](https://developers.facebook.com/tools/playable-preview/)
399
400
  - [Google HTML5 Validator](https://h5validator.appspot.com/adwords/asset)
400
- - [IronSource Integration Validation](https://developers.is.com/ironsource-mobile/general/test-suite/)
401
+ - [IronSource - Submit an HTML asset for review](https://developers.is.com/ironsource-mobile/general/html-upload/)
401
402
  - [Mintegral Testing Tool](https://www.playturbo.com/review)
402
403
 
403
404
  ## Issues
package/defines.d.ts CHANGED
@@ -13,6 +13,7 @@ declare const mraid: {
13
13
  getMaxSize: () => { width: number; height: number };
14
14
  openStoreUrl: () => void;
15
15
  open: (url: string) => void;
16
+ getAudioVolume: () => number;
16
17
  preloadStore?: () => void;
17
18
  };
18
19
 
package/dist/esm/index.js CHANGED
@@ -12,7 +12,7 @@ function onEvent(event, fn, context, once) {
12
12
  function offEvent(event, fn, context) {
13
13
  const listeners = registeredEvents[event];
14
14
  if (!listeners) return;
15
- var fnArray = listeners.list;
15
+ const fnArray = listeners.list;
16
16
  if (!fn) {
17
17
  fnArray.length = 0;
18
18
  } else {
@@ -29,12 +29,12 @@ function offEvent(event, fn, context) {
29
29
  }
30
30
  }
31
31
  function emitEvent(event, a1, a2, a3) {
32
- var listeners = registeredEvents[event];
32
+ const listeners = registeredEvents[event];
33
33
  if (!listeners) return;
34
34
  const fnArray = listeners.list;
35
35
  const len = arguments.length;
36
36
  let fn, ctx;
37
- for (var i = 0; i < fnArray.length; i += 3) {
37
+ for (let i = 0; i < fnArray.length; i += 3) {
38
38
  fn = fnArray[i];
39
39
  ctx = fnArray[i + 1];
40
40
  if (fnArray[i + 2]) {
@@ -137,17 +137,21 @@ function bootAd() {
137
137
  emitEvent("ready");
138
138
  sdk.isReady = true;
139
139
  }
140
- function changeVolume(value) {
140
+ function fireVolumeChange(value) {
141
141
  emitEvent("volume", value);
142
142
  }
143
+ function changeVolume(value) {
144
+ sdk.volume = value;
145
+ fireVolumeChange(value);
146
+ }
143
147
  function handlePause() {
144
- changeVolume(0);
148
+ fireVolumeChange(0);
145
149
  sdk.isPaused = true;
146
150
  emitEvent("pause");
147
151
  }
148
152
  function handleResume() {
149
153
  if (isForcePaused) return;
150
- changeVolume(sdk.volume);
154
+ fireVolumeChange(sdk.volume);
151
155
  sdk.isPaused = false;
152
156
  emitEvent("resume");
153
157
  }
@@ -174,7 +178,7 @@ function dapiIsViewable(event) {
174
178
  if (sdk.isReady) {
175
179
  handleResume();
176
180
  } else {
177
- var screenSize = dapi.getScreenSize();
181
+ const screenSize = dapi.getScreenSize();
178
182
  screenSize.width = Math.floor(screenSize.width);
179
183
  screenSize.height = Math.floor(screenSize.height);
180
184
  bootAd();
@@ -191,16 +195,24 @@ function startMraidProtocol() {
191
195
  if (!isProtocolInitialized) {
192
196
  mraid.removeEventListener("ready", startMraidProtocol);
193
197
  mraid.addEventListener("viewableChange", function() {
194
- var isViewable = mraid.isViewable();
198
+ const isViewable = mraid.isViewable();
195
199
  mraidIsViewable(isViewable);
196
200
  });
197
201
  if (mraid.isViewable() || AD_NETWORK == "adcolony") {
198
202
  mraidIsViewable(true);
199
203
  }
204
+ if (mraid.getAudioVolume) {
205
+ const isAudioEnabled = mraid.getAudioVolume();
206
+ if (isAudioEnabled) {
207
+ changeVolume(1);
208
+ } else {
209
+ changeVolume(0);
210
+ }
211
+ }
200
212
  mraid.addEventListener("audioVolumeChange", function(newVolume) {
201
213
  if (newVolume !== null) {
202
214
  if (newVolume > 0) {
203
- changeVolume(sdk.volume);
215
+ changeVolume(1);
204
216
  } else {
205
217
  changeVolume(0);
206
218
  }
@@ -210,7 +222,7 @@ function startMraidProtocol() {
210
222
  console.log("mraid error: " + t + " action: " + e);
211
223
  });
212
224
  mraid.addEventListener("sizeChange", function() {
213
- var maxSize = mraid.getMaxSize();
225
+ const maxSize = mraid.getMaxSize();
214
226
  fireResizeEvent(maxSize.width, maxSize.height);
215
227
  });
216
228
  isProtocolInitialized = true;
@@ -220,17 +232,22 @@ function startDapiProtocol() {
220
232
  if ("dapi" !== AD_PROTOCOL) return;
221
233
  if (!isProtocolInitialized) {
222
234
  dapi.removeEventListener("ready", startDapiProtocol);
223
- dapi.getAudioVolume();
235
+ const isAudioEnabled = dapi.getAudioVolume();
236
+ if (isAudioEnabled) {
237
+ changeVolume(1);
238
+ } else {
239
+ changeVolume(0);
240
+ }
224
241
  dapi.addEventListener("audioVolumeChange", function(volume) {
225
- var isAudioEnabled = !!volume;
226
- if (isAudioEnabled) {
227
- changeVolume(sdk.volume);
242
+ const isAudioEnabled2 = !!volume;
243
+ if (isAudioEnabled2) {
244
+ changeVolume(1);
228
245
  } else {
229
246
  changeVolume(0);
230
247
  }
231
248
  });
232
249
  dapi.addEventListener("adResized", function(event) {
233
- var maxSize = dapi.getScreenSize();
250
+ const maxSize = dapi.getScreenSize();
234
251
  fireResizeEvent(event.width || maxSize.width, event.height || maxSize.height);
235
252
  });
236
253
  if (dapi.isViewable()) {
@@ -269,7 +286,7 @@ function startDefaultProtocol() {
269
286
  handleResize();
270
287
  });
271
288
  if ("tapjoy" === AD_NETWORK && isTapjoy()) {
272
- var tapjoyApi = {
289
+ const tapjoyApi = {
273
290
  skipAd: function() {
274
291
  try {
275
292
  sdk.finish();
@@ -378,6 +395,7 @@ var _sdk = class _sdk {
378
395
  buildID: BUILD_HASH
379
396
  });
380
397
  }
398
+ fireVolumeChange(_sdk.volume);
381
399
  _sdk.resize();
382
400
  }
383
401
  }
@@ -572,7 +590,7 @@ var _sdk = class _sdk {
572
590
  }
573
591
  };
574
592
  /** Current version of the SDK */
575
- _sdk.version = "1.0.12";
593
+ _sdk.version = "1.0.13";
576
594
  /** Current maximum width of the playable ad container in pixels */
577
595
  _sdk.maxWidth = Math.floor(window.innerWidth);
578
596
  /** Current maximum height of the playable ad container in pixels */
@@ -14,7 +14,7 @@
14
14
  function offEvent(event, fn, context) {
15
15
  const listeners = registeredEvents[event];
16
16
  if (!listeners) return;
17
- var fnArray = listeners.list;
17
+ const fnArray = listeners.list;
18
18
  if (!fn) {
19
19
  fnArray.length = 0;
20
20
  } else {
@@ -31,12 +31,12 @@
31
31
  }
32
32
  }
33
33
  function emitEvent(event, a1, a2, a3) {
34
- var listeners = registeredEvents[event];
34
+ const listeners = registeredEvents[event];
35
35
  if (!listeners) return;
36
36
  const fnArray = listeners.list;
37
37
  const len = arguments.length;
38
38
  let fn, ctx;
39
- for (var i = 0; i < fnArray.length; i += 3) {
39
+ for (let i = 0; i < fnArray.length; i += 3) {
40
40
  fn = fnArray[i];
41
41
  ctx = fnArray[i + 1];
42
42
  if (fnArray[i + 2]) {
@@ -139,17 +139,21 @@
139
139
  emitEvent("ready");
140
140
  sdk.isReady = true;
141
141
  }
142
- function changeVolume(value) {
142
+ function fireVolumeChange(value) {
143
143
  emitEvent("volume", value);
144
144
  }
145
+ function changeVolume(value) {
146
+ sdk.volume = value;
147
+ fireVolumeChange(value);
148
+ }
145
149
  function handlePause() {
146
- changeVolume(0);
150
+ fireVolumeChange(0);
147
151
  sdk.isPaused = true;
148
152
  emitEvent("pause");
149
153
  }
150
154
  function handleResume() {
151
155
  if (isForcePaused) return;
152
- changeVolume(sdk.volume);
156
+ fireVolumeChange(sdk.volume);
153
157
  sdk.isPaused = false;
154
158
  emitEvent("resume");
155
159
  }
@@ -176,7 +180,7 @@
176
180
  if (sdk.isReady) {
177
181
  handleResume();
178
182
  } else {
179
- var screenSize = dapi.getScreenSize();
183
+ const screenSize = dapi.getScreenSize();
180
184
  screenSize.width = Math.floor(screenSize.width);
181
185
  screenSize.height = Math.floor(screenSize.height);
182
186
  bootAd();
@@ -193,16 +197,24 @@
193
197
  if (!isProtocolInitialized) {
194
198
  mraid.removeEventListener("ready", startMraidProtocol);
195
199
  mraid.addEventListener("viewableChange", function() {
196
- var isViewable = mraid.isViewable();
200
+ const isViewable = mraid.isViewable();
197
201
  mraidIsViewable(isViewable);
198
202
  });
199
203
  if (mraid.isViewable() || AD_NETWORK == "adcolony") {
200
204
  mraidIsViewable(true);
201
205
  }
206
+ if (mraid.getAudioVolume) {
207
+ const isAudioEnabled = mraid.getAudioVolume();
208
+ if (isAudioEnabled) {
209
+ changeVolume(1);
210
+ } else {
211
+ changeVolume(0);
212
+ }
213
+ }
202
214
  mraid.addEventListener("audioVolumeChange", function(newVolume) {
203
215
  if (newVolume !== null) {
204
216
  if (newVolume > 0) {
205
- changeVolume(sdk.volume);
217
+ changeVolume(1);
206
218
  } else {
207
219
  changeVolume(0);
208
220
  }
@@ -212,7 +224,7 @@
212
224
  console.log("mraid error: " + t + " action: " + e);
213
225
  });
214
226
  mraid.addEventListener("sizeChange", function() {
215
- var maxSize = mraid.getMaxSize();
227
+ const maxSize = mraid.getMaxSize();
216
228
  fireResizeEvent(maxSize.width, maxSize.height);
217
229
  });
218
230
  isProtocolInitialized = true;
@@ -222,17 +234,22 @@
222
234
  if ("dapi" !== AD_PROTOCOL) return;
223
235
  if (!isProtocolInitialized) {
224
236
  dapi.removeEventListener("ready", startDapiProtocol);
225
- dapi.getAudioVolume();
237
+ const isAudioEnabled = dapi.getAudioVolume();
238
+ if (isAudioEnabled) {
239
+ changeVolume(1);
240
+ } else {
241
+ changeVolume(0);
242
+ }
226
243
  dapi.addEventListener("audioVolumeChange", function(volume) {
227
- var isAudioEnabled = !!volume;
228
- if (isAudioEnabled) {
229
- changeVolume(sdk.volume);
244
+ const isAudioEnabled2 = !!volume;
245
+ if (isAudioEnabled2) {
246
+ changeVolume(1);
230
247
  } else {
231
248
  changeVolume(0);
232
249
  }
233
250
  });
234
251
  dapi.addEventListener("adResized", function(event) {
235
- var maxSize = dapi.getScreenSize();
252
+ const maxSize = dapi.getScreenSize();
236
253
  fireResizeEvent(event.width || maxSize.width, event.height || maxSize.height);
237
254
  });
238
255
  if (dapi.isViewable()) {
@@ -271,7 +288,7 @@
271
288
  handleResize();
272
289
  });
273
290
  if ("tapjoy" === AD_NETWORK && isTapjoy()) {
274
- var tapjoyApi = {
291
+ const tapjoyApi = {
275
292
  skipAd: function() {
276
293
  try {
277
294
  sdk.finish();
@@ -380,6 +397,7 @@
380
397
  buildID: BUILD_HASH
381
398
  });
382
399
  }
400
+ fireVolumeChange(_sdk.volume);
383
401
  _sdk.resize();
384
402
  }
385
403
  }
@@ -574,7 +592,7 @@
574
592
  }
575
593
  };
576
594
  /** Current version of the SDK */
577
- _sdk.version = "1.0.12";
595
+ _sdk.version = "1.0.13";
578
596
  /** Current maximum width of the playable ad container in pixels */
579
597
  _sdk.maxWidth = Math.floor(window.innerWidth);
580
598
  /** Current maximum height of the playable ad container in pixels */
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ function onEvent(event, fn, context, once) {
39
39
  function offEvent(event, fn, context) {
40
40
  const listeners = registeredEvents[event];
41
41
  if (!listeners) return;
42
- var fnArray = listeners.list;
42
+ const fnArray = listeners.list;
43
43
  if (!fn) {
44
44
  fnArray.length = 0;
45
45
  } else {
@@ -56,12 +56,12 @@ function offEvent(event, fn, context) {
56
56
  }
57
57
  }
58
58
  function emitEvent(event, a1, a2, a3) {
59
- var listeners = registeredEvents[event];
59
+ const listeners = registeredEvents[event];
60
60
  if (!listeners) return;
61
61
  const fnArray = listeners.list;
62
62
  const len = arguments.length;
63
63
  let fn, ctx;
64
- for (var i = 0; i < fnArray.length; i += 3) {
64
+ for (let i = 0; i < fnArray.length; i += 3) {
65
65
  fn = fnArray[i];
66
66
  ctx = fnArray[i + 1];
67
67
  if (fnArray[i + 2]) {
@@ -164,17 +164,21 @@ function bootAd() {
164
164
  emitEvent("ready");
165
165
  sdk.isReady = true;
166
166
  }
167
- function changeVolume(value) {
167
+ function fireVolumeChange(value) {
168
168
  emitEvent("volume", value);
169
169
  }
170
+ function changeVolume(value) {
171
+ sdk.volume = value;
172
+ fireVolumeChange(value);
173
+ }
170
174
  function handlePause() {
171
- changeVolume(0);
175
+ fireVolumeChange(0);
172
176
  sdk.isPaused = true;
173
177
  emitEvent("pause");
174
178
  }
175
179
  function handleResume() {
176
180
  if (isForcePaused) return;
177
- changeVolume(sdk.volume);
181
+ fireVolumeChange(sdk.volume);
178
182
  sdk.isPaused = false;
179
183
  emitEvent("resume");
180
184
  }
@@ -201,7 +205,7 @@ function dapiIsViewable(event) {
201
205
  if (sdk.isReady) {
202
206
  handleResume();
203
207
  } else {
204
- var screenSize = dapi.getScreenSize();
208
+ const screenSize = dapi.getScreenSize();
205
209
  screenSize.width = Math.floor(screenSize.width);
206
210
  screenSize.height = Math.floor(screenSize.height);
207
211
  bootAd();
@@ -218,16 +222,24 @@ function startMraidProtocol() {
218
222
  if (!isProtocolInitialized) {
219
223
  mraid.removeEventListener("ready", startMraidProtocol);
220
224
  mraid.addEventListener("viewableChange", function() {
221
- var isViewable = mraid.isViewable();
225
+ const isViewable = mraid.isViewable();
222
226
  mraidIsViewable(isViewable);
223
227
  });
224
228
  if (mraid.isViewable() || AD_NETWORK == "adcolony") {
225
229
  mraidIsViewable(true);
226
230
  }
231
+ if (mraid.getAudioVolume) {
232
+ const isAudioEnabled = mraid.getAudioVolume();
233
+ if (isAudioEnabled) {
234
+ changeVolume(1);
235
+ } else {
236
+ changeVolume(0);
237
+ }
238
+ }
227
239
  mraid.addEventListener("audioVolumeChange", function(newVolume) {
228
240
  if (newVolume !== null) {
229
241
  if (newVolume > 0) {
230
- changeVolume(sdk.volume);
242
+ changeVolume(1);
231
243
  } else {
232
244
  changeVolume(0);
233
245
  }
@@ -237,7 +249,7 @@ function startMraidProtocol() {
237
249
  console.log("mraid error: " + t + " action: " + e);
238
250
  });
239
251
  mraid.addEventListener("sizeChange", function() {
240
- var maxSize = mraid.getMaxSize();
252
+ const maxSize = mraid.getMaxSize();
241
253
  fireResizeEvent(maxSize.width, maxSize.height);
242
254
  });
243
255
  isProtocolInitialized = true;
@@ -247,17 +259,22 @@ function startDapiProtocol() {
247
259
  if ("dapi" !== AD_PROTOCOL) return;
248
260
  if (!isProtocolInitialized) {
249
261
  dapi.removeEventListener("ready", startDapiProtocol);
250
- dapi.getAudioVolume();
262
+ const isAudioEnabled = dapi.getAudioVolume();
263
+ if (isAudioEnabled) {
264
+ changeVolume(1);
265
+ } else {
266
+ changeVolume(0);
267
+ }
251
268
  dapi.addEventListener("audioVolumeChange", function(volume) {
252
- var isAudioEnabled = !!volume;
253
- if (isAudioEnabled) {
254
- changeVolume(sdk.volume);
269
+ const isAudioEnabled2 = !!volume;
270
+ if (isAudioEnabled2) {
271
+ changeVolume(1);
255
272
  } else {
256
273
  changeVolume(0);
257
274
  }
258
275
  });
259
276
  dapi.addEventListener("adResized", function(event) {
260
- var maxSize = dapi.getScreenSize();
277
+ const maxSize = dapi.getScreenSize();
261
278
  fireResizeEvent(event.width || maxSize.width, event.height || maxSize.height);
262
279
  });
263
280
  if (dapi.isViewable()) {
@@ -296,7 +313,7 @@ function startDefaultProtocol() {
296
313
  handleResize();
297
314
  });
298
315
  if ("tapjoy" === AD_NETWORK && isTapjoy()) {
299
- var tapjoyApi = {
316
+ const tapjoyApi = {
300
317
  skipAd: function() {
301
318
  try {
302
319
  sdk.finish();
@@ -405,6 +422,7 @@ var _sdk = class _sdk {
405
422
  buildID: BUILD_HASH
406
423
  });
407
424
  }
425
+ fireVolumeChange(_sdk.volume);
408
426
  _sdk.resize();
409
427
  }
410
428
  }
@@ -599,7 +617,7 @@ var _sdk = class _sdk {
599
617
  }
600
618
  };
601
619
  /** Current version of the SDK */
602
- _sdk.version = "1.0.12";
620
+ _sdk.version = "1.0.13";
603
621
  /** Current maximum width of the playable ad container in pixels */
604
622
  _sdk.maxWidth = Math.floor(window.innerWidth);
605
623
  /** Current maximum height of the playable ad container in pixels */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smoud/playable-sdk",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "It's unified Playable SDK that supports MRAID, Google, Facebook, Vungle, and many more Ad Networks, simplifying playable ad development with a standardized interface for seamless cross-network compatibility.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",