diff --git a/.gitignore b/.gitignore
index 67a35a4..4f5ba0b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,12 @@
-/node_modules
-.DS_Store
-.idea
-/.idea
-dist
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-package-lock.json
-examples/tests
-
-
+/node_modules
+.DS_Store
+.idea
+/.idea
+dist
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+package-lock.json
+examples/tests
+
+
diff --git a/.npmignore b/.npmignore
index 739cdec..3b8812e 100644
--- a/.npmignore
+++ b/.npmignore
@@ -1,8 +1,8 @@
-# .npmignore
-src
-examples
-config
-build
-.babelrc
-.gitignore
+# .npmignore
+src
+examples
+config
+build
+.babelrc
+.gitignore
.idea
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 38a664c..0e065bb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,86 +1,90 @@
-# Changelog
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-Types of changes:
-- `Added` for new features.
-- `Changed` for changes in existing functionality.
-- `Deprecated` for soon-to-be removed features.
-- `Removed` for now removed features.
-- `Fixed` for any bug fixes.
-- `Security` in case of vulnerabilities.
-
-> Date format: YYYY-MM-DD
-
-> If we have some "Breaking changes" we can mark it in message by `**BREAKING**` preffix, like:
-> `- **BREAKING**: Some message`
-
--------------
-
-## TODOs
-> Todo list for future
-
-- ...
-
--------------
-## 4.8.2 - 2021-11-08
-
-### Fixed
-- possibility to remove API version in blur-hash, low-preview, wp and plain
-## 4.8.1 - 2021-08-17
-
-### fixed
-
-- Minifying build in low preview
-## 4.8.0 - 2021-06-16
-
-### Deprecated
-
-Property **ignoreNodeImgSize** is deprecated. Use **imageSizeAttributes: 'ignore'** instead
-
-### Added
-- new property: **imageSizeAttributes**
-## 4.7.0 - 2020-02-23
-### added
-- add custom root element to process function
-- process result coudimage URL before inserting into dom (plain version only)
-
-### fixed
-- banners in build files
-
-## 4.6.8 - 2020-02-04
-### fixed
-- problem with background images with no children
-
-## 4.6.7 - 2020-02-03
-### fixed
-- problem with rendering images inside background image
-
-## 4.6.6 - 2020-1-20
-### updated
-- highlight js
-
-## 4.6.5 - 2020-11-09
-### updated
-- utils version to add src to each size
-
-## 4.6.4 - 2020-11-04
-### updated
-- utils version to fix getComputed function
-## 4.6.3 - 2020-11-02
-### updated
-- utils version to enable params by queries
-
-## 4.6.2 - 2020-11-02
-### updated
-- utils version
-
-## 4.6.1 - 2020-09-03
-### Fixed
-- background images doesn't appear
-
-## 4.6.0 - 2020-07-27
-### Added
-- possibility to change cloudimage responsive selector
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+Types of changes:
+- `Added` for new features.
+- `Changed` for changes in existing functionality.
+- `Deprecated` for soon-to-be removed features.
+- `Removed` for now removed features.
+- `Fixed` for any bug fixes.
+- `Security` in case of vulnerabilities.
+
+> Date format: YYYY-MM-DD
+
+> If we have some "Breaking changes" we can mark it in message by `**BREAKING**` preffix, like:
+> `- **BREAKING**: Some message`
+
+-------------
+
+## TODOs
+> Todo list for future
+
+- ...
+
+-------------
+## 4.8.3 - 2021-12-09
+### Fixed
+- img-src starts with "//"
+
+## 4.8.2 - 2021-11-08
+
+### Fixed
+- possibility to remove API version in blur-hash, low-preview, wp and plain
+## 4.8.1 - 2021-08-17
+
+### fixed
+
+- Minifying build in low preview
+## 4.8.0 - 2021-06-16
+
+### Deprecated
+
+Property **ignoreNodeImgSize** is deprecated. Use **imageSizeAttributes: 'ignore'** instead
+
+### Added
+- new property: **imageSizeAttributes**
+## 4.7.0 - 2020-02-23
+### added
+- add custom root element to process function
+- process result coudimage URL before inserting into dom (plain version only)
+
+### fixed
+- banners in build files
+
+## 4.6.8 - 2020-02-04
+### fixed
+- problem with background images with no children
+
+## 4.6.7 - 2020-02-03
+### fixed
+- problem with rendering images inside background image
+
+## 4.6.6 - 2020-1-20
+### updated
+- highlight js
+
+## 4.6.5 - 2020-11-09
+### updated
+- utils version to add src to each size
+
+## 4.6.4 - 2020-11-04
+### updated
+- utils version to fix getComputed function
+## 4.6.3 - 2020-11-02
+### updated
+- utils version to enable params by queries
+
+## 4.6.2 - 2020-11-02
+### updated
+- utils version
+
+## 4.6.1 - 2020-09-03
+### Fixed
+- background images doesn't appear
+
+## 4.6.0 - 2020-07-27
+### Added
+- possibility to change cloudimage responsive selector
diff --git a/LICENSE b/LICENSE
index ee8855c..82800cb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2019 scaleflex
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2019 scaleflex
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README-BLUR-HASH.md b/README-BLUR-HASH.md
index 75010a8..97f3683 100644
--- a/README-BLUR-HASH.md
+++ b/README-BLUR-HASH.md
@@ -1,566 +1,566 @@
-[![Release](https://img.shields.io/badge/release-v4.8.2-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
-[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
-[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
-[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
-[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
-
-## VERSIONS
-
-* [__Low Quality Preview__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README.md)
-* __Blur Hash__
-* [__Plain (CSS free)__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-PLAIN.md)
-
-
-
-
-
-
- JS Cloudimage Responsive | Cloudimage v7
-
-
-
- (blur-hash version)
-
-
-[Documentation for v2 | Cloudimage v6](https://github.com/scaleflex/js-cloudimage-responsive/blob/v7/README_v6.md)
-
-
-
-This plugin detects the width of any image container as well as the device pixel ratio
-density to load the optimal image size needed.
-Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
-automated image optimization service.
-
-When an image is first loaded on your website or mobile app,
-Cloudimage's resizing servers will download the origin image from
-the source, resize it for the client's screen size and deliver to your users through one or multiple
-Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
-
-**NOTE:** Your original (master) images should be stored on a server
-or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
-HTTP or HTTPS by Cloudimage. If you want to upload your master images to
-Cloudimage, contact us at
-[hello@cloudimage.io](mailto:hello@cloudimage.io).
-
-
-
-
-
-powered by [Cloudimage](https://www.cloudimage.io/)
-([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
-
-## Table of contents
-
-* [Demo](#demo)
-* [Requirements](#requirements)
-* [Step 1: Installation](#installation)
-* [Step 2: Initialize](#initialize)
-* [Step 3: Implement](#implement)
-* [Step 4: Prevent seeing broken images](#prevent_styles)
-* [Configuration](#configuration)
-* [Image properties](#image_properties)
-* [Lazy loading](#lazy_loading)
-* [Process dynamically loaded images](#dynamically-loaded)
-* [Examples & workarounds](#examples_workarounds)
-* [Browser support](#browser_support)
-* [Filerobot UI Family](#ui_family)
-* [Contributing](#contributing)
-* [License](#license)
-
-
-## Demo
-
-To see the Cloudimage Responsive plugin in action, please check out the
-[Demo page](https://cdn.scaleflex.it/plugins/js-cloudimage-responsive/demo/blur-hash/index.html?v=28.04.2020_2).
-Play with your browser's window size and observe your
-Inspector's Network tab to see how Cloudimage delivers the optimal
-image size to your browser, hence accelerating the overall page
-loading time.
-
-## Requirements
-
-### Cloudimage account
-
-To use the Cloudimage Responsive plugin, you will need a
-Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
-registering [here](https://www.cloudimage.io/en/register_page).
-Once your token is created, you can configure it as described below.
-This token allows you to use 25GB of image cache and 25GB of worldwide
-CDN traffic per month for free.
-
-### Layout/CSS
-
-In order to use smooth transition between preview image and good quality and size image, the plugin uses absolute positioning for images and wraps an image tag with div element with relative positioning.
-
-You have to pay attention on the following things:
-
-- the plugin sets 100% width for img tag and position absolute (You should not apply other sizes or change position property. If you need to change width of image or position, you have to set it to wrapper)
-
-## Step 1: Installation
-
-Add script tag with CDN link to js-cloudimage-responsive
-
-```javascript
-
-```
-
-or using npm
-
-```
-$ npm install --save js-cloudimage-responsive
-```
-
-## Step 2: Initialize
-
-After adding the js-cloudimage-responsive lib, simply iniatialize it with your **token** and the **baseURL** of your image storage:
-
-```javascript
-
-```
-
-or in new style with npm:
-
-```javascript
-
-import 'js-cloudimage-responsive/blur-hash';
-
-const ciResponsive = new window.CIResponsive({
- token: 'demo',
- baseURL: 'https://cloudimage.public.airstore.io/demo/' // optional
-});
-```
-
-**NOTE**: You should put the scripts below all your content in the body tag and above all other scripts. After inserting the scripts the plugin starts immediately processing all images with ci-src, ci-bg-url attributes. (If the scripts are put into the head tag, no images will be detected and processed. If the scripts are put below all other scripts on your page, the images will be not showed until all the scripts downloaded.)
-
-## Step 3: Implement in img tag or use it as background image
-
-### img tag
-
-Finally, just use the `ci-src` instead of the `src` attribute in image tag:
-
-```html
-
-```
-
-NOTE:
-
-"ci-ratio" is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
-
-"ci-blur-hash" is A very compact representation of a placeholder for an image. read more
-
-
-
-### background image
-
-Use the `ci-bg-url` instead of CSS background-image property `background-image: url(...)`:
-
-```html
-
-```
-
-
-
-## Step 4: Prevent seeing broken images
-
-Add the following styles in the head of your site
-
-```html
-
-```
-
-## Config
-
-### token
-
-###### Type: **String** | Default: **"demo"** | _required_
-
-Your Cloudimage customer token.
-[Subscribe](https://www.cloudimage.io/en/register_page) for a
-Cloudimage account to get one. The subscription takes less than a
-minute and is totally free.
-
-### domain
-
-###### Type: **String** | Default: **"cloudimg.io"**
-
-Use your custom domain.
-
-### imgSelector
-
-###### Type: **String** | Default: **"ci-src"**
-
-Cloudimage Responsive Selector for images.
-
-### bgSelector
-
-###### Type: **String** | Default: **"ci-bg-url"**
-
-Cloudimage Responsive Selector for background images.
-
-### doNotReplaceURL
-
-###### Type: **bool** | Default: **false**
-
-If set to **true** the plugin will only add query params to the given source of image.
-
-### baseURL
-
-###### Type: **String** | _optional_
-
-Your image folder on server, this alows to shorten your origin image URLs.
-
-### apiVersion
-
-###### Type: **String** |Default: **'v7'** | _optional_
-Allow to use a specific version of API.
-
-- set a specific version of API
-```javascript
-
-```
-- disable API version
-```javascript
-
-```
-
-### lazyLoading
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
-
-### params
-
-###### Type: **String** | Default: **'org_if_sml=1'** | _optional_
-
-Applies default Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
-Multiple params can be applied, separated by "```&```" e.g. wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1
-
-```javascript
-{
- ...,
- params: 'org_if_sml=1'
-}
-```
-
-#### alternative syntax: type: **Object**
-
-```javascript
-{
- ...,
- params: {
- org_if_sml: 1,
- grey: 1,
- ...
- }
-}
-```
-
-[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
-
-### exactSize
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Forces to load exact size of images.
-By default the plugin rounds container width to next possible value which can be divided by 100 without the remainder.
-It’s done for cache reasons so that not all images are cached by 1px, but only 100px, 200px, 300px …
-
-### limitFactor
-
-###### Type: **Number** | Default: **100** | _optional_
-
-Rounds up size of an image to nearest limitFactor value.
-
-For example
-* for an image with width **358px** and limitFactor equals **100** the plugin will round up to 400px
-* for an image with width **358px** and limitFactor equals **5** the plugin will round up to 360px
-
-### presets
-
-###### Type: **Object**
-
-Default:
-
-```javascript
-const cloudimageConfig = {
- token: 'demo',
- baseURL: 'https://jolipage.airstore.io/',
- ...
- presets: {
- xs: '(max-width: 575px)', // up to 575 PHONE
- sm: '(min-width: 576px)', // 576 - 767 PHABLET
- md: '(min-width: 768px)', // 768 - 991 TABLET
- lg: '(min-width: 992px)', // 992 - 1199 SMALL_LAPTOP_SCREEN
- xl: '(min-width: 1200px)' // from 1200 USUALSCREEN
- }
-};
-```
-
-### devicePixelRatioList
-
-###### Type: **[Number,...]** | Default: **[1, 1.5, 2, 3, 4]** | _optional_
-
-List of supported device pixel ratios. If there is no need to support retina devices, you should set empty array `devicePixelRatioList: []`
-
-### imageSizeAttributes
-
-###### Type: **String** | possible values: 'use', 'ignore', 'take-ratio' | Default: **'use'**
-
-If width and height attributes are set:
-
-**use** - width & height attributes values will be used to calculate image size (according to user's DPR) and **ratio**.
-
-**take-ratio** - width & height attributes values will be used only to calculate **ratio**.
-
-**ignore** - width & height attributes will be ignored.
-
-If width and height attributes are NOT set, image container size will be detected to calculate result image size (according to user's DPR)
-
-*Note*: If only width or height attributes is set, ratio is going to be taken from ci-ratio image attribute
-
-
-## Image properties
-
-Cloudimage responsive plugin will make image on your page responsive if you replace the `src` with `ci-src` attribute in the `` tag:
-
-### ci-src
-
-###### Type: **String** | Default: **undefined** | _required_
-
-Original image hosted on your web server. You can use absolute path or
-relative to baseURL in your config.
-
-**NOTES:**
-* The plugin uses a special algorithm to detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-* Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
-* Parameters after "?" question mark will be added at the end of result URL after processing by the plugin.
-
-### width
-
-###### Type: **String** (e.g. 300px, 20vw) | Default: **undefined**
-
-If it's set the plugin will use width as fixed value and change only according device pixel ratio.
-
-### height
-
-###### Type: **String** (e.g. 300px, 20vh) | Default: **undefined**
-
-If it's set the plugin will use height as fixed value and change only according device pixel ratio.
-
-### ci-blur-hash
-
-###### Type: **String** | Default: **undefined** | _required_
-
-BlurHash is a very compact representation of a placeholder for an image. read more
-
-```javascript
-ci-blur-hash="LNAyTi9ZVsQ,.TM{WAkW4T%2WBt7"
-```
-### ci-params
-
-###### Type: **String** | Default: **undefined** | _optional_
-
-You can apply any Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
-Multiple params can be applied, separated by "```&```" e.g. **wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1**
-
-```javascript
-ci-params="gray=1&bright=10"
-```
-
-#### alternative syntax: type: **Object**
-
-```javascript
-ci-params="{
- bright: 10,
- grey: 1,
- ...
-}"
-```
-
-[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
-
-### ci-sizes
-
-###### Type: **Object** | Default: **undefined**
-
-**{ preset breakpoint | 'media query': imageProps }**:
-
-preset breakpoints: **xs, sm, md, lg, xl** ([can be changed with](#presets))
-imageProps: **{ w, h, r, src }** where
-
-* **w** - width,
-* **h** - height,
-* **r** - ratio,
-* **src** - original image hosted on your web server. You can use absolute path or relative to the baseURL in your config.
-
-```jsx
-
-```
-
-You can drop some breakpoints, for example:
-
-```jsx
-
-```
-
-##### new experimental syntax
-
-md: { w: '40vw', h: 350 } or md: { w: 250, h: '20vh' }
-
-adds possibility to use fixed height or width and change dynamically other dimension
-
-**NOTE:** if size is not set, the plugin uses a special algorithm to
-detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-
-### ci-ratio (or data-ci-ratio)
-
-###### Type: **Number** | _optional_
-
-It is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
-
-To see the full cloudimage documentation [click here](https://docs.cloudimage.io/go/cloudimage-documentation)
-
-### ci-not-lazy (or data-ci-not-lazy)
-
-###### Type: **Bool**
-
-Switch off lazyload per image.
-
-## Lazy Loading
-
-Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
-
-The example below uses [lazysizes](https://github.com/aFarkas/lazysizes)
-library using Intersection Observer API.
-
-[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
-
-add the following scripts right after js-cloudimage-responsive script
-
-```javascript
-
-
-
-```
-
-the initialization script
-
-```javascript
-
- ```
-
-## Process dynamically loaded images!
-
-In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
-
-```javascript
-
-```
-
-## Examples & workarounds
-* [See all](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md)
-* [Cropping](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md#cropping)
-
-
-## Browser support
-
-Tested in all modern browsers and IE 11,10,9.
-
-If you want to address the use case where your visitors disable JS. You have to add noscript tag.
-
-```html
-
-```
-
-NOTE: If you use lazy loading with IntersectionObserver, you must
-manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
-for cross-browser support.
-
-## Filerobot UI Familiy
-
-* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
-* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
-* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
-* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
-* [Uploader](https://github.com/scaleflex/filerobot-uploader)
-
-## Contributing!
-
-All contributions are super welcome!
-
-
-## License
-JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT)
-
+[![Release](https://img.shields.io/badge/release-v4.8.3-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
+[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
+[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
+[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
+[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
+
+## VERSIONS
+
+* [__Low Quality Preview__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README.md)
+* __Blur Hash__
+* [__Plain (CSS free)__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-PLAIN.md)
+
+
+
+
+
+
+ JS Cloudimage Responsive | Cloudimage v7
+
+
+
+ (blur-hash version)
+
+
+[Documentation for v2 | Cloudimage v6](https://github.com/scaleflex/js-cloudimage-responsive/blob/v7/README_v6.md)
+
+
+
+This plugin detects the width of any image container as well as the device pixel ratio
+density to load the optimal image size needed.
+Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
+automated image optimization service.
+
+When an image is first loaded on your website or mobile app,
+Cloudimage's resizing servers will download the origin image from
+the source, resize it for the client's screen size and deliver to your users through one or multiple
+Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
+
+**NOTE:** Your original (master) images should be stored on a server
+or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
+HTTP or HTTPS by Cloudimage. If you want to upload your master images to
+Cloudimage, contact us at
+[hello@cloudimage.io](mailto:hello@cloudimage.io).
+
+
+
+
+
+powered by [Cloudimage](https://www.cloudimage.io/)
+([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
+
+## Table of contents
+
+* [Demo](#demo)
+* [Requirements](#requirements)
+* [Step 1: Installation](#installation)
+* [Step 2: Initialize](#initialize)
+* [Step 3: Implement](#implement)
+* [Step 4: Prevent seeing broken images](#prevent_styles)
+* [Configuration](#configuration)
+* [Image properties](#image_properties)
+* [Lazy loading](#lazy_loading)
+* [Process dynamically loaded images](#dynamically-loaded)
+* [Examples & workarounds](#examples_workarounds)
+* [Browser support](#browser_support)
+* [Filerobot UI Family](#ui_family)
+* [Contributing](#contributing)
+* [License](#license)
+
+
+## Demo
+
+To see the Cloudimage Responsive plugin in action, please check out the
+[Demo page](https://cdn.scaleflex.it/plugins/js-cloudimage-responsive/demo/blur-hash/index.html?v=28.04.2020_2).
+Play with your browser's window size and observe your
+Inspector's Network tab to see how Cloudimage delivers the optimal
+image size to your browser, hence accelerating the overall page
+loading time.
+
+## Requirements
+
+### Cloudimage account
+
+To use the Cloudimage Responsive plugin, you will need a
+Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
+registering [here](https://www.cloudimage.io/en/register_page).
+Once your token is created, you can configure it as described below.
+This token allows you to use 25GB of image cache and 25GB of worldwide
+CDN traffic per month for free.
+
+### Layout/CSS
+
+In order to use smooth transition between preview image and good quality and size image, the plugin uses absolute positioning for images and wraps an image tag with div element with relative positioning.
+
+You have to pay attention on the following things:
+
+- the plugin sets 100% width for img tag and position absolute (You should not apply other sizes or change position property. If you need to change width of image or position, you have to set it to wrapper)
+
+## Step 1: Installation
+
+Add script tag with CDN link to js-cloudimage-responsive
+
+```javascript
+
+```
+
+or using npm
+
+```
+$ npm install --save js-cloudimage-responsive
+```
+
+## Step 2: Initialize
+
+After adding the js-cloudimage-responsive lib, simply iniatialize it with your **token** and the **baseURL** of your image storage:
+
+```javascript
+
+```
+
+or in new style with npm:
+
+```javascript
+
+import 'js-cloudimage-responsive/blur-hash';
+
+const ciResponsive = new window.CIResponsive({
+ token: 'demo',
+ baseURL: 'https://cloudimage.public.airstore.io/demo/' // optional
+});
+```
+
+**NOTE**: You should put the scripts below all your content in the body tag and above all other scripts. After inserting the scripts the plugin starts immediately processing all images with ci-src, ci-bg-url attributes. (If the scripts are put into the head tag, no images will be detected and processed. If the scripts are put below all other scripts on your page, the images will be not showed until all the scripts downloaded.)
+
+## Step 3: Implement in img tag or use it as background image
+
+### img tag
+
+Finally, just use the `ci-src` instead of the `src` attribute in image tag:
+
+```html
+
+```
+
+NOTE:
+
+"ci-ratio" is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
+
+"ci-blur-hash" is A very compact representation of a placeholder for an image. read more
+
+
+
+### background image
+
+Use the `ci-bg-url` instead of CSS background-image property `background-image: url(...)`:
+
+```html
+
+```
+
+
+
+## Step 4: Prevent seeing broken images
+
+Add the following styles in the head of your site
+
+```html
+
+```
+
+## Config
+
+### token
+
+###### Type: **String** | Default: **"demo"** | _required_
+
+Your Cloudimage customer token.
+[Subscribe](https://www.cloudimage.io/en/register_page) for a
+Cloudimage account to get one. The subscription takes less than a
+minute and is totally free.
+
+### domain
+
+###### Type: **String** | Default: **"cloudimg.io"**
+
+Use your custom domain.
+
+### imgSelector
+
+###### Type: **String** | Default: **"ci-src"**
+
+Cloudimage Responsive Selector for images.
+
+### bgSelector
+
+###### Type: **String** | Default: **"ci-bg-url"**
+
+Cloudimage Responsive Selector for background images.
+
+### doNotReplaceURL
+
+###### Type: **bool** | Default: **false**
+
+If set to **true** the plugin will only add query params to the given source of image.
+
+### baseURL
+
+###### Type: **String** | _optional_
+
+Your image folder on server, this alows to shorten your origin image URLs.
+
+### apiVersion
+
+###### Type: **String** |Default: **'v7'** | _optional_
+Allow to use a specific version of API.
+
+- set a specific version of API
+```javascript
+
+```
+- disable API version
+```javascript
+
+```
+
+### lazyLoading
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
+
+### params
+
+###### Type: **String** | Default: **'org_if_sml=1'** | _optional_
+
+Applies default Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
+Multiple params can be applied, separated by "```&```" e.g. wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1
+
+```javascript
+{
+ ...,
+ params: 'org_if_sml=1'
+}
+```
+
+#### alternative syntax: type: **Object**
+
+```javascript
+{
+ ...,
+ params: {
+ org_if_sml: 1,
+ grey: 1,
+ ...
+ }
+}
+```
+
+[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
+
+### exactSize
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Forces to load exact size of images.
+By default the plugin rounds container width to next possible value which can be divided by 100 without the remainder.
+It’s done for cache reasons so that not all images are cached by 1px, but only 100px, 200px, 300px …
+
+### limitFactor
+
+###### Type: **Number** | Default: **100** | _optional_
+
+Rounds up size of an image to nearest limitFactor value.
+
+For example
+* for an image with width **358px** and limitFactor equals **100** the plugin will round up to 400px
+* for an image with width **358px** and limitFactor equals **5** the plugin will round up to 360px
+
+### presets
+
+###### Type: **Object**
+
+Default:
+
+```javascript
+const cloudimageConfig = {
+ token: 'demo',
+ baseURL: 'https://jolipage.airstore.io/',
+ ...
+ presets: {
+ xs: '(max-width: 575px)', // up to 575 PHONE
+ sm: '(min-width: 576px)', // 576 - 767 PHABLET
+ md: '(min-width: 768px)', // 768 - 991 TABLET
+ lg: '(min-width: 992px)', // 992 - 1199 SMALL_LAPTOP_SCREEN
+ xl: '(min-width: 1200px)' // from 1200 USUALSCREEN
+ }
+};
+```
+
+### devicePixelRatioList
+
+###### Type: **[Number,...]** | Default: **[1, 1.5, 2, 3, 4]** | _optional_
+
+List of supported device pixel ratios. If there is no need to support retina devices, you should set empty array `devicePixelRatioList: []`
+
+### imageSizeAttributes
+
+###### Type: **String** | possible values: 'use', 'ignore', 'take-ratio' | Default: **'use'**
+
+If width and height attributes are set:
+
+**use** - width & height attributes values will be used to calculate image size (according to user's DPR) and **ratio**.
+
+**take-ratio** - width & height attributes values will be used only to calculate **ratio**.
+
+**ignore** - width & height attributes will be ignored.
+
+If width and height attributes are NOT set, image container size will be detected to calculate result image size (according to user's DPR)
+
+*Note*: If only width or height attributes is set, ratio is going to be taken from ci-ratio image attribute
+
+
+## Image properties
+
+Cloudimage responsive plugin will make image on your page responsive if you replace the `src` with `ci-src` attribute in the `` tag:
+
+### ci-src
+
+###### Type: **String** | Default: **undefined** | _required_
+
+Original image hosted on your web server. You can use absolute path or
+relative to baseURL in your config.
+
+**NOTES:**
+* The plugin uses a special algorithm to detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+* Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
+* Parameters after "?" question mark will be added at the end of result URL after processing by the plugin.
+
+### width
+
+###### Type: **String** (e.g. 300px, 20vw) | Default: **undefined**
+
+If it's set the plugin will use width as fixed value and change only according device pixel ratio.
+
+### height
+
+###### Type: **String** (e.g. 300px, 20vh) | Default: **undefined**
+
+If it's set the plugin will use height as fixed value and change only according device pixel ratio.
+
+### ci-blur-hash
+
+###### Type: **String** | Default: **undefined** | _required_
+
+BlurHash is a very compact representation of a placeholder for an image. read more
+
+```javascript
+ci-blur-hash="LNAyTi9ZVsQ,.TM{WAkW4T%2WBt7"
+```
+### ci-params
+
+###### Type: **String** | Default: **undefined** | _optional_
+
+You can apply any Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
+Multiple params can be applied, separated by "```&```" e.g. **wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1**
+
+```javascript
+ci-params="gray=1&bright=10"
+```
+
+#### alternative syntax: type: **Object**
+
+```javascript
+ci-params="{
+ bright: 10,
+ grey: 1,
+ ...
+}"
+```
+
+[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
+
+### ci-sizes
+
+###### Type: **Object** | Default: **undefined**
+
+**{ preset breakpoint | 'media query': imageProps }**:
+
+preset breakpoints: **xs, sm, md, lg, xl** ([can be changed with](#presets))
+imageProps: **{ w, h, r, src }** where
+
+* **w** - width,
+* **h** - height,
+* **r** - ratio,
+* **src** - original image hosted on your web server. You can use absolute path or relative to the baseURL in your config.
+
+```jsx
+
+```
+
+You can drop some breakpoints, for example:
+
+```jsx
+
+```
+
+##### new experimental syntax
+
+md: { w: '40vw', h: 350 } or md: { w: 250, h: '20vh' }
+
+adds possibility to use fixed height or width and change dynamically other dimension
+
+**NOTE:** if size is not set, the plugin uses a special algorithm to
+detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+
+### ci-ratio (or data-ci-ratio)
+
+###### Type: **Number** | _optional_
+
+It is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
+
+To see the full cloudimage documentation [click here](https://docs.cloudimage.io/go/cloudimage-documentation)
+
+### ci-not-lazy (or data-ci-not-lazy)
+
+###### Type: **Bool**
+
+Switch off lazyload per image.
+
+## Lazy Loading
+
+Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
+
+The example below uses [lazysizes](https://github.com/aFarkas/lazysizes)
+library using Intersection Observer API.
+
+[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
+
+add the following scripts right after js-cloudimage-responsive script
+
+```javascript
+
+
+
+```
+
+the initialization script
+
+```javascript
+
+ ```
+
+## Process dynamically loaded images!
+
+In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
+
+```javascript
+
+```
+
+## Examples & workarounds
+* [See all](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md)
+* [Cropping](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md#cropping)
+
+
+## Browser support
+
+Tested in all modern browsers and IE 11,10,9.
+
+If you want to address the use case where your visitors disable JS. You have to add noscript tag.
+
+```html
+
+```
+
+NOTE: If you use lazy loading with IntersectionObserver, you must
+manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
+for cross-browser support.
+
+## Filerobot UI Familiy
+
+* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
+* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
+* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
+* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
+* [Uploader](https://github.com/scaleflex/filerobot-uploader)
+
+## Contributing!
+
+All contributions are super welcome!
+
+
+## License
+JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT)
+
diff --git a/README-PLAIN.md b/README-PLAIN.md
index db4e4ca..71363f6 100644
--- a/README-PLAIN.md
+++ b/README-PLAIN.md
@@ -1,544 +1,544 @@
-[![Release](https://img.shields.io/badge/release-v4.8.2-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
-[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
-[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
-[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
-[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
-
-## VERSIONS
-
-* [__Low Quality Preview__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README.md)
-* [__Blur Hash__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-BLUR-HASH.md)
-* __Plain (CSS free)__
-
-
-
-This plugin detects the width of any image container as well as the device pixel ratio
-density to load the optimal image size needed.
-Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
-automated image optimization service.
-
-When an image is first loaded on your website or mobile app,
-Cloudimage's resizing servers will download the origin image from
-the source, resize it for the client's screen size and deliver to your users through one or multiple
-Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
-
-**NOTE:** Your original (master) images should be stored on a server
-or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
-HTTP or HTTPS by Cloudimage. If you want to upload your master images to
-Cloudimage, contact us at
-[hello@cloudimage.io](mailto:hello@cloudimage.io).
-
-
-
-
-
-powered by [Cloudimage](https://www.cloudimage.io/)
-([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
-
-## Table of contents
-
-* [Demo](#demo)
-* [Requirements](#requirements)
-* [Step 1: Installation](#installation)
-* [Step 2: Initialize](#initialize)
-* [Step 3: Implement](#implement)
-* [Step 4: Prevent seeing broken images](#prevent_styles)
-* [Configuration](#configuration)
-* [Image properties](#image_properties)
-* [Lazy loading](#lazy_loading)
-* [Process dynamically loaded images](#dynamically-loaded)
-* [Examples & workarounds](#examples_workarounds)
-* [Browser support](#browser_support)
-* [Filerobot UI Family](#ui_family)
-* [Contributing](#contributing)
-* [License](#license)
-
-
-## Demo
-
-To see the Cloudimage Responsive plugin in action, please check out the
-[Demo page](https://scaleflex.airstore.io/plugins/js-cloudimage-responsive/demo/plain/index.html?v=28.04.2020).
-Play with your browser's window size and observe your
-Inspector's Network tab to see how Cloudimage delivers the optimal
-image size to your browser, hence accelerating the overall page
-loading time.
-
-## Requirements
-
-### Cloudimage account
-
-To use the Cloudimage Responsive plugin, you will need a
-Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
-registering [here](https://www.cloudimage.io/en/register_page).
-Once your token is created, you can configure it as described below.
-This token allows you to use 25GB of image cache and 25GB of worldwide
-CDN traffic per month for free.
-
-### Layout/CSS
-
-This version of plugin doesn't add any CSS or change layout thus no effect on your layout and styling.
-
-## Step 1: Installation
-
-Add script tag with CDN link to js-cloudimage-responsive
-
-```javascript
-
-```
-
-or using npm
-
-```
-$ npm install --save js-cloudimage-responsive
-```
-
-## Step 2: Initialize
-
-After adding the js-cloudimage-responsive lib, simply iniatialize it with your **token** and the **baseURL** of your image storage:
-
-```javascript
-
-```
-
-or in new style with npm:
-
-```javascript
-
-import 'js-cloudimage-responsive/plain';
-
-const ciResponsive = new window.CIResponsive({
- token: 'demo',
- baseURL: 'https://cloudimage.public.airstore.io/demo/' // optional
-});
-```
-
-**NOTE**: You should put the scripts below all your content in the body tag and above all other scripts. After inserting the scripts the plugin starts immediately processing all images with ci-src, ci-bg-url attributes. (If the scripts are put into the head tag, no images will be detected and processed. If the scripts are put below all other scripts on your page, the images will be not showed until all the scripts downloaded.)
-
-## Step 3: Implement in img tag or use it as background image
-
-### img tag
-
-Finally, just use the `ci-src` instead of the `src` attribute in image tag:
-
-```html
-
-```
-
-
-
-### background image
-
-Use the `ci-bg-url` instead of CSS background-image property `background-image: url(...)`:
-
-```html
-
-```
-
-
-
-## Step 4: Prevent seeing broken images
-
-Add the following styles in the head of your site
-
-```html
-
-```
-
-## Config
-
-### token
-
-###### Type: **String** | Default: **"demo"** | _required_
-
-Your Cloudimage customer token.
-[Subscribe](https://www.cloudimage.io/en/register_page) for a
-Cloudimage account to get one. The subscription takes less than a
-minute and is totally free.
-
-### domain
-
-###### Type: **String** | Default: **"cloudimg.io"**
-
-Use your custom domain.
-
-### imgSelector
-
-###### Type: **String** | Default: **"ci-src"**
-
-Cloudimage Responsive Selector for images.
-
-### bgSelector
-
-###### Type: **String** | Default: **"ci-bg-url"**
-
-Cloudimage Responsive Selector for background images.
-
-### doNotReplaceURL
-
-###### Type: **bool** | Default: **false**
-
-If set to **true** the plugin will only add query params to the given source of image.
-
-### baseURL
-
-###### Type: **String** | _optional_
-
-Your image folder on server, this alows to shorten your origin image URLs.
-
-### apiVersion
-
-###### Type: **String** |Default: **'v7'** | _optional_
-Allow to use a specific version of API.
-
-- set a specific version of API
-```javascript
-
-```
-- disable API version
-```javascript
-
-```
-
-### lazyLoading
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
-
-### params
-
-###### Type: **String** | Default: **'org_if_sml=1'** | _optional_
-
-Applies default Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
-Multiple params can be applied, separated by "```&```" e.g. wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1
-
-```javascript
-{
- ...,
- params: 'org_if_sml=1'
-}
-```
-
-#### alternative syntax: type: **Object**
-
-```javascript
-{
- ...,
- params: {
- org_if_sml: 1,
- grey: 1,
- ...
- }
-}
-```
-
-[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
-
-### exactSize
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Forces to load exact size of images.
-By default the plugin rounds container width to next possible value which can be divided by 100 without the remainder.
-It’s done for cache reasons so that not all images are cached by 1px, but only 100px, 200px, 300px …
-
-### limitFactor
-
-###### Type: **Number** | Default: **100** | _optional_
-
-Rounds up size of an image to nearest limitFactor value.
-
-For example
-* for an image with width **358px** and limitFactor equals **100** the plugin will round up to 400px
-* for an image with width **358px** and limitFactor equals **5** the plugin will round up to 360px
-
-### devicePixelRatioList
-
-###### Type: **[Number,...]** | Default: **[1, 1.5, 2, 3, 4]** | _optional_
-
-List of supported device pixel ratios. If there is no need to support retina devices, you should set empty array `devicePixelRatioList: []`
-
-### presets
-
-###### Type: **Object**
-
-Default:
-
-```javascript
-
-
-```
-
-Breakpoints shortcuts to use in image size property, can be overwridden.
-
-### imageSizeAttributes
-
-###### Type: **String** | possible values: 'use', 'ignore', 'take-ratio' | Default: **'use'**
-
-If width and height attributes are set:
-
-**use** - width & height attributes values will be used to calculate image size (according to user's DPR) and **ratio**.
-
-**take-ratio** - width & height attributes values will be used only to calculate **ratio**.
-
-**ignore** - width & height attributes will be ignored.
-
-If width and height attributes are NOT set, image container size will be detected to calculate result image size (according to user's DPR)
-
-*Note*: If only width or height attributes is set, ratio is going to be taken from ci-ratio image attribute
-
-## Image properties
-
-Cloudimage responsive plugin will make image on your page responsive if you replace the `src` with `ci-src` attribute in the `` tag:
-
-### ci-src
-
-###### Type: **String** | Default: **undefined** | _required_
-
-Original image hosted on your web server. You can use absolute path or
-relative to baseURL in your config.
-
-**NOTES:**
-* The plugin uses a special algorithm to detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-* Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
-* Parameters after "?" question mark will be added at the end of result URL after processing by the plugin.
-
-### width
-
-###### Type: **String** (e.g. 300px, 20vw) | Default: **undefined**
-
-If it's set the plugin will use width as fixed value and change only according device pixel ratio.
-
-### height
-
-###### Type: **String** (e.g. 300px, 20vh) | Default: **undefined**
-
-If it's set the plugin will use height as fixed value and change only according device pixel ratio.
-
-### ci-params
-
-###### Type: **String** | Default: **undefined** | _optional_
-
-You can apply any Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
-Multiple params can be applied, separated by "```&```" e.g. **wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1**
-
-```javascript
-ci-params="gray=1&bright=10"
-```
-
-#### alternative syntax: type: **Object**
-
-```javascript
-ci-params="{
- bright: 10,
- grey: 1,
- ...
-}"
-```
-
-[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
-
-### ci-sizes
-
-###### Type: **Object** | Default: **undefined**
-
-**{ preset breakpoint | 'media query': imageProps }**:
-
-preset breakpoints: **xs, sm, md, lg, xl** ([can be changed with](#presets))
-imageProps: **{ w, h, r, src }** where
-
-* **w** - width,
-* **h** - height,
-* **r** - ratio,
-* **src** - original image hosted on your web server. You can use absolute path or relative to the baseURL in your config.
-
-```jsx
-
-```
-
-You can drop some breakpoints, for example:
-
-```jsx
-
-```
-
-##### new experimental syntax
-
-md: { w: '40vw', h: 350 } or md: { w: 250, h: '20vh' }
-
-adds possibility to use fixed height or width and change dynamically other dimension
-
-**NOTE:** if size is not set, the plugin uses a special algorithm to
-detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-
-### ci-not-lazy (or data-ci-not-lazy)
-
-###### Type: **Bool**
-
-Switch off lazyload per image.
-
-## Lazy Loading
-
-Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
-
-The example below uses [lazysizes](https://github.com/aFarkas/lazysizes)
-library using Intersection Observer API.
-
-[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
-
-add the following scripts right after js-cloudimage-responsive script
-
-```javascript
-
-
-
-```
-
-the initialization script
-
-```javascript
-
- ```
-
-## Process dynamically loaded images!
-
-In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
-
-```javascript
-
-```
-
-## Examples & workarounds
-* [See all](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md)
-* [Cropping](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md#cropping)
-
-## Browser support
-
-Tested in all modern browsers and IE 11,10,9.
-
-If you want to address the use case where your visitors disable JS. You have to add noscript tag.
-
-```html
-
-```
-
-NOTE: If you use lazy loading with IntersectionObserver, you must
-manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
-for cross-browser support.
-
-## Filerobot UI Familiy
-
-* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
-* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
-* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
-* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
-* [Uploader](https://github.com/scaleflex/filerobot-uploader)
-
-## Contributing!
-
-All contributions are super welcome!
-
-
-## License
-JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT)
-
+[![Release](https://img.shields.io/badge/release-v4.8.3-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
+[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
+[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
+[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
+[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
+
+## VERSIONS
+
+* [__Low Quality Preview__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README.md)
+* [__Blur Hash__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-BLUR-HASH.md)
+* __Plain (CSS free)__
+
+
+
+This plugin detects the width of any image container as well as the device pixel ratio
+density to load the optimal image size needed.
+Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
+automated image optimization service.
+
+When an image is first loaded on your website or mobile app,
+Cloudimage's resizing servers will download the origin image from
+the source, resize it for the client's screen size and deliver to your users through one or multiple
+Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
+
+**NOTE:** Your original (master) images should be stored on a server
+or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
+HTTP or HTTPS by Cloudimage. If you want to upload your master images to
+Cloudimage, contact us at
+[hello@cloudimage.io](mailto:hello@cloudimage.io).
+
+
+
+
+
+powered by [Cloudimage](https://www.cloudimage.io/)
+([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
+
+## Table of contents
+
+* [Demo](#demo)
+* [Requirements](#requirements)
+* [Step 1: Installation](#installation)
+* [Step 2: Initialize](#initialize)
+* [Step 3: Implement](#implement)
+* [Step 4: Prevent seeing broken images](#prevent_styles)
+* [Configuration](#configuration)
+* [Image properties](#image_properties)
+* [Lazy loading](#lazy_loading)
+* [Process dynamically loaded images](#dynamically-loaded)
+* [Examples & workarounds](#examples_workarounds)
+* [Browser support](#browser_support)
+* [Filerobot UI Family](#ui_family)
+* [Contributing](#contributing)
+* [License](#license)
+
+
+## Demo
+
+To see the Cloudimage Responsive plugin in action, please check out the
+[Demo page](https://scaleflex.airstore.io/plugins/js-cloudimage-responsive/demo/plain/index.html?v=28.04.2020).
+Play with your browser's window size and observe your
+Inspector's Network tab to see how Cloudimage delivers the optimal
+image size to your browser, hence accelerating the overall page
+loading time.
+
+## Requirements
+
+### Cloudimage account
+
+To use the Cloudimage Responsive plugin, you will need a
+Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
+registering [here](https://www.cloudimage.io/en/register_page).
+Once your token is created, you can configure it as described below.
+This token allows you to use 25GB of image cache and 25GB of worldwide
+CDN traffic per month for free.
+
+### Layout/CSS
+
+This version of plugin doesn't add any CSS or change layout thus no effect on your layout and styling.
+
+## Step 1: Installation
+
+Add script tag with CDN link to js-cloudimage-responsive
+
+```javascript
+
+```
+
+or using npm
+
+```
+$ npm install --save js-cloudimage-responsive
+```
+
+## Step 2: Initialize
+
+After adding the js-cloudimage-responsive lib, simply iniatialize it with your **token** and the **baseURL** of your image storage:
+
+```javascript
+
+```
+
+or in new style with npm:
+
+```javascript
+
+import 'js-cloudimage-responsive/plain';
+
+const ciResponsive = new window.CIResponsive({
+ token: 'demo',
+ baseURL: 'https://cloudimage.public.airstore.io/demo/' // optional
+});
+```
+
+**NOTE**: You should put the scripts below all your content in the body tag and above all other scripts. After inserting the scripts the plugin starts immediately processing all images with ci-src, ci-bg-url attributes. (If the scripts are put into the head tag, no images will be detected and processed. If the scripts are put below all other scripts on your page, the images will be not showed until all the scripts downloaded.)
+
+## Step 3: Implement in img tag or use it as background image
+
+### img tag
+
+Finally, just use the `ci-src` instead of the `src` attribute in image tag:
+
+```html
+
+```
+
+
+
+### background image
+
+Use the `ci-bg-url` instead of CSS background-image property `background-image: url(...)`:
+
+```html
+
+```
+
+
+
+## Step 4: Prevent seeing broken images
+
+Add the following styles in the head of your site
+
+```html
+
+```
+
+## Config
+
+### token
+
+###### Type: **String** | Default: **"demo"** | _required_
+
+Your Cloudimage customer token.
+[Subscribe](https://www.cloudimage.io/en/register_page) for a
+Cloudimage account to get one. The subscription takes less than a
+minute and is totally free.
+
+### domain
+
+###### Type: **String** | Default: **"cloudimg.io"**
+
+Use your custom domain.
+
+### imgSelector
+
+###### Type: **String** | Default: **"ci-src"**
+
+Cloudimage Responsive Selector for images.
+
+### bgSelector
+
+###### Type: **String** | Default: **"ci-bg-url"**
+
+Cloudimage Responsive Selector for background images.
+
+### doNotReplaceURL
+
+###### Type: **bool** | Default: **false**
+
+If set to **true** the plugin will only add query params to the given source of image.
+
+### baseURL
+
+###### Type: **String** | _optional_
+
+Your image folder on server, this alows to shorten your origin image URLs.
+
+### apiVersion
+
+###### Type: **String** |Default: **'v7'** | _optional_
+Allow to use a specific version of API.
+
+- set a specific version of API
+```javascript
+
+```
+- disable API version
+```javascript
+
+```
+
+### lazyLoading
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
+
+### params
+
+###### Type: **String** | Default: **'org_if_sml=1'** | _optional_
+
+Applies default Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
+Multiple params can be applied, separated by "```&```" e.g. wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1
+
+```javascript
+{
+ ...,
+ params: 'org_if_sml=1'
+}
+```
+
+#### alternative syntax: type: **Object**
+
+```javascript
+{
+ ...,
+ params: {
+ org_if_sml: 1,
+ grey: 1,
+ ...
+ }
+}
+```
+
+[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
+
+### exactSize
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Forces to load exact size of images.
+By default the plugin rounds container width to next possible value which can be divided by 100 without the remainder.
+It’s done for cache reasons so that not all images are cached by 1px, but only 100px, 200px, 300px …
+
+### limitFactor
+
+###### Type: **Number** | Default: **100** | _optional_
+
+Rounds up size of an image to nearest limitFactor value.
+
+For example
+* for an image with width **358px** and limitFactor equals **100** the plugin will round up to 400px
+* for an image with width **358px** and limitFactor equals **5** the plugin will round up to 360px
+
+### devicePixelRatioList
+
+###### Type: **[Number,...]** | Default: **[1, 1.5, 2, 3, 4]** | _optional_
+
+List of supported device pixel ratios. If there is no need to support retina devices, you should set empty array `devicePixelRatioList: []`
+
+### presets
+
+###### Type: **Object**
+
+Default:
+
+```javascript
+
+
+```
+
+Breakpoints shortcuts to use in image size property, can be overwridden.
+
+### imageSizeAttributes
+
+###### Type: **String** | possible values: 'use', 'ignore', 'take-ratio' | Default: **'use'**
+
+If width and height attributes are set:
+
+**use** - width & height attributes values will be used to calculate image size (according to user's DPR) and **ratio**.
+
+**take-ratio** - width & height attributes values will be used only to calculate **ratio**.
+
+**ignore** - width & height attributes will be ignored.
+
+If width and height attributes are NOT set, image container size will be detected to calculate result image size (according to user's DPR)
+
+*Note*: If only width or height attributes is set, ratio is going to be taken from ci-ratio image attribute
+
+## Image properties
+
+Cloudimage responsive plugin will make image on your page responsive if you replace the `src` with `ci-src` attribute in the `` tag:
+
+### ci-src
+
+###### Type: **String** | Default: **undefined** | _required_
+
+Original image hosted on your web server. You can use absolute path or
+relative to baseURL in your config.
+
+**NOTES:**
+* The plugin uses a special algorithm to detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+* Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
+* Parameters after "?" question mark will be added at the end of result URL after processing by the plugin.
+
+### width
+
+###### Type: **String** (e.g. 300px, 20vw) | Default: **undefined**
+
+If it's set the plugin will use width as fixed value and change only according device pixel ratio.
+
+### height
+
+###### Type: **String** (e.g. 300px, 20vh) | Default: **undefined**
+
+If it's set the plugin will use height as fixed value and change only according device pixel ratio.
+
+### ci-params
+
+###### Type: **String** | Default: **undefined** | _optional_
+
+You can apply any Cloudimage operations/ filters to your image, e.g. brightness, contrast, rotation...
+Multiple params can be applied, separated by "```&```" e.g. **wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1**
+
+```javascript
+ci-params="gray=1&bright=10"
+```
+
+#### alternative syntax: type: **Object**
+
+```javascript
+ci-params="{
+ bright: 10,
+ grey: 1,
+ ...
+}"
+```
+
+[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
+
+### ci-sizes
+
+###### Type: **Object** | Default: **undefined**
+
+**{ preset breakpoint | 'media query': imageProps }**:
+
+preset breakpoints: **xs, sm, md, lg, xl** ([can be changed with](#presets))
+imageProps: **{ w, h, r, src }** where
+
+* **w** - width,
+* **h** - height,
+* **r** - ratio,
+* **src** - original image hosted on your web server. You can use absolute path or relative to the baseURL in your config.
+
+```jsx
+
+```
+
+You can drop some breakpoints, for example:
+
+```jsx
+
+```
+
+##### new experimental syntax
+
+md: { w: '40vw', h: 350 } or md: { w: 250, h: '20vh' }
+
+adds possibility to use fixed height or width and change dynamically other dimension
+
+**NOTE:** if size is not set, the plugin uses a special algorithm to
+detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+
+### ci-not-lazy (or data-ci-not-lazy)
+
+###### Type: **Bool**
+
+Switch off lazyload per image.
+
+## Lazy Loading
+
+Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
+
+The example below uses [lazysizes](https://github.com/aFarkas/lazysizes)
+library using Intersection Observer API.
+
+[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
+
+add the following scripts right after js-cloudimage-responsive script
+
+```javascript
+
+
+
+```
+
+the initialization script
+
+```javascript
+
+ ```
+
+## Process dynamically loaded images!
+
+In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
+
+```javascript
+
+```
+
+## Examples & workarounds
+* [See all](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md)
+* [Cropping](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md#cropping)
+
+## Browser support
+
+Tested in all modern browsers and IE 11,10,9.
+
+If you want to address the use case where your visitors disable JS. You have to add noscript tag.
+
+```html
+
+```
+
+NOTE: If you use lazy loading with IntersectionObserver, you must
+manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
+for cross-browser support.
+
+## Filerobot UI Familiy
+
+* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
+* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
+* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
+* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
+* [Uploader](https://github.com/scaleflex/filerobot-uploader)
+
+## Contributing!
+
+All contributions are super welcome!
+
+
+## License
+JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT)
+
diff --git a/README.md b/README.md
index 094570e..b11a127 100644
--- a/README.md
+++ b/README.md
@@ -1,574 +1,574 @@
-[![Release](https://img.shields.io/badge/release-v4.8.2-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
-[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
-[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
-[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
-[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
-
-## VERSIONS
-
-* __Low Quality Preview__
-* [__Blur Hash__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-BLUR-HASH.md)
-* [__Plain (CSS free)__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-PLAIN.md)
-
-
-
-
-
-
- JS Cloudimage Responsive | Cloudimage v7
-
-
-
- (low quality image placeholder)
-
-
-[Documentation for v2 | Cloudimage v6](https://github.com/scaleflex/js-cloudimage-responsive/blob/v7/README_v6.md)
-
-
-
-This plugin detects the width of any image container as well as the device pixel ratio
-density to load the optimal image size needed.
-Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
-automated image optimization service.
-
-When an image is first loaded on your website or mobile app,
-Cloudimage's resizing servers will download the origin image from
-the source, resize it for the client's screen size and deliver to your users through one or multiple
-Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
-
-**NOTE:** Your original (master) images have to be stored on a server
-or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
-HTTP or HTTPS by Cloudimage. If you want to store your master images with us,
-you can check our all-in-one Digital Asset Management solution
-[Filerobot](https://www.filerobot.com/).
-
-
-
-
-
-powered by [Cloudimage](https://www.cloudimage.io/)
-([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
-
-## Table of contents
-
-* [Demo](#demo)
-* [Requirements](#requirements)
-* [Step 1: Installation](#installation)
-* [Step 2: Initialize](#initialize)
-* [Step 3: Implement](#implement)
-* [Configuration](#configuration)
-* [Image properties](#image_properties)
-* [Lazy loading](#lazy_loading)
-* [Process dynamically loaded images](#dynamically-loaded)
-* [Examples & workarounds](#examples_workarounds)
-* [Browser support](#browser_support)
-* [Filerobot UI Family](#ui_family)
-* [Contributing](#contributing)
-* [License](#license)
-
-
-## Demo
-
-To see the Cloudimage Responsive plugin in action, please check out the
-[Demo page](https://scaleflex.github.io/js-cloudimage-responsive/).
-Play with your browser's window size and observe your
-Inspector's Network tab to see how Cloudimage delivers the optimal
-image size to your browser, hence accelerating the overall page
-loading time.
-
-## Requirements
-
-### Cloudimage account
-
-To use the Cloudimage Responsive plugin, you will need a
-Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
-registering [here](https://www.cloudimage.io/en/register_page).
-Once your token is created, you can configure it as described below.
-This token allows you to use 25GB of image cache and 25GB of worldwide
-CDN traffic per month for free.
-
-### Layout/CSS
-
-In order to use smooth transition between preview image and good quality and size image, the plugin uses absolute positioning for images and wraps an image tag with a div element with relative positioning.
-
-You have to pay attention to the following things:
-
-- the plugin sets 100% width for the img tag and position:absolute (You should not apply other sizes or change position property. If you need to change the width of an image or its position, you have to set it to the wrapper element)
-
-## Step 1: Installation
-
-Add a style tag with CDN link to js-cloudimage-responsive in the head of your site
-
-```javascript
-
-```
-
-Add a script tag with CDN link to js-cloudimage-responsive
-
-```javascript
-
-```
-
-or using npm
-
-```
-$ npm install --save js-cloudimage-responsive
-```
-
-## Step 2: Initialize
-
-After adding the js-cloudimage-responsive library, simply iniatialise it with your **token** and the **baseURL** of your image storage:
-
-```javascript
-
-```
-
-or in new style with npm:
-
-```javascript
-
-import 'js-cloudimage-responsive';
-
-const ciResponsive = new window.CIResponsive({
- token: 'demo',
- baseURL: 'https://cloudimage.public.airstore.io/demo/' // optional
-});
-```
-
-**NOTE**: You should put the scripts below all your content in the body tag and above all other scripts. After inserting the scripts, the plugin immediately starts processing all images with ci-src and ci-bg-url attributes. (If the scripts are put into the head tag, no images will be detected and processed. If the scripts are put below all other scripts on your page, the images will be not showed until all the scripts are downloaded.)
-
-## Step 3: Implement in an img tag or use it as a background image
-
-### img tag
-
-Finally, just use `ci-src` instead of the `src` attribute in image tag:
-
-```html
-
-```
-
-NOTE: setting "ci-ratio" is recommended to prevent page layout jumping. The parameter is used to calculate the image height to hold the image position while the image is loading.
-
-
-
-### background image
-
-Use `ci-bg-url` instead of the CSS background-image property `background-image: url(...)`:
-
-```html
-
-```
-
-
-
-## Configuration
-
-### token
-
-###### Type: **String** | Default: **"demo"** | _required_
-
-Your Cloudimage customer token.
-[Subscribe](https://www.cloudimage.io/en/register_page) for a
-Cloudimage account to get one. The subscription takes less than a
-minute and is totally free.
-
-### domain
-
-###### Type: **String** | Default: **"cloudimg.io"**
-
-Use your custom domain.
-
-### imgSelector
-
-###### Type: **String** | Default: **"ci-src"**
-
-Cloudimage Responsive Selector for images.
-
-### bgSelector
-
-###### Type: **String** | Default: **"ci-bg-url"**
-
-Cloudimage Responsive Selector for background images.
-
-### doNotReplaceURL
-
-###### Type: **bool** | Default: **false**
-
-If set to **true**, the plugin will only add query parameters to the provided image source URL.
-
-### baseURL
-
-###### Type: **String** | _optional_
-
-Your image folder on server; this alows to shorten your origin image URLs.
-
-### apiVersion
-
-###### Type: **String** |Default: **'v7'** | _optional_
-Allow to use a specific version of API.
-
-- set a specific version of API
-```javascript
-
-```
-- disable API version
-```javascript
-
-```
-
-
-### lazyLoading
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
-
-### params
-
-###### Type: **String** | Default: **'org_if_sml=1'** | _optional_
-
-Applies default Cloudimage operations/filters to your image like brightness, contrast, rotation, etc.
-Multiple params can be applied, separated by "```&```" e.g. wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1
-
-```javascript
-{
- ...,
- params: 'org_if_sml=1'
-}
-```
-
-#### alternative syntax
-
-###### Type: **Object**
-
-```javascript
-{
- ...,
- params: {
- org_if_sml: 1,
- grey: 1,
- ...
- }
-}
-```
-
-[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
-
-
-### placeholderBackground
-
-###### Type: **String** | Default: **'#f4f4f4'** | _optional_
-
-Placeholder coloured background while the image is loading
-
-
-### exactSize
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Forces to load exact size of images.
-By default, the plugin rounds the container width to next possible value which can be divided by 100 without the remainder.
-This is done for caching reasons so that not all images are cached by 1px, but only 100px, 200px, 300px...
-
-### limitFactor
-
-###### Type: **Number** | Default: **100** | _optional_
-
-Rounds up the size of the image to the nearest limitFactor value.
-
-For example:
-* for an image with width **358px** and limitFactor equal to **100**, the plugin will round up to 400px;
-* for an image with width **358px** and limitFactor equal to **5**, the plugin will round up to 360px.
-
-
-### devicePixelRatioList
-
-###### Type: **[Number,...]** | Default: **[1, 1.5, 2, 3, 4]** | _optional_
-
-List of supported device pixel ratios. If there is no need to support retina devices, you should set empty array `devicePixelRatioList: []`
-
-
-### lowQualityPreview
-
-###### Type: **Object**
-
-* `lowQualityPreview.minImgWidth` number (default: 400) - minimal width of an image to load a low-quality preview image
-
-Example:
-
-```javascript
-lowQualityPreview: {
- minImgWidth = 400
-}
-```
-
-### presets
-
-###### Type: **Object**
-
-Default:
-
-```javascript
-{
- ...,
- presets: {
- xs: '(max-width: 575px)', // up to 575 PHONE
- sm: '(min-width: 576px)', // 576 - 767 PHABLET
- md: '(min-width: 768px)', // 768 - 991 TABLET
- lg: '(min-width: 992px)', // 992 - 1199 SMALL_LAPTOP_SCREEN
- xl: '(min-width: 1200px)' // from 1200 USUALSCREEN
- }
-}
-```
-
-Breakpoints shortcuts to use in image size property, can be overridden.
-
-### imageSizeAttributes
-
-###### Type: **String** | possible values: 'use', 'ignore', 'take-ratio' | Default: **'use'**
-
-If width and height attributes are set:
-
-**use** - width & height attributes values will be used to calculate image size (according to user's DPR) and **ratio**.
-
-**take-ratio** - width & height attributes values will be used only to calculate **ratio**.
-
-**ignore** - width & height attributes will be ignored.
-
-If width and height attributes are NOT set, image container size will be detected to calculate result image size (according to user's DPR)
-
-*Note*: If only width or height attributes is set, ratio is going to be taken from ci-ratio image attribute
-
-## Image properties
-
-The Cloudimage responsive plugin will make an image on your page responsive if you replace the `src` with a `ci-src` attribute in the `` tag:
-
-### ci-src
-
-###### Type: **String** | Default: **undefined** | _required_
-
-Original image hosted on your web server. You can use absolute path or
-relative to the baseURL in your config.
-
-**NOTES:**
-* The plugin uses a special algorithm to detect the width of the image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-* Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
-* Parameters after "?" question mark will be added at the end of result URL after processing by the plugin.
-
-### width
-
-###### Type: **String** (e.g. 300px, 20vw) | Default: **undefined**
-
-If it's set, the plugin will use width as a fixed value and change only according device pixel ratio.
-
-### height
-
-###### Type: **String** (e.g. 300px, 20vh) | Default: **undefined**
-
-If it's set, the plugin will use height as fixed value and change only according device pixel ratio.
-
-### ci-params
-
-###### Type: **String** | Default: **undefined** | _optional_
-
-You can apply any Cloudimage operations/filters to your image, e.g. brightness, contrast, rotation...
-Multiple parameters can be applied, separated by "```&```" e.g. **wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1**
-
-```javascript
-ci-params="gray=1&bright=10"
-```
-
-#### alternative syntax: type: **Object**
-
-```javascript
-ci-params="{
- bright: 10,
- grey: 1,
- ...
-}"
-```
-
-[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
-
-### ci-sizes
-
-###### Type: **Object** | Default: **undefined**
-
-**{ preset breakpoint | 'media query': imageProps }**:
-
-preset breakpoints: **xs, sm, md, lg, xl** ([can be changed with](#presets))
-imageProps: **{ w, h, r, src }** where
-
-* **w** - width,
-* **h** - height,
-* **r** - ratio,
-* **src** - original image hosted on your web server. You can use absolute path or relative to the baseURL in your config.
-
-```jsx
-
-```
-
-You can drop some breakpoints, for example:
-
-```jsx
-
-```
-
-##### new experimental syntax
-
-md: { w: '40vw', h: 350 } or md: { w: 250, h: '20vh' }
-
-adds a possibility to use fixed height or width and change the other dimension dynamically
-
-**NOTE:** if size is not set, the plugin uses a special algorithm to
-detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-
-### ci-ratio (or data-ci-ratio)
-
-###### Type: **Number** | _optional_
-
-It is recommended to set this parameter to prevent page layout jumping. It is used to calculate the image height to hold the image position while the image is loading.
-
-To see the full Cloudimage documentation, [click here](https://docs.cloudimage.io/go/cloudimage-documentation).
-
-### ci-not-lazy (or data-ci-not-lazy)
-
-###### Type: **Bool**
-
-Switch off lazy loading on a per-image basis.
-
-## Lazy Loading
-
-Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
-
-The example below uses the [lazysizes](https://github.com/aFarkas/lazysizes)
-library using Intersection Observer API.
-
-[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
-
-add the following scripts right after js-cloudimage-responsive script
-
-```javascript
-
-
-
-```
-
-the initialization script
-
-```javascript
-
- ```
-
-## Process dynamically loaded images!
-
-In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
-
-```javascript
-
-```
-
-The process function accepts a second argument. It expects an [HTML Element](https://developer.mozilla.org/fr/docs/Web/API/HTMLElement), if provided it will be used as the root for the images lookup.
-
-## Examples & workarounds
-* [See all](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md)
-* [Cropping](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md#cropping)
-
-
-## Browser support
-
-Tested in all modern browsers and IE 11,10,9.
-
-If you want to address the use case where your visitors disable JS, You have to add a noscript tag:
-
-```html
-
-```
-
-NOTE: If you use lazy loading with IntersectionObserver, you must
-manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
-for cross-browser support.
-
-## Filerobot UI Familiy
-
-* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
-* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
-* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
-* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
-* [Uploader](https://github.com/scaleflex/filerobot-uploader)
-
-## Contributing!
-
-All contributions are super welcome!
-
-
-## License
-JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT).
-
+[![Release](https://img.shields.io/badge/release-v4.8.3-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
+[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
+[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
+[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
+[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
+
+## VERSIONS
+
+* __Low Quality Preview__
+* [__Blur Hash__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-BLUR-HASH.md)
+* [__Plain (CSS free)__](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/README-PLAIN.md)
+
+
+
+
+
+
+ JS Cloudimage Responsive | Cloudimage v7
+
+
+
+ (low quality image placeholder)
+
+
+[Documentation for v2 | Cloudimage v6](https://github.com/scaleflex/js-cloudimage-responsive/blob/v7/README_v6.md)
+
+
+
+This plugin detects the width of any image container as well as the device pixel ratio
+density to load the optimal image size needed.
+Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
+automated image optimization service.
+
+When an image is first loaded on your website or mobile app,
+Cloudimage's resizing servers will download the origin image from
+the source, resize it for the client's screen size and deliver to your users through one or multiple
+Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
+
+**NOTE:** Your original (master) images have to be stored on a server
+or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
+HTTP or HTTPS by Cloudimage. If you want to store your master images with us,
+you can check our all-in-one Digital Asset Management solution
+[Filerobot](https://www.filerobot.com/).
+
+
+
+
+
+powered by [Cloudimage](https://www.cloudimage.io/)
+([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
+
+## Table of contents
+
+* [Demo](#demo)
+* [Requirements](#requirements)
+* [Step 1: Installation](#installation)
+* [Step 2: Initialize](#initialize)
+* [Step 3: Implement](#implement)
+* [Configuration](#configuration)
+* [Image properties](#image_properties)
+* [Lazy loading](#lazy_loading)
+* [Process dynamically loaded images](#dynamically-loaded)
+* [Examples & workarounds](#examples_workarounds)
+* [Browser support](#browser_support)
+* [Filerobot UI Family](#ui_family)
+* [Contributing](#contributing)
+* [License](#license)
+
+
+## Demo
+
+To see the Cloudimage Responsive plugin in action, please check out the
+[Demo page](https://scaleflex.github.io/js-cloudimage-responsive/).
+Play with your browser's window size and observe your
+Inspector's Network tab to see how Cloudimage delivers the optimal
+image size to your browser, hence accelerating the overall page
+loading time.
+
+## Requirements
+
+### Cloudimage account
+
+To use the Cloudimage Responsive plugin, you will need a
+Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
+registering [here](https://www.cloudimage.io/en/register_page).
+Once your token is created, you can configure it as described below.
+This token allows you to use 25GB of image cache and 25GB of worldwide
+CDN traffic per month for free.
+
+### Layout/CSS
+
+In order to use smooth transition between preview image and good quality and size image, the plugin uses absolute positioning for images and wraps an image tag with a div element with relative positioning.
+
+You have to pay attention to the following things:
+
+- the plugin sets 100% width for the img tag and position:absolute (You should not apply other sizes or change position property. If you need to change the width of an image or its position, you have to set it to the wrapper element)
+
+## Step 1: Installation
+
+Add a style tag with CDN link to js-cloudimage-responsive in the head of your site
+
+```javascript
+
+```
+
+Add a script tag with CDN link to js-cloudimage-responsive
+
+```javascript
+
+```
+
+or using npm
+
+```
+$ npm install --save js-cloudimage-responsive
+```
+
+## Step 2: Initialize
+
+After adding the js-cloudimage-responsive library, simply iniatialise it with your **token** and the **baseURL** of your image storage:
+
+```javascript
+
+```
+
+or in new style with npm:
+
+```javascript
+
+import 'js-cloudimage-responsive';
+
+const ciResponsive = new window.CIResponsive({
+ token: 'demo',
+ baseURL: 'https://cloudimage.public.airstore.io/demo/' // optional
+});
+```
+
+**NOTE**: You should put the scripts below all your content in the body tag and above all other scripts. After inserting the scripts, the plugin immediately starts processing all images with ci-src and ci-bg-url attributes. (If the scripts are put into the head tag, no images will be detected and processed. If the scripts are put below all other scripts on your page, the images will be not showed until all the scripts are downloaded.)
+
+## Step 3: Implement in an img tag or use it as a background image
+
+### img tag
+
+Finally, just use `ci-src` instead of the `src` attribute in image tag:
+
+```html
+
+```
+
+NOTE: setting "ci-ratio" is recommended to prevent page layout jumping. The parameter is used to calculate the image height to hold the image position while the image is loading.
+
+
+
+### background image
+
+Use `ci-bg-url` instead of the CSS background-image property `background-image: url(...)`:
+
+```html
+
+```
+
+
+
+## Configuration
+
+### token
+
+###### Type: **String** | Default: **"demo"** | _required_
+
+Your Cloudimage customer token.
+[Subscribe](https://www.cloudimage.io/en/register_page) for a
+Cloudimage account to get one. The subscription takes less than a
+minute and is totally free.
+
+### domain
+
+###### Type: **String** | Default: **"cloudimg.io"**
+
+Use your custom domain.
+
+### imgSelector
+
+###### Type: **String** | Default: **"ci-src"**
+
+Cloudimage Responsive Selector for images.
+
+### bgSelector
+
+###### Type: **String** | Default: **"ci-bg-url"**
+
+Cloudimage Responsive Selector for background images.
+
+### doNotReplaceURL
+
+###### Type: **bool** | Default: **false**
+
+If set to **true**, the plugin will only add query parameters to the provided image source URL.
+
+### baseURL
+
+###### Type: **String** | _optional_
+
+Your image folder on server; this alows to shorten your origin image URLs.
+
+### apiVersion
+
+###### Type: **String** |Default: **'v7'** | _optional_
+Allow to use a specific version of API.
+
+- set a specific version of API
+```javascript
+
+```
+- disable API version
+```javascript
+
+```
+
+
+### lazyLoading
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
+
+### params
+
+###### Type: **String** | Default: **'org_if_sml=1'** | _optional_
+
+Applies default Cloudimage operations/filters to your image like brightness, contrast, rotation, etc.
+Multiple params can be applied, separated by "```&```" e.g. wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1
+
+```javascript
+{
+ ...,
+ params: 'org_if_sml=1'
+}
+```
+
+#### alternative syntax
+
+###### Type: **Object**
+
+```javascript
+{
+ ...,
+ params: {
+ org_if_sml: 1,
+ grey: 1,
+ ...
+ }
+}
+```
+
+[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
+
+
+### placeholderBackground
+
+###### Type: **String** | Default: **'#f4f4f4'** | _optional_
+
+Placeholder coloured background while the image is loading
+
+
+### exactSize
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Forces to load exact size of images.
+By default, the plugin rounds the container width to next possible value which can be divided by 100 without the remainder.
+This is done for caching reasons so that not all images are cached by 1px, but only 100px, 200px, 300px...
+
+### limitFactor
+
+###### Type: **Number** | Default: **100** | _optional_
+
+Rounds up the size of the image to the nearest limitFactor value.
+
+For example:
+* for an image with width **358px** and limitFactor equal to **100**, the plugin will round up to 400px;
+* for an image with width **358px** and limitFactor equal to **5**, the plugin will round up to 360px.
+
+
+### devicePixelRatioList
+
+###### Type: **[Number,...]** | Default: **[1, 1.5, 2, 3, 4]** | _optional_
+
+List of supported device pixel ratios. If there is no need to support retina devices, you should set empty array `devicePixelRatioList: []`
+
+
+### lowQualityPreview
+
+###### Type: **Object**
+
+* `lowQualityPreview.minImgWidth` number (default: 400) - minimal width of an image to load a low-quality preview image
+
+Example:
+
+```javascript
+lowQualityPreview: {
+ minImgWidth = 400
+}
+```
+
+### presets
+
+###### Type: **Object**
+
+Default:
+
+```javascript
+{
+ ...,
+ presets: {
+ xs: '(max-width: 575px)', // up to 575 PHONE
+ sm: '(min-width: 576px)', // 576 - 767 PHABLET
+ md: '(min-width: 768px)', // 768 - 991 TABLET
+ lg: '(min-width: 992px)', // 992 - 1199 SMALL_LAPTOP_SCREEN
+ xl: '(min-width: 1200px)' // from 1200 USUALSCREEN
+ }
+}
+```
+
+Breakpoints shortcuts to use in image size property, can be overridden.
+
+### imageSizeAttributes
+
+###### Type: **String** | possible values: 'use', 'ignore', 'take-ratio' | Default: **'use'**
+
+If width and height attributes are set:
+
+**use** - width & height attributes values will be used to calculate image size (according to user's DPR) and **ratio**.
+
+**take-ratio** - width & height attributes values will be used only to calculate **ratio**.
+
+**ignore** - width & height attributes will be ignored.
+
+If width and height attributes are NOT set, image container size will be detected to calculate result image size (according to user's DPR)
+
+*Note*: If only width or height attributes is set, ratio is going to be taken from ci-ratio image attribute
+
+## Image properties
+
+The Cloudimage responsive plugin will make an image on your page responsive if you replace the `src` with a `ci-src` attribute in the `` tag:
+
+### ci-src
+
+###### Type: **String** | Default: **undefined** | _required_
+
+Original image hosted on your web server. You can use absolute path or
+relative to the baseURL in your config.
+
+**NOTES:**
+* The plugin uses a special algorithm to detect the width of the image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+* Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
+* Parameters after "?" question mark will be added at the end of result URL after processing by the plugin.
+
+### width
+
+###### Type: **String** (e.g. 300px, 20vw) | Default: **undefined**
+
+If it's set, the plugin will use width as a fixed value and change only according device pixel ratio.
+
+### height
+
+###### Type: **String** (e.g. 300px, 20vh) | Default: **undefined**
+
+If it's set, the plugin will use height as fixed value and change only according device pixel ratio.
+
+### ci-params
+
+###### Type: **String** | Default: **undefined** | _optional_
+
+You can apply any Cloudimage operations/filters to your image, e.g. brightness, contrast, rotation...
+Multiple parameters can be applied, separated by "```&```" e.g. **wat_scale=35&wat_gravity=northeast&wat_pad=10&grey=1**
+
+```javascript
+ci-params="gray=1&bright=10"
+```
+
+#### alternative syntax: type: **Object**
+
+```javascript
+ci-params="{
+ bright: 10,
+ grey: 1,
+ ...
+}"
+```
+
+[Full cloudimage v7 documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation-v7/en/introduction)
+
+### ci-sizes
+
+###### Type: **Object** | Default: **undefined**
+
+**{ preset breakpoint | 'media query': imageProps }**:
+
+preset breakpoints: **xs, sm, md, lg, xl** ([can be changed with](#presets))
+imageProps: **{ w, h, r, src }** where
+
+* **w** - width,
+* **h** - height,
+* **r** - ratio,
+* **src** - original image hosted on your web server. You can use absolute path or relative to the baseURL in your config.
+
+```jsx
+
+```
+
+You can drop some breakpoints, for example:
+
+```jsx
+
+```
+
+##### new experimental syntax
+
+md: { w: '40vw', h: 350 } or md: { w: 250, h: '20vh' }
+
+adds a possibility to use fixed height or width and change the other dimension dynamically
+
+**NOTE:** if size is not set, the plugin uses a special algorithm to
+detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+
+### ci-ratio (or data-ci-ratio)
+
+###### Type: **Number** | _optional_
+
+It is recommended to set this parameter to prevent page layout jumping. It is used to calculate the image height to hold the image position while the image is loading.
+
+To see the full Cloudimage documentation, [click here](https://docs.cloudimage.io/go/cloudimage-documentation).
+
+### ci-not-lazy (or data-ci-not-lazy)
+
+###### Type: **Bool**
+
+Switch off lazy loading on a per-image basis.
+
+## Lazy Loading
+
+Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
+
+The example below uses the [lazysizes](https://github.com/aFarkas/lazysizes)
+library using Intersection Observer API.
+
+[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
+
+add the following scripts right after js-cloudimage-responsive script
+
+```javascript
+
+
+
+```
+
+the initialization script
+
+```javascript
+
+ ```
+
+## Process dynamically loaded images!
+
+In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
+
+```javascript
+
+```
+
+The process function accepts a second argument. It expects an [HTML Element](https://developer.mozilla.org/fr/docs/Web/API/HTMLElement), if provided it will be used as the root for the images lookup.
+
+## Examples & workarounds
+* [See all](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md)
+* [Cropping](https://github.com/scaleflex/js-cloudimage-responsive/blob/master/examples/EXAMPLES.md#cropping)
+
+
+## Browser support
+
+Tested in all modern browsers and IE 11,10,9.
+
+If you want to address the use case where your visitors disable JS, You have to add a noscript tag:
+
+```html
+
+```
+
+NOTE: If you use lazy loading with IntersectionObserver, you must
+manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
+for cross-browser support.
+
+## Filerobot UI Familiy
+
+* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
+* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
+* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
+* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
+* [Uploader](https://github.com/scaleflex/filerobot-uploader)
+
+## Contributing!
+
+All contributions are super welcome!
+
+
+## License
+JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT).
+
diff --git a/README_v6.md b/README_v6.md
index e432911..866b9dd 100644
--- a/README_v6.md
+++ b/README_v6.md
@@ -1,469 +1,469 @@
-[![Release](https://img.shields.io/badge/release-v2.3.0-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
-[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
-[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
-[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
-[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
-
-
-
-This plugin detects the width of any image container as well as the device pixel ratio
-density to load the optimal image size needed.
-Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
-automated image optimization service.
-
-When an image is first loaded on your website or mobile app,
-Cloudimage's resizing servers will download the origin image from
-the source, resize it for the client's screen size and deliver to your users through one or multiple
-Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
-
-**NOTE:** Your original (master) images should be stored on a server
-or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
-HTTP or HTTPS by Cloudimage. If you want to upload your master images to
-Cloudimage, contact us at
-[hello@cloudimage.io](mailto:hello@cloudimage.io).
-
-
-
-
-
-powered by [Cloudimage](https://www.cloudimage.io/)
-([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
-
-## Table of contents
-
-* [Demo](#demo)
-* [Requirements](#requirements)
-* [Step 1: Installation](#installation)
-* [Step 2: Initialize](#initialize)
-* [Step 3: Implement](#implement)
-* [Configuration](#configuration)
-* [Image properties](#image_properties)
-* [Lazy loading](#lazy_loading)
-* [Process dynamically loaded images](#dynamically-loaded)
-* [Browser support](#browser_support)
-* [Filerobot UI Family](#ui_family)
-* [Contributing](#contributing)
-* [License](#license)
-
-
-## Demo
-
-To see the Cloudimage Responsive plugin in action, please check out the
-[Demo page](https://scaleflex.github.io/js-cloudimage-responsive/).
-Play with your browser's window size and observe your
-Inspector's Network tab to see how Cloudimage delivers the optimal
-image size to your browser, hence accelerating the overall page
-loading time.
-
-## Requirements
-
-To use the Cloudimage Responsive plugin, you will need a
-Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
-registering [here](https://www.cloudimage.io/en/register_page).
-Once your token is created, you can configure it as described below.
-This token allows you to use 25GB of image cache and 25GB of worldwide
-CDN traffic per month for free.
-
-## Step 1: Installation
-
-Add script tag with CDN link to js-cloudimage-responsive
-
-```javascript
-
-```
-
-You may also use major version number instead of fixed version to have the latest version available.
-
-```javascript
-
-```
-
-or using npm
-
-```
-$ npm install --save js-cloudimage-responsive
-```
-
-## Step 2: Initialize
-
-After adding the js-cloudimage-responsive lib, simply iniatialize it with your **token** and the **baseUrl** of your image storage:
-
-```javascript
-
-```
-
-or in new style with npm:
-
-```javascript
-
-import 'js-cloudimage-responsive';
-
-const ciResponsive = new window.CIResponsive({
- token: 'demo',
- baseUrl: 'https://cloudimage.public.airstore.io/demo/' // optional
-});
-```
-
-## Step 3: Implement in img tag or use it as background image
-
-### img tag
-
-Finally, just use the `ci-src` instead of the `src` attribute in image tag:
-
-```html
-
-```
-
-NOTE: "ratio" is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
-
-
-
-### background image
-
-Use the `ci-bg` instead of CSS background-image property `background-image: url(...)`:
-
-```html
-
-```
-
-
-
-## Config
-
-### token
-
-###### Type: **String** | Default: **"demo"** | _required_
-
-Your Cloudimage customer token.
-[Subscribe](https://www.cloudimage.io/en/register_page) for a
-Cloudimage account to get one. The subscription takes less than a
-minute and is totally free.
-
-### domain
-
-###### Type: **String** | Default: **"cloudimg.io"**
-
-Use your custom domain.
-
-### baseUrl
-
-###### Type: **String** | Default: **"/"** | _optional_
-
-Your image folder on server, this alows to shorten your origin image URLs.
-
-### lazyLoading
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
-
-### imgLoadingAnimation
-
-###### Type: **Bool** | Default: **true** | _optional_
-
-Applies a nice interlacing effect for preview transition
-
-### filters
-
-###### Type: **String** | Default: **'foil1'** | _optional_
-
-Applies default Cloudimage filters to your image, e.g. fcontrast, fpixelate, fgaussian, backtransparent,
-rotation... Multiple filters can be applied, separated by "```.```" (dot).
-
-[Full documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation/en/filters/)
-
-
-### placeholderBackground
-
-###### Type: **String** | Default: **'#f4f4f4'** | _optional_
-
-Placeholder colored background while the image is loading
-
-
-### exactSize
-
-###### Type: **Bool** | Default: **false** | _optional_
-
-Forces to load exact size of images.
-By default the plugin rounds container width to next possible value which can be divided by 100 without the remainder.
-It’s done for cache reasons so that not all images are cached by 1px, but only 100px, 200px, 300px …
-
-### presets
-
-###### Type: **Object**
-
-Default:
-
-```javascript
-
-
-```
-
-Breakpoints shortcuts to use in image size property, can be overwridden.
-
-## Image properties
-
-Cloudimage responsive plugin will make image on your page responsive if you replace the `src` with `ci-src` attribute in the `` tag:
-
-### ci-src
-
-###### Type: **String** | Default: **undefined** | _required_
-
-Original image hosted on your web server. You can use absolute path or
-relative to baseUrl in your config.
-
-**NOTES:**
-
-The plugin uses a special algorithm to detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-
-Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
-
-### operation (or o)
-
-###### Type: **String** | Default: **width** | _optional_
-
-Operation allows to customize the behaviour of the plugin for specific images:
-
-**width** - to resize with a specific width. This is useful when you want to have a fixed width, regardless of screen size.
-
-**height** - to resize with a specific height. This is useful when you want to have a fixed height, regardless of screen size.
-
-**crop** - to crop the image around the center
-
-**crop_px** - to crop an image with a non-centered focal point [doc](https://docs.cloudimage.io/go/cloudimage-documentation/en/operations/crop/positionable-crop)
-
-[see example in Code Sandbox](https://codesandbox.io/s/l530w827lq)
-
-**fit** - to resize the image in a box and keeping the proportions of the source image
-
-**cover** - to resize the image in a box without keeping the proportions of the source image
-
-**NOTES:**
-
-When you use an operation, you must specify the size for each screen size, see below
-
-Full documentation of all operations available [here](https://docs.cloudimage.io/go/cloudimage-documentation/en/operations/)
-
-### size (or s)
-
-###### Type: **String** | Default: **undefined** | _optional_ but _required_ when using operation
-
-Size of an image which is used as a base for creating retina ready and responsive image element.
-
-Examples (PR - stands for your device Pixel Ratio):
-
-**[width]**:
-
-```jsx
-
-```
-=> width: 250 * PR (px); height: auto;
-
-**[width x height]**:
-
-```jsx
-
-```
-
-=> width: 125 * PR (px); height: 200 * PR (px);
-
-**[x1, y1, x2, y2, -final_size]**:
-
-_final_size_ can be [width], [width x height], [x height]
-
-```jsx
-
-```
-
-=> will crop the top-left 500 x 500px square and resize to 300 x 300px;
-
-[see example in Code Sandbox](https://codesandbox.io/s/l530w827lq)
-
-**[preset breakpoint (xs,sm, md,lg,xl) or media query + ' ' + image size]**:
-
-```jsx
-
-```
-
-You can drop some breakpoints, for example:
-
-```jsx
-
-```
-
-**NOTE:** if size is not set, the plugin uses a special algorithm to
-detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
-
-For example:
-
-```jsx
-
-```
-
-### filters (or f)
-
-###### Type: **String** | Default: **none** | _optional_
-
-Filters allow you to modify the image's apperance and can be added on top of the resizing features above.
-
-**fgrey** - apply a greyscale filter on the image
-
-**fgaussian[0..10]** - apply a gaussian blur filter on the image
-
-**fcontrast[-100..100]** - apply a contrast filter on the image
-
-**fbright[0..255]** - apply a brightness filter on the image
-
-**fpixelate[0..100]** - apply a pixelate filter on the image
-
-**fradius[0..500]** - create a radius on the corners
-
-Full documentation of all filters available [here](https://docs.cloudimage.io/go/cloudimage-documentation/en/filters/)
-
-### ratio (or r)
-
-###### Type: **Number** | _optional_
-
-It is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
-
-To see the full cloudimage documentation [click here](https://docs.cloudimage.io/go/cloudimage-documentation)
-
-## Lazy Loading
-
-Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
-
-The example below uses [lazysizes](https://github.com/aFarkas/lazysizes)
-library using Intersection Observer API.
-
-[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
-
-add the following scripts right after js-cloudimage-responsive script
-
-```javascript
-
-
-
-```
-
-the initialization script
-
-```javascript
-
- ```
-
-## Process dynamically loaded images!
-
-In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
-
-```javascript
-
-```
-
-## Browser support
-
-Tested in all modern browsers and IE 11.
-
-NOTE: If you use lazy loading with IntersectionObserver, you must
-manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
-for cross-browser support.
-
-## Filerobot UI Familiy
-
-* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
-* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
-* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
-* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
-* [Uploader](https://github.com/scaleflex/filerobot-uploader)
-
-## Contributing!
-
-All contributions are super welcome!
-
-
-## License
-JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT)
-
+[![Release](https://img.shields.io/badge/release-v2.3.0-blue.svg)](https://github.com/scaleflex/js-cloudimage-responsive/releases)
+[![Free plan](https://img.shields.io/badge/price-includes%20free%20plan-green.svg)](https://www.cloudimage.io/en/home#b38181a6-b9c8-4015-9742-7b1a1ad382d5)
+[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)](#contributing)
+[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
+[![Scaleflex team](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-the%20Scaleflex%20team-6986fa.svg)](https://www.scaleflex.it/en/home)
+
+
+
+This plugin detects the width of any image container as well as the device pixel ratio
+density to load the optimal image size needed.
+Images are resized on-the-fly via the Cloudimage service, thus offering a comprehensive
+automated image optimization service.
+
+When an image is first loaded on your website or mobile app,
+Cloudimage's resizing servers will download the origin image from
+the source, resize it for the client's screen size and deliver to your users through one or multiple
+Content Delivery Networks (CDNs). The generated image formats are cached in the CDN and will be delivered rocket fast on any subsequent request.
+
+**NOTE:** Your original (master) images should be stored on a server
+or storage bucket (S3, Google Cloud, Azure Blob...) reachable over
+HTTP or HTTPS by Cloudimage. If you want to upload your master images to
+Cloudimage, contact us at
+[hello@cloudimage.io](mailto:hello@cloudimage.io).
+
+
+
+
+
+powered by [Cloudimage](https://www.cloudimage.io/)
+([Watch the video here](https://www.youtube.com/watch?time_continue=2&v=JFZSE1vYb0k))
+
+## Table of contents
+
+* [Demo](#demo)
+* [Requirements](#requirements)
+* [Step 1: Installation](#installation)
+* [Step 2: Initialize](#initialize)
+* [Step 3: Implement](#implement)
+* [Configuration](#configuration)
+* [Image properties](#image_properties)
+* [Lazy loading](#lazy_loading)
+* [Process dynamically loaded images](#dynamically-loaded)
+* [Browser support](#browser_support)
+* [Filerobot UI Family](#ui_family)
+* [Contributing](#contributing)
+* [License](#license)
+
+
+## Demo
+
+To see the Cloudimage Responsive plugin in action, please check out the
+[Demo page](https://scaleflex.github.io/js-cloudimage-responsive/).
+Play with your browser's window size and observe your
+Inspector's Network tab to see how Cloudimage delivers the optimal
+image size to your browser, hence accelerating the overall page
+loading time.
+
+## Requirements
+
+To use the Cloudimage Responsive plugin, you will need a
+Cloudimage token to deliver your images over CDN. Don't worry, it only takes seconds to get one by
+registering [here](https://www.cloudimage.io/en/register_page).
+Once your token is created, you can configure it as described below.
+This token allows you to use 25GB of image cache and 25GB of worldwide
+CDN traffic per month for free.
+
+## Step 1: Installation
+
+Add script tag with CDN link to js-cloudimage-responsive
+
+```javascript
+
+```
+
+You may also use major version number instead of fixed version to have the latest version available.
+
+```javascript
+
+```
+
+or using npm
+
+```
+$ npm install --save js-cloudimage-responsive
+```
+
+## Step 2: Initialize
+
+After adding the js-cloudimage-responsive lib, simply iniatialize it with your **token** and the **baseUrl** of your image storage:
+
+```javascript
+
+```
+
+or in new style with npm:
+
+```javascript
+
+import 'js-cloudimage-responsive';
+
+const ciResponsive = new window.CIResponsive({
+ token: 'demo',
+ baseUrl: 'https://cloudimage.public.airstore.io/demo/' // optional
+});
+```
+
+## Step 3: Implement in img tag or use it as background image
+
+### img tag
+
+Finally, just use the `ci-src` instead of the `src` attribute in image tag:
+
+```html
+
+```
+
+NOTE: "ratio" is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
+
+
+
+### background image
+
+Use the `ci-bg` instead of CSS background-image property `background-image: url(...)`:
+
+```html
+
+```
+
+
+
+## Config
+
+### token
+
+###### Type: **String** | Default: **"demo"** | _required_
+
+Your Cloudimage customer token.
+[Subscribe](https://www.cloudimage.io/en/register_page) for a
+Cloudimage account to get one. The subscription takes less than a
+minute and is totally free.
+
+### domain
+
+###### Type: **String** | Default: **"cloudimg.io"**
+
+Use your custom domain.
+
+### baseUrl
+
+###### Type: **String** | Default: **"/"** | _optional_
+
+Your image folder on server, this alows to shorten your origin image URLs.
+
+### lazyLoading
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Only images close to the client's viewport will be loaded, hence accelerating the page loading time. If set to **true**, an additional script must be included, see [Lazy loading](#lazy_loading)
+
+### imgLoadingAnimation
+
+###### Type: **Bool** | Default: **true** | _optional_
+
+Applies a nice interlacing effect for preview transition
+
+### filters
+
+###### Type: **String** | Default: **'foil1'** | _optional_
+
+Applies default Cloudimage filters to your image, e.g. fcontrast, fpixelate, fgaussian, backtransparent,
+rotation... Multiple filters can be applied, separated by "```.```" (dot).
+
+[Full documentation here.](https://docs.cloudimage.io/go/cloudimage-documentation/en/filters/)
+
+
+### placeholderBackground
+
+###### Type: **String** | Default: **'#f4f4f4'** | _optional_
+
+Placeholder colored background while the image is loading
+
+
+### exactSize
+
+###### Type: **Bool** | Default: **false** | _optional_
+
+Forces to load exact size of images.
+By default the plugin rounds container width to next possible value which can be divided by 100 without the remainder.
+It’s done for cache reasons so that not all images are cached by 1px, but only 100px, 200px, 300px …
+
+### presets
+
+###### Type: **Object**
+
+Default:
+
+```javascript
+
+
+```
+
+Breakpoints shortcuts to use in image size property, can be overwridden.
+
+## Image properties
+
+Cloudimage responsive plugin will make image on your page responsive if you replace the `src` with `ci-src` attribute in the `` tag:
+
+### ci-src
+
+###### Type: **String** | Default: **undefined** | _required_
+
+Original image hosted on your web server. You can use absolute path or
+relative to baseUrl in your config.
+
+**NOTES:**
+
+The plugin uses a special algorithm to detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+
+Images where `ci-src` is not used will be delivered in a standard, non-responsive way.
+
+### operation (or o)
+
+###### Type: **String** | Default: **width** | _optional_
+
+Operation allows to customize the behaviour of the plugin for specific images:
+
+**width** - to resize with a specific width. This is useful when you want to have a fixed width, regardless of screen size.
+
+**height** - to resize with a specific height. This is useful when you want to have a fixed height, regardless of screen size.
+
+**crop** - to crop the image around the center
+
+**crop_px** - to crop an image with a non-centered focal point [doc](https://docs.cloudimage.io/go/cloudimage-documentation/en/operations/crop/positionable-crop)
+
+[see example in Code Sandbox](https://codesandbox.io/s/l530w827lq)
+
+**fit** - to resize the image in a box and keeping the proportions of the source image
+
+**cover** - to resize the image in a box without keeping the proportions of the source image
+
+**NOTES:**
+
+When you use an operation, you must specify the size for each screen size, see below
+
+Full documentation of all operations available [here](https://docs.cloudimage.io/go/cloudimage-documentation/en/operations/)
+
+### size (or s)
+
+###### Type: **String** | Default: **undefined** | _optional_ but _required_ when using operation
+
+Size of an image which is used as a base for creating retina ready and responsive image element.
+
+Examples (PR - stands for your device Pixel Ratio):
+
+**[width]**:
+
+```jsx
+
+```
+=> width: 250 * PR (px); height: auto;
+
+**[width x height]**:
+
+```jsx
+
+```
+
+=> width: 125 * PR (px); height: 200 * PR (px);
+
+**[x1, y1, x2, y2, -final_size]**:
+
+_final_size_ can be [width], [width x height], [x height]
+
+```jsx
+
+```
+
+=> will crop the top-left 500 x 500px square and resize to 300 x 300px;
+
+[see example in Code Sandbox](https://codesandbox.io/s/l530w827lq)
+
+**[preset breakpoint (xs,sm, md,lg,xl) or media query + ' ' + image size]**:
+
+```jsx
+
+```
+
+You can drop some breakpoints, for example:
+
+```jsx
+
+```
+
+**NOTE:** if size is not set, the plugin uses a special algorithm to
+detect the width of image container and set the image size accordingly. This is the recommended way of using the Cloudimage Responsive plugin.
+
+For example:
+
+```jsx
+
+```
+
+### filters (or f)
+
+###### Type: **String** | Default: **none** | _optional_
+
+Filters allow you to modify the image's apperance and can be added on top of the resizing features above.
+
+**fgrey** - apply a greyscale filter on the image
+
+**fgaussian[0..10]** - apply a gaussian blur filter on the image
+
+**fcontrast[-100..100]** - apply a contrast filter on the image
+
+**fbright[0..255]** - apply a brightness filter on the image
+
+**fpixelate[0..100]** - apply a pixelate filter on the image
+
+**fradius[0..500]** - create a radius on the corners
+
+Full documentation of all filters available [here](https://docs.cloudimage.io/go/cloudimage-documentation/en/filters/)
+
+### ratio (or r)
+
+###### Type: **Number** | _optional_
+
+It is recommended to prevent page layout jumping. The parameter is used to calculate image height to hold the image position while image is loading.
+
+To see the full cloudimage documentation [click here](https://docs.cloudimage.io/go/cloudimage-documentation)
+
+## Lazy Loading
+
+Lazy loading is not included into js-cloudimage-responsive by default. If you [enable lazy loading](#lazy_loading_config) in the configuration, you need to add an additional library.
+
+The example below uses [lazysizes](https://github.com/aFarkas/lazysizes)
+library using Intersection Observer API.
+
+[Code Sandbox example](https://codesandbox.io/s/6jkovjvkxz)
+
+add the following scripts right after js-cloudimage-responsive script
+
+```javascript
+
+
+
+```
+
+the initialization script
+
+```javascript
+
+ ```
+
+## Process dynamically loaded images!
+
+In case you load some images dynamically you need to trigger `ciResponsive.process()` manually.
+
+```javascript
+
+```
+
+## Browser support
+
+Tested in all modern browsers and IE 11.
+
+NOTE: If you use lazy loading with IntersectionObserver, you must
+manually add the [IntersectionObserver polyfill](https://github.com/w3c/IntersectionObserver/tree/master/polyfill)
+for cross-browser support.
+
+## Filerobot UI Familiy
+
+* [React Cloudimage Responsive](https://github.com/scaleflex/react-cloudimage-responsive)
+* [Angular Cloudimage Responsive](https://github.com/scaleflex/ng-cloudimage-responsive)
+* [JS Cloudimage 360 view](https://github.com/scaleflex/js-cloudimage-360-view)
+* [Image Editor](https://github.com/scaleflex/filerobot-image-editor)
+* [Uploader](https://github.com/scaleflex/filerobot-uploader)
+
+## Contributing!
+
+All contributions are super welcome!
+
+
+## License
+JS Cloudimage Responsive is provided under the [MIT License](https://opensource.org/licenses/MIT)
+
diff --git a/build/blur-hash/js-cloudimage-responsive.min.js b/build/blur-hash/js-cloudimage-responsive.min.js
index 2afd1d8..05407d1 100644
--- a/build/blur-hash/js-cloudimage-responsive.min.js
+++ b/build/blur-hash/js-cloudimage-responsive.min.js
@@ -1,12 +1,12 @@
/*!
*
- * js-cloudimage-responsive v4.8.2 with blur hash placeholder technique
+ * js-cloudimage-responsive v4.8.3 with blur hash placeholder technique
* https://github.com/scaleflex/js-cloudimage-responsive
*
* Copyright (c) 2019 scaleflex
* Released under the MIT license
*
- * Date: 2021-11-08T15:31:39.658Z
+ * Date: 2021-12-09T14:21:55.660Z
*
- */!function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=216)}([function(t,e,r){(function(e){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,r(119))},function(t,e,r){"use strict";var n,o,i,a=r(83),u=r(13),c=r(0),f=r(4),s=r(6),p=r(8),l=r(27),d=r(34),v=r(25),h=r(17),y=r(14).f,g=r(33),m=r(38),b=r(28),w=r(5),x=r(48),O=c.Int8Array,S=O&&O.prototype,A=c.Uint8ClampedArray,j=A&&A.prototype,T=O&&m(O),P=S&&m(S),I=Object.prototype,E=c.TypeError,R=w("toStringTag"),_=x("TYPED_ARRAY_TAG"),N=x("TYPED_ARRAY_CONSTRUCTOR"),M=a&&!!b&&"Opera"!==l(c.opera),C=!1,z={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},L={BigInt64Array:8,BigUint64Array:8},U=function(t){if(!s(t))return!1;var e=l(t);return p(z,e)||p(L,e)};for(n in z)(i=(o=c[n])&&o.prototype)?v(i,N,o):M=!1;for(n in L)(i=(o=c[n])&&o.prototype)&&v(i,N,o);if((!M||!f(T)||T===Function.prototype)&&(T=function(){throw E("Incorrect invocation")},M))for(n in z)c[n]&&b(c[n],T);if((!M||!P||P===I)&&(P=T.prototype,M))for(n in z)c[n]&&b(c[n].prototype,P);if(M&&m(j)!==P&&b(j,P),u&&!p(P,R))for(n in C=!0,y(P,R,{get:function(){return s(this)?this[_]:void 0}}),z)c[n]&&v(c[n],_,n);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:M,TYPED_ARRAY_CONSTRUCTOR:N,TYPED_ARRAY_TAG:C&&_,aTypedArray:function(t){if(U(t))return t;throw E("Target is not a typed array")},aTypedArrayConstructor:function(t){if(f(t)&&(!b||g(T,t)))return t;throw E(d(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,r){if(u){if(r)for(var n in z){var o=c[n];if(o&&p(o.prototype,t))try{delete o.prototype[t]}catch(t){}}P[t]&&!r||h(P,t,r?e:M&&S[t]||e)}},exportTypedArrayStaticMethod:function(t,e,r){var n,o;if(u){if(b){if(r)for(n in z)if((o=c[n])&&p(o,t))try{delete o[t]}catch(t){}if(T[t]&&!r)return;try{return h(T,t,r?e:M&&T[t]||e)}catch(t){}}for(n in z)!(o=c[n])||o[t]&&!r||h(o,t,e)}},isView:function(t){if(!s(t))return!1;var e=l(t);return"DataView"===e||p(z,e)||p(L,e)},isTypedArray:U,TypedArray:T,TypedArrayPrototype:P}},function(t,e){var r=Function.prototype,n=r.bind,o=r.call,i=n&&n.bind(o);t.exports=n?function(t){return t&&i(o,t)}:function(t){return t&&function(){return o.apply(t,arguments)}}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){t.exports=function(t){return"function"==typeof t}},function(t,e,r){var n=r(0),o=r(80),i=r(8),a=r(48),u=r(79),c=r(78),f=o("wks"),s=n.Symbol,p=s&&s.for,l=c?s:s&&s.withoutSetter||a;t.exports=function(t){if(!i(f,t)||!u&&"string"!=typeof f[t]){var e="Symbol."+t;u&&i(s,t)?f[t]=s[t]:f[t]=c&&p?p(e):l(e)}return f[t]}},function(t,e,r){var n=r(4);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},function(t,e){var r=Function.prototype.call;t.exports=r.bind?r.bind(r):function(){return r.apply(r,arguments)}},function(t,e,r){var n=r(2),o=r(12),i=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(o(t),e)}},function(t,e,r){var n=r(0),o=r(6),i=n.String,a=n.TypeError;t.exports=function(t){if(o(t))return t;throw a(i(t)+" is not an object")}},function(t,e,r){var n=r(37);t.exports=function(t){return n(t.length)}},function(t,e,r){var n=r(0),o=r(4),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(n[t]):n[t]&&n[t][e]}},function(t,e,r){var n=r(0),o=r(59),i=n.Object;t.exports=function(t){return i(o(t))}},function(t,e,r){var n=r(3);t.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,r){var n=r(0),o=r(13),i=r(81),a=r(9),u=r(46),c=n.TypeError,f=Object.defineProperty;e.f=o?f:function(t,e,r){if(a(t),e=u(e),a(r),i)try{return f(t,e,r)}catch(t){}if("get"in r||"set"in r)throw c("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},function(t,e,r){var n=r(18),o=r(2),i=r(32),a=r(12),u=r(10),c=r(90),f=o([].push),s=function(t){var e=1==t,r=2==t,o=3==t,s=4==t,p=6==t,l=7==t,d=5==t||p;return function(v,h,y,g){for(var m,b,w=a(v),x=i(w),O=n(h,y),S=u(x),A=0,j=g||c,T=e?j(v,S):r||l?j(v,0):void 0;S>A;A++)if((d||A in x)&&(b=O(m=x[A],A,w),t))if(e)T[A]=b;else if(b)switch(t){case 3:return!0;case 5:return m;case 6:return A;case 2:f(T,m)}else switch(t){case 4:return!1;case 7:f(T,m)}return p?-1:o||s?s:T}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},function(t,e,r){var n=r(0),o=r(4),i=r(34),a=n.TypeError;t.exports=function(t){if(o(t))return t;throw a(i(t)+" is not a function")}},function(t,e,r){var n=r(0),o=r(4),i=r(8),a=r(25),u=r(62),c=r(49),f=r(19),s=r(51).CONFIGURABLE,p=f.get,l=f.enforce,d=String(String).split("String");(t.exports=function(t,e,r,c){var f,p=!!c&&!!c.unsafe,v=!!c&&!!c.enumerable,h=!!c&&!!c.noTargetGet,y=c&&void 0!==c.name?c.name:e;o(r)&&("Symbol("===String(y).slice(0,7)&&(y="["+String(y).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!i(r,"name")||s&&r.name!==y)&&a(r,"name",y),(f=l(r)).source||(f.source=d.join("string"==typeof y?y:""))),t!==n?(p?!h&&t[e]&&(v=!0):delete t[e],v?t[e]=r:a(t,e,r)):v?t[e]=r:u(e,r)})(Function.prototype,"toString",(function(){return o(this)&&p(this).source||c(this)}))},function(t,e,r){var n=r(2),o=r(16),i=n(n.bind);t.exports=function(t,e){return o(t),void 0===e?t:i?i(t,e):function(){return t.apply(e,arguments)}}},function(t,e,r){var n,o,i,a=r(123),u=r(0),c=r(2),f=r(6),s=r(25),p=r(8),l=r(47),d=r(64),v=r(50),h=u.TypeError,y=u.WeakMap;if(a||l.state){var g=l.state||(l.state=new y),m=c(g.get),b=c(g.has),w=c(g.set);n=function(t,e){if(b(g,t))throw new h("Object already initialized");return e.facade=t,w(g,t,e),e},o=function(t){return m(g,t)||{}},i=function(t){return b(g,t)}}else{var x=d("state");v[x]=!0,n=function(t,e){if(p(t,x))throw new h("Object already initialized");return e.facade=t,s(t,x,e),e},o=function(t){return p(t,x)?t[x]:{}},i=function(t){return p(t,x)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!f(e)||(r=o(e)).type!==t)throw h("Incompatible receiver, "+t+" required");return r}}}},function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?n:r)(e)}},function(t,e,r){var n,o=r(9),i=r(133),a=r(66),u=r(50),c=r(87),f=r(63),s=r(64),p=s("IE_PROTO"),l=function(){},d=function(t){return"
-
-
-
-
- JS Cloudimage Responsive
-
-
-
-
-
-
-
-
- Make your existing images responsive without creating new images. Upload one
- high quality original image and the plugin will resize, compress and accelerate images across
- the World in your site for all devices. The plugin supports lazy load with fancy
- animation on image load.
-
Resize large images to the size needed by your design and
- generate multiple images for different device screen size
-
-
Strip all unnecessary metadata and optimize JPEG, PNG and GIF compression
-
Efficiently lazy load images to speed initial page load and save bandwidth
-
Use the BlurHash representation of a placeholder for an image
- while it loads
-
-
Hold the image position so your page doesn't jump while images load
-
-
-
-
-
-
-
How it works
-
- The plugin detects the width of image's container and pixel ratio density of
- your device to load the exact image size you need. It processes images via
- Cloudimage.io service which offers comprehensive
- automated
- image optimization solutions.
-
-
- When an image is first loaded on your website or mobile app, Cloudimage's resizing servers will
- download your origin image from your origin server, resize it and
- deliver to your user via lightning-fast Content Delivery Networks (CDNs). Once the image is
- resized
- in the format of your choice, Cloudimage will send it to a Content Delivery Network, which will in turn deliver
- it rocket fast to your visitors, responsively across various screen sizes.
-
-
- Read the following
- article
- to learn more about Cloudimage.io service.
-
-
-
-
-
-
In numbers
-
-
- We have original image stored via CDN with 6240×4160 px resolution and
- 8.7 mb size:
- https://cdn.scaleflex.it/demo/redcharlie.jpg
- link
- In the table below we can see what size and resolution will be loaded depending on the image's container.
-
- * The plugin rounds container width to next possible value which can be divided by 100
- (configurable) without
- the remainder. It's done for cache reasons so that we cache not all images different by 1px,
- but only 100px, 200px, 300px …
-
-
-
-
-
-
-
Gallery demo
-
-
Change the size of your browser's window and reload the page to see how the Cloudimage Responsive plugin will
- deliver an optimized image for the screen size.
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
- industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and
- scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into
- electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release
- of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software
- like Aldus PageMaker including versions of Lorem Ipsum.
-
-
-
-
-
-
-
-
Ready to get started?
-
To use the plugin, you will need a Cloudimage token. Don't worry, it only takes seconds to get one by
- registering
- here. Once your token is created, you can configure
- it as
- described below.
- This token allows you to use 25GB of image cache and 25GB of worldwide CDN traffic per month for free.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Use the ci-src instead of the src attribute in image tag.
-
-
-
-
- NOTE: "ci-ratio" is recommended to prevent page layout jumping.
- The parameter is used to calculate image height to hold the image position while image is loading.
-
-
-
-
-
-
- Include the following scripts into your project after all content in body tag
-
-
-
-
-
-
- Initialize Cloudimage Responsive just right after scripts from the step above
-
-
-
- NOTE: You should put the scripts below all your content in the
- body tag and above all other scripts. After inserting the scripts the plugin starts immediately processing
- all images with ci-src, ci-bg-url attributes. (If the scripts are put into the head tag, no images will be
- detected and processed. If the scripts are put below all other scripts on your page, the images will be
- not showed until all the scripts downloaded.)
-