Archived
Private
Public Access
1
0

Implemented Backend WindowAPI

This commit is contained in:
2022-11-05 12:19:14 +01:00
parent dd1d6dc89e
commit 46afa9cb7a
17 changed files with 305 additions and 416 deletions

View File

@@ -6,252 +6,23 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="041c7675-58ae-4243-af88-0d29855e558f" name="Changes" comment=""> <list default="true" id="041c7675-58ae-4243-af88-0d29855e558f" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/WindowAPI.d.ts" afterDir="false" /> <change afterPath="$PROJECT_DIR$/WindowAPI_Test/favicon.ico" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/WindowAPI.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/WindowAPI.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/EventData.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/EventData.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/EventData.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/Notification.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/Notification.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/Notification.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/Package.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/Package.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/Package.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/PackageTypes.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/PackageTypes.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/PackageTypes.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/PopupData.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/PopupData.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/PopupData.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Actions.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Actions.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Actions.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Getter.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Getter.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Getter.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Setter.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Setter.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/Setter.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/WindowEventEmitter.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/WindowEventEmitter.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/dist/helper/functions/WindowEventEmitter.js.map" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.bin/tsc" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.bin/tsc.cmd" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.bin/tsc.ps1" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.bin/tsserver" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.bin/tsserver.cmd" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.bin/tsserver.ps1" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/.package-lock.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/AUTHORS.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/CODE_OF_CONDUCT.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/CopyrightNotice.txt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/LICENSE.txt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/README.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/SECURITY.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/ThirdPartyNoticeText.txt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/bin/tsc" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/bin/tsserver" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/README.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/cancellationToken.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/cs/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/de/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/dynamicImportCompat.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/es/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/fr/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/it/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/ja/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/ko/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.dom.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.dom.iterable.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.collection.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.core.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.generator.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.iterable.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.promise.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.proxy.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.reflect.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.symbol.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2016.array.include.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2016.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2016.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.intl.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.object.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.string.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.intl.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.promise.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2018.regexp.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2019.array.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2019.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2019.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2019.object.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2019.string.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2019.symbol.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.bigint.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.date.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.intl.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.number.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.promise.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.string.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2021.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2021.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2021.intl.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2021.promise.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2021.string.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2021.weakref.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.array.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.error.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.intl.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.object.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es2022.string.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es5.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.es6.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.esnext.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.esnext.full.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.esnext.intl.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.esnext.promise.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.esnext.string.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.esnext.weakref.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.scripthost.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.webworker.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.webworker.importscripts.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/lib.webworker.iterable.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/pl/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/protocol.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/ru/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/tr/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/tsc.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/tsserver.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/tsserverlibrary.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/tsserverlibrary.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/typesMap.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/typescript.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/typescript.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/typescriptServices.d.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/typescriptServices.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/typingsInstaller.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/watchGuard.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHS/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHS/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHS/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHS/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHS/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHS/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHT/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHT/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHT/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHT/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHT/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CHT/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CSY/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CSY/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CSY/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CSY/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CSY/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/CSY/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/DEU/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/DEU/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/DEU/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/DEU/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/DEU/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/DEU/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ESN/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ESN/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ESN/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ESN/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ESN/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ESN/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/FRA/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/FRA/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/FRA/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/FRA/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/FRA/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/FRA/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ITA/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ITA/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ITA/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ITA/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ITA/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/ITA/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/JPN/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/JPN/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/JPN/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/JPN/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/JPN/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/JPN/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/KOR/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/KOR/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/KOR/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/KOR/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/KOR/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/KOR/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PLK/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PLK/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PLK/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PLK/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PLK/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PLK/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PTB/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PTB/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PTB/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PTB/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PTB/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/PTB/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/RUS/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/RUS/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/RUS/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/RUS/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/RUS/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/RUS/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/TRK/Targets/ProjectItemsSchema.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/TRK/Targets/TypeScriptCompile.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/TRK/Targets/TypeScriptProjectProperties.xaml.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/TRK/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/TRK/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/loc/lcl/TRK/TypeScriptTasks/TypeScript.Tasks.dll.lcl" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/node_modules/typescript/package.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/package-lock.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/package.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/WindowAPI.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/EventData.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/Notification.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/Package.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/PackageTypes.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/PopupData.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/functions/Actions.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/functions/Getter.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/functions/Setter.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/src/helper/functions/WindowEventEmitter.ts" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI/tsconfig.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI_Test/index.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI_Test/package-lock.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI_Test/package.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/WindowAPI_Test/window.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.WebDesktop 2.0/.idea/indexLayout.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.WebDesktop 2.0/.idea/indexLayout.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.WebDesktop 2.0/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.WebDesktop 2.0/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/.idea.WebDesktop 2.0/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.WebDesktop 2.0/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Frontend/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/package-lock.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Frontend/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/package-lock.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Frontend/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/package.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Frontend/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/package.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Frontend/src/app/components/window-wrapper/window-wrapper.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/src/app/components/window-wrapper/window-wrapper.component.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Frontend/src/app/components/window-wrapper/window-wrapper.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/src/app/components/window-wrapper/window-wrapper.component.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Frontend/src/app/sites/desktop/desktop.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/src/app/sites/desktop/desktop.component.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Frontend/src/app/sites/desktop/taskbar-icon/taskbar-icon.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/Frontend/src/app/sites/desktop/taskbar-icon/taskbar-icon.component.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI/package-lock.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI/package.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI/src/WindowAPI.ts" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI/src/WindowAPI.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI/src/helper/PackageTypes.ts" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI/src/helper/PackageTypes.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI/src/helper/functions/Getter.ts" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI/src/helper/functions/Getter.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI_Test/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI_Test/index.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI_Test/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI_Test/package-lock.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI_Test/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/WindowAPI_Test/package.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WindowAPI_Test/window.html" beforeDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -276,6 +47,7 @@
<component name="HighlightingSettingsPerFile"> <component name="HighlightingSettingsPerFile">
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/123735509fa19d358d3971345e1872b6d26687d1b343ad7ca37af43930694c/Guid.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/123735509fa19d358d3971345e1872b6d26687d1b343ad7ca37af43930694c/Guid.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/efd3e9c4749621d4a53b45d7117d2a581e02a265c444a040f1387a155db/Dictionary.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/efd3e9c4749621d4a53b45d7117d2a581e02a265c444a040f1387a155db/Dictionary.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/WindowAPI/package-lock.json" root0="SKIP_HIGHLIGHTING" />
</component> </component>
<component name="MarkdownSettingsMigration"> <component name="MarkdownSettingsMigration">
<option name="stateVersion" value="1" /> <option name="stateVersion" value="1" />
@@ -288,26 +60,26 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
"ASKED_ADD_EXTERNAL_FILES": "true", &quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
"DefaultHtmlFileTemplate": "HTML File", &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
"RunOnceActivity.OpenProjectViewOnStart": "true", &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"SHARE_PROJECT_CONFIGURATION_FILES": "true", &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
"WebServerToolWindowFactoryState": "false", &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
"list.type.of.created.stylesheet": "SCSS", &quot;list.type.of.created.stylesheet&quot;: &quot;SCSS&quot;,
"nodejs_package_manager_path": "npm", &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
"settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings", &quot;settings.editor.selected.configurable&quot;: &quot;terminal&quot;,
"ts.external.directory.path": "D:\\Programmierstuff\\Projekte\\WebDesktop 2.0\\Frontend\\node_modules\\typescript\\lib", &quot;ts.external.directory.path&quot;: &quot;D:\\Programmierstuff\\Projekte\\WebDesktop 2.0\\Frontend\\node_modules\\typescript\\lib&quot;,
"vue.rearranger.settings.migration": "true" &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}, },
"keyToStringList": { &quot;keyToStringList&quot;: {
"DatabaseDriversLRU": [ &quot;DatabaseDriversLRU&quot;: [
"mariadb" &quot;mariadb&quot;
] ]
} }
}]]></component> }</component>
<component name="RunManager" selected=".NET Launch Settings Profile.Backend"> <component name="RunManager" selected=".NET Launch Settings Profile.Backend">
<configuration name="Backend" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> <configuration name="Backend" type="LaunchSettings" factoryName=".NET Launch Settings Profile">
<option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/Backend/Backend.csproj" /> <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/Backend/Backend.csproj" />
@@ -324,21 +96,6 @@
<option name="Build" /> <option name="Build" />
</method> </method>
</configuration> </configuration>
<configuration name="Start Containers" type="ShConfigurationType">
<option name="SCRIPT_TEXT" value="docker-compose up" />
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
<option name="SCRIPT_PATH" value="" />
<option name="SCRIPT_OPTIONS" value="" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
<option name="INTERPRETER_PATH" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="EXECUTE_IN_TERMINAL" value="true" />
<option name="EXECUTE_SCRIPT_FILE" value="false" />
<envs />
<method v="2" />
</configuration>
<configuration name="Frontend" type="js.build_tools.npm"> <configuration name="Frontend" type="js.build_tools.npm">
<package-json value="$PROJECT_DIR$/Frontend/package.json" /> <package-json value="$PROJECT_DIR$/Frontend/package.json" />
<command value="run" /> <command value="run" />
@@ -349,11 +106,11 @@
<envs /> <envs />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="Test" type="js.build_tools.npm"> <configuration name="WindowAPI Tester" type="js.build_tools.npm">
<package-json value="$PROJECT_DIR$/Frontend/package.json" /> <package-json value="$PROJECT_DIR$/WindowAPI_Test/package.json" />
<command value="run" /> <command value="run" />
<scripts> <scripts>
<script value="test" /> <script value="dev" />
</scripts> </scripts>
<node-interpreter value="project" /> <node-interpreter value="project" />
<envs /> <envs />
@@ -361,9 +118,8 @@
</configuration> </configuration>
<list> <list>
<item itemvalue=".NET Launch Settings Profile.Backend" /> <item itemvalue=".NET Launch Settings Profile.Backend" />
<item itemvalue="npm.Test" />
<item itemvalue="npm.Frontend" /> <item itemvalue="npm.Frontend" />
<item itemvalue="Shell Script.Start Containers" /> <item itemvalue="npm.WindowAPI Tester" />
</list> </list>
</component> </component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="21" Folder0="D:\Spelling\de-DE" Folder1="D:\Spelling\de-DE" Folder2="D:\Spelling\de-DE" Folder3="D:\Spelling\de-DE" Folder4="D:\Spelling\de-DE" Folder5="D:\Spelling\de-DE" Folder6="D:\Spelling\de-DE" Folder7="D:\Spelling\de-DE" Folder8="D:\Spelling\de-DE" Folder9="D:\Spelling\de-DE" Folder10="D:\Spelling\de-DE" Folder11="D:\Spelling\de-DE" Folder12="D:\Spelling\de-DE" Folder13="D:\Spelling\de-DE" Folder14="D:\Spelling\de-DE" Folder15="D:\Spelling\de-DE" Folder16="D:\Spelling\de-DE" Folder17="D:\Spelling\de-DE" Folder18="D:\Spelling\de-DE" Folder19="D:\Spelling\de-DE" Folder20="D:\Spelling\de-DE" CustomDictionaries="21" CustomDictionary0="D:\Spelling\de-DE\abkuerzungen.dic" CustomDictionary1="D:\Spelling\de-DE\astronomie.dic" CustomDictionary2="D:\Spelling\de-DE\biologie.dic" CustomDictionary3="D:\Spelling\de-DE\chemie.dic" CustomDictionary4="D:\Spelling\de-DE\computer.dic" CustomDictionary5="D:\Spelling\de-DE\de_alt.dic" CustomDictionary6="D:\Spelling\de-DE\de_neu.dic" CustomDictionary7="D:\Spelling\de-DE\elektronic.dic" CustomDictionary8="D:\Spelling\de-DE\geographie.dic" CustomDictionary9="D:\Spelling\de-DE\geologie.dic" CustomDictionary10="D:\Spelling\de-DE\informatik.dic" CustomDictionary11="D:\Spelling\de-DE\mathematik.dic" CustomDictionary12="D:\Spelling\de-DE\medizin.dic" CustomDictionary13="D:\Spelling\de-DE\namen.dic" CustomDictionary14="D:\Spelling\de-DE\organisationen.dic" CustomDictionary15="D:\Spelling\de-DE\physik.dic" CustomDictionary16="D:\Spelling\de-DE\recht.dic" CustomDictionary17="D:\Spelling\de-DE\remove.dic" CustomDictionary18="D:\Spelling\de-DE\tex_de.dic" CustomDictionary19="D:\Spelling\de-DE\vornamen.dic" CustomDictionary20="D:\Spelling\de-DE\wirtschaft.dic" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="21" Folder0="D:\Spelling\de-DE" Folder1="D:\Spelling\de-DE" Folder2="D:\Spelling\de-DE" Folder3="D:\Spelling\de-DE" Folder4="D:\Spelling\de-DE" Folder5="D:\Spelling\de-DE" Folder6="D:\Spelling\de-DE" Folder7="D:\Spelling\de-DE" Folder8="D:\Spelling\de-DE" Folder9="D:\Spelling\de-DE" Folder10="D:\Spelling\de-DE" Folder11="D:\Spelling\de-DE" Folder12="D:\Spelling\de-DE" Folder13="D:\Spelling\de-DE" Folder14="D:\Spelling\de-DE" Folder15="D:\Spelling\de-DE" Folder16="D:\Spelling\de-DE" Folder17="D:\Spelling\de-DE" Folder18="D:\Spelling\de-DE" Folder19="D:\Spelling\de-DE" Folder20="D:\Spelling\de-DE" CustomDictionaries="21" CustomDictionary0="D:\Spelling\de-DE\abkuerzungen.dic" CustomDictionary1="D:\Spelling\de-DE\astronomie.dic" CustomDictionary2="D:\Spelling\de-DE\biologie.dic" CustomDictionary3="D:\Spelling\de-DE\chemie.dic" CustomDictionary4="D:\Spelling\de-DE\computer.dic" CustomDictionary5="D:\Spelling\de-DE\de_alt.dic" CustomDictionary6="D:\Spelling\de-DE\de_neu.dic" CustomDictionary7="D:\Spelling\de-DE\elektronic.dic" CustomDictionary8="D:\Spelling\de-DE\geographie.dic" CustomDictionary9="D:\Spelling\de-DE\geologie.dic" CustomDictionary10="D:\Spelling\de-DE\informatik.dic" CustomDictionary11="D:\Spelling\de-DE\mathematik.dic" CustomDictionary12="D:\Spelling\de-DE\medizin.dic" CustomDictionary13="D:\Spelling\de-DE\namen.dic" CustomDictionary14="D:\Spelling\de-DE\organisationen.dic" CustomDictionary15="D:\Spelling\de-DE\physik.dic" CustomDictionary16="D:\Spelling\de-DE\recht.dic" CustomDictionary17="D:\Spelling\de-DE\remove.dic" CustomDictionary18="D:\Spelling\de-DE\tex_de.dic" CustomDictionary19="D:\Spelling\de-DE\vornamen.dic" CustomDictionary20="D:\Spelling\de-DE\wirtschaft.dic" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
@@ -388,7 +144,10 @@
<workItem from="1666001823049" duration="13129000" /> <workItem from="1666001823049" duration="13129000" />
<workItem from="1666030973951" duration="1760000" /> <workItem from="1666030973951" duration="1760000" />
<workItem from="1666466907057" duration="3037000" /> <workItem from="1666466907057" duration="3037000" />
<workItem from="1666637982263" duration="6879000" /> <workItem from="1666637982263" duration="7093000" />
<workItem from="1667640438195" duration="3462000" />
<workItem from="1667643992968" duration="576000" />
<workItem from="1667644608215" duration="2392000" />
</task> </task>
<task id="LOCAL-00001" summary="Finished Login / Register system"> <task id="LOCAL-00001" summary="Finished Login / Register system">
<created>1662545562560</created> <created>1662545562560</created>
@@ -404,7 +163,21 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1666015866951</updated> <updated>1666015866951</updated>
</task> </task>
<option name="localTasksCounter" value="3" /> <task id="LOCAL-00003" summary="Finished WindowAPI for the frontend">
<created>1666645039082</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1666645039082</updated>
</task>
<task id="LOCAL-00004" summary="Added .gitignore files">
<created>1666645149547</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1666645149547</updated>
</task>
<option name="localTasksCounter" value="5" />
<servers /> <servers />
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
@@ -431,6 +204,8 @@
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" /> <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
<MESSAGE value="Finished Login / Register system" /> <MESSAGE value="Finished Login / Register system" />
<MESSAGE value="Finished window system" /> <MESSAGE value="Finished window system" />
<option name="LAST_COMMIT_MESSAGE" value="Finished window system" /> <MESSAGE value="Finished WindowAPI for the frontend" />
<MESSAGE value="Added .gitignore files" />
<option name="LAST_COMMIT_MESSAGE" value="Added .gitignore files" />
</component> </component>
</project> </project>

View File

@@ -20,7 +20,7 @@
"@angular/router": "~13.1.0", "@angular/router": "~13.1.0",
"rxjs": "~7.4.0", "rxjs": "~7.4.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"webdesktop_windowapi": "^1.0.4", "webdesktop_windowapi": "^1.0.9",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {
@@ -11129,24 +11129,9 @@
} }
}, },
"node_modules/webdesktop_windowapi": { "node_modules/webdesktop_windowapi": {
"version": "1.0.4", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.4.tgz", "resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.9.tgz",
"integrity": "sha512-UmL3DsTz2Tct0EI4llDOT5cn76wRCq9HJPL92EwQQykscv/4N0PXucdVf3eRLfxg7jtWNTDajW/taCx1l6zbCg==", "integrity": "sha512-q84Auqs9HCjIi1T+Ny8sdCXQq00b4JZqVpiAhMS5vKpQmOMDtkarsgUgSiU0VRhtnAKojXsDENsqNtCXTYbhGw=="
"dependencies": {
"typescript": "^4.8.4"
}
},
"node_modules/webdesktop_windowapi/node_modules/typescript": {
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
}, },
"node_modules/webpack": { "node_modules/webpack": {
"version": "5.65.0", "version": "5.65.0",
@@ -19728,19 +19713,9 @@
} }
}, },
"webdesktop_windowapi": { "webdesktop_windowapi": {
"version": "1.0.4", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.4.tgz", "resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.9.tgz",
"integrity": "sha512-UmL3DsTz2Tct0EI4llDOT5cn76wRCq9HJPL92EwQQykscv/4N0PXucdVf3eRLfxg7jtWNTDajW/taCx1l6zbCg==", "integrity": "sha512-q84Auqs9HCjIi1T+Ny8sdCXQq00b4JZqVpiAhMS5vKpQmOMDtkarsgUgSiU0VRhtnAKojXsDENsqNtCXTYbhGw=="
"requires": {
"typescript": "^4.8.4"
},
"dependencies": {
"typescript": {
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ=="
}
}
}, },
"webpack": { "webpack": {
"version": "5.65.0", "version": "5.65.0",

View File

@@ -22,7 +22,7 @@
"@angular/router": "~13.1.0", "@angular/router": "~13.1.0",
"rxjs": "~7.4.0", "rxjs": "~7.4.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"webdesktop_windowapi": "^1.0.4", "webdesktop_windowapi": "^1.0.9",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -13,7 +13,7 @@
<div class="header-button"> <div class="header-button">
<mat-icon class="minimize" (click)="toggleMinimized()">minimize</mat-icon> <mat-icon class="minimize" (click)="toggleMinimized()">minimize</mat-icon>
</div> </div>
<div class="header-button"> <div class="header-button" *ngIf="resizable">
<mat-icon (click)="toggleMaximized()">{{resizeIcon}}</mat-icon> <mat-icon (click)="toggleMaximized()">{{resizeIcon}}</mat-icon>
</div> </div>
<div class="header-button"> <div class="header-button">

View File

@@ -1,6 +1,8 @@
import {Component, ElementRef, ViewChild} from '@angular/core'; import {Component, ElementRef, ViewChild} from '@angular/core';
import {DesktopComponent, ProgramArgs} from "../../sites/desktop/desktop.component"; import {DesktopComponent, ProgramArgs} from "../../sites/desktop/desktop.component";
import {TaskbarIcon} from "../../sites/desktop/taskbar-icon/taskbar-icon.component"; import {TaskbarIcon} from "../../sites/desktop/taskbar-icon/taskbar-icon.component";
import {Package} from "webdesktop_windowapi/dist/helper/Package";
import {WindowEvent} from "webdesktop_windowapi/dist/helper/EventData";
@Component({ @Component({
selector: 'app-window-wrapper', selector: 'app-window-wrapper',
@@ -18,17 +20,26 @@ export class WindowWrapper {
public title: string; public title: string;
public focused: boolean; public focused: boolean;
public contentLoaded: boolean = false; public contentLoaded: boolean = false;
public draggable: boolean = true;
public resizable: boolean = true;
public asPopup: boolean;
public args: string[];
public resizeIcon: string = "fullscreen"; public resizeIcon: string = "fullscreen";
public maximized: boolean = false; public maximized: boolean = false;
private lastPos: { left: string, top: string, width: string, height: string }; private lastPos: { left: string, top: string, width: string, height: string };
private readonly messageHandler: (event: MessageEvent) => void;
constructor(private object: ElementRef) { constructor(private object: ElementRef) {
this.uuid = DesktopComponent.instance.generateWindowUUID(); this.uuid = DesktopComponent.instance.generateWindowUUID();
this.messageHandler = this.onMessage.bind(this);
window.addEventListener('message', this.messageHandler);
} }
public initialize(taskbar: TaskbarIcon) { public initialize(taskbar: TaskbarIcon, args: string[], asPopup: boolean) {
this.title = this.program.name; this.title = this.program.name;
this.args = args;
this.asPopup = asPopup;
this.dragHandler = new DragHandler(this.wrapper.nativeElement, this); this.dragHandler = new DragHandler(this.wrapper.nativeElement, this);
this.resizeHandler = new ResizeHandler(this.wrapper.nativeElement, this); this.resizeHandler = new ResizeHandler(this.wrapper.nativeElement, this);
this.taskbar = taskbar; this.taskbar = taskbar;
@@ -37,6 +48,8 @@ export class WindowWrapper {
} }
public close() { public close() {
this.dispatchEvent({type: "close", data: undefined});
window.removeEventListener('message', this.messageHandler);
this.object.nativeElement.parentElement.removeChild(this.object.nativeElement); this.object.nativeElement.parentElement.removeChild(this.object.nativeElement);
this.taskbar.onClose(this); this.taskbar.onClose(this);
} }
@@ -104,12 +117,21 @@ export class WindowWrapper {
this.focused = false; this.focused = false;
} }
public receiveMessageFromWindow(sender: WindowWrapper, data: any) {
console.log(sender, data);
}
public applyContentListeners(content: HTMLIFrameElement) { public applyContentListeners(content: HTMLIFrameElement) {
content.contentDocument.addEventListener('mousemove', this.onMove.bind(this)); /*content.contentWindow.addEventListener('mousemove', this.onMove.bind(this));
content.contentDocument.addEventListener('mousedown', this.focus.bind(this)); content.contentWindow.addEventListener('mousedown', this.focus.bind(this));
content.contentDocument.addEventListener('mouseup', this.resizeHandler?.windowResizeStop.bind(this.resizeHandler)); content.contentWindow.addEventListener('mouseup', this.resizeHandler?.windowResizeStop.bind(this.resizeHandler));*/
this.contentLoaded = true; this.contentLoaded = true;
if (this.asPopup)
this.dispatchEvent({type: "openAsPopup", data: this.args});
else
this.dispatchEvent({type: "open", data: this.args});
} }
public onMove(event: MouseEvent) { public onMove(event: MouseEvent) {
@@ -117,6 +139,140 @@ export class WindowWrapper {
this.resizeHandler?.windowResize(event); this.resizeHandler?.windowResize(event);
} }
private onMessage(event: MessageEvent) {
const iframe = this.content.nativeElement as HTMLIFrameElement;
if (event.source != iframe.contentWindow) return;
const data = event.data as Package;
if (data.method == 'get') {
const pkg: Package = {method: "get", content: this.handleGet(data)};
iframe.contentWindow.postMessage(pkg, event.origin);
}
else if (data.method == 'set') {
this.handleSet(data);
}
else if (data.method == 'action') {
const pkg: Package = {method: "action", content: this.handleAction(data)};
if (data.action != 'closeSelf' && (data.action == 'closeWindow' && data.content.uuid == this.uuid))
iframe.contentWindow.postMessage(pkg, event.origin);
}
}
private handleGet(data: Package): any {
const element: HTMLElement = this.wrapper.nativeElement;
switch (data.variable) {
case "title":
return this.title;
case "maximized":
return this.maximized;
case "minimized":
return this.object.nativeElement.style.display == 'none';
case "draggable":
return this.draggable;
case "resizable":
return this.maximized;
case "position":
const x = element.offsetLeft;
const y = element.offsetTop;
return {x, y};
case "size":
const width = element.offsetWidth;
const height = element.offsetHeight;
return {width, height};
case "uuid":
return this.uuid;
}
}
private handleSet(data: Package) {
const element: HTMLElement = this.wrapper.nativeElement;
switch (data.variable) {
case "title":
this.title = data.content;
break;
case "maximized":
if (this.maximized != data.content)
this.toggleMaximized();
break;
case "minimized":
if ((this.object.nativeElement.style.display == 'none') != data.content)
this.toggleMinimized();
break;
case "draggable":
this.draggable = data.content;
break;
case "resizable":
this.resizable = data.content;
break;
case "position":
element.style.left = data.content.x + "px";
element.style.top = data.content.y + "px";
const x = data.content.x, y = data.content.y;
this.dispatchEvent({type: "move", data: {fromDrag: false, x, y}});
break;
case "size":
element.style.width = data.content.width + "px";
element.style.height = data.content.height + "px";
break;
}
}
private handleAction(data: Package): any {
switch (data.action) {
case "openWindow":
return DesktopComponent.instance.openProgram(data.content.identifier, data.content.args, data.content.asPopup);
case "closeWindow":
const window = DesktopComponent.instance.getWindow(data.content.uuid);
if (window == undefined) return false;
window.close();
return true;
case "messageWindow":
const target = DesktopComponent.instance.getWindow(data.content.uuid);
if (target == undefined) return false;
target.receiveMessageFromWindow(this, data.content.data);
return true;
case "closeSelf":
this.close();
return;
case "focus":
this.focus();
return;
case "notification":
DesktopComponent.instance.sendNotification(data.content);
return;
case "popup":
console.log("POPUP");
return undefined;
}
}
public dispatchEvent(event: WindowEvent) {
const iframe = this.content.nativeElement as HTMLIFrameElement;
const pkg: Package = {method: "event", event: event.type, content: event};
iframe.contentWindow.postMessage(pkg, new URL(iframe.src).origin);
}
} }
class DragHandler { class DragHandler {
@@ -125,16 +281,18 @@ class DragHandler {
public dragging: boolean; public dragging: boolean;
private origTransitions: string; private origTransitions: string;
public constructor(private object: HTMLElement, private wrapper: WindowWrapper) { public constructor(private object: HTMLElement, private wrapper: WindowWrapper) {}
}
public windowDrag(event: MouseEvent): void { public windowDrag(event: MouseEvent): void {
if (!this.wrapper.draggable) return;
if (!this.dragging) return; if (!this.dragging) return;
if (!this.wrapper.contentLoaded) return; if (!this.wrapper.contentLoaded) return;
const x = event.clientX - this.offsetX; const x = event.clientX - this.offsetX;
const y = event.clientY - this.offsetY; const y = event.clientY - this.offsetY;
this.object.style.left = x + 'px'; this.object.style.left = x + 'px';
this.object.style.top = y + 'px'; this.object.style.top = y + 'px';
this.wrapper.dispatchEvent({type: "move", data: {fromDrag: true, x, y}});
} }
public windowDragStart(event: MouseEvent): void { public windowDragStart(event: MouseEvent): void {
@@ -168,8 +326,7 @@ class ResizeHandler {
public resizing: boolean = false; public resizing: boolean = false;
private lastResizeManager: string; private lastResizeManager: string;
public constructor(private object: HTMLElement, private wrapper: WindowWrapper) { public constructor(private object: HTMLElement, private wrapper: WindowWrapper) {}
}
public windowResizeStart(event: MouseEvent): void { public windowResizeStart(event: MouseEvent): void {
if (this.wrapper.maximized) return; if (this.wrapper.maximized) return;
@@ -191,6 +348,7 @@ class ResizeHandler {
} }
public windowResize(event: MouseEvent) { public windowResize(event: MouseEvent) {
if (!this.wrapper.resizable) return;
if (!this.wrapper.focused) return; if (!this.wrapper.focused) return;
if (this.wrapper.maximized) return; if (this.wrapper.maximized) return;
@@ -245,6 +403,8 @@ class ResizeHandler {
if (newDimensions.y) this.object.style.top = newDimensions.y + 'px'; if (newDimensions.y) this.object.style.top = newDimensions.y + 'px';
if (newDimensions.width) this.object.style.width = newDimensions.width + 'px'; if (newDimensions.width) this.object.style.width = newDimensions.width + 'px';
if (newDimensions.height) this.object.style.height = newDimensions.height + 'px'; if (newDimensions.height) this.object.style.height = newDimensions.height + 'px';
this.wrapper.dispatchEvent({type: "resize", data: newDimensions});
} }
private isHoverBorder(event: MouseEvent): string { private isHoverBorder(event: MouseEvent): string {

View File

@@ -1,6 +1,7 @@
import {ChangeDetectorRef, Component, OnInit, ViewChild, ViewContainerRef} from '@angular/core'; import {ChangeDetectorRef, Component, OnInit, ViewChild, ViewContainerRef} from '@angular/core';
import {TaskbarIcon} from "./taskbar-icon/taskbar-icon.component"; import {TaskbarIcon} from "./taskbar-icon/taskbar-icon.component";
import {WindowWrapper} from "../../components/window-wrapper/window-wrapper.component"; import {WindowWrapper} from "../../components/window-wrapper/window-wrapper.component";
import {Notification} from "webdesktop_windowapi/dist/helper/Notification";
export interface IconType { export interface IconType {
uuid: number; uuid: number;
@@ -20,10 +21,10 @@ export interface ProgramArgs {
} }
export const programs: {[programUUID: string]: ProgramArgs} = { export const programs: {[programUUID: string]: ProgramArgs} = {
['defender']: { ['tester']: {
identifier: 'defender', identifier: 'tester',
name: 'Windows Defender', name: 'WindowAPI Tester',
handlerUrl: 'http://localhost:4200/', handlerUrl: 'http://localhost:8080/',
} }
} }
@@ -56,18 +57,18 @@ export class DesktopComponent implements OnInit {
document.addEventListener('mousemove', this.mouseMove); document.addEventListener('mousemove', this.mouseMove);
setTimeout(() => { setTimeout(() => {
this.addTaskbarIcon(programs['defender']); this.addTaskbarIcon(programs['tester']);
}); });
} }
public openProgram(programUUID: string) { public openProgram(programUUID: string, args?: string[], asPopup?: boolean): number {
const program = programs[programUUID]; const program = programs[programUUID];
const exists = this.getTaskbarIcon(programUUID) != undefined; const exists = this.getTaskbarIcon(programUUID) != undefined;
if (!exists) if (!exists)
this.addTaskbarIcon(program, true); this.addTaskbarIcon(program, true);
this.getTaskbarIcon(programUUID).icon.openProgram(); return this.getTaskbarIcon(programUUID).icon.openProgram(args, asPopup);
} }
public addTaskbarIcon(program: ProgramArgs, removeOnClose: boolean = false, index?: number) { public addTaskbarIcon(program: ProgramArgs, removeOnClose: boolean = false, index?: number) {
@@ -132,6 +133,10 @@ export class DesktopComponent implements OnInit {
return uuid; return uuid;
} }
public sendNotification(notification: Notification) {
console.log(notification);
}
public mouseMove(event: MouseEvent) { public mouseMove(event: MouseEvent) {
DesktopComponent.focusedWindow?.onMove(event); DesktopComponent.focusedWindow?.onMove(event);
} }

View File

@@ -21,14 +21,15 @@ export class TaskbarIcon {
this.type = type; this.type = type;
} }
public openProgram() { public openProgram(args?: string[], asPopup: boolean = false): number {
const window = DesktopComponent.windowContainer.createComponent(WindowWrapper); const window = DesktopComponent.windowContainer.createComponent(WindowWrapper);
window.instance.program = this.type.program; window.instance.program = this.type.program;
DesktopComponent.instance.cdr.detectChanges(); DesktopComponent.instance.cdr.detectChanges();
window.instance.initialize(this); window.instance.initialize(this, args || [], asPopup);
this.windows.push(window.instance); this.windows.push(window.instance);
this.setIndicator('wide'); this.setIndicator('wide');
return window.instance.uuid;
} }
public onTaskbarClick(event: MouseEvent) { public onTaskbarClick(event: MouseEvent) {

View File

@@ -1,12 +1,12 @@
{ {
"name": "windowapi", "name": "webdesktop_windowapi",
"version": "1.0.5", "version": "1.0.10",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "windowapi", "name": "webdesktop_windowapi",
"version": "1.0.5", "version": "1.0.10",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"typescript": "^4.8.4" "typescript": "^4.8.4"

View File

@@ -1,6 +1,6 @@
{ {
"name": "webdesktop_windowapi", "name": "webdesktop_windowapi",
"version": "1.0.5", "version": "1.0.10",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.tx", "types": "dist/index.d.tx",
@@ -13,7 +13,7 @@
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "devDependencies": {
"typescript": "^4.8.4" "typescript": "^4.8.4"
} }
} }

View File

@@ -50,11 +50,12 @@ export class WindowAPI {
public get: Getters = { public get: Getters = {
title: this.getMethod<string>('title'), title: this.getMethod<string>('title'),
size: this.getMethod<{width: number, height: number}>('size'), size: this.getMethod<{width: number, height: number}>('size'),
position: this.getMethod<{x: number, y: number}>('size'), position: this.getMethod<{x: number, y: number}>('position'),
maximized: this.getMethod<boolean>('maximized'), maximized: this.getMethod<boolean>('maximized'),
minimized: this.getMethod<boolean>('minimized'), minimized: this.getMethod<boolean>('minimized'),
draggable: this.getMethod<boolean>('draggable'), draggable: this.getMethod<boolean>('draggable'),
resizable: this.getMethod<boolean>('resizable'), resizable: this.getMethod<boolean>('resizable'),
uuid: this.getMethod<number>('uuid')
}; };
public set: Setters = { public set: Setters = {
@@ -79,12 +80,9 @@ export class WindowAPI {
public event: WindowEventEmitter = new class extends WindowEventEmitter { public event: WindowEventEmitter = new class extends WindowEventEmitter {
emit(name: WindowEventName, data: WindowEvent): void { emit(name: WindowEventName, data: WindowEvent): void {
if (!this._events[name]) { if (!this._events[name]) return;
throw new Error(`Can't emit an event. Event "${name}" doesn't exits.`);
}
const fire = (callback) => callback(data); const fire = (callback) => callback(data);
this._events[name].forEach(fire); this._events[name].forEach(fire);
} }

View File

@@ -1,4 +1,4 @@
export type PackageMethod = "get" | "set" | "event" | "action"; export type PackageMethod = "get" | "set" | "event" | "action";
export type PackageVariable = "title" | "size" | "position" | "maximized" | "minimized" | "draggable" | "resizable"; export type PackageVariable = "title" | "size" | "position" | "maximized" | "minimized" | "draggable" | "resizable" | "uuid";
export type PackageActionType = "openWindow" | "closeWindow" | "closeSelf" | "focus" | "messageWindow" | "notification" | "popup"; export type PackageActionType = "openWindow" | "closeWindow" | "closeSelf" | "focus" | "messageWindow" | "notification" | "popup";
export type WindowEventName = "resize" | "move" | "openAsPopup" | "open" | "close"; export type WindowEventName = "resize" | "move" | "openAsPopup" | "open" | "close";

View File

@@ -6,4 +6,5 @@
minimized(): Promise<boolean>; minimized(): Promise<boolean>;
draggable(): Promise<boolean>; draggable(): Promise<boolean>;
resizable(): Promise<boolean>; resizable(): Promise<boolean>;
uuid(): Promise<number>;
} }

BIN
WindowAPI_Test/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -2,25 +2,46 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Title</title> <title>Window API Test</title>
</head> </head>
<body> <body>
<iframe src="window.html" width="512" height="512" id="window-frame"></iframe> <button id="action">Click to Action</button>
<script> <script type="module">
const frame = document.getElementById('window-frame'); import {WindowAPI} from "./node_modules/webdesktop_windowapi/dist/WindowAPI.js";
const api = new WindowAPI();
frame.addEventListener('load', () => { const action = document.getElementById("action");
action.onclick = async () => {
/*const data = {};
data.title = await api.get.title();
data.size = await api.get.size();
data.position = await api.get.position();
data.maximized = await api.get.maximized();
data.minimized = await api.get.maximized();
data.draggable = await api.get.draggable();
data.resizable = await api.get.resizable();
data.uuid = await api.get.uuid();
console.log("GET METHODS: ", data);
}); await api.set.title("New Title");
await api.set.size({width: 400, height: 300});
window.addEventListener('message', (event) => { await api.set.position({x: 20, y: 20});
if (event.origin !== new URL(frame.src).origin) return; await api.set.maximized(true);
await api.set.minimized(true);
console.log(event.data); await api.set.draggable(false);
frame.contentWindow.postMessage({content: 'Test Titel'}, event.origin); await api.set.resizable(false);
}, false);
await api.action.openWindow("tester");
await api.action.closeWindow(0);
await api.action.sendDataToWindow(0, "Hello World!");
await api.action.close();
await api.action.focus();
await api.action.notification({}); // TODO: Implement Notifications
await api.action.openPopup({});*/ // TODO: Implement Popups
}
</script> </script>
</body> </body>

View File

@@ -9,43 +9,20 @@
"version": "1.0.0", "version": "1.0.0",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"webdesktop_windowapi": "^1.0.4" "webdesktop_windowapi": "^1.0.9"
}
},
"node_modules/typescript": {
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
} }
}, },
"node_modules/webdesktop_windowapi": { "node_modules/webdesktop_windowapi": {
"version": "1.0.4", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.4.tgz", "resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.9.tgz",
"integrity": "sha512-UmL3DsTz2Tct0EI4llDOT5cn76wRCq9HJPL92EwQQykscv/4N0PXucdVf3eRLfxg7jtWNTDajW/taCx1l6zbCg==", "integrity": "sha512-q84Auqs9HCjIi1T+Ny8sdCXQq00b4JZqVpiAhMS5vKpQmOMDtkarsgUgSiU0VRhtnAKojXsDENsqNtCXTYbhGw=="
"dependencies": {
"typescript": "^4.8.4"
}
} }
}, },
"dependencies": { "dependencies": {
"typescript": {
"version": "4.8.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ=="
},
"webdesktop_windowapi": { "webdesktop_windowapi": {
"version": "1.0.4", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.4.tgz", "resolved": "https://registry.npmjs.org/webdesktop_windowapi/-/webdesktop_windowapi-1.0.9.tgz",
"integrity": "sha512-UmL3DsTz2Tct0EI4llDOT5cn76wRCq9HJPL92EwQQykscv/4N0PXucdVf3eRLfxg7jtWNTDajW/taCx1l6zbCg==", "integrity": "sha512-q84Auqs9HCjIi1T+Ny8sdCXQq00b4JZqVpiAhMS5vKpQmOMDtkarsgUgSiU0VRhtnAKojXsDENsqNtCXTYbhGw=="
"requires": {
"typescript": "^4.8.4"
}
} }
} }
} }

View File

@@ -4,12 +4,13 @@
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1",
"dev": "httpserver"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"webdesktop_windowapi": "^1.0.4" "webdesktop_windowapi": "^1.0.9"
} }
} }

View File

@@ -1,25 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Window API Test</title>
</head>
<body>
<h1>Window APT Tester works!</h1>
<script type="module">
import {WindowAPI} from "./node_modules/webdesktop_windowapi/dist/WindowAPI.js";
const api = new WindowAPI();
setTimeout(async () => {
api.set.title("Haha POPO");
const title = await api.get.title();
console.log(title);
})
</script>
</body>
</html>