@vuu-ui/vuu-shell 0.8.67 → 0.8.68
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/cjs/application-provider/ApplicationContext.js +1 -4
- package/cjs/application-provider/ApplicationContext.js.map +1 -1
- package/cjs/application-provider/ApplicationProvider.js +66 -11
- package/cjs/application-provider/ApplicationProvider.js.map +1 -1
- package/cjs/index.js +17 -7
- package/cjs/index.js.map +1 -1
- package/cjs/layout-management/useLayoutManager.js +11 -21
- package/cjs/layout-management/useLayoutManager.js.map +1 -1
- package/cjs/persistence-management/LocalPersistenceManager.js +32 -8
- package/cjs/persistence-management/LocalPersistenceManager.js.map +1 -1
- package/cjs/persistence-management/PersistenceProvider.js +21 -0
- package/cjs/persistence-management/PersistenceProvider.js.map +1 -0
- package/cjs/persistence-management/RemotePersistenceManager.js +8 -0
- package/cjs/persistence-management/RemotePersistenceManager.js.map +1 -1
- package/cjs/persistence-management/StaticPersistenceManager.js +20 -4
- package/cjs/persistence-management/StaticPersistenceManager.js.map +1 -1
- package/cjs/persistence-management/defaultApplicationJson.js.map +1 -1
- package/cjs/shell-layouts/context-panel/ContextPanel.js.map +1 -1
- package/cjs/shell.js +4 -3
- package/cjs/shell.js.map +1 -1
- package/cjs/{application-settings/ApplicationSettingsPanel.js → user-settings/SettingsForm.js} +21 -44
- package/cjs/user-settings/SettingsForm.js.map +1 -0
- package/cjs/user-settings/UserSettingsPanel.css.js +6 -0
- package/cjs/user-settings/UserSettingsPanel.css.js.map +1 -0
- package/cjs/user-settings/UserSettingsPanel.js +41 -0
- package/cjs/user-settings/UserSettingsPanel.js.map +1 -0
- package/esm/application-provider/ApplicationContext.js +1 -4
- package/esm/application-provider/ApplicationContext.js.map +1 -1
- package/esm/application-provider/ApplicationProvider.js +65 -13
- package/esm/application-provider/ApplicationProvider.js.map +1 -1
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -1
- package/esm/layout-management/useLayoutManager.js +11 -21
- package/esm/layout-management/useLayoutManager.js.map +1 -1
- package/esm/persistence-management/LocalPersistenceManager.js +32 -8
- package/esm/persistence-management/LocalPersistenceManager.js.map +1 -1
- package/esm/persistence-management/PersistenceProvider.js +17 -0
- package/esm/persistence-management/PersistenceProvider.js.map +1 -0
- package/esm/persistence-management/RemotePersistenceManager.js +8 -0
- package/esm/persistence-management/RemotePersistenceManager.js.map +1 -1
- package/esm/persistence-management/StaticPersistenceManager.js +20 -4
- package/esm/persistence-management/StaticPersistenceManager.js.map +1 -1
- package/esm/persistence-management/defaultApplicationJson.js.map +1 -1
- package/esm/shell-layouts/context-panel/ContextPanel.js.map +1 -1
- package/esm/shell.js +4 -3
- package/esm/shell.js.map +1 -1
- package/esm/{application-settings/ApplicationSettingsPanel.js → user-settings/SettingsForm.js} +22 -41
- package/esm/user-settings/SettingsForm.js.map +1 -0
- package/esm/user-settings/UserSettingsPanel.css.js +4 -0
- package/esm/user-settings/UserSettingsPanel.css.js.map +1 -0
- package/esm/user-settings/UserSettingsPanel.js +39 -0
- package/esm/user-settings/UserSettingsPanel.js.map +1 -0
- package/package.json +11 -11
- package/types/application-provider/ApplicationContext.d.ts +6 -6
- package/types/application-provider/ApplicationProvider.d.ts +9 -4
- package/types/index.d.ts +2 -1
- package/types/layout-management/layoutTypes.d.ts +1 -1
- package/types/layout-management/useLayoutManager.d.ts +2 -4
- package/types/persistence-management/LocalPersistenceManager.d.ts +5 -4
- package/types/persistence-management/PersistenceManager.d.ts +15 -3
- package/types/persistence-management/PersistenceProvider.d.ts +11 -0
- package/types/persistence-management/RemotePersistenceManager.d.ts +5 -3
- package/types/persistence-management/StaticPersistenceManager.d.ts +10 -5
- package/types/persistence-management/defaultApplicationJson.d.ts +1 -1
- package/types/persistence-management/index.d.ts +1 -0
- package/types/shell-layouts/context-panel/ContextPanel.d.ts +1 -1
- package/types/{application-settings/ApplicationSettingsPanel.d.ts → user-settings/SettingsForm.d.ts} +13 -12
- package/types/user-settings/UserSettingsPanel.d.ts +3 -0
- package/types/user-settings/index.d.ts +2 -0
- package/cjs/application-settings/ApplicationSettingsPanel.css.js +0 -6
- package/cjs/application-settings/ApplicationSettingsPanel.css.js.map +0 -1
- package/cjs/application-settings/ApplicationSettingsPanel.js.map +0 -1
- package/esm/application-settings/ApplicationSettingsPanel.css.js +0 -4
- package/esm/application-settings/ApplicationSettingsPanel.css.js.map +0 -1
- package/esm/application-settings/ApplicationSettingsPanel.js.map +0 -1
- package/types/application-settings/applicationsettingsSchema.d.ts +0 -3
- package/types/application-settings/index.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemotePersistenceManager.js","sources":["../../src/persistence-management/RemotePersistenceManager.ts"],"sourcesContent":["import { PersistenceManager } from \"./PersistenceManager\";\nimport { ApplicationJSON, LayoutJSON } from \"@vuu-ui/vuu-layout\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"../layout-management\";\nimport { getAuthDetailsFromCookies } from \"../login\";\n\nconst baseURL = process.env.LAYOUT_BASE_URL;\nconst metadataSaveLocation = \"layouts/metadata\";\nconst layoutsSaveLocation = \"layouts\";\nconst applicationLayoutsSaveLocation = \"application-layouts\";\n\nexport type CreateLayoutResponseDto = { metadata: LayoutMetadata };\nexport type GetLayoutResponseDto = { definition: LayoutJSON };\nexport type GetApplicationResponseDto = { definition: ApplicationJSON };\n\nexport class RemotePersistenceManager implements PersistenceManager {\n username: string = getAuthDetailsFromCookies()[0];\n\n createLayout(\n metadata: LayoutMetadataDto,\n layout: LayoutJSON\n ): Promise<LayoutMetadata> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${layoutsSaveLocation}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify({\n metadata,\n definition: layout,\n }),\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then(({ metadata }: CreateLayoutResponseDto) => {\n if (!metadata) {\n reject(new Error(\"Response did not contain valid metadata\"));\n }\n resolve(metadata);\n });\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n updateLayout(\n id: string,\n metadata: LayoutMetadataDto,\n newLayoutJson: LayoutJSON\n ): Promise<void> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${layoutsSaveLocation}/${id}`, {\n method: \"PUT\",\n body: JSON.stringify({\n metadata,\n layout: newLayoutJson,\n }),\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n resolve();\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n deleteLayout(id: string): Promise<void> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${layoutsSaveLocation}/${id}`, {\n method: \"DELETE\",\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n resolve();\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n loadLayout(id: string): Promise<LayoutJSON> {\n return new Promise((resolve, reject) => {\n fetch(`${baseURL}/${layoutsSaveLocation}/${id}`, {\n method: \"GET\",\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then(({ definition }: GetLayoutResponseDto) => {\n if (!definition) {\n reject(new Error(\"Response did not contain a valid layout\"));\n }\n resolve(definition);\n });\n })\n .catch((error: Error) => {\n reject(error);\n });\n });\n }\n\n loadMetadata(): Promise<LayoutMetadata[]> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${metadataSaveLocation}`, {\n method: \"GET\",\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then((metadata: LayoutMetadata[]) => {\n if (!metadata) {\n reject(new Error(\"Response did not contain valid metadata\"));\n }\n resolve(metadata);\n });\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n saveApplicationJSON(applicationJSON: ApplicationJSON): Promise<void> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${applicationLayoutsSaveLocation}`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n username: this.username,\n },\n body: JSON.stringify(applicationJSON),\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n resolve();\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n loadApplicationJSON(): Promise<ApplicationJSON> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${applicationLayoutsSaveLocation}`, {\n method: \"GET\",\n headers: {\n username: this.username,\n },\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then((applicationJSON: GetApplicationResponseDto) => {\n if (!applicationJSON) {\n reject(\n new Error(\n \"Response did not contain valid application layout information\"\n )\n );\n }\n resolve(applicationJSON.definition);\n });\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n}\n"],"names":["getAuthDetailsFromCookies","metadata"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RemotePersistenceManager.js","sources":["../../src/persistence-management/RemotePersistenceManager.ts"],"sourcesContent":["import { ApplicationJSON, LayoutJSON, Settings } from \"@vuu-ui/vuu-utils\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"../layout-management\";\nimport { getAuthDetailsFromCookies } from \"../login\";\nimport { IPersistenceManager } from \"./PersistenceManager\";\n\nconst baseURL = process.env.LAYOUT_BASE_URL;\nconst metadataSaveLocation = \"layouts/metadata\";\nconst layoutsSaveLocation = \"layouts\";\nconst applicationLayoutsSaveLocation = \"application-layouts\";\n\nexport type CreateLayoutResponseDto = { metadata: LayoutMetadata };\nexport type GetLayoutResponseDto = { definition: LayoutJSON };\nexport type GetApplicationResponseDto = { definition: ApplicationJSON };\n\nexport class RemotePersistenceManager implements IPersistenceManager {\n username: string = getAuthDetailsFromCookies()[0];\n\n createLayout(\n metadata: LayoutMetadataDto,\n layout: LayoutJSON\n ): Promise<LayoutMetadata> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${layoutsSaveLocation}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify({\n metadata,\n definition: layout,\n }),\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then(({ metadata }: CreateLayoutResponseDto) => {\n if (!metadata) {\n reject(new Error(\"Response did not contain valid metadata\"));\n }\n resolve(metadata);\n });\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n updateLayout(\n id: string,\n metadata: LayoutMetadataDto,\n newLayoutJson: LayoutJSON\n ): Promise<void> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${layoutsSaveLocation}/${id}`, {\n method: \"PUT\",\n body: JSON.stringify({\n metadata,\n layout: newLayoutJson,\n }),\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n resolve();\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n deleteLayout(id: string): Promise<void> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${layoutsSaveLocation}/${id}`, {\n method: \"DELETE\",\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n resolve();\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n loadLayout(id: string): Promise<LayoutJSON> {\n return new Promise((resolve, reject) => {\n fetch(`${baseURL}/${layoutsSaveLocation}/${id}`, {\n method: \"GET\",\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then(({ definition }: GetLayoutResponseDto) => {\n if (!definition) {\n reject(new Error(\"Response did not contain a valid layout\"));\n }\n resolve(definition);\n });\n })\n .catch((error: Error) => {\n reject(error);\n });\n });\n }\n\n loadMetadata(): Promise<LayoutMetadata[]> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${metadataSaveLocation}`, {\n method: \"GET\",\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then((metadata: LayoutMetadata[]) => {\n if (!metadata) {\n reject(new Error(\"Response did not contain valid metadata\"));\n }\n resolve(metadata);\n });\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n saveApplicationJSON(applicationJSON: ApplicationJSON): Promise<void> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${applicationLayoutsSaveLocation}`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n username: this.username,\n },\n body: JSON.stringify(applicationJSON),\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n resolve();\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n loadApplicationJSON(): Promise<ApplicationJSON> {\n return new Promise((resolve, reject) =>\n fetch(`${baseURL}/${applicationLayoutsSaveLocation}`, {\n method: \"GET\",\n headers: {\n username: this.username,\n },\n })\n .then((response) => {\n if (!response.ok) {\n reject(new Error(response.statusText));\n }\n response.json().then((applicationJSON: GetApplicationResponseDto) => {\n if (!applicationJSON) {\n reject(\n new Error(\n \"Response did not contain valid application layout information\"\n )\n );\n }\n resolve(applicationJSON.definition);\n });\n })\n .catch((error: Error) => {\n reject(error);\n })\n );\n }\n\n async getUserSettings() {\n return {};\n }\n\n saveUserSettings(userSettings: Settings) {\n console.log(\"saveUserSettings not implemented\", {\n userSettings,\n });\n }\n}\n"],"names":["getAuthDetailsFromCookies","metadata"],"mappings":"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"}
|
|
@@ -18,16 +18,21 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
18
18
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
19
19
|
return value;
|
|
20
20
|
};
|
|
21
|
-
var _layoutMetaData;
|
|
21
|
+
var _applicationJSON, _layoutMetaData;
|
|
22
22
|
function unsupported() {
|
|
23
23
|
return new Promise((_, reject) => {
|
|
24
24
|
reject("not supported");
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
class StaticPersistenceManager {
|
|
28
|
-
constructor(
|
|
28
|
+
constructor({
|
|
29
|
+
applicationJSON,
|
|
30
|
+
layoutMetadata = []
|
|
31
|
+
}) {
|
|
32
|
+
__privateAdd(this, _applicationJSON, void 0);
|
|
29
33
|
__privateAdd(this, _layoutMetaData, void 0);
|
|
30
34
|
__privateSet(this, _layoutMetaData, layoutMetadata);
|
|
35
|
+
__privateSet(this, _applicationJSON, applicationJSON);
|
|
31
36
|
}
|
|
32
37
|
createLayout() {
|
|
33
38
|
return unsupported();
|
|
@@ -48,10 +53,21 @@ class StaticPersistenceManager {
|
|
|
48
53
|
loadApplicationJSON() {
|
|
49
54
|
return unsupported();
|
|
50
55
|
}
|
|
51
|
-
saveApplicationJSON() {
|
|
52
|
-
|
|
56
|
+
async saveApplicationJSON(applicationJson) {
|
|
57
|
+
console.log(`save application json `, {
|
|
58
|
+
applicationJson
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async getUserSettings() {
|
|
62
|
+
return __privateGet(this, _applicationJSON)?.userSettings ?? {};
|
|
63
|
+
}
|
|
64
|
+
saveUserSettings(userSettings) {
|
|
65
|
+
console.log("saveUserSettings not implemented", {
|
|
66
|
+
userSettings
|
|
67
|
+
});
|
|
53
68
|
}
|
|
54
69
|
}
|
|
70
|
+
_applicationJSON = new WeakMap();
|
|
55
71
|
_layoutMetaData = new WeakMap();
|
|
56
72
|
|
|
57
73
|
exports.StaticPersistenceManager = StaticPersistenceManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticPersistenceManager.js","sources":["../../src/persistence-management/StaticPersistenceManager.ts"],"sourcesContent":["import { LayoutJSON,
|
|
1
|
+
{"version":3,"file":"StaticPersistenceManager.js","sources":["../../src/persistence-management/StaticPersistenceManager.ts"],"sourcesContent":["import { ApplicationJSON, LayoutJSON, Settings } from \"@vuu-ui/vuu-utils\";\nimport { LayoutMetadata } from \"../layout-management\";\nimport { IPersistenceManager } from \"./PersistenceManager\";\n\nfunction unsupported<T = void>() {\n return new Promise<T>((_, reject) => {\n reject(\"not supported\");\n });\n}\n\nexport class StaticPersistenceManager implements IPersistenceManager {\n #applicationJSON?: Partial<ApplicationJSON>;\n #layoutMetaData: LayoutMetadata[];\n constructor({\n applicationJSON,\n layoutMetadata = [],\n }: {\n applicationJSON?: Partial<ApplicationJSON>;\n layoutMetadata?: LayoutMetadata[];\n }) {\n this.#layoutMetaData = layoutMetadata;\n this.#applicationJSON = applicationJSON;\n }\n createLayout() {\n return unsupported<LayoutMetadata>();\n }\n updateLayout() {\n return unsupported();\n }\n deleteLayout() {\n return unsupported();\n }\n loadLayout(id: string) {\n console.log(`load layout #${id}`);\n return unsupported<LayoutJSON>();\n }\n loadMetadata() {\n return Promise.resolve(this.#layoutMetaData);\n }\n loadApplicationJSON() {\n return unsupported<ApplicationJSON>();\n }\n async saveApplicationJSON(applicationJson: ApplicationJSON) {\n console.log(`save application json `, {\n applicationJson,\n });\n }\n\n async getUserSettings() {\n return this.#applicationJSON?.userSettings ?? {};\n }\n\n saveUserSettings(userSettings: Settings) {\n console.log(\"saveUserSettings not implemented\", {\n userSettings,\n });\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,IAAA,gBAAA,EAAA,eAAA,CAAA;AAIA,SAAS,WAAwB,GAAA;AAC/B,EAAA,OAAO,IAAI,OAAA,CAAW,CAAC,CAAA,EAAG,MAAW,KAAA;AACnC,IAAA,MAAA,CAAO,eAAe,CAAA,CAAA;AAAA,GACvB,CAAA,CAAA;AACH,CAAA;AAEO,MAAM,wBAAwD,CAAA;AAAA,EAGnE,WAAY,CAAA;AAAA,IACV,eAAA;AAAA,IACA,iBAAiB,EAAC;AAAA,GAIjB,EAAA;AARH,IAAA,YAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQE,IAAA,YAAA,CAAA,IAAA,EAAK,eAAkB,EAAA,cAAA,CAAA,CAAA;AACvB,IAAA,YAAA,CAAA,IAAA,EAAK,gBAAmB,EAAA,eAAA,CAAA,CAAA;AAAA,GAC1B;AAAA,EACA,YAAe,GAAA;AACb,IAAA,OAAO,WAA4B,EAAA,CAAA;AAAA,GACrC;AAAA,EACA,YAAe,GAAA;AACb,IAAA,OAAO,WAAY,EAAA,CAAA;AAAA,GACrB;AAAA,EACA,YAAe,GAAA;AACb,IAAA,OAAO,WAAY,EAAA,CAAA;AAAA,GACrB;AAAA,EACA,WAAW,EAAY,EAAA;AACrB,IAAQ,OAAA,CAAA,GAAA,CAAI,CAAgB,aAAA,EAAA,EAAE,CAAE,CAAA,CAAA,CAAA;AAChC,IAAA,OAAO,WAAwB,EAAA,CAAA;AAAA,GACjC;AAAA,EACA,YAAe,GAAA;AACb,IAAO,OAAA,OAAA,CAAQ,OAAQ,CAAA,YAAA,CAAA,IAAA,EAAK,eAAe,CAAA,CAAA,CAAA;AAAA,GAC7C;AAAA,EACA,mBAAsB,GAAA;AACpB,IAAA,OAAO,WAA6B,EAAA,CAAA;AAAA,GACtC;AAAA,EACA,MAAM,oBAAoB,eAAkC,EAAA;AAC1D,IAAA,OAAA,CAAQ,IAAI,CAA0B,sBAAA,CAAA,EAAA;AAAA,MACpC,eAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,MAAM,eAAkB,GAAA;AACtB,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,gBAAkB,CAAA,EAAA,YAAA,IAAgB,EAAC,CAAA;AAAA,GACjD;AAAA,EAEA,iBAAiB,YAAwB,EAAA;AACvC,IAAA,OAAA,CAAQ,IAAI,kCAAoC,EAAA;AAAA,MAC9C,YAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AACF,CAAA;AA9CE,gBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultApplicationJson.js","sources":["../../src/persistence-management/defaultApplicationJson.ts"],"sourcesContent":["import { ApplicationJSON, LayoutJSON } from \"@vuu-ui/vuu-
|
|
1
|
+
{"version":3,"file":"defaultApplicationJson.js","sources":["../../src/persistence-management/defaultApplicationJson.ts"],"sourcesContent":["import { ApplicationJSON, LayoutJSON } from \"@vuu-ui/vuu-utils\";\n\nexport const warningLayout: LayoutJSON = {\n type: \"View\",\n props: {\n style: { height: \"calc(100% - 6px)\" },\n },\n children: [\n {\n props: {\n className: \"vuuShell-warningPlaceholder\",\n },\n type: \"Placeholder\",\n },\n ],\n};\n\nexport const loadingApplicationJson: Readonly<ApplicationJSON> = {\n layout: {\n type: \"Component\",\n id: \"loading-main\",\n props: {},\n },\n};\n\nexport const defaultApplicationJson: ApplicationJSON = {\n layout: {\n type: \"Stack\",\n id: \"main-tabs\",\n props: {\n className: \"vuuShell-mainTabs\",\n TabstripProps: {\n allowAddTab: true,\n allowCloseTab: true,\n allowRenameTab: true,\n animateSelectionThumb: false,\n location: \"main-tab\",\n variant: \"primary\",\n },\n preserve: true,\n active: 0,\n },\n children: [\n {\n props: {\n id: \"tab1\",\n title: \"Tab 1\",\n className: \"vuuShell-Placeholder\",\n },\n type: \"Placeholder\",\n },\n ],\n },\n};\n"],"names":[],"mappings":";;AAEO,MAAM,aAA4B,GAAA;AAAA,EACvC,IAAM,EAAA,MAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,KAAA,EAAO,EAAE,MAAA,EAAQ,kBAAmB,EAAA;AAAA,GACtC;AAAA,EACA,QAAU,EAAA;AAAA,IACR;AAAA,MACE,KAAO,EAAA;AAAA,QACL,SAAW,EAAA,6BAAA;AAAA,OACb;AAAA,MACA,IAAM,EAAA,aAAA;AAAA,KACR;AAAA,GACF;AACF,EAAA;AAEO,MAAM,sBAAoD,GAAA;AAAA,EAC/D,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,WAAA;AAAA,IACN,EAAI,EAAA,cAAA;AAAA,IACJ,OAAO,EAAC;AAAA,GACV;AACF,EAAA;AAEO,MAAM,sBAA0C,GAAA;AAAA,EACrD,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,OAAA;AAAA,IACN,EAAI,EAAA,WAAA;AAAA,IACJ,KAAO,EAAA;AAAA,MACL,SAAW,EAAA,mBAAA;AAAA,MACX,aAAe,EAAA;AAAA,QACb,WAAa,EAAA,IAAA;AAAA,QACb,aAAe,EAAA,IAAA;AAAA,QACf,cAAgB,EAAA,IAAA;AAAA,QAChB,qBAAuB,EAAA,KAAA;AAAA,QACvB,QAAU,EAAA,UAAA;AAAA,QACV,OAAS,EAAA,SAAA;AAAA,OACX;AAAA,MACA,QAAU,EAAA,IAAA;AAAA,MACV,MAAQ,EAAA,CAAA;AAAA,KACV;AAAA,IACA,QAAU,EAAA;AAAA,MACR;AAAA,QACE,KAAO,EAAA;AAAA,UACL,EAAI,EAAA,MAAA;AAAA,UACJ,KAAO,EAAA,OAAA;AAAA,UACP,SAAW,EAAA,sBAAA;AAAA,SACb;AAAA,QACA,IAAM,EAAA,aAAA;AAAA,OACR;AAAA,KACF;AAAA,GACF;AACF;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextPanel.js","sources":["../../../src/shell-layouts/context-panel/ContextPanel.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"ContextPanel.js","sources":["../../../src/shell-layouts/context-panel/ContextPanel.tsx"],"sourcesContent":["import {\n View,\n layoutFromJson,\n useLayoutProviderDispatch,\n} from \"@vuu-ui/vuu-layout\";\nimport { IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport { LayoutJSON } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { useCallback, useMemo } from \"react\";\n\nimport contextPanelCss from \"./ContextPanel.css\";\n\nconst classBase = \"vuuContextPanel\";\n\nexport interface ContextPanelProps {\n [key: string]: unknown;\n className?: string;\n content?: LayoutJSON;\n expanded?: boolean;\n overlay?: boolean;\n}\n\nexport const ContextPanel = ({\n className: classNameProp,\n expanded = false,\n content: contentProp,\n overlay = false,\n title,\n}: ContextPanelProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-context-panel\",\n css: contextPanelCss,\n window: targetWindow,\n });\n\n const dispatchLayoutAction = useLayoutProviderDispatch();\n // const [contentJson, setContentJson] = useState(contentProp);\n const handleClose = useCallback(() => {\n dispatchLayoutAction({\n path: \"#context-panel\",\n propName: \"expanded\",\n propValue: false,\n type: \"set-prop\",\n });\n }, [dispatchLayoutAction]);\n // TODO look up content using context\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-expanded`]: expanded,\n [`${classBase}-inline`]: overlay !== true,\n [`${classBase}-overlay`]: overlay,\n });\n\n const content = useMemo(\n () =>\n contentProp && expanded ? layoutFromJson(contentProp, \"context-0\") : null,\n [contentProp, expanded]\n );\n\n return (\n <div\n className={cx(classBase, className, \"vuuScrollable\", {\n [`${classBase}-expanded`]: expanded,\n })}\n >\n <View className={`${classBase}-inner`} header={false} id=\"context-panel\">\n <div className={`${classBase}-header`}>\n <h2 className={`${classBase}-title`}>{title}</h2>\n <IconButton\n className={`${classBase}-close`}\n data-embedded\n icon=\"close\"\n onClick={handleClose}\n size={16}\n variant=\"secondary\"\n />\n </div>\n <div className={`${classBase}-content`}>{content}</div>\n </View>\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","contextPanelCss","useLayoutProviderDispatch","useCallback","useMemo","layoutFromJson","jsx","jsxs","View","IconButton"],"mappings":";;;;;;;;;;;AAcA,MAAM,SAAY,GAAA,iBAAA,CAAA;AAUX,MAAM,eAAe,CAAC;AAAA,EAC3B,SAAW,EAAA,aAAA;AAAA,EACX,QAAW,GAAA,KAAA;AAAA,EACX,OAAS,EAAA,WAAA;AAAA,EACT,OAAU,GAAA,KAAA;AAAA,EACV,KAAA;AACF,CAAyB,KAAA;AACvB,EAAA,MAAM,eAAeA,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAC,cAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,uBAAuBC,mCAA0B,EAAA,CAAA;AAEvD,EAAM,MAAA,WAAA,GAAcC,kBAAY,MAAM;AACpC,IAAqB,oBAAA,CAAA;AAAA,MACnB,IAAM,EAAA,gBAAA;AAAA,MACN,QAAU,EAAA,UAAA;AAAA,MACV,SAAW,EAAA,KAAA;AAAA,MACX,IAAM,EAAA,UAAA;AAAA,KACP,CAAA,CAAA;AAAA,GACH,EAAG,CAAC,oBAAoB,CAAC,CAAA,CAAA;AAGzB,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAe,EAAA;AAAA,IAC7C,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG,QAAA;AAAA,IAC3B,CAAC,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,OAAY,KAAA,IAAA;AAAA,IACrC,CAAC,CAAA,EAAG,SAAS,CAAA,QAAA,CAAU,GAAG,OAAA;AAAA,GAC3B,CAAA,CAAA;AAED,EAAA,MAAM,OAAU,GAAAC,aAAA;AAAA,IACd,MACE,WAAe,IAAA,QAAA,GAAWC,wBAAe,CAAA,WAAA,EAAa,WAAW,CAAI,GAAA,IAAA;AAAA,IACvE,CAAC,aAAa,QAAQ,CAAA;AAAA,GACxB,CAAA;AAEA,EACE,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,EAAA,CAAG,SAAW,EAAA,SAAA,EAAW,eAAiB,EAAA;AAAA,QACnD,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG,QAAA;AAAA,OAC5B,CAAA;AAAA,MAED,QAAA,kBAAAC,eAAA,CAACC,kBAAK,SAAW,EAAA,CAAA,EAAG,SAAS,CAAU,MAAA,CAAA,EAAA,MAAA,EAAQ,KAAO,EAAA,EAAA,EAAG,eACvD,EAAA,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,CAC1B,OAAA,CAAA,EAAA,QAAA,EAAA;AAAA,0BAAAD,cAAA,CAAC,IAAG,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,0BAC5CA,cAAA;AAAA,YAACG,wBAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,GAAG,SAAS,CAAA,MAAA,CAAA;AAAA,cACvB,eAAa,EAAA,IAAA;AAAA,cACb,IAAK,EAAA,OAAA;AAAA,cACL,OAAS,EAAA,WAAA;AAAA,cACT,IAAM,EAAA,EAAA;AAAA,cACN,OAAQ,EAAA,WAAA;AAAA,aAAA;AAAA,WACV;AAAA,SACF,EAAA,CAAA;AAAA,uCACC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,YAAa,QAAQ,EAAA,OAAA,EAAA,CAAA;AAAA,OACnD,EAAA,CAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
package/cjs/shell.js
CHANGED
|
@@ -11,20 +11,21 @@ var cx = require('clsx');
|
|
|
11
11
|
var React = require('react');
|
|
12
12
|
var AppHeader = require('./app-header/AppHeader.js');
|
|
13
13
|
var ApplicationProvider = require('./application-provider/ApplicationProvider.js');
|
|
14
|
-
var
|
|
15
|
-
require('html-to-image');
|
|
14
|
+
var UserSettingsPanel = require('./user-settings/UserSettingsPanel.js');
|
|
16
15
|
require('@salt-ds/core');
|
|
16
|
+
require('html-to-image');
|
|
17
17
|
require('@vuu-ui/vuu-ui-controls');
|
|
18
18
|
var useLayoutManager = require('./layout-management/useLayoutManager.js');
|
|
19
19
|
var useLayoutContextMenuItems = require('./layout-management/useLayoutContextMenuItems.js');
|
|
20
20
|
var defaultApplicationJson = require('./persistence-management/defaultApplicationJson.js');
|
|
21
|
+
require('./persistence-management/PersistenceProvider.js');
|
|
21
22
|
require('./persistence-management/LocalPersistenceManager.js');
|
|
22
23
|
require('./persistence-management/RemotePersistenceManager.js');
|
|
23
24
|
require('./persistence-management/StaticPersistenceManager.js');
|
|
24
25
|
var useShellLayout = require('./shell-layouts/useShellLayout.js');
|
|
25
26
|
var shell = require('./shell.css.js');
|
|
26
27
|
|
|
27
|
-
vuuUtils.registerComponent("ApplicationSettings",
|
|
28
|
+
vuuUtils.registerComponent("ApplicationSettings", UserSettingsPanel.UserSettingsPanel, "view");
|
|
28
29
|
if (process.env.NODE_ENV === "production") {
|
|
29
30
|
if (typeof vuuLayout.StackLayout !== "function") {
|
|
30
31
|
console.warn(
|
package/cjs/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sources":["../src/shell.tsx"],"sourcesContent":["import { connectToServer } from \"@vuu-ui/vuu-data-remote\";\nimport type { LayoutChangeHandler } from \"@vuu-ui/vuu-layout\";\nimport {\n DraggableLayout,\n LayoutProvider,\n LayoutProviderProps,\n StackLayout,\n} from \"@vuu-ui/vuu-layout\";\nimport {\n ContextMenuProvider,\n DialogProvider,\n NotificationsProvider,\n} from \"@vuu-ui/vuu-popups\";\nimport { VuuUser, logger, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { AppHeader } from \"./app-header\";\nimport { ApplicationProvider } from \"./application-provider\";\nimport {
|
|
1
|
+
{"version":3,"file":"shell.js","sources":["../src/shell.tsx"],"sourcesContent":["import { connectToServer } from \"@vuu-ui/vuu-data-remote\";\nimport type { LayoutChangeHandler } from \"@vuu-ui/vuu-layout\";\nimport {\n DraggableLayout,\n LayoutProvider,\n LayoutProviderProps,\n StackLayout,\n} from \"@vuu-ui/vuu-layout\";\nimport {\n ContextMenuProvider,\n DialogProvider,\n NotificationsProvider,\n} from \"@vuu-ui/vuu-popups\";\nimport { VuuUser, logger, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { AppHeader } from \"./app-header\";\nimport { ApplicationProvider } from \"./application-provider\";\nimport { UserSettingsPanel } from \"./user-settings\";\nimport {\n LayoutManagementProvider,\n useLayoutContextMenuItems,\n useLayoutManager,\n} from \"./layout-management\";\nimport { loadingApplicationJson } from \"./persistence-management\";\nimport { SidePanelProps, useShellLayout } from \"./shell-layouts\";\n\nimport shellCss from \"./shell.css\";\n\nregisterComponent(\"ApplicationSettings\", UserSettingsPanel, \"view\");\n\nif (process.env.NODE_ENV === \"production\") {\n // StackLayout is loaded just to force component registration, we know it will be\n // required when default layout is instantiated. This is only required in prod\n // to avoif tree shaking the Stack away. Causes a runtime issue in dev.\n if (typeof StackLayout !== \"function\") {\n console.warn(\n \"StackLayout module not loaded, will be unsbale to deserialize from layout JSON\"\n );\n }\n}\n\nconst { error } = logger(\"Shell\");\n\nconst defaultLeftSidePanel: ShellProps[\"LeftSidePanelProps\"] = {};\n\nexport type LayoutTemplateName = \"full-height\" | \"inlay\";\n\nexport interface ShellProps extends HTMLAttributes<HTMLDivElement> {\n LayoutProps?: Pick<\n LayoutProviderProps,\n \"createNewChild\" | \"pathToDropTarget\"\n >;\n LeftSidePanelProps?: SidePanelProps;\n children?: ReactNode;\n leftSidePanelLayout?: \"full-height\" | \"inlay\";\n loginUrl?: string;\n // paletteConfig: any;\n saveUrl?: string;\n serverUrl?: string;\n user: VuuUser;\n}\n\nconst VuuApplication = ({\n LayoutProps,\n LeftSidePanelProps = defaultLeftSidePanel,\n children,\n className: classNameProp,\n leftSidePanelLayout,\n loginUrl,\n saveUrl,\n serverUrl,\n user,\n ...htmlAttributes\n}: ShellProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-shell\",\n css: shellCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLDivElement>(null);\n const { applicationJson, saveApplicationLayout } = useLayoutManager();\n const { buildMenuOptions, handleMenuAction } = useLayoutContextMenuItems();\n const [connectionStatus, setConnectionStatus] = useState<\n \"connected\" | \"rejected\"\n >(\"connected\");\n\n const handleLayoutChange = useCallback<LayoutChangeHandler>(\n (layout) => {\n try {\n saveApplicationLayout(layout);\n } catch {\n error?.(\"Failed to save layout\");\n }\n },\n [saveApplicationLayout]\n );\n\n useMemo(async () => {\n if (serverUrl && user.token) {\n const connectionStatus = await connectToServer({\n authToken: user.token,\n url: serverUrl,\n username: user.username,\n });\n setConnectionStatus(connectionStatus);\n }\n }, [serverUrl, user.token, user.username]);\n\n const className = cx(\"vuuShell\");\n\n const isLayoutLoading = applicationJson === loadingApplicationJson;\n\n const shellLayout = useShellLayout({\n LeftSidePanelProps,\n leftSidePanelLayout,\n appHeader: <AppHeader loginUrl={loginUrl} />,\n });\n\n if (connectionStatus === \"rejected\") {\n console.log(\"game over, no connection to server\");\n }\n\n return isLayoutLoading ? null : (\n <ContextMenuProvider\n menuActionHandler={handleMenuAction}\n menuBuilder={buildMenuOptions}\n >\n <LayoutProvider\n {...LayoutProps}\n layout={applicationJson.layout}\n onLayoutChange={handleLayoutChange}\n >\n <DraggableLayout\n className={className}\n ref={rootRef}\n {...htmlAttributes}\n >\n {shellLayout}\n </DraggableLayout>\n </LayoutProvider>\n {children}\n </ContextMenuProvider>\n );\n};\n\nexport const Shell = ({ user, ...props }: ShellProps) => {\n return (\n // ApplicationProvider must go outside Dialog and Notification providers\n // ApplicationProvider injects the SaltProvider and this must be the root\n // SaltProvider.\n <ApplicationProvider user={user}>\n <LayoutManagementProvider>\n <DialogProvider>\n <NotificationsProvider>\n <VuuApplication {...props} user={user} />\n </NotificationsProvider>\n </DialogProvider>\n </LayoutManagementProvider>\n </ApplicationProvider>\n );\n};\n"],"names":["registerComponent","UserSettingsPanel","StackLayout","logger","useWindow","useComponentCssInjection","shellCss","useRef","useLayoutManager","useLayoutContextMenuItems","useState","useCallback","useMemo","connectionStatus","connectToServer","loadingApplicationJson","useShellLayout","jsx","AppHeader","jsxs","ContextMenuProvider","LayoutProvider","DraggableLayout","ApplicationProvider","LayoutManagementProvider","DialogProvider","NotificationsProvider"],"mappings":"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"}
|
package/cjs/{application-settings/ApplicationSettingsPanel.js → user-settings/SettingsForm.js}
RENAMED
|
@@ -1,30 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
4
|
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
7
5
|
var core = require('@salt-ds/core');
|
|
8
|
-
var styles = require('@salt-ds/styles');
|
|
9
|
-
var window = require('@salt-ds/window');
|
|
10
6
|
var React = require('react');
|
|
11
|
-
var ApplicationSettingsPanel$1 = require('./ApplicationSettingsPanel.css.js');
|
|
12
7
|
|
|
13
8
|
const isOption = (value) => typeof value === "object" && "label" in value && "label" in value;
|
|
14
9
|
const isBooleanProperty = (property) => property.type === "boolean";
|
|
15
10
|
const isStringOrNumber = (value) => typeof value === "string" || typeof value === "number";
|
|
16
11
|
const getValueAndLabel = (value) => isOption(value) ? [value.value, value.label] : [value, value];
|
|
17
|
-
|
|
12
|
+
const defaultPropertyValue = {
|
|
13
|
+
boolean: false,
|
|
14
|
+
number: 0,
|
|
15
|
+
string: ""
|
|
16
|
+
};
|
|
17
|
+
function getFormControl(property, changeHandler, selectHandler, currentValue = property.defaultValue ?? defaultPropertyValue[property.type]) {
|
|
18
18
|
if (isBooleanProperty(property)) {
|
|
19
19
|
const checked = typeof currentValue === "boolean" ? currentValue : property.defaultValue ?? false;
|
|
20
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
-
core.Switch,
|
|
22
|
-
{
|
|
23
|
-
checked,
|
|
24
|
-
label: property.label,
|
|
25
|
-
onChange: changeHandler
|
|
26
|
-
}
|
|
27
|
-
);
|
|
20
|
+
return /* @__PURE__ */ jsxRuntime.jsx(core.Switch, { checked, onChange: changeHandler });
|
|
28
21
|
}
|
|
29
22
|
if (Array.isArray(property.values)) {
|
|
30
23
|
if (property.values.length <= 2) {
|
|
@@ -47,7 +40,14 @@ function getFormControl(property, changeHandler, selectHandler, currentValue) {
|
|
|
47
40
|
onSelectionChange: selectHandler,
|
|
48
41
|
children: property.values.map((valueOrOption) => {
|
|
49
42
|
const [value, label] = getValueAndLabel(valueOrOption);
|
|
50
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
core.Option,
|
|
45
|
+
{
|
|
46
|
+
value: label,
|
|
47
|
+
"data-field": property.name
|
|
48
|
+
},
|
|
49
|
+
value
|
|
50
|
+
);
|
|
51
51
|
})
|
|
52
52
|
}
|
|
53
53
|
);
|
|
@@ -58,9 +58,10 @@ function getFormControl(property, changeHandler, selectHandler, currentValue) {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
const SettingsForm = ({
|
|
61
|
-
applicationSettingsSchema,
|
|
62
|
-
applicationSettings,
|
|
63
|
-
onApplicationSettingChanged
|
|
61
|
+
settingsSchema: applicationSettingsSchema,
|
|
62
|
+
settings: applicationSettings,
|
|
63
|
+
onSettingChanged: onApplicationSettingChanged,
|
|
64
|
+
...htmlAttributes
|
|
64
65
|
}) => {
|
|
65
66
|
const getFieldNameFromEventTarget = (evt) => {
|
|
66
67
|
const fieldElement = vuuUtils.queryClosest(evt.target, "[data-field]");
|
|
@@ -85,7 +86,7 @@ const SettingsForm = ({
|
|
|
85
86
|
},
|
|
86
87
|
[onApplicationSettingChanged]
|
|
87
88
|
);
|
|
88
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: applicationSettingsSchema.properties.map((property) => /* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { "data-field": property.name, children: [
|
|
89
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...htmlAttributes, children: applicationSettingsSchema.properties.map((property) => /* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { "data-field": property.name, children: [
|
|
89
90
|
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: property.label }),
|
|
90
91
|
getFormControl(
|
|
91
92
|
property,
|
|
@@ -95,34 +96,10 @@ const SettingsForm = ({
|
|
|
95
96
|
)
|
|
96
97
|
] }, property.name)) });
|
|
97
98
|
};
|
|
98
|
-
const classBase = "vuuApplicationSettingsPanel";
|
|
99
|
-
const ApplicationSettingsPanel = ({
|
|
100
|
-
applicationSettingsSchema,
|
|
101
|
-
applicationSettings,
|
|
102
|
-
onApplicationSettingChanged,
|
|
103
|
-
...htmlAttributes
|
|
104
|
-
}) => {
|
|
105
|
-
const targetWindow = window.useWindow();
|
|
106
|
-
styles.useComponentCssInjection({
|
|
107
|
-
testId: "vuu-application-settings-panel",
|
|
108
|
-
css: ApplicationSettingsPanel$1,
|
|
109
|
-
window: targetWindow
|
|
110
|
-
});
|
|
111
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...htmlAttributes, className: classBase, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
112
|
-
SettingsForm,
|
|
113
|
-
{
|
|
114
|
-
applicationSettingsSchema,
|
|
115
|
-
applicationSettings,
|
|
116
|
-
onApplicationSettingChanged
|
|
117
|
-
}
|
|
118
|
-
) });
|
|
119
|
-
};
|
|
120
99
|
|
|
121
|
-
exports.ApplicationSettingsPanel = ApplicationSettingsPanel;
|
|
122
100
|
exports.SettingsForm = SettingsForm;
|
|
123
|
-
exports.default = ApplicationSettingsPanel;
|
|
124
101
|
exports.getFormControl = getFormControl;
|
|
125
102
|
exports.isBooleanProperty = isBooleanProperty;
|
|
126
103
|
exports.isOption = isOption;
|
|
127
104
|
exports.isStringOrNumber = isStringOrNumber;
|
|
128
|
-
//# sourceMappingURL=
|
|
105
|
+
//# sourceMappingURL=SettingsForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsForm.js","sources":["../../src/user-settings/SettingsForm.tsx"],"sourcesContent":["import { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { queryClosest, Settings } from \"@vuu-ui/vuu-utils\";\nimport {\n Dropdown,\n DropdownProps,\n FormField,\n FormFieldLabel,\n Input,\n Option,\n Switch,\n ToggleButton,\n ToggleButtonGroup,\n ToggleButtonGroupProps,\n} from \"@salt-ds/core\";\nimport {\n FormEventHandler,\n HTMLAttributes,\n SyntheticEvent,\n useCallback,\n} from \"react\";\n\nexport interface SettingsSchema {\n properties: SettingsProperty[];\n}\n\nexport interface SettingsProps {\n settingsSchema: SettingsSchema;\n settings: Settings;\n onSettingChanged: (\n propertyName: string,\n value: string | number | boolean\n ) => void;\n}\n\nexport type Option<T> = { label: string; value: T };\n\nexport const isOption = (\n value: Option<number | string> | number | string\n): value is Option<number | string> =>\n typeof value === \"object\" && \"label\" in value && \"label\" in value;\n\nexport interface BaseProperty {\n name: string;\n label: string;\n}\n\nexport interface StringProperty extends BaseProperty {\n values?: string[] | Option<string>[];\n defaultValue?: string;\n type: \"string\";\n}\nexport interface NumericProperty extends BaseProperty {\n values?: number[] | Option<number>[];\n defaultValue?: number;\n type: \"number\";\n}\nexport interface BooleanProperty extends BaseProperty {\n defaultValue?: boolean;\n type: \"boolean\";\n}\n\nexport type SettingsProperty =\n | StringProperty\n | NumericProperty\n | BooleanProperty;\n\nexport const isBooleanProperty = (\n property: SettingsProperty\n): property is BooleanProperty => property.type === \"boolean\";\n\nexport const isStringOrNumber = (value: unknown): value is string | number =>\n typeof value === \"string\" || typeof value === \"number\";\n\nconst getValueAndLabel = (value: string | number | Option<string | number>) =>\n isOption(value) ? [value.value, value.label] : [value, value];\n\nconst defaultPropertyValue: Record<\n SettingsProperty[\"type\"],\n VuuRowDataItemType\n> = {\n boolean: false,\n number: 0,\n string: \"\",\n};\n\n// Determine the form control type to be displayed\nexport function getFormControl(\n property: SettingsProperty,\n changeHandler: FormEventHandler,\n selectHandler: DropdownProps[\"onSelectionChange\"],\n currentValue: VuuRowDataItemType = property.defaultValue ??\n defaultPropertyValue[property.type]\n) {\n if (isBooleanProperty(property)) {\n const checked =\n typeof currentValue === \"boolean\"\n ? currentValue\n : property.defaultValue ?? false;\n\n return <Switch checked={checked} onChange={changeHandler}></Switch>;\n }\n // Toggle Box for 1 or 2 values\n if (Array.isArray(property.values)) {\n if (property.values.length <= 2) {\n return (\n <ToggleButtonGroup\n value={currentValue as ToggleButtonGroupProps[\"value\"]}\n onChange={changeHandler}\n >\n {property.values.map((valueOrOption) => {\n const [value, label] = getValueAndLabel(valueOrOption);\n return (\n <ToggleButton key={value} value={value}>\n {label}\n </ToggleButton>\n );\n })}\n </ToggleButtonGroup>\n );\n } else if (property.values.length > 2) {\n return (\n <Dropdown\n value={currentValue as DropdownProps[\"value\"]}\n onSelectionChange={selectHandler}\n >\n {property.values.map((valueOrOption) => {\n const [value, label] = getValueAndLabel(valueOrOption);\n return (\n <Option\n value={label}\n key={value}\n data-field={property.name}\n ></Option>\n );\n })}\n </Dropdown>\n );\n }\n } else {\n const value = isStringOrNumber(currentValue)\n ? currentValue\n : isStringOrNumber(property.defaultValue)\n ? property.defaultValue\n : \"\";\n return <Input value={value} />;\n }\n}\n\nexport type SettingsFormProps = SettingsProps & HTMLAttributes<HTMLDivElement>;\n\n// Generates application settings form component\nexport const SettingsForm = ({\n settingsSchema: applicationSettingsSchema,\n settings: applicationSettings,\n onSettingChanged: onApplicationSettingChanged,\n ...htmlAttributes\n}: SettingsFormProps) => {\n const getFieldNameFromEventTarget = (evt: SyntheticEvent) => {\n const fieldElement = queryClosest(evt.target, \"[data-field]\");\n if (fieldElement && fieldElement.dataset.field) {\n return fieldElement.dataset.field;\n } else {\n throw Error(\"data-field attribute not defined\");\n }\n };\n\n // Change Handler for toggle and input buttons\n const changeHandler = useCallback<FormEventHandler>(\n (event) => {\n const fieldName = getFieldNameFromEventTarget(event);\n const { checked, value } = event.target as HTMLInputElement;\n onApplicationSettingChanged(fieldName, checked ?? value);\n },\n [onApplicationSettingChanged]\n );\n\n // Change handler for selection form controls\n const selectHandler = useCallback(\n (event: SyntheticEvent, [selected]: string[]) => {\n const fieldName = getFieldNameFromEventTarget(event);\n onApplicationSettingChanged(fieldName, selected);\n },\n [onApplicationSettingChanged]\n );\n\n return (\n <div {...htmlAttributes}>\n {applicationSettingsSchema.properties.map((property) => (\n <FormField data-field={property.name} key={property.name}>\n <FormFieldLabel>{property.label}</FormFieldLabel>\n {getFormControl(\n property,\n changeHandler,\n selectHandler,\n applicationSettings[property.name]\n )}\n </FormField>\n ))}\n </div>\n );\n};\n"],"names":["jsx","Switch","ToggleButtonGroup","ToggleButton","Dropdown","Option","Input","queryClosest","useCallback","jsxs","FormField","FormFieldLabel"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSettingsPanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var styles = require('@salt-ds/styles');
|
|
5
|
+
var window = require('@salt-ds/window');
|
|
6
|
+
var ApplicationProvider = require('../application-provider/ApplicationProvider.js');
|
|
7
|
+
var SettingsForm = require('./SettingsForm.js');
|
|
8
|
+
var UserSettingsPanel$1 = require('./UserSettingsPanel.css.js');
|
|
9
|
+
|
|
10
|
+
const classBase = "vuuUserSettingsPanel";
|
|
11
|
+
const UserSettingsPanel = ({
|
|
12
|
+
...htmlAttributes
|
|
13
|
+
}) => {
|
|
14
|
+
const targetWindow = window.useWindow();
|
|
15
|
+
const {
|
|
16
|
+
onUserSettingChanged,
|
|
17
|
+
userSettings = {},
|
|
18
|
+
userSettingsSchema
|
|
19
|
+
} = ApplicationProvider.useApplicationSettings();
|
|
20
|
+
styles.useComponentCssInjection({
|
|
21
|
+
testId: "vuu-user-settings-panel",
|
|
22
|
+
css: UserSettingsPanel$1,
|
|
23
|
+
window: targetWindow
|
|
24
|
+
});
|
|
25
|
+
if (userSettingsSchema) {
|
|
26
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...htmlAttributes, className: classBase, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
SettingsForm.SettingsForm,
|
|
28
|
+
{
|
|
29
|
+
settings: userSettings,
|
|
30
|
+
settingsSchema: userSettingsSchema,
|
|
31
|
+
onSettingChanged: onUserSettingChanged
|
|
32
|
+
}
|
|
33
|
+
) });
|
|
34
|
+
} else {
|
|
35
|
+
console.warn("no settingsSchema provided to UserSettingsPanel");
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.UserSettingsPanel = UserSettingsPanel;
|
|
41
|
+
//# sourceMappingURL=UserSettingsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSettingsPanel.js","sources":["../../src/user-settings/UserSettingsPanel.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes } from \"react\";\nimport { useApplicationSettings } from \"../application-provider\";\nimport { SettingsForm } from \"./SettingsForm\";\n\nimport userSettingsPanelCss from \"./UserSettingsPanel.css\";\n\nexport type UserSettingsPanelProps = HTMLAttributes<HTMLDivElement>;\n\nconst classBase = \"vuuUserSettingsPanel\";\n\nexport const UserSettingsPanel = ({\n ...htmlAttributes\n}: UserSettingsPanelProps) => {\n const targetWindow = useWindow();\n\n const {\n onUserSettingChanged,\n userSettings = {},\n userSettingsSchema,\n } = useApplicationSettings();\n\n useComponentCssInjection({\n testId: \"vuu-user-settings-panel\",\n css: userSettingsPanelCss,\n window: targetWindow,\n });\n\n // Without a schema, we can't render a form\n // We could render a list of input boxes but lets require a schema for now.\n if (userSettingsSchema) {\n return (\n <div {...htmlAttributes} className={classBase}>\n <SettingsForm\n settings={userSettings}\n settingsSchema={userSettingsSchema}\n onSettingChanged={onUserSettingChanged}\n />\n </div>\n );\n } else {\n console.warn(\"no settingsSchema provided to UserSettingsPanel\");\n return null;\n }\n};\n"],"names":["useWindow","useApplicationSettings","useComponentCssInjection","userSettingsPanelCss","jsx","SettingsForm"],"mappings":";;;;;;;;;AAUA,MAAM,SAAY,GAAA,sBAAA,CAAA;AAEX,MAAM,oBAAoB,CAAC;AAAA,EAChC,GAAG,cAAA;AACL,CAA8B,KAAA;AAC5B,EAAA,MAAM,eAAeA,gBAAU,EAAA,CAAA;AAE/B,EAAM,MAAA;AAAA,IACJ,oBAAA;AAAA,IACA,eAAe,EAAC;AAAA,IAChB,kBAAA;AAAA,MACEC,0CAAuB,EAAA,CAAA;AAE3B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,yBAAA;AAAA,IACR,GAAK,EAAAC,mBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAID,EAAA,IAAI,kBAAoB,EAAA;AACtB,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA,EAAK,GAAG,cAAA,EAAgB,WAAW,SAClC,EAAA,QAAA,kBAAAA,cAAA;AAAA,MAACC,yBAAA;AAAA,MAAA;AAAA,QACC,QAAU,EAAA,YAAA;AAAA,QACV,cAAgB,EAAA,kBAAA;AAAA,QAChB,gBAAkB,EAAA,oBAAA;AAAA,OAAA;AAAA,KAEtB,EAAA,CAAA,CAAA;AAAA,GAEG,MAAA;AACL,IAAA,OAAA,CAAQ,KAAK,iDAAiD,CAAA,CAAA;AAC9D,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;;;"}
|
|
@@ -5,13 +5,10 @@ const Guest = {
|
|
|
5
5
|
token: ""
|
|
6
6
|
};
|
|
7
7
|
const ApplicationContext = createContext({
|
|
8
|
-
|
|
8
|
+
onUserSettingChanged: (propertyName) => console.warn(
|
|
9
9
|
`Cannot change setting '${propertyName}'.
|
|
10
10
|
Did you forget to declare an ApplicationProvider ?`
|
|
11
11
|
),
|
|
12
|
-
settings: {
|
|
13
|
-
themeMode: "light"
|
|
14
|
-
},
|
|
15
12
|
user: Guest
|
|
16
13
|
});
|
|
17
14
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationContext.js","sources":["../../src/application-provider/ApplicationContext.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"ApplicationContext.js","sources":["../../src/application-provider/ApplicationContext.tsx"],"sourcesContent":["import type { Settings, VuuUser } from \"@vuu-ui/vuu-utils\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { createContext } from \"react\";\nimport { SettingsSchema } from \"../user-settings\";\n\nconst Guest: VuuUser = {\n username: \"unknown\",\n token: \"\",\n};\n\nexport interface ApplicationContextProps {\n onUserSettingChanged: (\n propertyName: string,\n value: VuuRowDataItemType\n ) => void;\n userSettings?: Settings;\n userSettingsSchema?: SettingsSchema;\n user: VuuUser;\n}\n\nexport const ApplicationContext = createContext<ApplicationContextProps>({\n onUserSettingChanged: (propertyName: string) =>\n console.warn(\n `Cannot change setting '${propertyName}'.\\nDid you forget to declare an ApplicationProvider ?`\n ),\n user: Guest,\n});\n"],"names":[],"mappings":";;AAKA,MAAM,KAAiB,GAAA;AAAA,EACrB,QAAU,EAAA,SAAA;AAAA,EACV,KAAO,EAAA,EAAA;AACT,CAAA,CAAA;AAYO,MAAM,qBAAqB,aAAuC,CAAA;AAAA,EACvE,oBAAA,EAAsB,CAAC,YAAA,KACrB,OAAQ,CAAA,IAAA;AAAA,IACN,0BAA0B,YAAY,CAAA;AAAA,kDAAA,CAAA;AAAA,GACxC;AAAA,EACF,IAAM,EAAA,KAAA;AACR,CAAC;;;;"}
|
|
@@ -1,31 +1,83 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useContext, useState, useCallback } from 'react';
|
|
3
|
-
import { ApplicationContext } from './ApplicationContext.js';
|
|
4
2
|
import { SaltProvider } from '@salt-ds/core';
|
|
3
|
+
import { useContext, useState, useMemo, useCallback } from 'react';
|
|
4
|
+
import { ApplicationContext } from './ApplicationContext.js';
|
|
5
|
+
import { usePersistenceManager } from '../persistence-management/PersistenceProvider.js';
|
|
6
|
+
import '../persistence-management/LocalPersistenceManager.js';
|
|
7
|
+
import '../persistence-management/RemotePersistenceManager.js';
|
|
8
|
+
import '../persistence-management/StaticPersistenceManager.js';
|
|
5
9
|
|
|
10
|
+
const getThemeMode = (userSettings) => {
|
|
11
|
+
const themeMode = userSettings?.themeMode;
|
|
12
|
+
if (themeMode === "light" || themeMode === "dark") {
|
|
13
|
+
return themeMode;
|
|
14
|
+
}
|
|
15
|
+
return "light";
|
|
16
|
+
};
|
|
6
17
|
const ApplicationProvider = ({
|
|
7
18
|
children,
|
|
8
|
-
|
|
19
|
+
userSettingsSchema,
|
|
9
20
|
user
|
|
10
21
|
}) => {
|
|
22
|
+
const persistenceManager = usePersistenceManager();
|
|
11
23
|
const context = useContext(ApplicationContext);
|
|
12
|
-
const [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
const [userSettings, setSettings] = useState();
|
|
25
|
+
useMemo(async () => {
|
|
26
|
+
if (persistenceManager) {
|
|
27
|
+
const userSettings2 = await persistenceManager.getUserSettings();
|
|
28
|
+
setSettings(userSettings2);
|
|
29
|
+
} else {
|
|
30
|
+
setSettings({});
|
|
31
|
+
}
|
|
32
|
+
}, [persistenceManager]);
|
|
33
|
+
const onUserSettingChanged = useCallback(
|
|
34
|
+
(propertyName, value) => {
|
|
35
|
+
setSettings((currentSettings) => {
|
|
36
|
+
const newSettings = { ...currentSettings, [propertyName]: value };
|
|
37
|
+
persistenceManager?.saveUserSettings(newSettings);
|
|
38
|
+
return newSettings;
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
[persistenceManager]
|
|
42
|
+
);
|
|
43
|
+
return userSettings ? /* @__PURE__ */ jsx(
|
|
17
44
|
ApplicationContext.Provider,
|
|
18
45
|
{
|
|
19
46
|
value: {
|
|
20
47
|
...context,
|
|
21
|
-
|
|
22
|
-
|
|
48
|
+
onUserSettingChanged,
|
|
49
|
+
userSettings,
|
|
50
|
+
userSettingsSchema,
|
|
23
51
|
user: user ?? context.user
|
|
24
52
|
},
|
|
25
|
-
children: /* @__PURE__ */ jsx(
|
|
53
|
+
children: /* @__PURE__ */ jsx(
|
|
54
|
+
SaltProvider,
|
|
55
|
+
{
|
|
56
|
+
theme: "vuu-theme",
|
|
57
|
+
density: "high",
|
|
58
|
+
mode: getThemeMode(userSettings),
|
|
59
|
+
children
|
|
60
|
+
}
|
|
61
|
+
)
|
|
26
62
|
}
|
|
27
|
-
);
|
|
63
|
+
) : null;
|
|
64
|
+
};
|
|
65
|
+
const useApplicationUser = () => {
|
|
66
|
+
const { user } = useContext(ApplicationContext);
|
|
67
|
+
return user;
|
|
68
|
+
};
|
|
69
|
+
const useApplicationSettings = () => {
|
|
70
|
+
const { onUserSettingChanged, userSettings, userSettingsSchema } = useContext(ApplicationContext);
|
|
71
|
+
return {
|
|
72
|
+
onUserSettingChanged,
|
|
73
|
+
userSettings,
|
|
74
|
+
userSettingsSchema
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
const useUserSetting = () => {
|
|
78
|
+
const { userSettings } = useContext(ApplicationContext);
|
|
79
|
+
return { userSettings };
|
|
28
80
|
};
|
|
29
81
|
|
|
30
|
-
export { ApplicationProvider };
|
|
82
|
+
export { ApplicationProvider, useApplicationSettings, useApplicationUser, useUserSetting };
|
|
31
83
|
//# sourceMappingURL=ApplicationProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationProvider.js","sources":["../../src/application-provider/ApplicationProvider.tsx"],"sourcesContent":["import {\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport {\n ApplicationContext,\n ApplicationContextProps,\n} from \"./ApplicationContext\";\nimport {
|
|
1
|
+
{"version":3,"file":"ApplicationProvider.js","sources":["../../src/application-provider/ApplicationProvider.tsx"],"sourcesContent":["import { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { SaltProvider } from \"@salt-ds/core\";\nimport {\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport {\n ApplicationContext,\n ApplicationContextProps,\n} from \"./ApplicationContext\";\nimport { usePersistenceManager } from \"../persistence-management\";\n\nexport interface ApplicationProviderProps\n extends Partial<Omit<ApplicationContextProps, \"userSettings\">> {\n children: ReactNode;\n}\n\nconst getThemeMode = (\n userSettings?: Record<string, string | number | boolean>\n) => {\n const themeMode = userSettings?.themeMode;\n if (themeMode === \"light\" || themeMode === \"dark\") {\n return themeMode;\n }\n return \"light\";\n};\n\nexport const ApplicationProvider = ({\n children,\n userSettingsSchema: userSettingsSchema,\n user,\n}: ApplicationProviderProps): ReactElement | null => {\n const persistenceManager = usePersistenceManager();\n const context = useContext(ApplicationContext);\n const [userSettings, setSettings] =\n useState<Record<string, string | number | boolean>>();\n\n useMemo(async () => {\n if (persistenceManager) {\n const userSettings = await persistenceManager.getUserSettings();\n setSettings(userSettings);\n } else {\n setSettings({});\n }\n }, [persistenceManager]);\n\n const onUserSettingChanged = useCallback(\n (propertyName: string, value: VuuRowDataItemType) => {\n setSettings((currentSettings) => {\n const newSettings = { ...currentSettings, [propertyName]: value };\n persistenceManager?.saveUserSettings(newSettings);\n return newSettings;\n });\n },\n [persistenceManager]\n );\n\n return userSettings ? (\n <ApplicationContext.Provider\n value={{\n ...context,\n onUserSettingChanged,\n userSettings,\n userSettingsSchema,\n user: user ?? context.user,\n }}\n >\n <SaltProvider\n theme=\"vuu-theme\"\n density=\"high\"\n mode={getThemeMode(userSettings)}\n >\n {children}\n </SaltProvider>\n </ApplicationContext.Provider>\n ) : null;\n};\n\nexport const useApplicationUser = () => {\n const { user } = useContext(ApplicationContext);\n return user;\n};\n\n//Setter method (only used within the shell)\nexport const useApplicationSettings = () => {\n const { onUserSettingChanged, userSettings, userSettingsSchema } =\n useContext(ApplicationContext);\n return {\n onUserSettingChanged,\n userSettings,\n userSettingsSchema,\n };\n};\n\n//Getter method (read only access to applicationSetting)\nexport const useUserSetting = () => {\n const { userSettings } = useContext(ApplicationContext);\n return { userSettings };\n};\n"],"names":["userSettings"],"mappings":";;;;;;;;;AAqBA,MAAM,YAAA,GAAe,CACnB,YACG,KAAA;AACH,EAAA,MAAM,YAAY,YAAc,EAAA,SAAA,CAAA;AAChC,EAAI,IAAA,SAAA,KAAc,OAAW,IAAA,SAAA,KAAc,MAAQ,EAAA;AACjD,IAAO,OAAA,SAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,OAAA,CAAA;AACT,CAAA,CAAA;AAEO,MAAM,sBAAsB,CAAC;AAAA,EAClC,QAAA;AAAA,EACA,kBAAA;AAAA,EACA,IAAA;AACF,CAAqD,KAAA;AACnD,EAAA,MAAM,qBAAqB,qBAAsB,EAAA,CAAA;AACjD,EAAM,MAAA,OAAA,GAAU,WAAW,kBAAkB,CAAA,CAAA;AAC7C,EAAA,MAAM,CAAC,YAAA,EAAc,WAAW,CAAA,GAC9B,QAAoD,EAAA,CAAA;AAEtD,EAAA,OAAA,CAAQ,YAAY;AAClB,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAMA,MAAAA,aAAAA,GAAe,MAAM,kBAAA,CAAmB,eAAgB,EAAA,CAAA;AAC9D,MAAA,WAAA,CAAYA,aAAY,CAAA,CAAA;AAAA,KACnB,MAAA;AACL,MAAA,WAAA,CAAY,EAAE,CAAA,CAAA;AAAA,KAChB;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EAAA,MAAM,oBAAuB,GAAA,WAAA;AAAA,IAC3B,CAAC,cAAsB,KAA8B,KAAA;AACnD,MAAA,WAAA,CAAY,CAAC,eAAoB,KAAA;AAC/B,QAAA,MAAM,cAAc,EAAE,GAAG,iBAAiB,CAAC,YAAY,GAAG,KAAM,EAAA,CAAA;AAChE,QAAA,kBAAA,EAAoB,iBAAiB,WAAW,CAAA,CAAA;AAChD,QAAO,OAAA,WAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,kBAAkB,CAAA;AAAA,GACrB,CAAA;AAEA,EAAA,OAAO,YACL,mBAAA,GAAA;AAAA,IAAC,kBAAmB,CAAA,QAAA;AAAA,IAAnB;AAAA,MACC,KAAO,EAAA;AAAA,QACL,GAAG,OAAA;AAAA,QACH,oBAAA;AAAA,QACA,YAAA;AAAA,QACA,kBAAA;AAAA,QACA,IAAA,EAAM,QAAQ,OAAQ,CAAA,IAAA;AAAA,OACxB;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,KAAM,EAAA,WAAA;AAAA,UACN,OAAQ,EAAA,MAAA;AAAA,UACR,IAAA,EAAM,aAAa,YAAY,CAAA;AAAA,UAE9B,QAAA;AAAA,SAAA;AAAA,OACH;AAAA,KAAA;AAAA,GAEA,GAAA,IAAA,CAAA;AACN,EAAA;AAEO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,EAAE,IAAA,EAAS,GAAA,UAAA,CAAW,kBAAkB,CAAA,CAAA;AAC9C,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AAGO,MAAM,yBAAyB,MAAM;AAC1C,EAAA,MAAM,EAAE,oBAAsB,EAAA,YAAA,EAAc,kBAAmB,EAAA,GAC7D,WAAW,kBAAkB,CAAA,CAAA;AAC/B,EAAO,OAAA;AAAA,IACL,oBAAA;AAAA,IACA,YAAA;AAAA,IACA,kBAAA;AAAA,GACF,CAAA;AACF,EAAA;AAGO,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,EAAE,YAAA,EAAiB,GAAA,UAAA,CAAW,kBAAkB,CAAA,CAAA;AACtD,EAAA,OAAO,EAAE,YAAa,EAAA,CAAA;AACxB;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { LeftNav } from './left-nav/LeftNav.js';
|
|
|
9
9
|
export { LoginPanel } from './login/LoginPanel.js';
|
|
10
10
|
export { getAuthDetailsFromCookies, getAuthModeFromCookies, logout, redirectToLogin } from './login/login-utils.js';
|
|
11
11
|
export { defaultApplicationJson, loadingApplicationJson, warningLayout } from './persistence-management/defaultApplicationJson.js';
|
|
12
|
+
export { PersistenceContext, PersistenceProvider, usePersistenceManager } from './persistence-management/PersistenceProvider.js';
|
|
12
13
|
export { LocalPersistenceManager } from './persistence-management/LocalPersistenceManager.js';
|
|
13
14
|
export { RemotePersistenceManager } from './persistence-management/RemotePersistenceManager.js';
|
|
14
15
|
export { StaticPersistenceManager } from './persistence-management/StaticPersistenceManager.js';
|
|
@@ -19,5 +20,7 @@ export { SidePanel } from './shell-layouts/side-panel/SidePanel.js';
|
|
|
19
20
|
export { ShellContextProvider, useShellContext } from './ShellContextProvider.js';
|
|
20
21
|
export { FeatureList } from './feature-list/FeatureList.js';
|
|
21
22
|
export { ThemeSwitch } from './theme-switch/ThemeSwitch.js';
|
|
22
|
-
export {
|
|
23
|
+
export { UserSettingsPanel } from './user-settings/UserSettingsPanel.js';
|
|
24
|
+
export { SettingsForm, getFormControl, isBooleanProperty, isOption, isStringOrNumber } from './user-settings/SettingsForm.js';
|
|
25
|
+
export { ApplicationProvider, useApplicationSettings, useApplicationUser, useUserSetting } from './application-provider/ApplicationProvider.js';
|
|
23
26
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
|