Skip to content

Commit a465baf

Browse files
committed
feat(Lorem Ipsum Generator): generate multi language/script
Fix CorentinTh#1080
1 parent b430bae commit a465baf

File tree

9 files changed

+348
-194
lines changed

9 files changed

+348
-194
lines changed

components.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ declare module '@vue/runtime-core' {
144144
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
145145
NMenu: typeof import('naive-ui')['NMenu']
146146
NScrollbar: typeof import('naive-ui')['NScrollbar']
147+
NSlider: typeof import('naive-ui')['NSlider']
147148
NSpin: typeof import('naive-ui')['NSpin']
149+
NSwitch: typeof import('naive-ui')['NSwitch']
148150
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
149151
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
150152
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"@vueuse/router": "^10.0.0",
5050
"bcryptjs": "^2.4.3",
5151
"change-case": "^4.1.2",
52+
"chinesegen": "^0.3.3",
5253
"colord": "^2.9.3",
5354
"composerize-ts": "^0.6.2",
5455
"country-code-lookup": "^0.1.0",
@@ -69,6 +70,7 @@
6970
"jwt-decode": "^3.1.2",
7071
"libphonenumber-js": "^1.10.28",
7172
"lodash": "^4.17.21",
73+
"lorem-ipsum-japanese": "^1.0.1",
7274
"marked": "^10.0.0",
7375
"mathjs": "^11.9.1",
7476
"mime-types": "^2.1.35",

pnpm-lock.yaml

Lines changed: 41 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/composable/queryParams.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { useRouteQuery } from '@vueuse/router';
22
import { computed } from 'vue';
3+
import { useStorage } from '@vueuse/core';
34

4-
export { useQueryParam };
5+
export { useQueryParam, useQueryParamOrStorage };
56

67
const transformers = {
78
number: {
@@ -16,6 +17,12 @@ const transformers = {
1617
fromQuery: (value: string) => value.toLowerCase() === 'true',
1718
toQuery: (value: boolean) => (value ? 'true' : 'false'),
1819
},
20+
object: {
21+
fromQuery: (value: string) => {
22+
return JSON.parse(value);
23+
},
24+
toQuery: (value: object) => JSON.stringify(value),
25+
},
1926
};
2027

2128
function useQueryParam<T>({ name, defaultValue }: { name: string; defaultValue: T }) {
@@ -33,3 +40,27 @@ function useQueryParam<T>({ name, defaultValue }: { name: string; defaultValue:
3340
},
3441
});
3542
}
43+
44+
function useQueryParamOrStorage<T>({ name, storageName, defaultValue }: { name: string; storageName: string; defaultValue: T }) {
45+
const type = typeof defaultValue;
46+
const transformer = transformers[type as keyof typeof transformers] ?? transformers.string;
47+
48+
const storageRef = useStorage(storageName, defaultValue);
49+
const proxyDefaultValue = transformer.toQuery(defaultValue as never);
50+
const proxy = useRouteQuery(name, proxyDefaultValue);
51+
52+
const r = ref(defaultValue);
53+
54+
watch(r,
55+
(value) => {
56+
proxy.value = transformer.toQuery(value as never);
57+
storageRef.value = value as never;
58+
},
59+
{ deep: true });
60+
61+
r.value = (proxy.value && proxy.value !== proxyDefaultValue
62+
? transformer.fromQuery(proxy.value) as unknown as T
63+
: storageRef.value as T) as never;
64+
65+
return r;
66+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
declare module 'chinesegen' {
2+
export default function lorem(config: {
3+
count: number,
4+
}): {
5+
text: string
6+
};
7+
}

0 commit comments

Comments
 (0)