diff options
| author | Ja.KooLit <85185940+JaKooLit@users.noreply.github.com> | 2025-07-25 21:31:54 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-25 21:31:54 +0900 |
| commit | dd889d3aac40075ee73f76290c69ccc698673817 (patch) | |
| tree | 67dc1026bc09a93cb5250e1c28adda15c592aff4 /config/quickshell/modules/common/functions/object_utils.js | |
| parent | 637025eeb60391e5cc17c883aa6ee95799acac76 (diff) | |
| parent | aa3c94f1ad44038d6a71ee8e12a704e6089e31f6 (diff) | |
Merge pull request #775 from JaKooLit/development
Development to main
Diffstat (limited to 'config/quickshell/modules/common/functions/object_utils.js')
| -rw-r--r-- | config/quickshell/modules/common/functions/object_utils.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/config/quickshell/modules/common/functions/object_utils.js b/config/quickshell/modules/common/functions/object_utils.js new file mode 100644 index 00000000..96c632fd --- /dev/null +++ b/config/quickshell/modules/common/functions/object_utils.js @@ -0,0 +1,45 @@ +function toPlainObject(qtObj) { + if (qtObj === null || typeof qtObj !== "object") return qtObj; + + // Handle arrays + if (Array.isArray(qtObj)) { + return qtObj.map(toPlainObject); + } + + const result = ({}); + for (let key in qtObj) { + if ( + typeof qtObj[key] !== "function" && + !key.startsWith("objectName") && + !key.startsWith("children") && + !key.startsWith("object") && + !key.startsWith("parent") && + !key.startsWith("metaObject") && + !key.startsWith("destroyed") && + !key.startsWith("reloadableId") + ) { + result[key] = toPlainObject(qtObj[key]); + } + } + return result; +} + +function applyToQtObject(qtObj, jsonObj) { + if (!qtObj || typeof jsonObj !== "object" || jsonObj === null) return; + + for (let key in jsonObj) { + if (!qtObj.hasOwnProperty(key)) continue; + + // Check if the property is a QtObject (not a value) + const value = qtObj[key]; + const jsonValue = jsonObj[key]; + + // If it's an object and not an array, recurse + if (value && typeof value === "object" && !Array.isArray(value)) { + applyToQtObject(value, jsonValue); + } else { + // Otherwise, assign the value + qtObj[key] = jsonValue; + } + } +} |
