@mhmdhammoud/meritt-utils 1.1.0 → 1.2.0

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.
@@ -0,0 +1,23 @@
1
+ declare class ImageFull {
2
+ /**
3
+ * @remarks
4
+ * Receives either a className or an id or an element and returns a promise that resolves when all images are loaded
5
+ * @param selector - either a className or an id or an element that contains images
6
+ * @example
7
+ * ```ts
8
+ * .image-container
9
+ * #image-container
10
+ * img //as an element
11
+ *
12
+ * Imagefull.preloadImages('.image-container').then((event) => {
13
+ * do something
14
+ * })
15
+ * ```
16
+ *
17
+ * @returns Promise<ImagesLoaded | undefined>
18
+ *
19
+ */
20
+ preloadImages: (selector: string) => Promise<unknown>;
21
+ }
22
+ declare const imagefull: ImageFull;
23
+ export default imagefull;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const imagesloaded_1 = __importDefault(require("imagesloaded"));
7
+ /*
8
+ Author : Mustafa Halabi https://github.com/mustafahalabi
9
+ Date : 2024-01-29
10
+ Description : Loads images and returns a promise
11
+ Version : 1.0
12
+ */
13
+ class ImageFull {
14
+ constructor() {
15
+ /**
16
+ * @remarks
17
+ * Receives either a className or an id or an element and returns a promise that resolves when all images are loaded
18
+ * @param selector - either a className or an id or an element that contains images
19
+ * @example
20
+ * ```ts
21
+ * .image-container
22
+ * #image-container
23
+ * img //as an element
24
+ *
25
+ * Imagefull.preloadImages('.image-container').then((event) => {
26
+ * do something
27
+ * })
28
+ * ```
29
+ *
30
+ * @returns Promise<ImagesLoaded | undefined>
31
+ *
32
+ */
33
+ this.preloadImages = (selector) => {
34
+ return new Promise((resolve) => {
35
+ (0, imagesloaded_1.default)(document.querySelectorAll(selector), { background: true }, (event) => {
36
+ resolve(event);
37
+ });
38
+ });
39
+ };
40
+ }
41
+ }
42
+ const imagefull = new ImageFull();
43
+ exports.default = imagefull;
@@ -2,3 +2,4 @@ export { default as Crypto } from './cypto';
2
2
  export { default as Formatter } from './formatter';
3
3
  export { default as Pdf } from './formatter';
4
4
  export { default as Colorful } from './colorful';
5
+ export { default as ImageFull } from './imagefull';
package/dist/lib/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Colorful = exports.Pdf = exports.Formatter = exports.Crypto = void 0;
6
+ exports.ImageFull = exports.Colorful = exports.Pdf = exports.Formatter = exports.Crypto = void 0;
7
7
  var cypto_1 = require("./cypto");
8
8
  Object.defineProperty(exports, "Crypto", { enumerable: true, get: function () { return __importDefault(cypto_1).default; } });
9
9
  var formatter_1 = require("./formatter");
@@ -12,3 +12,5 @@ var formatter_2 = require("./formatter");
12
12
  Object.defineProperty(exports, "Pdf", { enumerable: true, get: function () { return __importDefault(formatter_2).default; } });
13
13
  var colorful_1 = require("./colorful");
14
14
  Object.defineProperty(exports, "Colorful", { enumerable: true, get: function () { return __importDefault(colorful_1).default; } });
15
+ var imagefull_1 = require("./imagefull");
16
+ Object.defineProperty(exports, "ImageFull", { enumerable: true, get: function () { return __importDefault(imagefull_1).default; } });
@@ -0,0 +1,66 @@
1
+ /// <reference types="jquery" />
2
+
3
+ declare namespace ImagesLoaded {
4
+ type ElementSelector = Element | NodeList | Element[] | string
5
+
6
+ /** interface for an image currently loading or completed */
7
+ interface LoadingImage {
8
+ img: HTMLImageElement
9
+ isLoaded: boolean
10
+ }
11
+
12
+ interface ImagesLoadedCallback {
13
+ (instance?: ImagesLoaded): void
14
+ }
15
+
16
+ interface ImagesLoadedListener {
17
+ (instance: ImagesLoaded, image?: LoadingImage): void
18
+ }
19
+
20
+ interface ImagesLoaded {
21
+ new (elem: ElementSelector, callback: ImagesLoadedCallback): ImagesLoaded
22
+
23
+ images: LoadingImage[]
24
+
25
+ // event listeners
26
+ on(event: string, listener: ImagesLoadedListener): void
27
+ off(event: string, listener: ImagesLoadedListener): void
28
+ once(event: string, listener: ImagesLoadedListener): void
29
+ progressedCount: number | undefined
30
+ }
31
+
32
+ interface ImagesLoadedOptions {
33
+ background: true | string
34
+ }
35
+
36
+ interface ImagesLoadedConstructor {
37
+ /**
38
+ * Creates a new ImagesLoaded object with the provided callback
39
+ * @param elem Element, NodeList, Element array, or selector string for images to watch
40
+ * @param options object that can tell imagesloaded to watch background images as well
41
+ * @param callback function triggered after all images have been loaded
42
+ */
43
+ (
44
+ elem: ElementSelector,
45
+ options: ImagesLoadedOptions,
46
+ callback?: ImagesLoadedCallback
47
+ ): ImagesLoaded
48
+ (elem: ElementSelector, callback?: ImagesLoadedCallback): ImagesLoaded
49
+ }
50
+ }
51
+
52
+ declare var imagesLoaded: ImagesLoaded.ImagesLoadedConstructor
53
+
54
+ declare module 'imagesloaded' {
55
+ export = imagesLoaded
56
+ }
57
+
58
+ interface JQuery {
59
+ imagesLoaded(
60
+ callback?: ImagesLoaded.ImagesLoadedCallback
61
+ ): JQueryDeferred<ImagesLoaded.ImagesLoaded>
62
+ imagesLoaded(
63
+ options: ImagesLoaded.ImagesLoadedOptions,
64
+ callback?: ImagesLoaded.ImagesLoadedCallback
65
+ ): JQueryDeferred<ImagesLoaded.ImagesLoaded>
66
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhmdhammoud/meritt-utils",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "private": false,
@@ -39,6 +39,7 @@
39
39
  "author": "Mhmdhammoud",
40
40
  "license": "ISC",
41
41
  "dependencies": {
42
- "axios": "^1.4.0"
42
+ "axios": "^1.4.0",
43
+ "imagesloaded": "^5.0.0"
43
44
  }
44
45
  }
@@ -0,0 +1,41 @@
1
+ import imagesLoaded from 'imagesloaded'
2
+ /*
3
+ Author : Mustafa Halabi https://github.com/mustafahalabi
4
+ Date : 2024-01-29
5
+ Description : Loads images and returns a promise
6
+ Version : 1.0
7
+ */
8
+ class ImageFull {
9
+ /**
10
+ * @remarks
11
+ * Receives either a className or an id or an element and returns a promise that resolves when all images are loaded
12
+ * @param selector - either a className or an id or an element that contains images
13
+ * @example
14
+ * ```ts
15
+ * .image-container
16
+ * #image-container
17
+ * img //as an element
18
+ *
19
+ * Imagefull.preloadImages('.image-container').then((event) => {
20
+ * do something
21
+ * })
22
+ * ```
23
+ *
24
+ * @returns Promise<ImagesLoaded | undefined>
25
+ *
26
+ */
27
+ preloadImages = (selector: string) => {
28
+ return new Promise((resolve) => {
29
+ imagesLoaded(
30
+ document.querySelectorAll(selector),
31
+ {background: true},
32
+ (event) => {
33
+ resolve(event)
34
+ }
35
+ )
36
+ })
37
+ }
38
+ }
39
+
40
+ const imagefull = new ImageFull()
41
+ export default imagefull
package/src/lib/index.ts CHANGED
@@ -2,3 +2,4 @@ export {default as Crypto} from './cypto'
2
2
  export {default as Formatter} from './formatter'
3
3
  export {default as Pdf} from './formatter'
4
4
  export {default as Colorful} from './colorful'
5
+ export {default as ImageFull} from './imagefull'