appscms-tools-theme 3.0.2 → 3.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ff3e5970d26347a54424c3451f8ec8ff3621718116cc6e754ae59f80536690d
4
- data.tar.gz: 9f618b9d865abae166bd9338560b75c1f81b7fed8c75a6af1ba2408d88459d61
3
+ metadata.gz: 9773f43a6c37c43e0d94f8bc293c79b8b9c279e4dafa87306fe7a13c9334429c
4
+ data.tar.gz: 6b84aaf32663ffc9aa9edd3ba72c684f07c231472e2b0a0b7e59a3f6690e68d5
5
5
  SHA512:
6
- metadata.gz: c155e18b26673dcf5955a3b5b3f32066f904f4d8ece14a80a6921c4c578674e412b7ddabd3674a273098b10bc99f8d0e4a95a2df91b5adcf42830fcc6bafc317
7
- data.tar.gz: 032100f27dc1a6d856feb86f7a0d51db0183e2a6c976c82c1cc0df8d16f165038fe13440d7dec056ed3f4fbbddce4bf50b799358548dfe628a097f3e0be34551
6
+ metadata.gz: 663744fc9f945c7f4a21fd70d612327018b1aaebd57f48bfc75a977fdb0d87ef894acc6500f7723921c0f406bae67736f2d4eeb67697f0c2733fdeeb8e1d6213
7
+ data.tar.gz: f23592fd5154c55648605045256991d379f75a6beb72b6809902f511dd6d412bfb6c233d793d8bc89887013185764c3bdf38f74bdf5fe52f83af7ac6fa0b2239
@@ -1,136 +1,240 @@
1
1
  {%- if site.show_allow_ad_blocker_pop -%}
2
- <link rel="stylesheet" href="/assets/css/adBlocker.css">
2
+ <link rel="stylesheet" href="/assets/css/adBlocker.css" />
3
3
  <div id="detect"></div>
4
4
  <div class="wrapper text-center">
5
- <div class="innerWrapper">
6
- {%- if site.adBlockerClose -%}
7
- <div class="closePopup p-1">
8
- <i class="fas fa-times"></i>
5
+ <div class="innerWrapper">
6
+ {%- if site.adBlockerClose -%}
7
+ <div class="closePopup p-1">
8
+ <i class="fas fa-times"></i>
9
+ </div>
10
+ {%- endif -%}
11
+ <h2 class="brand-title">{{site.adspopuptitle}}</h2>
12
+ <p class="show-ads">Please allow ads on our site</p>
13
+ <p>
14
+ Looks like you're using an ad blocker. We rely on advertising to help fund
15
+ our site to keep it 100% free
16
+ </p>
17
+ <div class="btn-container mx-auto">
18
+ <div class="bg-layer"></div>
19
+ <button class="allow-ads-btn">Allow ads</button>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ <div class="extensions">
24
+ <section>
25
+ <div class="ads__content">
26
+ {%- if site.adBlockerClose -%}
27
+ <div class="closePopup">
28
+ <i class="fas fa-times"></i>
29
+ </div>
30
+ {%- endif -%}
31
+ <p style="font-size: 18px">Which of these extensions do you have?</p>
32
+ <ul class="nav nav-tabs tablist" role="tablist">
33
+ <a
34
+ class="nav-link nav-tab-link active"
35
+ data-toggle="tab"
36
+ href="#home"
37
+ role="tab"
38
+ >
39
+ <li class="nav-item">
40
+ <img
41
+ class="ads_img"
42
+ loading="lazy"
43
+ src="/assets/images/adblock.svg"
44
+ alt="AdBlock image"
45
+ />
46
+ </li>
47
+ AdBlock
48
+ </a>
49
+ <a
50
+ class="nav-link nav-tab-link"
51
+ data-toggle="tab"
52
+ href="#adsblockPlus"
53
+ role="tab"
54
+ >
55
+ <li class="nav-item">
56
+ <img
57
+ class="ads_img"
58
+ loading="lazy"
59
+ src="/assets/images/abp.svg"
60
+ alt="Adblock Plus Image"
61
+ />
62
+ </li>
63
+ Adblock Plus
64
+ </a>
65
+ <a
66
+ class="nav-link nav-tab-link"
67
+ data-toggle="tab"
68
+ href="#uBlock"
69
+ role="tab"
70
+ >
71
+ <li class="nav-item">
72
+ <img
73
+ class="ads_img"
74
+ loading="lazy"
75
+ src="/assets/images/uo.svg"
76
+ alt="uBlock image"
77
+ />
78
+ </li>
79
+ uBlock Origin
80
+ </a>
81
+ <a
82
+ class="nav-link nav-tab-link"
83
+ data-toggle="tab"
84
+ href="#other"
85
+ role="tab"
86
+ >
87
+ <li class="nav-item">
88
+ <div class="three_dot">...</div>
89
+ </li>
90
+ Other
91
+ </a>
92
+ </ul>
93
+
94
+ <!-- Tab panes -->
95
+ <div class="tab-content">
96
+ <div class="tab-pane active" id="home" role="tabpanel">
97
+ <ol class="listContainer">
98
+ <li class="listItem">
99
+ Click the AdBlock icon
100
+ <img
101
+ width="18px"
102
+ loading="lazy"
103
+ src="/assets/images/adblock.svg"
104
+ alt="AdBlock image"
105
+ />
106
+ in the browser extension area on the upper right-hand corner. (You
107
+ may see a small number covering part of the icon.)
108
+ </li>
109
+ <li class="listItem">
110
+ Select <b>Don't run on pages on this site</b>.
111
+ </li>
112
+ <li class="listItem">
113
+ In the "Don’t run AdBlock on..." dialog box, select
114
+ <b>Exclude</b>. The AdBlock icon changes to a “thumbs up” image.
115
+ </li>
116
+ </ol>
117
+ <div class="text-center w-100" onclick="refresh()">
118
+ <button class="btn btn-primary" style="font-size: 12px">
119
+ Refresh page
120
+ </button>
121
+ </div>
122
+ </div>
123
+ <div class="tab-pane" id="adsblockPlus" role="tabpanel">
124
+ <ol class="listContainer">
125
+ <li class="listItem">
126
+ Click the Adblock Plus icon
127
+ <img
128
+ width="18px"
129
+ loading="lazy"
130
+ src="/assets/images/abp.svg"
131
+ alt="Adblock Plus Image"
132
+ />
133
+ in the browser extension area on the upper right-hand corner. (You
134
+ may see a small number covering part of the icon.)
135
+ </li>
136
+ <li class="listItem">
137
+ Click the “power” button Power icon so that it slides left.
138
+ </li>
139
+ <li class="listItem">Click the <b>Refresh</b> button.</li>
140
+ </ol>
141
+ <div class="text-center w-100" onclick="refresh()">
142
+ <button class="btn btn-primary" style="font-size: 12px">
143
+ Refresh page
144
+ </button>
145
+ </div>
146
+ </div>
147
+ <div class="tab-pane" id="uBlock" role="tabpanel">
148
+ <ol class="listContainer">
149
+ <li class="listItem">
150
+ Click the uBlock Origin icon
151
+ <img
152
+ width="18px"
153
+ loading="lazy"
154
+ src="/assets/images/uo.svg"
155
+ alt="uBlock image"
156
+ />
157
+ in the browser extension area on the upper right-hand corner. (You
158
+ may see a small number covering part of the icon.)
159
+ </li>
160
+ <li class="listItem">
161
+ Click the “power” button so that it slides left.
162
+ </li>
163
+ <li class="listItem">Click the <b>Refresh</b> button.</li>
164
+ </ol>
165
+ <div class="text-center w-100" onclick="refresh()">
166
+ <button class="btn btn-primary" style="font-size: 12px">
167
+ Refresh page
168
+ </button>
169
+ </div>
9
170
  </div>
10
- {%- endif -%}
11
- <h2 class="brand-title">{{site.adspopuptitle}}</h2>
12
- <p class="show-ads">
13
- Please allow ads on our site
14
- </p>
15
- <p>Looks like you're using an ad blocker. We rely on advertising to help fund our site to keep it 100% free</p>
16
- <div class="btn-container mx-auto">
17
- <div class="bg-layer"></div>
18
- <button class="allow-ads-btn">Allow ads</button>
171
+ <div class="tab-pane" id="other" role="tabpanel">
172
+ <ol class="listContainer">
173
+ <li class="listItem">
174
+ Click the icon of the ad blocker extension installed on your
175
+ browser.
176
+ </li>
177
+ <p class="text-muted">
178
+ You’ll usually find this icon in the upper right-hand corner of
179
+ your screen. You may have more than one ad blocker installed.
180
+ </p>
181
+ <li class="listItem">
182
+ Follow the instructions for disabling the ad blocker on the site
183
+ you’re viewing.
184
+ </li>
185
+ <p class="text-muted">
186
+ You may have to select a menu option or click a button.
187
+ </p>
188
+ <li class="listItem">
189
+ Refresh the page, either by following prompts or clicking your
190
+ browser’s “refresh” or “reload” button.
191
+ </li>
192
+ </ol>
193
+ <div class="text-center w-100" onclick="refresh()">
194
+ <button class="btn btn-primary" style="font-size: 12px">
195
+ Refresh page
196
+ </button>
197
+ </div>
19
198
  </div>
199
+ </div>
20
200
  </div>
201
+ </section>
21
202
  </div>
22
- <div class="extensions">
23
- <section>
24
- <div class="ads__content">
25
- {%- if site.adBlockerClose -%}
26
- <div class="closePopup">
27
- <i class="fas fa-times"></i>
28
- </div>
29
- {%- endif -%}
30
- <p style="font-size: 18px">Which of these extensions do you have?</p>
31
- <ul class="nav nav-tabs tablist" role="tablist">
32
- <a class="nav-link nav-tab-link active" data-toggle="tab" href="#home" role="tab">
33
- <li class="nav-item">
34
- <img class="ads_img" loading="lazy" src="/assets/images/adblock.svg" alt="AdBlock image">
35
- </li>
36
- AdBlock
37
- </a>
38
- <a class="nav-link nav-tab-link" data-toggle="tab" href="#adsblockPlus" role="tab">
39
- <li class="nav-item">
40
- <img class="ads_img" loading="lazy" src="/assets/images/abp.svg" alt="Adblock Plus Image">
41
- </li>
42
- Adblock Plus
43
- </a>
44
- <a class="nav-link nav-tab-link" data-toggle="tab" href="#uBlock" role="tab">
45
- <li class="nav-item">
46
- <img class="ads_img" loading="lazy" src="/assets/images/uo.svg" alt="uBlock image">
47
- </li>
48
- uBlock Origin
49
- </a>
50
- <a class="nav-link nav-tab-link" data-toggle="tab" href="#other" role="tab">
51
- <li class="nav-item">
52
- <div class="three_dot">...</div>
53
- </li>
54
- Other
55
- </a>
56
- </ul>
57
203
 
58
- <!-- Tab panes -->
59
- <div class="tab-content">
60
- <div class="tab-pane active" id="home" role="tabpanel">
61
- <ol class="listContainer">
62
- <li class="listItem">Click the AdBlock icon
63
- <img width="18px" loading="lazy" src="/assets/images/adblock.svg" alt="AdBlock image">
64
- in the browser extension area on the upper right-hand corner. (You may see a small number
65
- covering
66
- part of
67
- the icon.)
68
- </li>
69
- <li class="listItem">Select <b>Don't run on pages on this site</b>.</li>
70
- <li class="listItem">In the "Don’t run AdBlock on..." dialog box, select <b>Exclude</b>. The
71
- AdBlock
72
- icon
73
- changes to a “thumbs up” image.</li>
74
- </ol>
75
- <div class="text-center w-100" onclick="refresh()">
76
- <button class="btn btn-primary" style="font-size: 12px;">Refresh page</button>
77
- </div>
78
- </div>
79
- <div class="tab-pane" id="adsblockPlus" role="tabpanel">
80
- <ol class="listContainer">
81
- <li class="listItem">Click the Adblock Plus icon
82
- <img width="18px" loading="lazy" src="/assets/images/abp.svg" alt="Adblock Plus Image">
83
- in the browser extension area on the
84
- upper right-hand corner. (You may see a small number covering part of the icon.)
85
- </li>
86
- <li class="listItem">Click the “power” button Power icon so that it slides left.</li>
87
- <li class="listItem">Click the <b>Refresh</b> button.</li>
88
- </ol>
89
- <div class="text-center w-100" onclick="refresh()">
90
- <button class="btn btn-primary" style="font-size: 12px;">Refresh page</button>
91
- </div>
92
- </div>
93
- <div class="tab-pane" id="uBlock" role="tabpanel">
94
- <ol class="listContainer">
95
- <li class="listItem">Click the uBlock Origin icon
96
- <img width="18px" loading="lazy" src="/assets/images/uo.svg" alt="uBlock image"> in the
97
- browser
98
- extension area on
99
- the upper right-hand corner. (You may see a small number covering part of the icon.)
100
- </li>
101
- <li class="listItem">
102
- Click the “power” button so that it slides left.
103
- </li>
104
- <li class="listItem">Click the <b>Refresh</b> button.</li>
105
- </ol>
106
- <div class="text-center w-100" onclick="refresh()">
107
- <button class="btn btn-primary" style="font-size: 12px;">Refresh page</button>
108
- </div>
109
- </div>
110
- <div class="tab-pane" id="other" role="tabpanel">
111
- <ol class="listContainer">
112
- <li class="listItem">Click the icon of the ad blocker extension installed on your browser.</li>
113
- <p class="text-muted">You’ll usually find this icon in the upper right-hand corner of your
114
- screen. You may
115
- have more than
116
- one ad blocker installed.</p>
117
- <li class="listItem">Follow the instructions for disabling the ad blocker on the site you’re
118
- viewing.</li>
119
- <p class="text-muted">You may have to select a menu option or click a button.</p>
120
- <li class="listItem">Refresh the page, either by following prompts or clicking your browser’s
121
- “refresh” or
122
- “reload” button.</li>
123
- </ol>
124
- <div class="text-center w-100" onclick="refresh()">
125
- <button class="btn btn-primary" style="font-size: 12px;">Refresh page</button>
126
- </div>
127
- </div>
128
- </div>
204
+ {% if page.url != '/' and page.lang == "en" %}
205
+ <script>
206
+ const autoLoadDuration = 5; //In Seconds
207
+ const eventList = [
208
+ "keydown",
209
+ "mousemove",
210
+ "wheel",
211
+ "touchmove",
212
+ "touchstart",
213
+ "touchend",
214
+ ];
129
215
 
216
+ const autoLoadTimeout = setTimeout(runScripts, autoLoadDuration * 1000);
130
217
 
131
- </div>
132
- </section>
133
- </div>
218
+ eventList.forEach(function (event) {
219
+ window.addEventListener(event, triggerScripts, { passive: true });
220
+ });
221
+
222
+ function triggerScripts() {
223
+ runScripts();
224
+ clearTimeout(autoLoadTimeout);
225
+ eventList.forEach(function (event) {
226
+ window.removeEventListener(event, triggerScripts, { passive: true });
227
+ });
228
+ }
229
+
230
+ function runScripts() {
231
+ document.querySelectorAll("script[delay]").forEach(function (scriptTag) {
232
+ scriptTag.setAttribute("src", scriptTag.getAttribute("delay"));
233
+ });
234
+ }
235
+ </script>
236
+
237
+ {% endif %}
134
238
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
135
239
  <script delay="/assets/js/adBlocker.js"></script>
136
- {%- endif -%}
240
+ {%- endif -%}
@@ -0,0 +1,5 @@
1
+ <div class="toaster">
2
+ <div class="toaster__body">
3
+ <div class="toaster__message"></div>
4
+ </div>
5
+ </div>
@@ -1,38 +1,56 @@
1
- {% assign path = page.jsonFile %}
2
- {% assign jsonPath = site.data[path] %}
3
- {% assign dataToShow = jsonPath %}
1
+ {% assign path = page.jsonFile %} {% assign jsonPath = site.data[path] %} {%
2
+ assign dataToShow = jsonPath %}
4
3
  <div class="container-fluid">
5
- <div class="row">
6
- <div class="col-xl-3 col-lg-12">
7
- <div class="row">
8
- <div class="col-xl-3 p-0">
9
- <div class="feature">
10
- <img src="/assets/images/left_obj_01.png" alt="" {%- if site.crossorigin -%} crossorigin {%-
11
- endif -%}>
12
- <span class="site-no"> {{dataToShow.featureNo}}</span>
13
- <h5 class="title">{{dataToShow.feature_title}}</h5>
14
- <p class="description">{{dataToShow.feature_description}}</p>
15
- </div>
16
- </div>
17
- </div>
4
+ <div class="row">
5
+ <div class="col-xl-3 col-lg-12">
6
+ <div class="row">
7
+ <div class="col-xl-3 p-0">
8
+ <div class="feature">
9
+ <img
10
+ src="/assets/images/left_obj_01.png"
11
+ alt=""
12
+ {%-
13
+ if
14
+ site.crossorigin
15
+ -%}
16
+ crossorigin
17
+ {%-
18
+ endif
19
+ -%}
20
+ />
21
+ <span class="site-no"> {{dataToShow.featureNo}}</span>
22
+ <h5 class="title">{{dataToShow.feature_title}}</h5>
23
+ <p class="description">{{dataToShow.feature_description}}</p>
24
+ </div>
18
25
  </div>
19
- <div class="col-xl-9 col-lg-12">
20
- <div class="row text-center">
21
- {% for entry in dataToShow.featureList %}
22
- <div class="col-lg-4 col-md-6 my-3">
23
- <div class="card-body h-100">
24
- <i loading="lazy" class="{{ entry.fa_class }} FA"></i>
25
- <h5 class="card-title">
26
- {{ entry.feature_heading }}
27
- </h5>
28
- <p class="card-text" style="color: #a7a7a7;
29
- font-size: 14px;">{{ entry.feature_text}}</p>
30
- </div>
31
- </div>
32
- {% endfor %}
33
- </div>
26
+ </div>
27
+ </div>
28
+ <div class="col-xl-9 col-lg-12">
29
+ <div class="row text-center">
30
+ {% for entry in dataToShow.featureList %}
31
+ <div class="col-lg-4 col-md-6 my-3">
32
+ <div class="card-body h-100">
33
+ <i loading="lazy" class="{{ entry.fa_class }} FA"></i>
34
+ <h5 class="card-title">{{ entry.feature_heading }}</h5>
35
+ <p class="card-text" style="color: #a7a7a7; font-size: 14px">
36
+ {{ entry.feature_text}}
37
+ </p>
38
+ </div>
34
39
  </div>
40
+ {% endfor %}
41
+ </div>
35
42
  </div>
43
+ </div>
36
44
  </div>
37
- <link rel="stylesheet" href="{{ 'css/feature.css' | relative_url }}" {%- if site.crossorigin -%} crossorigin {%- endif
38
- -%}>
45
+ <link
46
+ rel="stylesheet"
47
+ href="{{ 'css/feature.css' | relative_url }}"
48
+ {%-
49
+ if
50
+ site.crossorigin
51
+ -%}
52
+ crossorigin
53
+ {%-
54
+ endif
55
+ -%}
56
+ />
@@ -1,59 +1,508 @@
1
1
  {%- if site.rollbarToken -%}
2
2
  <script>
3
- var _rollbarConfig = {
4
- accessToken: "{{site.rollbarToken}}",
5
- captureUncaught: true,
6
- captureUnhandledRejections: true,
7
- payload: {
8
- environment: "production"
3
+ var _rollbarConfig = {
4
+ accessToken: "{{site.rollbarToken}}",
5
+ captureUncaught: true,
6
+ captureUnhandledRejections: true,
7
+ payload: {
8
+ environment: "production",
9
+ },
10
+ };
11
+ !(function (r) {
12
+ var e = {};
13
+ function o(n) {
14
+ if (e[n]) return e[n].exports;
15
+ var t = (e[n] = { i: n, l: !1, exports: {} });
16
+ return r[n].call(t.exports, t, t.exports, o), (t.l = !0), t.exports;
17
+ }
18
+ (o.m = r),
19
+ (o.c = e),
20
+ (o.d = function (r, e, n) {
21
+ o.o(r, e) || Object.defineProperty(r, e, { enumerable: !0, get: n });
22
+ }),
23
+ (o.r = function (r) {
24
+ "undefined" != typeof Symbol &&
25
+ Symbol.toStringTag &&
26
+ Object.defineProperty(r, Symbol.toStringTag, { value: "Module" }),
27
+ Object.defineProperty(r, "__esModule", { value: !0 });
28
+ }),
29
+ (o.t = function (r, e) {
30
+ if ((1 & e && (r = o(r)), 8 & e)) return r;
31
+ if (4 & e && "object" == typeof r && r && r.__esModule) return r;
32
+ var n = Object.create(null);
33
+ if (
34
+ (o.r(n),
35
+ Object.defineProperty(n, "default", { enumerable: !0, value: r }),
36
+ 2 & e && "string" != typeof r)
37
+ )
38
+ for (var t in r)
39
+ o.d(
40
+ n,
41
+ t,
42
+ function (e) {
43
+ return r[e];
44
+ }.bind(null, t)
45
+ );
46
+ return n;
47
+ }),
48
+ (o.n = function (r) {
49
+ var e =
50
+ r && r.__esModule
51
+ ? function () {
52
+ return r.default;
53
+ }
54
+ : function () {
55
+ return r;
56
+ };
57
+ return o.d(e, "a", e), e;
58
+ }),
59
+ (o.o = function (r, e) {
60
+ return Object.prototype.hasOwnProperty.call(r, e);
61
+ }),
62
+ (o.p = ""),
63
+ o((o.s = 0));
64
+ })([
65
+ function (r, e, o) {
66
+ "use strict";
67
+ var n = o(1),
68
+ t = o(5);
69
+ (_rollbarConfig = _rollbarConfig || {}),
70
+ (_rollbarConfig.rollbarJsUrl =
71
+ _rollbarConfig.rollbarJsUrl ||
72
+ "https://cdn.rollbar.com/rollbarjs/refs/tags/v2.25.2/rollbar.min.js"),
73
+ (_rollbarConfig.async =
74
+ void 0 === _rollbarConfig.async || _rollbarConfig.async);
75
+ var a = n.setupShim(window, _rollbarConfig),
76
+ l = t(_rollbarConfig);
77
+ (window.rollbar = n.Rollbar),
78
+ a.loadFull(window, document, !_rollbarConfig.async, _rollbarConfig, l);
79
+ },
80
+ function (r, e, o) {
81
+ "use strict";
82
+ var n = o(2),
83
+ t = o(3);
84
+ function a(r) {
85
+ return function () {
86
+ try {
87
+ return r.apply(this, arguments);
88
+ } catch (r) {
89
+ try {
90
+ console.error("[Rollbar]: Internal error", r);
91
+ } catch (r) {}
92
+ }
93
+ };
9
94
  }
10
- };
11
- !function (r) { var e = {}; function o(n) { if (e[n]) return e[n].exports; var t = e[n] = { i: n, l: !1, exports: {} }; return r[n].call(t.exports, t, t.exports, o), t.l = !0, t.exports } o.m = r, o.c = e, o.d = function (r, e, n) { o.o(r, e) || Object.defineProperty(r, e, { enumerable: !0, get: n }) }, o.r = function (r) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(r, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(r, "__esModule", { value: !0 }) }, o.t = function (r, e) { if (1 & e && (r = o(r)), 8 & e) return r; if (4 & e && "object" == typeof r && r && r.__esModule) return r; var n = Object.create(null); if (o.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: r }), 2 & e && "string" != typeof r) for (var t in r) o.d(n, t, function (e) { return r[e] }.bind(null, t)); return n }, o.n = function (r) { var e = r && r.__esModule ? function () { return r.default } : function () { return r }; return o.d(e, "a", e), e }, o.o = function (r, e) { return Object.prototype.hasOwnProperty.call(r, e) }, o.p = "", o(o.s = 0) }([function (r, e, o) { "use strict"; var n = o(1), t = o(5); _rollbarConfig = _rollbarConfig || {}, _rollbarConfig.rollbarJsUrl = _rollbarConfig.rollbarJsUrl || "https://cdn.rollbar.com/rollbarjs/refs/tags/v2.25.2/rollbar.min.js", _rollbarConfig.async = void 0 === _rollbarConfig.async || _rollbarConfig.async; var a = n.setupShim(window, _rollbarConfig), l = t(_rollbarConfig); window.rollbar = n.Rollbar, a.loadFull(window, document, !_rollbarConfig.async, _rollbarConfig, l) }, function (r, e, o) { "use strict"; var n = o(2), t = o(3); function a(r) { return function () { try { return r.apply(this, arguments) } catch (r) { try { console.error("[Rollbar]: Internal error", r) } catch (r) { } } } } var l = 0; function i(r, e) { this.options = r, this._rollbarOldOnError = null; var o = l++; this.shimId = function () { return o }, "undefined" != typeof window && window._rollbarShims && (window._rollbarShims[o] = { handler: e, messages: [] }) } var s = o(4), d = function (r, e) { return new i(r, e) }, c = function (r) { return new s(d, r) }; function u(r) { return a((function () { var e = this, o = Array.prototype.slice.call(arguments, 0), n = { shim: e, method: r, args: o, ts: new Date }; window._rollbarShims[this.shimId()].messages.push(n) })) } i.prototype.loadFull = function (r, e, o, n, t) { var l = !1, i = e.createElement("script"), s = e.getElementsByTagName("script")[0], d = s.parentNode; i.crossOrigin = "", i.src = n.rollbarJsUrl, o || (i.async = !0), i.onload = i.onreadystatechange = a((function () { if (!(l || this.readyState && "loaded" !== this.readyState && "complete" !== this.readyState)) { i.onload = i.onreadystatechange = null; try { d.removeChild(i) } catch (r) { } l = !0, function () { var e; if (void 0 === r._rollbarDidLoad) { e = new Error("rollbar.js did not load"); for (var o, n, a, l, i = 0; o = r._rollbarShims[i++];)for (o = o.messages || []; n = o.shift();)for (a = n.args || [], i = 0; i < a.length; ++i)if ("function" == typeof (l = a[i])) { l(e); break } } "function" == typeof t && t(e) }() } })), d.insertBefore(i, s) }, i.prototype.wrap = function (r, e, o) { try { var n; if (n = "function" == typeof e ? e : function () { return e || {} }, "function" != typeof r) return r; if (r._isWrap) return r; if (!r._rollbar_wrapped && (r._rollbar_wrapped = function () { o && "function" == typeof o && o.apply(this, arguments); try { return r.apply(this, arguments) } catch (o) { var e = o; throw e && ("string" == typeof e && (e = new String(e)), e._rollbarContext = n() || {}, e._rollbarContext._wrappedSource = r.toString(), window._rollbarWrappedError = e), e } }, r._rollbar_wrapped._isWrap = !0, r.hasOwnProperty)) for (var t in r) r.hasOwnProperty(t) && (r._rollbar_wrapped[t] = r[t]); return r._rollbar_wrapped } catch (e) { return r } }; for (var p = "log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","), f = 0; f < p.length; ++f)i.prototype[p[f]] = u(p[f]); r.exports = { setupShim: function (r, e) { if (r) { var o = e.globalAlias || "Rollbar"; if ("object" == typeof r[o]) return r[o]; r._rollbarShims = {}, r._rollbarWrappedError = null; var l = new c(e); return a((function () { e.captureUncaught && (l._rollbarOldOnError = r.onerror, n.captureUncaughtExceptions(r, l, !0), e.wrapGlobalEventHandlers && t(r, l, !0)), e.captureUnhandledRejections && n.captureUnhandledRejections(r, l, !0); var a = e.autoInstrument; return !1 !== e.enabled && (void 0 === a || !0 === a || function (r) { return !("object" != typeof r || void 0 !== r.page && !r.page) }(a)) && r.addEventListener && (r.addEventListener("load", l.captureLoad.bind(l)), r.addEventListener("DOMContentLoaded", l.captureDomContentLoaded.bind(l))), r[o] = l, l }))() } }, Rollbar: c } }, function (r, e, o) { "use strict"; function n(r, e, o, n) { r._rollbarWrappedError && (n[4] || (n[4] = r._rollbarWrappedError), n[5] || (n[5] = r._rollbarWrappedError._rollbarContext), r._rollbarWrappedError = null); var t = e.handleUncaughtException.apply(e, n); o && o.apply(r, n), "anonymous" === t && (e.anonymousErrorsPending += 1) } r.exports = { captureUncaughtExceptions: function (r, e, o) { if (r) { var t; if ("function" == typeof e._rollbarOldOnError) t = e._rollbarOldOnError; else if (r.onerror) { for (t = r.onerror; t._rollbarOldOnError;)t = t._rollbarOldOnError; e._rollbarOldOnError = t } e.handleAnonymousErrors(); var a = function () { var o = Array.prototype.slice.call(arguments, 0); n(r, e, t, o) }; o && (a._rollbarOldOnError = t), r.onerror = a } }, captureUnhandledRejections: function (r, e, o) { if (r) { "function" == typeof r._rollbarURH && r._rollbarURH.belongsToShim && r.removeEventListener("unhandledrejection", r._rollbarURH); var n = function (r) { var o, n, t; try { o = r.reason } catch (r) { o = void 0 } try { n = r.promise } catch (r) { n = "[unhandledrejection] error getting `promise` from event" } try { t = r.detail, !o && t && (o = t.reason, n = t.promise) } catch (r) { } o || (o = "[unhandledrejection] error getting `reason` from event"), e && e.handleUnhandledRejection && e.handleUnhandledRejection(o, n) }; n.belongsToShim = o, r._rollbarURH = n, r.addEventListener("unhandledrejection", n) } } } }, function (r, e, o) { "use strict"; function n(r, e, o) { if (e.hasOwnProperty && e.hasOwnProperty("addEventListener")) { for (var n = e.addEventListener; n._rollbarOldAdd && n.belongsToShim;)n = n._rollbarOldAdd; var t = function (e, o, t) { n.call(this, e, r.wrap(o), t) }; t._rollbarOldAdd = n, t.belongsToShim = o, e.addEventListener = t; for (var a = e.removeEventListener; a._rollbarOldRemove && a.belongsToShim;)a = a._rollbarOldRemove; var l = function (r, e, o) { a.call(this, r, e && e._rollbar_wrapped || e, o) }; l._rollbarOldRemove = a, l.belongsToShim = o, e.removeEventListener = l } } r.exports = function (r, e, o) { if (r) { var t, a, l = "EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(","); for (t = 0; t < l.length; ++t)r[a = l[t]] && r[a].prototype && n(e, r[a].prototype, o) } } }, function (r, e, o) { "use strict"; function n(r, e) { this.impl = r(e, this), this.options = e, function (r) { for (var e = function (r) { return function () { var e = Array.prototype.slice.call(arguments, 0); if (this.impl[r]) return this.impl[r].apply(this.impl, e) } }, o = "log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","), n = 0; n < o.length; n++)r[o[n]] = e(o[n]) }(n.prototype) } n.prototype._swapAndProcessMessages = function (r, e) { var o, n, t; for (this.impl = r(this.options); o = e.shift();)n = o.method, t = o.args, this[n] && "function" == typeof this[n] && ("captureDomContentLoaded" === n || "captureLoad" === n ? this[n].apply(this, [t[0], o.ts]) : this[n].apply(this, t)); return this }, r.exports = n }, function (r, e, o) { "use strict"; r.exports = function (r) { return function (e) { if (!e && !window._rollbarInitialized) { for (var o, n, t = (r = r || {}).globalAlias || "Rollbar", a = window.rollbar, l = function (r) { return new a(r) }, i = 0; o = window._rollbarShims[i++];)n || (n = o.handler), o.handler._swapAndProcessMessages(l, o.messages); window[t] = n, window._rollbarInitialized = !0 } } } }]);
95
+ var l = 0;
96
+ function i(r, e) {
97
+ (this.options = r), (this._rollbarOldOnError = null);
98
+ var o = l++;
99
+ (this.shimId = function () {
100
+ return o;
101
+ }),
102
+ "undefined" != typeof window &&
103
+ window._rollbarShims &&
104
+ (window._rollbarShims[o] = { handler: e, messages: [] });
105
+ }
106
+ var s = o(4),
107
+ d = function (r, e) {
108
+ return new i(r, e);
109
+ },
110
+ c = function (r) {
111
+ return new s(d, r);
112
+ };
113
+ function u(r) {
114
+ return a(function () {
115
+ var e = this,
116
+ o = Array.prototype.slice.call(arguments, 0),
117
+ n = { shim: e, method: r, args: o, ts: new Date() };
118
+ window._rollbarShims[this.shimId()].messages.push(n);
119
+ });
120
+ }
121
+ (i.prototype.loadFull = function (r, e, o, n, t) {
122
+ var l = !1,
123
+ i = e.createElement("script"),
124
+ s = e.getElementsByTagName("script")[0],
125
+ d = s.parentNode;
126
+ (i.crossOrigin = ""),
127
+ (i.src = n.rollbarJsUrl),
128
+ o || (i.async = !0),
129
+ (i.onload = i.onreadystatechange =
130
+ a(function () {
131
+ if (
132
+ !(
133
+ l ||
134
+ (this.readyState &&
135
+ "loaded" !== this.readyState &&
136
+ "complete" !== this.readyState)
137
+ )
138
+ ) {
139
+ i.onload = i.onreadystatechange = null;
140
+ try {
141
+ d.removeChild(i);
142
+ } catch (r) {}
143
+ (l = !0),
144
+ (function () {
145
+ var e;
146
+ if (void 0 === r._rollbarDidLoad) {
147
+ e = new Error("rollbar.js did not load");
148
+ for (var o, n, a, l, i = 0; (o = r._rollbarShims[i++]); )
149
+ for (o = o.messages || []; (n = o.shift()); )
150
+ for (a = n.args || [], i = 0; i < a.length; ++i)
151
+ if ("function" == typeof (l = a[i])) {
152
+ l(e);
153
+ break;
154
+ }
155
+ }
156
+ "function" == typeof t && t(e);
157
+ })();
158
+ }
159
+ })),
160
+ d.insertBefore(i, s);
161
+ }),
162
+ (i.prototype.wrap = function (r, e, o) {
163
+ try {
164
+ var n;
165
+ if (
166
+ ((n =
167
+ "function" == typeof e
168
+ ? e
169
+ : function () {
170
+ return e || {};
171
+ }),
172
+ "function" != typeof r)
173
+ )
174
+ return r;
175
+ if (r._isWrap) return r;
176
+ if (
177
+ !r._rollbar_wrapped &&
178
+ ((r._rollbar_wrapped = function () {
179
+ o && "function" == typeof o && o.apply(this, arguments);
180
+ try {
181
+ return r.apply(this, arguments);
182
+ } catch (o) {
183
+ var e = o;
184
+ throw (
185
+ (e &&
186
+ ("string" == typeof e && (e = new String(e)),
187
+ (e._rollbarContext = n() || {}),
188
+ (e._rollbarContext._wrappedSource = r.toString()),
189
+ (window._rollbarWrappedError = e)),
190
+ e)
191
+ );
192
+ }
193
+ }),
194
+ (r._rollbar_wrapped._isWrap = !0),
195
+ r.hasOwnProperty)
196
+ )
197
+ for (var t in r)
198
+ r.hasOwnProperty(t) && (r._rollbar_wrapped[t] = r[t]);
199
+ return r._rollbar_wrapped;
200
+ } catch (e) {
201
+ return r;
202
+ }
203
+ });
204
+ for (
205
+ var p =
206
+ "log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(
207
+ ","
208
+ ),
209
+ f = 0;
210
+ f < p.length;
211
+ ++f
212
+ )
213
+ i.prototype[p[f]] = u(p[f]);
214
+ r.exports = {
215
+ setupShim: function (r, e) {
216
+ if (r) {
217
+ var o = e.globalAlias || "Rollbar";
218
+ if ("object" == typeof r[o]) return r[o];
219
+ (r._rollbarShims = {}), (r._rollbarWrappedError = null);
220
+ var l = new c(e);
221
+ return a(function () {
222
+ e.captureUncaught &&
223
+ ((l._rollbarOldOnError = r.onerror),
224
+ n.captureUncaughtExceptions(r, l, !0),
225
+ e.wrapGlobalEventHandlers && t(r, l, !0)),
226
+ e.captureUnhandledRejections &&
227
+ n.captureUnhandledRejections(r, l, !0);
228
+ var a = e.autoInstrument;
229
+ return (
230
+ !1 !== e.enabled &&
231
+ (void 0 === a ||
232
+ !0 === a ||
233
+ (function (r) {
234
+ return !(
235
+ "object" != typeof r ||
236
+ (void 0 !== r.page && !r.page)
237
+ );
238
+ })(a)) &&
239
+ r.addEventListener &&
240
+ (r.addEventListener("load", l.captureLoad.bind(l)),
241
+ r.addEventListener(
242
+ "DOMContentLoaded",
243
+ l.captureDomContentLoaded.bind(l)
244
+ )),
245
+ (r[o] = l),
246
+ l
247
+ );
248
+ })();
249
+ }
250
+ },
251
+ Rollbar: c,
252
+ };
253
+ },
254
+ function (r, e, o) {
255
+ "use strict";
256
+ function n(r, e, o, n) {
257
+ r._rollbarWrappedError &&
258
+ (n[4] || (n[4] = r._rollbarWrappedError),
259
+ n[5] || (n[5] = r._rollbarWrappedError._rollbarContext),
260
+ (r._rollbarWrappedError = null));
261
+ var t = e.handleUncaughtException.apply(e, n);
262
+ o && o.apply(r, n),
263
+ "anonymous" === t && (e.anonymousErrorsPending += 1);
264
+ }
265
+ r.exports = {
266
+ captureUncaughtExceptions: function (r, e, o) {
267
+ if (r) {
268
+ var t;
269
+ if ("function" == typeof e._rollbarOldOnError)
270
+ t = e._rollbarOldOnError;
271
+ else if (r.onerror) {
272
+ for (t = r.onerror; t._rollbarOldOnError; )
273
+ t = t._rollbarOldOnError;
274
+ e._rollbarOldOnError = t;
275
+ }
276
+ e.handleAnonymousErrors();
277
+ var a = function () {
278
+ var o = Array.prototype.slice.call(arguments, 0);
279
+ n(r, e, t, o);
280
+ };
281
+ o && (a._rollbarOldOnError = t), (r.onerror = a);
282
+ }
283
+ },
284
+ captureUnhandledRejections: function (r, e, o) {
285
+ if (r) {
286
+ "function" == typeof r._rollbarURH &&
287
+ r._rollbarURH.belongsToShim &&
288
+ r.removeEventListener("unhandledrejection", r._rollbarURH);
289
+ var n = function (r) {
290
+ var o, n, t;
291
+ try {
292
+ o = r.reason;
293
+ } catch (r) {
294
+ o = void 0;
295
+ }
296
+ try {
297
+ n = r.promise;
298
+ } catch (r) {
299
+ n = "[unhandledrejection] error getting `promise` from event";
300
+ }
301
+ try {
302
+ (t = r.detail), !o && t && ((o = t.reason), (n = t.promise));
303
+ } catch (r) {}
304
+ o ||
305
+ (o = "[unhandledrejection] error getting `reason` from event"),
306
+ e &&
307
+ e.handleUnhandledRejection &&
308
+ e.handleUnhandledRejection(o, n);
309
+ };
310
+ (n.belongsToShim = o),
311
+ (r._rollbarURH = n),
312
+ r.addEventListener("unhandledrejection", n);
313
+ }
314
+ },
315
+ };
316
+ },
317
+ function (r, e, o) {
318
+ "use strict";
319
+ function n(r, e, o) {
320
+ if (e.hasOwnProperty && e.hasOwnProperty("addEventListener")) {
321
+ for (
322
+ var n = e.addEventListener;
323
+ n._rollbarOldAdd && n.belongsToShim;
324
+
325
+ )
326
+ n = n._rollbarOldAdd;
327
+ var t = function (e, o, t) {
328
+ n.call(this, e, r.wrap(o), t);
329
+ };
330
+ (t._rollbarOldAdd = n),
331
+ (t.belongsToShim = o),
332
+ (e.addEventListener = t);
333
+ for (
334
+ var a = e.removeEventListener;
335
+ a._rollbarOldRemove && a.belongsToShim;
336
+
337
+ )
338
+ a = a._rollbarOldRemove;
339
+ var l = function (r, e, o) {
340
+ a.call(this, r, (e && e._rollbar_wrapped) || e, o);
341
+ };
342
+ (l._rollbarOldRemove = a),
343
+ (l.belongsToShim = o),
344
+ (e.removeEventListener = l);
345
+ }
346
+ }
347
+ r.exports = function (r, e, o) {
348
+ if (r) {
349
+ var t,
350
+ a,
351
+ l =
352
+ "EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(
353
+ ","
354
+ );
355
+ for (t = 0; t < l.length; ++t)
356
+ r[(a = l[t])] && r[a].prototype && n(e, r[a].prototype, o);
357
+ }
358
+ };
359
+ },
360
+ function (r, e, o) {
361
+ "use strict";
362
+ function n(r, e) {
363
+ (this.impl = r(e, this)),
364
+ (this.options = e),
365
+ (function (r) {
366
+ for (
367
+ var e = function (r) {
368
+ return function () {
369
+ var e = Array.prototype.slice.call(arguments, 0);
370
+ if (this.impl[r]) return this.impl[r].apply(this.impl, e);
371
+ };
372
+ },
373
+ o =
374
+ "log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(
375
+ ","
376
+ ),
377
+ n = 0;
378
+ n < o.length;
379
+ n++
380
+ )
381
+ r[o[n]] = e(o[n]);
382
+ })(n.prototype);
383
+ }
384
+ (n.prototype._swapAndProcessMessages = function (r, e) {
385
+ var o, n, t;
386
+ for (this.impl = r(this.options); (o = e.shift()); )
387
+ (n = o.method),
388
+ (t = o.args),
389
+ this[n] &&
390
+ "function" == typeof this[n] &&
391
+ ("captureDomContentLoaded" === n || "captureLoad" === n
392
+ ? this[n].apply(this, [t[0], o.ts])
393
+ : this[n].apply(this, t));
394
+ return this;
395
+ }),
396
+ (r.exports = n);
397
+ },
398
+ function (r, e, o) {
399
+ "use strict";
400
+ r.exports = function (r) {
401
+ return function (e) {
402
+ if (!e && !window._rollbarInitialized) {
403
+ for (
404
+ var o,
405
+ n,
406
+ t = (r = r || {}).globalAlias || "Rollbar",
407
+ a = window.rollbar,
408
+ l = function (r) {
409
+ return new a(r);
410
+ },
411
+ i = 0;
412
+ (o = window._rollbarShims[i++]);
413
+
414
+ )
415
+ n || (n = o.handler),
416
+ o.handler._swapAndProcessMessages(l, o.messages);
417
+ (window[t] = n), (window._rollbarInitialized = !0);
418
+ }
419
+ };
420
+ };
421
+ },
422
+ ]);
12
423
  </script>
13
- {%- endif -%}
14
- {%- include adblocker.html -%}
15
- {% assign scriptData = site.data.[page.folderName][lang][file] %}
16
- {%- assign dataAtt = "data-folderName='$folderName' data-lang='$lang' data-fileName='$fileName' data-tool='$tool'" -%}
17
- {%- assign $folderName = '$folderName' -%}
18
- <script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" {%- if site.crossorigin -%} {{ }}
19
- crossorigin {%- endif -%}></script>
424
+ {%- endif -%} {%- include adblocker.html -%} {% assign scriptData =
425
+ site.data.[page.folderName][lang][file] %} {%- assign dataAtt =
426
+ "data-folderName='$folderName' data-lang='$lang' data-fileName='$fileName'
427
+ data-tool='$tool'" -%} {%- assign $folderName = '$folderName' -%}
428
+ <script
429
+ defer
430
+ src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"
431
+ {%-
432
+ if
433
+ site.crossorigin
434
+ -%}
435
+ {{
436
+ }}
437
+ crossorigin
438
+ {%-
439
+ endif
440
+ -%}
441
+ ></script>
20
442
  {%- if site.safeui -%}
21
443
  <script defer src="/assets/js/theme.js" crossorigin="anonymous"></script>
22
444
  {%- endif -%}
23
445
 
24
-
25
- <script defer="defer" src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"
26
- integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
27
- {{site.data.customcdns.customcdns.jsfiles}}
28
- {%- if scriptData.jsfilepaths -%}
446
+ <script
447
+ defer="defer"
448
+ src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js"
449
+ integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns"
450
+ crossorigin="anonymous"
451
+ ></script>
452
+ {{site.data.customcdns.customcdns.jsfiles}} {%- if scriptData.jsfilepaths -%}
29
453
  {%- for path in scriptData.jsfilepaths -%}
30
- <script defer src="{{path}}" data-folderName="{{page.folderName}}" data-lang="{{page.lang}}"
31
- data-fileName="{{page.fileName}}" data-tool="{{page.tool}}" data-permalink="{{page.permalink}}" {%- if
32
- site.crossorigin -%} {{ }} crossorigin {%- endif -%}></script>
33
- {%- endfor -%}
34
- {%- endif -%}
35
- {%- if scriptData.jscdns -%}
36
- {%- for item in scriptData.jscdns -%}
37
- {{item | replace:"$folderName", page.folderName | replace: "$fileName", page.fileName | replace: "$lang", page.lang |
38
- replace: "$tool", page.tool }}
39
- {%- endfor -%}
40
- {%- endif -%}
41
-
42
- {%- if page.layout == "frame" -%}
43
- {%- assign font = "PT Sans" -%}
44
- {%- endif -%}
45
-
46
- {%- if page.layout == "photo-effects-home" -%}
47
- {%- assign font = "PT Sans" -%}
48
- {%- endif -%}
49
-
50
- {%- if page.layout == "calculator" -%}
454
+ <script
455
+ defer
456
+ src="{{path}}"
457
+ data-folderName="{{page.folderName}}"
458
+ data-lang="{{page.lang}}"
459
+ data-fileName="{{page.fileName}}"
460
+ data-tool="{{page.tool}}"
461
+ data-permalink="{{page.permalink}}"
462
+ {%-
463
+ if
464
+ site.crossorigin
465
+ -%}
466
+ {{
467
+ }}
468
+ crossorigin
469
+ {%-
470
+ endif
471
+ -%}
472
+ ></script>
473
+ {%- endfor -%} {%- endif -%} {%- if scriptData.jscdns -%} {%- for item in
474
+ scriptData.jscdns -%} {{item | replace:"$folderName", page.folderName | replace:
475
+ "$fileName", page.fileName | replace: "$lang", page.lang | replace: "$tool",
476
+ page.tool }} {%- endfor -%} {%- endif -%} {%- if page.layout == "frame" -%} {%-
477
+ assign font = "PT Sans" -%} {%- endif -%} {%- if page.layout ==
478
+ "photo-effects-home" -%} {%- assign font = "PT Sans" -%} {%- endif -%} {%- if
479
+ page.layout == "calculator" -%}
51
480
  <script defer src="/assets/js/calculator-tooltip.js"></script>
481
+ {%- endif -%} {%- if page.layout == 'home-1' or page.layout == "feature-1" -%}
482
+ {%- assign font = "Inter" -%} {%- endif -%}
483
+ <link
484
+ rel="stylesheet"
485
+ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
486
+ integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
487
+ crossorigin="anonymous"
488
+ referrerpolicy="no-referrer"
489
+ />
490
+ {%- if page.layout == "feature" -%}
491
+ <script>
492
+ const toaster = document.querySelector(".toaster");
493
+ if (
494
+ !/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
495
+ navigator.userAgent
496
+ )
497
+ ) {
498
+ if (navigator.userAgent.indexOf("Mac OS X") != -1) {
499
+ toaster.innerHTML = `Press Command + D to Bookmark this page`;
500
+ } else {
501
+ toaster.innerHTML = `Press Ctrl + D to Bookmark this page`;
502
+ }
503
+ }
504
+ setTimeout(() => {
505
+ toaster.style.display = "none";
506
+ }, 20000);
507
+ </script>
52
508
  {%- endif -%}
53
-
54
- {%- if page.layout == 'home-1' or page.layout == "feature-1" -%}
55
- {%- assign font = "Inter" -%}
56
- {%- endif -%}
57
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
58
- integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
59
- crossorigin="anonymous" referrerpolicy="no-referrer" />
@@ -192,7 +192,8 @@
192
192
  </div>
193
193
  </div>
194
194
  </section>
195
- {%- assign showFaqs= true -%} {%- for item in site.noFaqsList -%} {%- if
195
+ {%- if page.layout == "feature" -%} {%- include bookmark.html -%} {%- endif
196
+ -%} {%- assign showFaqs= true -%} {%- for item in site.noFaqsList -%} {%- if
196
197
  item == page.lang -%} {%- assign showFaqs = false -%} {%- break -%} {%- else
197
198
  -%} {%- assign showFaqs = true -%} {%- endif -%} {%- endfor -%} {%- if
198
199
  showFaqs == true -%} {%- if featureData.FAQ.size>0 -%}
data/assets/css/tools.css CHANGED
@@ -1309,3 +1309,20 @@ ol li::marker {
1309
1309
  .audio-h2 {
1310
1310
  font-size: 22px;
1311
1311
  }
1312
+ .toaster {
1313
+ top: 15px;
1314
+ padding: 12px 20px;
1315
+ color: #fff;
1316
+ display: inline-block;
1317
+ box-shadow: 0 3px 6px -1px rgb(0 0 0 / 12%),
1318
+ 0 10px 36px -4px rgb(77 96 232 / 30%);
1319
+ background: linear-gradient(to right, rgb(221, 36, 118), rgb(255, 81, 47));
1320
+ position: fixed;
1321
+ transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);
1322
+ border-radius: 2px;
1323
+ right: 15px;
1324
+ cursor: pointer;
1325
+ text-decoration: none;
1326
+ max-width: calc(50% - 20px);
1327
+ z-index: 2147483647;
1328
+ }
@@ -1,44 +1,68 @@
1
- $('.nav-tabs a.nav-tab-link').click(function () {
2
- $('.nav-tabs a.nav-tab-link').removeClass('active')
3
- })
1
+ let showPop = false;
2
+ if (
3
+ !localStorage.getItem("timeDisplayed") ||
4
+ new Date().getTime() - localStorage.getItem("timeDisplayed") >=
5
+ 60000 * 24 * 60
6
+ ) {
7
+ showPop = true;
8
+ localStorage.setItem("timeDisplayed", new Date().getTime());
9
+ } else {
10
+ showPop = false;
11
+ }
12
+ let freeCount = localStorage.getItem("freeCount");
13
+ if (!freeCount) {
14
+ freeCount = 0;
15
+ }
16
+ localStorage.setItem(
17
+ "freeCount",
18
+ Number(freeCount) < 5 ? Number(freeCount) + 1 : 5
19
+ );
20
+ if (freeCount >= 5 || showPop) {
21
+ $(".nav-tabs a.nav-tab-link").click(function () {
22
+ $(".nav-tabs a.nav-tab-link").removeClass("active");
23
+ });
4
24
 
5
- const detect = document.querySelector('#detect')
6
- const wrapper = document.querySelector('.wrapper')
7
- const closePopup = document.getElementsByClassName('closePopup')
8
- const extensions = document.querySelector('.extensions')
25
+ const detect = document.querySelector("#detect");
26
+ const wrapper = document.querySelector(".wrapper");
27
+ const closePopup = document.getElementsByClassName("closePopup");
28
+ const extensions = document.querySelector(".extensions");
9
29
 
10
- const refresh = () => {
11
- location.reload()
12
- }
30
+ const refresh = () => {
31
+ location.reload();
32
+ };
13
33
 
14
- let adsBtn = document.querySelector('.allow-ads-btn')
15
- adsBtn.addEventListener('click', () => {
16
- extensions.classList.add('show')
17
- })
34
+ let adsBtn = document.querySelector(".allow-ads-btn");
35
+ adsBtn.addEventListener("click", () => {
36
+ extensions.classList.add("show");
37
+ });
18
38
 
19
- let adClasses = [
20
- 'ad',
21
- 'ads',
22
- 'adsbox',
23
- 'doubleclick',
24
- 'ad-placement',
25
- 'ad-placeholder',
26
- 'adbadge',
27
- 'BannerAd',
28
- ]
29
- for (let item of adClasses) {
30
- detect.classList.add(item)
31
- }
39
+ let adClasses = [
40
+ "ad",
41
+ "ads",
42
+ "adsbox",
43
+ "doubleclick",
44
+ "ad-placement",
45
+ "ad-placeholder",
46
+ "adbadge",
47
+ "BannerAd",
48
+ ];
49
+ for (let item of adClasses) {
50
+ detect.classList.add(item);
51
+ }
32
52
 
33
- let getProperty = window.getComputedStyle(detect).getPropertyValue('display')
34
- if (!wrapper.classList.contains('show')) {
35
- getProperty == 'none'
36
- ? wrapper.classList.add('show')
37
- : wrapper.classList.remove('show')
53
+ let getProperty = window.getComputedStyle(detect).getPropertyValue("display");
54
+ console.log(getProperty);
55
+ if (!wrapper.classList.contains("show")) {
56
+ getProperty == "none"
57
+ ? wrapper.classList.add("show")
58
+ : wrapper.classList.remove("show");
59
+ }
60
+ closePopup[0].addEventListener("click", () => {
61
+ wrapper.classList.remove("show");
62
+ localStorage.setItem("freeCount", 0);
63
+ });
64
+ closePopup[1].addEventListener("click", () => {
65
+ extensions.classList.remove("show");
66
+ localStorage.setItem("freeCount", 0);
67
+ });
38
68
  }
39
- closePopup[0].addEventListener('click', () => {
40
- wrapper.classList.remove('show')
41
- })
42
- closePopup[1].addEventListener('click', () => {
43
- extensions.classList.remove('show')
44
- })
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appscms-tools-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - vivek-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-14 00:00:00.000000000 Z
11
+ date: 2022-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -2395,6 +2395,7 @@ files:
2395
2395
  - _includes/author_bio.html
2396
2396
  - _includes/authors/authors.html
2397
2397
  - _includes/batch-conversion.html
2398
+ - _includes/bookmark.html
2398
2399
  - _includes/cssfile/links.html
2399
2400
  - _includes/custom-head.html
2400
2401
  - _includes/customblog/recentposts.html