From e3888aee854c8f6f67648deee692336188c8e963 Mon Sep 17 00:00:00 2001
From: REJack
Date: Wed, 28 Aug 2019 11:42:16 +0200
Subject: [PATCH] created new gallery page - added filterizr to plugins -
created gallery demo
---
build/npm/Plugins.js | 6 +-
index.html | 8 +
index2.html | 8 +
index3.html | 8 +
package-lock.json | 27 +
package.json | 1 +
pages/UI/buttons.html | 8 +
pages/UI/general.html | 8 +
pages/UI/icons.html | 8 +
pages/UI/modals.html | 8 +
pages/UI/navbar.html | 8 +
pages/UI/ribbons.html | 8 +
pages/UI/sliders.html | 8 +
pages/UI/timeline.html | 8 +
pages/calendar.html | 8 +
pages/charts/chartjs.html | 8 +
pages/charts/flot.html | 8 +
pages/charts/inline.html | 8 +
pages/examples/404.html | 8 +
pages/examples/500.html | 8 +
pages/examples/blank.html | 8 +
pages/examples/contacts.html | 8 +
pages/examples/e_commerce.html | 8 +
pages/examples/invoice.html | 8 +
pages/examples/language-menu.html | 8 +
pages/examples/legacy-user-menu.html | 8 +
pages/examples/profile.html | 8 +
pages/examples/project_add.html | 8 +
pages/examples/project_detail.html | 8 +
pages/examples/project_edit.html | 8 +
pages/examples/projects.html | 8 +
pages/forms/advanced.html | 8 +
pages/forms/editors.html | 8 +
pages/forms/general.html | 8 +
pages/gallery.html | 745 ++++++++++++++++++
pages/layout/boxed.html | 8 +
pages/layout/collapsed-sidebar.html | 8 +
pages/layout/fixed-footer.html | 8 +
pages/layout/fixed-sidebar.html | 8 +
pages/layout/fixed-topnav.html | 8 +
pages/tables/data.html | 8 +
pages/tables/jsgrid.html | 8 +
pages/tables/simple.html | 8 +
pages/widgets.html | 8 +
plugins/filterizr/ActiveFilter.d.ts | 15 +
plugins/filterizr/BrowserWindow.d.ts | 16 +
plugins/filterizr/EventReceiver.d.ts | 12 +
plugins/filterizr/FilterContainer.d.ts | 36 +
.../FilterContainer/FilterContainer.d.ts | 28 +
.../StyledFilterContainer.d.ts | 6 +
plugins/filterizr/FilterContainer/index.d.ts | 1 +
plugins/filterizr/FilterContainer/styles.d.ts | 4 +
plugins/filterizr/FilterControls.d.ts | 19 +
plugins/filterizr/FilterItem.d.ts | 98 +++
plugins/filterizr/FilterItem/FilterItem.d.ts | 44 ++
.../FilterItem/StyledFilterItem.d.ts | 30 +
plugins/filterizr/FilterItem/index.d.ts | 1 +
plugins/filterizr/FilterItem/styles.d.ts | 5 +
plugins/filterizr/FilterItems.d.ts | 22 +
.../filterizr/FilterItems/FilterItems.d.ts | 23 +
.../FilterItems/StyledFilterItems.d.ts | 12 +
plugins/filterizr/FilterItems/index.d.ts | 1 +
plugins/filterizr/Filterizr.d.ts | 76 ++
plugins/filterizr/Filterizr/Filterizr.d.ts | 75 ++
plugins/filterizr/Filterizr/index.d.ts | 1 +
.../Filterizr/installAsJQueryPlugin.d.ts | 1 +
plugins/filterizr/FilterizrElement.d.ts | 16 +
.../FilterizrOptions/FilterizrOptions.d.ts | 22 +
.../FilterizrOptions/defaultOptions.d.ts | 3 +
plugins/filterizr/FilterizrOptions/index.d.ts | 2 +
plugins/filterizr/Spinner/Spinner.d.ts | 13 +
plugins/filterizr/Spinner/StyledSpinner.d.ts | 5 +
plugins/filterizr/Spinner/index.d.ts | 1 +
plugins/filterizr/Spinner/makeSpinner.d.ts | 2 +
plugins/filterizr/StyledFilterizrElement.d.ts | 12 +
.../filterizr/StyledFilterizrElements.d.ts | 2 +
plugins/filterizr/animate.d.ts | 6 +
.../config/cssEasingValuesRegexp.d.ts | 4 +
plugins/filterizr/config/filterizrState.d.ts | 11 +
plugins/filterizr/config/index.d.ts | 3 +
plugins/filterizr/config/layout.d.ts | 13 +
plugins/filterizr/filterizr.min.js | 12 +
plugins/filterizr/getLayoutPositions.d.ts | 10 +
plugins/filterizr/index.d.ts | 9 +
plugins/filterizr/index.jquery.d.ts | 10 +
plugins/filterizr/installAsJQueryPlugin.d.ts | 1 +
plugins/filterizr/jquery.filterizr.min.js | 29 +
plugins/filterizr/layouts/Packer.d.ts | 30 +
.../layouts/getHorizontalLayoutPositions.d.ts | 8 +
.../layouts/getPackedLayoutPositions.d.ts | 8 +
.../layouts/getSameHeightLayoutPositions.d.ts | 8 +
.../layouts/getSameSizeLayoutPosition.d.ts | 8 +
.../layouts/getSameWidthLayoutPositions.d.ts | 8 +
.../layouts/getVerticalLayoutPositions.d.ts | 8 +
.../filterizr/makeLayoutPositions/Packer.d.ts | 30 +
.../filterizr/makeLayoutPositions/index.d.ts | 1 +
.../makeHorizontalLayoutPositions.d.ts | 6 +
.../makeLayoutPositions.d.ts | 7 +
.../makePackedLayoutPositions.d.ts | 6 +
.../makeSameHeightLayoutPositions.d.ts | 6 +
.../makeSameSizeLayoutPosition.d.ts | 6 +
.../makeSameWidthLayoutPositions.d.ts | 6 +
.../makeVerticalLayoutPositions.d.ts | 6 +
plugins/filterizr/types/index.d.ts | 3 +
.../types/interfaces/BaseOptions.d.ts | 20 +
.../types/interfaces/ContainerLayout.d.ts | 5 +
.../types/interfaces/Destructible.d.ts | 3 +
.../types/interfaces/Dictionary.d.ts | 3 +
.../types/interfaces/Dimensions.d.ts | 4 +
.../filterizr/types/interfaces/Options.d.ts | 5 +
.../filterizr/types/interfaces/Position.d.ts | 4 +
.../types/interfaces/RawOptions.d.ts | 4 +
.../types/interfaces/RawOptionsCallbacks.d.ts | 10 +
.../filterizr/types/interfaces/Resizable.d.ts | 6 +
.../types/interfaces/SpinnerOptions.d.ts | 6 +
.../filterizr/types/interfaces/Styleable.d.ts | 5 +
plugins/filterizr/types/interfaces/index.d.ts | 12 +
plugins/filterizr/utils.d.ts | 140 ++++
.../utils/allStringsOfArray1InArray2.d.ts | 1 +
.../filterizr/utils/checkOptionForErrors.d.ts | 9 +
plugins/filterizr/utils/debounce.d.ts | 4 +
.../filterItemArraysHaveSameSorting.d.ts | 9 +
.../utils/getDataAttributesOfHTMLNode.d.ts | 2 +
plugins/filterizr/utils/getHTMLElement.d.ts | 6 +
plugins/filterizr/utils/index.d.ts | 12 +
plugins/filterizr/utils/intersection.d.ts | 4 +
plugins/filterizr/utils/merge.d.ts | 5 +
plugins/filterizr/utils/noop.d.ts | 4 +
plugins/filterizr/utils/setStyles.d.ts | 7 +
plugins/filterizr/utils/shuffle.d.ts | 6 +
plugins/filterizr/utils/sortBy.d.ts | 7 +
plugins/filterizr/vanilla.filterizr.min.js | 12 +
132 files changed, 2280 insertions(+), 1 deletion(-)
create mode 100644 pages/gallery.html
create mode 100755 plugins/filterizr/ActiveFilter.d.ts
create mode 100755 plugins/filterizr/BrowserWindow.d.ts
create mode 100755 plugins/filterizr/EventReceiver.d.ts
create mode 100755 plugins/filterizr/FilterContainer.d.ts
create mode 100755 plugins/filterizr/FilterContainer/FilterContainer.d.ts
create mode 100755 plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts
create mode 100755 plugins/filterizr/FilterContainer/index.d.ts
create mode 100755 plugins/filterizr/FilterContainer/styles.d.ts
create mode 100755 plugins/filterizr/FilterControls.d.ts
create mode 100755 plugins/filterizr/FilterItem.d.ts
create mode 100755 plugins/filterizr/FilterItem/FilterItem.d.ts
create mode 100755 plugins/filterizr/FilterItem/StyledFilterItem.d.ts
create mode 100755 plugins/filterizr/FilterItem/index.d.ts
create mode 100755 plugins/filterizr/FilterItem/styles.d.ts
create mode 100755 plugins/filterizr/FilterItems.d.ts
create mode 100755 plugins/filterizr/FilterItems/FilterItems.d.ts
create mode 100755 plugins/filterizr/FilterItems/StyledFilterItems.d.ts
create mode 100755 plugins/filterizr/FilterItems/index.d.ts
create mode 100755 plugins/filterizr/Filterizr.d.ts
create mode 100755 plugins/filterizr/Filterizr/Filterizr.d.ts
create mode 100755 plugins/filterizr/Filterizr/index.d.ts
create mode 100755 plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts
create mode 100755 plugins/filterizr/FilterizrElement.d.ts
create mode 100755 plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts
create mode 100755 plugins/filterizr/FilterizrOptions/defaultOptions.d.ts
create mode 100755 plugins/filterizr/FilterizrOptions/index.d.ts
create mode 100755 plugins/filterizr/Spinner/Spinner.d.ts
create mode 100755 plugins/filterizr/Spinner/StyledSpinner.d.ts
create mode 100755 plugins/filterizr/Spinner/index.d.ts
create mode 100755 plugins/filterizr/Spinner/makeSpinner.d.ts
create mode 100755 plugins/filterizr/StyledFilterizrElement.d.ts
create mode 100755 plugins/filterizr/StyledFilterizrElements.d.ts
create mode 100755 plugins/filterizr/animate.d.ts
create mode 100755 plugins/filterizr/config/cssEasingValuesRegexp.d.ts
create mode 100755 plugins/filterizr/config/filterizrState.d.ts
create mode 100755 plugins/filterizr/config/index.d.ts
create mode 100755 plugins/filterizr/config/layout.d.ts
create mode 100755 plugins/filterizr/filterizr.min.js
create mode 100755 plugins/filterizr/getLayoutPositions.d.ts
create mode 100755 plugins/filterizr/index.d.ts
create mode 100755 plugins/filterizr/index.jquery.d.ts
create mode 100755 plugins/filterizr/installAsJQueryPlugin.d.ts
create mode 100755 plugins/filterizr/jquery.filterizr.min.js
create mode 100755 plugins/filterizr/layouts/Packer.d.ts
create mode 100755 plugins/filterizr/layouts/getHorizontalLayoutPositions.d.ts
create mode 100755 plugins/filterizr/layouts/getPackedLayoutPositions.d.ts
create mode 100755 plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts
create mode 100755 plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts
create mode 100755 plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts
create mode 100755 plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/Packer.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/index.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts
create mode 100755 plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts
create mode 100755 plugins/filterizr/types/index.d.ts
create mode 100755 plugins/filterizr/types/interfaces/BaseOptions.d.ts
create mode 100755 plugins/filterizr/types/interfaces/ContainerLayout.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Destructible.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Dictionary.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Dimensions.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Options.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Position.d.ts
create mode 100755 plugins/filterizr/types/interfaces/RawOptions.d.ts
create mode 100755 plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Resizable.d.ts
create mode 100755 plugins/filterizr/types/interfaces/SpinnerOptions.d.ts
create mode 100755 plugins/filterizr/types/interfaces/Styleable.d.ts
create mode 100755 plugins/filterizr/types/interfaces/index.d.ts
create mode 100755 plugins/filterizr/utils.d.ts
create mode 100755 plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts
create mode 100755 plugins/filterizr/utils/checkOptionForErrors.d.ts
create mode 100755 plugins/filterizr/utils/debounce.d.ts
create mode 100755 plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts
create mode 100755 plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts
create mode 100755 plugins/filterizr/utils/getHTMLElement.d.ts
create mode 100755 plugins/filterizr/utils/index.d.ts
create mode 100755 plugins/filterizr/utils/intersection.d.ts
create mode 100755 plugins/filterizr/utils/merge.d.ts
create mode 100755 plugins/filterizr/utils/noop.d.ts
create mode 100755 plugins/filterizr/utils/setStyles.d.ts
create mode 100755 plugins/filterizr/utils/shuffle.d.ts
create mode 100755 plugins/filterizr/utils/sortBy.d.ts
create mode 100755 plugins/filterizr/vanilla.filterizr.min.js
diff --git a/build/npm/Plugins.js b/build/npm/Plugins.js
index b7cf25070..8449cd959 100644
--- a/build/npm/Plugins.js
+++ b/build/npm/Plugins.js
@@ -228,7 +228,11 @@ const Plugins = [
from: 'node_modules/bootstrap4-duallistbox/dist',
to: 'plugins/bootstrap4-duallistbox/'
},
-
+ // filterizr
+ {
+ from: 'node_modules/filterizr/dist',
+ to: 'plugins/filterizr/'
+ },
// AdminLTE Dist
{
diff --git a/index.html b/index.html
index c14faa0f6..8bc10b13d 100644
--- a/index.html
+++ b/index.html
@@ -421,6 +421,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/index2.html b/index2.html
index 0f7f3cb3e..8aec2620a 100644
--- a/index2.html
+++ b/index2.html
@@ -408,6 +408,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/index3.html b/index3.html
index b7fec184f..06a49a58d 100644
--- a/index3.html
+++ b/index3.html
@@ -418,6 +418,14 @@ to get the desired effect
+
+
+
+
+ Gallery
+
+
+
diff --git a/package-lock.json b/package-lock.json
index a29310e31..bbee5f66e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5764,6 +5764,11 @@
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
"dev": true
},
+ "ev-emitter": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz",
+ "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q=="
+ },
"eve-raphael": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/eve-raphael/-/eve-raphael-0.5.0.tgz",
@@ -6290,6 +6295,11 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
+ "fast-memoize": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.1.tgz",
+ "integrity": "sha512-xdmw296PCL01tMOXx9mdJSmWY29jQgxyuZdq0rEHMu+Tpe1eOEtCycoG6chzlcrWsNgpZP7oL8RiQr7+G6Bl6g=="
+ },
"fastclick": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz",
@@ -6337,6 +6347,15 @@
}
}
},
+ "filterizr": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/filterizr/-/filterizr-2.2.3.tgz",
+ "integrity": "sha512-1u3/TadXM12uNUlxHBRM31maMXY4DA2+sbeji4KSHk/m3LE4fMkTst+6W5YBlcBC1umICDiwplWsMqr6VzY5ZA==",
+ "requires": {
+ "fast-memoize": "^2.5.1",
+ "imagesloaded": "^4.1.4"
+ }
+ },
"finalhandler": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
@@ -7494,6 +7513,14 @@
"integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
"dev": true
},
+ "imagesloaded": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz",
+ "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==",
+ "requires": {
+ "ev-emitter": "^1.0.0"
+ }
+ },
"immutable": {
"version": "3.8.2",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
diff --git a/package.json b/package.json
index 5f596f0d4..38cc78c4c 100644
--- a/package.json
+++ b/package.json
@@ -62,6 +62,7 @@
"datatables.net-bs4": "^1.10.19",
"daterangepicker": "^3.0.5",
"fastclick": "^1.0.6",
+ "filterizr": "^2.2.3",
"flag-icon-css": "^3.3.0",
"flot": "^3.1.1",
"icheck-bootstrap": "^3.0.1",
diff --git a/pages/UI/buttons.html b/pages/UI/buttons.html
index 099601598..dfc93d4d9 100644
--- a/pages/UI/buttons.html
+++ b/pages/UI/buttons.html
@@ -410,6 +410,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/general.html b/pages/UI/general.html
index d361258c3..340c257ef 100644
--- a/pages/UI/general.html
+++ b/pages/UI/general.html
@@ -456,6 +456,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/icons.html b/pages/UI/icons.html
index a40cf702a..98ea60764 100644
--- a/pages/UI/icons.html
+++ b/pages/UI/icons.html
@@ -410,6 +410,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/modals.html b/pages/UI/modals.html
index 9187915a3..8da9de1af 100644
--- a/pages/UI/modals.html
+++ b/pages/UI/modals.html
@@ -414,6 +414,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/navbar.html b/pages/UI/navbar.html
index f1055f559..37b837282 100644
--- a/pages/UI/navbar.html
+++ b/pages/UI/navbar.html
@@ -416,6 +416,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/ribbons.html b/pages/UI/ribbons.html
index 573522e36..138fbe53f 100644
--- a/pages/UI/ribbons.html
+++ b/pages/UI/ribbons.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/sliders.html b/pages/UI/sliders.html
index a317afc02..cd62256d4 100644
--- a/pages/UI/sliders.html
+++ b/pages/UI/sliders.html
@@ -415,6 +415,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/UI/timeline.html b/pages/UI/timeline.html
index 7d2072aaa..3077d4f2f 100644
--- a/pages/UI/timeline.html
+++ b/pages/UI/timeline.html
@@ -409,6 +409,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/calendar.html b/pages/calendar.html
index 273078d51..587adf93f 100644
--- a/pages/calendar.html
+++ b/pages/calendar.html
@@ -416,6 +416,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/charts/chartjs.html b/pages/charts/chartjs.html
index a463fb05b..c6feb9263 100644
--- a/pages/charts/chartjs.html
+++ b/pages/charts/chartjs.html
@@ -410,6 +410,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/charts/flot.html b/pages/charts/flot.html
index 01ad91480..7df891862 100644
--- a/pages/charts/flot.html
+++ b/pages/charts/flot.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/charts/inline.html b/pages/charts/inline.html
index 67a695e1a..811987350 100644
--- a/pages/charts/inline.html
+++ b/pages/charts/inline.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/404.html b/pages/examples/404.html
index 21d936fdb..2578b11f3 100644
--- a/pages/examples/404.html
+++ b/pages/examples/404.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/500.html b/pages/examples/500.html
index 967e3ada8..5cd80ab7c 100644
--- a/pages/examples/500.html
+++ b/pages/examples/500.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/blank.html b/pages/examples/blank.html
index 96bd87d9f..11e5a831c 100644
--- a/pages/examples/blank.html
+++ b/pages/examples/blank.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/contacts.html b/pages/examples/contacts.html
index 78c408587..13c7a0fed 100644
--- a/pages/examples/contacts.html
+++ b/pages/examples/contacts.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/e_commerce.html b/pages/examples/e_commerce.html
index ef7315fd5..c136af5a6 100644
--- a/pages/examples/e_commerce.html
+++ b/pages/examples/e_commerce.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/invoice.html b/pages/examples/invoice.html
index ae637814c..25e69f72f 100644
--- a/pages/examples/invoice.html
+++ b/pages/examples/invoice.html
@@ -410,6 +410,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/language-menu.html b/pages/examples/language-menu.html
index b005da6b7..a3153bcce 100644
--- a/pages/examples/language-menu.html
+++ b/pages/examples/language-menu.html
@@ -424,6 +424,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/legacy-user-menu.html b/pages/examples/legacy-user-menu.html
index 10414fa4f..e108cb7e2 100644
--- a/pages/examples/legacy-user-menu.html
+++ b/pages/examples/legacy-user-menu.html
@@ -439,6 +439,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/profile.html b/pages/examples/profile.html
index 2a787a81e..adf5dcdd5 100644
--- a/pages/examples/profile.html
+++ b/pages/examples/profile.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/project_add.html b/pages/examples/project_add.html
index 18ef7eb73..23338a7eb 100644
--- a/pages/examples/project_add.html
+++ b/pages/examples/project_add.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/project_detail.html b/pages/examples/project_detail.html
index d31d31cb3..077a80c02 100644
--- a/pages/examples/project_detail.html
+++ b/pages/examples/project_detail.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/project_edit.html b/pages/examples/project_edit.html
index 81e03e3ed..5e9168a29 100644
--- a/pages/examples/project_edit.html
+++ b/pages/examples/project_edit.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/examples/projects.html b/pages/examples/projects.html
index c30f9d4a3..6e59d8024 100644
--- a/pages/examples/projects.html
+++ b/pages/examples/projects.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/forms/advanced.html b/pages/forms/advanced.html
index 483f76de0..658962666 100644
--- a/pages/forms/advanced.html
+++ b/pages/forms/advanced.html
@@ -424,6 +424,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/forms/editors.html b/pages/forms/editors.html
index bf784e462..9a1eccfe7 100644
--- a/pages/forms/editors.html
+++ b/pages/forms/editors.html
@@ -413,6 +413,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/forms/general.html b/pages/forms/general.html
index 827a02ba2..8ab57b4ca 100644
--- a/pages/forms/general.html
+++ b/pages/forms/general.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/gallery.html b/pages/gallery.html
new file mode 100644
index 000000000..9a6b84d41
--- /dev/null
+++ b/pages/gallery.html
@@ -0,0 +1,745 @@
+
+
+
+
+
+ AdminLTE 3 | Gallery
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Shuffle items
+
+
+
+
+
+
+
+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/layout/boxed.html b/pages/layout/boxed.html
index a3e38e78f..cd565ab86 100644
--- a/pages/layout/boxed.html
+++ b/pages/layout/boxed.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/layout/collapsed-sidebar.html b/pages/layout/collapsed-sidebar.html
index 177596a20..d42b5d165 100644
--- a/pages/layout/collapsed-sidebar.html
+++ b/pages/layout/collapsed-sidebar.html
@@ -412,6 +412,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/layout/fixed-footer.html b/pages/layout/fixed-footer.html
index 94000d8c1..b40c21cc7 100644
--- a/pages/layout/fixed-footer.html
+++ b/pages/layout/fixed-footer.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/layout/fixed-sidebar.html b/pages/layout/fixed-sidebar.html
index 232e781cc..b9d0101da 100644
--- a/pages/layout/fixed-sidebar.html
+++ b/pages/layout/fixed-sidebar.html
@@ -413,6 +413,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/layout/fixed-topnav.html b/pages/layout/fixed-topnav.html
index c78c16f7f..24716a67d 100644
--- a/pages/layout/fixed-topnav.html
+++ b/pages/layout/fixed-topnav.html
@@ -411,6 +411,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/tables/data.html b/pages/tables/data.html
index 4a17c2b86..156c4817d 100644
--- a/pages/tables/data.html
+++ b/pages/tables/data.html
@@ -413,6 +413,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/tables/jsgrid.html b/pages/tables/jsgrid.html
index 62f71bffa..b3ff1e3a5 100644
--- a/pages/tables/jsgrid.html
+++ b/pages/tables/jsgrid.html
@@ -414,6 +414,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/tables/simple.html b/pages/tables/simple.html
index ed1cbb1d7..30b1d4142 100644
--- a/pages/tables/simple.html
+++ b/pages/tables/simple.html
@@ -410,6 +410,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/pages/widgets.html b/pages/widgets.html
index f09b1f988..e8412ef37 100644
--- a/pages/widgets.html
+++ b/pages/widgets.html
@@ -410,6 +410,14 @@
+
+
+
+
+ Gallery
+
+
+
diff --git a/plugins/filterizr/ActiveFilter.d.ts b/plugins/filterizr/ActiveFilter.d.ts
new file mode 100755
index 000000000..42c094692
--- /dev/null
+++ b/plugins/filterizr/ActiveFilter.d.ts
@@ -0,0 +1,15 @@
+import { Filter } from './types';
+/**
+ * ActiveFilter represents the currently active filter over
+ * the grid.
+ *
+ * It can be a plain string value or an array of strings.
+ */
+export default class ActiveFilter {
+ private filter;
+ constructor(filter: Filter);
+ get(): Filter;
+ set(targetFilter: Filter): void;
+ toggle(targetFilter: string): void;
+ private toggleFilter;
+}
diff --git a/plugins/filterizr/BrowserWindow.d.ts b/plugins/filterizr/BrowserWindow.d.ts
new file mode 100755
index 000000000..ef8163c36
--- /dev/null
+++ b/plugins/filterizr/BrowserWindow.d.ts
@@ -0,0 +1,16 @@
+/**
+ * A wrapper class around the window object to manage the
+ * resize event.
+ *
+ * When the user resizes the window, Filterizr needs to trigger
+ * a refiltering of the grid so that the grid items can assume
+ * their new positions.
+ */
+export default class BrowserWindow {
+ private resizeHandler?;
+ constructor();
+ private debounceEventHandler;
+ destroy(): void;
+ setResizeEventHandler(resizeHandler: EventListener): void;
+ private removeResizeHandler;
+}
diff --git a/plugins/filterizr/EventReceiver.d.ts b/plugins/filterizr/EventReceiver.d.ts
new file mode 100755
index 000000000..8dd252622
--- /dev/null
+++ b/plugins/filterizr/EventReceiver.d.ts
@@ -0,0 +1,12 @@
+import { Destructible } from './types/interfaces';
+declare type Receiver = NodeListOf | Element | Window;
+export default class EventReceiver implements Destructible {
+ private receiver;
+ private eventDictionary;
+ constructor(receiver: Receiver);
+ on(eventType: string, eventHandler: EventListener): void;
+ off(eventType: string): void;
+ destroy(): void;
+ private removeAllEvents;
+}
+export {};
diff --git a/plugins/filterizr/FilterContainer.d.ts b/plugins/filterizr/FilterContainer.d.ts
new file mode 100755
index 000000000..60dd16b76
--- /dev/null
+++ b/plugins/filterizr/FilterContainer.d.ts
@@ -0,0 +1,36 @@
+import { RawOptionsCallbacks } from './FilterizrOptions/defaultOptions';
+import FilterizrOptions from './FilterizrOptions/FilterizrOptions';
+import FilterItems from './FilterItems';
+/**
+ * Resembles the grid of items within Filterizr.
+ */
+export default class FilterContainer {
+ node: Element;
+ options: FilterizrOptions;
+ filterItems: FilterItems;
+ dimensions: {
+ width: number;
+ height: number;
+ };
+ private onTransitionEndHandler?;
+ constructor(node: Element, options: FilterizrOptions);
+ destroy(): void;
+ /**
+ * Turn the HTML elements in the grid to FilterItem
+ * instances and return a collection of them.
+ */
+ makeFilterItems(options: FilterizrOptions): FilterItems;
+ /**
+ * Inserts a new item into the grid.
+ * @param node - HTML node to instantiate as FilterItem and append to the grid
+ * @param options - Filterizr options
+ */
+ insertItem(node: Element, options: FilterizrOptions): void;
+ calculateColumns(): number;
+ updateDimensions(): void;
+ updateHeight(newHeight: number): void;
+ bindEvents(callbacks: RawOptionsCallbacks): void;
+ unbindEvents(callbacks: RawOptionsCallbacks): void;
+ trigger(eventType: string): void;
+ private updateWidth;
+}
diff --git a/plugins/filterizr/FilterContainer/FilterContainer.d.ts b/plugins/filterizr/FilterContainer/FilterContainer.d.ts
new file mode 100755
index 000000000..69bc64d23
--- /dev/null
+++ b/plugins/filterizr/FilterContainer/FilterContainer.d.ts
@@ -0,0 +1,28 @@
+import { FilterizrState } from '../types';
+import FilterizrOptions from '../FilterizrOptions';
+import FilterItems from '../FilterItems';
+import FilterizrElement from '../FilterizrElement';
+import StyledFilterContainer from './StyledFilterContainer';
+/**
+ * Resembles the grid of items within Filterizr.
+ */
+export default class FilterContainer extends FilterizrElement {
+ filterItems: FilterItems;
+ protected styledNode: StyledFilterContainer;
+ private _filterizrState;
+ constructor(node: Element, options: FilterizrOptions);
+ readonly styles: StyledFilterContainer;
+ filterizrState: FilterizrState;
+ destroy(): void;
+ /**
+ * Turn the HTML elements in the grid to FilterItem
+ * instances and return a collection of them.
+ * @throws when no filter items are found in the grid.
+ */
+ makeFilterItems(options: FilterizrOptions): FilterItems;
+ insertItem(node: HTMLElement): void;
+ removeItem(node: HTMLElement): void;
+ setHeight(newHeight: number): void;
+ bindEvents(): void;
+ unbindEvents(): void;
+}
diff --git a/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts b/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts
new file mode 100755
index 000000000..f2128e996
--- /dev/null
+++ b/plugins/filterizr/FilterContainer/StyledFilterContainer.d.ts
@@ -0,0 +1,6 @@
+import StyledFilterizrElement from '../StyledFilterizrElement';
+export default class StyledFilterContainer extends StyledFilterizrElement {
+ initialize(): void;
+ updatePaddings(): void;
+ setHeight(newHeight: number): void;
+}
diff --git a/plugins/filterizr/FilterContainer/index.d.ts b/plugins/filterizr/FilterContainer/index.d.ts
new file mode 100755
index 000000000..cdefe97b0
--- /dev/null
+++ b/plugins/filterizr/FilterContainer/index.d.ts
@@ -0,0 +1 @@
+export { default } from './FilterContainer';
diff --git a/plugins/filterizr/FilterContainer/styles.d.ts b/plugins/filterizr/FilterContainer/styles.d.ts
new file mode 100755
index 000000000..b3983eda3
--- /dev/null
+++ b/plugins/filterizr/FilterContainer/styles.d.ts
@@ -0,0 +1,4 @@
+import FilterizrOptions from '../FilterizrOptions';
+export declare const makePaddingStyles: (options: FilterizrOptions) => object;
+export declare const makeInitialStyles: (options: FilterizrOptions) => object;
+export declare const makeHeightStyles: (height: number) => object;
diff --git a/plugins/filterizr/FilterControls.d.ts b/plugins/filterizr/FilterControls.d.ts
new file mode 100755
index 000000000..530080b93
--- /dev/null
+++ b/plugins/filterizr/FilterControls.d.ts
@@ -0,0 +1,19 @@
+import Filterizr from './Filterizr';
+import { Destructible } from './types/interfaces';
+export default class FilterControls implements Destructible {
+ private filterControls;
+ private filterizr;
+ private multiFilterControls;
+ private searchControls;
+ private selector;
+ private shuffleControls;
+ private sortAscControls;
+ private sortDescControls;
+ /**
+ * @param filterizr keep a ref to the Filterizr object to control actions
+ * @param selector selector of controls in case of multiple Filterizr instances
+ */
+ constructor(filterizr: Filterizr, selector?: string);
+ destroy(): void;
+ private initialize;
+}
diff --git a/plugins/filterizr/FilterItem.d.ts b/plugins/filterizr/FilterItem.d.ts
new file mode 100755
index 000000000..b054235c9
--- /dev/null
+++ b/plugins/filterizr/FilterItem.d.ts
@@ -0,0 +1,98 @@
+import { Dictionary } from './types/interfaces/Dictionary';
+import FilterizrOptions from './FilterizrOptions/FilterizrOptions';
+export interface Position {
+ left: number;
+ top: number;
+}
+/**
+ * Resembles an item in the grid of Filterizr.
+ */
+export default class FilterItem {
+ node: Element;
+ options: FilterizrOptions;
+ dimensions: {
+ width: number;
+ height: number;
+ };
+ private data;
+ private sortData;
+ private index;
+ private filteredOut;
+ private lastPosition;
+ private onTransitionEndHandler;
+ constructor(node: Element, index: number, options: FilterizrOptions);
+ /**
+ * Destroys the FilterItem instance
+ */
+ destroy(): void;
+ /**
+ * Filters in a specific FilterItem out of the grid.
+ * @param targetPosition the position towards which the element should animate
+ * @param cssOptions for the animation
+ */
+ filterIn(targetPosition: Position, cssOptions: Dictionary): void;
+ /**
+ * Filters out a specific FilterItem out of the grid.
+ * @param cssOptions for the animation
+ */
+ filterOut(cssOptions: Dictionary): void;
+ /**
+ * Helper method to calculate the animation delay for a given grid item
+ * @param delay in ms
+ * @param delayMode can be 'alternate' or 'progressive'
+ */
+ getTransitionDelay(delay: number, delayMode: 'progressive' | 'alternate'): number;
+ /**
+ * Returns true if the text contents of the FilterItem match the search term
+ * @param searchTerm to look up
+ * @return if the innerText matches the term
+ */
+ contentsMatchSearch(searchTerm: string): boolean;
+ /**
+ * Recalculates the dimensions of the element and updates them in the state
+ */
+ updateDimensions(): void;
+ /**
+ * Returns all categories of the grid items data-category attribute
+ * with a regexp regarding all whitespace.
+ * @return {String[]} an array of the categories the item belongs to
+ */
+ getCategories(): string[];
+ /**
+ * Returns the value of the sort attribute
+ * @param sortAttribute "index", "sortData" or custom user data-attribute by which to sort
+ */
+ getSortAttribute(sortAttribute: string): string | number;
+ /**
+ * Helper method for the search method of Filterizr
+ * @return {String} innerText of the FilterItem in lowercase
+ */
+ private getContentsLowercase;
+ /**
+ * Sets up the events related to the FilterItem instance
+ */
+ private bindEvents;
+ /**
+ * Removes all events related to the FilterItem instance
+ */
+ private unbindEvents;
+ /**
+ * Calculates and returns the transition css property based on options.
+ */
+ private getTransitionStyle;
+ /**
+ * Sets the transition css property as an inline style on the FilterItem.
+ *
+ * The idea here is that during the very first render items should assume
+ * their positions directly.
+ *
+ * Following renders should actually trigger the transitions, which is why
+ * we need to delay setting the transition property.
+ *
+ * Unfortunately, JavaScript code executes on the same thread as the
+ * browser's rendering. Everything that needs to be drawn waits for
+ * JavaScript execution to complete. Thus, we need to use a setTimeout
+ * here to defer setting the transition style at the first rendering cycle.
+ */
+ private setTransitionStyle;
+}
diff --git a/plugins/filterizr/FilterItem/FilterItem.d.ts b/plugins/filterizr/FilterItem/FilterItem.d.ts
new file mode 100755
index 000000000..193fcbf66
--- /dev/null
+++ b/plugins/filterizr/FilterItem/FilterItem.d.ts
@@ -0,0 +1,44 @@
+import { Position } from '../types/interfaces';
+import FilterizrOptions from '../FilterizrOptions';
+import FilterizrElement from '../FilterizrElement';
+import StyledFilterItem from './StyledFilterItem';
+/**
+ * Resembles an item in the grid of Filterizr.
+ */
+export default class FilterItem extends FilterizrElement {
+ protected styledNode: StyledFilterItem;
+ private filteredOut;
+ private lastPosition;
+ private sortData;
+ constructor(node: Element, index: number, options: FilterizrOptions);
+ readonly styles: StyledFilterItem;
+ /**
+ * Destroys the FilterItem instance
+ */
+ destroy(): void;
+ /**
+ * Filters in a specific FilterItem out of the grid.
+ */
+ filterIn(targetPosition: Position): void;
+ /**
+ * Filters out a specific FilterItem out of the grid.
+ */
+ filterOut(): void;
+ /**
+ * Returns true if the text contents of the FilterItem match the search term
+ * @param searchTerm to look up
+ */
+ contentsMatchSearch(searchTerm: string): boolean;
+ /**
+ * Returns all categories of the grid items data-category attribute
+ * with a regexp regarding all whitespace.
+ */
+ getCategories(): string[];
+ /**
+ * Returns the value of the sort attribute
+ * @param sortAttribute "index", "sortData" or custom user data-attribute by which to sort
+ */
+ getSortAttribute(sortAttribute: string): string | number;
+ protected bindEvents(): void;
+ protected unbindEvents(): void;
+}
diff --git a/plugins/filterizr/FilterItem/StyledFilterItem.d.ts b/plugins/filterizr/FilterItem/StyledFilterItem.d.ts
new file mode 100755
index 000000000..efac8c22f
--- /dev/null
+++ b/plugins/filterizr/FilterItem/StyledFilterItem.d.ts
@@ -0,0 +1,30 @@
+import { Position } from './../types/interfaces';
+import StyledFilterizrElement from '../StyledFilterizrElement';
+import FilterizrOptions from '../FilterizrOptions';
+export default class StyledFilterItem extends StyledFilterizrElement {
+ private _index;
+ constructor(node: HTMLElement, index: number, options: FilterizrOptions);
+ initialize(): void;
+ setFilteredStyles(position: Position, cssOptions: object): void;
+ updateTransitionStyle(): void;
+ updateWidth(): void;
+ /**
+ * Sets the transition css property as an inline style on the FilterItem.
+ *
+ * The idea here is that during the very first render items should assume
+ * their positions directly.
+ *
+ * Following renders should actually trigger the transitions, which is why
+ * we need to delay setting the transition property.
+ *
+ * Unfortunately, JavaScript code executes on the same thread as the
+ * browser's rendering. Everything that needs to be drawn waits for
+ * JavaScript execution to complete. Thus, we need to use a setTimeout
+ * here to defer setting the transition style at the first rendering cycle.
+ */
+ enableTransitions(): Promise;
+ disableTransitions(): void;
+ setZIndex(zIndex: number): void;
+ removeZIndex(): void;
+ removeWidth(): void;
+}
diff --git a/plugins/filterizr/FilterItem/index.d.ts b/plugins/filterizr/FilterItem/index.d.ts
new file mode 100755
index 000000000..7442505f6
--- /dev/null
+++ b/plugins/filterizr/FilterItem/index.d.ts
@@ -0,0 +1 @@
+export { default } from './FilterItem';
diff --git a/plugins/filterizr/FilterItem/styles.d.ts b/plugins/filterizr/FilterItem/styles.d.ts
new file mode 100755
index 000000000..e31a67f11
--- /dev/null
+++ b/plugins/filterizr/FilterItem/styles.d.ts
@@ -0,0 +1,5 @@
+import FilterizrOptions from '../FilterizrOptions';
+import { Dictionary, Position } from '../types/interfaces';
+export declare const makeInitialStyles: (options: FilterizrOptions) => object;
+export declare const makeFilteringStyles: (targetPosition: Position, cssOptions: Dictionary) => object;
+export declare const makeTransitionStyles: (index: number, options: FilterizrOptions) => object;
diff --git a/plugins/filterizr/FilterItems.d.ts b/plugins/filterizr/FilterItems.d.ts
new file mode 100755
index 000000000..689690bbe
--- /dev/null
+++ b/plugins/filterizr/FilterItems.d.ts
@@ -0,0 +1,22 @@
+import { Filter } from './ActiveFilter';
+import FilterItem from './FilterItem';
+import FilterizrOptions from './FilterizrOptions/FilterizrOptions';
+export default class FilterItems {
+ private filterItems;
+ private options;
+ constructor(filterItems: FilterItem[], options: FilterizrOptions);
+ readonly length: number;
+ get(): FilterItem[];
+ getItem(index: number): FilterItem;
+ set(filterItems: FilterItem[]): void;
+ destroy(): void;
+ updateTransitionStyle(): void;
+ updateDimensions(): void;
+ push(filterItem: FilterItem): number;
+ getFiltered(filter: Filter): FilterItem[];
+ getFilteredOut(filter: Filter): FilterItem[];
+ getSorted(sortAttr?: string, sortOrder?: 'asc' | 'desc'): FilterItem[];
+ getSearched(searchTerm: string): FilterItem[];
+ getShuffled(): FilterItem[];
+ private shouldBeFiltered;
+}
diff --git a/plugins/filterizr/FilterItems/FilterItems.d.ts b/plugins/filterizr/FilterItems/FilterItems.d.ts
new file mode 100755
index 000000000..97616f268
--- /dev/null
+++ b/plugins/filterizr/FilterItems/FilterItems.d.ts
@@ -0,0 +1,23 @@
+import StyledFilterItems from './StyledFilterItems';
+import { Filter } from '../types';
+import FilterItem from '../FilterItem';
+import FilterizrOptions from '../FilterizrOptions/FilterizrOptions';
+import { Destructible, Styleable } from '../types/interfaces';
+export default class FilterItems implements Destructible, Styleable {
+ private filterItems;
+ private styledFilterItems;
+ private options;
+ constructor(filterItems: FilterItem[], options: FilterizrOptions);
+ readonly styles: StyledFilterItems;
+ readonly length: number;
+ getItem(index: number): FilterItem;
+ destroy(): void;
+ push(filterItem: FilterItem): number;
+ remove(node: HTMLElement): void;
+ getFiltered(filter: Filter): FilterItem[];
+ getFilteredOut(filter: Filter): FilterItem[];
+ sort(sortAttr?: string, sortOrder?: 'asc' | 'desc'): void;
+ shuffle(): void;
+ private search;
+ private shouldBeFiltered;
+}
diff --git a/plugins/filterizr/FilterItems/StyledFilterItems.d.ts b/plugins/filterizr/FilterItems/StyledFilterItems.d.ts
new file mode 100755
index 000000000..c44f46e1c
--- /dev/null
+++ b/plugins/filterizr/FilterItems/StyledFilterItems.d.ts
@@ -0,0 +1,12 @@
+import StyledFilterizrElements from '../StyledFilterizrElements';
+import FilterItem from '../FilterItem/FilterItem';
+export default class StyledFilterItems extends StyledFilterizrElements {
+ private _filterItems;
+ constructor(elements: FilterItem[]);
+ removeWidth(): void;
+ updateWidth(): void;
+ updateTransitionStyle(): void;
+ disableTransitions(): void;
+ enableTransitions(): Promise;
+ updateWidthWithTransitionsDisabled(): void;
+}
diff --git a/plugins/filterizr/FilterItems/index.d.ts b/plugins/filterizr/FilterItems/index.d.ts
new file mode 100755
index 000000000..e091bad7f
--- /dev/null
+++ b/plugins/filterizr/FilterItems/index.d.ts
@@ -0,0 +1 @@
+export { default } from './FilterItems';
diff --git a/plugins/filterizr/Filterizr.d.ts b/plugins/filterizr/Filterizr.d.ts
new file mode 100755
index 000000000..6272efacd
--- /dev/null
+++ b/plugins/filterizr/Filterizr.d.ts
@@ -0,0 +1,76 @@
+import FilterizrOptions from './FilterizrOptions/FilterizrOptions';
+import FilterContainer from './FilterContainer';
+import FilterItem from './FilterItem';
+import { Filter } from './ActiveFilter';
+import { RawOptions } from './FilterizrOptions/defaultOptions';
+export default class Filterizr {
+ /**
+ * Main Filterizr classes exported as static members
+ */
+ static FilterContainer: typeof FilterContainer;
+ static FilterItem: typeof FilterItem;
+ static defaultOptions: RawOptions;
+ /**
+ * Static method that receives the jQuery object and extends
+ * its prototype with a .filterizr method.
+ */
+ static installAsJQueryPlugin: Function;
+ options: FilterizrOptions;
+ private browserWindow;
+ private filterContainer;
+ private filterControls?;
+ private filterizrState;
+ constructor(selectorOrNode?: string | HTMLElement, userOptions?: RawOptions);
+ private readonly filterItems;
+ /**
+ * Filters the items in the grid by a category
+ * @param category by which to filter
+ */
+ filter(category: Filter): void;
+ destroy(): void;
+ /**
+ * Inserts a new FilterItem in the Filterizr grid
+ * @param node DOM node to append
+ */
+ insertItem(node: HTMLElement): void;
+ /**
+ * Sorts the FilterItems in the grid
+ * @param sortAttr the attribute by which to perform the sort
+ * @param sortOrder ascending or descending
+ */
+ sort(sortAttr?: string, sortOrder?: 'asc' | 'desc'): void;
+ /**
+ * Searches through the FilterItems for a given string and adds an additional filter layer.
+ * @param searchTerm the term for which to search
+ */
+ search(searchTerm?: string): void;
+ /**
+ * Shuffles the FilterItems in the grid, making sure their positions have changed.
+ */
+ shuffle(): void;
+ /**
+ * Updates the perferences of the users for rendering the Filterizr grid,
+ * additionally performs error checking on the new options passed.
+ * @param newOptions to override the defaults.
+ */
+ setOptions(newOptions: RawOptions): void;
+ /**
+ * Performs multifiltering with AND/OR logic.
+ * @param toggledFilter the filter to toggle
+ */
+ toggleFilter(toggledFilter: string): void;
+ private render;
+ private onTransitionEndCallback;
+ private rebindFilterContainerEvents;
+ private bindEvents;
+ /**
+ * If it contains images it makes use of the imagesloaded npm package
+ * to trigger the first render after the images have finished loading
+ * in the DOM. Otherwise, overlapping can occur if the images do not
+ * have the height attribute explicitly set on them.
+ *
+ * In case the grid contains no images, then a simple render is performed.
+ */
+ private renderWithImagesLoaded;
+ private updateDimensionsAndRerender;
+}
diff --git a/plugins/filterizr/Filterizr/Filterizr.d.ts b/plugins/filterizr/Filterizr/Filterizr.d.ts
new file mode 100755
index 000000000..a2697899f
--- /dev/null
+++ b/plugins/filterizr/Filterizr/Filterizr.d.ts
@@ -0,0 +1,75 @@
+import { Filter } from '../types';
+import { RawOptions, Destructible } from '../types/interfaces';
+import FilterizrOptions from '../FilterizrOptions';
+import FilterContainer from '../FilterContainer';
+import FilterItem from '../FilterItem';
+export default class Filterizr implements Destructible {
+ /**
+ * Main Filterizr classes exported as static members
+ */
+ static FilterContainer: typeof FilterContainer;
+ static FilterItem: typeof FilterItem;
+ static defaultOptions: RawOptions;
+ /**
+ * Static method that receives the jQuery object and extends
+ * its prototype with a .filterizr method.
+ */
+ static installAsJQueryPlugin: Function;
+ options: FilterizrOptions;
+ private windowEventReceiver;
+ private filterContainer;
+ private filterControls?;
+ private imagesHaveLoaded;
+ private spinner?;
+ constructor(selectorOrNode?: string | HTMLElement, userOptions?: RawOptions);
+ private readonly filterItems;
+ /**
+ * Filters the items in the grid by a category
+ * @param category by which to filter
+ */
+ filter(category: Filter): void;
+ destroy(): void;
+ /**
+ * Inserts a new FilterItem into the grid
+ */
+ insertItem(node: HTMLElement): Promise;
+ /**
+ * Removes a FilterItem from the grid
+ */
+ removeItem(node: HTMLElement): void;
+ /**
+ * Sorts the FilterItems in the grid
+ * @param sortAttr the attribute by which to perform the sort
+ * @param sortOrder ascending or descending
+ */
+ sort(sortAttr?: string, sortOrder?: 'asc' | 'desc'): void;
+ /**
+ * Searches through the FilterItems for a given string and adds an additional filter layer.
+ */
+ search(searchTerm?: string): void;
+ /**
+ * Shuffles the FilterItems in the grid, making sure their positions have changed.
+ */
+ shuffle(): void;
+ /**
+ * Updates the perferences of the users for rendering the Filterizr grid,
+ * additionally performs error checking on the new options passed.
+ * @param newOptions to override the defaults.
+ */
+ setOptions(newOptions: RawOptions): void;
+ /**
+ * Performs multifiltering with AND/OR logic.
+ * @param toggledFilter the filter to toggle
+ */
+ toggleFilter(toggledFilter: string): void;
+ private render;
+ /**
+ * Initialization sequence of Filterizr when the grid is first loaded
+ */
+ private initialize;
+ private bindEvents;
+ /**
+ * Resolves when the images of the grid have finished loading into the DOM
+ */
+ private waitForImagesToLoad;
+}
diff --git a/plugins/filterizr/Filterizr/index.d.ts b/plugins/filterizr/Filterizr/index.d.ts
new file mode 100755
index 000000000..db1a35aa7
--- /dev/null
+++ b/plugins/filterizr/Filterizr/index.d.ts
@@ -0,0 +1 @@
+export { default } from './Filterizr';
diff --git a/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts b/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts
new file mode 100755
index 000000000..a73182198
--- /dev/null
+++ b/plugins/filterizr/Filterizr/installAsJQueryPlugin.d.ts
@@ -0,0 +1 @@
+export default function installAsJQueryPlugin($: any): void;
diff --git a/plugins/filterizr/FilterizrElement.d.ts b/plugins/filterizr/FilterizrElement.d.ts
new file mode 100755
index 000000000..62f9d2c32
--- /dev/null
+++ b/plugins/filterizr/FilterizrElement.d.ts
@@ -0,0 +1,16 @@
+import { Destructible, Dimensions, Resizable, Styleable } from './types/interfaces';
+import FilterizrOptions from './FilterizrOptions';
+import EventReceiver from './EventReceiver';
+import StyledFilterizrElement from './StyledFilterizrElement';
+export default abstract class FilterizrElement implements Destructible, Resizable, Styleable {
+ node: Element;
+ options: FilterizrOptions;
+ protected eventReceiver: EventReceiver;
+ constructor(node: Element, options: FilterizrOptions);
+ readonly dimensions: Dimensions;
+ destroy(): void | Promise;
+ trigger(eventType: string): void;
+ abstract readonly styles: StyledFilterizrElement;
+ protected abstract bindEvents(): void;
+ protected abstract unbindEvents(): void;
+}
diff --git a/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts b/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts
new file mode 100755
index 000000000..fb841ac35
--- /dev/null
+++ b/plugins/filterizr/FilterizrOptions/FilterizrOptions.d.ts
@@ -0,0 +1,22 @@
+import { BaseOptions, RawOptions } from './../types/interfaces';
+import ActiveFilter from '../ActiveFilter';
+import { Filter } from '../types';
+export interface Options extends BaseOptions {
+ filter: ActiveFilter;
+}
+export default class FilterizrOptions {
+ private options;
+ constructor(userOptions: RawOptions);
+ readonly isSpinnerEnabled: boolean;
+ readonly areControlsEnabled: boolean;
+ readonly controlsSelector: string;
+ filter: Filter;
+ toggleFilter(filter: string): void;
+ searchTerm: string;
+ get(): Options;
+ getRaw(): RawOptions;
+ set(newUserOptions: RawOptions): void;
+ private convertToFilterizrOptions;
+ private convertToOptions;
+ private validate;
+}
diff --git a/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts b/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts
new file mode 100755
index 000000000..6f9f9e3e8
--- /dev/null
+++ b/plugins/filterizr/FilterizrOptions/defaultOptions.d.ts
@@ -0,0 +1,3 @@
+import { RawOptions } from '../types/interfaces';
+declare const defaultOptions: RawOptions;
+export default defaultOptions;
diff --git a/plugins/filterizr/FilterizrOptions/index.d.ts b/plugins/filterizr/FilterizrOptions/index.d.ts
new file mode 100755
index 000000000..ead3e320d
--- /dev/null
+++ b/plugins/filterizr/FilterizrOptions/index.d.ts
@@ -0,0 +1,2 @@
+export { default as defaultOptions } from './defaultOptions';
+export { default } from './FilterizrOptions';
diff --git a/plugins/filterizr/Spinner/Spinner.d.ts b/plugins/filterizr/Spinner/Spinner.d.ts
new file mode 100755
index 000000000..e852c136c
--- /dev/null
+++ b/plugins/filterizr/Spinner/Spinner.d.ts
@@ -0,0 +1,13 @@
+import { Destructible, Styleable } from '../types/interfaces';
+import FilterizrOptions from '../FilterizrOptions';
+import FilterContainer from '../FilterContainer';
+import StyledSpinner from './StyledSpinner';
+export default class Spinner implements Destructible, Styleable {
+ private node;
+ private styledNode;
+ private filterContainer;
+ constructor(filterContainer: FilterContainer, options: FilterizrOptions);
+ readonly styles: StyledSpinner;
+ destroy(): Promise;
+ private initialize;
+}
diff --git a/plugins/filterizr/Spinner/StyledSpinner.d.ts b/plugins/filterizr/Spinner/StyledSpinner.d.ts
new file mode 100755
index 000000000..a69c42e0f
--- /dev/null
+++ b/plugins/filterizr/Spinner/StyledSpinner.d.ts
@@ -0,0 +1,5 @@
+import StyledFilterizrElement from '../StyledFilterizrElement';
+export default class StyledSpinner extends StyledFilterizrElement {
+ initialize(): void;
+ fadeOut(): Promise;
+}
diff --git a/plugins/filterizr/Spinner/index.d.ts b/plugins/filterizr/Spinner/index.d.ts
new file mode 100755
index 000000000..f90663a51
--- /dev/null
+++ b/plugins/filterizr/Spinner/index.d.ts
@@ -0,0 +1 @@
+export { default } from './Spinner';
diff --git a/plugins/filterizr/Spinner/makeSpinner.d.ts b/plugins/filterizr/Spinner/makeSpinner.d.ts
new file mode 100755
index 000000000..b51648b2e
--- /dev/null
+++ b/plugins/filterizr/Spinner/makeSpinner.d.ts
@@ -0,0 +1,2 @@
+import { SpinnerOptions } from '../types/interfaces';
+export declare function makeSpinner({ fillColor }: SpinnerOptions): HTMLElement;
diff --git a/plugins/filterizr/StyledFilterizrElement.d.ts b/plugins/filterizr/StyledFilterizrElement.d.ts
new file mode 100755
index 000000000..269a0b507
--- /dev/null
+++ b/plugins/filterizr/StyledFilterizrElement.d.ts
@@ -0,0 +1,12 @@
+import { Destructible } from './types/interfaces/Destructible';
+import FilterizrOptions from './FilterizrOptions';
+export default abstract class StyledFilterizrElement implements Destructible {
+ protected options: FilterizrOptions;
+ protected node: HTMLElement;
+ constructor(node: HTMLElement, options: FilterizrOptions);
+ destroy(): void;
+ protected animate(targetStyles: object): Promise;
+ protected set(targetStyles: object): void;
+ protected remove(propertyName: string): void;
+ abstract initialize(): void | Promise;
+}
diff --git a/plugins/filterizr/StyledFilterizrElements.d.ts b/plugins/filterizr/StyledFilterizrElements.d.ts
new file mode 100755
index 000000000..634ce35f9
--- /dev/null
+++ b/plugins/filterizr/StyledFilterizrElements.d.ts
@@ -0,0 +1,2 @@
+export default abstract class StyledFilterizrElements {
+}
diff --git a/plugins/filterizr/animate.d.ts b/plugins/filterizr/animate.d.ts
new file mode 100755
index 000000000..2d8f85438
--- /dev/null
+++ b/plugins/filterizr/animate.d.ts
@@ -0,0 +1,6 @@
+declare class Animator {
+ static animate(node: HTMLElement, targetStyles: object): Promise;
+ private static process;
+}
+declare const _default: typeof Animator.animate;
+export default _default;
diff --git a/plugins/filterizr/config/cssEasingValuesRegexp.d.ts b/plugins/filterizr/config/cssEasingValuesRegexp.d.ts
new file mode 100755
index 000000000..f7cc5e872
--- /dev/null
+++ b/plugins/filterizr/config/cssEasingValuesRegexp.d.ts
@@ -0,0 +1,4 @@
+/**
+ * A Regexp to validate potential values for the CSS easing property of transitions.
+ */
+export declare const cssEasingValuesRegexp: RegExp;
diff --git a/plugins/filterizr/config/filterizrState.d.ts b/plugins/filterizr/config/filterizrState.d.ts
new file mode 100755
index 000000000..a418b0ce2
--- /dev/null
+++ b/plugins/filterizr/config/filterizrState.d.ts
@@ -0,0 +1,11 @@
+interface FilterizrState {
+ IDLE: 'IDLE';
+ FILTERING: 'FILTERING';
+ SORTING: 'SORTING';
+ SHUFFLING: 'SHUFFLING';
+}
+/**
+ * Possible animation states for Filterizr
+ */
+export declare const FILTERIZR_STATE: FilterizrState;
+export {};
diff --git a/plugins/filterizr/config/index.d.ts b/plugins/filterizr/config/index.d.ts
new file mode 100755
index 000000000..5e84dc22f
--- /dev/null
+++ b/plugins/filterizr/config/index.d.ts
@@ -0,0 +1,3 @@
+export { FILTERIZR_STATE } from './filterizrState';
+export { LAYOUT } from './layout';
+export { cssEasingValuesRegexp } from './cssEasingValuesRegexp';
diff --git a/plugins/filterizr/config/layout.d.ts b/plugins/filterizr/config/layout.d.ts
new file mode 100755
index 000000000..53be33f8a
--- /dev/null
+++ b/plugins/filterizr/config/layout.d.ts
@@ -0,0 +1,13 @@
+interface Layout {
+ SAME_SIZE: 'sameSize';
+ SAME_HEIGHT: 'sameHeight';
+ SAME_WIDTH: 'sameWidth';
+ PACKED: 'packed';
+ HORIZONTAL: 'horizontal';
+ VERTICAL: 'vertical';
+}
+/**
+ * Possible grid layout modes
+ */
+export declare const LAYOUT: Layout;
+export {};
diff --git a/plugins/filterizr/filterizr.min.js b/plugins/filterizr/filterizr.min.js
new file mode 100755
index 000000000..b1067b955
--- /dev/null
+++ b/plugins/filterizr/filterizr.min.js
@@ -0,0 +1,12 @@
+!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var r,i;
+/*!
+ * imagesLoaded v4.1.4
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+/*!
+ * imagesLoaded v4.1.4
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+!function(o,s){"use strict";r=[n(2)],void 0===(i=function(t){return function(t,e){var n=t.jQuery,r=t.console;function i(t,e){for(var n in e)t[n]=e[n];return t}var o=Array.prototype.slice;function s(t,e,a){if(!(this instanceof s))return new s(t,e,a);var u=t;"string"==typeof t&&(u=document.querySelectorAll(t)),u?(this.elements=function(t){if(Array.isArray(t))return t;if("object"==typeof t&&"number"==typeof t.length)return o.call(t);return[t]}(u),this.options=i({},this.options),"function"==typeof e?a=e:i(this.options,e),a&&this.on("always",a),this.getImages(),n&&(this.jqDeferred=new n.Deferred),setTimeout(this.check.bind(this))):r.error("Bad element for imagesLoaded "+(u||t))}s.prototype=Object.create(e.prototype),s.prototype.options={},s.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},s.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&a[e]){for(var n=t.querySelectorAll("img"),r=0;r0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(1),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] Position[];
+export default getLayoutPositions;
diff --git a/plugins/filterizr/index.d.ts b/plugins/filterizr/index.d.ts
new file mode 100755
index 000000000..7f753b22e
--- /dev/null
+++ b/plugins/filterizr/index.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Filterizr is a JavaScript library that sorts, shuffles and applies stunning
+ * filters over responsive galleries using CSS3 transitions and
+ * custom CSS effects.
+ * @author Yiotis Kaltsikis
+ * @see {@link http://yiotis.net/filterizr}
+ * @license MIT
+ */
+export { default } from './Filterizr';
diff --git a/plugins/filterizr/index.jquery.d.ts b/plugins/filterizr/index.jquery.d.ts
new file mode 100755
index 000000000..5f8461219
--- /dev/null
+++ b/plugins/filterizr/index.jquery.d.ts
@@ -0,0 +1,10 @@
+/**
+ * Filterizr is a JavaScript library that sorts, shuffles and applies stunning filters over
+ * responsive galleries using CSS3 transitions and custom CSS effects.
+ *
+ * @author Yiotis Kaltsikis
+ * @see {@link http://yiotis.net/filterizr}
+ * @license MIT
+ */
+import Filterizr from './Filterizr';
+export default Filterizr;
diff --git a/plugins/filterizr/installAsJQueryPlugin.d.ts b/plugins/filterizr/installAsJQueryPlugin.d.ts
new file mode 100755
index 000000000..a73182198
--- /dev/null
+++ b/plugins/filterizr/installAsJQueryPlugin.d.ts
@@ -0,0 +1 @@
+export default function installAsJQueryPlugin($: any): void;
diff --git a/plugins/filterizr/jquery.filterizr.min.js b/plugins/filterizr/jquery.filterizr.min.js
new file mode 100755
index 000000000..a7a53ba92
--- /dev/null
+++ b/plugins/filterizr/jquery.filterizr.min.js
@@ -0,0 +1,29 @@
+var Filterizr=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){"use strict";var r={IDLE:"IDLE",FILTERING:"FILTERING",SORTING:"SORTING",SHUFFLING:"SHUFFLING"},i={SAME_SIZE:"sameSize",SAME_HEIGHT:"sameHeight",SAME_WIDTH:"sameWidth",PACKED:"packed",HORIZONTAL:"horizontal",VERTICAL:"vertical"},o=/(^linear$)|(^ease-in-out$)|(^ease-in$)|(^ease-out$)|(^ease$)|(^step-start$)|(^step-end$)|(^steps\(\d\s*,\s*(end|start)\))$|(^cubic-bezier\((\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\))$/,s=function(t,e,n,r,i){if(void 0!==e){var o=new Error('Filterizr: expected type of option "'+t+'" to be "'+n+'", but its type is: "'+typeof e+'"'),s=!1,a=!1,u=n.includes("array");if((typeof e).match(n)?s=!0:!s&&u&&(a=Array.isArray(e)),!s&&!u)throw o;if(!s&&u&&!a)throw o;var c=function(t){return t?" For further help read here: "+t:""};if(Array.isArray(r)){var l=!1;if(r.forEach(function(t){t===e&&(l=!0)}),!l)throw new Error('Filterizr: allowed values for option "'+t+'" are: '+r.map(function(t){return'"'+t+'"'}).join(", ")+'. Value received: "'+e+'".'+c(i))}else if("string"==typeof e&&r instanceof RegExp){if(!e.match(r))throw new Error('Filterizr: invalid value "'+e+'" for option "'+t+'" received.'+c(i))}}},a=function(t,e,n){var r;return function(){var i=this,o=arguments;clearTimeout(r),r=window.setTimeout(function(){r=null,n||t.apply(i,o)},e),n&&!r&&t.apply(i,o)}},u=function(t,e){return t.length===e.length&&t.reduce(function(t,n,r){var i=n.getSortAttribute("index"),o=e[r].getSortAttribute("index");return t&&i===o},!0)};var c=function(t){return"string"==typeof t?document.querySelector(t):t};function l(t){return t&&"object"==typeof t&&!Array.isArray(t)}function f(t){for(var e,n,r=[],i=1;i0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(2),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] Position[];
+export default getHorizontalLayoutPositions;
diff --git a/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts b/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts
new file mode 100755
index 000000000..cdf7f5e22
--- /dev/null
+++ b/plugins/filterizr/layouts/getPackedLayoutPositions.d.ts
@@ -0,0 +1,8 @@
+import { Position } from '../FilterItem';
+import FilterContainer from '../FilterContainer';
+/**
+ * Packed layout for items that can have varying width as well as varying height.
+ * @param filterContainer instance.
+ */
+declare const getPackedLayoutPositions: (filterContainer: FilterContainer) => Position[];
+export default getPackedLayoutPositions;
diff --git a/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts b/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts
new file mode 100755
index 000000000..a8a41cc8b
--- /dev/null
+++ b/plugins/filterizr/layouts/getSameHeightLayoutPositions.d.ts
@@ -0,0 +1,8 @@
+import { Position } from '../FilterItem';
+import FilterContainer from '../FilterContainer';
+/**
+ * Same height layout for items that have the same height, but can have varying width
+ * @param filterContainer instance.
+ */
+declare const getSameHeightLayoutPositions: (filterContainer: FilterContainer) => Position[];
+export default getSameHeightLayoutPositions;
diff --git a/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts b/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts
new file mode 100755
index 000000000..e562d91f9
--- /dev/null
+++ b/plugins/filterizr/layouts/getSameSizeLayoutPosition.d.ts
@@ -0,0 +1,8 @@
+import { Position } from '../FilterItem';
+import FilterContainer from '../FilterContainer';
+/**
+ * Same size layout for items that have the same width/height
+ * @param filterContainer instance.
+ */
+declare const getSameSizeLayoutPosition: (filterContainer: FilterContainer) => Position[];
+export default getSameSizeLayoutPosition;
diff --git a/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts b/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts
new file mode 100755
index 000000000..191557799
--- /dev/null
+++ b/plugins/filterizr/layouts/getSameWidthLayoutPositions.d.ts
@@ -0,0 +1,8 @@
+import { Position } from '../FilterItem';
+import FilterContainer from '../FilterContainer';
+/**
+ * Same width layout for items that have the same width, but can have varying height
+ * @param filterContainer instance.
+ */
+declare const getSameWidthLayoutPositions: (filterContainer: FilterContainer) => Position[];
+export default getSameWidthLayoutPositions;
diff --git a/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts b/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts
new file mode 100755
index 000000000..9f9bf4728
--- /dev/null
+++ b/plugins/filterizr/layouts/getVerticalLayoutPositions.d.ts
@@ -0,0 +1,8 @@
+import { Position } from '../FilterItem';
+import FilterContainer from '../FilterContainer';
+/**
+ * Vertical layout algorithm that arranges all FilterItems in one column. Their height may vary.
+ * @param filterizr instance.
+ */
+declare const getVerticalLayoutPositions: (filterContainer: FilterContainer) => Position[];
+export default getVerticalLayoutPositions;
diff --git a/plugins/filterizr/makeLayoutPositions/Packer.d.ts b/plugins/filterizr/makeLayoutPositions/Packer.d.ts
new file mode 100755
index 000000000..96ddc854f
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/Packer.d.ts
@@ -0,0 +1,30 @@
+/**
+ * Modified version of Jake Gordon's Bin Packing algorithm used for Filterizr's 'packed' layout
+ * @see {@link https://github.com/jakesgordon/bin-packing}
+ */
+interface PackerRoot {
+ x: number;
+ y: number;
+ w: number;
+ h?: number;
+ used?: boolean;
+ down?: PackerRoot;
+ right?: PackerRoot;
+}
+interface PackerBlock {
+ x?: number;
+ y?: number;
+ w?: number;
+ h?: number;
+ fit?: PackerRoot | void;
+}
+export default class Packer {
+ root: PackerRoot;
+ constructor(w: number);
+ init(w: number): void;
+ fit(blocks: PackerBlock[]): void;
+ findNode(root: PackerRoot, w: number, h: number): PackerRoot | void;
+ splitNode(node: PackerRoot, w: number, h: number): PackerRoot;
+ growDown(w: number, h: number): PackerRoot | void;
+}
+export {};
diff --git a/plugins/filterizr/makeLayoutPositions/index.d.ts b/plugins/filterizr/makeLayoutPositions/index.d.ts
new file mode 100755
index 000000000..45ca82b56
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/index.d.ts
@@ -0,0 +1 @@
+export { default } from './makeLayoutPositions';
diff --git a/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts b/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts
new file mode 100755
index 000000000..be5d96d65
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makeHorizontalLayoutPositions.d.ts
@@ -0,0 +1,6 @@
+import { ContainerLayout, Dimensions } from '../types/interfaces';
+declare const _default: (itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout;
+/**
+ * Horizontal layout algorithm that arranges all FilterItems in one row. Their width may vary.
+ */
+export default _default;
diff --git a/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts b/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts
new file mode 100755
index 000000000..3f79af046
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makeLayoutPositions.d.ts
@@ -0,0 +1,7 @@
+import { ContainerLayout, Dimensions, Options } from '../types/interfaces';
+declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], { gutterPixels, layout }: Options) => ContainerLayout;
+/**
+ * Creates the specifications of the dimensions of the
+ * container and items for the next render of Filterizr.
+ */
+export default _default;
diff --git a/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts b/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts
new file mode 100755
index 000000000..7a73ad3c1
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makePackedLayoutPositions.d.ts
@@ -0,0 +1,6 @@
+import { ContainerLayout, Dimensions } from '../types/interfaces';
+declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout;
+/**
+ * Packed layout for items that can have varying width as well as varying height.
+ */
+export default _default;
diff --git a/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts b/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts
new file mode 100755
index 000000000..947c52b06
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makeSameHeightLayoutPositions.d.ts
@@ -0,0 +1,6 @@
+import { ContainerLayout, Dimensions } from '../types/interfaces';
+declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout;
+/**
+ * Same height layout for items that have the same height, but can have varying width
+ */
+export default _default;
diff --git a/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts b/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts
new file mode 100755
index 000000000..d8dde5d16
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makeSameSizeLayoutPosition.d.ts
@@ -0,0 +1,6 @@
+import { ContainerLayout, Dimensions } from '../types/interfaces';
+declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout;
+/**
+ * Same size layout for items that have the same width/height
+ */
+export default _default;
diff --git a/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts b/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts
new file mode 100755
index 000000000..5c5202503
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makeSameWidthLayoutPositions.d.ts
@@ -0,0 +1,6 @@
+import { ContainerLayout, Dimensions } from '../types/interfaces';
+declare const _default: (containerWidth: number, itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout;
+/**
+ * Same width layout for items that have the same width and varying height
+ */
+export default _default;
diff --git a/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts b/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts
new file mode 100755
index 000000000..c630e160f
--- /dev/null
+++ b/plugins/filterizr/makeLayoutPositions/makeVerticalLayoutPositions.d.ts
@@ -0,0 +1,6 @@
+import { ContainerLayout, Dimensions } from '../types/interfaces';
+declare const _default: (itemsDimensions: Dimensions[], gutterPixels: number) => ContainerLayout;
+/**
+ * Vertical layout algorithm that arranges all FilterItems in one column. Their height may vary.
+ */
+export default _default;
diff --git a/plugins/filterizr/types/index.d.ts b/plugins/filterizr/types/index.d.ts
new file mode 100755
index 000000000..33547eba5
--- /dev/null
+++ b/plugins/filterizr/types/index.d.ts
@@ -0,0 +1,3 @@
+export declare type Filter = string | string[];
+export declare type FilterizrState = 'IDLE' | 'FILTERING' | 'SORTING' | 'SHUFFLING';
+export declare type Layout = 'horizontal' | 'vertical' | 'sameHeight' | 'sameWidth' | 'sameSize' | 'packed';
diff --git a/plugins/filterizr/types/interfaces/BaseOptions.d.ts b/plugins/filterizr/types/interfaces/BaseOptions.d.ts
new file mode 100755
index 000000000..f82907b63
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/BaseOptions.d.ts
@@ -0,0 +1,20 @@
+import { SpinnerOptions } from './SpinnerOptions';
+import { RawOptionsCallbacks } from './RawOptionsCallbacks';
+import { Layout } from '..';
+export interface BaseOptions {
+ animationDuration?: number;
+ callbacks?: RawOptionsCallbacks;
+ controlsSelector?: string;
+ delay?: number;
+ delayMode?: 'alternate' | 'progressive';
+ easing?: string;
+ filterOutCss?: object;
+ filterInCss?: object;
+ gridItemsSelector?: string;
+ gutterPixels?: number;
+ layout?: Layout;
+ multifilterLogicalOperator?: 'or' | 'and';
+ searchTerm?: string;
+ setupControls?: boolean;
+ spinner?: SpinnerOptions;
+}
diff --git a/plugins/filterizr/types/interfaces/ContainerLayout.d.ts b/plugins/filterizr/types/interfaces/ContainerLayout.d.ts
new file mode 100755
index 000000000..b979c5aef
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/ContainerLayout.d.ts
@@ -0,0 +1,5 @@
+import { Position } from './Position';
+export interface ContainerLayout {
+ containerHeight: number;
+ itemsPositions: Position[];
+}
diff --git a/plugins/filterizr/types/interfaces/Destructible.d.ts b/plugins/filterizr/types/interfaces/Destructible.d.ts
new file mode 100755
index 000000000..c5ba34b42
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Destructible.d.ts
@@ -0,0 +1,3 @@
+export interface Destructible {
+ destroy(): void | Promise;
+}
diff --git a/plugins/filterizr/types/interfaces/Dictionary.d.ts b/plugins/filterizr/types/interfaces/Dictionary.d.ts
new file mode 100755
index 000000000..cf55c6f30
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Dictionary.d.ts
@@ -0,0 +1,3 @@
+export interface Dictionary {
+ [key: string]: any;
+}
diff --git a/plugins/filterizr/types/interfaces/Dimensions.d.ts b/plugins/filterizr/types/interfaces/Dimensions.d.ts
new file mode 100755
index 000000000..07ae5a343
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Dimensions.d.ts
@@ -0,0 +1,4 @@
+export interface Dimensions {
+ width: number;
+ height: number;
+}
diff --git a/plugins/filterizr/types/interfaces/Options.d.ts b/plugins/filterizr/types/interfaces/Options.d.ts
new file mode 100755
index 000000000..ea92d21f3
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Options.d.ts
@@ -0,0 +1,5 @@
+import { BaseOptions } from './BaseOptions';
+import ActiveFilter from '../../ActiveFilter';
+export interface Options extends BaseOptions {
+ filter: ActiveFilter;
+}
diff --git a/plugins/filterizr/types/interfaces/Position.d.ts b/plugins/filterizr/types/interfaces/Position.d.ts
new file mode 100755
index 000000000..7401f9fae
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Position.d.ts
@@ -0,0 +1,4 @@
+export interface Position {
+ left: number;
+ top: number;
+}
diff --git a/plugins/filterizr/types/interfaces/RawOptions.d.ts b/plugins/filterizr/types/interfaces/RawOptions.d.ts
new file mode 100755
index 000000000..4ace1a3d9
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/RawOptions.d.ts
@@ -0,0 +1,4 @@
+import { BaseOptions } from './BaseOptions';
+export interface RawOptions extends BaseOptions {
+ filter?: string | string[];
+}
diff --git a/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts b/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts
new file mode 100755
index 000000000..076a3d3de
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/RawOptionsCallbacks.d.ts
@@ -0,0 +1,10 @@
+export interface RawOptionsCallbacks {
+ onInit?: EventListener;
+ onFilteringStart?: EventListener;
+ onFilteringEnd?: EventListener;
+ onShufflingStart?: EventListener;
+ onShufflingEnd?: EventListener;
+ onSortingStart?: EventListener;
+ onSortingEnd?: EventListener;
+ onTransitionEnd?: EventListener;
+}
diff --git a/plugins/filterizr/types/interfaces/Resizable.d.ts b/plugins/filterizr/types/interfaces/Resizable.d.ts
new file mode 100755
index 000000000..4c6aa1e29
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Resizable.d.ts
@@ -0,0 +1,6 @@
+export interface Resizable {
+ readonly dimensions: {
+ width: number;
+ height: number;
+ };
+}
diff --git a/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts b/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts
new file mode 100755
index 000000000..48fd8adba
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/SpinnerOptions.d.ts
@@ -0,0 +1,6 @@
+import { Dictionary } from './Dictionary';
+export interface SpinnerOptions {
+ enabled?: boolean;
+ fillColor?: string;
+ styles?: Dictionary;
+}
diff --git a/plugins/filterizr/types/interfaces/Styleable.d.ts b/plugins/filterizr/types/interfaces/Styleable.d.ts
new file mode 100755
index 000000000..867ead269
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/Styleable.d.ts
@@ -0,0 +1,5 @@
+import StyledFilterizrElement from '../../StyledFilterizrElement';
+import StyledFilterizrElements from '../../StyledFilterizrElements';
+export interface Styleable {
+ readonly styles: StyledFilterizrElement | StyledFilterizrElements;
+}
diff --git a/plugins/filterizr/types/interfaces/index.d.ts b/plugins/filterizr/types/interfaces/index.d.ts
new file mode 100755
index 000000000..382a0ee2a
--- /dev/null
+++ b/plugins/filterizr/types/interfaces/index.d.ts
@@ -0,0 +1,12 @@
+export { BaseOptions } from './BaseOptions';
+export { ContainerLayout } from './ContainerLayout';
+export { Destructible } from './Destructible';
+export { Dictionary } from './Dictionary';
+export { Dimensions } from './Dimensions';
+export { Options } from './Options';
+export { Position } from './Position';
+export { RawOptions } from './RawOptions';
+export { RawOptionsCallbacks } from './RawOptionsCallbacks';
+export { Resizable } from './Resizable';
+export { SpinnerOptions } from './SpinnerOptions';
+export { Styleable } from './Styleable';
diff --git a/plugins/filterizr/utils.d.ts b/plugins/filterizr/utils.d.ts
new file mode 100755
index 000000000..5cf43300f
--- /dev/null
+++ b/plugins/filterizr/utils.d.ts
@@ -0,0 +1,140 @@
+import { Dictionary } from './types/interfaces/Dictionary';
+import FilterItem from './FilterItem';
+/**
+ * A function to check that all elements of an array are found within another array.
+ * @param {Array} arr1 is the array of strings to be checked
+ * @param {Array} arr2 is the array of strings to check against
+ * @return {Boolean} whether all string of arr1 are contained in arr2
+ */
+declare const allStringsOfArray1InArray2: (arr1: string[], arr2: string[]) => boolean;
+export { allStringsOfArray1InArray2 };
+/**
+ * Given a CSS prop it will normalize the syntax for JS
+ * e.g. transform background-color to backgroundColor
+ * @param {String} cssProp prop name
+ * @return {String} normalized name
+ */
+declare const getNormalizedCssPropName: (cssProp: string) => string;
+export { getNormalizedCssPropName };
+/**
+ * Set inline styles on an HTML node
+ * @param {HTMLElement} node - HTML node
+ * @param {Object} styles - object with styles
+ * @returns {undefined}
+ */
+declare function setStylesOnHTMLNode(node: Element, styles: any): void;
+export { setStylesOnHTMLNode };
+/**
+ * Returns an object with value/key pairs of all data
+ * attributes on an HTML element, disregarding the
+ * two data attributes that are reserved for internal
+ * usage by Filterizr
+ * @param {Object} node - HTML node
+ * @returns {Object} map of data attributes / values
+ */
+declare function getDataAttributesOfHTMLNode(node: Element): Dictionary;
+export { getDataAttributesOfHTMLNode };
+/**
+ * Check that a DOM element has a data-attribute present
+ * @param {Object} node element
+ * @param {String} dataAttributeName name of data attribute
+ * @return {Boolean} data attribute exists
+ */
+declare function checkDataAttributeExists(node: Element, dataAttributeName: string): boolean;
+export { checkDataAttributeExists };
+/**
+ * A very simple function to perform a basic
+ * deep clone of an object.
+ * @param {Object} o is the object to perform the deep clone on
+ * @return {Object} deep clone
+ */
+declare const makeShallowClone: (o: any) => Dictionary;
+export { makeShallowClone };
+/**
+ * A function to recursively merge an object, copying over all
+ * properties of the old object missing from the target object.
+ * In case a prop in is an object, the method is called recursively.
+ * This is a non-mutating method.
+ * @param {Object} old is the old object from which the missing props are copied.
+ * @param {Object} target is the target object with the updated values.
+ */
+declare const merge: (old: any, target: any) => Dictionary;
+export { merge };
+/**
+ * A function get the intersection of two arrays. IE9+.
+ * @param {Array} arr1 is the first array of which to get the intersection
+ * @param {Array} arr2 is the second array of which to get the intersection
+ */
+declare const intersection: (arr1: any[], arr2: any[]) => any;
+export { intersection };
+/**
+ * Debounce of Underscore.js
+ */
+declare const debounce: (func: Function, wait: number, immediate: boolean) => Function;
+export { debounce };
+/**
+ * Fisher-Yates shuffle ES6 non-mutating implementation.
+ * @param {Array} array the array to shuffle
+ * @return {Array} shuffled array without mutating the initial array.
+ */
+declare const shuffle: (array: any[]) => any[];
+export { shuffle };
+/**
+ * Simple method to check if two arrays of FilterItems
+ * are sorted in the same manner or not.
+ * @param {Array} arr1 the first array of FilterItems
+ * @param {Array} arr2 the second array of FilterItems
+ * @return {Boolean} equality
+ */
+declare const filterItemArraysHaveSameSorting: (filterItemsA: FilterItem[], filterItemsB: FilterItem[]) => boolean;
+export { filterItemArraysHaveSameSorting };
+/**
+ * Simple non-mutating sorting function for arrays of objects by a property
+ * @param {Array} array to sort
+ * @param {Function} propFn fetches the property by which to sort
+ * @return {Array} a new sorted array
+ */
+declare const sortBy: (array: any[], propFn: Function) => any[];
+export { sortBy };
+/**
+ * Error checking method to restrict a prop to some allowed values
+ * @param {String} name of the option key in the options object
+ * @param {String|Number|Object|Function|Array|Boolean} value of the option
+ * @param {String} type of the property
+ * @param {Array} allowed accepted values for option
+ * @param {String} furtherHelpLink a link to docs for further help
+ */
+declare const checkOptionForErrors: (name: string, value: string | number | boolean | object | Function | any[], type?: string, allowed?: RegExp | any[], furtherHelpLink?: string) => void;
+export { checkOptionForErrors };
+/**
+ * Wrapper around document.querySelector, will function as
+ * an identity function if an HTML element is passed in
+ * @param {HTMLElement|string} nodeOrSelector
+ */
+declare const getHTMLElement: (selectorOrNode: string | HTMLElement) => HTMLElement;
+export { getHTMLElement };
+/**
+ * A Regexp to validate potential values for the CSS easing property of transitions.
+ */
+declare const cssEasingValuesRegexp: RegExp;
+export { cssEasingValuesRegexp };
+/**
+ * Possible animation states for Filterizr
+ */
+declare const FILTERIZR_STATE: {
+ IDLE: string;
+ FILTERING: string;
+ SORTING: string;
+ SHUFFLING: string;
+};
+export { FILTERIZR_STATE };
+/**
+ * Transition end events with vendor prefixing
+ */
+declare const TRANSITION_END_EVENTS: string[];
+export { TRANSITION_END_EVENTS };
+/**
+ * A no-operation function
+ */
+declare const noop: () => void;
+export { noop };
diff --git a/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts b/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts
new file mode 100755
index 000000000..d128448e5
--- /dev/null
+++ b/plugins/filterizr/utils/allStringsOfArray1InArray2.d.ts
@@ -0,0 +1 @@
+export declare const allStringsOfArray1InArray2: (arr1: string[], arr2: string[]) => boolean;
diff --git a/plugins/filterizr/utils/checkOptionForErrors.d.ts b/plugins/filterizr/utils/checkOptionForErrors.d.ts
new file mode 100755
index 000000000..2d4f17bc5
--- /dev/null
+++ b/plugins/filterizr/utils/checkOptionForErrors.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Error checking method to restrict a prop to some allowed values
+ * @param {String} name of the option key in the options object
+ * @param {String|Number|Object|Function|Array|Boolean} value of the option
+ * @param {String} type of the property
+ * @param {Array} allowed accepted values for option
+ * @param {String} furtherHelpLink a link to docs for further help
+ */
+export declare const checkOptionForErrors: (name: string, value: string | number | boolean | object | Function | any[], type?: string, allowed?: RegExp | any[], furtherHelpLink?: string) => void;
diff --git a/plugins/filterizr/utils/debounce.d.ts b/plugins/filterizr/utils/debounce.d.ts
new file mode 100755
index 000000000..aa3795cb1
--- /dev/null
+++ b/plugins/filterizr/utils/debounce.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Debounce of Underscore.js
+ */
+export declare const debounce: (func: Function, wait: number, immediate: boolean) => Function;
diff --git a/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts b/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts
new file mode 100755
index 000000000..a6ebfc62c
--- /dev/null
+++ b/plugins/filterizr/utils/filterItemArraysHaveSameSorting.d.ts
@@ -0,0 +1,9 @@
+import FilterItem from '../FilterItem';
+/**
+ * Simple method to check if two arrays of FilterItems
+ * are sorted in the same manner or not.
+ * @param {Array} arr1 the first array of FilterItems
+ * @param {Array} arr2 the second array of FilterItems
+ * @return {Boolean} equality
+ */
+export declare const filterItemArraysHaveSameSorting: (filterItemsA: FilterItem[], filterItemsB: FilterItem[]) => boolean;
diff --git a/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts b/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts
new file mode 100755
index 000000000..1b2d4d1cf
--- /dev/null
+++ b/plugins/filterizr/utils/getDataAttributesOfHTMLNode.d.ts
@@ -0,0 +1,2 @@
+import { Dictionary } from '../types/interfaces/Dictionary';
+export declare function getDataAttributesOfHTMLNode(node: Element): Dictionary;
diff --git a/plugins/filterizr/utils/getHTMLElement.d.ts b/plugins/filterizr/utils/getHTMLElement.d.ts
new file mode 100755
index 000000000..099a09baf
--- /dev/null
+++ b/plugins/filterizr/utils/getHTMLElement.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Wrapper around document.querySelector, will function as
+ * an identity function if an HTML element is passed in
+ * @param {HTMLElement|string} nodeOrSelector
+ */
+export declare const getHTMLElement: (selectorOrNode: string | HTMLElement) => HTMLElement;
diff --git a/plugins/filterizr/utils/index.d.ts b/plugins/filterizr/utils/index.d.ts
new file mode 100755
index 000000000..62ca737b6
--- /dev/null
+++ b/plugins/filterizr/utils/index.d.ts
@@ -0,0 +1,12 @@
+export { allStringsOfArray1InArray2 } from './allStringsOfArray1InArray2';
+export { checkOptionForErrors } from './checkOptionForErrors';
+export { debounce } from './debounce';
+export { filterItemArraysHaveSameSorting, } from './filterItemArraysHaveSameSorting';
+export { getDataAttributesOfHTMLNode } from './getDataAttributesOfHTMLNode';
+export { getHTMLElement } from './getHTMLElement';
+export { intersection } from './intersection';
+export { merge } from './merge';
+export { noop } from './noop';
+export { setStyles } from './setStyles';
+export { shuffle } from './shuffle';
+export { sortBy } from './sortBy';
diff --git a/plugins/filterizr/utils/intersection.d.ts b/plugins/filterizr/utils/intersection.d.ts
new file mode 100755
index 000000000..70b6c98f8
--- /dev/null
+++ b/plugins/filterizr/utils/intersection.d.ts
@@ -0,0 +1,4 @@
+/**
+ * A function get the intersection of two arrays. IE9+.
+ */
+export declare const intersection: (arr1: any[], arr2: any[]) => any[];
diff --git a/plugins/filterizr/utils/merge.d.ts b/plugins/filterizr/utils/merge.d.ts
new file mode 100755
index 000000000..00f19f2a7
--- /dev/null
+++ b/plugins/filterizr/utils/merge.d.ts
@@ -0,0 +1,5 @@
+import { Dictionary } from '../types/interfaces/Dictionary';
+/**
+ * Deep merge two objects.
+ */
+export declare function merge(target: Dictionary, ...sources: Dictionary[]): Dictionary;
diff --git a/plugins/filterizr/utils/noop.d.ts b/plugins/filterizr/utils/noop.d.ts
new file mode 100755
index 000000000..ce943ff51
--- /dev/null
+++ b/plugins/filterizr/utils/noop.d.ts
@@ -0,0 +1,4 @@
+/**
+ * A no-operation function
+ */
+export declare const noop: () => void;
diff --git a/plugins/filterizr/utils/setStyles.d.ts b/plugins/filterizr/utils/setStyles.d.ts
new file mode 100755
index 000000000..bc91f3134
--- /dev/null
+++ b/plugins/filterizr/utils/setStyles.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Set inline styles on an HTML node
+ * @param {HTMLElement} node - HTML node
+ * @param {Object} styles - object with styles
+ * @returns {undefined}
+ */
+export declare function setStyles(node: Element, styles: any): void;
diff --git a/plugins/filterizr/utils/shuffle.d.ts b/plugins/filterizr/utils/shuffle.d.ts
new file mode 100755
index 000000000..9d17417ce
--- /dev/null
+++ b/plugins/filterizr/utils/shuffle.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Fisher-Yates shuffle ES6 non-mutating implementation.
+ * @param {Array} array the array to shuffle
+ * @return {Array} shuffled array without mutating the initial array.
+ */
+export declare const shuffle: (array: any[]) => any[];
diff --git a/plugins/filterizr/utils/sortBy.d.ts b/plugins/filterizr/utils/sortBy.d.ts
new file mode 100755
index 000000000..44de50991
--- /dev/null
+++ b/plugins/filterizr/utils/sortBy.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Simple non-mutating sorting function for arrays of objects by a property
+ * @param {Array} array to sort
+ * @param {Function} propFn fetches the property by which to sort
+ * @return {Array} a new sorted array
+ */
+export declare const sortBy: (array: any[], propFn: Function) => any[];
diff --git a/plugins/filterizr/vanilla.filterizr.min.js b/plugins/filterizr/vanilla.filterizr.min.js
new file mode 100755
index 000000000..e438bca07
--- /dev/null
+++ b/plugins/filterizr/vanilla.filterizr.min.js
@@ -0,0 +1,12 @@
+var Filterizr=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}([function(t,e,n){"use strict";var r={IDLE:"IDLE",FILTERING:"FILTERING",SORTING:"SORTING",SHUFFLING:"SHUFFLING"},i={SAME_SIZE:"sameSize",SAME_HEIGHT:"sameHeight",SAME_WIDTH:"sameWidth",PACKED:"packed",HORIZONTAL:"horizontal",VERTICAL:"vertical"},o=/(^linear$)|(^ease-in-out$)|(^ease-in$)|(^ease-out$)|(^ease$)|(^step-start$)|(^step-end$)|(^steps\(\d\s*,\s*(end|start)\))$|(^cubic-bezier\((\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\s*,\s*(\d*\.*\d+)\))$/,s=function(t,e,n,r,i){if(void 0!==e){var o=new Error('Filterizr: expected type of option "'+t+'" to be "'+n+'", but its type is: "'+typeof e+'"'),s=!1,a=!1,u=n.includes("array");if((typeof e).match(n)?s=!0:!s&&u&&(a=Array.isArray(e)),!s&&!u)throw o;if(!s&&u&&!a)throw o;var c=function(t){return t?" For further help read here: "+t:""};if(Array.isArray(r)){var l=!1;if(r.forEach(function(t){t===e&&(l=!0)}),!l)throw new Error('Filterizr: allowed values for option "'+t+'" are: '+r.map(function(t){return'"'+t+'"'}).join(", ")+'. Value received: "'+e+'".'+c(i))}else if("string"==typeof e&&r instanceof RegExp){if(!e.match(r))throw new Error('Filterizr: invalid value "'+e+'" for option "'+t+'" received.'+c(i))}}},a=function(t,e,n){var r;return function(){var i=this,o=arguments;clearTimeout(r),r=window.setTimeout(function(){r=null,n||t.apply(i,o)},e),n&&!r&&t.apply(i,o)}},u=function(t,e){return t.length===e.length&&t.reduce(function(t,n,r){var i=n.getSortAttribute("index"),o=e[r].getSortAttribute("index");return t&&i===o},!0)};var c=function(t){return"string"==typeof t?document.querySelector(t):t};function l(t){return t&&"object"==typeof t&&!Array.isArray(t)}function f(t){for(var e,n,r=[],i=1;i0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(2),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]