vue-string-directives 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
@@ -6,14 +6,25 @@ Vue string directives library can change form input value dynamically. All langu
6
6
 
7
7
  1. [Compatibility](#compatibility)
8
8
  2. [Installation](#installation)
9
- 1. [NodeJS](#nodejs)
9
+ 1. [NPM](#npm)
10
10
  2. [Manually](#manually)
11
11
  3. [Usage](#usage)
12
- 1. [CLI](#cli)
13
- 2. [CDN](#cdn)
14
- 4. [Examples](#examples)
15
- 5. [Author](#author)
16
- 6. [License](#license)
12
+ 1. [Camel case](#camel-case)
13
+ 2. [Capitalize](#capitalize)
14
+ 3. [Flat case](#flat-case)
15
+ 4. [Kebab case](#kebab-case)
16
+ 5. [Lower case](#lower-case)
17
+ 6. [Pad](#pad)
18
+ 7. [Pascal case](#pascal-case)
19
+ 8. [Repeat](#repeat)
20
+ 9. [Replace](#replace)
21
+ 10. [Snake case](#snake-case)
22
+ 11. [Title case](#title-case)
23
+ 12. [Train case](#train-case)
24
+ 13. [Truncate](#truncate)
25
+ 14. [Upper case](#upper-case)
26
+ 4. [Author](#author)
27
+ 5. [License](#license)
17
28
 
18
29
  ## Compatibility
19
30
 
@@ -23,7 +34,7 @@ Vue | >= 3.5
23
34
 
24
35
  ## Installation
25
36
 
26
- ### NodeJS
37
+ ### NPM
27
38
 
28
39
  ```bash
29
40
  npm install vue-string-directives
@@ -40,8 +51,6 @@ unzip vue-string-directives.zip
40
51
 
41
52
  ## Usage
42
53
 
43
- ### CLI
44
-
45
54
  Add following code to your `main.js` file created by Vue CLI:
46
55
 
47
56
  ```js
@@ -77,100 +86,297 @@ export default {
77
86
  }
78
87
  ```
79
88
 
80
- ### CDN
89
+ ### Camel case
90
+
91
+ ```js
92
+ const camel = defineModel('camel')
93
+ ```
94
+
95
+ ```html
96
+ <template>
97
+ <!-- Input: camel 123 case. Output: camelCase. -->
98
+ <input type="text" v-model="camel" v-camel>
99
+
100
+ <!-- Input: camel 123 case. Output: camel123Case. -->
101
+ <input type="text" v-model="camel" v-camel.numbers>
102
+ <!-- Or -->
103
+ <input type="text" v-model="camel" v-camel="{ numbers: true }">
104
+
105
+ <!-- Input: cameL 123 casE. Output: camelCase. -->
106
+ <input type="text" v-model="camel" v-camel.lower>
107
+ <!-- Or -->
108
+ <input type="text" v-model="camel" v-camel="{ lower: true }">
109
+
110
+ <!-- Input: cameL 123 casE. Output: camel123Case. -->
111
+ <input type="text" v-model="camel" v-camel.numbers.lower>
112
+ <!-- Or -->
113
+ <input type="text" v-model="camel" v-camel="{ numbers: true, lower: true }">
114
+ </template>
115
+ ```
116
+
117
+ ### Capitalize
118
+
119
+ ```js
120
+ const capitalize = defineModel('capitalize')
121
+ ```
122
+
123
+ ```html
124
+ <template>
125
+ <!-- Input: capitalize. Output: Capitalize. -->
126
+ <input type="text" v-model="capitalize" v-capitalize>
127
+
128
+ <!-- Input: cApitalizE. Output: Capitalize. -->
129
+ <input type="text" v-model="capitalize" v-capitalize.lower>
130
+ <!-- Or -->
131
+ <input type="text" v-model="capitalize" v-capitalize="{ lower: true }">
132
+ </template>
133
+ ```
134
+
135
+ ### Flat case
136
+
137
+ ```js
138
+ const flat = defineModel('flat')
139
+ ```
140
+
141
+ ```html
142
+ <template>
143
+ <!-- Input: Flat 123 Case. Output: flatcase. -->
144
+ <input type="text" v-model="flat" v-flat>
145
+
146
+ <!-- Input: Flat 123 Case. Output: flat123case. -->
147
+ <input type="text" v-model="flat" v-flat.numbers>
148
+ <!-- Or -->
149
+ <input type="text" v-model="flat" v-flat="{ numbers: true }">
150
+ </template>
151
+ ```
152
+
153
+ ### Kebab case
154
+
155
+ ```js
156
+ const kebab = defineModel('kebab')
157
+ ```
158
+
159
+ ```html
160
+ <template>
161
+ <!-- Input: Kebab 123 Case. Output: kebab-case. -->
162
+ <input type="text" v-model="kebab" v-kebab>
163
+
164
+ <!-- Input: Kebab 123 Case. Output: kebab-123-case. -->
165
+ <input type="text" v-model="kebab" v-kebab.numbers>
166
+ <!-- Or -->
167
+ <input type="text" v-model="kebab" v-kebab="{ numbers: true }">
168
+ </template>
169
+ ```
170
+
171
+ ### Lower case
172
+
173
+ ```js
174
+ const lower = defineModel('lower')
175
+ ```
176
+
177
+ ```html
178
+ <template>
179
+ <!-- Input: LOWERCASE. Output: lowercase. -->
180
+ <input type="text" v-model="lower" v-lower>
181
+
182
+ <!-- Input: LOWERCASE. Output: lOWERCASE. -->
183
+ <input type="text" v-model="lower" v-lower.first>
184
+ <!-- Or -->
185
+ <input type="text" v-model="lower" v-lower="{ first: true }">
186
+ </template>
187
+ ```
188
+
189
+ ### Pad
190
+
191
+ ```js
192
+ const lower = defineModel('plowerd')
193
+ ```
194
+
195
+ ```html
196
+ <template>
197
+ <!-- Input: pad. Output: ___pad____. -->
198
+ <input type="text" v-model="pad" v-pad:10="_">
199
+ <!-- Or -->
200
+ <input type="text" v-model="pad" v-pad="{ count: 10, chars: '_' }">
201
+
202
+ <!-- Input: pad. Output: _________pad. -->
203
+ <input type="text" v-model="pad" v-pad:10.start="_">
204
+ <!-- Or -->
205
+ <input type="text" v-model="pad" v-pad="{ count: 10, chars: '_', start: true }">
206
+
207
+ <!-- Input: pad. Output: pad_______. -->
208
+ <input type="text" v-model="pad" v-pad:10.end="_">
209
+ <!-- Or -->
210
+ <input type="text" v-model="pad" v-pad="{ count: 10, chars: '_', end: true }">
211
+ </template>
212
+ ```
213
+
214
+ ### Pascal case
215
+
216
+ ```js
217
+ const pascal = defineModel('pascal')
218
+ ```
81
219
 
82
220
  ```html
83
- <!doctype html>
84
- <html lang="en">
85
- <head>
86
- <meta charset="utf-8">
87
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
88
- <title>Vue string directives</title>
89
- </head>
90
- <body>
91
- <div id="app"></div>
92
- <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
93
- <script src="https://cdn.rawgit.com/tarkhov/vue-string-directives/v1.0.0/dist/vue-string-directives.umd.cjs"></script>
94
- </body>
95
- </html>
221
+ <template>
222
+ <!-- Input: pascal 123 case. Output: PascalCase. -->
223
+ <input type="text" v-model="pascal" v-pascal>
224
+
225
+ <!-- Input: pascal 123 case. Output: Pascal123Case. -->
226
+ <input type="text" v-model="pascal" v-pascal.numbers>
227
+ <!-- Or -->
228
+ <input type="text" v-model="pascal" v-pascal="{ numbers: true }">
229
+
230
+ <!-- Input: pascaL 123 casE. Output: PascalCase. -->
231
+ <input type="text" v-model="pascal" v-pascal.lower>
232
+ <!-- Or -->
233
+ <input type="text" v-model="pascal" v-pascal="{ lower: true }">
234
+
235
+ <!-- Input: pascaL 123 casE. Output: Pascal123Case. -->
236
+ <input type="text" v-model="pascal" v-pascal.numbers.lower>
237
+ <!-- Or -->
238
+ <input type="text" v-model="pascal" v-pascal="{ numbers: true, lower: true }">
239
+ </template>
96
240
  ```
97
241
 
98
- ## Examples
242
+ ### Repeat
243
+
244
+ ```js
245
+ const repeat = defineModel('repeat')
246
+ ```
99
247
 
100
- Letter case.
248
+ ```html
249
+ <template>
250
+ <!-- Input: repeat. Output: repeat-----. -->
251
+ <input type="text" v-model="repeat" v-repeat:5="-">
252
+ <!-- Or -->
253
+ <input type="text" v-model="repeat" v-repeat="{ count: 5, string: '-' }">
254
+ </template>
255
+ ```
256
+
257
+ ### Replace
258
+
259
+ ```js
260
+ const replace = defineModel('replace')
261
+ ```
101
262
 
102
263
  ```html
103
- <!-- Uppercase -->
104
- <!-- Input: uppercase. Output: UPPERCASE. -->
105
- <input type="text" v-model="text" v-upper>
106
- <!-- Input: uppercase. Output: Uppercase. -->
107
- <input type="text" v-model="text" v-upper.first>
108
- <!-- Input: uppercase. Output: Uppercase. -->
109
- <input type="text" v-model="text" v-upper.first.capitalize>
110
- <!-- Input: uppercase one two three. Output: Uppercase One Two Three. -->
111
- <input type="text" v-model="text" v-upper.first.every>
112
- <!-- Input: uppercase one two three. Output: Uppercase One Two Three. -->
113
- <input type="text" v-model="text" v-upper.first.capitalize.every>
114
-
115
- <!-- Lowercase -->
116
- <!-- Input: UPPERCASE. Output: uppercase. -->
117
- <input type="text" v-model="text" v-lower>
118
- <!-- Input: UPPERCASE. Output: uPPERCASE. -->
119
- <input type="text" v-model="text" v-lower.first>
120
-
121
- <!-- Capitalize -->
122
- <!-- Input: uppercase. Output: Uppercase. -->
123
- <input type="text" v-model="text" v-capitalize>
124
- ```
125
-
126
- Word case.
264
+ <template>
265
+ <!-- Input: replace123. Output: replace---. -->
266
+ <input type="text" v-model="replace" v-replace="{ regexp: '[0-9]', flags: 'g', string: '-' }">
267
+ </template>
268
+ ```
269
+
270
+ ### Snake case
271
+
272
+ ```js
273
+ const snake = defineModel('snake')
274
+ ```
127
275
 
128
276
  ```html
129
- <!-- Camelcase -->
130
- <!-- Input: camel case. Output: camelCase. -->
131
- <input type="text" v-model="text" v-camel>
132
- <!-- Input: camel case. Output: CamelCase. -->
133
- <input type="text" v-model="text" v-camel.first>
134
- <!-- Input: camel 123 case. Output: camel123Case. -->
135
- <input type="text" v-model="text" v-camel.numbers>
136
- <!-- Input: camel 123 case. Output: Camel123Case. -->
137
- <input type="text" v-model="text" v-camel.first.numbers>
138
-
139
- <!-- Kebabcase -->
140
- <!-- Input: kebab case. Output: kebab-case. -->
141
- <input type="text" v-model="text" v-kebab>
142
- <!-- Input: kebab 123 case. Output: kebab-123-case. -->
143
- <input type="text" v-model="text" v-kebab.numbers>
144
-
145
- <!-- Snakecase -->
146
- <!-- Input: snake case. Output: snake_case. -->
147
- <input type="text" v-model="text" v-snake>
148
- <!-- Input: snake 123 case. Output: snake_123_case. -->
149
- <input type="text" v-model="text" v-snake.numbers>
150
- ```
151
-
152
- Replacing.
277
+ <template>
278
+ <!-- Input: Snake 123 Case. Output: snake_case. -->
279
+ <input type="text" v-model="snake" v-snake>
280
+
281
+ <!-- Input: Snake 123 Case. Output: snake_123_case. -->
282
+ <input type="text" v-model="snake" v-snake.numbers>
283
+ <!-- Or -->
284
+ <input type="text" v-model="snake" v-snake="{ numbers: true }">
285
+ </template>
286
+ ```
287
+
288
+ ### Title case
289
+
290
+ ```js
291
+ const title = defineModel('title')
292
+ ```
293
+
294
+ ```html
295
+ <template>
296
+ <!-- Input: title 123 case. Output: Title Case. -->
297
+ <input type="text" v-model="title" v-title>
298
+
299
+ <!-- Input: title 123 case. Output: Title 123 Case. -->
300
+ <input type="text" v-model="title" v-title.numbers>
301
+ <!-- Or -->
302
+ <input type="text" v-model="title" v-title="{ numbers: true }">
303
+
304
+ <!-- Input: titlE 123 casE. Output: Title Case. -->
305
+ <input type="text" v-model="title" v-title.lower>
306
+ <!-- Or -->
307
+ <input type="text" v-model="title" v-title="{ lower: true }">
308
+
309
+ <!-- Input: titlE 123 casE. Output: Title 123 Case. -->
310
+ <input type="text" v-model="title" v-title.numbers.lower>
311
+ <!-- Or -->
312
+ <input type="text" v-model="title" v-title="{ numbers: true, lower: true }">
313
+ </template>
314
+ ```
315
+
316
+ ### Train case
317
+
318
+ ```js
319
+ const train = defineModel('train')
320
+ ```
321
+
322
+ ```html
323
+ <template>
324
+ <!-- Input: train 123 case. Output: Train-Case. -->
325
+ <input type="text" v-model="train" v-train>
326
+
327
+ <!-- Input: train 123 case. Output: Train-123-Case. -->
328
+ <input type="text" v-model="train" v-train.numbers>
329
+ <!-- Or -->
330
+ <input type="text" v-model="train" v-train="{ numbers: true }">
331
+
332
+ <!-- Input: traiN 123 casE. Output: Train-Case. -->
333
+ <input type="text" v-model="train" v-train.lower>
334
+ <!-- Or -->
335
+ <input type="text" v-model="train" v-train="{ lower: true }">
336
+
337
+ <!-- Input: traiN 123 casE. Output: Train-123-Case. -->
338
+ <input type="text" v-model="train" v-train.numbers.lower>
339
+ <!-- Or -->
340
+ <input type="text" v-model="train" v-train="{ numbers: true, lower: true }">
341
+ </template>
342
+ ```
343
+
344
+ ### Truncate
345
+
346
+ ```js
347
+ const truncate = defineModel('truncate')
348
+ ```
349
+
350
+ ```html
351
+ <template>
352
+ <!-- Input: truncate. Output: trunc... -->
353
+ <input type="text" v-model="truncate" v-truncate:5="'...'">
354
+ <!-- Or -->
355
+ <input type="text" v-model="truncate" v-truncate="{ count: 5, omission: '...' }">
356
+ </template>
357
+ ```
358
+
359
+ ### Upper case
360
+
361
+ ```js
362
+ const upper = defineModel('upper')
363
+ ```
153
364
 
154
365
  ```html
155
- <!-- Pad -->
156
- <!-- Input: pad. Output: ___pad____. -->
157
- <input type="text" v-model="text" v-pad:10="_">
158
- <!-- Input: pad. Output: _________pad. -->
159
- <input type="text" v-model="text" v-pad:10.start="_">
160
- <!-- Input: pad. Output: pad_______. -->
161
- <input type="text" v-model="text" v-pad:10.end="_">
162
-
163
- <!-- Repeat -->
164
- <!-- Input: repeat. Output: repeat-----. -->
165
- <input type="text" v-model="text" v-repeat:5="-">
166
-
167
- <!-- Replace -->
168
- <!-- Input: replace123. Output: replace---. -->
169
- <input type="text" v-model="text" v-replace="{ regexp: '[0-9]', flags: 'g', string: '-' }">
170
-
171
- <!-- Truncate -->
172
- <!-- Input: truncate. Output: trunc... -->
173
- <input type="text" v-model="text" v-truncate:5="'...'">
366
+ <template>
367
+ <!-- Input: uppercase. Output: UPPERCASE. -->
368
+ <input type="text" v-model="upper" v-upper>
369
+
370
+ <!-- Input: uppercase. Output: Uppercase. -->
371
+ <input type="text" v-model="upper" v-upper.first>
372
+ <!-- Or -->
373
+ <input type="text" v-model="upper" v-upper="{ first: true }">
374
+
375
+ <!-- Input: uppercase one two three. Output: Uppercase One Two Three. -->
376
+ <input type="text" v-model="upper" v-upper.first.every>
377
+ <!-- Or -->
378
+ <input type="text" v-model="upper" v-upper="{ first: true, every: true }">
379
+ </template>
174
380
  ```
175
381
 
176
382
  ## Author
@@ -1,139 +1,190 @@
1
- function r(t, e = !1) {
2
- let u = t.charAt(0).toUpperCase(), a = t.slice(1);
3
- return e && (a = a.toLowerCase()), `${u}${a}`;
1
+ /*!
2
+ * Vue String Directives v1.1.0
3
+ * Homepage (https://tarkhov.github.io/vue-string-directives/)
4
+ * Copyright 2020-2026 Tarkhov
5
+ * License: MIT
6
+ */
7
+ function o(e, t = !1) {
8
+ let a = e.charAt(0).toUpperCase(), u = e.slice(1);
9
+ return t && (u = u.toLowerCase()), `${a}${u}`;
4
10
  }
5
- function d(t, e = !1) {
6
- return e ? t.match(/[\p{L}\p{N}]+/gu) : t.match(/[\p{L}]+/gu);
11
+ function j(e, t = { numbers: !1, lower: !1 }) {
12
+ const a = t?.numbers ? /[\p{L}\p{N}]+/gu : new RegExp("\\p{L}+", "gu");
13
+ let u = e.match(a);
14
+ if (u.length <= 1) return null;
15
+ let l = u.shift();
16
+ const n = t?.lower;
17
+ return n && (l = l.toLowerCase()), u = u.map((E) => o(E, n)), u.unshift(l), u.join("");
7
18
  }
8
- const v = {
9
- updated: function(t, e) {
10
- if (t.value.length && (typeof e.value > "u" || e.value)) {
11
- let u = d(t.value, e.modifiers?.numbers || e.value?.numbers);
12
- if (u.length > 1) {
13
- if (e.modifiers?.first || e.value?.first)
14
- u = u.map(function(a) {
15
- return r(a);
16
- });
17
- else {
18
- let a = u.shift();
19
- u = u.map(function(l) {
20
- return r(l);
21
- }), u.unshift(a);
22
- }
23
- t.value = u.join("");
24
- }
19
+ function N(e, t = !1) {
20
+ let a = t ? /[\p{L}\p{N}]+/gu : new RegExp("\\p{L}+", "gu"), u = e.match(a);
21
+ return u.length <= 1 ? null : u.map((l) => l.toLowerCase()).join("");
22
+ }
23
+ function R(e, t = !1) {
24
+ let a = t ? /[\p{L}\p{N}-]+/gu : /[\p{L}-]+/gu, u = e.match(a);
25
+ return u.length <= 1 ? null : u.map((l) => l.toLowerCase()).join("-");
26
+ }
27
+ function k(e, t, a = " ") {
28
+ const u = Math.floor((t - e.length) / 2) + e.length;
29
+ return e.padStart(u, a).padEnd(t, a);
30
+ }
31
+ function S(e, t = { numbers: !1, lower: !1 }) {
32
+ const a = t?.numbers ? /[\p{L}\p{N}]+/gu : new RegExp("\\p{L}+", "gu");
33
+ let u = e.match(a);
34
+ return u.length <= 1 ? null : u.map((l) => o(l, t?.lower)).join("");
35
+ }
36
+ function _(e, t = !1) {
37
+ let a = t ? /[\p{L}\p{N}_]+/gu : /[\p{L}_]+/gu, u = e.match(a);
38
+ return u.length <= 1 ? null : u.map((l) => l.toLowerCase()).join("_");
39
+ }
40
+ function r(e, t = !1) {
41
+ return e.replace(new RegExp("\\p{L}+", "gu"), (a) => o(a, t));
42
+ }
43
+ function z(e, t = { numbers: !1, lower: !1 }) {
44
+ const a = t?.numbers ? /[\p{L}\p{N}-]+/gu : /[\p{L}-]+/gu;
45
+ let u = e.match(a);
46
+ return u.length <= 1 ? null : u.map((l) => o(l, t?.lower)).join("-");
47
+ }
48
+ function A(e, t = 32, a = "...") {
49
+ return e.substring(0, t) + a;
50
+ }
51
+ const s = {
52
+ updated: function(e, t) {
53
+ if (e.value.length) {
54
+ const a = t.value || t.modifiers, u = j(e.value, a);
55
+ u !== null && (e.value = u);
25
56
  }
26
57
  }
27
- }, f = {
28
- updated: function(t, e) {
29
- t.value.length && (typeof e.value > "u" || e.value) && (t.value = r(t.value, !0));
58
+ }, c = {
59
+ updated: function(e, t) {
60
+ if (e.value.length) {
61
+ const a = t.modifiers?.lower || t.value?.lower;
62
+ e.value = o(e.value, a);
63
+ }
30
64
  }
31
- };
32
- function L(t, e = !1) {
33
- return e ? t.match(/[\p{L}\p{N}-]+/gu) : t.match(/[\p{L}-]+/gu);
34
- }
35
- const o = {
36
- updated: function(t, e) {
37
- if (t.value.length && (typeof e.value > "u" || e.value)) {
38
- let u = L(t.value, e.modifiers?.numbers || e.value?.numbers);
39
- u.length > 1 && (u = u.map(function(a) {
40
- return a.toLowerCase();
41
- }), t.value = u.join("-"));
65
+ }, v = {
66
+ updated: function(e, t) {
67
+ if (e.value.length) {
68
+ const a = t.modifiers?.numbers || t.value?.numbers, u = N(e.value, a);
69
+ u !== null && (e.value = u);
42
70
  }
43
71
  }
44
- }, s = {
45
- updated: function(t, e) {
46
- t.value.length && (typeof e.value > "u" || e.value) && (e.modifiers?.first || e.value?.first ? t.value = t.value.charAt(0).toLowerCase() + t.value.slice(1) : t.value = t.value.toLowerCase());
72
+ }, i = {
73
+ updated: function(e, t) {
74
+ if (e.value.length) {
75
+ const a = t.modifiers?.numbers || t.value?.numbers, u = R(e.value, a);
76
+ u !== null && (e.value = u);
77
+ }
47
78
  }
48
- };
49
- function y(t, e, u = " ") {
50
- const a = Math.floor((e - t.length) / 2) + t.length;
51
- return t.padStart(a, u).padEnd(e, u);
52
- }
53
- const c = {
54
- updated: function(t, e) {
55
- if (t.value.length) {
56
- let u = 0, a = " ";
57
- e.value && (typeof e.value == "object" ? e.value.chars && e.value.count && (u = e.value.count, a = e.value.chars) : (u = e.arg, a = e.value)), e.modifiers?.start || e.value?.start ? t.value = t.value.padStart(u, a) : e.modifiers?.end || e.value?.end ? t.value = t.value.padEnd(u, a) : t.value = y(t.value, u, a);
79
+ }, f = {
80
+ updated: function(e, t) {
81
+ if (e.value.length) {
82
+ const a = t.value || t.modifiers;
83
+ e.value = a?.first ? e.value.charAt(0).toLowerCase() + e.value.slice(1) : e.value.toLowerCase();
58
84
  }
59
85
  }
60
86
  }, p = {
61
- updated: function(t, e) {
62
- t.value.length && e.value && (typeof e.value == "object" ? e.value.string && e.value.count && (t.value = t.value + e.value.string.repeat(e.value.count)) : e.arg && (t.value = t.value + e.value.repeat(e.arg)));
87
+ updated: function(e, t) {
88
+ if (e.value.length) {
89
+ const a = t.value?.count || t.arg, u = t.value?.chars || t.value;
90
+ t.modifiers?.start || t.value?.start ? e.value = e.value.padStart(a, u) : t.modifiers?.end || t.value?.end ? e.value = e.value.padEnd(a, u) : e.value = k(e.value, a, u);
91
+ }
63
92
  }
64
- }, i = {
65
- updated: function(t, e) {
66
- t.value.length && e.value && e.value.regexp && (t.value = t.value.replace(new RegExp(e.value.regexp, e.value.flags), e.value.string || ""));
93
+ }, m = {
94
+ updated: function(e, t) {
95
+ if (e.value.length) {
96
+ const a = t.value || t.modifiers, u = S(e.value, a);
97
+ u !== null && (e.value = u);
98
+ }
67
99
  }
68
- };
69
- function w(t, e = !1) {
70
- return e ? t.match(/[\p{L}\p{N}_]+/gu) : t.match(/[\p{L}_]+/gu);
71
- }
72
- const m = {
73
- updated: function(t, e) {
74
- if (t.value.length && (typeof e.value > "u" || e.value)) {
75
- let u = w(t.value, e.modifiers?.numbers || e.value?.numbers);
76
- u.length > 1 && (u = u.map(function(a) {
77
- return a.toLowerCase();
78
- }), t.value = u.join("_"));
100
+ }, d = {
101
+ updated: function(e, t) {
102
+ e.value.length && t.value && (t.value?.string && t.value?.count ? e.value = e.value + t.value.string.repeat(t.value.count) : t.arg && (e.value = e.value + t.value.repeat(t.arg)));
103
+ }
104
+ }, h = {
105
+ updated: function(e, t) {
106
+ e.value.length && (e.value = e.value.replace(new RegExp(t.value.regexp, t.value.flags), t.value.string || ""));
107
+ }
108
+ }, w = {
109
+ updated: function(e, t) {
110
+ if (e.value.length) {
111
+ const a = t.modifiers?.numbers || t.value?.numbers, u = _(e.value, a);
112
+ u !== null && (e.value = u);
79
113
  }
80
114
  }
81
- };
82
- function C(t, e = 32, u = "...") {
83
- return t.substring(0, e) + u;
84
- }
85
- const n = {
86
- updated: function(t, e) {
87
- let u = t.value.length;
88
- if (u) {
89
- let a = "...", l = e.arg;
90
- e.value && (typeof e.value == "object" ? e.value.count && e.value.omission && (l = e.value.count, a = e.value.omission) : a = e.value), u > l && (t.value = C(t.value, l, a));
115
+ }, g = {
116
+ updated: function(e, t) {
117
+ if (e.value.length) {
118
+ const a = t.modifiers?.lower || t.value?.lower, u = r(e.value, a);
119
+ u !== null && (e.value = u);
91
120
  }
92
121
  }
93
- };
94
- function j(t, e = !1) {
95
- return t.replace(new RegExp("\\p{L}+", "gu"), function(u) {
96
- return r(u, e);
97
- });
98
- }
99
- const h = {
100
- updated: function(t, e) {
101
- if (t.value.length && (typeof e.value > "u" || e.value))
102
- if (e.modifiers?.first || e.value?.first) {
103
- const u = e.modifiers?.capitalize || e.value?.capitalize;
104
- e.modifiers?.every || e.value?.every ? t.value = j(t.value, u) : t.value = r(t.value, u);
105
- } else
106
- t.value = t.value.toUpperCase();
107
- }
108
- }, k = {
109
- directives: {
110
- camel: v,
111
- capitalize: f,
112
- kebab: o,
113
- lower: s,
114
- pad: c,
115
- repeat: p,
116
- replace: i,
117
- snake: m,
118
- truncate: n,
119
- upper: h
122
+ }, L = {
123
+ updated: function(e, t) {
124
+ if (e.value.length) {
125
+ const a = t.value || t.modifiers, u = z(e.value, a);
126
+ u !== null && (e.value = u);
127
+ }
128
+ }
129
+ }, C = {
130
+ updated: function(e, t) {
131
+ let a = e.value.length;
132
+ if (a) {
133
+ let u = t.value?.omission || t.value, l = t.value?.count || t.arg;
134
+ a > l && (e.value = A(e.value, l, u));
135
+ }
120
136
  }
121
137
  }, x = {
122
- install(t) {
123
- t.directive("camel", v), t.directive("capitalize", f), t.directive("kebab", o), t.directive("lower", s), t.directive("pad", c), t.directive("repeat", p), t.directive("replace", i), t.directive("snake", m), t.directive("truncate", n), t.directive("upper", h);
138
+ updated: function(e, t) {
139
+ if (e.value.length) {
140
+ const a = t.value || t.modifiers;
141
+ if (a?.first)
142
+ if (a?.every) {
143
+ const u = r(e.value);
144
+ u !== null && (e.value = u);
145
+ } else
146
+ e.value = o(e.value);
147
+ else
148
+ e.value = e.value.toUpperCase();
149
+ }
150
+ }
151
+ }, D = {
152
+ directives: {
153
+ camel: s,
154
+ capitalize: c,
155
+ flat: v,
156
+ kebab: i,
157
+ lower: f,
158
+ pad: p,
159
+ pascal: m,
160
+ repeat: d,
161
+ replace: h,
162
+ snake: w,
163
+ title: g,
164
+ train: L,
165
+ truncate: C,
166
+ upper: x
167
+ }
168
+ }, M = {
169
+ install(e) {
170
+ e.directive("camel", s), e.directive("capitalize", c), e.directive("flat", v), e.directive("kebab", i), e.directive("lower", f), e.directive("pad", p), e.directive("pascal", m), e.directive("repeat", d), e.directive("replace", h), e.directive("snake", w), e.directive("title", g), e.directive("train", L), e.directive("truncate", C), e.directive("upper", x);
124
171
  }
125
172
  };
126
173
  export {
127
- k as StringDirectivesMixin,
128
- x as VueStringDirectives,
129
- v as camel,
130
- f as capitalize,
131
- o as kebab,
132
- s as lower,
133
- c as pad,
134
- p as repeat,
135
- i as replace,
136
- m as snake,
137
- n as truncate,
138
- h as upper
174
+ D as StringDirectivesMixin,
175
+ M as VueStringDirectives,
176
+ s as camel,
177
+ c as capitalize,
178
+ v as flat,
179
+ i as kebab,
180
+ f as lower,
181
+ p as pad,
182
+ m as pascal,
183
+ d as repeat,
184
+ h as replace,
185
+ w as snake,
186
+ g as title,
187
+ L as train,
188
+ C as truncate,
189
+ x as upper
139
190
  };
@@ -1 +1,7 @@
1
- (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(l=typeof globalThis<"u"?globalThis:l||self,r(l.VueStringDirectives={}))})(this,(function(l){"use strict";function r(t,e=!1){let u=t.charAt(0).toUpperCase(),a=t.slice(1);return e&&(a=a.toLowerCase()),`${u}${a}`}function y(t,e=!1){return e?t.match(/[\p{L}\p{N}]+/gu):t.match(/[\p{L}]+/gu)}const f={updated:function(t,e){if(t.value.length&&(typeof e.value>"u"||e.value)){let u=y(t.value,e.modifiers?.numbers||e.value?.numbers);if(u.length>1){if(e.modifiers?.first||e.value?.first)u=u.map(function(a){return r(a)});else{let a=u.shift();u=u.map(function(v){return r(v)}),u.unshift(a)}t.value=u.join("")}}}},c={updated:function(t,e){t.value.length&&(typeof e.value>"u"||e.value)&&(t.value=r(t.value,!0))}};function L(t,e=!1){return e?t.match(/[\p{L}\p{N}-]+/gu):t.match(/[\p{L}-]+/gu)}const o={updated:function(t,e){if(t.value.length&&(typeof e.value>"u"||e.value)){let u=L(t.value,e.modifiers?.numbers||e.value?.numbers);u.length>1&&(u=u.map(function(a){return a.toLowerCase()}),t.value=u.join("-"))}}},s={updated:function(t,e){t.value.length&&(typeof e.value>"u"||e.value)&&(e.modifiers?.first||e.value?.first?t.value=t.value.charAt(0).toLowerCase()+t.value.slice(1):t.value=t.value.toLowerCase())}};function w(t,e,u=" "){const a=Math.floor((e-t.length)/2)+t.length;return t.padStart(a,u).padEnd(e,u)}const i={updated:function(t,e){if(t.value.length){let u=0,a=" ";e.value&&(typeof e.value=="object"?e.value.chars&&e.value.count&&(u=e.value.count,a=e.value.chars):(u=e.arg,a=e.value)),e.modifiers?.start||e.value?.start?t.value=t.value.padStart(u,a):e.modifiers?.end||e.value?.end?t.value=t.value.padEnd(u,a):t.value=w(t.value,u,a)}}},n={updated:function(t,e){t.value.length&&e.value&&(typeof e.value=="object"?e.value.string&&e.value.count&&(t.value=t.value+e.value.string.repeat(e.value.count)):e.arg&&(t.value=t.value+e.value.repeat(e.arg)))}},p={updated:function(t,e){t.value.length&&e.value&&e.value.regexp&&(t.value=t.value.replace(new RegExp(e.value.regexp,e.value.flags),e.value.string||""))}};function S(t,e=!1){return e?t.match(/[\p{L}\p{N}_]+/gu):t.match(/[\p{L}_]+/gu)}const m={updated:function(t,e){if(t.value.length&&(typeof e.value>"u"||e.value)){let u=S(t.value,e.modifiers?.numbers||e.value?.numbers);u.length>1&&(u=u.map(function(a){return a.toLowerCase()}),t.value=u.join("_"))}}};function j(t,e=32,u="..."){return t.substring(0,e)+u}const h={updated:function(t,e){let u=t.value.length;if(u){let a="...",v=e.arg;e.value&&(typeof e.value=="object"?e.value.count&&e.value.omission&&(v=e.value.count,a=e.value.omission):a=e.value),u>v&&(t.value=j(t.value,v,a))}}};function k(t,e=!1){return t.replace(new RegExp("\\p{L}+","gu"),function(u){return r(u,e)})}const d={updated:function(t,e){if(t.value.length&&(typeof e.value>"u"||e.value))if(e.modifiers?.first||e.value?.first){const u=e.modifiers?.capitalize||e.value?.capitalize;e.modifiers?.every||e.value?.every?t.value=k(t.value,u):t.value=r(t.value,u)}else t.value=t.value.toUpperCase()}},C={directives:{camel:f,capitalize:c,kebab:o,lower:s,pad:i,repeat:n,replace:p,snake:m,truncate:h,upper:d}},z={install(t){t.directive("camel",f),t.directive("capitalize",c),t.directive("kebab",o),t.directive("lower",s),t.directive("pad",i),t.directive("repeat",n),t.directive("replace",p),t.directive("snake",m),t.directive("truncate",h),t.directive("upper",d)}};l.StringDirectivesMixin=C,l.VueStringDirectives=z,l.camel=f,l.capitalize=c,l.kebab=o,l.lower=s,l.pad=i,l.repeat=n,l.replace=p,l.snake=m,l.truncate=h,l.upper=d,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}));
1
+ /*!
2
+ * Vue String Directives v1.1.0
3
+ * Homepage (https://tarkhov.github.io/vue-string-directives/)
4
+ * Copyright 2020-2026 Tarkhov
5
+ * License: MIT
6
+ */
7
+ (function(l,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(l=typeof globalThis<"u"?globalThis:l||self,o(l.VueStringDirectives={}))})(this,(function(l){"use strict";function o(e,t=!1){let a=e.charAt(0).toUpperCase(),u=e.slice(1);return t&&(u=u.toLowerCase()),`${a}${u}`}function E(e,t={numbers:!1,lower:!1}){const a=t?.numbers?/[\p{L}\p{N}]+/gu:new RegExp("\\p{L}+","gu");let u=e.match(a);if(u.length<=1)return null;let n=u.shift();const j=t?.lower;return j&&(n=n.toLowerCase()),u=u.map(_=>o(_,j)),u.unshift(n),u.join("")}function k(e,t=!1){let a=t?/[\p{L}\p{N}]+/gu:new RegExp("\\p{L}+","gu"),u=e.match(a);return u.length<=1?null:u.map(n=>n.toLowerCase()).join("")}function N(e,t=!1){let a=t?/[\p{L}\p{N}-]+/gu:/[\p{L}-]+/gu,u=e.match(a);return u.length<=1?null:u.map(n=>n.toLowerCase()).join("-")}function y(e,t,a=" "){const u=Math.floor((t-e.length)/2)+e.length;return e.padStart(u,a).padEnd(t,a)}function D(e,t={numbers:!1,lower:!1}){const a=t?.numbers?/[\p{L}\p{N}]+/gu:new RegExp("\\p{L}+","gu");let u=e.match(a);return u.length<=1?null:u.map(n=>o(n,t?.lower)).join("")}function R(e,t=!1){let a=t?/[\p{L}\p{N}_]+/gu:/[\p{L}_]+/gu,u=e.match(a);return u.length<=1?null:u.map(n=>n.toLowerCase()).join("_")}function S(e,t=!1){return e.replace(new RegExp("\\p{L}+","gu"),a=>o(a,t))}function M(e,t={numbers:!1,lower:!1}){const a=t?.numbers?/[\p{L}\p{N}-]+/gu:/[\p{L}-]+/gu;let u=e.match(a);return u.length<=1?null:u.map(n=>o(n,t?.lower)).join("-")}function z(e,t=32,a="..."){return e.substring(0,t)+a}const r={updated:function(e,t){if(e.value.length){const a=t.value||t.modifiers,u=E(e.value,a);u!==null&&(e.value=u)}}},c={updated:function(e,t){if(e.value.length){const a=t.modifiers?.lower||t.value?.lower;e.value=o(e.value,a)}}},s={updated:function(e,t){if(e.value.length){const a=t.modifiers?.numbers||t.value?.numbers,u=k(e.value,a);u!==null&&(e.value=u)}}},i={updated:function(e,t){if(e.value.length){const a=t.modifiers?.numbers||t.value?.numbers,u=N(e.value,a);u!==null&&(e.value=u)}}},v={updated:function(e,t){if(e.value.length){const a=t.value||t.modifiers;e.value=a?.first?e.value.charAt(0).toLowerCase()+e.value.slice(1):e.value.toLowerCase()}}},f={updated:function(e,t){if(e.value.length){const a=t.value?.count||t.arg,u=t.value?.chars||t.value;t.modifiers?.start||t.value?.start?e.value=e.value.padStart(a,u):t.modifiers?.end||t.value?.end?e.value=e.value.padEnd(a,u):e.value=y(e.value,a,u)}}},p={updated:function(e,t){if(e.value.length){const a=t.value||t.modifiers,u=D(e.value,a);u!==null&&(e.value=u)}}},d={updated:function(e,t){e.value.length&&t.value&&(t.value?.string&&t.value?.count?e.value=e.value+t.value.string.repeat(t.value.count):t.arg&&(e.value=e.value+t.value.repeat(t.arg)))}},m={updated:function(e,t){e.value.length&&(e.value=e.value.replace(new RegExp(t.value.regexp,t.value.flags),t.value.string||""))}},h={updated:function(e,t){if(e.value.length){const a=t.modifiers?.numbers||t.value?.numbers,u=R(e.value,a);u!==null&&(e.value=u)}}},g={updated:function(e,t){if(e.value.length){const a=t.modifiers?.lower||t.value?.lower,u=S(e.value,a);u!==null&&(e.value=u)}}},w={updated:function(e,t){if(e.value.length){const a=t.value||t.modifiers,u=M(e.value,a);u!==null&&(e.value=u)}}},L={updated:function(e,t){let a=e.value.length;if(a){let u=t.value?.omission||t.value,n=t.value?.count||t.arg;a>n&&(e.value=z(e.value,n,u))}}},C={updated:function(e,t){if(e.value.length){const a=t.value||t.modifiers;if(a?.first)if(a?.every){const u=S(e.value);u!==null&&(e.value=u)}else e.value=o(e.value);else e.value=e.value.toUpperCase()}}},T={directives:{camel:r,capitalize:c,flat:s,kebab:i,lower:v,pad:f,pascal:p,repeat:d,replace:m,snake:h,title:g,train:w,truncate:L,upper:C}},V={install(e){e.directive("camel",r),e.directive("capitalize",c),e.directive("flat",s),e.directive("kebab",i),e.directive("lower",v),e.directive("pad",f),e.directive("pascal",p),e.directive("repeat",d),e.directive("replace",m),e.directive("snake",h),e.directive("title",g),e.directive("train",w),e.directive("truncate",L),e.directive("upper",C)}};l.StringDirectivesMixin=T,l.VueStringDirectives=V,l.camel=r,l.capitalize=c,l.flat=s,l.kebab=i,l.lower=v,l.pad=f,l.pascal=p,l.repeat=d,l.replace=m,l.snake=h,l.title=g,l.train=w,l.truncate=L,l.upper=C,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "vue-string-directives",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Vue string directives library can change form input value dynamically.",
5
5
  "type": "module",
6
- "files": ["dist"],
6
+ "files": [
7
+ "dist"
8
+ ],
7
9
  "main": "./dist/vue-string-directives.umd.cjs",
8
10
  "module": "./dist/vue-string-directives.js",
9
11
  "exports": {
@@ -13,16 +15,34 @@
13
15
  }
14
16
  },
15
17
  "keywords": [
16
- "js",
17
- "javascript",
18
18
  "vue",
19
19
  "vuejs",
20
+ "vue3",
20
21
  "nuxt",
21
22
  "nuxtjs",
23
+ "vue-directive",
24
+ "directives",
22
25
  "directive",
23
- "string",
24
26
  "form",
25
- "input"
27
+ "input",
28
+ "string",
29
+ "string-manipulation",
30
+ "text-formatting",
31
+ "trim",
32
+ "lowercase",
33
+ "uppercase",
34
+ "capitalize",
35
+ "slugify",
36
+ "truncate",
37
+ "mask",
38
+ "utility",
39
+ "validation",
40
+ "transformation",
41
+ "sanitize",
42
+ "input-mask",
43
+ "javascript",
44
+ "js",
45
+ "typescript"
26
46
  ],
27
47
  "repository": {
28
48
  "type": "git",
@@ -40,10 +60,12 @@
40
60
  "preview": "vite preview"
41
61
  },
42
62
  "dependencies": {
63
+ "string-filters": "^0.3.3",
43
64
  "vue": "^3.5.24"
44
65
  },
45
66
  "devDependencies": {
46
67
  "@vitejs/plugin-vue": "^6.0.1",
47
- "vite": "^7.2.4"
68
+ "vite": "^7.2.4",
69
+ "vite-plugin-banner": "^0.8.1"
48
70
  }
49
71
  }