rink.js 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -6
- package/dist/rink.esm.js +120 -92
- package/dist/rink.esm.js.map +1 -1
- package/dist/rink.js +115 -87
- package/dist/rink.js.map +1 -1
- package/dist/rink.min.js +1 -1
- package/package.json +2 -1
- package/src/rink.ts +70 -41
- package/src/ts/api.ts +1 -1
- package/src/ts/constant.ts +1 -1
- package/src/ts/data/default.ts +5 -1
- package/src/ts/data/enum.ts +1 -1
- package/src/ts/data/is.ts +5 -1
- package/src/ts/dom/document-element.ts +1 -1
- package/src/ts/options/config.ts +3 -1
- package/src/ts/type.ts +9 -2
package/README.md
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
Rink.js
|
|
3
3
|
|
|
4
4
|
[](https://twitter.com/intent/tweet?text=Rink.js%2C%20a%20free%20JavaScript%json%20converter&url=https://github.com/williamtroup/Rink.js&hashtags=javascript,json,html,converter)
|
|
5
|
-
[](https://www.npmjs.com/package/rink.js)
|
|
6
|
+
[](https://www.nuget.org/packages/Rink.js/)
|
|
7
7
|
[](https://github.com/williamtroup/Rink.js/blob/main/LICENSE.txt)
|
|
8
8
|
[](https://github.com/williamtroup/Rink.js/discussions)
|
|
9
9
|
[](https://william-troup.com/)
|
|
10
10
|
</h1>
|
|
11
11
|
|
|
12
12
|
> <p align="center">🔗 A JavaScript library for generating responsive HTML link targets.</p>
|
|
13
|
-
> <p align="center">v1.
|
|
13
|
+
> <p align="center">v1.1.0</p>
|
|
14
14
|
<br />
|
|
15
15
|
<br />
|
|
16
16
|
|
|
@@ -20,6 +20,8 @@ Rink.js
|
|
|
20
20
|
- 😏 Zero-dependencies and extremely lightweight!
|
|
21
21
|
- 🦾 Written in TypeScript, allowing greater support for React, Angular, and other libraries!
|
|
22
22
|
- 💻 Full API available via public functions.
|
|
23
|
+
- ⭐ Default sizes consistent with Bootstrap: sm, md, lg, xl, xxl.
|
|
24
|
+
- 🌈 Set your own custom size attributes!
|
|
23
25
|
<br />
|
|
24
26
|
<br />
|
|
25
27
|
|
|
@@ -42,7 +44,7 @@ npm install rink.js
|
|
|
42
44
|
Or, you can also use the following CDN links:
|
|
43
45
|
|
|
44
46
|
```markdown
|
|
45
|
-
https://cdn.jsdelivr.net/gh/williamtroup/Rink.js@1.
|
|
47
|
+
https://cdn.jsdelivr.net/gh/williamtroup/Rink.js@1.1.0/dist/rink.min.js
|
|
46
48
|
```
|
|
47
49
|
<br>
|
|
48
50
|
<br>
|
|
@@ -72,7 +74,7 @@ Make sure you include the "DOCTYPE html" tag at the top of your HTML, as follows
|
|
|
72
74
|
<br>
|
|
73
75
|
|
|
74
76
|
|
|
75
|
-
### 3.
|
|
77
|
+
### 3. Setup Anchor Tags:
|
|
76
78
|
|
|
77
79
|
```markdown
|
|
78
80
|
<a href="https://www.william-troup.com/" data-rink-js-sm="_blank" target="_self">Test Link SM</a>
|
|
@@ -80,7 +82,7 @@ Make sure you include the "DOCTYPE html" tag at the top of your HTML, as follows
|
|
|
80
82
|
<a href="https://www.william-troup.com/" data-rink-js-lg="_blank" target="_self">Test Link LG</a>
|
|
81
83
|
<a href="https://www.william-troup.com/" data-rink-js-xl="_blank" target="_self">Test Link XL</a>
|
|
82
84
|
<a href="https://www.william-troup.com/" data-rink-js-xxl="_blank" target="_self">Test Link XXL</a>
|
|
83
|
-
<a href="https://www.william-troup.com/" data-rink-js-800="_blank"
|
|
85
|
+
<a href="https://www.william-troup.com/" data-rink-js-800="_blank" data-rink-js-lg="_parent">Test Link (800, MD)</a>
|
|
84
86
|
```
|
|
85
87
|
|
|
86
88
|
<br>
|
package/dist/rink.esm.js
CHANGED
|
@@ -13,10 +13,14 @@ var t;
|
|
|
13
13
|
return e(t) && typeof t === "string";
|
|
14
14
|
}
|
|
15
15
|
t.definedString = r;
|
|
16
|
-
function
|
|
16
|
+
function o(t) {
|
|
17
17
|
return e(t) && typeof t === "number";
|
|
18
18
|
}
|
|
19
|
-
t.definedNumber =
|
|
19
|
+
t.definedNumber = o;
|
|
20
|
+
function i(t) {
|
|
21
|
+
return e(t) && typeof t === "boolean";
|
|
22
|
+
}
|
|
23
|
+
t.definedBoolean = i;
|
|
20
24
|
})(t || (t = {}));
|
|
21
25
|
|
|
22
26
|
var e;
|
|
@@ -30,10 +34,14 @@ var e;
|
|
|
30
34
|
return t.definedNumber(e) ? e : n;
|
|
31
35
|
}
|
|
32
36
|
e.getNumber = r;
|
|
33
|
-
function
|
|
37
|
+
function o(e, n) {
|
|
34
38
|
return t.definedObject(e) ? e : n;
|
|
35
39
|
}
|
|
36
|
-
e.getObject =
|
|
40
|
+
e.getObject = o;
|
|
41
|
+
function i(e, n) {
|
|
42
|
+
return t.definedBoolean(e) ? e : n;
|
|
43
|
+
}
|
|
44
|
+
e.getBoolean = i;
|
|
37
45
|
})(e || (e = {}));
|
|
38
46
|
|
|
39
47
|
var n;
|
|
@@ -44,6 +52,8 @@ var n;
|
|
|
44
52
|
function n(t = null) {
|
|
45
53
|
const n = e.getObject(t, {});
|
|
46
54
|
n.responsiveDelay = e.getNumber(n.responsiveDelay, 250);
|
|
55
|
+
n.defaultTarget = e.getString(n.defaultTarget, "_self");
|
|
56
|
+
n.removeAttributes = e.getBoolean(n.removeAttributes, true);
|
|
47
57
|
return n;
|
|
48
58
|
}
|
|
49
59
|
t.get = n;
|
|
@@ -63,7 +73,7 @@ var r;
|
|
|
63
73
|
t.onContentLoaded = e;
|
|
64
74
|
})(r || (r = {}));
|
|
65
75
|
|
|
66
|
-
var
|
|
76
|
+
var o;
|
|
67
77
|
|
|
68
78
|
(t => {
|
|
69
79
|
t.RINK_JS_ATTRIBUTE_NAME_SM = "data-rink-js-sm";
|
|
@@ -72,154 +82,172 @@ var i;
|
|
|
72
82
|
t.RINK_JS_ATTRIBUTE_NAME_XL = "data-rink-js-xl";
|
|
73
83
|
t.RINK_JS_ATTRIBUTE_NAME_XXL = "data-rink-js-xxl";
|
|
74
84
|
t.RINK_JS_ATTRIBUTE_NAME_CUSTOM = "data-rink-js";
|
|
75
|
-
})(
|
|
85
|
+
})(o || (o = {}));
|
|
76
86
|
|
|
77
87
|
(() => {
|
|
78
88
|
let e = {};
|
|
79
|
-
const
|
|
80
|
-
let
|
|
81
|
-
function
|
|
82
|
-
|
|
83
|
-
const e =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
for (let t = 0; t < o; t++) {
|
|
90
|
-
if (a(i[t])) {
|
|
91
|
-
n = true;
|
|
92
|
-
}
|
|
89
|
+
const i = {};
|
|
90
|
+
let a = 0;
|
|
91
|
+
function s() {
|
|
92
|
+
let t = false;
|
|
93
|
+
const e = document.getElementsByTagName("a");
|
|
94
|
+
const n = [].slice.call(e);
|
|
95
|
+
const r = n.length;
|
|
96
|
+
for (let e = 0; e < r; e++) {
|
|
97
|
+
if (c(n[e])) {
|
|
98
|
+
t = true;
|
|
93
99
|
}
|
|
94
100
|
}
|
|
95
|
-
if (
|
|
101
|
+
if (t) {
|
|
96
102
|
window.addEventListener("resize", d);
|
|
97
|
-
|
|
103
|
+
T();
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
|
-
function
|
|
106
|
+
function c(e) {
|
|
101
107
|
let n = false;
|
|
102
|
-
const r = e.getAttribute(
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const
|
|
108
|
+
const r = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_SM);
|
|
109
|
+
const i = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_MD);
|
|
110
|
+
const a = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_LG);
|
|
111
|
+
const s = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_XL);
|
|
112
|
+
const c = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_XXL);
|
|
107
113
|
if (t.definedString(r)) {
|
|
108
|
-
u(576, e, r);
|
|
114
|
+
u(576, e, r, o.RINK_JS_ATTRIBUTE_NAME_SM);
|
|
109
115
|
n = true;
|
|
110
116
|
}
|
|
111
|
-
if (t.definedString(
|
|
112
|
-
u(768, e, o);
|
|
117
|
+
if (t.definedString(i)) {
|
|
118
|
+
u(768, e, i, o.RINK_JS_ATTRIBUTE_NAME_MD);
|
|
113
119
|
n = true;
|
|
114
120
|
}
|
|
115
|
-
if (t.definedString(
|
|
116
|
-
u(992, e,
|
|
121
|
+
if (t.definedString(a)) {
|
|
122
|
+
u(992, e, a, o.RINK_JS_ATTRIBUTE_NAME_LG);
|
|
117
123
|
n = true;
|
|
118
124
|
}
|
|
119
|
-
if (t.definedString(
|
|
120
|
-
u(1200, e,
|
|
125
|
+
if (t.definedString(s)) {
|
|
126
|
+
u(1200, e, s, o.RINK_JS_ATTRIBUTE_NAME_XL);
|
|
121
127
|
n = true;
|
|
122
128
|
}
|
|
123
|
-
if (t.definedString(
|
|
124
|
-
u(1400, e,
|
|
129
|
+
if (t.definedString(c)) {
|
|
130
|
+
u(1400, e, c, o.RINK_JS_ATTRIBUTE_NAME_XXL);
|
|
125
131
|
n = true;
|
|
126
132
|
}
|
|
127
|
-
|
|
128
|
-
f(e);
|
|
129
|
-
}
|
|
133
|
+
f(e);
|
|
130
134
|
return n;
|
|
131
135
|
}
|
|
132
136
|
function f(e) {
|
|
133
137
|
const n = e.attributes;
|
|
134
138
|
const r = n.length;
|
|
135
|
-
for (let
|
|
136
|
-
const r = n[
|
|
137
|
-
if (r.name.startsWith(
|
|
139
|
+
for (let i = 0; i < r; i++) {
|
|
140
|
+
const r = n[i];
|
|
141
|
+
if (r.name.startsWith(o.RINK_JS_ATTRIBUTE_NAME_CUSTOM)) {
|
|
138
142
|
const n = r.name.split("-");
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
if (t.
|
|
142
|
-
u(parseInt(
|
|
143
|
+
const o = n[n.length - 1];
|
|
144
|
+
const i = r.value;
|
|
145
|
+
if (t.definedNumber(parseInt(o)) && t.definedString(i)) {
|
|
146
|
+
u(parseInt(o), e, i, r.name);
|
|
143
147
|
}
|
|
144
148
|
}
|
|
145
149
|
}
|
|
146
150
|
}
|
|
147
|
-
function u(
|
|
148
|
-
if (!Object.prototype.hasOwnProperty.call(
|
|
149
|
-
|
|
151
|
+
function u(n, r, o, a) {
|
|
152
|
+
if (!Object.prototype.hasOwnProperty.call(i, n.toString())) {
|
|
153
|
+
i[n.toString()] = [];
|
|
154
|
+
}
|
|
155
|
+
let s = r.getAttribute("target");
|
|
156
|
+
if (!t.definedString(s)) {
|
|
157
|
+
s = e.defaultTarget;
|
|
150
158
|
}
|
|
151
|
-
|
|
152
|
-
anchorTag:
|
|
153
|
-
newTarget:
|
|
154
|
-
originalTarget:
|
|
159
|
+
i[n.toString()].push({
|
|
160
|
+
anchorTag: r,
|
|
161
|
+
newTarget: o,
|
|
162
|
+
originalTarget: s
|
|
155
163
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (s !== 0) {
|
|
159
|
-
clearTimeout(s);
|
|
164
|
+
if (e.removeAttributes) {
|
|
165
|
+
r.removeAttribute(a);
|
|
160
166
|
}
|
|
161
|
-
s = setTimeout(() => g(), e.responsiveDelay);
|
|
162
|
-
}
|
|
163
|
-
function g() {
|
|
164
|
-
T(l());
|
|
165
167
|
}
|
|
166
|
-
function
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
168
|
+
function d() {
|
|
169
|
+
if (a !== 0) {
|
|
170
|
+
clearTimeout(a);
|
|
171
|
+
}
|
|
172
|
+
a = setTimeout(() => T(), e.responsiveDelay);
|
|
173
|
+
}
|
|
174
|
+
function T() {
|
|
175
|
+
g(_());
|
|
176
|
+
}
|
|
177
|
+
function _() {
|
|
178
|
+
const t = {
|
|
179
|
+
screenWidths: [],
|
|
180
|
+
anchorTags: []
|
|
181
|
+
};
|
|
182
|
+
const e = l();
|
|
183
|
+
const n = e.length;
|
|
184
|
+
for (let r = 0; r < n; r++) {
|
|
185
|
+
const n = e[r];
|
|
186
|
+
if (Object.prototype.hasOwnProperty.call(i, n)) {
|
|
187
|
+
const e = window.innerWidth;
|
|
188
|
+
const r = parseInt(n);
|
|
189
|
+
if (e >= r) {
|
|
190
|
+
const e = i[n];
|
|
191
|
+
const r = e.length;
|
|
192
|
+
t.screenWidths.push(n);
|
|
193
|
+
for (let n = 0; n < r; n++) {
|
|
194
|
+
const r = e[n];
|
|
195
|
+
if (t.anchorTags.indexOf(r.anchorTag) === -1) {
|
|
196
|
+
t.anchorTags.push(r.anchorTag);
|
|
197
|
+
r.anchorTag.setAttribute("target", r.newTarget);
|
|
198
|
+
}
|
|
179
199
|
}
|
|
180
200
|
}
|
|
181
201
|
}
|
|
182
202
|
}
|
|
183
203
|
return t;
|
|
184
204
|
}
|
|
185
|
-
function
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
205
|
+
function g(t) {
|
|
206
|
+
const e = l();
|
|
207
|
+
const n = e.length;
|
|
208
|
+
for (let r = 0; r < n; r++) {
|
|
209
|
+
const n = e[r];
|
|
210
|
+
if (Object.prototype.hasOwnProperty.call(i, n)) {
|
|
211
|
+
if (t.screenWidths.indexOf(n) === -1) {
|
|
212
|
+
const e = i[n];
|
|
213
|
+
const r = e.length;
|
|
214
|
+
for (let n = 0; n < r; n++) {
|
|
215
|
+
const r = e[n];
|
|
216
|
+
if (t.anchorTags.indexOf(r.anchorTag) === -1) {
|
|
217
|
+
r.anchorTag.setAttribute("target", r.originalTarget);
|
|
218
|
+
}
|
|
194
219
|
}
|
|
195
220
|
}
|
|
196
221
|
}
|
|
197
222
|
}
|
|
198
223
|
}
|
|
199
|
-
|
|
224
|
+
function l() {
|
|
225
|
+
return Object.keys(i).sort((t, e) => e.toLowerCase().localeCompare(t.toLowerCase()));
|
|
226
|
+
}
|
|
227
|
+
const A = {
|
|
200
228
|
setConfiguration: r => {
|
|
201
229
|
if (t.definedObject(r)) {
|
|
202
230
|
const t = e;
|
|
203
|
-
let
|
|
231
|
+
let o = false;
|
|
204
232
|
for (const e in r) {
|
|
205
233
|
if (Object.prototype.hasOwnProperty.call(r, e) && Object.prototype.hasOwnProperty.call(t, e) && t[e] !== r[e]) {
|
|
206
234
|
t[e] = r[e];
|
|
207
|
-
|
|
235
|
+
o = true;
|
|
208
236
|
}
|
|
209
237
|
}
|
|
210
|
-
if (
|
|
238
|
+
if (o) {
|
|
211
239
|
e = n.Options.get(t);
|
|
212
240
|
}
|
|
213
241
|
}
|
|
214
|
-
return
|
|
242
|
+
return A;
|
|
215
243
|
},
|
|
216
|
-
getVersion: () => "1.
|
|
244
|
+
getVersion: () => "1.1.0"
|
|
217
245
|
};
|
|
218
246
|
(() => {
|
|
219
247
|
e = n.Options.get();
|
|
220
|
-
r.onContentLoaded(() =>
|
|
248
|
+
r.onContentLoaded(() => s());
|
|
221
249
|
if (!t.defined(window.$rink)) {
|
|
222
|
-
window.$rink =
|
|
250
|
+
window.$rink = A;
|
|
223
251
|
}
|
|
224
252
|
})();
|
|
225
253
|
})();//# sourceMappingURL=rink.esm.js.map
|
package/dist/rink.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/williamtroup/Documents/GitHub%20Repos/Rink.js/dist/rink.esm.js"],"names":["Is","Is2","defined","value","toString","definedObject","object","definedString","definedNumber","Default","Default2","getString","defaultValue","getNumber","getObject","Configuration","Configuration2","Options","Options2","get","newConfigurationOptions","configurationOptions","responsiveDelay","DocumentElement","DocumentElement2","onContentLoaded","onLoadFunc","document","readyState","addEventListener","Constant","Constant2","RINK_JS_ATTRIBUTE_NAME_SM","RINK_JS_ATTRIBUTE_NAME_MD","RINK_JS_ATTRIBUTE_NAME_LG","RINK_JS_ATTRIBUTE_NAME_XL","RINK_JS_ATTRIBUTE_NAME_XXL","RINK_JS_ATTRIBUTE_NAME_CUSTOM","_configurationOptions","_screenWidthAnchors","_screenWidthChangeTimer","render","
|
|
1
|
+
{"version":3,"sources":["/Users/williamtroup/Documents/GitHub%20Repos/Rink.js/dist/rink.esm.js"],"names":["Is","Is2","defined","value","toString","definedObject","object","definedString","definedNumber","definedBoolean","Default","Default2","getString","defaultValue","getNumber","getObject","getBoolean","Configuration","Configuration2","Options","Options2","get","newConfigurationOptions","configurationOptions","responsiveDelay","defaultTarget","removeAttributes","DocumentElement","DocumentElement2","onContentLoaded","onLoadFunc","document","readyState","addEventListener","Constant","Constant2","RINK_JS_ATTRIBUTE_NAME_SM","RINK_JS_ATTRIBUTE_NAME_MD","RINK_JS_ATTRIBUTE_NAME_LG","RINK_JS_ATTRIBUTE_NAME_XL","RINK_JS_ATTRIBUTE_NAME_XXL","RINK_JS_ATTRIBUTE_NAME_CUSTOM","_configurationOptions","_screenWidthAnchors","_screenWidthChangeTimer","render","anchorTagsFound","domElements","getElementsByTagName","elements","slice","call","elementsLength","length","elementIndex","renderElement","window","onWindowResize","updateAnchorTags","anchorElement","added","attributeSmData","getAttribute","attributeMdData","attributeLgData","attributeXlData","attributeXxlData","addAnchorToScreenWidthAnchors","findCustomSizeAttributes","anchorTagAttributes","attributes","anchorTagAttributesLength","anchorTagAttributeIndex","anchorTagAttribute","name","startsWith","attributeNameParts","split","attributeWidth","anchorTarget","parseInt","screenSize","newTarget","attributeName","Object","prototype","hasOwnProperty","originalTarget","push","anchorTag","removeAttribute","clearTimeout","setTimeout","updateAnchorTagTargetsNotProcessed","updateAnchorTagTargets","anchorTagsProcessed","screenWidths","anchorTags","getSortedScreenWidths","screenWidthsLength","screenWidthIndex","screenWidth","windowWidth","innerWidth","windowCheckWidth","anchorTagsLength","anchorTagIndex","indexOf","setAttribute","keys","sort","optionA","optionB","toLowerCase","localeCompare","_public","setConfiguration","existingConfigurationOptions","configurationOptionsHaveChanged","propertyName","getVersion","$rink"],"mappings":"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","sourcesContent":[null]}
|
package/dist/rink.js
CHANGED
|
@@ -15,10 +15,14 @@ var t;
|
|
|
15
15
|
return e(t) && typeof t === "string";
|
|
16
16
|
}
|
|
17
17
|
t.definedString = r;
|
|
18
|
-
function
|
|
18
|
+
function o(t) {
|
|
19
19
|
return e(t) && typeof t === "number";
|
|
20
20
|
}
|
|
21
|
-
t.definedNumber =
|
|
21
|
+
t.definedNumber = o;
|
|
22
|
+
function i(t) {
|
|
23
|
+
return e(t) && typeof t === "boolean";
|
|
24
|
+
}
|
|
25
|
+
t.definedBoolean = i;
|
|
22
26
|
})(t || (t = {}));
|
|
23
27
|
|
|
24
28
|
var e;
|
|
@@ -32,10 +36,14 @@ var e;
|
|
|
32
36
|
return t.definedNumber(e) ? e : n;
|
|
33
37
|
}
|
|
34
38
|
e.getNumber = r;
|
|
35
|
-
function
|
|
39
|
+
function o(e, n) {
|
|
36
40
|
return t.definedObject(e) ? e : n;
|
|
37
41
|
}
|
|
38
|
-
e.getObject =
|
|
42
|
+
e.getObject = o;
|
|
43
|
+
function i(e, n) {
|
|
44
|
+
return t.definedBoolean(e) ? e : n;
|
|
45
|
+
}
|
|
46
|
+
e.getBoolean = i;
|
|
39
47
|
})(e || (e = {}));
|
|
40
48
|
|
|
41
49
|
var n;
|
|
@@ -46,6 +54,8 @@ var n;
|
|
|
46
54
|
function n(t = null) {
|
|
47
55
|
const n = e.getObject(t, {});
|
|
48
56
|
n.responsiveDelay = e.getNumber(n.responsiveDelay, 250);
|
|
57
|
+
n.defaultTarget = e.getString(n.defaultTarget, "_self");
|
|
58
|
+
n.removeAttributes = e.getBoolean(n.removeAttributes, true);
|
|
49
59
|
return n;
|
|
50
60
|
}
|
|
51
61
|
t.get = n;
|
|
@@ -65,7 +75,7 @@ var r;
|
|
|
65
75
|
t.onContentLoaded = e;
|
|
66
76
|
})(r || (r = {}));
|
|
67
77
|
|
|
68
|
-
var
|
|
78
|
+
var o;
|
|
69
79
|
|
|
70
80
|
(t => {
|
|
71
81
|
t.RINK_JS_ATTRIBUTE_NAME_SM = "data-rink-js-sm";
|
|
@@ -74,154 +84,172 @@ var i;
|
|
|
74
84
|
t.RINK_JS_ATTRIBUTE_NAME_XL = "data-rink-js-xl";
|
|
75
85
|
t.RINK_JS_ATTRIBUTE_NAME_XXL = "data-rink-js-xxl";
|
|
76
86
|
t.RINK_JS_ATTRIBUTE_NAME_CUSTOM = "data-rink-js";
|
|
77
|
-
})(
|
|
87
|
+
})(o || (o = {}));
|
|
78
88
|
|
|
79
89
|
(() => {
|
|
80
90
|
let e = {};
|
|
81
|
-
const
|
|
91
|
+
const i = {};
|
|
82
92
|
let s = 0;
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
const e =
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
for (let t = 0; t < o; t++) {
|
|
92
|
-
if (a(i[t])) {
|
|
93
|
-
n = true;
|
|
94
|
-
}
|
|
93
|
+
function a() {
|
|
94
|
+
let t = false;
|
|
95
|
+
const e = document.getElementsByTagName("a");
|
|
96
|
+
const n = [].slice.call(e);
|
|
97
|
+
const r = n.length;
|
|
98
|
+
for (let e = 0; e < r; e++) {
|
|
99
|
+
if (c(n[e])) {
|
|
100
|
+
t = true;
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
|
-
if (
|
|
103
|
+
if (t) {
|
|
98
104
|
window.addEventListener("resize", d);
|
|
99
|
-
|
|
105
|
+
T();
|
|
100
106
|
}
|
|
101
107
|
}
|
|
102
|
-
function
|
|
108
|
+
function c(e) {
|
|
103
109
|
let n = false;
|
|
104
|
-
const r = e.getAttribute(
|
|
105
|
-
const
|
|
106
|
-
const s = e.getAttribute(
|
|
107
|
-
const
|
|
108
|
-
const
|
|
110
|
+
const r = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_SM);
|
|
111
|
+
const i = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_MD);
|
|
112
|
+
const s = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_LG);
|
|
113
|
+
const a = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_XL);
|
|
114
|
+
const c = e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_XXL);
|
|
109
115
|
if (t.definedString(r)) {
|
|
110
|
-
u(576, e, r);
|
|
116
|
+
u(576, e, r, o.RINK_JS_ATTRIBUTE_NAME_SM);
|
|
111
117
|
n = true;
|
|
112
118
|
}
|
|
113
|
-
if (t.definedString(
|
|
114
|
-
u(768, e, o);
|
|
119
|
+
if (t.definedString(i)) {
|
|
120
|
+
u(768, e, i, o.RINK_JS_ATTRIBUTE_NAME_MD);
|
|
115
121
|
n = true;
|
|
116
122
|
}
|
|
117
123
|
if (t.definedString(s)) {
|
|
118
|
-
u(992, e, s);
|
|
119
|
-
n = true;
|
|
120
|
-
}
|
|
121
|
-
if (t.definedString(c)) {
|
|
122
|
-
u(1200, e, c);
|
|
124
|
+
u(992, e, s, o.RINK_JS_ATTRIBUTE_NAME_LG);
|
|
123
125
|
n = true;
|
|
124
126
|
}
|
|
125
127
|
if (t.definedString(a)) {
|
|
126
|
-
u(
|
|
128
|
+
u(1200, e, a, o.RINK_JS_ATTRIBUTE_NAME_XL);
|
|
127
129
|
n = true;
|
|
128
130
|
}
|
|
129
|
-
if (
|
|
130
|
-
|
|
131
|
+
if (t.definedString(c)) {
|
|
132
|
+
u(1400, e, c, o.RINK_JS_ATTRIBUTE_NAME_XXL);
|
|
133
|
+
n = true;
|
|
131
134
|
}
|
|
135
|
+
f(e);
|
|
132
136
|
return n;
|
|
133
137
|
}
|
|
134
138
|
function f(e) {
|
|
135
139
|
const n = e.attributes;
|
|
136
140
|
const r = n.length;
|
|
137
|
-
for (let
|
|
138
|
-
const r = n[
|
|
139
|
-
if (r.name.startsWith(
|
|
141
|
+
for (let i = 0; i < r; i++) {
|
|
142
|
+
const r = n[i];
|
|
143
|
+
if (r.name.startsWith(o.RINK_JS_ATTRIBUTE_NAME_CUSTOM)) {
|
|
140
144
|
const n = r.name.split("-");
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
if (t.
|
|
144
|
-
u(parseInt(
|
|
145
|
+
const o = n[n.length - 1];
|
|
146
|
+
const i = r.value;
|
|
147
|
+
if (t.definedNumber(parseInt(o)) && t.definedString(i)) {
|
|
148
|
+
u(parseInt(o), e, i, r.name);
|
|
145
149
|
}
|
|
146
150
|
}
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
|
-
function u(
|
|
150
|
-
if (!Object.prototype.hasOwnProperty.call(
|
|
151
|
-
|
|
153
|
+
function u(n, r, o, s) {
|
|
154
|
+
if (!Object.prototype.hasOwnProperty.call(i, n.toString())) {
|
|
155
|
+
i[n.toString()] = [];
|
|
152
156
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
let a = r.getAttribute("target");
|
|
158
|
+
if (!t.definedString(a)) {
|
|
159
|
+
a = e.defaultTarget;
|
|
160
|
+
}
|
|
161
|
+
i[n.toString()].push({
|
|
162
|
+
anchorTag: r,
|
|
163
|
+
newTarget: o,
|
|
164
|
+
originalTarget: a
|
|
157
165
|
});
|
|
166
|
+
if (e.removeAttributes) {
|
|
167
|
+
r.removeAttribute(s);
|
|
168
|
+
}
|
|
158
169
|
}
|
|
159
170
|
function d() {
|
|
160
171
|
if (s !== 0) {
|
|
161
172
|
clearTimeout(s);
|
|
162
173
|
}
|
|
163
|
-
s = setTimeout(() =>
|
|
164
|
-
}
|
|
165
|
-
function
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
function
|
|
169
|
-
const t =
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
174
|
+
s = setTimeout(() => T(), e.responsiveDelay);
|
|
175
|
+
}
|
|
176
|
+
function T() {
|
|
177
|
+
g(_());
|
|
178
|
+
}
|
|
179
|
+
function _() {
|
|
180
|
+
const t = {
|
|
181
|
+
screenWidths: [],
|
|
182
|
+
anchorTags: []
|
|
183
|
+
};
|
|
184
|
+
const e = l();
|
|
185
|
+
const n = e.length;
|
|
186
|
+
for (let r = 0; r < n; r++) {
|
|
187
|
+
const n = e[r];
|
|
188
|
+
if (Object.prototype.hasOwnProperty.call(i, n)) {
|
|
189
|
+
const e = window.innerWidth;
|
|
190
|
+
const r = parseInt(n);
|
|
191
|
+
if (e >= r) {
|
|
192
|
+
const e = i[n];
|
|
193
|
+
const r = e.length;
|
|
194
|
+
t.screenWidths.push(n);
|
|
195
|
+
for (let n = 0; n < r; n++) {
|
|
196
|
+
const r = e[n];
|
|
197
|
+
if (t.anchorTags.indexOf(r.anchorTag) === -1) {
|
|
198
|
+
t.anchorTags.push(r.anchorTag);
|
|
199
|
+
r.anchorTag.setAttribute("target", r.newTarget);
|
|
200
|
+
}
|
|
181
201
|
}
|
|
182
202
|
}
|
|
183
203
|
}
|
|
184
204
|
}
|
|
185
205
|
return t;
|
|
186
206
|
}
|
|
187
|
-
function
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
207
|
+
function g(t) {
|
|
208
|
+
const e = l();
|
|
209
|
+
const n = e.length;
|
|
210
|
+
for (let r = 0; r < n; r++) {
|
|
211
|
+
const n = e[r];
|
|
212
|
+
if (Object.prototype.hasOwnProperty.call(i, n)) {
|
|
213
|
+
if (t.screenWidths.indexOf(n) === -1) {
|
|
214
|
+
const e = i[n];
|
|
215
|
+
const r = e.length;
|
|
216
|
+
for (let n = 0; n < r; n++) {
|
|
217
|
+
const r = e[n];
|
|
218
|
+
if (t.anchorTags.indexOf(r.anchorTag) === -1) {
|
|
219
|
+
r.anchorTag.setAttribute("target", r.originalTarget);
|
|
220
|
+
}
|
|
196
221
|
}
|
|
197
222
|
}
|
|
198
223
|
}
|
|
199
224
|
}
|
|
200
225
|
}
|
|
201
|
-
|
|
226
|
+
function l() {
|
|
227
|
+
return Object.keys(i).sort((t, e) => e.toLowerCase().localeCompare(t.toLowerCase()));
|
|
228
|
+
}
|
|
229
|
+
const A = {
|
|
202
230
|
setConfiguration: r => {
|
|
203
231
|
if (t.definedObject(r)) {
|
|
204
232
|
const t = e;
|
|
205
|
-
let
|
|
233
|
+
let o = false;
|
|
206
234
|
for (const e in r) {
|
|
207
235
|
if (Object.prototype.hasOwnProperty.call(r, e) && Object.prototype.hasOwnProperty.call(t, e) && t[e] !== r[e]) {
|
|
208
236
|
t[e] = r[e];
|
|
209
|
-
|
|
237
|
+
o = true;
|
|
210
238
|
}
|
|
211
239
|
}
|
|
212
|
-
if (
|
|
240
|
+
if (o) {
|
|
213
241
|
e = n.Options.get(t);
|
|
214
242
|
}
|
|
215
243
|
}
|
|
216
|
-
return
|
|
244
|
+
return A;
|
|
217
245
|
},
|
|
218
|
-
getVersion: () => "1.
|
|
246
|
+
getVersion: () => "1.1.0"
|
|
219
247
|
};
|
|
220
248
|
(() => {
|
|
221
249
|
e = n.Options.get();
|
|
222
|
-
r.onContentLoaded(() =>
|
|
250
|
+
r.onContentLoaded(() => a());
|
|
223
251
|
if (!t.defined(window.$rink)) {
|
|
224
|
-
window.$rink =
|
|
252
|
+
window.$rink = A;
|
|
225
253
|
}
|
|
226
254
|
})();
|
|
227
255
|
})();//# sourceMappingURL=rink.js.map
|
package/dist/rink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/williamtroup/Documents/GitHub%20Repos/Rink.js/dist/rink.js"],"names":["Is","Is2","defined","value","toString","definedObject","object","definedString","definedNumber","Default","Default2","getString","defaultValue","getNumber","getObject","Configuration","Configuration2","Options","Options2","get","newConfigurationOptions","configurationOptions","responsiveDelay","DocumentElement","DocumentElement2","onContentLoaded","onLoadFunc","document","readyState","addEventListener","Constant","Constant2","RINK_JS_ATTRIBUTE_NAME_SM","RINK_JS_ATTRIBUTE_NAME_MD","RINK_JS_ATTRIBUTE_NAME_LG","RINK_JS_ATTRIBUTE_NAME_XL","RINK_JS_ATTRIBUTE_NAME_XXL","RINK_JS_ATTRIBUTE_NAME_CUSTOM","_configurationOptions","_screenWidthAnchors","_screenWidthChangeTimer","render","
|
|
1
|
+
{"version":3,"sources":["/Users/williamtroup/Documents/GitHub%20Repos/Rink.js/dist/rink.js"],"names":["Is","Is2","defined","value","toString","definedObject","object","definedString","definedNumber","definedBoolean","Default","Default2","getString","defaultValue","getNumber","getObject","getBoolean","Configuration","Configuration2","Options","Options2","get","newConfigurationOptions","configurationOptions","responsiveDelay","defaultTarget","removeAttributes","DocumentElement","DocumentElement2","onContentLoaded","onLoadFunc","document","readyState","addEventListener","Constant","Constant2","RINK_JS_ATTRIBUTE_NAME_SM","RINK_JS_ATTRIBUTE_NAME_MD","RINK_JS_ATTRIBUTE_NAME_LG","RINK_JS_ATTRIBUTE_NAME_XL","RINK_JS_ATTRIBUTE_NAME_XXL","RINK_JS_ATTRIBUTE_NAME_CUSTOM","_configurationOptions","_screenWidthAnchors","_screenWidthChangeTimer","render","anchorTagsFound","domElements","getElementsByTagName","elements","slice","call","elementsLength","length","elementIndex","renderElement","window","onWindowResize","updateAnchorTags","anchorElement","added","attributeSmData","getAttribute","attributeMdData","attributeLgData","attributeXlData","attributeXxlData","addAnchorToScreenWidthAnchors","findCustomSizeAttributes","anchorTagAttributes","attributes","anchorTagAttributesLength","anchorTagAttributeIndex","anchorTagAttribute","name","startsWith","attributeNameParts","split","attributeWidth","anchorTarget","parseInt","screenSize","newTarget","attributeName","Object","prototype","hasOwnProperty","originalTarget","push","anchorTag","removeAttribute","clearTimeout","setTimeout","updateAnchorTagTargetsNotProcessed","updateAnchorTagTargets","anchorTagsProcessed","screenWidths","anchorTags","getSortedScreenWidths","screenWidthsLength","screenWidthIndex","screenWidth","windowWidth","innerWidth","windowCheckWidth","anchorTagsLength","anchorTagIndex","indexOf","setAttribute","keys","sort","optionA","optionB","toLowerCase","localeCompare","_public","setConfiguration","existingConfigurationOptions","configurationOptionsHaveChanged","propertyName","getVersion","$rink"],"mappings":"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","sourcesContent":[null]}
|
package/dist/rink.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t,e,n,r,i,
|
|
1
|
+
"use strict";var t,e,n,r,o,i,a;(t=>{function e(t){return null!=t&&""!==t.toString()}t.defined=e,t.definedObject=function(t){return e(t)&&"object"==typeof t},t.definedString=function(t){return e(t)&&"string"==typeof t},t.definedNumber=function(t){return e(t)&&"number"==typeof t},t.definedBoolean=function(t){return e(t)&&"boolean"==typeof t}})(t||(t={})),(n=e||(e={})).getString=function(e,n){return t.definedString(e)?e:n},n.getNumber=function(e,n){return t.definedNumber(e)?e:n},n.getObject=function(e,n){return t.definedObject(e)?e:n},n.getBoolean=function(e,n){return t.definedBoolean(e)?e:n},(t=>{let n;(n=t.Options||(t.Options={})).get=function(t=null){const n=e.getObject(t,{});return n.responsiveDelay=e.getNumber(n.responsiveDelay,250),n.defaultTarget=e.getString(n.defaultTarget,"_self"),n.removeAttributes=e.getBoolean(n.removeAttributes,!0),n}})(r||(r={})),(o||(o={})).onContentLoaded=function(t){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>t()):t()},(a=i||(i={})).RINK_JS_ATTRIBUTE_NAME_SM="data-rink-js-sm",a.RINK_JS_ATTRIBUTE_NAME_MD="data-rink-js-md",a.RINK_JS_ATTRIBUTE_NAME_LG="data-rink-js-lg",a.RINK_JS_ATTRIBUTE_NAME_XL="data-rink-js-xl",a.RINK_JS_ATTRIBUTE_NAME_XXL="data-rink-js-xxl",a.RINK_JS_ATTRIBUTE_NAME_CUSTOM="data-rink-js",(()=>{let e={};const n={};let a=0;function s(e){let n=!1;const r=e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_SM),o=e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_MD),a=e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_LG),s=e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_XL),d=e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_XXL);return t.definedString(r)&&(c(576,e,r,i.RINK_JS_ATTRIBUTE_NAME_SM),n=!0),t.definedString(o)&&(c(768,e,o,i.RINK_JS_ATTRIBUTE_NAME_MD),n=!0),t.definedString(a)&&(c(992,e,a,i.RINK_JS_ATTRIBUTE_NAME_LG),n=!0),t.definedString(s)&&(c(1200,e,s,i.RINK_JS_ATTRIBUTE_NAME_XL),n=!0),t.definedString(d)&&(c(1400,e,d,i.RINK_JS_ATTRIBUTE_NAME_XXL),n=!0),function(e){const n=e.attributes,r=n.length;for(let o=0;o<r;o++){const r=n[o];if(r.name.startsWith(i.RINK_JS_ATTRIBUTE_NAME_CUSTOM)){const n=r.name.split("-"),o=n[n.length-1],i=r.value;t.definedNumber(parseInt(o))&&t.definedString(i)&&c(parseInt(o),e,i,r.name)}}}(e),n}function c(r,o,i,a){Object.prototype.hasOwnProperty.call(n,r.toString())||(n[r.toString()]=[]);let s=o.getAttribute("target");t.definedString(s)||(s=e.defaultTarget),n[r.toString()].push({anchorTag:o,newTarget:i,originalTarget:s}),e.removeAttributes&&o.removeAttribute(a)}function d(){0!==a&&clearTimeout(a),a=setTimeout(()=>T(),e.responsiveDelay)}function T(){!function(t){const e=u(),r=e.length;for(let o=0;o<r;o++){const r=e[o];if(Object.prototype.hasOwnProperty.call(n,r)&&-1===t.screenWidths.indexOf(r)){const e=n[r],o=e.length;for(let n=0;n<o;n++){const r=e[n];-1===t.anchorTags.indexOf(r.anchorTag)&&r.anchorTag.setAttribute("target",r.originalTarget)}}}}(function(){const t={screenWidths:[],anchorTags:[]},e=u(),r=e.length;for(let o=0;o<r;o++){const r=e[o];if(Object.prototype.hasOwnProperty.call(n,r)){if(window.innerWidth>=parseInt(r)){const e=n[r],o=e.length;t.screenWidths.push(r);for(let n=0;n<o;n++){const r=e[n];-1===t.anchorTags.indexOf(r.anchorTag)&&(t.anchorTags.push(r.anchorTag),r.anchorTag.setAttribute("target",r.newTarget))}}}}return t}())}function u(){return Object.keys(n).sort((t,e)=>e.toLowerCase().localeCompare(t.toLowerCase()))}const _={setConfiguration:n=>{if(t.definedObject(n)){const t=e;let o=!1;for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==n[e]&&(t[e]=n[e],o=!0);o&&(e=r.Options.get(t))}return _},getVersion:()=>"1.1.0"};e=r.Options.get(),o.onContentLoaded(()=>function(){let t=!1;const e=document.getElementsByTagName("a"),n=[].slice.call(e),r=n.length;for(let e=0;e<r;e++)s(n[e])&&(t=!0);t&&(window.addEventListener("resize",d),T())}()),t.defined(window.$rink)||(window.$rink=_)})();
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "rink.js",
|
|
3
3
|
"title": "Rink.js",
|
|
4
4
|
"description": "A JavaScript library for generating responsive HTML link targets.",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.1.0",
|
|
6
6
|
"homepage": "https://github.com/williamtroup/Rink.js",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Bunoon"
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"main": "dist/rink.js",
|
|
31
31
|
"types": "dist/rink.d.ts",
|
|
32
32
|
"scripts": {
|
|
33
|
+
"build-all-verify-and-fix": "npx eslint '**/*.ts' --fix && npm run build-all",
|
|
33
34
|
"build-all-verify": "npx eslint '**/*.ts' && npm run build-all",
|
|
34
35
|
"build-all": "npm run build && npm run build-minimized",
|
|
35
36
|
"build": "tsup --config tsup.build.config.ts && tsup --config tsup.build.esm.config.ts",
|
package/src/rink.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A JavaScript library for generating responsive HTML link targets.
|
|
5
5
|
*
|
|
6
6
|
* @file rink.ts
|
|
7
|
-
* @version v1.
|
|
7
|
+
* @version v1.1.0
|
|
8
8
|
* @author Bunoon
|
|
9
9
|
* @license MIT License
|
|
10
10
|
* @copyright Bunoon 2026
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
import {
|
|
15
|
+
type AnchorTagsProcessed,
|
|
15
16
|
type AnchorOptions,
|
|
16
17
|
type ConfigurationOptions } from "./ts/type";
|
|
17
18
|
|
|
@@ -40,19 +41,15 @@ import { Char, ScreenSize, Value } from "./ts/data/enum";
|
|
|
40
41
|
*/
|
|
41
42
|
|
|
42
43
|
function render() : void {
|
|
43
|
-
const tagTypes: string[] = [ "a" ];
|
|
44
|
-
const tagTypesLength: number = tagTypes.length;
|
|
45
44
|
let anchorTagsFound: boolean = false;
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const elementsLength: number = elements.length;
|
|
46
|
+
const domElements: HTMLCollectionOf<Element> = document.getElementsByTagName( "a" );
|
|
47
|
+
const elements: HTMLElement[] = [].slice.call( domElements );
|
|
48
|
+
const elementsLength: number = elements.length;
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
50
|
+
for ( let elementIndex: number = 0; elementIndex < elementsLength; elementIndex++ ) {
|
|
51
|
+
if ( renderElement( elements[ elementIndex ] as HTMLAnchorElement ) ) {
|
|
52
|
+
anchorTagsFound = true;
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
|
|
@@ -73,38 +70,36 @@ import { Char, ScreenSize, Value } from "./ts/data/enum";
|
|
|
73
70
|
const attributeXxlData: string = anchorElement.getAttribute( Constant.RINK_JS_ATTRIBUTE_NAME_XXL )!;
|
|
74
71
|
|
|
75
72
|
if ( Is.definedString( attributeSmData ) ) {
|
|
76
|
-
addAnchorToScreenWidthAnchors( ScreenSize.sm, anchorElement, attributeSmData );
|
|
73
|
+
addAnchorToScreenWidthAnchors( ScreenSize.sm, anchorElement, attributeSmData, Constant.RINK_JS_ATTRIBUTE_NAME_SM );
|
|
77
74
|
added = true;
|
|
78
75
|
}
|
|
79
76
|
|
|
80
77
|
if ( Is.definedString( attributeMdData ) ) {
|
|
81
|
-
addAnchorToScreenWidthAnchors( ScreenSize.md, anchorElement, attributeMdData );
|
|
78
|
+
addAnchorToScreenWidthAnchors( ScreenSize.md, anchorElement, attributeMdData, Constant.RINK_JS_ATTRIBUTE_NAME_MD );
|
|
82
79
|
added = true;
|
|
83
80
|
}
|
|
84
81
|
|
|
85
82
|
if ( Is.definedString( attributeLgData ) ) {
|
|
86
|
-
addAnchorToScreenWidthAnchors( ScreenSize.lg, anchorElement, attributeLgData );
|
|
83
|
+
addAnchorToScreenWidthAnchors( ScreenSize.lg, anchorElement, attributeLgData, Constant.RINK_JS_ATTRIBUTE_NAME_LG );
|
|
87
84
|
added = true;
|
|
88
85
|
}
|
|
89
86
|
|
|
90
87
|
if ( Is.definedString( attributeXlData ) ) {
|
|
91
|
-
addAnchorToScreenWidthAnchors( ScreenSize.xl, anchorElement, attributeXlData );
|
|
88
|
+
addAnchorToScreenWidthAnchors( ScreenSize.xl, anchorElement, attributeXlData, Constant.RINK_JS_ATTRIBUTE_NAME_XL );
|
|
92
89
|
added = true;
|
|
93
90
|
}
|
|
94
91
|
|
|
95
92
|
if ( Is.definedString( attributeXxlData ) ) {
|
|
96
|
-
addAnchorToScreenWidthAnchors( ScreenSize.xxl, anchorElement, attributeXxlData );
|
|
93
|
+
addAnchorToScreenWidthAnchors( ScreenSize.xxl, anchorElement, attributeXxlData, Constant.RINK_JS_ATTRIBUTE_NAME_XXL );
|
|
97
94
|
added = true;
|
|
98
95
|
}
|
|
99
96
|
|
|
100
|
-
|
|
101
|
-
findCustomSizeAnchor( anchorElement );
|
|
102
|
-
}
|
|
97
|
+
findCustomSizeAttributes( anchorElement );
|
|
103
98
|
|
|
104
99
|
return added;
|
|
105
100
|
}
|
|
106
101
|
|
|
107
|
-
function
|
|
102
|
+
function findCustomSizeAttributes( anchorElement: HTMLAnchorElement ) : void {
|
|
108
103
|
const anchorTagAttributes: NamedNodeMap = anchorElement.attributes;
|
|
109
104
|
const anchorTagAttributesLength: number = anchorTagAttributes.length;
|
|
110
105
|
|
|
@@ -116,23 +111,33 @@ import { Char, ScreenSize, Value } from "./ts/data/enum";
|
|
|
116
111
|
const attributeWidth: string = attributeNameParts[ attributeNameParts.length - 1 ];
|
|
117
112
|
const anchorTarget: string = anchorTagAttribute.value;
|
|
118
113
|
|
|
119
|
-
if ( Is.definedString( anchorTarget ) ) {
|
|
120
|
-
addAnchorToScreenWidthAnchors( parseInt( attributeWidth ), anchorElement, anchorTarget );
|
|
114
|
+
if ( Is.definedNumber( parseInt( attributeWidth ) ) && Is.definedString( anchorTarget ) ) {
|
|
115
|
+
addAnchorToScreenWidthAnchors( parseInt( attributeWidth ), anchorElement, anchorTarget, anchorTagAttribute.name );
|
|
121
116
|
}
|
|
122
117
|
}
|
|
123
118
|
}
|
|
124
119
|
}
|
|
125
120
|
|
|
126
|
-
function addAnchorToScreenWidthAnchors( screenSize: number, anchorElement: HTMLAnchorElement, newTarget: string ) : void {
|
|
121
|
+
function addAnchorToScreenWidthAnchors( screenSize: number, anchorElement: HTMLAnchorElement, newTarget: string, attributeName: string ) : void {
|
|
127
122
|
if ( !Object.prototype.hasOwnProperty.call( _screenWidthAnchors, screenSize.toString() ) ) {
|
|
128
123
|
_screenWidthAnchors[ screenSize.toString() ] = [];
|
|
129
124
|
}
|
|
130
125
|
|
|
126
|
+
let originalTarget: string | null = anchorElement.getAttribute( "target" );
|
|
127
|
+
|
|
128
|
+
if ( !Is.definedString( originalTarget ) ) {
|
|
129
|
+
originalTarget = _configurationOptions.defaultTarget!;
|
|
130
|
+
}
|
|
131
|
+
|
|
131
132
|
_screenWidthAnchors[ screenSize.toString() ].push( {
|
|
132
133
|
anchorTag: anchorElement,
|
|
133
134
|
newTarget: newTarget,
|
|
134
|
-
originalTarget:
|
|
135
|
+
originalTarget: originalTarget,
|
|
135
136
|
} as AnchorOptions );
|
|
137
|
+
|
|
138
|
+
if ( _configurationOptions.removeAttributes ) {
|
|
139
|
+
anchorElement.removeAttribute( attributeName );
|
|
140
|
+
}
|
|
136
141
|
}
|
|
137
142
|
|
|
138
143
|
|
|
@@ -143,60 +148,84 @@ import { Char, ScreenSize, Value } from "./ts/data/enum";
|
|
|
143
148
|
*/
|
|
144
149
|
|
|
145
150
|
function onWindowResize() : void {
|
|
146
|
-
if (_screenWidthChangeTimer !== 0) {
|
|
147
|
-
clearTimeout(_screenWidthChangeTimer);
|
|
151
|
+
if ( _screenWidthChangeTimer !== 0 ) {
|
|
152
|
+
clearTimeout( _screenWidthChangeTimer );
|
|
148
153
|
}
|
|
149
154
|
|
|
150
|
-
_screenWidthChangeTimer = setTimeout( () => updateAnchorTags()
|
|
155
|
+
_screenWidthChangeTimer = setTimeout( () => updateAnchorTags(), _configurationOptions.responsiveDelay! );
|
|
151
156
|
}
|
|
152
157
|
|
|
153
|
-
function updateAnchorTags() {
|
|
154
|
-
|
|
158
|
+
function updateAnchorTags() : void {
|
|
159
|
+
updateAnchorTagTargetsNotProcessed( updateAnchorTagTargets() );
|
|
155
160
|
}
|
|
156
161
|
|
|
157
|
-
function updateAnchorTagTargets() :
|
|
158
|
-
const
|
|
162
|
+
function updateAnchorTagTargets() : AnchorTagsProcessed {
|
|
163
|
+
const anchorTagsProcessed: AnchorTagsProcessed = {
|
|
164
|
+
screenWidths: [],
|
|
165
|
+
anchorTags: [],
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const screenWidths: string[] = getSortedScreenWidths();
|
|
169
|
+
const screenWidthsLength: number = screenWidths.length;
|
|
170
|
+
|
|
171
|
+
for ( let screenWidthIndex = 0; screenWidthIndex < screenWidthsLength; screenWidthIndex++ ) {
|
|
172
|
+
const screenWidth: string = screenWidths[ screenWidthIndex ];
|
|
159
173
|
|
|
160
|
-
for ( const screenWidth in _screenWidthAnchors ) {
|
|
161
174
|
if ( Object.prototype.hasOwnProperty.call( _screenWidthAnchors, screenWidth ) ) {
|
|
162
175
|
const windowWidth: number = window.innerWidth;
|
|
163
|
-
const windowCheckWidth: number = parseInt(screenWidth);
|
|
176
|
+
const windowCheckWidth: number = parseInt( screenWidth );
|
|
164
177
|
|
|
165
178
|
if ( windowWidth >= windowCheckWidth ) {
|
|
166
179
|
const anchorTags: AnchorOptions[] = _screenWidthAnchors[ screenWidth ];
|
|
167
180
|
const anchorTagsLength: number = anchorTags.length;
|
|
168
181
|
|
|
169
|
-
|
|
182
|
+
anchorTagsProcessed.screenWidths.push( screenWidth );
|
|
170
183
|
|
|
171
184
|
for ( let anchorTagIndex = 0; anchorTagIndex < anchorTagsLength; anchorTagIndex++ ) {
|
|
172
185
|
const anchorTag: AnchorOptions = anchorTags[ anchorTagIndex ];
|
|
173
186
|
|
|
174
|
-
|
|
187
|
+
if ( anchorTagsProcessed.anchorTags.indexOf( anchorTag.anchorTag ) === Value.notFound ) {
|
|
188
|
+
anchorTagsProcessed.anchorTags.push( anchorTag.anchorTag );
|
|
189
|
+
anchorTag.anchorTag.setAttribute( "target", anchorTag.newTarget! );
|
|
190
|
+
}
|
|
175
191
|
}
|
|
176
192
|
}
|
|
177
193
|
}
|
|
178
194
|
}
|
|
179
195
|
|
|
180
|
-
return
|
|
196
|
+
return anchorTagsProcessed;
|
|
181
197
|
}
|
|
182
198
|
|
|
183
|
-
function
|
|
184
|
-
|
|
199
|
+
function updateAnchorTagTargetsNotProcessed( anchorTagsProcessed: AnchorTagsProcessed ) : void {
|
|
200
|
+
const screenWidths: string[] = getSortedScreenWidths();
|
|
201
|
+
const screenWidthsLength: number = screenWidths.length;
|
|
202
|
+
|
|
203
|
+
for ( let screenWidthIndex = 0; screenWidthIndex < screenWidthsLength; screenWidthIndex++ ) {
|
|
204
|
+
const screenWidth: string = screenWidths[ screenWidthIndex ];
|
|
205
|
+
|
|
185
206
|
if ( Object.prototype.hasOwnProperty.call( _screenWidthAnchors, screenWidth ) ) {
|
|
186
|
-
if (
|
|
207
|
+
if ( anchorTagsProcessed.screenWidths.indexOf( screenWidth ) === Value.notFound ) {
|
|
187
208
|
const anchorTags: AnchorOptions[] = _screenWidthAnchors[ screenWidth ];
|
|
188
209
|
const anchorTagsLength: number = anchorTags.length;
|
|
189
210
|
|
|
190
211
|
for ( let anchorTagIndex = 0; anchorTagIndex < anchorTagsLength; anchorTagIndex++ ) {
|
|
191
212
|
const anchorTag: AnchorOptions = anchorTags[ anchorTagIndex ];
|
|
192
213
|
|
|
193
|
-
|
|
214
|
+
if ( anchorTagsProcessed.anchorTags.indexOf( anchorTag.anchorTag ) === Value.notFound ) {
|
|
215
|
+
anchorTag.anchorTag.setAttribute( "target", anchorTag.originalTarget! );
|
|
216
|
+
}
|
|
194
217
|
}
|
|
195
218
|
}
|
|
196
219
|
}
|
|
197
220
|
}
|
|
198
221
|
}
|
|
199
222
|
|
|
223
|
+
function getSortedScreenWidths() : string[] {
|
|
224
|
+
return Object.keys( _screenWidthAnchors ).sort( ( optionA: string, optionB: string ) : number =>
|
|
225
|
+
optionB.toLowerCase().localeCompare( optionA.toLowerCase() )
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
|
|
200
229
|
|
|
201
230
|
/*
|
|
202
231
|
* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
@@ -239,7 +268,7 @@ import { Char, ScreenSize, Value } from "./ts/data/enum";
|
|
|
239
268
|
*/
|
|
240
269
|
|
|
241
270
|
getVersion: () : string => {
|
|
242
|
-
return "1.
|
|
271
|
+
return "1.1.0";
|
|
243
272
|
}
|
|
244
273
|
};
|
|
245
274
|
|
package/src/ts/api.ts
CHANGED
package/src/ts/constant.ts
CHANGED
package/src/ts/data/default.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A JavaScript library for generating responsive HTML link targets.
|
|
5
5
|
*
|
|
6
6
|
* @file default.ts
|
|
7
|
-
* @version v1.
|
|
7
|
+
* @version v1.1.0
|
|
8
8
|
* @author Bunoon
|
|
9
9
|
* @license MIT License
|
|
10
10
|
* @copyright Bunoon 2026
|
|
@@ -26,4 +26,8 @@ export namespace Default {
|
|
|
26
26
|
export function getObject( value: any, defaultValue: object ) : any {
|
|
27
27
|
return Is.definedObject( value ) ? value : defaultValue;
|
|
28
28
|
}
|
|
29
|
+
|
|
30
|
+
export function getBoolean( value: any, defaultValue: boolean ) : boolean {
|
|
31
|
+
return Is.definedBoolean( value ) ? value : defaultValue;
|
|
32
|
+
}
|
|
29
33
|
}
|
package/src/ts/data/enum.ts
CHANGED
package/src/ts/data/is.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A JavaScript library for generating responsive HTML link targets.
|
|
5
5
|
*
|
|
6
6
|
* @file is.ts
|
|
7
|
-
* @version v1.
|
|
7
|
+
* @version v1.1.0
|
|
8
8
|
* @author Bunoon
|
|
9
9
|
* @license MIT License
|
|
10
10
|
* @copyright Bunoon 2026
|
|
@@ -30,4 +30,8 @@ export namespace Is {
|
|
|
30
30
|
export function definedNumber( object: any ) : boolean {
|
|
31
31
|
return defined( object ) && typeof object === "number";
|
|
32
32
|
}
|
|
33
|
+
|
|
34
|
+
export function definedBoolean( object: unknown ) : boolean {
|
|
35
|
+
return defined( object ) && typeof object === "boolean";
|
|
36
|
+
}
|
|
33
37
|
}
|
package/src/ts/options/config.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A JavaScript library for generating responsive HTML link targets.
|
|
5
5
|
*
|
|
6
6
|
* @file config.ts
|
|
7
|
-
* @version v1.
|
|
7
|
+
* @version v1.1.0
|
|
8
8
|
* @author Bunoon
|
|
9
9
|
* @license MIT License
|
|
10
10
|
* @copyright Bunoon 2026
|
|
@@ -20,6 +20,8 @@ export namespace Configuration {
|
|
|
20
20
|
export function get( newConfigurationOptions: unknown = null ) : ConfigurationOptions {
|
|
21
21
|
const configurationOptions: ConfigurationOptions = Default.getObject( newConfigurationOptions, {} as ConfigurationOptions );
|
|
22
22
|
configurationOptions.responsiveDelay = Default.getNumber( configurationOptions.responsiveDelay, 250 );
|
|
23
|
+
configurationOptions.defaultTarget = Default.getString( configurationOptions.defaultTarget, "_self" );
|
|
24
|
+
configurationOptions.removeAttributes = Default.getBoolean( configurationOptions.removeAttributes, true );
|
|
23
25
|
|
|
24
26
|
return configurationOptions;
|
|
25
27
|
}
|
package/src/ts/type.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A JavaScript library for generating responsive HTML link targets.
|
|
5
5
|
*
|
|
6
6
|
* @file type.ts
|
|
7
|
-
* @version v1.
|
|
7
|
+
* @version v1.1.0
|
|
8
8
|
* @author Bunoon
|
|
9
9
|
* @license MIT License
|
|
10
10
|
* @copyright Bunoon 2026
|
|
@@ -13,10 +13,17 @@
|
|
|
13
13
|
|
|
14
14
|
export type ConfigurationOptions = {
|
|
15
15
|
responsiveDelay?: number;
|
|
16
|
+
defaultTarget?: string;
|
|
17
|
+
removeAttributes?: boolean;
|
|
16
18
|
};
|
|
17
19
|
|
|
18
20
|
export type AnchorOptions = {
|
|
19
21
|
anchorTag: HTMLAnchorElement;
|
|
20
22
|
newTarget?: string;
|
|
21
23
|
originalTarget?: string;
|
|
22
|
-
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type AnchorTagsProcessed = {
|
|
27
|
+
screenWidths: string[];
|
|
28
|
+
anchorTags: HTMLAnchorElement[];
|
|
29
|
+
}
|