summaryrefslogtreecommitdiff
path: root/public/assets/js/DataTables/StateRestore-1.2.2
diff options
context:
space:
mode:
authorGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-18 01:11:37 +0300
committerGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-18 01:11:37 +0300
commit2b6970d33afd75be5bfef951dc3691d492004d43 (patch)
tree39eba4206ca0c4cd3fecd5ead95580a74e50f3f9 /public/assets/js/DataTables/StateRestore-1.2.2
parent68fc9e55e538e03f94509731ab41a0c8cf96710f (diff)
downloadclassroom-2b6970d33afd75be5bfef951dc3691d492004d43.tar.gz
classroom-2b6970d33afd75be5bfef951dc3691d492004d43.tar.bz2
classroom-2b6970d33afd75be5bfef951dc3691d492004d43.zip
admin back-office environment (skeleton); admin categories
Diffstat (limited to 'public/assets/js/DataTables/StateRestore-1.2.2')
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.css200
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.css231
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.css231
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.css226
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.css174
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.css214
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.css216
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.css264
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.min.css1
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.js2365
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.js71
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.js70
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.js73
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.js71
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.js58
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.js73
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.js74
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.min.js4
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.js76
-rw-r--r--public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.min.js4
34 files changed, 4731 insertions, 0 deletions
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.css
new file mode 100644
index 0000000..e08f87a
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.css
@@ -0,0 +1,200 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+span.dtsr-check-label {
+ padding-left: 3px;
+}
+
+div.dt-button-collection h3 {
+ margin-top: 8px;
+}
+div.dt-button-collection ul.dropdown-menu {
+ padding-top: 0px;
+}
+div.dt-button-collection ul.dropdown-menu div.dt-btn-split-wrapper {
+ width: 96% !important;
+ margin-left: 4px !important;
+ margin-top: 4px;
+}
+div.dt-button-collection ul.dropdown-menu div.dt-btn-split-wrapper button.btn {
+ width: calc(100% - 32px);
+}
+div.dt-button-collection ul.dropdown-menu div.dt-btn-split-wrapper button.dt-btn-split-drop {
+ width: 32px;
+}
+
+div.dt-button-split-left div.dropdown-menu {
+ padding-left: 4px;
+ padding-right: 4px;
+ padding-top: 0px;
+}
+div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button {
+ background-color: white;
+ border: 1px solid rgb(204, 204, 204);
+ border-radius: 4px;
+ margin-top: 4px;
+}
+div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button:hover {
+ background-color: #f5f5f5;
+}
+
+input.dtsr-input {
+ display: inline-block;
+ width: auto;
+ margin-left: 3px;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.min.css
new file mode 100644
index 0000000..a80afa3
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}span.dtsr-check-label{padding-left:3px}div.dt-button-collection h3{margin-top:8px}div.dt-button-collection ul.dropdown-menu{padding-top:0px}div.dt-button-collection ul.dropdown-menu div.dt-btn-split-wrapper{width:96% !important;margin-left:4px !important;margin-top:4px}div.dt-button-collection ul.dropdown-menu div.dt-btn-split-wrapper button.btn{width:calc(100% - 32px)}div.dt-button-collection ul.dropdown-menu div.dt-btn-split-wrapper button.dt-btn-split-drop{width:32px}div.dt-button-split-left div.dropdown-menu{padding-left:4px;padding-right:4px;padding-top:0px}div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button{background-color:white;border:1px solid rgb(204, 204, 204);border-radius:4px;margin-top:4px}div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button:hover{background-color:#f5f5f5}input.dtsr-input{display:inline-block;width:auto;margin-left:3px}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.css
new file mode 100644
index 0000000..5137698
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.css
@@ -0,0 +1,231 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+div.dt-button-collection h3 {
+ margin-top: 8px;
+ font-size: 1.5rem;
+}
+div.dt-button-collection div.dropdown-menu {
+ padding-top: 0px;
+ padding-bottom: 4px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper {
+ margin-top: 4px;
+}
+
+div.dt-button-split-left div.dropdown-menu {
+ padding-right: 4px;
+ padding-left: 4px;
+ padding-bottom: 4px;
+}
+div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button {
+ color: rgb(255, 255, 255);
+ border-radius: 4px;
+ background-color: rgb(107, 117, 125);
+ margin-top: 4px;
+}
+div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button:hover {
+ background-color: rgb(90, 98, 104);
+}
+
+input.dtsr-input {
+ display: inline-block;
+ width: auto;
+ margin-left: 3px;
+}
+
+div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: left !important;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+ position: relative;
+}
+
+div.dtsr-confirmation-text {
+ margin-top: 1.5em;
+}
+div.dtsr-confirmation-text label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: left !important;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+ position: relative;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.min.css
new file mode 100644
index 0000000..a4b6afb
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap4.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}div.dt-button-collection h3{margin-top:8px;font-size:1.5rem}div.dt-button-collection div.dropdown-menu{padding-top:0px;padding-bottom:4px;padding-left:4px;padding-right:4px}div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper{margin-top:4px}div.dt-button-split-left div.dropdown-menu{padding-right:4px;padding-left:4px;padding-bottom:4px}div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button{color:rgb(255, 255, 255);border-radius:4px;background-color:rgb(107, 117, 125);margin-top:4px}div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button:hover{background-color:rgb(90, 98, 104)}input.dtsr-input{display:inline-block;width:auto;margin-left:3px}div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:left !important;padding-right:15px;padding-left:15px}div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block;position:relative}div.dtsr-confirmation-text{margin-top:1.5em}div.dtsr-confirmation-text label.dtsr-name-label{width:33.3%;display:inline-block;text-align:left !important;padding-right:15px;padding-left:15px}div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block;position:relative}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.css
new file mode 100644
index 0000000..897080c
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.css
@@ -0,0 +1,231 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+span.dtsr-check-label {
+ padding-left: 3px;
+}
+
+div.dt-button-collection h3 {
+ margin-top: 8px;
+}
+div.dt-button-collection div.dropdown-menu {
+ padding-top: 0px;
+ padding-bottom: 4px;
+}
+div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper {
+ margin-top: 4px;
+ padding-left: 3px;
+ padding-right: 3px;
+}
+div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper button.btn {
+ width: calc(100% - 30px);
+}
+div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper button.dt-btn-split-drop {
+ width: 30px;
+}
+div.dt-button-collection div.dropdown-menu button.dt-btn-split-drop-button {
+ margin-left: -2px;
+ margin-right: -2px;
+}
+
+div.dt-button-split-left div.dropdown-menu {
+ padding-left: 4px;
+ padding-right: 4px;
+}
+div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button {
+ color: rgb(255, 255, 255);
+ border-radius: 4px;
+ background-color: rgb(107, 117, 125);
+ margin-top: 4px;
+}
+div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button:hover {
+ background-color: rgb(90, 98, 104);
+}
+
+input.dtsr-input {
+ margin-left: 3px;
+ display: inline-block;
+ width: auto;
+}
+
+div.dtsr-creation-form div.dtsr-check-row {
+ height: 25px;
+}
+div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: left !important;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+ position: relative;
+ float: none;
+ line-height: normal;
+}
+
+div.dtsr-confirmation-text {
+ margin-top: 1.5em;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.min.css
new file mode 100644
index 0000000..0728b5c
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bootstrap5.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}span.dtsr-check-label{padding-left:3px}div.dt-button-collection h3{margin-top:8px}div.dt-button-collection div.dropdown-menu{padding-top:0px;padding-bottom:4px}div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper{margin-top:4px;padding-left:3px;padding-right:3px}div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper button.btn{width:calc(100% - 30px)}div.dt-button-collection div.dropdown-menu div.dt-btn-split-wrapper button.dt-btn-split-drop{width:30px}div.dt-button-collection div.dropdown-menu button.dt-btn-split-drop-button{margin-left:-2px;margin-right:-2px}div.dt-button-split-left div.dropdown-menu{padding-left:4px;padding-right:4px}div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button{color:rgb(255, 255, 255);border-radius:4px;background-color:rgb(107, 117, 125);margin-top:4px}div.dt-button-split-left div.dropdown-menu button.dt-btn-split-drop-button:hover{background-color:rgb(90, 98, 104)}input.dtsr-input{margin-left:3px;display:inline-block;width:auto}div.dtsr-creation-form div.dtsr-check-row{height:25px}div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:left !important;padding-right:15px;padding-left:15px}div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block;position:relative;float:none;line-height:normal}div.dtsr-confirmation-text{margin-top:1.5em}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.css
new file mode 100644
index 0000000..cf06de3
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.css
@@ -0,0 +1,226 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+div.dtsr-form-row {
+ display: block;
+}
+
+div.dtsr-creation-form {
+ width: 100%;
+}
+
+div.checkbox {
+ cursor: default;
+}
+
+span.dtsr-check-label {
+ padding-left: 3px;
+}
+
+input.dtsr-input {
+ display: inline-block;
+ width: auto;
+}
+
+span.dtsr-confirmation-message {
+ font-size: 1rem;
+ padding-top: 7px;
+ padding-bottom: 7px;
+ line-height: 2.5em;
+}
+
+div.dt-button-collection {
+ width: auto;
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+}
+div.dt-button-collection div.dropdown-content {
+ width: 100%;
+ padding-top: 0.5rem;
+ padding-bottom: 0px;
+}
+div.dt-button-collection div.dropdown-content div.dropdown-trigger {
+ margin-bottom: 0px !important;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+div.dt-button-collection div.dropdown-content div.dropdown-trigger button.dt-button {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+div.dt-button-split-left div.dropdown-content {
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+ padding-top: 1rem;
+ padding-bottom: 0.5rem;
+ width: 100%;
+}
+div.dt-button-split-left div.dropdown-content button.dt-btn-split-drop-button {
+ width: 100%;
+ margin-top: 0.5rem;
+}
+
+div.dtsr-form-row label.dtsr-name-label, div.dtsr-confirmation-text label.dtsr-name-label {
+ line-height: 1.5;
+ padding-top: 10px;
+}
+
+div.dtsr-confirmation-text, div.dtsr-creation-form {
+ margin-top: 1.5em;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.min.css
new file mode 100644
index 0000000..5e2b47a
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.bulma.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}div.dtsr-form-row{display:block}div.dtsr-creation-form{width:100%}div.checkbox{cursor:default}span.dtsr-check-label{padding-left:3px}input.dtsr-input{display:inline-block;width:auto}span.dtsr-confirmation-message{font-size:1rem;padding-top:7px;padding-bottom:7px;line-height:2.5em}div.dt-button-collection{width:auto;padding-left:.5rem;padding-right:.5rem}div.dt-button-collection div.dropdown-content{width:100%;padding-top:.5rem;padding-bottom:0px}div.dt-button-collection div.dropdown-content div.dropdown-trigger{margin-bottom:0px !important;padding-right:.5rem;padding-left:.5rem}div.dt-button-collection div.dropdown-content div.dropdown-trigger button.dt-button{border-top-right-radius:4px;border-bottom-right-radius:4px}div.dt-button-split-left div.dropdown-content{padding-left:.5rem;padding-right:.5rem;padding-top:1rem;padding-bottom:.5rem;width:100%}div.dt-button-split-left div.dropdown-content button.dt-btn-split-drop-button{width:100%;margin-top:.5rem}div.dtsr-form-row label.dtsr-name-label,div.dtsr-confirmation-text label.dtsr-name-label{line-height:1.5;padding-top:10px}div.dtsr-confirmation-text,div.dtsr-creation-form{margin-top:1.5em}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.css
new file mode 100644
index 0000000..a194822
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.css
@@ -0,0 +1,174 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+div.dt-button-collection h3 {
+ font-size: 1.1em;
+}
+
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 57% !important;
+ padding: 5px 4px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: calc(33.3% + 30px) !important;
+}
+div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: calc(-33.3% - 30px) !important;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.min.css
new file mode 100644
index 0000000..ef5beff
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.dataTables.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}div.dt-button-collection h3{font-size:1.1em}div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:57% !important;padding:5px 4px;border:1px solid #aaa;border-radius:3px}div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:calc(33.3% + 30px) !important}div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:calc(-33.3% - 30px) !important}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.css
new file mode 100644
index 0000000..13adca5
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.css
@@ -0,0 +1,214 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+span.dtsr-check-label {
+ padding-left: 3px;
+}
+
+input.dtsr-check-box {
+ margin-bottom: 0px;
+}
+
+button.dtsr-creation-button {
+ margin-bottom: 0px;
+}
+
+div.dt-button-collection {
+ width: 150px;
+}
+div.dt-button-collection h3 {
+ font-size: 1.35rem;
+}
+div.dt-button-collection div.dropdown-pane {
+ width: 150px;
+ padding: 4px !important;
+ padding-bottom: 0px !important;
+}
+div.dt-button-collection div.dropdown-pane div.dt-btn-split-wrapper {
+ margin-bottom: 4px;
+}
+div.dt-button-collection div.dropdown-pane div.dt-btn-split-wrapper a.button {
+ width: calc(100% - 43px);
+ flex: none !important;
+ height: 41px;
+}
+div.dt-button-collection div.dropdown-pane div.dt-btn-split-wrapper button.dt-btn-split-drop {
+ width: 43px;
+ flex: none !important;
+ margin-left: -1px;
+ height: 41px;
+}
+div.dt-button-collection div.dropdown-pane button.dt-btn-split-drop-button {
+ width: 100%;
+ margin-bottom: 4px;
+}
+
+div.dt-button-split-left div.dropdown-pane {
+ padding-bottom: 4px !important;
+}
+
+input.dtsr-input {
+ display: inline-block;
+ width: auto;
+ font-size: 1rem;
+ margin-left: 3px;
+}
+
+div.dtsr-confirmation-text, div.dtsr-creation-form {
+ margin-top: 1.5em;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.min.css
new file mode 100644
index 0000000..31b6e37
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.foundation.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}span.dtsr-check-label{padding-left:3px}input.dtsr-check-box{margin-bottom:0px}button.dtsr-creation-button{margin-bottom:0px}div.dt-button-collection{width:150px}div.dt-button-collection h3{font-size:1.35rem}div.dt-button-collection div.dropdown-pane{width:150px;padding:4px !important;padding-bottom:0px !important}div.dt-button-collection div.dropdown-pane div.dt-btn-split-wrapper{margin-bottom:4px}div.dt-button-collection div.dropdown-pane div.dt-btn-split-wrapper a.button{width:calc(100% - 43px);flex:none !important;height:41px}div.dt-button-collection div.dropdown-pane div.dt-btn-split-wrapper button.dt-btn-split-drop{width:43px;flex:none !important;margin-left:-1px;height:41px}div.dt-button-collection div.dropdown-pane button.dt-btn-split-drop-button{width:100%;margin-bottom:4px}div.dt-button-split-left div.dropdown-pane{padding-bottom:4px !important}input.dtsr-input{display:inline-block;width:auto;font-size:1rem;margin-left:3px}div.dtsr-confirmation-text,div.dtsr-creation-form{margin-top:1.5em}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.css
new file mode 100644
index 0000000..8fecf8a
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.css
@@ -0,0 +1,216 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+div.dt-button-collection {
+ z-index: 2002;
+}
+div.dt-button-collection div, div.dt-button-collection ul {
+ background: none;
+}
+
+span.dtsr-emptyStates {
+ background: white;
+ padding-top: 2px !important;
+}
+
+div.dt-btn-split-wrapper {
+ display: inline-block !important;
+ width: 100%;
+}
+div.dt-btn-split-wrapper button.ui-button {
+ display: inline-block !important;
+ width: calc(100% - 24px);
+}
+div.dt-btn-split-wrapper button.dt-btn-split-drop {
+ display: inline-block !important;
+ width: 24px;
+}
+
+div.dt-button-split-left {
+ padding-bottom: 0px;
+}
+div.dt-button-split-left button.dt-btn-split-drop-button {
+ width: 100%;
+ display: block;
+ margin-bottom: 8px;
+}
+
+span.dtsr-confirmation-message {
+ padding-right: 3px;
+}
+
+div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: left !important;
+ padding-right: 0px;
+ padding-left: 0px;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 57.6% !important;
+ display: inline-block;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: calc(33.3% + 30px) !important;
+ margin-right: 14px;
+ display: inline-block;
+ position: relative;
+}
+div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: calc(-33.3% - 30px) !important;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.min.css
new file mode 100644
index 0000000..b75f0b9
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.jqueryui.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}div.dt-button-collection{z-index:2002}div.dt-button-collection div,div.dt-button-collection ul{background:none}span.dtsr-emptyStates{background:white;padding-top:2px !important}div.dt-btn-split-wrapper{display:inline-block !important;width:100%}div.dt-btn-split-wrapper button.ui-button{display:inline-block !important;width:calc(100% - 24px)}div.dt-btn-split-wrapper button.dt-btn-split-drop{display:inline-block !important;width:24px}div.dt-button-split-left{padding-bottom:0px}div.dt-button-split-left button.dt-btn-split-drop-button{width:100%;display:block;margin-bottom:8px}span.dtsr-confirmation-message{padding-right:3px}div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:left !important;padding-right:0px;padding-left:0px}div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:57.6% !important;display:inline-block}div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:calc(33.3% + 30px) !important;margin-right:14px;display:inline-block;position:relative}div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:calc(-33.3% - 30px) !important}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.css
new file mode 100644
index 0000000..4bbbd18
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.css
@@ -0,0 +1,264 @@
+div.dtsr-confirmation, div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ background-color: white;
+ margin-left: -250px;
+ border-radius: 6px;
+ box-shadow: 0 0 5px #555;
+ border: 2px solid #444;
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row, div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2, div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons, div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button, div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text, div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span, div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, div.dtsr-creation div.dtsr-creation-form div.dtsr-right, div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title, div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title {
+ margin-right: -33.3%;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text, div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot, div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error, div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-form-row {
+ padding: 10px;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-creation-text {
+ padding: 10px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ border: 1px solid #eaeaea;
+ background-color: #f9f9f9;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+span.dtsr-check-label {
+ padding-left: 3px;
+}
+
+span.dtsr-name-label, span.dtsr-confirmation-message {
+ padding-right: 3px;
+}
+
+div.dtsr-confirmation {
+ text-align: center;
+}
+
+span.dtsr-confirmation-message {
+ padding-top: 0.678571em;
+ padding-bottom: 0.678571em;
+ font-size: 1rem;
+}
+
+div.dt-btn-split-wrapper {
+ background-color: white !important;
+}
+div.dt-btn-split-wrapper button.button {
+ width: calc(100% - 36px) !important;
+ margin: 0px !important;
+ display: inline-block !important;
+ border-top-left-radius: 0.28571429rem !important;
+ border-bottom-left-radius: 0.28571429rem !important;
+ border-top-right-radius: 0px !important;
+}
+div.dt-btn-split-wrapper button.dt-btn-split-drop {
+ border-top-right-radius: 0.28571429rem !important;
+ border-bottom-right-radius: 0.28571429rem !important;
+ border-top-left-radius: 0px !important;
+ border-bottom-left-radius: 0px !important;
+ width: 36px !important;
+}
+
+span.dtsr-emptyStates {
+ font-size: 1rem;
+ padding: 5px !important;
+}
+
+div.dt-button-collection div.ui.basic.vertical.buttons {
+ padding: 4px;
+ padding-bottom: 0px;
+ background: white !important;
+}
+div.dt-button-collection div.ui.basic.vertical.buttons h3 {
+ font-size: 1.5rem;
+ line-height: 2rem;
+}
+div.dt-button-collection div.ui.basic.vertical.buttons div.dt-btn-split-wrapper {
+ margin-bottom: 4px;
+}
+div.dt-button-collection div.ui.basic.vertical.buttons div.dt-btn-split-wrapper button.button {
+ margin-bottom: 4px;
+ border: 1px solid rgba(34, 36, 38, 0.15) !important;
+}
+div.dt-button-collection div.ui.basic.vertical.buttons div.dt-btn-split-wrapper button.dt-btn-split-drop {
+ margin-left: -1px;
+}
+div.dt-button-collection div.ui.basic.vertical.buttons button.dt-btn-split-drop-button {
+ border: 1px solid rgba(34, 36, 38, 0.15);
+ border-radius: 0.285714rem;
+ margin-bottom: 4px;
+}
+
+input.dtsr-name-input {
+ border: 1px solid rgba(24, 26, 28, 0.15);
+ border-radius: 4.6px;
+ line-height: 20px;
+ padding-top: 10.8px;
+ padding-bottom: 10.8px;
+ font-size: 16px;
+}
+
+label.dtsr-name-label, label.form-check-label {
+ font-size: 14.9px;
+}
+
+div.dtsr-form-row label.dtsr-name-label, div.dtsr-confirmation-text label.dtsr-name-label {
+ line-height: 1.5;
+ padding-top: 5px;
+}
+
+div.dtsr-confirmation-text, div.dtsr-creation-form {
+ margin-top: 1.5em;
+ width: 100%;
+}
+div.dtsr-confirmation-text label.dtsr-name-label, div.dtsr-creation-form label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: left !important;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-confirmation-text input.dtsr-name-input, div.dtsr-creation-form input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation-text input.dtsr-check-box, div.dtsr-creation-form input.dtsr-check-box {
+ margin-left: 33.3%;
+ margin-right: 14px;
+ display: inline-block;
+ position: relative;
+}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.min.css b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.min.css
new file mode 100644
index 0000000..0280f30
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/css/stateRestore.semanticui.min.css
@@ -0,0 +1 @@
+div.dtsr-confirmation,div.dtsr-creation{position:fixed;top:20%;left:50%;width:500px;background-color:white;margin-left:-250px;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:2003;box-sizing:border-box;padding:1em}div.dtsr-confirmation div.dtsr-confirmation-title-row,div.dtsr-creation div.dtsr-confirmation-title-row{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-title-row h2,div.dtsr-creation div.dtsr-confirmation-title-row h2{border-bottom:0px;margin-top:0px;padding-top:0px}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:center}div.dtsr-confirmation div.dtsr-confirmation-buttons,div.dtsr-creation div.dtsr-confirmation-buttons{text-align:right;margin-top:1em}div.dtsr-confirmation div.dtsr-confirmation-buttons button.dtsr-confirmation-button,div.dtsr-creation div.dtsr-confirmation-buttons button.dtsr-confirmation-button{margin:0px}div.dtsr-confirmation div.dtsr-creation-text,div.dtsr-creation div.dtsr-creation-text{text-align:left;padding:0px;border:none}div.dtsr-confirmation div.dtsr-creation-text span,div.dtsr-creation div.dtsr-creation-text span{font-size:20px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-right{display:inline-block;width:50%}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,div.dtsr-creation div.dtsr-creation-form div.dtsr-left{text-align:right}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,div.dtsr-creation div.dtsr-creation-form div.dtsr-right,div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row{text-align:left}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label{width:33.3%;display:inline-block;text-align:right;padding-right:15px;padding-left:15px}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title,div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label.dtsr-toggle-title{margin-right:-33.3%}div.dtsr-confirmation div.dtsr-confirmation-text,div.dtsr-creation div.dtsr-confirmation-text{text-align:left}div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label{width:auto;display:inline-block;text-align:right;padding-right:15px}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation div.dtsr-confirmation-text input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block}div.dtsr-confirmation div.dtsr-modal-foot,div.dtsr-creation div.dtsr-modal-foot{text-align:right;padding-top:10px}div.dtsr-confirmation span.dtsr-modal-error,div.dtsr-creation span.dtsr-modal-error{color:red;font-size:.9em}div.dtsr-creation{top:10%}div.dtsr-form-row{padding:10px}div.dtsr-check-row{padding-top:0px}div.dtsr-creation-text{padding:10px}div.dtsr-popover-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtsr-background{z-index:2002;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%)}div.dt-button-collection h3{text-align:center;margin-top:4px;margin-bottom:8px;font-size:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection span.dtsr-emptyStates{border-radius:5px;display:inline-block;line-height:1.6em;white-space:nowrap;text-align:center;vertical-align:middle;width:100%;padding-bottom:7px;padding-top:3px}span.dtsr-check-label{padding-left:3px}span.dtsr-name-label,span.dtsr-confirmation-message{padding-right:3px}div.dtsr-confirmation{text-align:center}span.dtsr-confirmation-message{padding-top:.678571em;padding-bottom:.678571em;font-size:1rem}div.dt-btn-split-wrapper{background-color:white !important}div.dt-btn-split-wrapper button.button{width:calc(100% - 36px) !important;margin:0px !important;display:inline-block !important;border-top-left-radius:.28571429rem !important;border-bottom-left-radius:.28571429rem !important;border-top-right-radius:0px !important}div.dt-btn-split-wrapper button.dt-btn-split-drop{border-top-right-radius:.28571429rem !important;border-bottom-right-radius:.28571429rem !important;border-top-left-radius:0px !important;border-bottom-left-radius:0px !important;width:36px !important}span.dtsr-emptyStates{font-size:1rem;padding:5px !important}div.dt-button-collection div.ui.basic.vertical.buttons{padding:4px;padding-bottom:0px;background:white !important}div.dt-button-collection div.ui.basic.vertical.buttons h3{font-size:1.5rem;line-height:2rem}div.dt-button-collection div.ui.basic.vertical.buttons div.dt-btn-split-wrapper{margin-bottom:4px}div.dt-button-collection div.ui.basic.vertical.buttons div.dt-btn-split-wrapper button.button{margin-bottom:4px;border:1px solid rgba(34, 36, 38, 0.15) !important}div.dt-button-collection div.ui.basic.vertical.buttons div.dt-btn-split-wrapper button.dt-btn-split-drop{margin-left:-1px}div.dt-button-collection div.ui.basic.vertical.buttons button.dt-btn-split-drop-button{border:1px solid rgba(34, 36, 38, 0.15);border-radius:.285714rem;margin-bottom:4px}input.dtsr-name-input{border:1px solid rgba(24, 26, 28, 0.15);border-radius:4.6px;line-height:20px;padding-top:10.8px;padding-bottom:10.8px;font-size:16px}label.dtsr-name-label,label.form-check-label{font-size:14.9px}div.dtsr-form-row label.dtsr-name-label,div.dtsr-confirmation-text label.dtsr-name-label{line-height:1.5;padding-top:5px}div.dtsr-confirmation-text,div.dtsr-creation-form{margin-top:1.5em;width:100%}div.dtsr-confirmation-text label.dtsr-name-label,div.dtsr-creation-form label.dtsr-name-label{width:33.3%;display:inline-block;text-align:left !important;padding-right:15px;padding-left:15px}div.dtsr-confirmation-text input.dtsr-name-input,div.dtsr-creation-form input.dtsr-name-input{width:66.6%;display:inline-block}div.dtsr-confirmation-text input.dtsr-check-box,div.dtsr-creation-form input.dtsr-check-box{margin-left:33.3%;margin-right:14px;display:inline-block;position:relative}
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.js
new file mode 100644
index 0000000..470a782
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.js
@@ -0,0 +1,2365 @@
+/*! StateRestore 1.2.2
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+(function () {
+ 'use strict';
+
+ var $$2;
+ var dataTable$1;
+ function setJQuery$1(jq) {
+ $$2 = jq;
+ dataTable$1 = jq.fn.dataTable;
+ }
+ var StateRestore = /** @class */ (function () {
+ function StateRestore(settings, opts, identifier, state, isPreDefined, successCallback) {
+ if (state === void 0) { state = undefined; }
+ if (isPreDefined === void 0) { isPreDefined = false; }
+ if (successCallback === void 0) { successCallback = function () { return null; }; }
+ // Check that the required version of DataTables is included
+ if (!dataTable$1 || !dataTable$1.versionCheck || !dataTable$1.versionCheck('1.10.0')) {
+ throw new Error('StateRestore requires DataTables 1.10 or newer');
+ }
+ // Check that Select is included
+ // eslint-disable-next-line no-extra-parens
+ if (!dataTable$1.Buttons) {
+ throw new Error('StateRestore requires Buttons');
+ }
+ var table = new dataTable$1.Api(settings);
+ this.classes = $$2.extend(true, {}, StateRestore.classes);
+ // Get options from user
+ this.c = $$2.extend(true, {}, StateRestore.defaults, opts);
+ this.s = {
+ dt: table,
+ identifier: identifier,
+ isPreDefined: isPreDefined,
+ savedState: null,
+ tableId: state && state.stateRestore ? state.stateRestore.tableId : undefined
+ };
+ this.dom = {
+ background: $$2('<div class="' + this.classes.background + '"/>'),
+ closeButton: $$2('<div class="' + this.classes.closeButton + '">x</div>'),
+ confirmation: $$2('<div class="' + this.classes.confirmation + '"/>'),
+ confirmationButton: $$2('<button class="' + this.classes.confirmationButton + ' ' + this.classes.dtButton + '">'),
+ confirmationTitleRow: $$2('<div class="' + this.classes.confirmationTitleRow + '"></div>'),
+ dtContainer: $$2(this.s.dt.table().container()),
+ duplicateError: $$2('<span class="' + this.classes.modalError + '">' +
+ this.s.dt.i18n('stateRestore.duplicateError', this.c.i18n.duplicateError) +
+ '</span>'),
+ emptyError: $$2('<span class="' + this.classes.modalError + '">' +
+ this.s.dt.i18n('stateRestore.emptyError', this.c.i18n.emptyError) +
+ '</span>'),
+ removeContents: $$2('<div class="' + this.classes.confirmationText + '"><span>' +
+ this.s.dt
+ .i18n('stateRestore.removeConfirm', this.c.i18n.removeConfirm)
+ .replace(/%s/g, this.s.identifier) +
+ '</span></div>'),
+ removeError: $$2('<span class="' + this.classes.modalError + '">' +
+ this.s.dt.i18n('stateRestore.removeError', this.c.i18n.removeError) +
+ '</span>'),
+ removeTitle: $$2('<h2 class="' + this.classes.confirmationTitle + '">' +
+ this.s.dt.i18n('stateRestore.removeTitle', this.c.i18n.removeTitle) +
+ '</h2>'),
+ renameContents: $$2('<div class="' + this.classes.confirmationText + ' ' + this.classes.renameModal + '">' +
+ '<label class="' + this.classes.confirmationMessage + '">' +
+ this.s.dt
+ .i18n('stateRestore.renameLabel', this.c.i18n.renameLabel)
+ .replace(/%s/g, this.s.identifier) +
+ '</label>' +
+ '</div>'),
+ renameInput: $$2('<input class="' + this.classes.input + '" type="text"></input>'),
+ renameTitle: $$2('<h2 class="' + this.classes.confirmationTitle + '">' +
+ this.s.dt.i18n('stateRestore.renameTitle', this.c.i18n.renameTitle) +
+ '</h2>')
+ };
+ // When a StateRestore instance is created the current state of the table should also be saved.
+ this.save(state, successCallback);
+ }
+ /**
+ * Removes a state from storage and then triggers the dtsr-remove event
+ * so that the StateRestoreCollection class can remove it's references as well.
+ *
+ * @param skipModal Flag to indicate if the modal should be skipped or not
+ */
+ StateRestore.prototype.remove = function (skipModal) {
+ var _a;
+ var _this = this;
+ if (skipModal === void 0) { skipModal = false; }
+ // Check if removal of states is allowed
+ if (!this.c.remove) {
+ return false;
+ }
+ var removeFunction;
+ var ajaxData = {
+ action: 'remove',
+ stateRestore: (_a = {},
+ _a[this.s.identifier] = this.s.savedState,
+ _a)
+ };
+ var successCallback = function () {
+ _this.dom.confirmation.trigger('dtsr-remove');
+ $$2(_this.s.dt.table().node()).trigger('stateRestore-change');
+ _this.dom.background.click();
+ _this.dom.confirmation.remove();
+ $$2(document).unbind('keyup', function (e) { return _this._keyupFunction(e); });
+ _this.dom.confirmationButton.off('click');
+ };
+ // If the remove is not happening over ajax remove it from local storage and then trigger the event
+ if (!this.c.ajax) {
+ removeFunction = function () {
+ try {
+ localStorage.removeItem('DataTables_stateRestore_' + _this.s.identifier + '_' + location.pathname +
+ (_this.s.tableId ? '_' + _this.s.tableId : ''));
+ successCallback();
+ }
+ catch (e) {
+ _this.dom.confirmation.children('.' + _this.classes.modalError).remove();
+ _this.dom.confirmation.append(_this.dom.removeError);
+ return 'remove';
+ }
+ return true;
+ };
+ }
+ // Ajax property has to be a string, not just true
+ // Also only want to save if the table has been initialised and the states have been loaded in
+ else if (typeof this.c.ajax === 'string' && this.s.dt.settings()[0]._bInitComplete) {
+ removeFunction = function () {
+ $$2.ajax({
+ data: ajaxData,
+ success: successCallback,
+ type: 'POST',
+ url: _this.c.ajax
+ });
+ return true;
+ };
+ }
+ else if (typeof this.c.ajax === 'function') {
+ removeFunction = function () {
+ if (typeof _this.c.ajax === 'function') {
+ _this.c.ajax.call(_this.s.dt, ajaxData, successCallback);
+ }
+ return true;
+ };
+ }
+ // If the modal is to be skipped then remove straight away
+ if (skipModal) {
+ this.dom.confirmation.appendTo(this.dom.dtContainer);
+ $$2(this.s.dt.table().node()).trigger('dtsr-modal-inserted');
+ removeFunction();
+ this.dom.confirmation.remove();
+ }
+ // Otherwise display the modal
+ else {
+ this._newModal(this.dom.removeTitle, this.s.dt.i18n('stateRestore.removeSubmit', this.c.i18n.removeSubmit), removeFunction, this.dom.removeContents);
+ }
+ return true;
+ };
+ /**
+ * Compares the state held within this instance with a state that is passed in
+ *
+ * @param state The state that is to be compared against
+ * @returns boolean indicating if the states match
+ */
+ StateRestore.prototype.compare = function (state) {
+ // Order
+ if (!this.c.saveState.order) {
+ state.order = undefined;
+ }
+ // Search
+ if (!this.c.saveState.search) {
+ state.search = undefined;
+ }
+ // Columns
+ if (this.c.saveState.columns && state.columns) {
+ for (var i = 0, ien = state.columns.length; i < ien; i++) {
+ // Visibility
+ if (typeof this.c.saveState.columns !== 'boolean' && !this.c.saveState.columns.visible) {
+ state.columns[i].visible = undefined;
+ }
+ // Search
+ if (typeof this.c.saveState.columns !== 'boolean' && !this.c.saveState.columns.search) {
+ state.columns[i].search = undefined;
+ }
+ }
+ }
+ else if (!this.c.saveState.columns) {
+ state.columns = undefined;
+ }
+ // Paging
+ if (!this.c.saveState.paging) {
+ state.page = undefined;
+ }
+ // SearchBuilder
+ if (!this.c.saveState.searchBuilder) {
+ state.searchBuilder = undefined;
+ }
+ // SearchPanes
+ if (!this.c.saveState.searchPanes) {
+ state.searchPanes = undefined;
+ }
+ // Select
+ if (!this.c.saveState.select) {
+ state.select = undefined;
+ }
+ // ColReorder
+ if (!this.c.saveState.colReorder) {
+ state.ColReorder = undefined;
+ }
+ // Scroller
+ if (!this.c.saveState.scroller) {
+ state.scroller = undefined;
+ if (dataTable$1.Scroller !== undefined) {
+ state.start = 0;
+ }
+ }
+ // Paging
+ if (!this.c.saveState.paging) {
+ state.start = 0;
+ }
+ // Page Length
+ if (!this.c.saveState.length) {
+ state.length = undefined;
+ }
+ // Need to delete properties that we do not want to compare
+ delete state.time;
+ var copyState = this.s.savedState;
+ delete copyState.time;
+ delete copyState.c;
+ delete copyState.stateRestore;
+ // Perform a deep compare of the two state objects
+ return this._deepCompare(state, copyState);
+ };
+ /**
+ * Removes all of the dom elements from the document
+ */
+ StateRestore.prototype.destroy = function () {
+ Object.values(this.dom).forEach(function (node) { return node.off().remove(); });
+ };
+ /**
+ * Loads the state referenced by the identifier from storage
+ *
+ * @param state The identifier of the state that should be loaded
+ * @returns the state that has been loaded
+ */
+ StateRestore.prototype.load = function () {
+ var _this = this;
+ var loadedState = this.s.savedState;
+ var settings = this.s.dt.settings()[0];
+ // Always want the states stored here to be loaded in - regardless of when they were created
+ loadedState.time = +new Date();
+ settings.oLoadedState = $$2.extend(true, {}, loadedState);
+ // Click on a background if there is one to shut the collection
+ $$2('div.dt-button-background').click();
+ // Call the internal datatables function to implement the state on the table
+ $$2.fn.dataTable.ext.oApi._fnImplementState(settings, loadedState, function () {
+ var correctPaging = function (e, preSettings) {
+ setTimeout(function () {
+ var currpage = preSettings._iDisplayStart / preSettings._iDisplayLength;
+ var intendedPage = loadedState.start / loadedState.length;
+ // If the paging is incorrect then we have to set it again so that it is correct
+ // This happens when a searchpanes filter is removed
+ // This has to happen in a timeout because searchpanes only deselects after a timeout
+ if (currpage >= 0 && intendedPage >= 0 && currpage !== intendedPage) {
+ _this.s.dt.page(intendedPage).draw(false);
+ }
+ }, 50);
+ };
+ _this.s.dt.one('preDraw', correctPaging);
+ _this.s.dt.draw(false);
+ });
+ return loadedState;
+ };
+ /**
+ * Shows a modal that allows a state to be renamed
+ *
+ * @param newIdentifier Optional. The new identifier for this state
+ */
+ StateRestore.prototype.rename = function (newIdentifier, currentIdentifiers) {
+ var _this = this;
+ if (newIdentifier === void 0) { newIdentifier = null; }
+ // Check if renaming of states is allowed
+ if (!this.c.rename) {
+ return;
+ }
+ var renameFunction = function () {
+ var _a;
+ if (newIdentifier === null) {
+ var tempIdentifier = $$2('input.' + _this.classes.input.replace(/ /g, '.')).val();
+ if (tempIdentifier.length === 0) {
+ _this.dom.confirmation.children('.' + _this.classes.modalError).remove();
+ _this.dom.confirmation.append(_this.dom.emptyError);
+ return 'empty';
+ }
+ else if (currentIdentifiers.includes(tempIdentifier)) {
+ _this.dom.confirmation.children('.' + _this.classes.modalError).remove();
+ _this.dom.confirmation.append(_this.dom.duplicateError);
+ return 'duplicate';
+ }
+ else {
+ newIdentifier = tempIdentifier;
+ }
+ }
+ var ajaxData = {
+ action: 'rename',
+ stateRestore: (_a = {},
+ _a[_this.s.identifier] = newIdentifier,
+ _a)
+ };
+ var successCallback = function () {
+ _this.s.identifier = newIdentifier;
+ _this.save(_this.s.savedState, function () { return null; }, false);
+ _this.dom.removeContents = $$2('<div class="' + _this.classes.confirmationText + '"><span>' +
+ _this.s.dt
+ .i18n('stateRestore.removeConfirm', _this.c.i18n.removeConfirm)
+ .replace(/%s/g, _this.s.identifier) +
+ '</span></div>');
+ _this.dom.confirmation.trigger('dtsr-rename');
+ _this.dom.background.click();
+ _this.dom.confirmation.remove();
+ $$2(document).unbind('keyup', function (e) { return _this._keyupFunction(e); });
+ _this.dom.confirmationButton.off('click');
+ };
+ if (!_this.c.ajax) {
+ try {
+ localStorage.removeItem('DataTables_stateRestore_' + _this.s.identifier + '_' + location.pathname +
+ (_this.s.tableId ? '_' + _this.s.tableId : ''));
+ successCallback();
+ }
+ catch (e) {
+ _this.dom.confirmation.children('.' + _this.classes.modalError).remove();
+ _this.dom.confirmation.append(_this.dom.removeError);
+ return false;
+ }
+ }
+ else if (typeof _this.c.ajax === 'string' && _this.s.dt.settings()[0]._bInitComplete) {
+ $$2.ajax({
+ data: ajaxData,
+ success: successCallback,
+ type: 'POST',
+ url: _this.c.ajax
+ });
+ }
+ else if (typeof _this.c.ajax === 'function') {
+ _this.c.ajax.call(_this.s.dt, ajaxData, successCallback);
+ }
+ return true;
+ };
+ // Check if a new identifier has been provided, if so no need for a modal
+ if (newIdentifier !== null) {
+ if (currentIdentifiers.includes(newIdentifier)) {
+ throw new Error(this.s.dt.i18n('stateRestore.duplicateError', this.c.i18n.duplicateError));
+ }
+ else if (newIdentifier.length === 0) {
+ throw new Error(this.s.dt.i18n('stateRestore.emptyError', this.c.i18n.emptyError));
+ }
+ else {
+ this.dom.confirmation.appendTo(this.dom.dtContainer);
+ $$2(this.s.dt.table().node()).trigger('dtsr-modal-inserted');
+ renameFunction();
+ this.dom.confirmation.remove();
+ }
+ }
+ else {
+ this.dom.renameInput.val(this.s.identifier);
+ this.dom.renameContents.append(this.dom.renameInput);
+ this._newModal(this.dom.renameTitle, this.s.dt.i18n('stateRestore.renameButton', this.c.i18n.renameButton), renameFunction, this.dom.renameContents);
+ }
+ };
+ /**
+ * Saves the tables current state using the identifier that is passed in.
+ *
+ * @param state Optional. If provided this is the state that will be saved rather than using the current state
+ */
+ StateRestore.prototype.save = function (state, passedSuccessCallback, callAjax) {
+ var _a;
+ var _this = this;
+ if (callAjax === void 0) { callAjax = true; }
+ // Check if saving states is allowed
+ if (!this.c.save) {
+ if (passedSuccessCallback) {
+ passedSuccessCallback.call(this);
+ }
+ return;
+ }
+ // this.s.dt.state.save();
+ var savedState;
+ // If no state has been provided then create a new one from the current state
+ this.s.dt.state.save();
+ if (state === undefined) {
+ savedState = this.s.dt.state();
+ }
+ else if (typeof state !== 'object') {
+ return;
+ }
+ else {
+ savedState = state;
+ }
+ if (savedState.stateRestore) {
+ savedState.stateRestore.isPreDefined = this.s.isPreDefined;
+ savedState.stateRestore.state = this.s.identifier;
+ savedState.stateRestore.tableId = this.s.tableId;
+ }
+ else {
+ savedState.stateRestore = {
+ isPreDefined: this.s.isPreDefined,
+ state: this.s.identifier,
+ tableId: this.s.tableId
+ };
+ }
+ this.s.savedState = savedState;
+ // Order
+ if (!this.c.saveState.order) {
+ this.s.savedState.order = undefined;
+ }
+ // Search
+ if (!this.c.saveState.search) {
+ this.s.savedState.search = undefined;
+ }
+ // Columns
+ if (this.c.saveState.columns && this.s.savedState.columns) {
+ for (var i = 0, ien = this.s.savedState.columns.length; i < ien; i++) {
+ // Visibility
+ if (typeof this.c.saveState.columns !== 'boolean' && !this.c.saveState.columns.visible) {
+ this.s.savedState.columns[i].visible = undefined;
+ }
+ // Search
+ if (typeof this.c.saveState.columns !== 'boolean' && !this.c.saveState.columns.search) {
+ this.s.savedState.columns[i].search = undefined;
+ }
+ }
+ }
+ else if (!this.c.saveState.columns) {
+ this.s.savedState.columns = undefined;
+ }
+ // SearchBuilder
+ if (!this.c.saveState.searchBuilder) {
+ this.s.savedState.searchBuilder = undefined;
+ }
+ // SearchPanes
+ if (!this.c.saveState.searchPanes) {
+ this.s.savedState.searchPanes = undefined;
+ }
+ // Select
+ if (!this.c.saveState.select) {
+ this.s.savedState.select = undefined;
+ }
+ // ColReorder
+ if (!this.c.saveState.colReorder) {
+ this.s.savedState.ColReorder = undefined;
+ }
+ // Scroller
+ if (!this.c.saveState.scroller) {
+ this.s.savedState.scroller = undefined;
+ if (dataTable$1.Scroller !== undefined) {
+ this.s.savedState.start = 0;
+ }
+ }
+ // Paging
+ if (!this.c.saveState.paging) {
+ this.s.savedState.start = 0;
+ }
+ // Page Length
+ if (!this.c.saveState.length) {
+ this.s.savedState.length = undefined;
+ }
+ this.s.savedState.c = this.c;
+ // Need to remove the parent reference before we save the state
+ // Its not needed to rebuild, but it does cause a circular reference when converting to JSON
+ if (this.s.savedState.c.splitSecondaries.length) {
+ for (var _i = 0, _b = this.s.savedState.c.splitSecondaries; _i < _b.length; _i++) {
+ var secondary = _b[_i];
+ if (secondary.parent) {
+ secondary.parent = undefined;
+ }
+ }
+ }
+ // If the state is predefined there is no need to save it over ajax or to local storage
+ if (this.s.isPreDefined) {
+ if (passedSuccessCallback) {
+ passedSuccessCallback.call(this);
+ }
+ return;
+ }
+ var ajaxData = {
+ action: 'save',
+ stateRestore: (_a = {},
+ _a[this.s.identifier] = this.s.savedState,
+ _a)
+ };
+ var successCallback = function () {
+ if (passedSuccessCallback) {
+ passedSuccessCallback.call(_this);
+ }
+ _this.dom.confirmation.trigger('dtsr-save');
+ $$2(_this.s.dt.table().node()).trigger('stateRestore-change');
+ };
+ if (!this.c.ajax) {
+ localStorage.setItem('DataTables_stateRestore_' + this.s.identifier + '_' + location.pathname +
+ (this.s.tableId ? '_' + this.s.tableId : ''), JSON.stringify(this.s.savedState));
+ successCallback();
+ }
+ else if (typeof this.c.ajax === 'string' && callAjax) {
+ if (this.s.dt.settings()[0]._bInitComplete) {
+ $$2.ajax({
+ data: ajaxData,
+ success: successCallback,
+ type: 'POST',
+ url: this.c.ajax
+ });
+ }
+ else {
+ this.s.dt.one('init', function () {
+ $$2.ajax({
+ data: ajaxData,
+ success: successCallback,
+ type: 'POST',
+ url: _this.c.ajax
+ });
+ });
+ }
+ }
+ else if (typeof this.c.ajax === 'function' && callAjax) {
+ this.c.ajax.call(this.s.dt, ajaxData, successCallback);
+ }
+ };
+ /**
+ * Performs a deep compare of two state objects, returning true if they match
+ *
+ * @param state1 The first object to compare
+ * @param state2 The second object to compare
+ * @returns boolean indicating if the objects match
+ */
+ StateRestore.prototype._deepCompare = function (state1, state2) {
+ // Put keys and states into arrays as this makes the later code easier to work
+ var states = [state1, state2];
+ var keys = [Object.keys(state1).sort(), Object.keys(state2).sort()];
+ // If scroller is included then we need to remove the start value
+ // as it can be different but yield the same results
+ if (keys[0].includes('scroller')) {
+ var startIdx = keys[0].indexOf('start');
+ if (startIdx) {
+ keys[0].splice(startIdx, 1);
+ }
+ }
+ if (keys[1].includes('scroller')) {
+ var startIdx = keys[1].indexOf('start');
+ if (startIdx) {
+ keys[1].splice(startIdx, 1);
+ }
+ }
+ // We want to remove any private properties within the states
+ for (var i = 0; i < keys[0].length; i++) {
+ if (keys[0][i].indexOf('_') === 0) {
+ keys[0].splice(i, 1);
+ i--;
+ continue;
+ }
+ // If scroller is included then we need to remove the following values
+ // as they can be different but yield the same results
+ if (keys[0][i] === 'baseRowTop' ||
+ keys[0][i] === 'baseScrollTop' ||
+ keys[0][i] === 'scrollTop' ||
+ (!this.c.saveState.paging && keys[0][i] === 'page')) {
+ keys[0].splice(i, 1);
+ i--;
+ continue;
+ }
+ }
+ for (var i = 0; i < keys[1].length; i++) {
+ if (keys[1][i].indexOf('_') === 0) {
+ keys[1].splice(i, 1);
+ i--;
+ continue;
+ }
+ if (keys[1][i] === 'baseRowTop' ||
+ keys[1][i] === 'baseScrollTop' ||
+ keys[1][i] === 'scrollTop' ||
+ (!this.c.saveState.paging && keys[0][i] === 'page')) {
+ keys[1].splice(i, 1);
+ i--;
+ continue;
+ }
+ }
+ if (keys[0].length === 0 && keys[1].length > 0 ||
+ keys[1].length === 0 && keys[0].length > 0) {
+ return false;
+ }
+ // We are only going to compare the keys that are common between both states
+ for (var i = 0; i < keys[0].length; i++) {
+ if (!keys[1].includes(keys[0][i])) {
+ keys[0].splice(i, 1);
+ i--;
+ }
+ }
+ for (var i = 0; i < keys[1].length; i++) {
+ if (!keys[0].includes(keys[1][i])) {
+ keys[1].splice(i, 1);
+ i--;
+ }
+ }
+ // Then each key and value has to be checked against each other
+ for (var i = 0; i < keys[0].length; i++) {
+ // If the keys dont equal, or their corresponding types are different we can return false
+ if (keys[0][i] !== keys[1][i] || typeof states[0][keys[0][i]] !== typeof states[1][keys[1][i]]) {
+ return false;
+ }
+ // If the type is an object then further deep comparisons are required
+ if (typeof states[0][keys[0][i]] === 'object') {
+ if (!this._deepCompare(states[0][keys[0][i]], states[1][keys[1][i]])) {
+ return false;
+ }
+ }
+ else if (typeof states[0][keys[0][i]] === 'number' && typeof states[1][keys[1][i]] === 'number') {
+ if (Math.round(states[0][keys[0][i]]) !== Math.round(states[1][keys[1][i]])) {
+ return false;
+ }
+ }
+ // Otherwise we can just check the value
+ else if (states[0][keys[0][i]] !== states[1][keys[1][i]]) {
+ return false;
+ }
+ }
+ // If we get all the way to here there are no differences so return true for this object
+ return true;
+ };
+ StateRestore.prototype._keyupFunction = function (e) {
+ // If enter same action as pressing the button
+ if (e.key === 'Enter') {
+ this.dom.confirmationButton.click();
+ }
+ // If escape close modal
+ else if (e.key === 'Escape') {
+ $$2('div.' + this.classes.background.replace(/ /g, '.')).click();
+ }
+ };
+ /**
+ * Creates a new confirmation modal for the user to approve an action
+ *
+ * @param title The title that is to be displayed at the top of the modal
+ * @param buttonText The text that is to be displayed in the confirmation button of the modal
+ * @param buttonAction The action that should be taken when the confirmation button is pressed
+ * @param modalContents The contents for the main body of the modal
+ */
+ StateRestore.prototype._newModal = function (title, buttonText, buttonAction, modalContents) {
+ var _this = this;
+ this.dom.background.appendTo(this.dom.dtContainer);
+ this.dom.confirmationTitleRow.empty().append(title);
+ this.dom.confirmationButton.html(buttonText);
+ this.dom.confirmation
+ .empty()
+ .append(this.dom.confirmationTitleRow)
+ .append(modalContents)
+ .append($$2('<div class="' + this.classes.confirmationButtons + '"></div>')
+ .append(this.dom.confirmationButton))
+ .appendTo(this.dom.dtContainer);
+ $$2(this.s.dt.table().node()).trigger('dtsr-modal-inserted');
+ var inputs = modalContents.children('input');
+ // If there is an input focus on that
+ if (inputs.length > 0) {
+ $$2(inputs[0]).focus();
+ }
+ // Otherwise focus on the confirmation button
+ else {
+ this.dom.confirmationButton.focus();
+ }
+ var background = $$2('div.' + this.classes.background.replace(/ /g, '.'));
+ if (this.c.modalCloseButton) {
+ this.dom.confirmation.append(this.dom.closeButton);
+ this.dom.closeButton.on('click', function () { return background.click(); });
+ }
+ // When the button is clicked, call the appropriate action,
+ // remove the background and modal from the screen and unbind the keyup event.
+ this.dom.confirmationButton.on('click', function () { return buttonAction(); });
+ this.dom.confirmation.on('click', function (e) {
+ e.stopPropagation();
+ });
+ // When the button is clicked, remove the background and modal from the screen and unbind the keyup event.
+ background.one('click', function () {
+ _this.dom.background.remove();
+ _this.dom.confirmation.remove();
+ $$2(document).unbind('keyup', function (e) { return _this._keyupFunction(e); });
+ });
+ $$2(document).on('keyup', function (e) { return _this._keyupFunction(e); });
+ };
+ /**
+ * Convert from camelCase notation to the internal Hungarian.
+ * We could use the Hungarian convert function here, but this is cleaner
+ *
+ * @param {object} obj Object to convert
+ * @returns {object} Inverted object
+ * @memberof DataTable#oApi
+ */
+ StateRestore.prototype._searchToHung = function (obj) {
+ return {
+ bCaseInsensitive: obj.caseInsensitive,
+ bRegex: obj.regex,
+ bSmart: obj.smart,
+ sSearch: obj.search
+ };
+ };
+ StateRestore.version = '1.2.2';
+ StateRestore.classes = {
+ background: 'dtsr-background',
+ closeButton: 'dtsr-popover-close',
+ confirmation: 'dtsr-confirmation',
+ confirmationButton: 'dtsr-confirmation-button',
+ confirmationButtons: 'dtsr-confirmation-buttons',
+ confirmationMessage: 'dtsr-confirmation-message dtsr-name-label',
+ confirmationText: 'dtsr-confirmation-text',
+ confirmationTitle: 'dtsr-confirmation-title',
+ confirmationTitleRow: 'dtsr-confirmation-title-row',
+ dtButton: 'dt-button',
+ input: 'dtsr-input',
+ modalError: 'dtsr-modal-error',
+ renameModal: 'dtsr-rename-modal'
+ };
+ StateRestore.defaults = {
+ _createInSaved: false,
+ ajax: false,
+ create: true,
+ creationModal: false,
+ i18n: {
+ creationModal: {
+ button: 'Create',
+ colReorder: 'Column Order:',
+ columns: {
+ search: 'Column Search:',
+ visible: 'Column Visibility:'
+ },
+ length: 'Page Length:',
+ name: 'Name:',
+ order: 'Sorting:',
+ paging: 'Paging:',
+ scroller: 'Scroll Position:',
+ search: 'Search:',
+ searchBuilder: 'SearchBuilder:',
+ searchPanes: 'SearchPanes:',
+ select: 'Select:',
+ title: 'Create New State',
+ toggleLabel: 'Includes:'
+ },
+ duplicateError: 'A state with this name already exists.',
+ emptyError: 'Name cannot be empty.',
+ emptyStates: 'No saved states',
+ removeConfirm: 'Are you sure you want to remove %s?',
+ removeError: 'Failed to remove state.',
+ removeJoiner: ' and ',
+ removeSubmit: 'Remove',
+ removeTitle: 'Remove State',
+ renameButton: 'Rename',
+ renameLabel: 'New Name for %s:',
+ renameTitle: 'Rename State'
+ },
+ modalCloseButton: true,
+ remove: true,
+ rename: true,
+ save: true,
+ saveState: {
+ colReorder: true,
+ columns: {
+ search: true,
+ visible: true
+ },
+ length: true,
+ order: true,
+ paging: true,
+ scroller: true,
+ search: true,
+ searchBuilder: true,
+ searchPanes: true,
+ select: true
+ },
+ splitSecondaries: [
+ 'updateState',
+ 'renameState',
+ 'removeState'
+ ],
+ toggle: {
+ colReorder: false,
+ columns: {
+ search: false,
+ visible: false
+ },
+ length: false,
+ order: false,
+ paging: false,
+ scroller: false,
+ search: false,
+ searchBuilder: false,
+ searchPanes: false,
+ select: false
+ }
+ };
+ return StateRestore;
+ }());
+
+ var $$1;
+ var dataTable;
+ function setJQuery(jq) {
+ $$1 = jq;
+ dataTable = jq.fn.dataTable;
+ }
+ var StateRestoreCollection = /** @class */ (function () {
+ function StateRestoreCollection(settings, opts) {
+ var _this = this;
+ // Check that the required version of DataTables is included
+ if (!dataTable || !dataTable.versionCheck || !dataTable.versionCheck('1.10.0')) {
+ throw new Error('StateRestore requires DataTables 1.10 or newer');
+ }
+ // Check that Select is included
+ // eslint-disable-next-line no-extra-parens
+ if (!dataTable.Buttons) {
+ throw new Error('StateRestore requires Buttons');
+ }
+ var table = new dataTable.Api(settings);
+ this.classes = $$1.extend(true, {}, StateRestoreCollection.classes);
+ if (table.settings()[0]._stateRestore !== undefined) {
+ return;
+ }
+ // Get options from user
+ this.c = $$1.extend(true, {}, StateRestoreCollection.defaults, opts);
+ this.s = {
+ dt: table,
+ hasColReorder: dataTable.ColReorder !== undefined,
+ hasScroller: dataTable.Scroller !== undefined,
+ hasSearchBuilder: dataTable.SearchBuilder !== undefined,
+ hasSearchPanes: dataTable.SearchPanes !== undefined,
+ hasSelect: dataTable.select !== undefined,
+ states: []
+ };
+ this.s.dt.on('xhr', function (e, xhrsettings, json) {
+ // Has staterestore been used before? Is there anything to load?
+ if (json && json.stateRestore) {
+ _this._addPreDefined(json.stateRestore);
+ }
+ });
+ this.dom = {
+ background: $$1('<div class="' + this.classes.background + '"/>'),
+ closeButton: $$1('<div class="' + this.classes.closeButton + '">x</div>'),
+ colReorderToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.colReorderToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.colReorder', this.c.i18n.creationModal.colReorder) +
+ '</label>' +
+ '</div>'),
+ columnsSearchToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.columnsSearchToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.columns.search', this.c.i18n.creationModal.columns.search) +
+ '</label>' +
+ '</div>'),
+ columnsVisibleToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + ' ' + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.columnsVisibleToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.columns.visible', this.c.i18n.creationModal.columns.visible) +
+ '</label>' +
+ '</div>'),
+ confirmation: $$1('<div class="' + this.classes.confirmation + '"/>'),
+ confirmationTitleRow: $$1('<div class="' + this.classes.confirmationTitleRow + '"></div>'),
+ createButtonRow: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.modalFoot + '">' +
+ '<button class="' + this.classes.creationButton + ' ' + this.classes.dtButton + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.button', this.c.i18n.creationModal.button) +
+ '</button>' +
+ '</div>'),
+ creation: $$1('<div class="' + this.classes.creation + '"/>'),
+ creationForm: $$1('<div class="' + this.classes.creationForm + '"/>'),
+ creationTitle: $$1('<div class="' + this.classes.creationText + '">' +
+ '<h2 class="' + this.classes.creationTitle + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.title', this.c.i18n.creationModal.title) +
+ '</h2>' +
+ '</div>'),
+ dtContainer: $$1(this.s.dt.table().container()),
+ duplicateError: $$1('<span class="' + this.classes.modalError + '">' +
+ this.s.dt.i18n('stateRestore.duplicateError', this.c.i18n.duplicateError) +
+ '</span>'),
+ emptyError: $$1('<span class="' + this.classes.modalError + '">' +
+ this.s.dt.i18n('stateRestore.emptyError', this.c.i18n.emptyError) +
+ '</span>'),
+ lengthToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.lengthToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.length', this.c.i18n.creationModal.length) +
+ '</label>' +
+ '</div>'),
+ nameInputRow: $$1('<div class="' + this.classes.formRow + '">' +
+ '<label class="' + this.classes.nameLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.name', this.c.i18n.creationModal.name) +
+ '</label>' +
+ '<input class="' + this.classes.nameInput + '" type="text">' +
+ '</div>'),
+ orderToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.orderToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.order', this.c.i18n.creationModal.order) +
+ '</label>' +
+ '</div>'),
+ pagingToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.pagingToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.paging', this.c.i18n.creationModal.paging) +
+ '</label>' +
+ '</div>'),
+ removeContents: $$1('<div class="' + this.classes.confirmationText + '"><span></span></div>'),
+ removeTitle: $$1('<div class="' + this.classes.creationText + '">' +
+ '<h2 class="' + this.classes.creationTitle + '">' +
+ this.s.dt.i18n('stateRestore.removeTitle', this.c.i18n.removeTitle) +
+ '</h2>' +
+ '</div>'),
+ scrollerToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.scrollerToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.scroller', this.c.i18n.creationModal.scroller) +
+ '</label>' +
+ '</div>'),
+ searchBuilderToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.searchBuilderToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.searchBuilder', this.c.i18n.creationModal.searchBuilder) +
+ '</label>' +
+ '</div>'),
+ searchPanesToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.searchPanesToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.searchPanes', this.c.i18n.creationModal.searchPanes) +
+ '</label>' +
+ '</div>'),
+ searchToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.searchToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.search', this.c.i18n.creationModal.search) +
+ '</label>' +
+ '</div>'),
+ selectToggle: $$1('<div class="' + this.classes.formRow + ' ' + this.classes.checkRow + '">' +
+ '<input type="checkbox" class="' +
+ this.classes.selectToggle + ' ' +
+ this.classes.checkBox +
+ '" checked>' +
+ '<label class="' + this.classes.checkLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.select', this.c.i18n.creationModal.select) +
+ '</label>' +
+ '</div>'),
+ toggleLabel: $$1('<label class="' + this.classes.nameLabel + ' ' + this.classes.toggleLabel + '">' +
+ this.s.dt.i18n('stateRestore.creationModal.toggleLabel', this.c.i18n.creationModal.toggleLabel) +
+ '</label>')
+ };
+ table.settings()[0]._stateRestore = this;
+ this._searchForStates();
+ // Has staterestore been used before? Is there anything to load?
+ this._addPreDefined(this.c.preDefined);
+ var ajaxFunction;
+ var ajaxData = {
+ action: 'load'
+ };
+ if (typeof this.c.ajax === 'function') {
+ ajaxFunction = function () {
+ if (typeof _this.c.ajax === 'function') {
+ _this.c.ajax.call(_this.s.dt, ajaxData, function (s) { return _this._addPreDefined(s); });
+ }
+ };
+ }
+ else if (typeof this.c.ajax === 'string') {
+ ajaxFunction = function () {
+ $$1.ajax({
+ data: ajaxData,
+ success: function (data) {
+ _this._addPreDefined(data);
+ },
+ type: 'POST',
+ url: _this.c.ajax
+ });
+ };
+ }
+ if (typeof ajaxFunction === 'function') {
+ if (this.s.dt.settings()[0]._bInitComplete) {
+ ajaxFunction();
+ }
+ else {
+ this.s.dt.one('preInit.dtsr', function () {
+ ajaxFunction();
+ });
+ }
+ }
+ this.s.dt.on('destroy.dtsr', function () {
+ _this.destroy();
+ });
+ this.s.dt.on('draw.dtsr buttons-action.dtsr', function () { return _this.findActive(); });
+ return this;
+ }
+ /**
+ * Adds a new StateRestore instance to the collection based on the current properties of the table
+ *
+ * @param identifier The value that is used to identify a state.
+ * @returns The state that has been created
+ */
+ StateRestoreCollection.prototype.addState = function (identifier, currentIdentifiers, options) {
+ var _this = this;
+ // If creation/saving is not allowed then return
+ if (!this.c.create || !this.c.save) {
+ return;
+ }
+ // Check if the state exists before creating a new ones
+ var state = this.getState(identifier);
+ var createFunction = function (id, toggles) {
+ if (id.length === 0) {
+ return 'empty';
+ }
+ else if (currentIdentifiers.includes(id)) {
+ return 'duplicate';
+ }
+ _this.s.dt.state.save();
+ var that = _this;
+ var successCallback = function () {
+ that.s.states.push(this);
+ that._collectionRebuild();
+ };
+ var currState = _this.s.dt.state();
+ currState.stateRestore = {
+ isPredefined: false,
+ state: id,
+ tableId: _this.s.dt.table().node().id
+ };
+ if (toggles.saveState) {
+ var opts = _this.c.saveState;
+ // We don't want to extend, but instead AND all properties of the saveState option
+ for (var _i = 0, _a = Object.keys(toggles.saveState); _i < _a.length; _i++) {
+ var key = _a[_i];
+ if (!toggles.saveState[key]) {
+ opts[key] = false;
+ }
+ }
+ _this.c.saveState = opts;
+ }
+ var newState = new StateRestore(_this.s.dt.settings()[0], $$1.extend(true, {}, _this.c, options), id, currState, false, successCallback);
+ $$1(_this.s.dt.table().node()).on('dtsr-modal-inserted', function () {
+ newState.dom.confirmation.one('dtsr-remove', function () { return _this._removeCallback(newState.s.identifier); });
+ newState.dom.confirmation.one('dtsr-rename', function () { return _this._collectionRebuild(); });
+ newState.dom.confirmation.one('dtsr-save', function () { return _this._collectionRebuild(); });
+ });
+ return true;
+ };
+ // If there isn't already a state with this identifier
+ if (state === null) {
+ if (this.c.creationModal || options !== undefined && options.creationModal) {
+ this._creationModal(createFunction, identifier, options);
+ }
+ else {
+ var success = createFunction(identifier, {});
+ if (success === 'empty') {
+ throw new Error(this.s.dt.i18n('stateRestore.emptyError', this.c.i18n.emptyError));
+ }
+ else if (success === 'duplicate') {
+ throw new Error(this.s.dt.i18n('stateRestore.duplicateError', this.c.i18n.duplicateError));
+ }
+ }
+ }
+ else {
+ throw new Error(this.s.dt.i18n('stateRestore.duplicateError', this.c.i18n.duplicateError));
+ }
+ };
+ /**
+ * Removes all of the states, showing a modal to the user for confirmation
+ *
+ * @param removeFunction The action to be taken when the action is confirmed
+ */
+ StateRestoreCollection.prototype.removeAll = function (removeFunction) {
+ // There are no states to remove so just return
+ if (this.s.states.length === 0) {
+ return;
+ }
+ var ids = this.s.states.map(function (state) { return state.s.identifier; });
+ var replacementString = ids[0];
+ if (ids.length > 1) {
+ replacementString = ids.slice(0, -1).join(', ') +
+ this.s.dt.i18n('stateRestore.removeJoiner', this.c.i18n.removeJoiner) +
+ ids.slice(-1);
+ }
+ $$1(this.dom.removeContents.children('span')).html(this.s.dt
+ .i18n('stateRestore.removeConfirm', this.c.i18n.removeConfirm)
+ .replace(/%s/g, replacementString));
+ this._newModal(this.dom.removeTitle, this.s.dt.i18n('stateRestore.removeSubmit', this.c.i18n.removeSubmit), removeFunction, this.dom.removeContents);
+ };
+ /**
+ * Removes all of the dom elements from the document for the collection and the stored states
+ */
+ StateRestoreCollection.prototype.destroy = function () {
+ for (var _i = 0, _a = this.s.states; _i < _a.length; _i++) {
+ var state = _a[_i];
+ state.destroy();
+ }
+ Object.values(this.dom).forEach(function (node) {
+ node.off();
+ node.remove();
+ });
+ this.s.states = [];
+ this.s.dt.off('.dtsr');
+ $$1(this.s.dt.table().node()).off('.dtsr');
+ };
+ /**
+ * Identifies active states and updates their button to reflect this.
+ *
+ * @returns An array containing objects with the details of currently active states
+ */
+ StateRestoreCollection.prototype.findActive = function () {
+ // Make sure that the state is up to date
+ this.s.dt.state.save();
+ var currState = this.s.dt.state();
+ // Make all of the buttons inactive so that only any that match will be marked as active
+ var buttons = $$1('button.' + $$1.fn.DataTable.Buttons.defaults.dom.button.className.replace(/ /g, '.'));
+ // Some of the styling libraries use a tags instead of buttons
+ if (buttons.length === 0) {
+ buttons = $$1('a.' + $$1.fn.DataTable.Buttons.defaults.dom.button.className.replace(/ /g, '.'));
+ }
+ for (var _i = 0, buttons_1 = buttons; _i < buttons_1.length; _i++) {
+ var button = buttons_1[_i];
+ this.s.dt.button($$1(button).parent()[0]).active(false);
+ }
+ var results = [];
+ // Go through all of the states comparing if their state is the same to the current one
+ for (var _a = 0, _b = this.s.states; _a < _b.length; _a++) {
+ var state = _b[_a];
+ if (state.compare(currState)) {
+ results.push({
+ data: state.s.savedState,
+ name: state.s.identifier
+ });
+ // If so, find the corresponding button and mark it as active
+ for (var _c = 0, buttons_2 = buttons; _c < buttons_2.length; _c++) {
+ var button = buttons_2[_c];
+ if ($$1(button).text() === state.s.identifier) {
+ this.s.dt.button($$1(button).parent()[0]).active(true);
+ break;
+ }
+ }
+ }
+ }
+ return results;
+ };
+ /**
+ * Gets a single state that has the identifier matching that which is passed in
+ *
+ * @param identifier The value that is used to identify a state
+ * @returns The state that has been identified or null if no states have been identified
+ */
+ StateRestoreCollection.prototype.getState = function (identifier) {
+ for (var _i = 0, _a = this.s.states; _i < _a.length; _i++) {
+ var state = _a[_i];
+ if (state.s.identifier === identifier) {
+ return state;
+ }
+ }
+ return null;
+ };
+ /**
+ * Gets an array of all of the states
+ *
+ * @returns Any states that have been identified
+ */
+ StateRestoreCollection.prototype.getStates = function (ids) {
+ if (ids === undefined) {
+ return this.s.states;
+ }
+ else {
+ var states = [];
+ for (var _i = 0, ids_1 = ids; _i < ids_1.length; _i++) {
+ var id = ids_1[_i];
+ var found = false;
+ for (var _a = 0, _b = this.s.states; _a < _b.length; _a++) {
+ var state = _b[_a];
+ if (id === state.s.identifier) {
+ states.push(state);
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ states.push(undefined);
+ }
+ }
+ return states;
+ }
+ };
+ /**
+ * Reloads states that are set via datatables config or over ajax
+ *
+ * @param preDefined Object containing the predefined states that are to be reintroduced
+ */
+ StateRestoreCollection.prototype._addPreDefined = function (preDefined) {
+ var _this = this;
+ // There is a potential issue here if sorting where the string parts of the name are the same,
+ // only the number differs and there are many states - but this wouldn't be usfeul naming so
+ // more of a priority to sort alphabetically
+ var states = Object.keys(preDefined).sort(function (a, b) { return a > b ? 1 : a < b ? -1 : 0; });
+ var _loop_1 = function (state) {
+ for (var i = 0; i < this_1.s.states.length; i++) {
+ if (this_1.s.states[i].s.identifier === state) {
+ this_1.s.states.splice(i, 1);
+ }
+ }
+ var that = this_1;
+ var successCallback = function () {
+ that.s.states.push(this);
+ that._collectionRebuild();
+ };
+ var loadedState = preDefined[state];
+ var newState = new StateRestore(this_1.s.dt, $$1.extend(true, {}, this_1.c, loadedState.c !== undefined ?
+ { saveState: loadedState.c.saveState } :
+ undefined, true), state, loadedState, true, successCallback);
+ newState.s.savedState = loadedState;
+ $$1(this_1.s.dt.table().node()).on('dtsr-modal-inserted', function () {
+ newState.dom.confirmation.one('dtsr-remove', function () { return _this._removeCallback(newState.s.identifier); });
+ newState.dom.confirmation.one('dtsr-rename', function () { return _this._collectionRebuild(); });
+ newState.dom.confirmation.one('dtsr-save', function () { return _this._collectionRebuild(); });
+ });
+ };
+ var this_1 = this;
+ for (var _i = 0, states_1 = states; _i < states_1.length; _i++) {
+ var state = states_1[_i];
+ _loop_1(state);
+ }
+ };
+ /**
+ * Rebuilds all of the buttons in the collection of states to make sure that states and text is up to date
+ */
+ StateRestoreCollection.prototype._collectionRebuild = function () {
+ var button = this.s.dt.button('SaveStateRestore:name');
+ var stateButtons = [];
+ // Need to get the original configuration object, so we can rebuild it
+ // It might be nested, so need to traverse down the tree
+ if (button[0]) {
+ var idxs = button.index().split('-');
+ stateButtons = button[0].inst.c.buttons;
+ for (var i = 0; i < idxs.length; i++) {
+ if (stateButtons[idxs[i]].buttons) {
+ stateButtons = stateButtons[idxs[i]].buttons;
+ }
+ else {
+ stateButtons = [];
+ break;
+ }
+ }
+ }
+ // remove any states from the previous rebuild - if they are still there they will be added later
+ for (var i = 0; i < stateButtons.length; i++) {
+ if (stateButtons[i].extend === 'stateRestore') {
+ stateButtons.splice(i, 1);
+ i--;
+ }
+ }
+ if (this.c._createInSaved) {
+ stateButtons.push('createState');
+ }
+ var emptyText = '<span class="' + this.classes.emptyStates + '">' +
+ this.s.dt.i18n('stateRestore.emptyStates', this.c.i18n.emptyStates) +
+ '</span>';
+ // If there are no states display an empty message
+ if (this.s.states.length === 0) {
+ // Don't want the empty text included more than twice
+ if (!stateButtons.includes(emptyText)) {
+ stateButtons.push(emptyText);
+ }
+ }
+ else {
+ // There are states to add so there shouldn't be any empty text left!
+ while (stateButtons.includes(emptyText)) {
+ stateButtons.splice(stateButtons.indexOf(emptyText), 1);
+ }
+ // There is a potential issue here if sorting where the string parts of the name are the same,
+ // only the number differs and there are many states - but this wouldn't be usfeul naming so
+ // more of a priority to sort alphabetically
+ this.s.states = this.s.states.sort(function (a, b) {
+ var aId = a.s.identifier;
+ var bId = b.s.identifier;
+ return aId > bId ?
+ 1 :
+ aId < bId ?
+ -1 :
+ 0;
+ });
+ // Construct the split property of each button
+ for (var _i = 0, _a = this.s.states; _i < _a.length; _i++) {
+ var state = _a[_i];
+ var split = Object.assign([], this.c.splitSecondaries);
+ if (split.includes('updateState') && (!this.c.save || !state.c.save)) {
+ split.splice(split.indexOf('updateState'), 1);
+ }
+ if (split.includes('renameState') &&
+ (!this.c.save || !state.c.save || !this.c.rename || !state.c.rename)) {
+ split.splice(split.indexOf('renameState'), 1);
+ }
+ if (split.includes('removeState') && (!this.c.remove || !state.c.remove)) {
+ split.splice(split.indexOf('removeState'), 1);
+ }
+ if (split.length > 0 &&
+ !split.includes('<h3>' + state.s.identifier + '</h3>')) {
+ split.unshift('<h3>' + state.s.identifier + '</h3>');
+ }
+ stateButtons.push({
+ _stateRestore: state,
+ attr: {
+ title: state.s.identifier
+ },
+ config: {
+ split: split
+ },
+ extend: 'stateRestore',
+ text: state.s.identifier
+ });
+ }
+ }
+ button.collectionRebuild(stateButtons);
+ // Need to disable the removeAllStates button if there are no states and it is present
+ var buttons = this.s.dt.buttons();
+ for (var _b = 0, buttons_3 = buttons; _b < buttons_3.length; _b++) {
+ var butt = buttons_3[_b];
+ if ($$1(butt.node).hasClass('dtsr-removeAllStates')) {
+ if (this.s.states.length === 0) {
+ this.s.dt.button(butt.node).disable();
+ }
+ else {
+ this.s.dt.button(butt.node).enable();
+ }
+ }
+ }
+ };
+ /**
+ * Displays a modal that is used to get information from the user to create a new state.
+ *
+ * @param buttonAction The action that should be taken when the button is pressed
+ * @param identifier The default identifier for the next new state
+ */
+ StateRestoreCollection.prototype._creationModal = function (buttonAction, identifier, options) {
+ var _this = this;
+ this.dom.creation.empty();
+ this.dom.creationForm.empty();
+ this.dom.nameInputRow.children('input').val(identifier);
+ this.dom.creationForm.append(this.dom.nameInputRow);
+ var tableConfig = this.s.dt.settings()[0].oInit;
+ var togglesToInsert = [];
+ var toggleDefined = options !== undefined && options.toggle !== undefined;
+ // Order toggle - check toggle and saving enabled
+ if (((!toggleDefined || options.toggle.order === undefined) && this.c.toggle.order ||
+ toggleDefined && options.toggle.order) &&
+ this.c.saveState.order &&
+ (tableConfig.ordering === undefined || tableConfig.ordering)) {
+ togglesToInsert.push(this.dom.orderToggle);
+ }
+ // Search toggle - check toggle and saving enabled
+ if (((!toggleDefined || options.toggle.search === undefined) && this.c.toggle.search ||
+ toggleDefined && options.toggle.search) &&
+ this.c.saveState.search &&
+ (tableConfig.searching === undefined || tableConfig.searching)) {
+ togglesToInsert.push(this.dom.searchToggle);
+ }
+ // Paging toggle - check toggle and saving enabled
+ if (((!toggleDefined || options.toggle.paging === undefined) && this.c.toggle.paging ||
+ toggleDefined && options.toggle.paging) &&
+ this.c.saveState.paging &&
+ (tableConfig.paging === undefined || tableConfig.paging)) {
+ togglesToInsert.push(this.dom.pagingToggle);
+ }
+ // Page Length toggle - check toggle and saving enabled
+ if (((!toggleDefined || options.toggle.length === undefined) && this.c.toggle.length ||
+ toggleDefined && options.toggle.length) &&
+ this.c.saveState.length &&
+ (tableConfig.length === undefined || tableConfig.length)) {
+ togglesToInsert.push(this.dom.lengthToggle);
+ }
+ // ColReorder toggle - check toggle and saving enabled
+ if (this.s.hasColReorder &&
+ ((!toggleDefined || options.toggle.colReorder === undefined) && this.c.toggle.colReorder ||
+ toggleDefined && options.toggle.colReorder) &&
+ this.c.saveState.colReorder) {
+ togglesToInsert.push(this.dom.colReorderToggle);
+ }
+ // Scroller toggle - check toggle and saving enabled
+ if (this.s.hasScroller &&
+ ((!toggleDefined || options.toggle.scroller === undefined) && this.c.toggle.scroller ||
+ toggleDefined && options.toggle.scroller) &&
+ this.c.saveState.scroller) {
+ togglesToInsert.push(this.dom.scrollerToggle);
+ }
+ // SearchBuilder toggle - check toggle and saving enabled
+ if (this.s.hasSearchBuilder &&
+ ((!toggleDefined || options.toggle.searchBuilder === undefined) && this.c.toggle.searchBuilder ||
+ toggleDefined && options.toggle.searchBuilder) &&
+ this.c.saveState.searchBuilder) {
+ togglesToInsert.push(this.dom.searchBuilderToggle);
+ }
+ // SearchPanes toggle - check toggle and saving enabled
+ if (this.s.hasSearchPanes &&
+ ((!toggleDefined || options.toggle.searchPanes === undefined) && this.c.toggle.searchPanes ||
+ toggleDefined && options.toggle.searchPanes) &&
+ this.c.saveState.searchPanes) {
+ togglesToInsert.push(this.dom.searchPanesToggle);
+ }
+ // Select toggle - check toggle and saving enabled
+ if (this.s.hasSelect &&
+ ((!toggleDefined || options.toggle.select === undefined) && this.c.toggle.select ||
+ toggleDefined && options.toggle.select) &&
+ this.c.saveState.select) {
+ togglesToInsert.push(this.dom.selectToggle);
+ }
+ // Columns toggle - check toggle and saving enabled
+ if (typeof this.c.toggle.columns === 'boolean' &&
+ ((!toggleDefined || options.toggle.order === undefined) && this.c.toggle.columns ||
+ toggleDefined && options.toggle.order) &&
+ this.c.saveState.columns) {
+ togglesToInsert.push(this.dom.columnsSearchToggle);
+ togglesToInsert.push(this.dom.columnsVisibleToggle);
+ }
+ else if ((!toggleDefined || options.toggle.columns === undefined) && typeof this.c.toggle.columns !== 'boolean' ||
+ typeof options.toggle.order !== 'boolean') {
+ if (typeof this.c.saveState.columns !== 'boolean' && this.c.saveState.columns) {
+ // Column search toggle - check toggle and saving enabled
+ if ((
+ // columns.search is defined when passed in
+ toggleDefined &&
+ options.toggle.columns !== undefined &&
+ typeof options.toggle.columns !== 'boolean' &&
+ options.toggle.columns.search ||
+ // Columns search is not defined when passed in but is in defaults
+ (!toggleDefined ||
+ options.toggle.columns === undefined ||
+ typeof options.toggle.columns !== 'boolean' && options.toggle.columns.search === undefined) &&
+ typeof this.c.toggle.columns !== 'boolean' &&
+ this.c.toggle.columns.search) &&
+ this.c.saveState.columns.search) {
+ togglesToInsert.push(this.dom.columnsSearchToggle);
+ }
+ // Column visiblity toggle - check toggle and saving enabled
+ if ((
+ // columns.visible is defined when passed in
+ toggleDefined &&
+ options.toggle.columns !== undefined &&
+ typeof options.toggle.columns !== 'boolean' &&
+ options.toggle.columns.visible ||
+ // Columns visible is not defined when passed in but is in defaults
+ (!toggleDefined ||
+ options.toggle.columns === undefined ||
+ typeof options.toggle.columns !== 'boolean' && options.toggle.columns.visible === undefined) &&
+ typeof this.c.toggle.columns !== 'boolean' &&
+ this.c.toggle.columns.visible) &&
+ this.c.saveState.columns.visible) {
+ togglesToInsert.push(this.dom.columnsVisibleToggle);
+ }
+ }
+ else if (this.c.saveState.columns) {
+ togglesToInsert.push(this.dom.columnsSearchToggle);
+ togglesToInsert.push(this.dom.columnsVisibleToggle);
+ }
+ }
+ // Make sure that the toggles are displayed alphabetically
+ togglesToInsert.sort(function (a, b) {
+ var aVal = a.children('label.dtsr-check-label')[0].innerHTML;
+ var bVal = b.children('label.dtsr-check-label')[0].innerHTML;
+ if (aVal < bVal) {
+ return -1;
+ }
+ else if (aVal > bVal) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+ });
+ // Append all of the toggles that are to be inserted
+ for (var _i = 0, togglesToInsert_1 = togglesToInsert; _i < togglesToInsert_1.length; _i++) {
+ var toggle = togglesToInsert_1[_i];
+ this.dom.creationForm.append(toggle);
+ }
+ // Insert the toggle label next to the first check box
+ $$1(this.dom.creationForm.children('div.' + this.classes.checkRow)[0]).prepend(this.dom.toggleLabel);
+ // Insert the creation modal and the background
+ this.dom.background.appendTo(this.dom.dtContainer);
+ this.dom.creation
+ .append(this.dom.creationTitle)
+ .append(this.dom.creationForm)
+ .append(this.dom.createButtonRow)
+ .appendTo(this.dom.dtContainer);
+ $$1(this.s.dt.table().node()).trigger('dtsr-modal-inserted');
+ var _loop_2 = function (toggle) {
+ $$1(toggle.children('label:last-child')).on('click', function () {
+ toggle.children('input').prop('checked', !toggle.children('input').prop('checked'));
+ });
+ };
+ // Allow the label to be clicked to toggle the checkbox
+ for (var _a = 0, togglesToInsert_2 = togglesToInsert; _a < togglesToInsert_2.length; _a++) {
+ var toggle = togglesToInsert_2[_a];
+ _loop_2(toggle);
+ }
+ var creationButton = $$1('button.' + this.classes.creationButton.replace(/ /g, '.'));
+ var inputs = this.dom.creationForm.find('input');
+ // If there is an input focus on that
+ if (inputs.length > 0) {
+ $$1(inputs[0]).focus();
+ }
+ // Otherwise focus on the confirmation button
+ else {
+ creationButton.focus();
+ }
+ var background = $$1('div.' + this.classes.background.replace(/ /g, '.'));
+ var keyupFunction = function (e) {
+ if (e.key === 'Enter') {
+ creationButton.click();
+ }
+ else if (e.key === 'Escape') {
+ background.click();
+ }
+ };
+ if (this.c.modalCloseButton) {
+ this.dom.creation.append(this.dom.closeButton);
+ this.dom.closeButton.on('click', function () { return background.click(); });
+ }
+ creationButton.on('click', function () {
+ // Get the values of the checkBoxes
+ var saveState = {
+ colReorder: _this.dom.colReorderToggle.children('input').is(':checked'),
+ columns: {
+ search: _this.dom.columnsSearchToggle.children('input').is(':checked'),
+ visible: _this.dom.columnsVisibleToggle.children('input').is(':checked')
+ },
+ length: _this.dom.lengthToggle.children('input').is(':checked'),
+ order: _this.dom.orderToggle.children('input').is(':checked'),
+ paging: _this.dom.pagingToggle.children('input').is(':checked'),
+ scroller: _this.dom.scrollerToggle.children('input').is(':checked'),
+ search: _this.dom.searchToggle.children('input').is(':checked'),
+ searchBuilder: _this.dom.searchBuilderToggle.children('input').is(':checked'),
+ searchPanes: _this.dom.searchPanesToggle.children('input').is(':checked'),
+ select: _this.dom.selectToggle.children('input').is(':checked')
+ };
+ // Call the buttons functionality passing in the identifier and what should be saved
+ var success = buttonAction($$1('input.' + _this.classes.nameInput.replace(/ /g, '.')).val(), { saveState: saveState });
+ if (success === true) {
+ // Remove the dom elements as operation has completed
+ _this.dom.background.remove();
+ _this.dom.creation.remove();
+ // Unbind the keyup function - don't want it to run unnecessarily on every keypress that occurs
+ $$1(document).unbind('keyup', keyupFunction);
+ }
+ else {
+ _this.dom.creation.children('.' + _this.classes.modalError).remove();
+ _this.dom.creation.append(_this.dom[success + 'Error']);
+ }
+ });
+ background.one('click', function () {
+ // Remove the dome elements as operation has been cancelled
+ _this.dom.background.remove();
+ _this.dom.creation.remove();
+ // Unbind the keyup function - don't want it to run unnecessarily on every keypress that occurs
+ $$1(document).unbind('keyup', keyupFunction);
+ // Rebuild the collection to ensure that the latest changes are present
+ _this._collectionRebuild();
+ });
+ // Have to listen to the keyup event as `escape` doesn't trigger keypress
+ $$1(document).on('keyup', keyupFunction);
+ // Need to save the state before the focus is lost when the modal is interacted with
+ this.s.dt.state.save();
+ };
+ /**
+ * This callback is called when a state is removed.
+ * This removes the state from storage and also strips it's button from the container
+ *
+ * @param identifier The value that is used to identify a state
+ */
+ StateRestoreCollection.prototype._removeCallback = function (identifier) {
+ for (var i = 0; i < this.s.states.length; i++) {
+ if (this.s.states[i].s.identifier === identifier) {
+ this.s.states.splice(i, 1);
+ i--;
+ }
+ }
+ this._collectionRebuild();
+ return true;
+ };
+ /**
+ * Creates a new confirmation modal for the user to approve an action
+ *
+ * @param title The title that is to be displayed at the top of the modal
+ * @param buttonText The text that is to be displayed in the confirmation button of the modal
+ * @param buttonAction The action that should be taken when the confirmation button is pressed
+ * @param modalContents The contents for the main body of the modal
+ */
+ StateRestoreCollection.prototype._newModal = function (title, buttonText, buttonAction, modalContents) {
+ var _this = this;
+ this.dom.background.appendTo(this.dom.dtContainer);
+ this.dom.confirmationTitleRow.empty().append(title);
+ var confirmationButton = $$1('<button class="' + this.classes.confirmationButton + ' ' + this.classes.dtButton + '">' +
+ buttonText +
+ '</button>');
+ this.dom.confirmation
+ .empty()
+ .append(this.dom.confirmationTitleRow)
+ .append(modalContents)
+ .append($$1('<div class="' + this.classes.confirmationButtons + '"></div>')
+ .append(confirmationButton))
+ .appendTo(this.dom.dtContainer);
+ $$1(this.s.dt.table().node()).trigger('dtsr-modal-inserted');
+ var inputs = modalContents.children('input');
+ // If there is an input focus on that
+ if (inputs.length > 0) {
+ $$1(inputs[0]).focus();
+ }
+ // Otherwise focus on the confirmation button
+ else {
+ confirmationButton.focus();
+ }
+ var background = $$1('div.' + this.classes.background.replace(/ /g, '.'));
+ var keyupFunction = function (e) {
+ // If enter same action as pressing the button
+ if (e.key === 'Enter') {
+ confirmationButton.click();
+ }
+ // If escape close modal
+ else if (e.key === 'Escape') {
+ background.click();
+ }
+ };
+ // When the button is clicked, call the appropriate action,
+ // remove the background and modal from the screen and unbind the keyup event.
+ confirmationButton.on('click', function () {
+ var success = buttonAction(true);
+ if (success === true) {
+ _this.dom.background.remove();
+ _this.dom.confirmation.remove();
+ $$1(document).unbind('keyup', keyupFunction);
+ confirmationButton.off('click');
+ }
+ else {
+ _this.dom.confirmation.children('.' + _this.classes.modalError).remove();
+ _this.dom.confirmation.append(_this.dom[success + 'Error']);
+ }
+ });
+ this.dom.confirmation.on('click', function (e) {
+ e.stopPropagation();
+ });
+ // When the button is clicked, remove the background and modal from the screen and unbind the keyup event.
+ background.one('click', function () {
+ _this.dom.background.remove();
+ _this.dom.confirmation.remove();
+ $$1(document).unbind('keyup', keyupFunction);
+ });
+ $$1(document).on('keyup', keyupFunction);
+ };
+ /**
+ * Private method that checks for previously created states on initialisation
+ */
+ StateRestoreCollection.prototype._searchForStates = function () {
+ var _this = this;
+ var keys = Object.keys(localStorage);
+ var _loop_3 = function (key) {
+ // eslint-disable-next-line no-useless-escape
+ if (key.match(new RegExp('^DataTables_stateRestore_.*_' + location.pathname.replace(/\//g, '/') + '$')) ||
+ key.match(new RegExp('^DataTables_stateRestore_.*_' + location.pathname.replace(/\//g, '/') +
+ '_' + this_2.s.dt.table().node().id + '$'))) {
+ var loadedState_1 = JSON.parse(localStorage.getItem(key));
+ if (loadedState_1.stateRestore.isPreDefined ||
+ (loadedState_1.stateRestore.tableId &&
+ loadedState_1.stateRestore.tableId !== this_2.s.dt.table().node().id)) {
+ return "continue";
+ }
+ var that_1 = this_2;
+ var successCallback = function () {
+ this.s.savedState = loadedState_1;
+ that_1.s.states.push(this);
+ that_1._collectionRebuild();
+ };
+ var newState_1 = new StateRestore(this_2.s.dt, $$1.extend(true, {}, this_2.c, { saveState: loadedState_1.c.saveState }), loadedState_1.stateRestore.state, loadedState_1, false, successCallback);
+ $$1(this_2.s.dt.table().node()).on('dtsr-modal-inserted', function () {
+ newState_1.dom.confirmation.one('dtsr-remove', function () { return _this._removeCallback(newState_1.s.identifier); });
+ newState_1.dom.confirmation.one('dtsr-rename', function () { return _this._collectionRebuild(); });
+ newState_1.dom.confirmation.one('dtsr-save', function () { return _this._collectionRebuild(); });
+ });
+ }
+ };
+ var this_2 = this;
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
+ var key = keys_1[_i];
+ _loop_3(key);
+ }
+ };
+ StateRestoreCollection.version = '1.0.0';
+ StateRestoreCollection.classes = {
+ background: 'dtsr-background',
+ checkBox: 'dtsr-check-box',
+ checkLabel: 'dtsr-check-label',
+ checkRow: 'dtsr-check-row',
+ closeButton: 'dtsr-popover-close',
+ colReorderToggle: 'dtsr-colReorder-toggle',
+ columnsSearchToggle: 'dtsr-columns-search-toggle',
+ columnsVisibleToggle: 'dtsr-columns-visible-toggle',
+ confirmation: 'dtsr-confirmation',
+ confirmationButton: 'dtsr-confirmation-button',
+ confirmationButtons: 'dtsr-confirmation-buttons',
+ confirmationMessage: 'dtsr-confirmation-message dtsr-name-label',
+ confirmationText: 'dtsr-confirmation-text',
+ confirmationTitle: 'dtsr-confirmation-title',
+ confirmationTitleRow: 'dtsr-confirmation-title-row',
+ creation: 'dtsr-creation',
+ creationButton: 'dtsr-creation-button',
+ creationForm: 'dtsr-creation-form',
+ creationText: 'dtsr-creation-text',
+ creationTitle: 'dtsr-creation-title',
+ dtButton: 'dt-button',
+ emptyStates: 'dtsr-emptyStates',
+ formRow: 'dtsr-form-row',
+ leftSide: 'dtsr-left',
+ lengthToggle: 'dtsr-length-toggle',
+ modalError: 'dtsr-modal-error',
+ modalFoot: 'dtsr-modal-foot',
+ nameInput: 'dtsr-name-input',
+ nameLabel: 'dtsr-name-label',
+ orderToggle: 'dtsr-order-toggle',
+ pagingToggle: 'dtsr-paging-toggle',
+ rightSide: 'dtsr-right',
+ scrollerToggle: 'dtsr-scroller-toggle',
+ searchBuilderToggle: 'dtsr-searchBuilder-toggle',
+ searchPanesToggle: 'dtsr-searchPanes-toggle',
+ searchToggle: 'dtsr-search-toggle',
+ selectToggle: 'dtsr-select-toggle',
+ toggleLabel: 'dtsr-toggle-title'
+ };
+ StateRestoreCollection.defaults = {
+ _createInSaved: false,
+ ajax: false,
+ create: true,
+ creationModal: false,
+ i18n: {
+ creationModal: {
+ button: 'Create',
+ colReorder: 'Column Order',
+ columns: {
+ search: 'Column Search',
+ visible: 'Column Visibility'
+ },
+ length: 'Page Length',
+ name: 'Name:',
+ order: 'Sorting',
+ paging: 'Paging',
+ scroller: 'Scroll Position',
+ search: 'Search',
+ searchBuilder: 'SearchBuilder',
+ searchPanes: 'SearchPanes',
+ select: 'Select',
+ title: 'Create New State',
+ toggleLabel: 'Includes:'
+ },
+ duplicateError: 'A state with this name already exists.',
+ emptyError: 'Name cannot be empty.',
+ emptyStates: 'No saved states',
+ removeConfirm: 'Are you sure you want to remove %s?',
+ removeError: 'Failed to remove state.',
+ removeJoiner: ' and ',
+ removeSubmit: 'Remove',
+ removeTitle: 'Remove State',
+ renameButton: 'Rename',
+ renameLabel: 'New Name for %s:',
+ renameTitle: 'Rename State'
+ },
+ modalCloseButton: true,
+ preDefined: {},
+ remove: true,
+ rename: true,
+ save: true,
+ saveState: {
+ colReorder: true,
+ columns: {
+ search: true,
+ visible: true
+ },
+ length: true,
+ order: true,
+ paging: true,
+ scroller: true,
+ search: true,
+ searchBuilder: true,
+ searchPanes: true,
+ select: true
+ },
+ splitSecondaries: [
+ 'updateState',
+ 'renameState',
+ 'removeState'
+ ],
+ toggle: {
+ colReorder: false,
+ columns: {
+ search: false,
+ visible: false
+ },
+ length: false,
+ order: false,
+ paging: false,
+ scroller: false,
+ search: false,
+ searchBuilder: false,
+ searchPanes: false,
+ select: false
+ }
+ };
+ return StateRestoreCollection;
+ }());
+
+ /*! StateRestore 1.2.2
+ * © SpryMedia Ltd - datatables.net/license
+ */
+ setJQuery$1($);
+ setJQuery($);
+ $.fn.dataTable.StateRestore = StateRestore;
+ $.fn.DataTable.StateRestore = StateRestore;
+ $.fn.dataTable.StateRestoreCollection = StateRestoreCollection;
+ $.fn.DataTable.StateRestoreCollection = StateRestoreCollection;
+ var apiRegister = DataTable.Api.register;
+ apiRegister('stateRestore()', function () {
+ return this;
+ });
+ apiRegister('stateRestore.state()', function (identifier) {
+ var ctx = this.context[0];
+ if (!ctx._stateRestore) {
+ var api = DataTable.Api(ctx);
+ var src = new DataTable.StateRestoreCollection(api, {});
+ _stateRegen(api, src);
+ }
+ this[0] = ctx._stateRestore.getState(identifier);
+ return this;
+ });
+ apiRegister('stateRestore.state.add()', function (identifier, options) {
+ var ctx = this.context[0];
+ if (!ctx._stateRestore) {
+ var api = DataTable.Api(ctx);
+ var src = new DataTable.StateRestoreCollection(api, {});
+ _stateRegen(api, src);
+ }
+ if (!ctx._stateRestore.c.create) {
+ return this;
+ }
+ if (ctx._stateRestore.addState) {
+ var states = ctx._stateRestore.s.states;
+ var ids = [];
+ for (var _i = 0, states_1 = states; _i < states_1.length; _i++) {
+ var intState = states_1[_i];
+ ids.push(intState.s.identifier);
+ }
+ ctx._stateRestore.addState(identifier, ids, options);
+ return this;
+ }
+ });
+ apiRegister('stateRestore.states()', function (ids) {
+ var ctx = this.context[0];
+ if (!ctx._stateRestore) {
+ var api = DataTable.Api(ctx);
+ var src = new DataTable.StateRestoreCollection(api, {});
+ _stateRegen(api, src);
+ }
+ this.length = 0;
+ this.push.apply(this, ctx._stateRestore.getStates(ids));
+ return this;
+ });
+ apiRegister('stateRestore.state().save()', function () {
+ var ctx = this[0];
+ // Check if saving states is allowed
+ if (ctx.c.save) {
+ ctx.save();
+ }
+ return this;
+ });
+ apiRegister('stateRestore.state().rename()', function (newIdentifier) {
+ var ctx = this.context[0];
+ var state = this[0];
+ // Check if renaming states is allowed
+ if (state.c.save) {
+ var states = ctx._stateRestore.s.states;
+ var ids = [];
+ for (var _i = 0, states_2 = states; _i < states_2.length; _i++) {
+ var intState = states_2[_i];
+ ids.push(intState.s.identifier);
+ }
+ state.rename(newIdentifier, ids);
+ }
+ return this;
+ });
+ apiRegister('stateRestore.state().load()', function () {
+ var ctx = this[0];
+ ctx.load();
+ return this;
+ });
+ apiRegister('stateRestore.state().remove()', function (skipModal) {
+ var ctx = this[0];
+ // Check if removal of states is allowed
+ if (ctx.c.remove) {
+ ctx.remove(skipModal);
+ }
+ return this;
+ });
+ apiRegister('stateRestore.states().remove()', function (skipModal) {
+ var _this = this;
+ var removeAllCallBack = function (skipModalIn) {
+ var success = true;
+ var that = _this.toArray();
+ while (that.length > 0) {
+ var set = that[0];
+ if (set !== undefined && set.c.remove) {
+ var tempSuccess = set.remove(skipModalIn);
+ if (tempSuccess !== true) {
+ success = tempSuccess;
+ }
+ else {
+ that.splice(0, 1);
+ }
+ }
+ else {
+ break;
+ }
+ }
+ return success;
+ };
+ if (this.context[0]._stateRestore && this.context[0]._stateRestore.c.remove) {
+ if (skipModal) {
+ removeAllCallBack(skipModal);
+ }
+ else {
+ this.context[0]._stateRestore.removeAll(removeAllCallBack);
+ }
+ }
+ return this;
+ });
+ apiRegister('stateRestore.activeStates()', function () {
+ var ctx = this.context[0];
+ this.length = 0;
+ if (!ctx._stateRestore) {
+ var api = DataTable.Api(ctx);
+ var src = new DataTable.StateRestoreCollection(api, {});
+ _stateRegen(api, src);
+ }
+ if (ctx._stateRestore) {
+ this.push.apply(this, ctx._stateRestore.findActive());
+ }
+ return this;
+ });
+ DataTable.ext.buttons.stateRestore = {
+ action: function (e, dt, node, config) {
+ config._stateRestore.load();
+ node.blur();
+ },
+ config: {
+ split: ['updateState', 'renameState', 'removeState']
+ },
+ text: function (dt) {
+ return dt.i18n('buttons.stateRestore', 'State %d', dt.stateRestore.states()[0].length + 1);
+ }
+ };
+ DataTable.ext.buttons.updateState = {
+ action: function (e, dt, node, config) {
+ $('div.dt-button-background').click();
+ config.parent._stateRestore.save();
+ },
+ text: function (dt) {
+ return dt.i18n('buttons.updateState', 'Update');
+ }
+ };
+ DataTable.ext.buttons.savedStates = {
+ buttons: [],
+ extend: 'collection',
+ init: function (dt, node, config) {
+ dt.on('stateRestore-change', function () {
+ dt.button(node).text(dt.i18n('buttons.savedStates', 'Saved States', dt.stateRestore.states().length));
+ });
+ if (dt.settings()[0]._stateRestore === undefined) {
+ _buttonInit(dt, config);
+ }
+ },
+ name: 'SaveStateRestore',
+ text: function (dt) {
+ return dt.i18n('buttons.savedStates', 'Saved States', 0);
+ }
+ };
+ DataTable.ext.buttons.savedStatesCreate = {
+ buttons: [],
+ extend: 'collection',
+ init: function (dt, node, config) {
+ dt.on('stateRestore-change', function () {
+ dt.button(node).text(dt.i18n('buttons.savedStates', 'Saved States', dt.stateRestore.states().length));
+ });
+ if (dt.settings()[0]._stateRestore === undefined) {
+ if (config.config === undefined) {
+ config.config = {};
+ }
+ config.config._createInSaved = true;
+ _buttonInit(dt, config);
+ }
+ },
+ name: 'SaveStateRestore',
+ text: function (dt) {
+ return dt.i18n('buttons.savedStates', 'Saved States', 0);
+ }
+ };
+ DataTable.ext.buttons.createState = {
+ action: function (e, dt, node, config) {
+ e.stopPropagation();
+ var stateRestoreOpts = dt.settings()[0]._stateRestore.c;
+ var language = dt.settings()[0].oLanguage;
+ // If creation/saving is not allowed then return
+ if (!stateRestoreOpts.create || !stateRestoreOpts.save) {
+ return;
+ }
+ var prevStates = dt.stateRestore.states().toArray();
+ // Create a replacement regex based on the i18n values
+ var defaultString = language.buttons !== undefined && language.buttons.stateRestore !== undefined ?
+ language.buttons.stateRestore :
+ 'State ';
+ var replaceRegex;
+ if (defaultString.indexOf('%d') === defaultString.length - 3) {
+ replaceRegex = new RegExp(defaultString.replace(/%d/g, ''));
+ }
+ else {
+ var splitString = defaultString.split('%d');
+ replaceRegex = [];
+ for (var _i = 0, splitString_1 = splitString; _i < splitString_1.length; _i++) {
+ var split = splitString_1[_i];
+ replaceRegex.push(new RegExp(split));
+ }
+ }
+ var getId = function (identifier) {
+ var id;
+ if (Array.isArray(replaceRegex)) {
+ id = identifier;
+ for (var _i = 0, replaceRegex_1 = replaceRegex; _i < replaceRegex_1.length; _i++) {
+ var reg = replaceRegex_1[_i];
+ id = id.replace(reg, '');
+ }
+ }
+ else {
+ id = identifier.replace(replaceRegex, '');
+ }
+ // If the id after replacement is not a number, or the length is the same as before,
+ // it has been customised so return 0
+ if (isNaN(+id) || id.length === identifier) {
+ return 0;
+ }
+ // Otherwise return the number that has been assigned previously
+ else {
+ return +id;
+ }
+ };
+ // Extract the numbers from the identifiers that use the standard naming convention
+ var identifiers = prevStates
+ .map(function (state) { return getId(state.s.identifier); })
+ .sort(function (a, b) { return +a < +b ?
+ 1 :
+ +a > +b ?
+ -1 :
+ 0; });
+ var lastNumber = identifiers[0];
+ dt.stateRestore.state.add(dt.i18n('buttons.stateRestore', 'State %d', lastNumber !== undefined ? lastNumber + 1 : 1), config.config);
+ var states = dt.stateRestore.states().sort(function (a, b) {
+ var aId = +getId(a.s.identifier);
+ var bId = +getId(b.s.identifier);
+ return aId > bId ?
+ 1 :
+ aId < bId ?
+ -1 :
+ 0;
+ });
+ var button = dt.button('SaveStateRestore:name');
+ var stateButtons = button[0] !== undefined && button[0].inst.c.buttons[0].buttons !== undefined ?
+ button[0].inst.c.buttons[0].buttons :
+ [];
+ // remove any states from the previous rebuild - if they are still there they will be added later
+ for (var i = 0; i < stateButtons.length; i++) {
+ if (stateButtons[i].extend === 'stateRestore') {
+ stateButtons.splice(i, 1);
+ i--;
+ }
+ }
+ if (stateRestoreOpts._createInSaved) {
+ stateButtons.push('createState');
+ stateButtons.push('');
+ }
+ for (var _a = 0, states_3 = states; _a < states_3.length; _a++) {
+ var state = states_3[_a];
+ var split = Object.assign([], stateRestoreOpts.splitSecondaries);
+ if (split.includes('updateState') && !stateRestoreOpts.save) {
+ split.splice(split.indexOf('updateState'), 1);
+ }
+ if (split.includes('renameState') &&
+ (!stateRestoreOpts.save || !stateRestoreOpts.rename)) {
+ split.splice(split.indexOf('renameState'), 1);
+ }
+ if (split.includes('removeState') && !stateRestoreOpts.remove) {
+ split.splice(split.indexOf('removeState'), 1);
+ }
+ if (split.length > 0 &&
+ !split.includes('<h3>' + state.s.identifier + '</h3>')) {
+ split.unshift('<h3>' + state.s.identifier + '</h3>');
+ }
+ stateButtons.push({
+ _stateRestore: state,
+ attr: {
+ title: state.s.identifier
+ },
+ config: {
+ split: split
+ },
+ extend: 'stateRestore',
+ text: state.s.identifier
+ });
+ }
+ dt.button('SaveStateRestore:name').collectionRebuild(stateButtons);
+ node.blur();
+ // Need to disable the removeAllStates button if there are no states and it is present
+ var buttons = dt.buttons();
+ for (var _b = 0, buttons_1 = buttons; _b < buttons_1.length; _b++) {
+ var butt = buttons_1[_b];
+ if ($(butt.node).hasClass('dtsr-removeAllStates')) {
+ if (states.length === 0) {
+ dt.button(butt.node).disable();
+ }
+ else {
+ dt.button(butt.node).enable();
+ }
+ }
+ }
+ },
+ init: function (dt, node, config) {
+ if (dt.settings()[0]._stateRestore === undefined && dt.button('SaveStateRestore:name').length > 1) {
+ _buttonInit(dt, config);
+ }
+ },
+ text: function (dt) {
+ return dt.i18n('buttons.createState', 'Create State');
+ }
+ };
+ DataTable.ext.buttons.removeState = {
+ action: function (e, dt, node, config) {
+ config.parent._stateRestore.remove();
+ node.blur();
+ },
+ text: function (dt) {
+ return dt.i18n('buttons.removeState', 'Remove');
+ }
+ };
+ DataTable.ext.buttons.removeAllStates = {
+ action: function (e, dt, node) {
+ dt.stateRestore.states().remove(true);
+ node.blur();
+ },
+ className: 'dt-button dtsr-removeAllStates',
+ init: function (dt, node) {
+ if (!dt.settings()[0]._stateRestore || dt.stateRestore.states().length === 0) {
+ $(node).addClass('disabled');
+ }
+ },
+ text: function (dt) {
+ return dt.i18n('buttons.removeAllStates', 'Remove All States');
+ }
+ };
+ DataTable.ext.buttons.renameState = {
+ action: function (e, dt, node, config) {
+ var states = dt.settings()[0]._stateRestore.s.states;
+ var ids = [];
+ for (var _i = 0, states_4 = states; _i < states_4.length; _i++) {
+ var state = states_4[_i];
+ ids.push(state.s.identifier);
+ }
+ config.parent._stateRestore.rename(undefined, ids);
+ node.blur();
+ },
+ text: function (dt) {
+ return dt.i18n('buttons.renameState', 'Rename');
+ }
+ };
+ function _init(settings, options) {
+ if (options === void 0) { options = null; }
+ var api = new DataTable.Api(settings);
+ var opts = options
+ ? options
+ : api.init().stateRestore || DataTable.defaults.stateRestore;
+ var stateRestore = new StateRestoreCollection(api, opts);
+ _stateRegen(api, stateRestore);
+ return stateRestore;
+ }
+ /**
+ * Initialisation function if initialising using a button
+ *
+ * @param dt The datatables instance
+ * @param config the config for the button
+ */
+ function _buttonInit(dt, config) {
+ var SRC = new DataTable.StateRestoreCollection(dt, config.config);
+ _stateRegen(dt, SRC);
+ }
+ function _stateRegen(dt, src) {
+ var states = dt.stateRestore.states();
+ var button = dt.button('SaveStateRestore:name');
+ var stateButtons = [];
+ // Need to get the original configuration object, so we can rebuild it
+ // It might be nested, so need to traverse down the tree
+ if (button[0]) {
+ var idxs = button.index().split('-');
+ stateButtons = button[0].inst.c.buttons;
+ for (var i = 0; i < idxs.length; i++) {
+ if (stateButtons[idxs[i]].buttons) {
+ stateButtons = stateButtons[idxs[i]].buttons;
+ }
+ else {
+ stateButtons = [];
+ break;
+ }
+ }
+ }
+ var stateRestoreOpts = dt.settings()[0]._stateRestore.c;
+ // remove any states from the previous rebuild - if they are still there they will be added later
+ for (var i = 0; i < stateButtons.length; i++) {
+ if (stateButtons[i].extend === 'stateRestore') {
+ stateButtons.splice(i, 1);
+ i--;
+ }
+ }
+ if (stateRestoreOpts._createInSaved) {
+ stateButtons.push('createState');
+ }
+ if (states === undefined || states.length === 0) {
+ stateButtons.push('<span class="' + src.classes.emptyStates + '">' +
+ dt.i18n('stateRestore.emptyStates', src.c.i18n.emptyStates) +
+ '</span>');
+ }
+ else {
+ for (var _i = 0, states_5 = states; _i < states_5.length; _i++) {
+ var state = states_5[_i];
+ var split = Object.assign([], stateRestoreOpts.splitSecondaries);
+ if (split.includes('updateState') && !stateRestoreOpts.save) {
+ split.splice(split.indexOf('updateState'), 1);
+ }
+ if (split.includes('renameState') &&
+ (!stateRestoreOpts.save || !stateRestoreOpts.rename)) {
+ split.splice(split.indexOf('renameState'), 1);
+ }
+ if (split.includes('removeState') && !stateRestoreOpts.remove) {
+ split.splice(split.indexOf('removeState'), 1);
+ }
+ if (split.length > 0 &&
+ !split.includes('<h3>' + state.s.identifier + '</h3>')) {
+ split.unshift('<h3>' + state.s.identifier + '</h3>');
+ }
+ stateButtons.push({
+ _stateRestore: state,
+ attr: {
+ title: state.s.identifier
+ },
+ config: {
+ split: split
+ },
+ extend: 'stateRestore',
+ text: state.s.identifier
+ });
+ }
+ }
+ dt.button('SaveStateRestore:name').collectionRebuild(stateButtons);
+ // Need to disable the removeAllStates button if there are no states and it is present
+ var buttons = dt.buttons();
+ for (var _a = 0, buttons_2 = buttons; _a < buttons_2.length; _a++) {
+ var butt = buttons_2[_a];
+ if ($(butt.node).hasClass('dtsr-removeAllStates')) {
+ if (states.length === 0) {
+ dt.button(butt.node).disable();
+ }
+ else {
+ dt.button(butt.node).enable();
+ }
+ }
+ }
+ }
+ // Attach a listener to the document which listens for DataTables initialisation
+ // events so we can automatically initialise
+ $(document).on('preInit.dt.dtsr', function (e, settings) {
+ if (e.namespace !== 'dt') {
+ return;
+ }
+ if (settings.oInit.stateRestore ||
+ DataTable.defaults.stateRestore) {
+ if (!settings._stateRestore) {
+ _init(settings, null);
+ }
+ }
+ });
+
+})();
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.min.js
new file mode 100644
index 0000000..93ed4e6
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/dataTables.stateRestore.min.js
@@ -0,0 +1,4 @@
+/*! StateRestore 1.2.2
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(s){var o,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return s(e,window,document)}):"object"==typeof exports?(o=require("jquery"),a=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),a(e,t),s(t,0,e.document)}:(a(window,o),module.exports=s(o,window,window.document))):s(jQuery,window,document)}(function(R,e,g,k){"use strict";var u,m,f,i,p,s,t,c=R.fn.dataTable;function n(e,t,s,o,a,i){if(void 0===o&&(o=k),void 0===a&&(a=!1),void 0===i&&(i=function(){return null}),!m||!m.versionCheck||!m.versionCheck("1.10.0"))throw new Error("StateRestore requires DataTables 1.10 or newer");if(!m.Buttons)throw new Error("StateRestore requires Buttons");e=new m.Api(e);this.classes=u.extend(!0,{},n.classes),this.c=u.extend(!0,{},n.defaults,t),this.s={dt:e,identifier:s,isPreDefined:a,savedState:null,tableId:o&&o.stateRestore?o.stateRestore.tableId:k},this.dom={background:u('<div class="'+this.classes.background+'"/>'),closeButton:u('<div class="'+this.classes.closeButton+'">x</div>'),confirmation:u('<div class="'+this.classes.confirmation+'"/>'),confirmationButton:u('<button class="'+this.classes.confirmationButton+" "+this.classes.dtButton+'">'),confirmationTitleRow:u('<div class="'+this.classes.confirmationTitleRow+'"></div>'),dtContainer:u(this.s.dt.table().container()),duplicateError:u('<span class="'+this.classes.modalError+'">'+this.s.dt.i18n("stateRestore.duplicateError",this.c.i18n.duplicateError)+"</span>"),emptyError:u('<span class="'+this.classes.modalError+'">'+this.s.dt.i18n("stateRestore.emptyError",this.c.i18n.emptyError)+"</span>"),removeContents:u('<div class="'+this.classes.confirmationText+'"><span>'+this.s.dt.i18n("stateRestore.removeConfirm",this.c.i18n.removeConfirm).replace(/%s/g,this.s.identifier)+"</span></div>"),removeError:u('<span class="'+this.classes.modalError+'">'+this.s.dt.i18n("stateRestore.removeError",this.c.i18n.removeError)+"</span>"),removeTitle:u('<h2 class="'+this.classes.confirmationTitle+'">'+this.s.dt.i18n("stateRestore.removeTitle",this.c.i18n.removeTitle)+"</h2>"),renameContents:u('<div class="'+this.classes.confirmationText+" "+this.classes.renameModal+'"><label class="'+this.classes.confirmationMessage+'">'+this.s.dt.i18n("stateRestore.renameLabel",this.c.i18n.renameLabel).replace(/%s/g,this.s.identifier)+"</label></div>"),renameInput:u('<input class="'+this.classes.input+'" type="text"></input>'),renameTitle:u('<h2 class="'+this.classes.confirmationTitle+'">'+this.s.dt.i18n("stateRestore.renameTitle",this.c.i18n.renameTitle)+"</h2>")},this.save(o,i)}function r(e,t){var o=this;if(!i||!i.versionCheck||!i.versionCheck("1.10.0"))throw new Error("StateRestore requires DataTables 1.10 or newer");if(!i.Buttons)throw new Error("StateRestore requires Buttons");var s,a,e=new i.Api(e);if(this.classes=f.extend(!0,{},r.classes),e.settings()[0]._stateRestore===k)return this.c=f.extend(!0,{},r.defaults,t),this.s={dt:e,hasColReorder:i.ColReorder!==k,hasScroller:i.Scroller!==k,hasSearchBuilder:i.SearchBuilder!==k,hasSearchPanes:i.SearchPanes!==k,hasSelect:i.select!==k,states:[]},this.s.dt.on("xhr",function(e,t,s){s&&s.stateRestore&&o._addPreDefined(s.stateRestore)}),this.dom={background:f('<div class="'+this.classes.background+'"/>'),closeButton:f('<div class="'+this.classes.closeButton+'">x</div>'),colReorderToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.colReorderToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.colReorder",this.c.i18n.creationModal.colReorder)+"</label></div>"),columnsSearchToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.columnsSearchToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.columns.search",this.c.i18n.creationModal.columns.search)+"</label></div>"),columnsVisibleToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+' "><input type="checkbox" class="'+this.classes.columnsVisibleToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.columns.visible",this.c.i18n.creationModal.columns.visible)+"</label></div>"),confirmation:f('<div class="'+this.classes.confirmation+'"/>'),confirmationTitleRow:f('<div class="'+this.classes.confirmationTitleRow+'"></div>'),createButtonRow:f('<div class="'+this.classes.formRow+" "+this.classes.modalFoot+'"><button class="'+this.classes.creationButton+" "+this.classes.dtButton+'">'+this.s.dt.i18n("stateRestore.creationModal.button",this.c.i18n.creationModal.button)+"</button></div>"),creation:f('<div class="'+this.classes.creation+'"/>'),creationForm:f('<div class="'+this.classes.creationForm+'"/>'),creationTitle:f('<div class="'+this.classes.creationText+'"><h2 class="'+this.classes.creationTitle+'">'+this.s.dt.i18n("stateRestore.creationModal.title",this.c.i18n.creationModal.title)+"</h2></div>"),dtContainer:f(this.s.dt.table().container()),duplicateError:f('<span class="'+this.classes.modalError+'">'+this.s.dt.i18n("stateRestore.duplicateError",this.c.i18n.duplicateError)+"</span>"),emptyError:f('<span class="'+this.classes.modalError+'">'+this.s.dt.i18n("stateRestore.emptyError",this.c.i18n.emptyError)+"</span>"),lengthToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.lengthToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.length",this.c.i18n.creationModal.length)+"</label></div>"),nameInputRow:f('<div class="'+this.classes.formRow+'"><label class="'+this.classes.nameLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.name",this.c.i18n.creationModal.name)+'</label><input class="'+this.classes.nameInput+'" type="text"></div>'),orderToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.orderToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.order",this.c.i18n.creationModal.order)+"</label></div>"),pagingToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.pagingToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.paging",this.c.i18n.creationModal.paging)+"</label></div>"),removeContents:f('<div class="'+this.classes.confirmationText+'"><span></span></div>'),removeTitle:f('<div class="'+this.classes.creationText+'"><h2 class="'+this.classes.creationTitle+'">'+this.s.dt.i18n("stateRestore.removeTitle",this.c.i18n.removeTitle)+"</h2></div>"),scrollerToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.scrollerToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.scroller",this.c.i18n.creationModal.scroller)+"</label></div>"),searchBuilderToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.searchBuilderToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.searchBuilder",this.c.i18n.creationModal.searchBuilder)+"</label></div>"),searchPanesToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.searchPanesToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.searchPanes",this.c.i18n.creationModal.searchPanes)+"</label></div>"),searchToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.searchToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.search",this.c.i18n.creationModal.search)+"</label></div>"),selectToggle:f('<div class="'+this.classes.formRow+" "+this.classes.checkRow+'"><input type="checkbox" class="'+this.classes.selectToggle+" "+this.classes.checkBox+'" checked><label class="'+this.classes.checkLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.select",this.c.i18n.creationModal.select)+"</label></div>"),toggleLabel:f('<label class="'+this.classes.nameLabel+" "+this.classes.toggleLabel+'">'+this.s.dt.i18n("stateRestore.creationModal.toggleLabel",this.c.i18n.creationModal.toggleLabel)+"</label>")},(e.settings()[0]._stateRestore=this)._searchForStates(),this._addPreDefined(this.c.preDefined),a={action:"load"},"function"==typeof this.c.ajax?s=function(){"function"==typeof o.c.ajax&&o.c.ajax.call(o.s.dt,a,function(e){return o._addPreDefined(e)})}:"string"==typeof this.c.ajax&&(s=function(){f.ajax({data:a,success:function(e){o._addPreDefined(e)},type:"POST",url:o.c.ajax})}),"function"==typeof s&&(this.s.dt.settings()[0]._bInitComplete?s():this.s.dt.one("preInit.dtsr",function(){s()})),this.s.dt.on("destroy.dtsr",function(){o.destroy()}),this.s.dt.on("draw.dtsr buttons-action.dtsr",function(){return o.findActive()}),this}function o(e,t){l(e,new c.StateRestoreCollection(e,t.config))}function l(e,t){var s=e.stateRestore.states(),o=e.button("SaveStateRestore:name"),a=[];if(o[0])for(var i=o.index().split("-"),a=o[0].inst.c.buttons,n=0;n<i.length;n++){if(!a[i[n]].buttons){a=[];break}a=a[i[n]].buttons}for(var r=e.settings()[0]._stateRestore.c,n=0;n<a.length;n++)"stateRestore"===a[n].extend&&(a.splice(n,1),n--);if(r._createInSaved&&a.push("createState"),s===k||0===s.length)a.push('<span class="'+t.classes.emptyStates+'">'+e.i18n("stateRestore.emptyStates",t.c.i18n.emptyStates)+"</span>");else for(var c=0,l=s;c<l.length;c++){var d=l[c],h=Object.assign([],r.splitSecondaries);h.includes("updateState")&&!r.save&&h.splice(h.indexOf("updateState"),1),!h.includes("renameState")||r.save&&r.rename||h.splice(h.indexOf("renameState"),1),h.includes("removeState")&&!r.remove&&h.splice(h.indexOf("removeState"),1),0<h.length&&!h.includes("<h3>"+d.s.identifier+"</h3>")&&h.unshift("<h3>"+d.s.identifier+"</h3>"),a.push({_stateRestore:d,attr:{title:d.s.identifier},config:{split:h},extend:"stateRestore",text:d.s.identifier})}e.button("SaveStateRestore:name").collectionRebuild(a);for(var u=0,m=e.buttons();u<m.length;u++){var g=m[u];R(g.node).hasClass("dtsr-removeAllStates")&&(0===s.length?e.button(g.node).disable():e.button(g.node).enable())}}return n.prototype.remove=function(e){var t,s,o,a,i=this;return void 0===e&&(e=!1),!!this.c.remove&&(o={action:"remove",stateRestore:((t={})[this.s.identifier]=this.s.savedState,t)},a=function(){i.dom.confirmation.trigger("dtsr-remove"),u(i.s.dt.table().node()).trigger("stateRestore-change"),i.dom.background.click(),i.dom.confirmation.remove(),u(g).unbind("keyup",function(e){return i._keyupFunction(e)}),i.dom.confirmationButton.off("click")},this.c.ajax?"string"==typeof this.c.ajax&&this.s.dt.settings()[0]._bInitComplete?s=function(){return u.ajax({data:o,success:a,type:"POST",url:i.c.ajax}),!0}:"function"==typeof this.c.ajax&&(s=function(){return"function"==typeof i.c.ajax&&i.c.ajax.call(i.s.dt,o,a),!0}):s=function(){try{localStorage.removeItem("DataTables_stateRestore_"+i.s.identifier+"_"+location.pathname+(i.s.tableId?"_"+i.s.tableId:"")),a()}catch(e){return i.dom.confirmation.children("."+i.classes.modalError).remove(),i.dom.confirmation.append(i.dom.removeError),"remove"}return!0},e?(this.dom.confirmation.appendTo(this.dom.dtContainer),u(this.s.dt.table().node()).trigger("dtsr-modal-inserted"),s(),this.dom.confirmation.remove()):this._newModal(this.dom.removeTitle,this.s.dt.i18n("stateRestore.removeSubmit",this.c.i18n.removeSubmit),s,this.dom.removeContents),!0)},n.prototype.compare=function(e){if(this.c.saveState.order||(e.order=k),this.c.saveState.search||(e.search=k),this.c.saveState.columns&&e.columns)for(var t=0,s=e.columns.length;t<s;t++)"boolean"==typeof this.c.saveState.columns||this.c.saveState.columns.visible||(e.columns[t].visible=k),"boolean"==typeof this.c.saveState.columns||this.c.saveState.columns.search||(e.columns[t].search=k);else this.c.saveState.columns||(e.columns=k);this.c.saveState.paging||(e.page=k),this.c.saveState.searchBuilder||(e.searchBuilder=k),this.c.saveState.searchPanes||(e.searchPanes=k),this.c.saveState.select||(e.select=k),this.c.saveState.colReorder||(e.ColReorder=k),this.c.saveState.scroller||(e.scroller=k,m.Scroller!==k&&(e.start=0)),this.c.saveState.paging||(e.start=0),this.c.saveState.length||(e.length=k),delete e.time;var o=this.s.savedState;return delete o.time,delete o.c,delete o.stateRestore,this._deepCompare(e,o)},n.prototype.destroy=function(){Object.values(this.dom).forEach(function(e){return e.off().remove()})},n.prototype.load=function(){var o=this,a=this.s.savedState,e=this.s.dt.settings()[0];return a.time=+new Date,e.oLoadedState=u.extend(!0,{},a),u("div.dt-button-background").click(),u.fn.dataTable.ext.oApi._fnImplementState(e,a,function(){o.s.dt.one("preDraw",function(e,s){setTimeout(function(){var e=s._iDisplayStart/s._iDisplayLength,t=a.start/a.length;0<=e&&0<=t&&e!=t&&o.s.dt.page(t).draw(!1)},50)}),o.s.dt.draw(!1)}),a},n.prototype.rename=function(s,o){var a=this;if(void 0===s&&(s=null),this.c.rename){var e=function(){if(null===s){var e=u("input."+a.classes.input.replace(/ /g,".")).val();if(0===e.length)return a.dom.confirmation.children("."+a.classes.modalError).remove(),a.dom.confirmation.append(a.dom.emptyError),"empty";if(o.includes(e))return a.dom.confirmation.children("."+a.classes.modalError).remove(),a.dom.confirmation.append(a.dom.duplicateError),"duplicate";s=e}function t(){a.s.identifier=s,a.save(a.s.savedState,function(){return null},!1),a.dom.removeContents=u('<div class="'+a.classes.confirmationText+'"><span>'+a.s.dt.i18n("stateRestore.removeConfirm",a.c.i18n.removeConfirm).replace(/%s/g,a.s.identifier)+"</span></div>"),a.dom.confirmation.trigger("dtsr-rename"),a.dom.background.click(),a.dom.confirmation.remove(),u(g).unbind("keyup",function(e){return a._keyupFunction(e)}),a.dom.confirmationButton.off("click")}e={action:"rename",stateRestore:((e={})[a.s.identifier]=s,e)};if(a.c.ajax)"string"==typeof a.c.ajax&&a.s.dt.settings()[0]._bInitComplete?u.ajax({data:e,success:t,type:"POST",url:a.c.ajax}):"function"==typeof a.c.ajax&&a.c.ajax.call(a.s.dt,e,t);else try{localStorage.removeItem("DataTables_stateRestore_"+a.s.identifier+"_"+location.pathname+(a.s.tableId?"_"+a.s.tableId:"")),t()}catch(e){return a.dom.confirmation.children("."+a.classes.modalError).remove(),a.dom.confirmation.append(a.dom.removeError),!1}return!0};if(null!==s){if(o.includes(s))throw new Error(this.s.dt.i18n("stateRestore.duplicateError",this.c.i18n.duplicateError));if(0===s.length)throw new Error(this.s.dt.i18n("stateRestore.emptyError",this.c.i18n.emptyError));this.dom.confirmation.appendTo(this.dom.dtContainer),u(this.s.dt.table().node()).trigger("dtsr-modal-inserted"),e(),this.dom.confirmation.remove()}else this.dom.renameInput.val(this.s.identifier),this.dom.renameContents.append(this.dom.renameInput),this._newModal(this.dom.renameTitle,this.s.dt.i18n("stateRestore.renameButton",this.c.i18n.renameButton),e,this.dom.renameContents)}},n.prototype.save=function(e,t,s){var o,a,i,n=this;if(void 0===s&&(s=!0),this.c.save){if(this.s.dt.state.save(),e===k)o=this.s.dt.state();else{if("object"!=typeof e)return;o=e}if(o.stateRestore?(o.stateRestore.isPreDefined=this.s.isPreDefined,o.stateRestore.state=this.s.identifier,o.stateRestore.tableId=this.s.tableId):o.stateRestore={isPreDefined:this.s.isPreDefined,state:this.s.identifier,tableId:this.s.tableId},this.s.savedState=o,this.c.saveState.order||(this.s.savedState.order=k),this.c.saveState.search||(this.s.savedState.search=k),this.c.saveState.columns&&this.s.savedState.columns)for(var r=0,c=this.s.savedState.columns.length;r<c;r++)"boolean"==typeof this.c.saveState.columns||this.c.saveState.columns.visible||(this.s.savedState.columns[r].visible=k),"boolean"==typeof this.c.saveState.columns||this.c.saveState.columns.search||(this.s.savedState.columns[r].search=k);else this.c.saveState.columns||(this.s.savedState.columns=k);if(this.c.saveState.searchBuilder||(this.s.savedState.searchBuilder=k),this.c.saveState.searchPanes||(this.s.savedState.searchPanes=k),this.c.saveState.select||(this.s.savedState.select=k),this.c.saveState.colReorder||(this.s.savedState.ColReorder=k),this.c.saveState.scroller||(this.s.savedState.scroller=k,m.Scroller!==k&&(this.s.savedState.start=0)),this.c.saveState.paging||(this.s.savedState.start=0),this.c.saveState.length||(this.s.savedState.length=k),this.s.savedState.c=this.c,this.s.savedState.c.splitSecondaries.length)for(var l=0,d=this.s.savedState.c.splitSecondaries;l<d.length;l++){var h=d[l];h.parent&&(h.parent=k)}this.s.isPreDefined?t&&t.call(this):(a={action:"save",stateRestore:((e={})[this.s.identifier]=this.s.savedState,e)},i=function(){t&&t.call(n),n.dom.confirmation.trigger("dtsr-save"),u(n.s.dt.table().node()).trigger("stateRestore-change")},this.c.ajax?"string"==typeof this.c.ajax&&s?this.s.dt.settings()[0]._bInitComplete?u.ajax({data:a,success:i,type:"POST",url:this.c.ajax}):this.s.dt.one("init",function(){u.ajax({data:a,success:i,type:"POST",url:n.c.ajax})}):"function"==typeof this.c.ajax&&s&&this.c.ajax.call(this.s.dt,a,i):(localStorage.setItem("DataTables_stateRestore_"+this.s.identifier+"_"+location.pathname+(this.s.tableId?"_"+this.s.tableId:""),JSON.stringify(this.s.savedState)),i()))}else t&&t.call(this)},n.prototype._deepCompare=function(e,t){var s,o=[e,t],a=[Object.keys(e).sort(),Object.keys(t).sort()];a[0].includes("scroller")&&(s=a[0].indexOf("start"))&&a[0].splice(s,1),a[1].includes("scroller")&&(s=a[1].indexOf("start"))&&a[1].splice(s,1);for(var i=0;i<a[0].length;i++)0!==a[0][i].indexOf("_")&&"baseRowTop"!==a[0][i]&&"baseScrollTop"!==a[0][i]&&"scrollTop"!==a[0][i]&&(this.c.saveState.paging||"page"!==a[0][i])||(a[0].splice(i,1),i--);for(i=0;i<a[1].length;i++)0!==a[1][i].indexOf("_")&&"baseRowTop"!==a[1][i]&&"baseScrollTop"!==a[1][i]&&"scrollTop"!==a[1][i]&&(this.c.saveState.paging||"page"!==a[0][i])||(a[1].splice(i,1),i--);if(0===a[0].length&&0<a[1].length||0===a[1].length&&0<a[0].length)return!1;for(i=0;i<a[0].length;i++)a[1].includes(a[0][i])||(a[0].splice(i,1),i--);for(i=0;i<a[1].length;i++)a[0].includes(a[1][i])||(a[1].splice(i,1),i--);for(i=0;i<a[0].length;i++){if(a[0][i]!==a[1][i]||typeof o[0][a[0][i]]!=typeof o[1][a[1][i]])return!1;if("object"==typeof o[0][a[0][i]]){if(!this._deepCompare(o[0][a[0][i]],o[1][a[1][i]]))return!1}else if("number"==typeof o[0][a[0][i]]&&"number"==typeof o[1][a[1][i]]){if(Math.round(o[0][a[0][i]])!==Math.round(o[1][a[1][i]]))return!1}else if(o[0][a[0][i]]!==o[1][a[1][i]])return!1}return!0},n.prototype._keyupFunction=function(e){"Enter"===e.key?this.dom.confirmationButton.click():"Escape"===e.key&&u("div."+this.classes.background.replace(/ /g,".")).click()},n.prototype._newModal=function(e,t,s,o){var a=this,e=(this.dom.background.appendTo(this.dom.dtContainer),this.dom.confirmationTitleRow.empty().append(e),this.dom.confirmationButton.html(t),this.dom.confirmation.empty().append(this.dom.confirmationTitleRow).append(o).append(u('<div class="'+this.classes.confirmationButtons+'"></div>').append(this.dom.confirmationButton)).appendTo(this.dom.dtContainer),u(this.s.dt.table().node()).trigger("dtsr-modal-inserted"),o.children("input")),i=((0<e.length?u(e[0]):this.dom.confirmationButton).focus(),u("div."+this.classes.background.replace(/ /g,".")));this.c.modalCloseButton&&(this.dom.confirmation.append(this.dom.closeButton),this.dom.closeButton.on("click",function(){return i.click()})),this.dom.confirmationButton.on("click",function(){return s()}),this.dom.confirmation.on("click",function(e){e.stopPropagation()}),i.one("click",function(){a.dom.background.remove(),a.dom.confirmation.remove(),u(g).unbind("keyup",function(e){return a._keyupFunction(e)})}),u(g).on("keyup",function(e){return a._keyupFunction(e)})},n.prototype._searchToHung=function(e){return{bCaseInsensitive:e.caseInsensitive,bRegex:e.regex,bSmart:e.smart,sSearch:e.search}},n.version="1.2.2",n.classes={background:"dtsr-background",closeButton:"dtsr-popover-close",confirmation:"dtsr-confirmation",confirmationButton:"dtsr-confirmation-button",confirmationButtons:"dtsr-confirmation-buttons",confirmationMessage:"dtsr-confirmation-message dtsr-name-label",confirmationText:"dtsr-confirmation-text",confirmationTitle:"dtsr-confirmation-title",confirmationTitleRow:"dtsr-confirmation-title-row",dtButton:"dt-button",input:"dtsr-input",modalError:"dtsr-modal-error",renameModal:"dtsr-rename-modal"},n.defaults={_createInSaved:!1,ajax:!1,create:!0,creationModal:!1,i18n:{creationModal:{button:"Create",colReorder:"Column Order:",columns:{search:"Column Search:",visible:"Column Visibility:"},length:"Page Length:",name:"Name:",order:"Sorting:",paging:"Paging:",scroller:"Scroll Position:",search:"Search:",searchBuilder:"SearchBuilder:",searchPanes:"SearchPanes:",select:"Select:",title:"Create New State",toggleLabel:"Includes:"},duplicateError:"A state with this name already exists.",emptyError:"Name cannot be empty.",emptyStates:"No saved states",removeConfirm:"Are you sure you want to remove %s?",removeError:"Failed to remove state.",removeJoiner:" and ",removeSubmit:"Remove",removeTitle:"Remove State",renameButton:"Rename",renameLabel:"New Name for %s:",renameTitle:"Rename State"},modalCloseButton:!0,remove:!0,rename:!0,save:!0,saveState:{colReorder:!0,columns:{search:!0,visible:!0},length:!0,order:!0,paging:!0,scroller:!0,search:!0,searchBuilder:!0,searchPanes:!0,select:!0},splitSecondaries:["updateState","renameState","removeState"],toggle:{colReorder:!1,columns:{search:!1,visible:!1},length:!1,order:!1,paging:!1,scroller:!1,search:!1,searchBuilder:!1,searchPanes:!1,select:!1}},p=n,r.prototype.addState=function(e,l,d){var h=this;if(this.c.create&&this.c.save){var t=function(e,t){if(0===e.length)return"empty";if(l.includes(e))return"duplicate";h.s.dt.state.save();var s=h,o=h.s.dt.state();if(o.stateRestore={isPredefined:!1,state:e,tableId:h.s.dt.table().node().id},t.saveState){for(var a=h.c.saveState,i=0,n=Object.keys(t.saveState);i<n.length;i++){var r=n[i];t.saveState[r]||(a[r]=!1)}h.c.saveState=a}var c=new p(h.s.dt.settings()[0],f.extend(!0,{},h.c,d),e,o,!1,function(){s.s.states.push(this),s._collectionRebuild()});return f(h.s.dt.table().node()).on("dtsr-modal-inserted",function(){c.dom.confirmation.one("dtsr-remove",function(){return h._removeCallback(c.s.identifier)}),c.dom.confirmation.one("dtsr-rename",function(){return h._collectionRebuild()}),c.dom.confirmation.one("dtsr-save",function(){return h._collectionRebuild()})}),!0};if(null!==this.getState(e))throw new Error(this.s.dt.i18n("stateRestore.duplicateError",this.c.i18n.duplicateError));if(this.c.creationModal||d!==k&&d.creationModal)this._creationModal(t,e,d);else{t=t(e,{});if("empty"===t)throw new Error(this.s.dt.i18n("stateRestore.emptyError",this.c.i18n.emptyError));if("duplicate"===t)throw new Error(this.s.dt.i18n("stateRestore.duplicateError",this.c.i18n.duplicateError))}}},r.prototype.removeAll=function(e){var t,s;0!==this.s.states.length&&(s=(t=this.s.states.map(function(e){return e.s.identifier}))[0],1<t.length&&(s=t.slice(0,-1).join(", ")+this.s.dt.i18n("stateRestore.removeJoiner",this.c.i18n.removeJoiner)+t.slice(-1)),f(this.dom.removeContents.children("span")).html(this.s.dt.i18n("stateRestore.removeConfirm",this.c.i18n.removeConfirm).replace(/%s/g,s)),this._newModal(this.dom.removeTitle,this.s.dt.i18n("stateRestore.removeSubmit",this.c.i18n.removeSubmit),e,this.dom.removeContents))},r.prototype.destroy=function(){for(var e=0,t=this.s.states;e<t.length;e++)t[e].destroy();Object.values(this.dom).forEach(function(e){e.off(),e.remove()}),this.s.states=[],this.s.dt.off(".dtsr"),f(this.s.dt.table().node()).off(".dtsr")},r.prototype.findActive=function(){this.s.dt.state.save();for(var e=this.s.dt.state(),t=f("button."+f.fn.DataTable.Buttons.defaults.dom.button.className.replace(/ /g,".")),s=0,o=t=0===t.length?f("a."+f.fn.DataTable.Buttons.defaults.dom.button.className.replace(/ /g,".")):t;s<o.length;s++){var a=o[s];this.s.dt.button(f(a).parent()[0]).active(!1)}for(var i=[],n=0,r=this.s.states;n<r.length;n++){var c=r[n];if(c.compare(e)){i.push({data:c.s.savedState,name:c.s.identifier});for(var l=0,d=t;l<d.length;l++){a=d[l];if(f(a).text()===c.s.identifier){this.s.dt.button(f(a).parent()[0]).active(!0);break}}}}return i},r.prototype.getState=function(e){for(var t=0,s=this.s.states;t<s.length;t++){var o=s[t];if(o.s.identifier===e)return o}return null},r.prototype.getStates=function(e){if(e===k)return this.s.states;for(var t=[],s=0,o=e;s<o.length;s++){for(var a=o[s],i=!1,n=0,r=this.s.states;n<r.length;n++){var c=r[n];if(a===c.s.identifier){t.push(c),i=!0;break}}i||t.push(k)}return t},r.prototype._addPreDefined=function(i){for(var n=this,e=Object.keys(i).sort(function(e,t){return t<e?1:e<t?-1:0}),r=this,t=0,s=e;t<s.length;t++)!function(e){for(var t=0;t<r.s.states.length;t++)r.s.states[t].s.identifier===e&&r.s.states.splice(t,1);var s=r,o=i[e],a=new p(r.s.dt,f.extend(!0,{},r.c,o.c!==k?{saveState:o.c.saveState}:k,!0),e,o,!0,function(){s.s.states.push(this),s._collectionRebuild()});a.s.savedState=o,f(r.s.dt.table().node()).on("dtsr-modal-inserted",function(){a.dom.confirmation.one("dtsr-remove",function(){return n._removeCallback(a.s.identifier)}),a.dom.confirmation.one("dtsr-rename",function(){return n._collectionRebuild()}),a.dom.confirmation.one("dtsr-save",function(){return n._collectionRebuild()})})}(s[t])},r.prototype._collectionRebuild=function(){var e=this.s.dt.button("SaveStateRestore:name"),t=[];if(e[0])for(var s=e.index().split("-"),t=e[0].inst.c.buttons,o=0;o<s.length;o++){if(!t[s[o]].buttons){t=[];break}t=t[s[o]].buttons}for(o=0;o<t.length;o++)"stateRestore"===t[o].extend&&(t.splice(o,1),o--);this.c._createInSaved&&t.push("createState");var a='<span class="'+this.classes.emptyStates+'">'+this.s.dt.i18n("stateRestore.emptyStates",this.c.i18n.emptyStates)+"</span>";if(0===this.s.states.length)t.includes(a)||t.push(a);else{for(;t.includes(a);)t.splice(t.indexOf(a),1);this.s.states=this.s.states.sort(function(e,t){e=e.s.identifier,t=t.s.identifier;return t<e?1:e<t?-1:0});for(var i=0,n=this.s.states;i<n.length;i++){var r=n[i],c=Object.assign([],this.c.splitSecondaries);!c.includes("updateState")||this.c.save&&r.c.save||c.splice(c.indexOf("updateState"),1),!c.includes("renameState")||this.c.save&&r.c.save&&this.c.rename&&r.c.rename||c.splice(c.indexOf("renameState"),1),!c.includes("removeState")||this.c.remove&&r.c.remove||c.splice(c.indexOf("removeState"),1),0<c.length&&!c.includes("<h3>"+r.s.identifier+"</h3>")&&c.unshift("<h3>"+r.s.identifier+"</h3>"),t.push({_stateRestore:r,attr:{title:r.s.identifier},config:{split:c},extend:"stateRestore",text:r.s.identifier})}}e.collectionRebuild(t);for(var l=0,d=this.s.dt.buttons();l<d.length;l++){var h=d[l];f(h.node).hasClass("dtsr-removeAllStates")&&(0===this.s.states.length?this.s.dt.button(h.node).disable():this.s.dt.button(h.node).enable())}},r.prototype._creationModal=function(t,e,s){var o=this,e=(this.dom.creation.empty(),this.dom.creationForm.empty(),this.dom.nameInputRow.children("input").val(e),this.dom.creationForm.append(this.dom.nameInputRow),this.s.dt.settings()[0].oInit),a=[],i=s!==k&&s.toggle!==k;((!i||s.toggle.order===k)&&this.c.toggle.order||i&&s.toggle.order)&&this.c.saveState.order&&(e.ordering===k||e.ordering)&&a.push(this.dom.orderToggle),((!i||s.toggle.search===k)&&this.c.toggle.search||i&&s.toggle.search)&&this.c.saveState.search&&(e.searching===k||e.searching)&&a.push(this.dom.searchToggle),((!i||s.toggle.paging===k)&&this.c.toggle.paging||i&&s.toggle.paging)&&this.c.saveState.paging&&(e.paging===k||e.paging)&&a.push(this.dom.pagingToggle),((!i||s.toggle.length===k)&&this.c.toggle.length||i&&s.toggle.length)&&this.c.saveState.length&&(e.length===k||e.length)&&a.push(this.dom.lengthToggle),this.s.hasColReorder&&((!i||s.toggle.colReorder===k)&&this.c.toggle.colReorder||i&&s.toggle.colReorder)&&this.c.saveState.colReorder&&a.push(this.dom.colReorderToggle),this.s.hasScroller&&((!i||s.toggle.scroller===k)&&this.c.toggle.scroller||i&&s.toggle.scroller)&&this.c.saveState.scroller&&a.push(this.dom.scrollerToggle),this.s.hasSearchBuilder&&((!i||s.toggle.searchBuilder===k)&&this.c.toggle.searchBuilder||i&&s.toggle.searchBuilder)&&this.c.saveState.searchBuilder&&a.push(this.dom.searchBuilderToggle),this.s.hasSearchPanes&&((!i||s.toggle.searchPanes===k)&&this.c.toggle.searchPanes||i&&s.toggle.searchPanes)&&this.c.saveState.searchPanes&&a.push(this.dom.searchPanesToggle),this.s.hasSelect&&((!i||s.toggle.select===k)&&this.c.toggle.select||i&&s.toggle.select)&&this.c.saveState.select&&a.push(this.dom.selectToggle),"boolean"==typeof this.c.toggle.columns&&((!i||s.toggle.order===k)&&this.c.toggle.columns||i&&s.toggle.order)&&this.c.saveState.columns?(a.push(this.dom.columnsSearchToggle),a.push(this.dom.columnsVisibleToggle)):(i&&s.toggle.columns!==k||"boolean"==typeof this.c.toggle.columns)&&"boolean"==typeof s.toggle.order||("boolean"!=typeof this.c.saveState.columns&&this.c.saveState.columns?((i&&s.toggle.columns!==k&&"boolean"!=typeof s.toggle.columns&&s.toggle.columns.search||(!i||s.toggle.columns===k||"boolean"!=typeof s.toggle.columns&&s.toggle.columns.search===k)&&"boolean"!=typeof this.c.toggle.columns&&this.c.toggle.columns.search)&&this.c.saveState.columns.search&&a.push(this.dom.columnsSearchToggle),(i&&s.toggle.columns!==k&&"boolean"!=typeof s.toggle.columns&&s.toggle.columns.visible||(!i||s.toggle.columns===k||"boolean"!=typeof s.toggle.columns&&s.toggle.columns.visible===k)&&"boolean"!=typeof this.c.toggle.columns&&this.c.toggle.columns.visible)&&this.c.saveState.columns.visible&&a.push(this.dom.columnsVisibleToggle)):this.c.saveState.columns&&(a.push(this.dom.columnsSearchToggle),a.push(this.dom.columnsVisibleToggle))),a.sort(function(e,t){e=e.children("label.dtsr-check-label")[0].innerHTML,t=t.children("label.dtsr-check-label")[0].innerHTML;return e<t?-1:t<e?1:0});for(var n=0,r=a;n<r.length;n++){var c=r[n];this.dom.creationForm.append(c)}f(this.dom.creationForm.children("div."+this.classes.checkRow)[0]).prepend(this.dom.toggleLabel),this.dom.background.appendTo(this.dom.dtContainer),this.dom.creation.append(this.dom.creationTitle).append(this.dom.creationForm).append(this.dom.createButtonRow).appendTo(this.dom.dtContainer),f(this.s.dt.table().node()).trigger("dtsr-modal-inserted");for(var l=0,d=a;l<d.length;l++)!function(e){f(e.children("label:last-child")).on("click",function(){e.children("input").prop("checked",!e.children("input").prop("checked"))})}(c=d[l]);function h(e){"Enter"===e.key?u.click():"Escape"===e.key&&m.click()}var u=f("button."+this.classes.creationButton.replace(/ /g,".")),e=this.dom.creationForm.find("input"),m=((0<e.length?f(e[0]):u).focus(),f("div."+this.classes.background.replace(/ /g,".")));this.c.modalCloseButton&&(this.dom.creation.append(this.dom.closeButton),this.dom.closeButton.on("click",function(){return m.click()})),u.on("click",function(){var e={colReorder:o.dom.colReorderToggle.children("input").is(":checked"),columns:{search:o.dom.columnsSearchToggle.children("input").is(":checked"),visible:o.dom.columnsVisibleToggle.children("input").is(":checked")},length:o.dom.lengthToggle.children("input").is(":checked"),order:o.dom.orderToggle.children("input").is(":checked"),paging:o.dom.pagingToggle.children("input").is(":checked"),scroller:o.dom.scrollerToggle.children("input").is(":checked"),search:o.dom.searchToggle.children("input").is(":checked"),searchBuilder:o.dom.searchBuilderToggle.children("input").is(":checked"),searchPanes:o.dom.searchPanesToggle.children("input").is(":checked"),select:o.dom.selectToggle.children("input").is(":checked")},e=t(f("input."+o.classes.nameInput.replace(/ /g,".")).val(),{saveState:e});!0===e?(o.dom.background.remove(),o.dom.creation.remove(),f(g).unbind("keyup",h)):(o.dom.creation.children("."+o.classes.modalError).remove(),o.dom.creation.append(o.dom[e+"Error"]))}),m.one("click",function(){o.dom.background.remove(),o.dom.creation.remove(),f(g).unbind("keyup",h),o._collectionRebuild()}),f(g).on("keyup",h),this.s.dt.state.save()},r.prototype._removeCallback=function(e){for(var t=0;t<this.s.states.length;t++)this.s.states[t].s.identifier===e&&(this.s.states.splice(t,1),t--);return this._collectionRebuild(),!0},r.prototype._newModal=function(e,t,s,o){function a(e){"Enter"===e.key?n.click():"Escape"===e.key&&r.click()}var i=this,n=(this.dom.background.appendTo(this.dom.dtContainer),this.dom.confirmationTitleRow.empty().append(e),f('<button class="'+this.classes.confirmationButton+" "+this.classes.dtButton+'">'+t+"</button>")),e=(this.dom.confirmation.empty().append(this.dom.confirmationTitleRow).append(o).append(f('<div class="'+this.classes.confirmationButtons+'"></div>').append(n)).appendTo(this.dom.dtContainer),f(this.s.dt.table().node()).trigger("dtsr-modal-inserted"),o.children("input")),r=((0<e.length?f(e[0]):n).focus(),f("div."+this.classes.background.replace(/ /g,".")));n.on("click",function(){var e=s(!0);!0===e?(i.dom.background.remove(),i.dom.confirmation.remove(),f(g).unbind("keyup",a),n.off("click")):(i.dom.confirmation.children("."+i.classes.modalError).remove(),i.dom.confirmation.append(i.dom[e+"Error"]))}),this.dom.confirmation.on("click",function(e){e.stopPropagation()}),r.one("click",function(){i.dom.background.remove(),i.dom.confirmation.remove(),f(g).unbind("keyup",a)}),f(g).on("keyup",a)},r.prototype._searchForStates=function(){for(var a=this,e=Object.keys(localStorage),i=this,t=0,s=e;t<s.length;t++)!function(e){if(e.match(new RegExp("^DataTables_stateRestore_.*_"+location.pathname.replace(/\//g,"/")+"$"))||e.match(new RegExp("^DataTables_stateRestore_.*_"+location.pathname.replace(/\//g,"/")+"_"+i.s.dt.table().node().id+"$"))){var t=JSON.parse(localStorage.getItem(e));if(t.stateRestore.isPreDefined||t.stateRestore.tableId&&t.stateRestore.tableId!==i.s.dt.table().node().id)return;var s=i,o=new p(i.s.dt,f.extend(!0,{},i.c,{saveState:t.c.saveState}),t.stateRestore.state,t,!1,function(){this.s.savedState=t,s.s.states.push(this),s._collectionRebuild()});f(i.s.dt.table().node()).on("dtsr-modal-inserted",function(){o.dom.confirmation.one("dtsr-remove",function(){return a._removeCallback(o.s.identifier)}),o.dom.confirmation.one("dtsr-rename",function(){return a._collectionRebuild()}),o.dom.confirmation.one("dtsr-save",function(){return a._collectionRebuild()})})}}(s[t])},r.version="1.0.0",r.classes={background:"dtsr-background",checkBox:"dtsr-check-box",checkLabel:"dtsr-check-label",checkRow:"dtsr-check-row",closeButton:"dtsr-popover-close",colReorderToggle:"dtsr-colReorder-toggle",columnsSearchToggle:"dtsr-columns-search-toggle",columnsVisibleToggle:"dtsr-columns-visible-toggle",confirmation:"dtsr-confirmation",confirmationButton:"dtsr-confirmation-button",confirmationButtons:"dtsr-confirmation-buttons",confirmationMessage:"dtsr-confirmation-message dtsr-name-label",confirmationText:"dtsr-confirmation-text",confirmationTitle:"dtsr-confirmation-title",confirmationTitleRow:"dtsr-confirmation-title-row",creation:"dtsr-creation",creationButton:"dtsr-creation-button",creationForm:"dtsr-creation-form",creationText:"dtsr-creation-text",creationTitle:"dtsr-creation-title",dtButton:"dt-button",emptyStates:"dtsr-emptyStates",formRow:"dtsr-form-row",leftSide:"dtsr-left",lengthToggle:"dtsr-length-toggle",modalError:"dtsr-modal-error",modalFoot:"dtsr-modal-foot",nameInput:"dtsr-name-input",nameLabel:"dtsr-name-label",orderToggle:"dtsr-order-toggle",pagingToggle:"dtsr-paging-toggle",rightSide:"dtsr-right",scrollerToggle:"dtsr-scroller-toggle",searchBuilderToggle:"dtsr-searchBuilder-toggle",searchPanesToggle:"dtsr-searchPanes-toggle",searchToggle:"dtsr-search-toggle",selectToggle:"dtsr-select-toggle",toggleLabel:"dtsr-toggle-title"},r.defaults={_createInSaved:!1,ajax:!1,create:!0,creationModal:!1,i18n:{creationModal:{button:"Create",colReorder:"Column Order",columns:{search:"Column Search",visible:"Column Visibility"},length:"Page Length",name:"Name:",order:"Sorting",paging:"Paging",scroller:"Scroll Position",search:"Search",searchBuilder:"SearchBuilder",searchPanes:"SearchPanes",select:"Select",title:"Create New State",toggleLabel:"Includes:"},duplicateError:"A state with this name already exists.",emptyError:"Name cannot be empty.",emptyStates:"No saved states",removeConfirm:"Are you sure you want to remove %s?",removeError:"Failed to remove state.",removeJoiner:" and ",removeSubmit:"Remove",removeTitle:"Remove State",renameButton:"Rename",renameLabel:"New Name for %s:",renameTitle:"Rename State"},modalCloseButton:!0,preDefined:{},remove:!0,rename:!0,save:!0,saveState:{colReorder:!0,columns:{search:!0,visible:!0},length:!0,order:!0,paging:!0,scroller:!0,search:!0,searchBuilder:!0,searchPanes:!0,select:!0},splitSecondaries:["updateState","renameState","removeState"],toggle:{colReorder:!1,columns:{search:!1,visible:!1},length:!1,order:!1,paging:!1,scroller:!1,search:!1,searchBuilder:!1,searchPanes:!1,select:!1}},s=r,m=(u=R).fn.dataTable,i=(f=R).fn.dataTable,R.fn.dataTable.StateRestore=p,R.fn.DataTable.StateRestore=p,R.fn.dataTable.StateRestoreCollection=s,R.fn.DataTable.StateRestoreCollection=s,(t=c.Api.register)("stateRestore()",function(){return this}),t("stateRestore.state()",function(e){var t,s=this.context[0];return s._stateRestore||l(t=c.Api(s),new c.StateRestoreCollection(t,{})),this[0]=s._stateRestore.getState(e),this}),t("stateRestore.state.add()",function(e,t){var s,o=this.context[0];if(o._stateRestore||l(s=c.Api(o),new c.StateRestoreCollection(s,{})),!o._stateRestore.c.create)return this;if(o._stateRestore.addState){for(var a=[],i=0,n=o._stateRestore.s.states;i<n.length;i++){var r=n[i];a.push(r.s.identifier)}return o._stateRestore.addState(e,a,t),this}}),t("stateRestore.states()",function(e){var t,s=this.context[0];return s._stateRestore||l(t=c.Api(s),new c.StateRestoreCollection(t,{})),this.length=0,this.push.apply(this,s._stateRestore.getStates(e)),this}),t("stateRestore.state().save()",function(){var e=this[0];return e.c.save&&e.save(),this}),t("stateRestore.state().rename()",function(e){var t=this.context[0],s=this[0];if(s.c.save){for(var o=[],a=0,i=t._stateRestore.s.states;a<i.length;a++){var n=i[a];o.push(n.s.identifier)}s.rename(e,o)}return this}),t("stateRestore.state().load()",function(){return this[0].load(),this}),t("stateRestore.state().remove()",function(e){var t=this[0];return t.c.remove&&t.remove(e),this}),t("stateRestore.states().remove()",function(e){function t(e){for(var t=!0,s=a.toArray();0<s.length;){var o=s[0];if(o===k||!o.c.remove)break;o=o.remove(e);!0!==o?t=o:s.splice(0,1)}return t}var a=this;return this.context[0]._stateRestore&&this.context[0]._stateRestore.c.remove&&(e?t(e):this.context[0]._stateRestore.removeAll(t)),this}),t("stateRestore.activeStates()",function(){var e,t=this.context[0];return this.length=0,t._stateRestore||l(e=c.Api(t),new c.StateRestoreCollection(e,{})),t._stateRestore&&this.push.apply(this,t._stateRestore.findActive()),this}),c.ext.buttons.stateRestore={action:function(e,t,s,o){o._stateRestore.load(),s.blur()},config:{split:["updateState","renameState","removeState"]},text:function(e){return e.i18n("buttons.stateRestore","State %d",e.stateRestore.states()[0].length+1)}},c.ext.buttons.updateState={action:function(e,t,s,o){R("div.dt-button-background").click(),o.parent._stateRestore.save()},text:function(e){return e.i18n("buttons.updateState","Update")}},c.ext.buttons.savedStates={buttons:[],extend:"collection",init:function(e,t,s){e.on("stateRestore-change",function(){e.button(t).text(e.i18n("buttons.savedStates","Saved States",e.stateRestore.states().length))}),e.settings()[0]._stateRestore===k&&o(e,s)},name:"SaveStateRestore",text:function(e){return e.i18n("buttons.savedStates","Saved States",0)}},c.ext.buttons.savedStatesCreate={buttons:[],extend:"collection",init:function(e,t,s){e.on("stateRestore-change",function(){e.button(t).text(e.i18n("buttons.savedStates","Saved States",e.stateRestore.states().length))}),e.settings()[0]._stateRestore===k&&(s.config===k&&(s.config={}),s.config._createInSaved=!0,o(e,s))},name:"SaveStateRestore",text:function(e){return e.i18n("buttons.savedStates","Saved States",0)}},c.ext.buttons.createState={action:function(e,t,s,o){e.stopPropagation();var a=t.settings()[0]._stateRestore.c,e=t.settings()[0].oLanguage;if(a.create&&a.save){var i=t.stateRestore.states().toArray(),e=e.buttons!==k&&e.buttons.stateRestore!==k?e.buttons.stateRestore:"State ";if(e.indexOf("%d")===e.length-3)n=new RegExp(e.replace(/%d/g,""));else for(var e=e.split("%d"),n=[],r=0,c=e;r<c.length;r++){var l=c[r];n.push(new RegExp(l))}for(var d=function(e){if(Array.isArray(n)){a=e;for(var t=0,s=n;t<s.length;t++)var o=s[t],a=a.replace(o,"")}else a=e.replace(n,"");return isNaN(+a)||a.length===e?0:+a},e=i.map(function(e){return d(e.s.identifier)}).sort(function(e,t){return+e<+t?1:+t<+e?-1:0})[0],h=(t.stateRestore.state.add(t.i18n("buttons.stateRestore","State %d",e!==k?e+1:1),o.config),t.stateRestore.states().sort(function(e,t){e=+d(e.s.identifier),t=+d(t.s.identifier);return t<e?1:e<t?-1:0})),i=t.button("SaveStateRestore:name"),u=i[0]!==k&&i[0].inst.c.buttons[0].buttons!==k?i[0].inst.c.buttons[0].buttons:[],m=0;m<u.length;m++)"stateRestore"===u[m].extend&&(u.splice(m,1),m--);a._createInSaved&&(u.push("createState"),u.push(""));for(var g=0,f=h;g<f.length;g++){var p=f[g];(l=Object.assign([],a.splitSecondaries)).includes("updateState")&&!a.save&&l.splice(l.indexOf("updateState"),1),!l.includes("renameState")||a.save&&a.rename||l.splice(l.indexOf("renameState"),1),l.includes("removeState")&&!a.remove&&l.splice(l.indexOf("removeState"),1),0<l.length&&!l.includes("<h3>"+p.s.identifier+"</h3>")&&l.unshift("<h3>"+p.s.identifier+"</h3>"),u.push({_stateRestore:p,attr:{title:p.s.identifier},config:{split:l},extend:"stateRestore",text:p.s.identifier})}t.button("SaveStateRestore:name").collectionRebuild(u),s.blur();for(var v=0,b=t.buttons();v<b.length;v++){var S=b[v];R(S.node).hasClass("dtsr-removeAllStates")&&(0===h.length?t.button(S.node).disable():t.button(S.node).enable())}}},init:function(e,t,s){e.settings()[0]._stateRestore===k&&1<e.button("SaveStateRestore:name").length&&o(e,s)},text:function(e){return e.i18n("buttons.createState","Create State")}},c.ext.buttons.removeState={action:function(e,t,s,o){o.parent._stateRestore.remove(),s.blur()},text:function(e){return e.i18n("buttons.removeState","Remove")}},c.ext.buttons.removeAllStates={action:function(e,t,s){t.stateRestore.states().remove(!0),s.blur()},className:"dt-button dtsr-removeAllStates",init:function(e,t){e.settings()[0]._stateRestore&&0!==e.stateRestore.states().length||R(t).addClass("disabled")},text:function(e){return e.i18n("buttons.removeAllStates","Remove All States")}},c.ext.buttons.renameState={action:function(e,t,s,o){for(var a=[],i=0,n=t.settings()[0]._stateRestore.s.states;i<n.length;i++){var r=n[i];a.push(r.s.identifier)}o.parent._stateRestore.rename(k,a),s.blur()},text:function(e){return e.i18n("buttons.renameState","Rename")}},R(g).on("preInit.dt.dtsr",function(e,t){"dt"!==e.namespace||!t.oInit.stateRestore&&!c.defaults.stateRestore||t._stateRestore||(e=t,void 0===(t=null)&&(t=null),e=new c.Api(e),t=t||e.init().stateRestore||c.defaults.stateRestore,t=new s(e,t),l(e,t))}),c}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.js
new file mode 100644
index 0000000..36bd422
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.js
@@ -0,0 +1,71 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bs', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bs')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkBox: 'dtsr-check-box form-check-input',
+ creationButton: 'dtsr-creation-button btn btn-default',
+ creationForm: 'dtsr-creation-form modal-body',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-title',
+ nameInput: 'dtsr-name-input form-control'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ confirmationButton: 'dtsr-confirmation-button btn btn-default',
+ confirmationTitle: 'dtsr-confirmation title modal-header',
+ input: 'dtsr-input form-control'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.min.js
new file mode 100644
index 0000000..a6c489a
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-staterestore"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net-bs")(t,e),e.fn.dataTable.StateRestore||require("datatables.net-staterestore")(t,e)},"undefined"!=typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,0,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(t,e,n,o){"use strict";var r=t.fn.dataTable;return t.extend(!0,r.StateRestoreCollection.classes,{checkBox:"dtsr-check-box form-check-input",creationButton:"dtsr-creation-button btn btn-default",creationForm:"dtsr-creation-form modal-body",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-title",nameInput:"dtsr-name-input form-control"}),t.extend(!0,r.StateRestore.classes,{confirmationButton:"dtsr-confirmation-button btn btn-default",confirmationTitle:"dtsr-confirmation title modal-header",input:"dtsr-input form-control"}),r}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.js
new file mode 100644
index 0000000..b9f5a4f
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.js
@@ -0,0 +1,70 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bs4', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bs4')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkBox: 'dtsr-check-box form-check-input',
+ creationButton: 'dtsr-creation-button btn btn-secondary',
+ creationForm: 'dtsr-creation-form modal-body',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-title',
+ nameInput: 'dtsr-name-input form-control'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ confirmationButton: 'dtsr-confirmation-button btn btn-secondary',
+ input: 'dtsr-input form-control'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.min.js
new file mode 100644
index 0000000..e121544
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap4.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-staterestore"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net-bs4")(t,e),e.fn.dataTable.StateRestore||require("datatables.net-staterestore")(t,e)},"undefined"!=typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,0,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(t,e,n,o){"use strict";var r=t.fn.dataTable;return t.extend(!0,r.StateRestoreCollection.classes,{checkBox:"dtsr-check-box form-check-input",creationButton:"dtsr-creation-button btn btn-secondary",creationForm:"dtsr-creation-form modal-body",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-title",nameInput:"dtsr-name-input form-control"}),t.extend(!0,r.StateRestore.classes,{confirmationButton:"dtsr-confirmation-button btn btn-secondary",input:"dtsr-input form-control"}),r}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.js
new file mode 100644
index 0000000..22f8fee
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.js
@@ -0,0 +1,73 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bs5', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bs5')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkBox: 'dtsr-check-box form-check-input',
+ checkLabel: 'dtsr-check-label form-check-label',
+ checkRow: 'dtsr-check-row form-check',
+ creationButton: 'dtsr-creation-button btn btn-secondary',
+ creationForm: 'dtsr-creation-form modal-body',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-title',
+ nameInput: 'dtsr-name-input form-control',
+ nameLabel: 'dtsr-name-label form-label'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ confirmationButton: 'dtsr-confirmation-button btn btn-secondary',
+ input: 'dtsr-input form-control'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.min.js
new file mode 100644
index 0000000..ecdd5ed
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bootstrap5.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs5","datatables.net-staterestore"],function(e){return n(e,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net-bs5")(e,t),t.fn.dataTable.StateRestore||require("datatables.net-staterestore")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),r(e,t),n(t,0,e.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(e,t,n,o){"use strict";var r=e.fn.dataTable;return e.extend(!0,r.StateRestoreCollection.classes,{checkBox:"dtsr-check-box form-check-input",checkLabel:"dtsr-check-label form-check-label",checkRow:"dtsr-check-row form-check",creationButton:"dtsr-creation-button btn btn-secondary",creationForm:"dtsr-creation-form modal-body",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-title",nameInput:"dtsr-name-input form-control",nameLabel:"dtsr-name-label form-label"}),e.extend(!0,r.StateRestore.classes,{confirmationButton:"dtsr-confirmation-button btn btn-secondary",input:"dtsr-input form-control"}),r}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.js
new file mode 100644
index 0000000..7413fc7
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.js
@@ -0,0 +1,71 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bm', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bm')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkRow: 'dtsr-check-row checkbox',
+ creationButton: 'dtsr-creation-button button',
+ creationForm: 'dtsr-creation-form modal-content',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-card-title',
+ nameInput: 'dtsr-name-input input'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ confirmationButton: 'dtsr-confirmation-button button',
+ confirmationTitle: 'dtsr-confirmation-title modal-card-title',
+ input: 'dtsr-input input'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.min.js
new file mode 100644
index 0000000..f29951f
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.bulma.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-staterestore"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net-bm")(t,e),e.fn.dataTable.StateRestore||require("datatables.net-staterestore")(t,e)},"undefined"!=typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,0,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(t,e,n,o){"use strict";var r=t.fn.dataTable;return t.extend(!0,r.StateRestoreCollection.classes,{checkRow:"dtsr-check-row checkbox",creationButton:"dtsr-creation-button button",creationForm:"dtsr-creation-form modal-content",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-card-title",nameInput:"dtsr-name-input input"}),t.extend(!0,r.StateRestore.classes,{confirmationButton:"dtsr-confirmation-button button",confirmationTitle:"dtsr-confirmation-title modal-card-title",input:"dtsr-input input"}),r}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.js
new file mode 100644
index 0000000..82183a5
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.js
@@ -0,0 +1,58 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-dt', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-dt')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.min.js
new file mode 100644
index 0000000..bc3bd36
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.dataTables.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-staterestore"],function(e){return n(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.StateRestore||require("datatables.net-staterestore")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),d(e,t),n(t,0,e.document)}:(d(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(e,t,n,o){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.js
new file mode 100644
index 0000000..40b4076
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.js
@@ -0,0 +1,73 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-zf', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-zf')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkBox: 'dtsr-check-box form-check-input',
+ checkLabel: 'dtsr-check-label form-check-label',
+ checkRow: 'dtsr-check-row form',
+ creationButton: 'dtsr-creation-button button',
+ creationForm: 'dtsr-creation-form modal-body',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-title',
+ nameInput: 'dtsr-name-input form-control',
+ nameLabel: 'dtsr-name-label form-label',
+ nameRow: 'dtsr-name-row medium-6 cell'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ confirmationButton: 'dtsr-confirmation-button button'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.min.js
new file mode 100644
index 0000000..3875137
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.foundation.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(o){var n,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-staterestore"],function(e){return o(e,window,document)}):"object"==typeof exports?(n=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net-zf")(e,t),t.fn.dataTable.StateRestore||require("datatables.net-staterestore")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||n(e),r(e,t),o(t,0,e.document)}:(r(window,n),module.exports=o(n,window,window.document))):o(jQuery,window,document)}(function(e,t,o,n){"use strict";var r=e.fn.dataTable;return e.extend(!0,r.StateRestoreCollection.classes,{checkBox:"dtsr-check-box form-check-input",checkLabel:"dtsr-check-label form-check-label",checkRow:"dtsr-check-row form",creationButton:"dtsr-creation-button button",creationForm:"dtsr-creation-form modal-body",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-title",nameInput:"dtsr-name-input form-control",nameLabel:"dtsr-name-label form-label",nameRow:"dtsr-name-row medium-6 cell"}),e.extend(!0,r.StateRestore.classes,{confirmationButton:"dtsr-confirmation-button button"}),r}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.js
new file mode 100644
index 0000000..a53f844
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.js
@@ -0,0 +1,74 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-jqui', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-jqui')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkBox: 'dtsr-check-box form-check-input',
+ checkLabel: 'dtsr-check-label form-check-label',
+ checkRow: 'dtsr-check-row form',
+ creationButton: 'dtsr-creation-button ui-button ui-corner-all ui-widget',
+ creationForm: 'dtsr-creation-form modal-body',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-title',
+ nameInput: 'dtsr-name-input form-control',
+ nameLabel: 'dtsr-name-label form-label',
+ nameRow: 'dtsr-name-row medium-6 cell'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ // eslint-disable-next-line max-len
+ confirmationButton: 'dtsr-confirmation-button ui-button ui-state-default ui-button-text-only ui-corner-all ui-widget'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.min.js
new file mode 100644
index 0000000..f796414
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.jqueryui.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(o){var n,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-staterestore"],function(e){return o(e,window,document)}):"object"==typeof exports?(n=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net-jqui")(e,t),t.fn.dataTable.StateRestore||require("datatables.net-staterestore")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||n(e),r(e,t),o(t,0,e.document)}:(r(window,n),module.exports=o(n,window,window.document))):o(jQuery,window,document)}(function(e,t,o,n){"use strict";var r=e.fn.dataTable;return e.extend(!0,r.StateRestoreCollection.classes,{checkBox:"dtsr-check-box form-check-input",checkLabel:"dtsr-check-label form-check-label",checkRow:"dtsr-check-row form",creationButton:"dtsr-creation-button ui-button ui-corner-all ui-widget",creationForm:"dtsr-creation-form modal-body",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-title",nameInput:"dtsr-name-input form-control",nameLabel:"dtsr-name-label form-label",nameRow:"dtsr-name-row medium-6 cell"}),e.extend(!0,r.StateRestore.classes,{confirmationButton:"dtsr-confirmation-button ui-button ui-state-default ui-button-text-only ui-corner-all ui-widget"}),r}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.js
new file mode 100644
index 0000000..ba9e183
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.js
@@ -0,0 +1,76 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-se', 'datatables.net-staterestore'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-se')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.StateRestore ) {
+ require('datatables.net-staterestore')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+$.extend(true, DataTable.StateRestoreCollection.classes, {
+ checkBox: 'dtsr-check-box form-check-input',
+ checkLabel: 'dtsr-check-label form-check-label',
+ checkRow: 'dtsr-check-row form',
+ creationButton: 'dtsr-creation-button ui button primary',
+ creationForm: 'dtsr-creation-form modal-body',
+ creationText: 'dtsr-creation-text modal-header',
+ creationTitle: 'dtsr-creation-title modal-title',
+ nameInput: 'dtsr-name-input form-control',
+ nameLabel: 'dtsr-name-label form-label',
+ nameRow: 'dtsr-name-row ui input'
+});
+$.extend(true, DataTable.StateRestore.classes, {
+ confirmation: 'dtsr-confirmation modal',
+ confirmationButton: 'dtsr-confirmation-button ui button primary',
+ confirmationText: 'dtsr-confirmation-text modal-body',
+ renameModal: 'dtsr-rename-modal ui input'
+});
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.min.js b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.min.js
new file mode 100644
index 0000000..8d5d238
--- /dev/null
+++ b/public/assets/js/DataTables/StateRestore-1.2.2/js/stateRestore.semanticui.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap integration for DataTables' StateRestore
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(o){var n,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-staterestore"],function(t){return o(t,window,document)}):"object"==typeof exports?(n=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net-se")(t,e),e.fn.dataTable.StateRestore||require("datatables.net-staterestore")(t,e)},"undefined"!=typeof window?module.exports=function(t,e){return t=t||window,e=e||n(t),r(t,e),o(e,0,t.document)}:(r(window,n),module.exports=o(n,window,window.document))):o(jQuery,window,document)}(function(t,e,o,n){"use strict";var r=t.fn.dataTable;return t.extend(!0,r.StateRestoreCollection.classes,{checkBox:"dtsr-check-box form-check-input",checkLabel:"dtsr-check-label form-check-label",checkRow:"dtsr-check-row form",creationButton:"dtsr-creation-button ui button primary",creationForm:"dtsr-creation-form modal-body",creationText:"dtsr-creation-text modal-header",creationTitle:"dtsr-creation-title modal-title",nameInput:"dtsr-name-input form-control",nameLabel:"dtsr-name-label form-label",nameRow:"dtsr-name-row ui input"}),t.extend(!0,r.StateRestore.classes,{confirmation:"dtsr-confirmation modal",confirmationButton:"dtsr-confirmation-button ui button primary",confirmationText:"dtsr-confirmation-text modal-body",renameModal:"dtsr-rename-modal ui input"}),r}); \ No newline at end of file