@vc-shell/framework 1.0.71 → 1.0.73
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/CHANGELOG.md +25 -0
- package/core/composables/usePermissions/index.ts +21 -8
- package/core/composables/useUser/index.ts +5 -4
- package/core/plugins/modularity/index.ts +17 -2
- package/core/utilities/index.ts +1 -0
- package/core/utilities/kebabToCamel.ts +7 -0
- package/dist/core/composables/usePermissions/index.d.ts +1 -2
- package/dist/core/composables/usePermissions/index.d.ts.map +1 -1
- package/dist/core/composables/useUser/index.d.ts.map +1 -1
- package/dist/core/plugins/modularity/index.d.ts +4 -1
- package/dist/core/plugins/modularity/index.d.ts.map +1 -1
- package/dist/core/utilities/index.d.ts +1 -0
- package/dist/core/utilities/index.d.ts.map +1 -1
- package/dist/core/utilities/kebabToCamel.d.ts +2 -0
- package/dist/core/utilities/kebabToCamel.d.ts.map +1 -0
- package/dist/framework.mjs +11483 -11161
- package/dist/index.css +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts +5 -7
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/index.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts +5 -5
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +20 -4
- package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/types/index.d.ts +1 -1
- package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/vc-link/vc-link.stories.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-select/index.d.ts +26 -26
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +26 -26
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
- package/package.json +5 -4
- package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +6 -10
- package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +148 -62
- package/shared/components/blade-navigation/types/index.ts +1 -1
- package/shared/pages/LoginPage/components/login/Login.vue +1 -1
- package/ui/components/atoms/vc-link/vc-link.stories.ts +0 -1
- package/ui/components/atoms/vc-link/vc-link.vue +2 -2
- package/ui/components/molecules/vc-select/vc-select.vue +5 -5
- package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +1 -0
- package/ui/components/organisms/vc-app/vc-app.vue +6 -3
- package/dist/injectionSymbols.d.ts +0 -6
- package/dist/injectionSymbols.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
## [1.0.73](https://github.com/VirtoCommerce/vc-shell/compare/v1.0.72...v1.0.73) (2023-06-08)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* vc-select generic ([8aca326](https://github.com/VirtoCommerce/vc-shell/commit/8aca3260cc1d5912f5c8063314d820b14078373e))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## [1.0.72](https://github.com/VirtoCommerce/vc-shell/compare/v1.0.71...v1.0.72) (2023-06-07)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* authData length check ([bd04284](https://github.com/VirtoCommerce/vc-shell/commit/bd04284fd91887a41ba99f52bd37d844a13c2e8a))
|
|
16
|
+
* vc-app-bar mobile styles ([75955d4](https://github.com/VirtoCommerce/vc-shell/commit/75955d4cb9692a3430395f8dbf5943b5c2eb8f36))
|
|
17
|
+
* vc-select dropdown closing ([ecde06f](https://github.com/VirtoCommerce/vc-shell/commit/ecde06ffd679d06f7d8f75304437510f4e46063c))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* blade nav last state, permissions ([d98144a](https://github.com/VirtoCommerce/vc-shell/commit/d98144a2e5f2b4241543f7624fc7d811aa3f951f))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
1
26
|
## [1.0.71](https://github.com/VirtoCommerce/vc-shell/compare/v1.0.70...v1.0.71) (2023-06-02)
|
|
2
27
|
|
|
3
28
|
|
|
@@ -1,32 +1,45 @@
|
|
|
1
|
+
import { Ref, ref } from "vue";
|
|
1
2
|
import { useUser } from "./../useUser";
|
|
2
|
-
import { computed, ComputedRef } from "vue";
|
|
3
3
|
|
|
4
4
|
interface IUsePermissions {
|
|
5
|
-
readonly userPermissions: ComputedRef<string[]>;
|
|
6
5
|
checkPermission(permissions: string | string[]): boolean;
|
|
6
|
+
fetchUserPermissions(): Promise<void>;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
const userPermissions: Ref<string[]> = ref([]);
|
|
9
9
|
export function usePermissions(): IUsePermissions {
|
|
10
|
-
const { user } = useUser();
|
|
10
|
+
const { user, loadUser } = useUser();
|
|
11
|
+
|
|
12
|
+
async function fetchUserPermissions() {
|
|
13
|
+
if (user.value?.permissions) {
|
|
14
|
+
userPermissions.value = user.value?.permissions;
|
|
15
|
+
} else {
|
|
16
|
+
try {
|
|
17
|
+
const userData = await loadUser();
|
|
18
|
+
userPermissions.value = userData.permissions;
|
|
19
|
+
} catch (e) {
|
|
20
|
+
throw new Error("Unable to load user permissions");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
11
24
|
|
|
12
25
|
function checkPermission(permissions: string | string[] | undefined) {
|
|
13
26
|
if (!permissions) {
|
|
14
27
|
return true;
|
|
15
28
|
} else if (permissions || (permissions && permissions instanceof Array)) {
|
|
16
29
|
if (typeof permissions === "string") {
|
|
17
|
-
return
|
|
30
|
+
return userPermissions.value?.includes(permissions);
|
|
18
31
|
} else if (permissions.length > 0) {
|
|
19
|
-
return
|
|
32
|
+
return userPermissions.value?.some((role) => {
|
|
20
33
|
return permissions.includes(role);
|
|
21
34
|
});
|
|
22
35
|
}
|
|
23
36
|
} else {
|
|
24
|
-
|
|
37
|
+
throw new Error("Permissions must be a string or strings array");
|
|
25
38
|
}
|
|
26
39
|
}
|
|
27
40
|
|
|
28
41
|
return {
|
|
29
|
-
userPermissions: computed(() => user.value?.permissions),
|
|
30
42
|
checkPermission,
|
|
43
|
+
fetchUserPermissions,
|
|
31
44
|
};
|
|
32
45
|
}
|
|
@@ -156,8 +156,8 @@ export function useUser(): IUseUser {
|
|
|
156
156
|
|
|
157
157
|
async function getAccessToken(): Promise<string | null> {
|
|
158
158
|
console.debug(`[@vc-shell/framework#useUser:getAccessToken] - Entry point`);
|
|
159
|
-
if (!authData.value) {
|
|
160
|
-
authData.value = readAuthData();
|
|
159
|
+
if (!authData.value || Object.keys(authData.value).length === 0) {
|
|
160
|
+
authData.value = await readAuthData();
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
if (authData.value && Date.now() >= (authData.value.expiresAt ?? 0)) {
|
|
@@ -166,6 +166,7 @@ export function useUser(): IUseUser {
|
|
|
166
166
|
authData.value.refreshToken ?? "",
|
|
167
167
|
{}
|
|
168
168
|
);
|
|
169
|
+
|
|
169
170
|
console.log("[useUser]: an access token is expired, using refresh token to receive a new");
|
|
170
171
|
try {
|
|
171
172
|
const newToken = await token.refresh();
|
|
@@ -190,8 +191,8 @@ export function useUser(): IUseUser {
|
|
|
190
191
|
function storeAuthData(authData: AuthData) {
|
|
191
192
|
localStorage.setItem(VC_AUTH_DATA_KEY, JSON.stringify({ ...(authData || {}) }));
|
|
192
193
|
}
|
|
193
|
-
function readAuthData(): AuthData {
|
|
194
|
-
return JSON.parse(localStorage.getItem(VC_AUTH_DATA_KEY) || "{}") as AuthData;
|
|
194
|
+
async function readAuthData(): Promise<AuthData> {
|
|
195
|
+
return (await JSON.parse(localStorage.getItem(VC_AUTH_DATA_KEY) || "{}")) as AuthData;
|
|
195
196
|
}
|
|
196
197
|
|
|
197
198
|
function addOffsetToCurrentDate(offsetInSeconds: number): number {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { App } from "vue";
|
|
2
2
|
import { i18n } from "./../i18n";
|
|
3
|
+
import { Router } from "vue-router";
|
|
4
|
+
import { BladeConstructor } from "./../../../shared/components/blade-navigation/types";
|
|
5
|
+
import { kebabToPascal } from "./../../utilities";
|
|
3
6
|
|
|
4
7
|
export const createModule = (components: unknown, locales?: unknown) => ({
|
|
5
8
|
install(app: App): void {
|
|
@@ -21,10 +24,22 @@ export const createAppModule = (pages: unknown, locales?: unknown, notificationT
|
|
|
21
24
|
const module = createModule(pages, locales);
|
|
22
25
|
|
|
23
26
|
return {
|
|
24
|
-
install(app: App): void {
|
|
27
|
+
install(app: App, options: { router: Router }): void {
|
|
28
|
+
const { router } = options;
|
|
25
29
|
// Register pages
|
|
26
|
-
Object.entries(pages).forEach(([, page]) => {
|
|
30
|
+
Object.entries(pages).forEach(([, page]: [string, BladeConstructor]) => {
|
|
27
31
|
app.config.globalProperties.pages?.push(page);
|
|
32
|
+
|
|
33
|
+
// Dynamically add pages to vue router
|
|
34
|
+
if (page.url) {
|
|
35
|
+
const mainRouteName = router.getRoutes().find((r) => r.meta?.root)?.name;
|
|
36
|
+
|
|
37
|
+
router.addRoute(mainRouteName, {
|
|
38
|
+
name: kebabToPascal(page.url.substring(1)),
|
|
39
|
+
path: page.url.substring(1),
|
|
40
|
+
component: page,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
28
43
|
});
|
|
29
44
|
|
|
30
45
|
if (notificationTemplates) {
|
package/core/utilities/index.ts
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const kebabToCamel = (str: string) => str.replace(/-./g, (x) => x[1].toUpperCase());
|
|
2
|
+
|
|
3
|
+
export function kebabToPascal(str: string) {
|
|
4
|
+
const camelCase = kebabToCamel(str);
|
|
5
|
+
const pascalCase = camelCase[0].toUpperCase() + camelCase.substr(1);
|
|
6
|
+
return pascalCase;
|
|
7
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ComputedRef } from "vue";
|
|
2
1
|
interface IUsePermissions {
|
|
3
|
-
readonly userPermissions: ComputedRef<string[]>;
|
|
4
2
|
checkPermission(permissions: string | string[]): boolean;
|
|
3
|
+
fetchUserPermissions(): Promise<void>;
|
|
5
4
|
}
|
|
6
5
|
export declare function usePermissions(): IUsePermissions;
|
|
7
6
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/usePermissions/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/usePermissions/index.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IACzD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,wBAAgB,cAAc,IAAI,eAAe,CAoChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/useUser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,EAAO,WAAW,EAAmC,MAAM,KAAK,CAAC;AAEvF,OAAO,EACL,UAAU,EAGV,cAAc,EAEd,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAY,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAmB/E,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnG,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1F,yBAAyB,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3D,cAAc,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClG,eAAe,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACnE,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,sBAAsB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,qBAAqB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,wBAAgB,OAAO,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/useUser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,EAAO,WAAW,EAAmC,MAAM,KAAK,CAAC;AAEvF,OAAO,EACL,UAAU,EAGV,cAAc,EAEd,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAY,qBAAqB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAmB/E,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnG,oBAAoB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/E,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1F,yBAAyB,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3D,cAAc,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClG,eAAe,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACnE,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,sBAAsB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,qBAAqB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,wBAAgB,OAAO,IAAI,QAAQ,CA4UlC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { App } from "vue";
|
|
2
|
+
import { Router } from "vue-router";
|
|
2
3
|
export declare const createModule: (components: unknown, locales?: unknown) => {
|
|
3
4
|
install(app: App): void;
|
|
4
5
|
};
|
|
5
6
|
export declare const createAppModule: (pages: unknown, locales?: unknown, notificationTemplates?: unknown) => {
|
|
6
|
-
install(app: App
|
|
7
|
+
install(app: App, options: {
|
|
8
|
+
router: Router;
|
|
9
|
+
}): void;
|
|
7
10
|
};
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/plugins/modularity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/plugins/modularity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIpC,eAAO,MAAM,YAAY,eAAgB,OAAO,YAAY,OAAO;iBACpD,GAAG,GAAG,IAAI;CAavB,CAAC;AAEH,eAAO,MAAM,eAAe,UAAW,OAAO,YAAY,OAAO,0BAA0B,OAAO;iBAIjF,GAAG,WAAW;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CA2BvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kebabToCamel.d.ts","sourceRoot":"","sources":["../../../core/utilities/kebabToCamel.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,UAIxC"}
|