@christianriedl/utils 1.0.166 → 1.0.168
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/dist/appConfig.d.ts +3 -0
- package/dist/appConfig.js +20 -4
- package/dist/appConfig.js.map +1 -1
- package/dist/logger/src/iLogger.d.ts +62 -0
- package/dist/logger/src/iLogger.js +10 -0
- package/dist/logger/src/iLogger.js.map +1 -0
- package/dist/types.d.ts +4 -0
- package/dist/useSpeechRecognition.d.ts +104 -0
- package/dist/useSpeechRecognition.js +79 -0
- package/dist/useSpeechRecognition.js.map +1 -0
- package/dist/useSpeechSynthesis.d.ts +49 -0
- package/dist/useSpeechSynthesis.js +96 -0
- package/dist/useSpeechSynthesis.js.map +1 -0
- package/dist/utils/src/helper.d.ts +28 -0
- package/dist/utils/src/helper.js +144 -0
- package/dist/utils/src/helper.js.map +1 -0
- package/dist/utils/src/iLocalStorage.d.ts +7 -0
- package/dist/utils/src/iLocalStorage.js +2 -0
- package/dist/utils/src/iLocalStorage.js.map +1 -0
- package/dist/utils/src/index.d.ts +4 -0
- package/dist/utils/src/index.js +5 -0
- package/dist/utils/src/index.js.map +1 -0
- package/dist/utils/src/localStorage.d.ts +20 -0
- package/dist/utils/src/localStorage.js +57 -0
- package/dist/utils/src/localStorage.js.map +1 -0
- package/dist/utils/src/reactiveStorage.d.ts +18 -0
- package/dist/utils/src/reactiveStorage.js +49 -0
- package/dist/utils/src/reactiveStorage.js.map +1 -0
- package/dist/utils/src/registerServiceWorker.d.ts +31 -0
- package/dist/utils/src/registerServiceWorker.js +251 -0
- package/dist/utils/src/registerServiceWorker.js.map +1 -0
- package/package.json +1 -1
- package/src/components/SettingsLine.vue +6 -5
- package/src/components/ThemeSettings.vue +13 -3
- package/src/views/SettingsPage.vue +3 -1
package/dist/appConfig.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class AppConfig implements IAppConfig {
|
|
|
9
9
|
add<T>(name: string, description: string, value: ItemType, doNotChange: boolean, scopes: EScope, values?: string[]): void;
|
|
10
10
|
load(): void;
|
|
11
11
|
saveItem(item: IConfigItem): void;
|
|
12
|
+
clearItem(item: IConfigItem): void;
|
|
12
13
|
save(): void;
|
|
13
14
|
restoreDefaults(): void;
|
|
14
15
|
log(logger: ILogger, logLevel: LogLevel): void;
|
|
@@ -25,4 +26,6 @@ export declare class AppConfig implements IAppConfig {
|
|
|
25
26
|
get loggerQueueSize(): number;
|
|
26
27
|
get theme(): string;
|
|
27
28
|
set theme(value: string);
|
|
29
|
+
get isLocal(): boolean;
|
|
30
|
+
set isLocal(value: boolean);
|
|
28
31
|
}
|
package/dist/appConfig.js
CHANGED
|
@@ -13,15 +13,17 @@ export class AppConfig {
|
|
|
13
13
|
load() {
|
|
14
14
|
for (const key in this.items) {
|
|
15
15
|
const item = this.items[key];
|
|
16
|
+
const strValue = this.localStorage.getItem(item.name);
|
|
17
|
+
item.loaded = strValue != null;
|
|
16
18
|
switch (typeof item.default) {
|
|
17
19
|
case "string":
|
|
18
|
-
item.value =
|
|
20
|
+
item.value = strValue ?? item.default ?? "";
|
|
19
21
|
break;
|
|
20
22
|
case "number":
|
|
21
|
-
item.value =
|
|
23
|
+
item.value = strValue ? Number(strValue) : (item.default ?? 0);
|
|
22
24
|
break;
|
|
23
25
|
case "boolean":
|
|
24
|
-
item.value =
|
|
26
|
+
item.value = strValue ? (strValue == 'true') : (item.default ?? false);
|
|
25
27
|
break;
|
|
26
28
|
}
|
|
27
29
|
}
|
|
@@ -29,10 +31,17 @@ export class AppConfig {
|
|
|
29
31
|
saveItem(item) {
|
|
30
32
|
this.localStorage.setItem(item.name, item.value);
|
|
31
33
|
}
|
|
34
|
+
clearItem(item) {
|
|
35
|
+
this.localStorage.setItem(item.name, null);
|
|
36
|
+
item.value = item.default;
|
|
37
|
+
}
|
|
32
38
|
save() {
|
|
33
39
|
for (const key in this.items) {
|
|
34
40
|
const item = this.items[key];
|
|
35
|
-
|
|
41
|
+
if (item.value != item.default)
|
|
42
|
+
this.saveItem(item);
|
|
43
|
+
else if (item.loaded)
|
|
44
|
+
this.clearItem(item);
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
47
|
restoreDefaults() {
|
|
@@ -89,5 +98,12 @@ export class AppConfig {
|
|
|
89
98
|
this.items['theme'].value = value;
|
|
90
99
|
this.saveItem(this.items['theme']);
|
|
91
100
|
}
|
|
101
|
+
get isLocal() {
|
|
102
|
+
return this.items['isLocal'].value;
|
|
103
|
+
}
|
|
104
|
+
set isLocal(value) {
|
|
105
|
+
this.items['isLocal'].value = value;
|
|
106
|
+
this.saveItem(this.items['isLocal']);
|
|
107
|
+
}
|
|
92
108
|
}
|
|
93
109
|
//# sourceMappingURL=appConfig.js.map
|
package/dist/appConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appConfig.js","sourceRoot":"","sources":["../src/appConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,SAAS;IAClB,YAAY,CAAgB;IAE5B,KAAK,GAA4B,EAAE,CAAC;IACpC,aAAa,CAA8B;IAE3C,YAAY,OAAsB;QAC9B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAChC,CAAC;IACD,GAAG,CAAI,IAAY,EAAE,WAAmB,EAAE,KAAe,EAAE,WAAoB,EAAE,MAAc,EAAG,MAAiB;QAC/G,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC9I,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI;QACA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"appConfig.js","sourceRoot":"","sources":["../src/appConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
Trace = 0,
|
|
3
|
+
Debug = 1,
|
|
4
|
+
Information = 2,
|
|
5
|
+
Warning = 3,
|
|
6
|
+
Error = 4,
|
|
7
|
+
Critical = 5
|
|
8
|
+
}
|
|
9
|
+
export interface ILoggerEntry {
|
|
10
|
+
uniqueId: number;
|
|
11
|
+
logLevel: LogLevel;
|
|
12
|
+
now: Date;
|
|
13
|
+
categoryName: string;
|
|
14
|
+
message: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ILoggerEntryEx extends ILoggerEntry {
|
|
17
|
+
timeAsc: string;
|
|
18
|
+
severityAsc: string;
|
|
19
|
+
styleObject: any;
|
|
20
|
+
}
|
|
21
|
+
export interface ILoggerInfo {
|
|
22
|
+
name: string;
|
|
23
|
+
countAll: number;
|
|
24
|
+
countEnabled: number;
|
|
25
|
+
minLogLevel: LogLevel;
|
|
26
|
+
}
|
|
27
|
+
export interface ILogger extends ILoggerInfo {
|
|
28
|
+
trace(msg: string): void;
|
|
29
|
+
info(msg: string): void;
|
|
30
|
+
warning(msg: string): void;
|
|
31
|
+
error(msg: string): void;
|
|
32
|
+
log(severity: LogLevel, msg: string): void;
|
|
33
|
+
startPerformance(): void;
|
|
34
|
+
performance(msg: string): void;
|
|
35
|
+
}
|
|
36
|
+
export interface IProviderInfo extends ILoggerInfo {
|
|
37
|
+
info: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ILoggerProvider extends IProviderInfo {
|
|
40
|
+
log(logEntry: ILoggerEntry, formatedMessage: string): void;
|
|
41
|
+
}
|
|
42
|
+
export interface ILoggerQueueEntries {
|
|
43
|
+
lastUniqueId: number;
|
|
44
|
+
readPointerStart: number;
|
|
45
|
+
readPointerNext: number;
|
|
46
|
+
writePointer: number;
|
|
47
|
+
size: number;
|
|
48
|
+
firstTime: Date;
|
|
49
|
+
lastTime: Date;
|
|
50
|
+
minLogLevel: LogLevel;
|
|
51
|
+
entries: ILoggerEntry[];
|
|
52
|
+
}
|
|
53
|
+
export interface ILoggerService {
|
|
54
|
+
name: string;
|
|
55
|
+
getLoggers(): Promise<ILoggerInfo[]>;
|
|
56
|
+
getProviders(): Promise<IProviderInfo[]>;
|
|
57
|
+
setLoggerLevel(logger: string, level: LogLevel): Promise<boolean>;
|
|
58
|
+
setProviderLevel(provider: string, level: LogLevel): Promise<boolean>;
|
|
59
|
+
getQueuedLogs(minLogLevel: LogLevel, maxCount: number, maxMinutes: number, reverse: boolean, trimCategory: boolean, readPointer: number): Promise<ILoggerQueueEntries>;
|
|
60
|
+
clearCounter(): Promise<boolean>;
|
|
61
|
+
clearQueue(): Promise<boolean>;
|
|
62
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var LogLevel;
|
|
2
|
+
(function (LogLevel) {
|
|
3
|
+
LogLevel[LogLevel["Trace"] = 0] = "Trace";
|
|
4
|
+
LogLevel[LogLevel["Debug"] = 1] = "Debug";
|
|
5
|
+
LogLevel[LogLevel["Information"] = 2] = "Information";
|
|
6
|
+
LogLevel[LogLevel["Warning"] = 3] = "Warning";
|
|
7
|
+
LogLevel[LogLevel["Error"] = 4] = "Error";
|
|
8
|
+
LogLevel[LogLevel["Critical"] = 5] = "Critical";
|
|
9
|
+
})(LogLevel || (LogLevel = {}));
|
|
10
|
+
//# sourceMappingURL=iLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iLogger.js","sourceRoot":"","sources":["../../../../logger/src/iLogger.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,qDAAe,CAAA;IACf,6CAAW,CAAA;IACX,yCAAS,CAAA;IACT,+CAAY,CAAA;AAChB,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -119,6 +119,7 @@ export interface IConfigItem extends IDataItem {
|
|
|
119
119
|
description: string;
|
|
120
120
|
doNotChange: boolean;
|
|
121
121
|
scopes: EScope;
|
|
122
|
+
loaded?: boolean;
|
|
122
123
|
}
|
|
123
124
|
export interface IAppConfig {
|
|
124
125
|
localStorage: ILocalStorage;
|
|
@@ -126,6 +127,8 @@ export interface IAppConfig {
|
|
|
126
127
|
subscribePush?: ISubscribePushNotification;
|
|
127
128
|
add(name: string, description: string, value: ItemType, doNotChange: boolean, scopes: EScope, values?: string[]): void;
|
|
128
129
|
load(): void;
|
|
130
|
+
saveItem(item: IConfigItem): void;
|
|
131
|
+
clearItem(item: IConfigItem): void;
|
|
129
132
|
save(): void;
|
|
130
133
|
restoreDefaults(): void;
|
|
131
134
|
log(logger: ILogger, logLevel: LogLevel): void;
|
|
@@ -139,6 +142,7 @@ export interface IAppConfig {
|
|
|
139
142
|
useRemoteLog: boolean;
|
|
140
143
|
loggerQueueSize: number;
|
|
141
144
|
logDescending: boolean;
|
|
145
|
+
isLocal: boolean;
|
|
142
146
|
}
|
|
143
147
|
export type IdType = string | number;
|
|
144
148
|
export interface IEntity {
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
export type SpeechRecognitionErrorCode = 'aborted' | 'audio-capture' | 'bad-grammar' | 'language-not-supported' | 'network' | 'no-speech' | 'not-allowed' | 'service-not-allowed';
|
|
3
|
+
interface SpeechGrammar {
|
|
4
|
+
src: string;
|
|
5
|
+
weight: number;
|
|
6
|
+
}
|
|
7
|
+
interface SpeechGrammarList {
|
|
8
|
+
readonly length: number;
|
|
9
|
+
addFromString: (string: string, weight?: number) => void;
|
|
10
|
+
addFromURI: (src: string, weight?: number) => void;
|
|
11
|
+
item: (index: number) => SpeechGrammar;
|
|
12
|
+
[index: number]: SpeechGrammar;
|
|
13
|
+
}
|
|
14
|
+
export interface SpeechRecognitionErrorEvent extends Event {
|
|
15
|
+
readonly error: SpeechRecognitionErrorCode;
|
|
16
|
+
readonly message: string;
|
|
17
|
+
}
|
|
18
|
+
interface SpeechRecognitionEvent extends Event {
|
|
19
|
+
readonly resultIndex: number;
|
|
20
|
+
readonly results: SpeechRecognitionResultList;
|
|
21
|
+
}
|
|
22
|
+
interface SpeechRecognitionEventMap {
|
|
23
|
+
audioend: Event;
|
|
24
|
+
audiostart: Event;
|
|
25
|
+
end: Event;
|
|
26
|
+
error: SpeechRecognitionErrorEvent;
|
|
27
|
+
nomatch: SpeechRecognitionEvent;
|
|
28
|
+
result: SpeechRecognitionEvent;
|
|
29
|
+
soundend: Event;
|
|
30
|
+
soundstart: Event;
|
|
31
|
+
speechend: Event;
|
|
32
|
+
speechstart: Event;
|
|
33
|
+
start: Event;
|
|
34
|
+
}
|
|
35
|
+
export interface SpeechRecognition extends EventTarget {
|
|
36
|
+
continuous: boolean;
|
|
37
|
+
grammars: SpeechGrammarList;
|
|
38
|
+
interimResults: boolean;
|
|
39
|
+
lang: string;
|
|
40
|
+
maxAlternatives: number;
|
|
41
|
+
onaudioend: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
42
|
+
onaudiostart: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
43
|
+
onend: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
44
|
+
onerror: ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => any) | null;
|
|
45
|
+
onnomatch: ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any) | null;
|
|
46
|
+
onresult: ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any) | null;
|
|
47
|
+
onsoundend: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
48
|
+
onsoundstart: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
49
|
+
onspeechend: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
50
|
+
onspeechstart: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
51
|
+
onstart: ((this: SpeechRecognition, ev: Event) => any) | null;
|
|
52
|
+
abort: () => void;
|
|
53
|
+
start: () => void;
|
|
54
|
+
stop: () => void;
|
|
55
|
+
addEventListener: (<K extends keyof SpeechRecognitionEventMap>(type: K, listener: (this: SpeechRecognition, ev: SpeechRecognitionEventMap[K]) => any, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
56
|
+
removeEventListener: (<K extends keyof SpeechRecognitionEventMap>(type: K, listener: (this: SpeechRecognition, ev: SpeechRecognitionEventMap[K]) => any, options?: boolean | EventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void);
|
|
57
|
+
}
|
|
58
|
+
export interface UseSpeechRecognitionOptions {
|
|
59
|
+
/**
|
|
60
|
+
* Controls whether continuous results are returned for each recognition, or only a single result.
|
|
61
|
+
*
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
64
|
+
continuous?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Controls whether interim results should be returned (true) or not (false.) Interim results are results that are not yet final
|
|
67
|
+
*
|
|
68
|
+
* @default true
|
|
69
|
+
*/
|
|
70
|
+
interimResults?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Language for SpeechRecognition
|
|
73
|
+
*
|
|
74
|
+
* @default 'en-US'
|
|
75
|
+
*/
|
|
76
|
+
lang?: Ref<string>;
|
|
77
|
+
/**
|
|
78
|
+
* A number representing the maximum returned alternatives for each result.
|
|
79
|
+
*
|
|
80
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition/maxAlternatives
|
|
81
|
+
* @default 1
|
|
82
|
+
*/
|
|
83
|
+
maxAlternatives?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Reactive SpeechRecognition.
|
|
87
|
+
*
|
|
88
|
+
* @see https://vueuse.org/useSpeechRecognition
|
|
89
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition SpeechRecognition
|
|
90
|
+
* @param options
|
|
91
|
+
*/
|
|
92
|
+
export declare function useSpeechRecognition(options?: UseSpeechRecognitionOptions): {
|
|
93
|
+
isSupported: boolean;
|
|
94
|
+
isListening: Ref<boolean>;
|
|
95
|
+
isFinal: Ref<boolean>;
|
|
96
|
+
recognition: SpeechRecognition;
|
|
97
|
+
result: Ref<string>;
|
|
98
|
+
error: Ref<SpeechRecognitionErrorEvent>;
|
|
99
|
+
toggle: (value?: boolean) => void;
|
|
100
|
+
start: () => void;
|
|
101
|
+
stop: () => void;
|
|
102
|
+
};
|
|
103
|
+
export type UseSpeechRecognitionReturn = ReturnType<typeof useSpeechRecognition>;
|
|
104
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { toRef, toValue, ref, shallowRef, watch } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Reactive SpeechRecognition.
|
|
4
|
+
*
|
|
5
|
+
* @see https://vueuse.org/useSpeechRecognition
|
|
6
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition SpeechRecognition
|
|
7
|
+
* @param options
|
|
8
|
+
*/
|
|
9
|
+
export function useSpeechRecognition(options = {}) {
|
|
10
|
+
const { interimResults = true, continuous = true, maxAlternatives = 1 } = options;
|
|
11
|
+
const lang = toRef(options.lang || 'en-US');
|
|
12
|
+
const isListening = ref(false);
|
|
13
|
+
const isFinal = ref(false);
|
|
14
|
+
const result = ref('');
|
|
15
|
+
const error = shallowRef(undefined);
|
|
16
|
+
const toggle = (value = !isListening.value) => {
|
|
17
|
+
isListening.value = value;
|
|
18
|
+
};
|
|
19
|
+
const start = () => {
|
|
20
|
+
isListening.value = true;
|
|
21
|
+
};
|
|
22
|
+
const stop = () => {
|
|
23
|
+
isListening.value = false;
|
|
24
|
+
};
|
|
25
|
+
const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);
|
|
26
|
+
const isSupported = !!SpeechRecognition;
|
|
27
|
+
let recognition;
|
|
28
|
+
if (isSupported) {
|
|
29
|
+
recognition = new SpeechRecognition();
|
|
30
|
+
recognition.continuous = continuous;
|
|
31
|
+
recognition.interimResults = interimResults;
|
|
32
|
+
recognition.lang = toValue(lang);
|
|
33
|
+
recognition.maxAlternatives = maxAlternatives;
|
|
34
|
+
recognition.onstart = () => {
|
|
35
|
+
isFinal.value = false;
|
|
36
|
+
};
|
|
37
|
+
watch(lang, (lang) => {
|
|
38
|
+
if (recognition && !isListening.value)
|
|
39
|
+
recognition.lang = lang;
|
|
40
|
+
});
|
|
41
|
+
recognition.onresult = (event) => {
|
|
42
|
+
const currentResult = event.results[event.resultIndex];
|
|
43
|
+
const { transcript } = currentResult[0];
|
|
44
|
+
isFinal.value = currentResult.isFinal;
|
|
45
|
+
result.value = transcript;
|
|
46
|
+
error.value = undefined;
|
|
47
|
+
};
|
|
48
|
+
recognition.onerror = (event) => {
|
|
49
|
+
error.value = event;
|
|
50
|
+
};
|
|
51
|
+
recognition.onend = () => {
|
|
52
|
+
isListening.value = false;
|
|
53
|
+
recognition.lang = toValue(lang);
|
|
54
|
+
};
|
|
55
|
+
watch(isListening, () => {
|
|
56
|
+
if (isListening.value)
|
|
57
|
+
recognition.start();
|
|
58
|
+
else
|
|
59
|
+
recognition.stop();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/*
|
|
63
|
+
tryOnScopeDispose(() => {
|
|
64
|
+
isListening.value = false
|
|
65
|
+
})
|
|
66
|
+
*/
|
|
67
|
+
return {
|
|
68
|
+
isSupported,
|
|
69
|
+
isListening,
|
|
70
|
+
isFinal,
|
|
71
|
+
recognition,
|
|
72
|
+
result,
|
|
73
|
+
error,
|
|
74
|
+
toggle,
|
|
75
|
+
start,
|
|
76
|
+
stop,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=useSpeechRecognition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSpeechRecognition.js","sourceRoot":"","sources":["../src/useSpeechRecognition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
export type UseSpeechSynthesisStatus = 'init' | 'play' | 'pause' | 'end';
|
|
3
|
+
export interface UseSpeechSynthesisOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Language for SpeechSynthesis
|
|
6
|
+
*
|
|
7
|
+
* @default 'en-US'
|
|
8
|
+
*/
|
|
9
|
+
lang?: Ref<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Gets and sets the pitch at which the utterance will be spoken at.
|
|
12
|
+
*
|
|
13
|
+
* @default 1
|
|
14
|
+
*/
|
|
15
|
+
pitch?: Ref<SpeechSynthesisUtterance['pitch']>;
|
|
16
|
+
/**
|
|
17
|
+
* Gets and sets the speed at which the utterance will be spoken at.
|
|
18
|
+
*
|
|
19
|
+
* @default 1
|
|
20
|
+
*/
|
|
21
|
+
rate?: Ref<SpeechSynthesisUtterance['rate']>;
|
|
22
|
+
/**
|
|
23
|
+
* Gets and sets the voice that will be used to speak the utterance.
|
|
24
|
+
*/
|
|
25
|
+
voice?: Ref<SpeechSynthesisVoice>;
|
|
26
|
+
/**
|
|
27
|
+
* Gets and sets the volume that the utterance will be spoken at.
|
|
28
|
+
*
|
|
29
|
+
* @default 1
|
|
30
|
+
*/
|
|
31
|
+
volume?: SpeechSynthesisUtterance['volume'];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Reactive SpeechSynthesis.
|
|
35
|
+
*
|
|
36
|
+
* @see https://vueuse.org/useSpeechSynthesis
|
|
37
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis SpeechSynthesis
|
|
38
|
+
*/
|
|
39
|
+
export declare function useSpeechSynthesis(text: Ref<string>, options?: UseSpeechSynthesisOptions): {
|
|
40
|
+
isSupported: boolean;
|
|
41
|
+
isPlaying: Ref<boolean>;
|
|
42
|
+
status: Ref<UseSpeechSynthesisStatus>;
|
|
43
|
+
utterance: import("vue").ComputedRef<SpeechSynthesisUtterance>;
|
|
44
|
+
error: Ref<SpeechSynthesisErrorEvent>;
|
|
45
|
+
stop: () => void;
|
|
46
|
+
toggle: (value?: boolean) => void;
|
|
47
|
+
speak: () => void;
|
|
48
|
+
};
|
|
49
|
+
export type UseSpeechSynthesisReturn = ReturnType<typeof useSpeechSynthesis>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { computed, ref, shallowRef, watch, toRef, toValue } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Reactive SpeechSynthesis.
|
|
4
|
+
*
|
|
5
|
+
* @see https://vueuse.org/useSpeechSynthesis
|
|
6
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis SpeechSynthesis
|
|
7
|
+
*/
|
|
8
|
+
export function useSpeechSynthesis(text, options = {}) {
|
|
9
|
+
const { pitch = 1, rate = 1, volume = 1 } = options;
|
|
10
|
+
const synth = window && window.speechSynthesis;
|
|
11
|
+
const isSupported = !!synth;
|
|
12
|
+
const isPlaying = ref(false);
|
|
13
|
+
const status = ref('init');
|
|
14
|
+
const spokenText = toRef(text || '');
|
|
15
|
+
const lang = toRef(options.lang || 'en-US');
|
|
16
|
+
const error = shallowRef(undefined);
|
|
17
|
+
const toggle = (value = !isPlaying.value) => {
|
|
18
|
+
isPlaying.value = value;
|
|
19
|
+
};
|
|
20
|
+
const bindEventsForUtterance = (utterance) => {
|
|
21
|
+
utterance.lang = toValue(lang);
|
|
22
|
+
utterance.voice = toValue(options.voice) || null;
|
|
23
|
+
utterance.pitch = toValue(pitch);
|
|
24
|
+
utterance.rate = toValue(rate);
|
|
25
|
+
utterance.volume = volume;
|
|
26
|
+
utterance.onstart = () => {
|
|
27
|
+
isPlaying.value = true;
|
|
28
|
+
status.value = 'play';
|
|
29
|
+
};
|
|
30
|
+
utterance.onpause = () => {
|
|
31
|
+
isPlaying.value = false;
|
|
32
|
+
status.value = 'pause';
|
|
33
|
+
};
|
|
34
|
+
utterance.onresume = () => {
|
|
35
|
+
isPlaying.value = true;
|
|
36
|
+
status.value = 'play';
|
|
37
|
+
};
|
|
38
|
+
utterance.onend = () => {
|
|
39
|
+
isPlaying.value = false;
|
|
40
|
+
status.value = 'end';
|
|
41
|
+
};
|
|
42
|
+
utterance.onerror = (event) => {
|
|
43
|
+
error.value = event;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const utterance = computed(() => {
|
|
47
|
+
isPlaying.value = false;
|
|
48
|
+
status.value = 'init';
|
|
49
|
+
const newUtterance = new SpeechSynthesisUtterance(spokenText.value);
|
|
50
|
+
bindEventsForUtterance(newUtterance);
|
|
51
|
+
return newUtterance;
|
|
52
|
+
});
|
|
53
|
+
const speak = () => {
|
|
54
|
+
synth.cancel();
|
|
55
|
+
if (utterance)
|
|
56
|
+
synth.speak(utterance.value);
|
|
57
|
+
};
|
|
58
|
+
const stop = () => {
|
|
59
|
+
synth.cancel();
|
|
60
|
+
isPlaying.value = false;
|
|
61
|
+
};
|
|
62
|
+
if (isSupported) {
|
|
63
|
+
bindEventsForUtterance(utterance.value);
|
|
64
|
+
watch(lang, (lang) => {
|
|
65
|
+
if (utterance.value && !isPlaying.value)
|
|
66
|
+
utterance.value.lang = lang;
|
|
67
|
+
});
|
|
68
|
+
if (options.voice) {
|
|
69
|
+
watch(options.voice, () => {
|
|
70
|
+
synth.cancel();
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
watch(isPlaying, () => {
|
|
74
|
+
if (isPlaying.value)
|
|
75
|
+
synth.resume();
|
|
76
|
+
else
|
|
77
|
+
synth.pause();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/*
|
|
81
|
+
tryOnScopeDispose(() => {
|
|
82
|
+
isPlaying.value = false
|
|
83
|
+
})
|
|
84
|
+
*/
|
|
85
|
+
return {
|
|
86
|
+
isSupported,
|
|
87
|
+
isPlaying,
|
|
88
|
+
status,
|
|
89
|
+
utterance,
|
|
90
|
+
error,
|
|
91
|
+
stop,
|
|
92
|
+
toggle,
|
|
93
|
+
speak,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=useSpeechSynthesis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSpeechSynthesis.js","sourceRoot":"","sources":["../src/useSpeechSynthesis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare type Dictionary<T> = {
|
|
2
|
+
[key: string]: T;
|
|
3
|
+
};
|
|
4
|
+
export interface IValueText {
|
|
5
|
+
value: number;
|
|
6
|
+
text: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class Helper {
|
|
9
|
+
static fromMilliseconds1970(ms: number): Date;
|
|
10
|
+
static toTicks(dt: Date): number;
|
|
11
|
+
static toUnixTime(dt: Date): number;
|
|
12
|
+
static fromTicks(ticks: number): Date;
|
|
13
|
+
static fromUnixTime(unixTime: number): Date;
|
|
14
|
+
static toUTC(dt: Date): Date;
|
|
15
|
+
static toLocal(dt: Date): Date;
|
|
16
|
+
static round(value: number, digits: number | undefined): string;
|
|
17
|
+
static formatTime(dt: Date, withSeconds?: boolean): string;
|
|
18
|
+
static formatDayTime(dt: Date, withSeconds?: boolean): string;
|
|
19
|
+
private static padNumber2;
|
|
20
|
+
static toColor(red: number, green: number, blue: number): string;
|
|
21
|
+
static generateUUID(): string;
|
|
22
|
+
static deepCompare(o: any, p: any): boolean;
|
|
23
|
+
static isMobileDevice(): boolean;
|
|
24
|
+
static wait(ms: number): Promise<void>;
|
|
25
|
+
static enumToString(en: any, value: unknown): string;
|
|
26
|
+
static stringToEnum(en: any, value: unknown): number;
|
|
27
|
+
static getEnumOptions(en: any): IValueText[];
|
|
28
|
+
}
|