@blackbyte/sugar 1.0.0-beta.17 → 1.0.0-beta.19
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/dist/js/dom/when/whenInViewport.d.ts +3 -0
- package/dist/js/dom/when/whenInViewport.js +11 -0
- package/dist/js/dom/when/whenInViewport.js.map +1 -1
- package/dist/shared/url/_exports.d.ts +2 -1
- package/dist/shared/url/_exports.js +2 -1
- package/dist/shared/url/_exports.js.map +1 -1
- package/dist/shared/url/getVimeoVideoIdFromUrl.d.ts +26 -0
- package/dist/shared/url/getVimeoVideoIdFromUrl.js +34 -0
- package/dist/shared/url/getVimeoVideoIdFromUrl.js.map +1 -0
- package/package.json +1 -1
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
* @feature Some settings available to tweak the behavior
|
|
13
13
|
*
|
|
14
14
|
* @setting {String} [offset='10px'] An offset to detect sooner or later the element entering in the viewport
|
|
15
|
+
* @setting {Function} [whenIn] A callback function to call when the element enter the viewport
|
|
16
|
+
* @setting {Function} [whenOut] A callback function to call when the element leave the viewport
|
|
17
|
+
* @setting {Boolean} [once=true] Specify if the promise should be resolved only once (the first time the element enter the viewport)
|
|
15
18
|
*
|
|
16
19
|
* @param {HTMLElement} $elm The element to monitor
|
|
17
20
|
* @param {Partial<TWhenInViewportSettings>} [settings={}] Some settings to tweak the detection behavior
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import { isInViewport } from '@blackbyte/sugar/is';
|
|
1
2
|
import uniqid from '../../string/uniqid.js';
|
|
2
3
|
const whenInViewportStatuses = new WeakMap();
|
|
3
4
|
class CancelablePromise extends Promise {
|
|
4
5
|
cancel() { }
|
|
5
6
|
}
|
|
6
7
|
export default function whenInViewport($elm, settings) {
|
|
8
|
+
var _a;
|
|
7
9
|
const finalSettings = Object.assign({ offset: '10px', once: true, whenIn: undefined, whenOut: undefined }, (settings !== null && settings !== void 0 ? settings : {}));
|
|
10
|
+
// if the element is already in the viewport, resolve immediately
|
|
11
|
+
if (isInViewport($elm)) {
|
|
12
|
+
// trigger the "whenIn" callback
|
|
13
|
+
(_a = finalSettings.whenIn) === null || _a === void 0 ? void 0 : _a.call(finalSettings, $elm);
|
|
14
|
+
// stop here if the "once" setting is true
|
|
15
|
+
if (finalSettings.once) {
|
|
16
|
+
return Promise.resolve($elm);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
8
19
|
let observer;
|
|
9
20
|
function getRootMargin() {
|
|
10
21
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whenInViewport.js","sourceRoot":"","sources":["../../../../src/js/dom/when/whenInViewport.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"whenInViewport.js","sourceRoot":"","sources":["../../../../src/js/dom/when/whenInViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import getVimeoVideoIdFromUrl from './getVimeoVideoIdFromUrl.js';
|
|
1
2
|
import getYoutubeVideoIdFromUrl from './getYoutubeVideoIdFromUrl.js';
|
|
2
3
|
import gravatarUrl from './gravatarUrl.js';
|
|
3
4
|
import parseSchema from './parseSchema.js';
|
|
4
5
|
import queryStringToObject from './queryStringToObject.js';
|
|
5
6
|
import urlFromString from './urlFromString.js';
|
|
6
|
-
export { getYoutubeVideoIdFromUrl as __getYoutubeVideoIdFromUrl, gravatarUrl as __gravatarUrl, parseSchema as __parseSchema, queryStringToObject as __queryStringToObject, urlFromString as __urlFromString, getYoutubeVideoIdFromUrl, gravatarUrl, parseSchema, queryStringToObject, urlFromString, };
|
|
7
|
+
export { getVimeoVideoIdFromUrl as __getVimeoVideoIdFromUrl, getYoutubeVideoIdFromUrl as __getYoutubeVideoIdFromUrl, gravatarUrl as __gravatarUrl, parseSchema as __parseSchema, queryStringToObject as __queryStringToObject, urlFromString as __urlFromString, getVimeoVideoIdFromUrl, getYoutubeVideoIdFromUrl, gravatarUrl, parseSchema, queryStringToObject, urlFromString, };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import getVimeoVideoIdFromUrl from './getVimeoVideoIdFromUrl.js';
|
|
1
2
|
import getYoutubeVideoIdFromUrl from './getYoutubeVideoIdFromUrl.js';
|
|
2
3
|
import gravatarUrl from './gravatarUrl.js';
|
|
3
4
|
import parseSchema from './parseSchema.js';
|
|
4
5
|
import queryStringToObject from './queryStringToObject.js';
|
|
5
6
|
import urlFromString from './urlFromString.js';
|
|
6
|
-
export { getYoutubeVideoIdFromUrl as __getYoutubeVideoIdFromUrl, gravatarUrl as __gravatarUrl, parseSchema as __parseSchema, queryStringToObject as __queryStringToObject, urlFromString as __urlFromString, getYoutubeVideoIdFromUrl, gravatarUrl, parseSchema, queryStringToObject, urlFromString, };
|
|
7
|
+
export { getVimeoVideoIdFromUrl as __getVimeoVideoIdFromUrl, getYoutubeVideoIdFromUrl as __getYoutubeVideoIdFromUrl, gravatarUrl as __gravatarUrl, parseSchema as __parseSchema, queryStringToObject as __queryStringToObject, urlFromString as __urlFromString, getVimeoVideoIdFromUrl, getYoutubeVideoIdFromUrl, gravatarUrl, parseSchema, queryStringToObject, urlFromString, };
|
|
7
8
|
//# sourceMappingURL=_exports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_exports.js","sourceRoot":"","sources":["../../../src/shared/url/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AACrE,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,wBAAwB,IAAI,0BAA0B,EACtD,WAAW,IAAI,aAAa,EAC5B,WAAW,IAAI,aAAa,EAC5B,mBAAmB,IAAI,qBAAqB,EAC5C,aAAa,IAAI,eAAe,EAChC,wBAAwB,EACxB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,aAAa,GACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"_exports.js","sourceRoot":"","sources":["../../../src/shared/url/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AACjE,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AACrE,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,sBAAsB,IAAI,wBAAwB,EAClD,wBAAwB,IAAI,0BAA0B,EACtD,WAAW,IAAI,aAAa,EAC5B,WAAW,IAAI,aAAa,EAC5B,mBAAmB,IAAI,qBAAqB,EAC5C,aAAa,IAAI,eAAe,EAChC,sBAAsB,EACtB,wBAAwB,EACxB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,aAAa,GACd,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name getVimeoVideoIdFromUrl
|
|
3
|
+
* @namespace shared.url
|
|
4
|
+
* @type Function
|
|
5
|
+
* @platform js
|
|
6
|
+
* @platform node
|
|
7
|
+
* @status stable
|
|
8
|
+
*
|
|
9
|
+
* Return a Vimeo video ID extracted from the given URL
|
|
10
|
+
*
|
|
11
|
+
* @param {String} url The Vimeo video URL
|
|
12
|
+
* @return {String|null} The extracted video ID or null if not found
|
|
13
|
+
*
|
|
14
|
+
* @todo tests
|
|
15
|
+
*
|
|
16
|
+
* @snippet getVimeoVideoIdFromUrl($1)
|
|
17
|
+
*
|
|
18
|
+
* @example js
|
|
19
|
+
* import { getVimeoVideoIdFromUrl } from '@blackbyte/sugar/url';
|
|
20
|
+
* getVimeoVideoIdFromUrl('https://vimeo.com/123456789'); // 123456789
|
|
21
|
+
*
|
|
22
|
+
* @see https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
25
|
+
*/
|
|
26
|
+
export default function getVimeoVideoIdFromUrl(url: string): string | null;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name getVimeoVideoIdFromUrl
|
|
3
|
+
* @namespace shared.url
|
|
4
|
+
* @type Function
|
|
5
|
+
* @platform js
|
|
6
|
+
* @platform node
|
|
7
|
+
* @status stable
|
|
8
|
+
*
|
|
9
|
+
* Return a Vimeo video ID extracted from the given URL
|
|
10
|
+
*
|
|
11
|
+
* @param {String} url The Vimeo video URL
|
|
12
|
+
* @return {String|null} The extracted video ID or null if not found
|
|
13
|
+
*
|
|
14
|
+
* @todo tests
|
|
15
|
+
*
|
|
16
|
+
* @snippet getVimeoVideoIdFromUrl($1)
|
|
17
|
+
*
|
|
18
|
+
* @example js
|
|
19
|
+
* import { getVimeoVideoIdFromUrl } from '@blackbyte/sugar/url';
|
|
20
|
+
* getVimeoVideoIdFromUrl('https://vimeo.com/123456789'); // 123456789
|
|
21
|
+
*
|
|
22
|
+
* @see https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
25
|
+
*/
|
|
26
|
+
export default function getVimeoVideoIdFromUrl(url) {
|
|
27
|
+
const regex = /(https?:\/\/)?(www.)?(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/;
|
|
28
|
+
const match = url.match(regex);
|
|
29
|
+
if (!(match === null || match === void 0 ? void 0 : match[0])) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return match[5];
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=getVimeoVideoIdFromUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getVimeoVideoIdFromUrl.js","sourceRoot":"","sources":["../../../src/shared/url/getVimeoVideoIdFromUrl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,GAAW;IACxD,MAAM,KAAK,GACT,0EAA0E,CAAC;IAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAA,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAW,CAAC;AAC5B,CAAC"}
|