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 CHANGED
@@ -2,15 +2,15 @@
2
2
  Rink.js
3
3
 
4
4
  [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](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
- [![npm](https://img.shields.io/badge/npmjs-v1.0.0-blue)](https://www.npmjs.com/package/rink.js)
6
- [![nuget](https://img.shields.io/badge/nuget-v1.0.0-purple)](https://www.nuget.org/packages/Rink.js/)
5
+ [![npm](https://img.shields.io/badge/npmjs-v1.1.0-blue)](https://www.npmjs.com/package/rink.js)
6
+ [![nuget](https://img.shields.io/badge/nuget-v1.1.0-purple)](https://www.nuget.org/packages/Rink.js/)
7
7
  [![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Rink.js/blob/main/LICENSE.txt)
8
8
  [![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Rink.js/discussions)
9
9
  [![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](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.0.0</p>
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.0.0/dist/rink.min.js
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. Getting/Rendering JSON:
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" target="_self">Test Link (800)</a>
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 i(t) {
16
+ function o(t) {
17
17
  return e(t) && typeof t === "number";
18
18
  }
19
- t.definedNumber = i;
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 i(e, n) {
37
+ function o(e, n) {
34
38
  return t.definedObject(e) ? e : n;
35
39
  }
36
- e.getObject = i;
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 i;
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
- })(i || (i = {}));
85
+ })(o || (o = {}));
76
86
 
77
87
  (() => {
78
88
  let e = {};
79
- const o = {};
80
- let s = 0;
81
- function c() {
82
- const t = [ "a" ];
83
- const e = t.length;
84
- let n = false;
85
- for (let r = 0; r < e; r++) {
86
- const e = document.getElementsByTagName(t[r]);
87
- const i = [].slice.call(e);
88
- const o = i.length;
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 (n) {
101
+ if (t) {
96
102
  window.addEventListener("resize", d);
97
- g();
103
+ T();
98
104
  }
99
105
  }
100
- function a(e) {
106
+ function c(e) {
101
107
  let n = false;
102
- const r = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_SM);
103
- const o = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_MD);
104
- const s = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_LG);
105
- const c = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_XL);
106
- const a = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_XXL);
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(o)) {
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(s)) {
116
- u(992, e, s);
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(c)) {
120
- u(1200, e, c);
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(a)) {
124
- u(1400, e, a);
129
+ if (t.definedString(c)) {
130
+ u(1400, e, c, o.RINK_JS_ATTRIBUTE_NAME_XXL);
125
131
  n = true;
126
132
  }
127
- if (!n) {
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 o = 0; o < r; o++) {
136
- const r = n[o];
137
- if (r.name.startsWith(i.RINK_JS_ATTRIBUTE_NAME_CUSTOM)) {
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 i = n[n.length - 1];
140
- const o = r.value;
141
- if (t.definedString(o)) {
142
- u(parseInt(i), e, o);
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(t, e, n) {
148
- if (!Object.prototype.hasOwnProperty.call(o, t.toString())) {
149
- o[t.toString()] = [];
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
- o[t.toString()].push({
152
- anchorTag: e,
153
- newTarget: n,
154
- originalTarget: e.getAttribute("target")
159
+ i[n.toString()].push({
160
+ anchorTag: r,
161
+ newTarget: o,
162
+ originalTarget: s
155
163
  });
156
- }
157
- function d() {
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 l() {
167
- const t = [];
168
- for (const e in o) {
169
- if (Object.prototype.hasOwnProperty.call(o, e)) {
170
- const n = window.innerWidth;
171
- const r = parseInt(e);
172
- if (n >= r) {
173
- const n = o[e];
174
- const r = n.length;
175
- t.push(e);
176
- for (let t = 0; t < r; t++) {
177
- const e = n[t];
178
- e.anchorTag.setAttribute("target", e.newTarget);
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 T(t) {
186
- for (const e in o) {
187
- if (Object.prototype.hasOwnProperty.call(o, e)) {
188
- if (t.indexOf(e) === -1) {
189
- const t = o[e];
190
- const n = t.length;
191
- for (let e = 0; e < n; e++) {
192
- const n = t[e];
193
- n.anchorTag.setAttribute("target", n.originalTarget);
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
- const _ = {
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 i = false;
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
- i = true;
235
+ o = true;
208
236
  }
209
237
  }
210
- if (i) {
238
+ if (o) {
211
239
  e = n.Options.get(t);
212
240
  }
213
241
  }
214
- return _;
242
+ return A;
215
243
  },
216
- getVersion: () => "1.0.0"
244
+ getVersion: () => "1.1.0"
217
245
  };
218
246
  (() => {
219
247
  e = n.Options.get();
220
- r.onContentLoaded(() => c());
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
@@ -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","tagTypes","tagTypesLength","length","anchorTagsFound","tagTypeIndex","domElements","getElementsByTagName","elements","slice","call","elementsLength","elementIndex","renderElement","window","onWindowResize","updateAnchorTags","anchorElement","added","attributeSmData","getAttribute","attributeMdData","attributeLgData","attributeXlData","attributeXxlData","addAnchorToScreenWidthAnchors","findCustomSizeAnchor","anchorTagAttributes","attributes","anchorTagAttributesLength","anchorTagAttributeIndex","anchorTagAttribute","name","startsWith","attributeNameParts","split","attributeWidth","anchorTarget","parseInt","screenSize","newTarget","Object","prototype","hasOwnProperty","push","anchorTag","originalTarget","clearTimeout","setTimeout","updateAnchorTagsNotProcessed","updateAnchorTagTargets","screenWidthsProcessed","screenWidth","windowWidth","innerWidth","windowCheckWidth","anchorTags","anchorTagsLength","anchorTagIndex","setAttribute","indexOf","_public","setConfiguration","existingConfigurationOptions","configurationOptionsHaveChanged","propertyName","getVersion","$rink"],"mappings":"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","sourcesContent":[null]}
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 i(t) {
18
+ function o(t) {
19
19
  return e(t) && typeof t === "number";
20
20
  }
21
- t.definedNumber = i;
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 i(e, n) {
39
+ function o(e, n) {
36
40
  return t.definedObject(e) ? e : n;
37
41
  }
38
- e.getObject = i;
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 i;
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
- })(i || (i = {}));
87
+ })(o || (o = {}));
78
88
 
79
89
  (() => {
80
90
  let e = {};
81
- const o = {};
91
+ const i = {};
82
92
  let s = 0;
83
- function c() {
84
- const t = [ "a" ];
85
- const e = t.length;
86
- let n = false;
87
- for (let r = 0; r < e; r++) {
88
- const e = document.getElementsByTagName(t[r]);
89
- const i = [].slice.call(e);
90
- const o = i.length;
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 (n) {
103
+ if (t) {
98
104
  window.addEventListener("resize", d);
99
- g();
105
+ T();
100
106
  }
101
107
  }
102
- function a(e) {
108
+ function c(e) {
103
109
  let n = false;
104
- const r = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_SM);
105
- const o = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_MD);
106
- const s = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_LG);
107
- const c = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_XL);
108
- const a = e.getAttribute(i.RINK_JS_ATTRIBUTE_NAME_XXL);
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(o)) {
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(1400, e, a);
128
+ u(1200, e, a, o.RINK_JS_ATTRIBUTE_NAME_XL);
127
129
  n = true;
128
130
  }
129
- if (!n) {
130
- f(e);
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 o = 0; o < r; o++) {
138
- const r = n[o];
139
- if (r.name.startsWith(i.RINK_JS_ATTRIBUTE_NAME_CUSTOM)) {
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 i = n[n.length - 1];
142
- const o = r.value;
143
- if (t.definedString(o)) {
144
- u(parseInt(i), e, o);
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(t, e, n) {
150
- if (!Object.prototype.hasOwnProperty.call(o, t.toString())) {
151
- o[t.toString()] = [];
153
+ function u(n, r, o, s) {
154
+ if (!Object.prototype.hasOwnProperty.call(i, n.toString())) {
155
+ i[n.toString()] = [];
152
156
  }
153
- o[t.toString()].push({
154
- anchorTag: e,
155
- newTarget: n,
156
- originalTarget: e.getAttribute("target")
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(() => g(), e.responsiveDelay);
164
- }
165
- function g() {
166
- T(l());
167
- }
168
- function l() {
169
- const t = [];
170
- for (const e in o) {
171
- if (Object.prototype.hasOwnProperty.call(o, e)) {
172
- const n = window.innerWidth;
173
- const r = parseInt(e);
174
- if (n >= r) {
175
- const n = o[e];
176
- const r = n.length;
177
- t.push(e);
178
- for (let t = 0; t < r; t++) {
179
- const e = n[t];
180
- e.anchorTag.setAttribute("target", e.newTarget);
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 T(t) {
188
- for (const e in o) {
189
- if (Object.prototype.hasOwnProperty.call(o, e)) {
190
- if (t.indexOf(e) === -1) {
191
- const t = o[e];
192
- const n = t.length;
193
- for (let e = 0; e < n; e++) {
194
- const n = t[e];
195
- n.anchorTag.setAttribute("target", n.originalTarget);
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
- const _ = {
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 i = false;
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
- i = true;
237
+ o = true;
210
238
  }
211
239
  }
212
- if (i) {
240
+ if (o) {
213
241
  e = n.Options.get(t);
214
242
  }
215
243
  }
216
- return _;
244
+ return A;
217
245
  },
218
- getVersion: () => "1.0.0"
246
+ getVersion: () => "1.1.0"
219
247
  };
220
248
  (() => {
221
249
  e = n.Options.get();
222
- r.onContentLoaded(() => c());
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","tagTypes","tagTypesLength","length","anchorTagsFound","tagTypeIndex","domElements","getElementsByTagName","elements","slice","call","elementsLength","elementIndex","renderElement","window","onWindowResize","updateAnchorTags","anchorElement","added","attributeSmData","getAttribute","attributeMdData","attributeLgData","attributeXlData","attributeXxlData","addAnchorToScreenWidthAnchors","findCustomSizeAnchor","anchorTagAttributes","attributes","anchorTagAttributesLength","anchorTagAttributeIndex","anchorTagAttribute","name","startsWith","attributeNameParts","split","attributeWidth","anchorTarget","parseInt","screenSize","newTarget","Object","prototype","hasOwnProperty","push","anchorTag","originalTarget","clearTimeout","setTimeout","updateAnchorTagsNotProcessed","updateAnchorTagTargets","screenWidthsProcessed","screenWidth","windowWidth","innerWidth","windowCheckWidth","anchorTags","anchorTagsLength","anchorTagIndex","setAttribute","indexOf","_public","setConfiguration","existingConfigurationOptions","configurationOptionsHaveChanged","propertyName","getVersion","$rink"],"mappings":"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","sourcesContent":[null]}
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,o,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||(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},(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}})(r||(r={})),(i||(i={})).onContentLoaded=function(t){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>t()):t()},(a=o||(o={})).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 c(e){let n=!1;const r=e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_SM),i=e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_MD),a=e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_LG),c=e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_XL),d=e.getAttribute(o.RINK_JS_ATTRIBUTE_NAME_XXL);return t.definedString(r)&&(s(576,e,r),n=!0),t.definedString(i)&&(s(768,e,i),n=!0),t.definedString(a)&&(s(992,e,a),n=!0),t.definedString(c)&&(s(1200,e,c),n=!0),t.definedString(d)&&(s(1400,e,d),n=!0),n||function(e){const n=e.attributes,r=n.length;for(let i=0;i<r;i++){const r=n[i];if(r.name.startsWith(o.RINK_JS_ATTRIBUTE_NAME_CUSTOM)){const n=r.name.split("-"),i=n[n.length-1],o=r.value;t.definedString(o)&&s(parseInt(i),e,o)}}}(e),n}function s(t,e,r){Object.prototype.hasOwnProperty.call(n,t.toString())||(n[t.toString()]=[]),n[t.toString()].push({anchorTag:e,newTarget:r,originalTarget:e.getAttribute("target")})}function d(){0!==a&&clearTimeout(a),a=setTimeout(()=>u(),e.responsiveDelay)}function u(){!function(t){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&-1===t.indexOf(e)){const t=n[e],r=t.length;for(let e=0;e<r;e++){const n=t[e];n.anchorTag.setAttribute("target",n.originalTarget)}}}(function(){const t=[];for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){if(window.innerWidth>=parseInt(e)){const r=n[e],i=r.length;t.push(e);for(let t=0;t<i;t++){const e=r[t];e.anchorTag.setAttribute("target",e.newTarget)}}}return t}())}const g={setConfiguration:n=>{if(t.definedObject(n)){const t=e;let i=!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],i=!0);i&&(e=r.Options.get(t))}return g},getVersion:()=>"1.0.0"};e=r.Options.get(),i.onContentLoaded(()=>function(){const t=["a"],e=t.length;let n=!1;for(let r=0;r<e;r++){const e=document.getElementsByTagName(t[r]),i=[].slice.call(e),o=i.length;for(let t=0;t<o;t++)c(i[t])&&(n=!0)}n&&(window.addEventListener("resize",d),u())}()),t.defined(window.$rink)||(window.$rink=g)})();
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.0.0",
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.0.0
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
- for ( let tagTypeIndex: number = 0; tagTypeIndex < tagTypesLength; tagTypeIndex++ ) {
48
- const domElements: HTMLCollectionOf<Element> = document.getElementsByTagName( tagTypes[ tagTypeIndex ] );
49
- const elements: HTMLElement[] = [].slice.call( domElements );
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
- for ( let elementIndex: number = 0; elementIndex < elementsLength; elementIndex++ ) {
53
- if ( renderElement( elements[ elementIndex ] as HTMLAnchorElement ) ) {
54
- anchorTagsFound = true;
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
- if ( !added ) {
101
- findCustomSizeAnchor( anchorElement );
102
- }
97
+ findCustomSizeAttributes( anchorElement );
103
98
 
104
99
  return added;
105
100
  }
106
101
 
107
- function findCustomSizeAnchor( anchorElement: HTMLAnchorElement ) : void {
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: anchorElement.getAttribute( "target" )!
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() , _configurationOptions.responsiveDelay! );
155
+ _screenWidthChangeTimer = setTimeout( () => updateAnchorTags(), _configurationOptions.responsiveDelay! );
151
156
  }
152
157
 
153
- function updateAnchorTags() {
154
- updateAnchorTagsNotProcessed(updateAnchorTagTargets())
158
+ function updateAnchorTags() : void {
159
+ updateAnchorTagTargetsNotProcessed( updateAnchorTagTargets() );
155
160
  }
156
161
 
157
- function updateAnchorTagTargets() : string[] {
158
- const screenWidthsProcessed: string[] = [];
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
- screenWidthsProcessed.push( screenWidth );
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
- anchorTag.anchorTag.setAttribute( "target", anchorTag.newTarget! );
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 screenWidthsProcessed;
196
+ return anchorTagsProcessed;
181
197
  }
182
198
 
183
- function updateAnchorTagsNotProcessed( screenWidthsProcessed: string[] ) : void {
184
- for ( const screenWidth in _screenWidthAnchors ) {
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 ( screenWidthsProcessed.indexOf( screenWidth ) === Value.notFound ) {
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
- anchorTag.anchorTag.setAttribute( "target", anchorTag.originalTarget! );
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.0.0";
271
+ return "1.1.0";
243
272
  }
244
273
  };
245
274
 
package/src/ts/api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * A JavaScript library for generating responsive HTML link targets.
5
5
  *
6
6
  * @file api.ts
7
- * @version v1.0.0
7
+ * @version v1.1.0
8
8
  * @author Bunoon
9
9
  * @license MIT License
10
10
  * @copyright Bunoon 2026
@@ -4,7 +4,7 @@
4
4
  * A JavaScript library for generating responsive HTML link targets.
5
5
  *
6
6
  * @file constant.ts
7
- * @version v1.0.0
7
+ * @version v1.1.0
8
8
  * @author Bunoon
9
9
  * @license MIT License
10
10
  * @copyright Bunoon 2026
@@ -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.0.0
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
  }
@@ -4,7 +4,7 @@
4
4
  * A JavaScript library for generating responsive HTML link targets.
5
5
  *
6
6
  * @file enum.ts
7
- * @version v1.0.0
7
+ * @version v1.1.0
8
8
  * @author Bunoon
9
9
  * @license MIT License
10
10
  * @copyright Bunoon 2026
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.0.0
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
  }
@@ -4,7 +4,7 @@
4
4
  * A JavaScript library for generating responsive HTML link targets.
5
5
  *
6
6
  * @file document-element.ts
7
- * @version v1.0.0
7
+ * @version v1.1.0
8
8
  * @author Bunoon
9
9
  * @license MIT License
10
10
  * @copyright Bunoon 2026
@@ -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.0.0
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.0.0
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
+ }