@vived/host 5.2.1 → 5.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AppSandbox/Adapters/babylonInspectorSupportedAdapter.js +24 -0
- package/dist/cjs/AppSandbox/Adapters/babylonInspectorSupportedAdapter.js.map +1 -0
- package/dist/cjs/AppSandbox/Adapters/index.js +1 -0
- package/dist/cjs/AppSandbox/Adapters/index.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/index.js +1 -0
- package/dist/cjs/AppSandbox/Controller/index.js.map +1 -1
- package/dist/cjs/AppSandbox/Controller/setBabylonInspectorSupported.js +13 -0
- package/dist/cjs/AppSandbox/Controller/setBabylonInspectorSupported.js.map +1 -0
- package/dist/cjs/AppSandbox/Entities/AppSandboxEntity.js +7 -0
- package/dist/cjs/AppSandbox/Entities/AppSandboxEntity.js.map +1 -1
- package/dist/cjs/AppSandbox/Factories/AppSandboxFeatureFactory.js +1 -0
- package/dist/cjs/AppSandbox/Factories/AppSandboxFeatureFactory.js.map +1 -1
- package/dist/cjs/AppSandbox/Factories/index.js.map +1 -1
- package/dist/cjs/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.js +16 -0
- package/dist/cjs/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.js.map +1 -0
- package/dist/cjs/AppSandbox/Mocks/index.js +1 -0
- package/dist/cjs/AppSandbox/Mocks/index.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/BabylonInspectorSupportedPM.js +37 -0
- package/dist/cjs/AppSandbox/PMs/BabylonInspectorSupportedPM.js.map +1 -0
- package/dist/cjs/AppSandbox/PMs/DevFeaturesEnabledPM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/ShowInspectorPM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/StartInZSpacePM.js.map +1 -1
- package/dist/cjs/AppSandbox/PMs/index.js +1 -0
- package/dist/cjs/AppSandbox/PMs/index.js.map +1 -1
- package/dist/cjs/Apps/Entities/AppEntity.js.map +1 -1
- package/dist/cjs/Apps/Entities/AppRepo.js.map +1 -1
- package/dist/cjs/Apps/Factories/AppsFeatureFactory.js.map +1 -1
- package/dist/cjs/Apps/Factories/index.js.map +1 -1
- package/dist/cjs/Apps/UCs/Mounters/MounterUC.js +1 -0
- package/dist/cjs/Apps/UCs/Mounters/MounterUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/Mounters/SandboxMounterUC.js +1 -0
- package/dist/cjs/Apps/UCs/Mounters/SandboxMounterUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/StartAppUC.js.map +1 -1
- package/dist/cjs/Apps/UCs/StopAppUC.js.map +1 -1
- package/dist/cjs/Apps/index.js.map +1 -1
- package/dist/cjs/AssetPlugin/Factories/AssetPluginFeatureFactory.js.map +1 -1
- package/dist/cjs/AssetPlugin/Factories/index.js.map +1 -1
- package/dist/cjs/Assets/Adapters/assetFileAdapter.js.map +1 -1
- package/dist/cjs/Assets/Controllers/archiveAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/deleteAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/downloadAssetFile.js.map +1 -1
- package/dist/cjs/Assets/Controllers/editAppAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/fetchAssetFile.js.map +1 -1
- package/dist/cjs/Assets/Controllers/getAppAssets.js.map +1 -1
- package/dist/cjs/Assets/Controllers/index.js.map +1 -1
- package/dist/cjs/Assets/Controllers/newAppAsset.js.map +1 -1
- package/dist/cjs/Assets/Controllers/toggleShowArchivedAssets.js.map +1 -1
- package/dist/cjs/Assets/Controllers/updateAppAssetMeta.js.map +1 -1
- package/dist/cjs/Assets/Controllers/updateAssetFile.js.map +1 -1
- package/dist/cjs/Assets/Entities/AppAssetsEntity.js.map +1 -1
- package/dist/cjs/Assets/Entities/AssetEntity.js.map +1 -1
- package/dist/cjs/Assets/Entities/AssetRepo.js.map +1 -1
- package/dist/cjs/Assets/Factories/AssetsFactory.js.map +1 -1
- package/dist/cjs/Assets/Factories/SandboxAssetsFactory.js.map +1 -1
- package/dist/cjs/Assets/Factories/index.js.map +1 -1
- package/dist/cjs/Assets/PMs/AssetFilePM.js.map +1 -1
- package/dist/cjs/Assets/PMs/AssetPM.js.map +1 -1
- package/dist/cjs/Assets/PMs/ShowArchivedAppAssetPM.js.map +1 -1
- package/dist/cjs/Assets/UCs/ArchiveAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/DeleteAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/DownloadAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/EditAppAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetBlobURLUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/GetAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/NewAppAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/NewAssetUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/UpdateAppAssetMetaUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/UpdateAssetFileUC.js.map +1 -1
- package/dist/cjs/Assets/UCs/index.js.map +1 -1
- package/dist/cjs/Cache/Factories/CacheFeatureFactory.js.map +1 -1
- package/dist/cjs/Cache/Factories/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Entities/ChallengeResults.js.map +1 -1
- package/dist/cjs/ChallengeResults/Factories/ChallengeResultsFactory.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -1
- package/dist/cjs/Dialog/Factories/SandboxDialogFactory.js +1 -2
- package/dist/cjs/Dialog/Factories/SandboxDialogFactory.js.map +1 -1
- package/dist/cjs/Handler/UCs/SubmitResultHandler.js.map +1 -1
- package/dist/cjs/Logger/Factories/SandboxLoggerFactory.js.map +1 -1
- package/dist/cjs/Logger/PMs/ForwardLogsToConsolePM.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/index.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/setTransitionDuration.js.map +1 -1
- package/dist/cjs/StateMachine/Factories/SandboxStateMachineFactory.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/HostStatePM.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Controllers/setThemeByName.js.map +1 -1
- package/dist/cjs/ThemeColors/Factories/ThemeFactory.js.map +1 -1
- package/dist/cjs/ThemeColors/Mocks/MockSetThemeUC.js.map +1 -1
- package/dist/cjs/ThemeColors/Mocks/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Adapters/apiStageAdapter.js.map +1 -1
- package/dist/cjs/VivedAPI/Adapters/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Adapters/userTokenAdapter.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/loginUser.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/logoutUser.js.map +1 -1
- package/dist/cjs/VivedAPI/Controllers/setApiStage.js.map +1 -1
- package/dist/cjs/VivedAPI/Entities/VivedAPIEntity.js.map +1 -1
- package/dist/cjs/VivedAPI/Entities/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/SandboxVivedAPIFactory.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/VivedAPIFactory.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/index.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/setupAPI.js.map +1 -1
- package/dist/cjs/VivedAPI/Factories/setupVivedAPIForSandbox.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/MockJsonRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/Mocks/index.js.map +1 -1
- package/dist/cjs/VivedAPI/PMs/ApiStagePM.js.map +1 -1
- package/dist/cjs/VivedAPI/PMs/UserTokenPM.js.map +1 -1
- package/dist/cjs/VivedAPI/PMs/index.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/BasicFetchUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/BlobRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/DeleteAssetOnAPIUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/FileUploadUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/JsonRequestUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/SignedAuthTokenUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/UserAuthUC.js.map +1 -1
- package/dist/cjs/VivedAPI/UCs/index.js.map +1 -1
- package/dist/cjs/VivedAPI/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Adapters/index.js +1 -0
- package/dist/cjs/ZSpaceHost/Adapters/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.js +24 -0
- package/dist/cjs/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.js.map +1 -0
- package/dist/cjs/ZSpaceHost/Controllers/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Controllers/setZSpaceIsSupported.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Factories/SandboxZSpaceFactory.js +1 -0
- package/dist/cjs/ZSpaceHost/Factories/SandboxZSpaceFactory.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Factories/setupZSpaceForSandbox.js +1 -0
- package/dist/cjs/ZSpaceHost/Factories/setupZSpaceForSandbox.js.map +1 -1
- package/dist/cjs/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.js +16 -0
- package/dist/cjs/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.js.map +1 -0
- package/dist/cjs/ZSpaceHost/Mocks/index.js +1 -0
- package/dist/cjs/ZSpaceHost/Mocks/index.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/EmulateZSpacePM.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsActivePM.js.map +1 -1
- package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsSupportedPM.js +40 -0
- package/dist/cjs/ZSpaceHost/PMs/ZSpaceIsSupportedPM.js.map +1 -0
- package/dist/cjs/ZSpaceHost/PMs/index.js +1 -0
- package/dist/cjs/ZSpaceHost/PMs/index.js.map +1 -1
- package/dist/esm/AppSandbox/Adapters/babylonInspectorSupportedAdapter.js +21 -0
- package/dist/esm/AppSandbox/Adapters/babylonInspectorSupportedAdapter.js.map +1 -0
- package/dist/esm/AppSandbox/Adapters/index.js +1 -0
- package/dist/esm/AppSandbox/Adapters/index.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/index.js +1 -0
- package/dist/esm/AppSandbox/Controller/index.js.map +1 -1
- package/dist/esm/AppSandbox/Controller/setBabylonInspectorSupported.js +10 -0
- package/dist/esm/AppSandbox/Controller/setBabylonInspectorSupported.js.map +1 -0
- package/dist/esm/AppSandbox/Entities/AppSandboxEntity.js +7 -0
- package/dist/esm/AppSandbox/Entities/AppSandboxEntity.js.map +1 -1
- package/dist/esm/AppSandbox/Factories/AppSandboxFeatureFactory.js +2 -1
- package/dist/esm/AppSandbox/Factories/AppSandboxFeatureFactory.js.map +1 -1
- package/dist/esm/AppSandbox/Factories/index.js.map +1 -1
- package/dist/esm/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.js +11 -0
- package/dist/esm/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.js.map +1 -0
- package/dist/esm/AppSandbox/Mocks/index.js +1 -0
- package/dist/esm/AppSandbox/Mocks/index.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/BabylonInspectorSupportedPM.js +32 -0
- package/dist/esm/AppSandbox/PMs/BabylonInspectorSupportedPM.js.map +1 -0
- package/dist/esm/AppSandbox/PMs/DevFeaturesEnabledPM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/ShowInspectorPM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/StartInZSpacePM.js.map +1 -1
- package/dist/esm/AppSandbox/PMs/index.js +1 -0
- package/dist/esm/AppSandbox/PMs/index.js.map +1 -1
- package/dist/esm/Apps/Entities/AppEntity.js.map +1 -1
- package/dist/esm/Apps/Entities/AppRepo.js.map +1 -1
- package/dist/esm/Apps/Factories/AppsFeatureFactory.js.map +1 -1
- package/dist/esm/Apps/Factories/index.js.map +1 -1
- package/dist/esm/Apps/UCs/Mounters/MounterUC.js +1 -0
- package/dist/esm/Apps/UCs/Mounters/MounterUC.js.map +1 -1
- package/dist/esm/Apps/UCs/Mounters/SandboxMounterUC.js +1 -0
- package/dist/esm/Apps/UCs/Mounters/SandboxMounterUC.js.map +1 -1
- package/dist/esm/Apps/UCs/StartAppUC.js.map +1 -1
- package/dist/esm/Apps/UCs/StopAppUC.js.map +1 -1
- package/dist/esm/Apps/index.js.map +1 -1
- package/dist/esm/AssetPlugin/Factories/AssetPluginFeatureFactory.js.map +1 -1
- package/dist/esm/AssetPlugin/Factories/index.js.map +1 -1
- package/dist/esm/Assets/Adapters/assetFileAdapter.js.map +1 -1
- package/dist/esm/Assets/Controllers/archiveAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/deleteAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/downloadAssetFile.js.map +1 -1
- package/dist/esm/Assets/Controllers/editAppAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/fetchAssetFile.js.map +1 -1
- package/dist/esm/Assets/Controllers/getAppAssets.js.map +1 -1
- package/dist/esm/Assets/Controllers/index.js.map +1 -1
- package/dist/esm/Assets/Controllers/newAppAsset.js.map +1 -1
- package/dist/esm/Assets/Controllers/toggleShowArchivedAssets.js.map +1 -1
- package/dist/esm/Assets/Controllers/updateAppAssetMeta.js.map +1 -1
- package/dist/esm/Assets/Controllers/updateAssetFile.js.map +1 -1
- package/dist/esm/Assets/Entities/AppAssetsEntity.js.map +1 -1
- package/dist/esm/Assets/Entities/AssetEntity.js.map +1 -1
- package/dist/esm/Assets/Entities/AssetRepo.js.map +1 -1
- package/dist/esm/Assets/Factories/AssetsFactory.js.map +1 -1
- package/dist/esm/Assets/Factories/SandboxAssetsFactory.js.map +1 -1
- package/dist/esm/Assets/Factories/index.js.map +1 -1
- package/dist/esm/Assets/PMs/AssetFilePM.js.map +1 -1
- package/dist/esm/Assets/PMs/AssetPM.js.map +1 -1
- package/dist/esm/Assets/PMs/ShowArchivedAppAssetPM.js.map +1 -1
- package/dist/esm/Assets/UCs/ArchiveAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/DeleteAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/DownloadAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/UCs/EditAppAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetBlobURLUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/UCs/GetAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/NewAppAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/NewAssetUC.js.map +1 -1
- package/dist/esm/Assets/UCs/UpdateAppAssetMetaUC.js.map +1 -1
- package/dist/esm/Assets/UCs/UpdateAssetFileUC.js.map +1 -1
- package/dist/esm/Assets/UCs/index.js.map +1 -1
- package/dist/esm/Cache/Factories/CacheFeatureFactory.js.map +1 -1
- package/dist/esm/Cache/Factories/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Entities/ChallengeResults.js.map +1 -1
- package/dist/esm/ChallengeResults/Factories/ChallengeResultsFactory.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -1
- package/dist/esm/Dialog/Factories/SandboxDialogFactory.js +1 -2
- package/dist/esm/Dialog/Factories/SandboxDialogFactory.js.map +1 -1
- package/dist/esm/Handler/UCs/SubmitResultHandler.js.map +1 -1
- package/dist/esm/Logger/Factories/SandboxLoggerFactory.js.map +1 -1
- package/dist/esm/Logger/PMs/ForwardLogsToConsolePM.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/index.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/setTransitionDuration.js.map +1 -1
- package/dist/esm/StateMachine/Factories/SandboxStateMachineFactory.js.map +1 -1
- package/dist/esm/StateMachine/PMs/HostStatePM.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/index.js.map +1 -1
- package/dist/esm/ThemeColors/Controllers/setThemeByName.js.map +1 -1
- package/dist/esm/ThemeColors/Factories/ThemeFactory.js.map +1 -1
- package/dist/esm/ThemeColors/Mocks/MockSetThemeUC.js.map +1 -1
- package/dist/esm/ThemeColors/Mocks/index.js.map +1 -1
- package/dist/esm/VivedAPI/Adapters/apiStageAdapter.js.map +1 -1
- package/dist/esm/VivedAPI/Adapters/index.js.map +1 -1
- package/dist/esm/VivedAPI/Adapters/userTokenAdapter.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/index.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/loginUser.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/logoutUser.js.map +1 -1
- package/dist/esm/VivedAPI/Controllers/setApiStage.js.map +1 -1
- package/dist/esm/VivedAPI/Entities/VivedAPIEntity.js.map +1 -1
- package/dist/esm/VivedAPI/Entities/index.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/SandboxVivedAPIFactory.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/VivedAPIFactory.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/index.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/setupAPI.js.map +1 -1
- package/dist/esm/VivedAPI/Factories/setupVivedAPIForSandbox.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/MockJsonRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/Mocks/index.js.map +1 -1
- package/dist/esm/VivedAPI/PMs/ApiStagePM.js.map +1 -1
- package/dist/esm/VivedAPI/PMs/UserTokenPM.js.map +1 -1
- package/dist/esm/VivedAPI/PMs/index.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/BasicFetchUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/BlobRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/DeleteAssetOnAPIUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/FileUploadUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/JsonRequestUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/PostNewAssetUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/SignedAuthTokenUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/UserAuthUC.js.map +1 -1
- package/dist/esm/VivedAPI/UCs/index.js.map +1 -1
- package/dist/esm/VivedAPI/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Adapters/index.js +1 -0
- package/dist/esm/ZSpaceHost/Adapters/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.js +21 -0
- package/dist/esm/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.js.map +1 -0
- package/dist/esm/ZSpaceHost/Controllers/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/Controllers/setZSpaceIsSupported.js.map +1 -1
- package/dist/esm/ZSpaceHost/Factories/SandboxZSpaceFactory.js +2 -1
- package/dist/esm/ZSpaceHost/Factories/SandboxZSpaceFactory.js.map +1 -1
- package/dist/esm/ZSpaceHost/Factories/setupZSpaceForSandbox.js +2 -1
- package/dist/esm/ZSpaceHost/Factories/setupZSpaceForSandbox.js.map +1 -1
- package/dist/esm/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.js +11 -0
- package/dist/esm/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.js.map +1 -0
- package/dist/esm/ZSpaceHost/Mocks/index.js +1 -0
- package/dist/esm/ZSpaceHost/Mocks/index.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/EmulateZSpacePM.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/ZSpaceIsActivePM.js.map +1 -1
- package/dist/esm/ZSpaceHost/PMs/ZSpaceIsSupportedPM.js +35 -0
- package/dist/esm/ZSpaceHost/PMs/ZSpaceIsSupportedPM.js.map +1 -0
- package/dist/esm/ZSpaceHost/PMs/index.js +1 -0
- package/dist/esm/ZSpaceHost/PMs/index.js.map +1 -1
- package/dist/types/AppSandbox/Adapters/babylonInspectorSupportedAdapter.d.ts +3 -0
- package/dist/types/AppSandbox/Adapters/babylonInspectorSupportedAdapter.d.ts.map +1 -0
- package/dist/types/AppSandbox/Adapters/index.d.ts +1 -0
- package/dist/types/AppSandbox/Adapters/index.d.ts.map +1 -1
- package/dist/types/AppSandbox/Controller/index.d.ts +1 -0
- package/dist/types/AppSandbox/Controller/index.d.ts.map +1 -1
- package/dist/types/AppSandbox/Controller/setBabylonInspectorSupported.d.ts +3 -0
- package/dist/types/AppSandbox/Controller/setBabylonInspectorSupported.d.ts.map +1 -0
- package/dist/types/AppSandbox/Entities/AppSandboxEntity.d.ts +2 -0
- package/dist/types/AppSandbox/Entities/AppSandboxEntity.d.ts.map +1 -1
- package/dist/types/AppSandbox/Factories/AppSandboxFeatureFactory.d.ts.map +1 -1
- package/dist/types/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.d.ts +8 -0
- package/dist/types/AppSandbox/Mocks/BabylonInspectorSupportedPMMock.d.ts.map +1 -0
- package/dist/types/AppSandbox/Mocks/index.d.ts +1 -0
- package/dist/types/AppSandbox/Mocks/index.d.ts.map +1 -1
- package/dist/types/AppSandbox/PMs/BabylonInspectorSupportedPM.d.ts +7 -0
- package/dist/types/AppSandbox/PMs/BabylonInspectorSupportedPM.d.ts.map +1 -0
- package/dist/types/AppSandbox/PMs/index.d.ts +1 -0
- package/dist/types/AppSandbox/PMs/index.d.ts.map +1 -1
- package/dist/types/Apps/Factories/AppsFeatureFactory.d.ts.map +1 -1
- package/dist/types/AssetPlugin/Factories/AssetPluginFeatureFactory.d.ts.map +1 -1
- package/dist/types/Assets/Factories/AssetsFactory.d.ts.map +1 -1
- package/dist/types/Dialog/Factories/SandboxDialogFactory.d.ts.map +1 -1
- package/dist/types/StateMachine/Factories/SandboxStateMachineFactory.d.ts.map +1 -1
- package/dist/types/ZSpaceHost/Adapters/index.d.ts +1 -0
- package/dist/types/ZSpaceHost/Adapters/index.d.ts.map +1 -1
- package/dist/types/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.d.ts +3 -0
- package/dist/types/ZSpaceHost/Adapters/zSpaceIsSupportedAdapter.d.ts.map +1 -0
- package/dist/types/ZSpaceHost/Factories/SandboxZSpaceFactory.d.ts.map +1 -1
- package/dist/types/ZSpaceHost/Factories/setupZSpaceForSandbox.d.ts.map +1 -1
- package/dist/types/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.d.ts +8 -0
- package/dist/types/ZSpaceHost/Mocks/ZSpaceIsSupportedPMMock.d.ts.map +1 -0
- package/dist/types/ZSpaceHost/Mocks/index.d.ts +1 -0
- package/dist/types/ZSpaceHost/Mocks/index.d.ts.map +1 -1
- package/dist/types/ZSpaceHost/PMs/ZSpaceIsSupportedPM.d.ts +7 -0
- package/dist/types/ZSpaceHost/PMs/ZSpaceIsSupportedPM.d.ts.map +1 -0
- package/dist/types/ZSpaceHost/PMs/index.d.ts +1 -0
- package/dist/types/ZSpaceHost/PMs/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/README.md +0 -105
- package/dist/cjs/Assets/Factories/setupAssets.js +0 -14
- package/dist/cjs/Assets/Factories/setupAssets.js.map +0 -1
- package/dist/esm/Assets/Factories/setupAssets.js +0 -11
- package/dist/esm/Assets/Factories/setupAssets.js.map +0 -1
- package/dist/types/Assets/Factories/setupAssets.d.ts +0 -8
- package/dist/types/Assets/Factories/setupAssets.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxMounterUC.js","sourceRoot":"","sources":["../../../../../src/Apps/UCs/Mounters/SandboxMounterUC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, Version, VIVEDApp_3 } from \"@vived/core\";\nimport {\n AppSandboxEntity,\n SandboxState\n} from \"../../../AppSandbox/Entities/AppSandboxEntity\";\nimport { HostDispatchEntity } from \"../../../Dispatcher/Entities/HostDispatchEntity\";\nimport { HostHandlerEntity } from \"../../../Handler/Entities/HostHandler\";\nimport { AppEntity, AppState } from \"../../Entities/AppEntity\";\nimport { MounterUC } from \"./MounterUC\";\n\n/**\n * Factory function to create a sandbox mounter for apps.\n *\n * The sandbox mounter is designed to mount apps in a sandboxed environment,\n * providing isolation and security for app execution.\n *\n * @param appObject - The app object to attach the mounter to\n * @returns A new SandboxMounterUC instance\n */\nexport function makeSandboxMounter(appObject: AppObject): MounterUC {\n return new SandboxMounterUC(appObject);\n}\n\n/**\n * Implementation of MounterUC for mounting apps in a sandbox environment.\n *\n * The SandboxMounterUC is responsible for safely loading and initializing apps\n * in a sandboxed context, handling app lifecycle events, and managing the\n * communication between the host and app.\n */\nclass SandboxMounterUC extends MounterUC {\n /**\n * Gets the app entity representing the app being mounted\n */\n private get appEntity() {\n return this.getCachedLocalComponent<AppEntity>(AppEntity.type);\n }\n\n /**\n * Gets the host dispatcher entity for sending messages to apps\n */\n private get hostDispatcher() {\n return this.getCachedLocalComponent<HostDispatchEntity>(\n HostDispatchEntity.type\n );\n }\n\n /**\n * Gets the host handler entity for receiving messages from apps\n */\n private get hostHandler() {\n return this.getCachedLocalComponent<HostHandlerEntity>(\n HostHandlerEntity.type\n );\n }\n\n /**\n * Gets the sandbox entity that manages the sandbox state\n */\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n /**\n * Mounts the latest version of the app.\n *\n * @returns A promise that resolves when the app is mounted or rejects if an error occurs\n */\n mountLatestVersion = (): Promise<void> => {\n if (!this.appEntity) {\n this.error(\"Missing Components\");\n return Promise.reject();\n }\n\n const version = this.appEntity.latestVersion;\n if (!version) {\n this.error(\"No Version\");\n return Promise.reject();\n }\n\n return this.mount(version.major, version.minor);\n };\n\n /**\n * Mounts a specific version of the app.\n *\n * @param majorVersion - The major version number\n * @param minorVersion - The minor version number\n * @returns A promise that resolves when the app is mounted or rejects if an error occurs\n */\n mount = (majorVersion: number, minorVersion: number): Promise<void> => {\n if (\n !this.appEntity ||\n !this.hostDispatcher ||\n !this.hostHandler ||\n !this.sandbox\n ) {\n this.error(\"Missing Components\");\n return Promise.reject();\n }\n\n const version = this.getAppVersion(majorVersion, minorVersion);\n if (!version) {\n this.error(\"No Version\");\n return Promise.reject();\n }\n\n const appInterface = this.getAppInterface(version);\n if (!appInterface) {\n this.error(\"No App Interface\");\n return Promise.reject();\n }\n\n const appHandler = appInterface.mount(this.hostHandler.handler);\n this.hostDispatcher.registerAppHandler(appHandler);\n\n const app = this.appEntity;\n const sandbox = this.sandbox;\n\n return new Promise((resolve) => {\n const waitForReady = () => {\n if (app.state === AppState.READY) {\n sandbox.state = SandboxState.MOUNTED;\n app.removeChangeObserver(waitForReady);\n resolve();\n }\n };\n\n app.addChangeObserver(waitForReady);\n });\n };\n\n /**\n * Helper method to find a specific version of the app.\n *\n * @param major - Major version number\n * @param minor - Minor version number\n * @returns The Version object or undefined if not found\n */\n private getAppVersion(major: number, minor: number): Version | undefined {\n if (!this.appEntity) {\n return;\n }\n\n let appVersion = Version.GetLatestWithMajorMinor(\n this.appEntity.versions,\n major,\n minor\n );\n\n if (!appVersion) {\n appVersion = Version.GetLatestWithMajor(this.appEntity.versions, major);\n }\n\n if (!appVersion) {\n this.error(\n `Unable to find version ${major}.${minor}.X for App ${this.appEntity.name}`\n );\n }\n\n return appVersion;\n }\n\n /**\n * Unmounts the app from the sandbox.\n */\n unmount = (): void => {\n if (!this.sandbox || !this.hostDispatcher) {\n this.error(\"Missing Components\");\n return;\n }\n\n this.hostDispatcher.clearAppHandler();\n\n this.sandbox.state = SandboxState.UNMOUNTED;\n };\n\n /**\n * Loads a script into the document.\n * This is a placeholder implementation for sandbox mounting.\n *\n * @param scriptURL - URL of the script to load\n * @param appIDWithVersion - Versioned ID of the app\n * @returns A promise that resolves when the script is loaded\n */\n loadScriptIntoDocument(\n scriptURL: string,\n appIDWithVersion: string\n ): Promise<void> {\n // Unused during dev\n return Promise.resolve();\n }\n\n /**\n * Gets the app interface for a specific version.\n *\n * @param version - The version to get the interface for\n * @returns The app interface or undefined if not found\n */\n getAppInterface(version: Version): VIVEDApp_3 | undefined {\n const modifiedVersion = version.baseVersionString.split(\".\").join(\"_\");\n const idWithVersion = `${this.appObject.id}-${modifiedVersion}`;\n const appInterface = (window as any)[idWithVersion] as VIVEDApp_3;\n if (!appInterface) {\n this.appObjects.submitFatal(\n \"LocalMounterUC\",\n \"Unable to find App Interface\"\n );\n return;\n }\n\n return appInterface;\n }\n\n /**\n * Creates a new SandboxMounterUC instance.\n *\n * @param appObject - The app object to attach to\n */\n constructor(appObject: AppObject) {\n super(appObject, MounterUC.type);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SandboxMounterUC.js","sourceRoot":"","sources":["../../../../../src/Apps/UCs/Mounters/SandboxMounterUC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, Version, VIVEDApp_3 } from \"@vived/core\";\nimport {\n AppSandboxEntity,\n SandboxState\n} from \"../../../AppSandbox/Entities/AppSandboxEntity\";\nimport { HostDispatchEntity } from \"../../../Dispatcher/Entities/HostDispatchEntity\";\nimport { HostHandlerEntity } from \"../../../Handler/Entities/HostHandler\";\nimport { AppEntity, AppState } from \"../../Entities/AppEntity\";\nimport { MounterUC } from \"./MounterUC\";\n\n/**\n * Factory function to create a sandbox mounter for apps.\n *\n * The sandbox mounter is designed to mount apps in a sandboxed environment,\n * providing isolation and security for app execution.\n *\n * @param appObject - The app object to attach the mounter to\n * @returns A new SandboxMounterUC instance\n */\nexport function makeSandboxMounter(appObject: AppObject): MounterUC {\n return new SandboxMounterUC(appObject);\n}\n\n/**\n * Implementation of MounterUC for mounting apps in a sandbox environment.\n *\n * The SandboxMounterUC is responsible for safely loading and initializing apps\n * in a sandboxed context, handling app lifecycle events, and managing the\n * communication between the host and app.\n */\nclass SandboxMounterUC extends MounterUC {\n /**\n * Gets the app entity representing the app being mounted\n */\n private get appEntity() {\n return this.getCachedLocalComponent<AppEntity>(AppEntity.type);\n }\n\n /**\n * Gets the host dispatcher entity for sending messages to apps\n */\n private get hostDispatcher() {\n return this.getCachedLocalComponent<HostDispatchEntity>(\n HostDispatchEntity.type\n );\n }\n\n /**\n * Gets the host handler entity for receiving messages from apps\n */\n private get hostHandler() {\n return this.getCachedLocalComponent<HostHandlerEntity>(\n HostHandlerEntity.type\n );\n }\n\n /**\n * Gets the sandbox entity that manages the sandbox state\n */\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n /**\n * Mounts the latest version of the app.\n *\n * @returns A promise that resolves when the app is mounted or rejects if an error occurs\n */\n mountLatestVersion = (): Promise<void> => {\n if (!this.appEntity) {\n this.error(\"Missing Components\");\n return Promise.reject();\n }\n\n const version = this.appEntity.latestVersion;\n if (!version) {\n this.error(\"No Version\");\n return Promise.reject();\n }\n\n return this.mount(version.major, version.minor);\n };\n\n /**\n * Mounts a specific version of the app.\n *\n * @param majorVersion - The major version number\n * @param minorVersion - The minor version number\n * @returns A promise that resolves when the app is mounted or rejects if an error occurs\n */\n mount = (majorVersion: number, minorVersion: number): Promise<void> => {\n if (\n !this.appEntity ||\n !this.hostDispatcher ||\n !this.hostHandler ||\n !this.sandbox\n ) {\n this.error(\"Missing Components\");\n return Promise.reject();\n }\n\n const version = this.getAppVersion(majorVersion, minorVersion);\n if (!version) {\n this.error(\"No Version\");\n return Promise.reject();\n }\n\n const appInterface = this.getAppInterface(version);\n if (!appInterface) {\n this.error(\"No App Interface\");\n return Promise.reject();\n }\n\n const appHandler = appInterface.mount(this.hostHandler.handler);\n this.hostDispatcher.registerAppHandler(appHandler);\n\n const app = this.appEntity;\n const sandbox = this.sandbox;\n\n return new Promise((resolve) => {\n const waitForReady = () => {\n if (app.state === AppState.READY) {\n sandbox.state = SandboxState.MOUNTED;\n app.removeChangeObserver(waitForReady);\n resolve();\n }\n };\n\n app.addChangeObserver(waitForReady);\n waitForReady();\n });\n };\n\n /**\n * Helper method to find a specific version of the app.\n *\n * @param major - Major version number\n * @param minor - Minor version number\n * @returns The Version object or undefined if not found\n */\n private getAppVersion(major: number, minor: number): Version | undefined {\n if (!this.appEntity) {\n return;\n }\n\n let appVersion = Version.GetLatestWithMajorMinor(\n this.appEntity.versions,\n major,\n minor\n );\n\n if (!appVersion) {\n appVersion = Version.GetLatestWithMajor(this.appEntity.versions, major);\n }\n\n if (!appVersion) {\n this.error(\n `Unable to find version ${major}.${minor}.X for App ${this.appEntity.name}`\n );\n }\n\n return appVersion;\n }\n\n /**\n * Unmounts the app from the sandbox.\n */\n unmount = (): void => {\n if (!this.sandbox || !this.hostDispatcher) {\n this.error(\"Missing Components\");\n return;\n }\n\n this.hostDispatcher.clearAppHandler();\n\n this.sandbox.state = SandboxState.UNMOUNTED;\n };\n\n /**\n * Loads a script into the document.\n * This is a placeholder implementation for sandbox mounting.\n *\n * @param scriptURL - URL of the script to load\n * @param appIDWithVersion - Versioned ID of the app\n * @returns A promise that resolves when the script is loaded\n */\n loadScriptIntoDocument(\n scriptURL: string,\n appIDWithVersion: string\n ): Promise<void> {\n // Unused during dev\n return Promise.resolve();\n }\n\n /**\n * Gets the app interface for a specific version.\n *\n * @param version - The version to get the interface for\n * @returns The app interface or undefined if not found\n */\n getAppInterface(version: Version): VIVEDApp_3 | undefined {\n const modifiedVersion = version.baseVersionString.split(\".\").join(\"_\");\n const idWithVersion = `${this.appObject.id}-${modifiedVersion}`;\n const appInterface = (window as any)[idWithVersion] as VIVEDApp_3;\n if (!appInterface) {\n this.appObjects.submitFatal(\n \"LocalMounterUC\",\n \"Unable to find App Interface\"\n );\n return;\n }\n\n return appInterface;\n }\n\n /**\n * Creates a new SandboxMounterUC instance.\n *\n * @param appObject - The app object to attach to\n */\n constructor(appObject: AppObject) {\n super(appObject, MounterUC.type);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartAppUC.js","sourceRoot":"","sources":["../../../../src/Apps/UCs/StartAppUC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\
|
|
1
|
+
{"version":3,"file":"StartAppUC.js","sourceRoot":"","sources":["../../../../src/Apps/UCs/StartAppUC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport { AppSandboxEntity } from \"../../AppSandbox/Entities/AppSandboxEntity\";\nimport { DispatchEnableFeatureUC } from \"../../Dispatcher/UCs/DispatchEnableFeatureUC\";\nimport { DispatchIsAuthoringUC } from \"../../Dispatcher/UCs/DispatchIsAuthoringUC\";\nimport { DispatchSetStateUC } from \"../../Dispatcher/UCs/DispatchSetStateUC\";\nimport { DispatchStartAppUC } from \"../../Dispatcher/UCs/DispatchStartAppUC\";\nimport { DispatchStateDTO } from \"../../Dispatcher/UCs/DispatchSetStateUC\";\nimport { DispatchThemeUC } from \"../../Dispatcher/UCs/DispatchThemeUC\";\nimport {\n HostEditingStateEntity,\n HostStateMachine\n} from \"../../StateMachine/Entities\";\n\n/**\n * StartAppUC - Use case for starting an application in the host environment\n *\n * This use case is responsible for initializing and starting an application\n * within the VIVED Learning platform. It handles setting up the application container,\n * initializing the app with the appropriate state, and dispatching necessary configurations.\n *\n * The StartAppUC coordinates between several subsystems:\n * - State Machine: Provides the current application state\n * - Dispatcher: Communicates with the app via message passing\n * - AppSandbox: Provides development features when enabled\n *\n * @extends AppObjectUC from @vived/core\n */\nexport abstract class StartAppUC extends AppObjectUC {\n /** Type identifier for the StartAppUC component */\n static type = \"StartAppUC\";\n\n /**\n * Abstract method that starts the application\n *\n * @param container - HTML element that will contain the app\n */\n abstract start(container: HTMLElement): void;\n\n /**\n * Gets a StartAppUC instance from an app object\n *\n * @param appObject - App object to get the StartAppUC from\n * @returns StartAppUC instance if found, undefined otherwise\n */\n static get(appObject: AppObject): StartAppUC | undefined {\n const asset = appObject.getComponent<StartAppUC>(StartAppUC.type);\n if (!asset) {\n appObject.appObjectRepo.submitWarning(\n \"StartAppUC.get\",\n \"Unable to find StartAppUC on app object \" + appObject.id\n );\n }\n return asset;\n }\n\n /**\n * Gets a StartAppUC instance by app ID\n *\n * @param id - ID of the app to start\n * @param appObjects - Repository containing app objects\n * @returns StartAppUC instance if found, undefined otherwise\n */\n static getByID(\n id: string,\n appObjects: AppObjectRepo\n ): StartAppUC | undefined {\n const appObject = appObjects.get(id);\n\n if (!appObject) {\n appObjects.submitWarning(\n \"StartAppUC.getByID\",\n \"Unable to find App Object by id \" + id\n );\n return undefined;\n }\n\n return StartAppUC.get(appObject);\n }\n\n /**\n * Convenience method to start an app by ID\n *\n * @param container - HTML element to mount the app in\n * @param id - ID of the app to start\n * @param appObjects - Repository containing app objects\n */\n static startByID(\n container: HTMLElement,\n id: string,\n appObjects: AppObjectRepo\n ) {\n StartAppUC.getByID(id, appObjects)?.start(container);\n }\n}\n\n/**\n * Factory function to create a new StartAppUC instance\n *\n * @param appObject - The app object to attach the use case to\n * @returns A concrete implementation of StartAppUC\n */\nexport function makeStartAppUC(appObject: AppObject): StartAppUC {\n return new StartAppUCImp(appObject);\n}\n\n/**\n * Concrete implementation of StartAppUC\n * Uses dependency injection to access required components\n * Handles the app starting process\n */\nclass StartAppUCImp extends StartAppUC {\n private get stateMachine() {\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\n }\n\n private get editStateEntity() {\n return this.getCachedSingleton<HostEditingStateEntity>(\n HostEditingStateEntity.type\n );\n }\n\n private get dispatchStart() {\n return this.getCachedLocalComponent<DispatchStartAppUC>(\n DispatchStartAppUC.type\n );\n }\n\n private get dispatchSetState() {\n return this.getCachedLocalComponent<DispatchSetStateUC>(\n DispatchSetStateUC.type\n );\n }\n\n private get dispatchSetIsAuthoring() {\n return this.getCachedLocalComponent<DispatchIsAuthoringUC>(\n DispatchIsAuthoringUC.type\n );\n }\n\n private get dispatchThemeColors() {\n return this.getCachedLocalComponent<DispatchThemeUC>(DispatchThemeUC.type);\n }\n\n private get dispatchEnableFeature() {\n return this.getCachedLocalComponent<DispatchEnableFeatureUC>(\n DispatchEnableFeatureUC.type\n );\n }\n\n private get sandbox() {\n return this.getCachedSingleton<AppSandboxEntity>(AppSandboxEntity.type);\n }\n\n start = (container: HTMLElement) => {\n if (!this.stateMachine) return;\n if (!this.dispatchStart) return;\n if (!this.editStateEntity) return;\n if (!this.sandbox) return;\n\n this.dispatchStart.doDispatch(container);\n\n let state;\n if (this.stateMachine.activeState) {\n state = this.stateMachine.getStateByID(\n this.stateMachine.activeState\n )?.stateData;\n }\n\n const hideNavigation = this.stateMachine.states.length <= 1;\n const hasNextSlide = this.stateMachine.nextState !== undefined;\n const hasPreviousSlide = this.stateMachine.previousState !== undefined;\n const dto: DispatchStateDTO = {\n finalState: state,\n hideNavigation,\n hasNextSlide,\n hasPreviousSlide\n };\n this.dispatchSetState?.doDispatch(dto);\n\n let isAuthoring = this.editStateEntity.isEditing;\n if (this.stateMachine.activeState === undefined) {\n isAuthoring = true;\n }\n this.dispatchSetIsAuthoring?.doDispatch(isAuthoring);\n\n this.dispatchThemeColors?.doDispatch();\n\n if (this.sandbox.enableDevFeatures) {\n this.sandbox.devFeatures.forEach((feature) => {\n this.dispatchEnableFeature?.doDispatch(feature);\n });\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StartAppUC.type);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StopAppUC.js","sourceRoot":"","sources":["../../../../src/Apps/UCs/StopAppUC.ts"],"names":[],"mappings":";;;AA0EA,sCAEC;AA5ED,sCAAoE;AACpE,8EAA2E;AAE3E;;;;;;;GAOG;AACH,MAAsB,SAAU,SAAQ,kBAAW;IAQjD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,SAAoB;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,eAAe,EACf,0CAA0C,GAAG,SAAS,CAAC,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,EAAU,EAAE,UAAyB;QAClD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,mBAAmB,EACnB,kCAAkC,GAAG,EAAE,CACxC,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAU,EAAE,UAAyB;QACnD,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;;AAtDH,8BAuDC;AAtDQ,cAAI,GAAG,WAAW,CAAC;AAwD5B;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,SAAoB;IAChD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,aAAc,SAAQ,SAAS;IACnC;;OAEG;IACH,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,qCAAiB,CAAC,IAAI,CACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\
|
|
1
|
+
{"version":3,"file":"StopAppUC.js","sourceRoot":"","sources":["../../../../src/Apps/UCs/StopAppUC.ts"],"names":[],"mappings":";;;AA0EA,sCAEC;AA5ED,sCAAoE;AACpE,8EAA2E;AAE3E;;;;;;;GAOG;AACH,MAAsB,SAAU,SAAQ,kBAAW;IAQjD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,SAAoB;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,eAAe,EACf,0CAA0C,GAAG,SAAS,CAAC,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,EAAU,EAAE,UAAyB;QAClD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,aAAa,CACtB,mBAAmB,EACnB,kCAAkC,GAAG,EAAE,CACxC,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAU,EAAE,UAAyB;QACnD,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;;AAtDH,8BAuDC;AAtDQ,cAAI,GAAG,WAAW,CAAC;AAwD5B;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,SAAoB;IAChD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,aAAc,SAAQ,SAAS;IACnC;;OAEG;IACH,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,uBAAuB,CACjC,qCAAiB,CAAC,IAAI,CACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectRepo, AppObjectUC } from \"@vived/core\";\nimport { DispatchStopAppUC } from \"../../Dispatcher/UCs/DispatchStopAppUC\";\n\n/**\n * Use Case for stopping an application.\n *\n * This class provides functionality to stop a running app through the dispatcher\n * system. It acts as a bridge between controllers and the dispatch mechanism.\n *\n * @extends AppObjectUC from @vived/core\n */\nexport abstract class StopAppUC extends AppObjectUC {\n static type = \"StopAppUC\";\n\n /**\n * Stops the application associated with this Use Case.\n */\n abstract stop(): void;\n\n /**\n * Retrieves the StopAppUC component from a specific App Object.\n *\n * @param appObject - The App Object to get the component from\n * @returns The StopAppUC component or undefined if not found\n */\n static get(appObject: AppObject): StopAppUC | undefined {\n const asset = appObject.getComponent<StopAppUC>(StopAppUC.type);\n if (!asset) {\n appObject.appObjectRepo.submitWarning(\n \"StopAppUC.get\",\n \"Unable to find StartAppUC on app object \" + appObject.id\n );\n }\n return asset;\n }\n\n /**\n * Retrieves the StopAppUC component by App Object ID.\n *\n * @param id - The ID of the App Object\n * @param appObjects - The App Object repository\n * @returns The StopAppUC component or undefined if not found\n */\n static getByID(id: string, appObjects: AppObjectRepo): StopAppUC | undefined {\n const appObject = appObjects.get(id);\n\n if (!appObject) {\n appObjects.submitWarning(\n \"StopAppUC.getByID\",\n \"Unable to find App Object by id \" + id\n );\n return undefined;\n }\n\n return StopAppUC.get(appObject);\n }\n\n /**\n * Convenience method to stop an app by its ID.\n *\n * @param id - The ID of the app to stop\n * @param appObjects - The App Object repository\n */\n static stopByID(id: string, appObjects: AppObjectRepo) {\n StopAppUC.getByID(id, appObjects)?.stop();\n }\n}\n\n/**\n * Factory function to create a new StopAppUC instance.\n *\n * @param appObject - The App Object to attach the component to\n * @returns A new StopAppUC instance\n */\nexport function makeStopAppUC(appObject: AppObject): StopAppUC {\n return new StartAppUCImp(appObject);\n}\n\n/**\n * Concrete implementation of the StopAppUC abstract class.\n */\nclass StartAppUCImp extends StopAppUC {\n /**\n * Gets the dispatch component that sends the stop command to the app.\n */\n private get dispatchStop() {\n return this.getCachedLocalComponent<DispatchStopAppUC>(\n DispatchStopAppUC.type\n );\n }\n\n /**\n * Stops the app by triggering the dispatch mechanism.\n */\n stop(): void {\n this.dispatchStop?.doDispatch();\n }\n\n /**\n * Creates a new instance of the StopAppUC implementation.\n *\n * @param appObject - The App Object to attach to\n */\n constructor(appObject: AppObject) {\n super(appObject, StopAppUC.type);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Apps/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,0CAAwB;AACxB,wCAAsB;AACtB,wCAAsB","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Apps/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,0CAAwB;AACxB,wCAAsB;AACtB,wCAAsB","sourcesContent":["/**\n * Apps Module - Core module for managing application lifecycle in the VIVED Learning platform\n *\n * This module handles app loading, mounting, starting, stopping, and state management.\n * It follows a clean architecture pattern with the following layers:\n *\n * - Entities: Core domain models (AppEntity, AppRepo)\n * - PMs (Presentation Models): Business logic and state management\n * - UCs (Use Cases): Implementation of specific operations\n * - Adapters: Connect PMs to UI components\n * - Controllers: Entry points for UI interactions\n *\n * To use this module, typically you would:\n * 1. Load an app using the AppEntity\n * 2. Mount the app using MounterUC\n * 3. Start the app using StartAppUC\n * 4. Manage app state via the AppPM or ActiveAppPM\n * 5. Stop the app using StopAppUC when done\n */\n\nexport * from \"./Adapters\";\nexport * from \"./Controllers\";\nexport * from \"./Entities\";\nexport * from \"./Factories\";\nexport * from \"./Mocks\";\nexport * from \"./PMs\";\nexport * from \"./UCs\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetPluginFeatureFactory.js","sourceRoot":"","sources":["../../../../src/AssetPlugin/Factories/AssetPluginFeatureFactory.ts"],"names":[],"mappings":";;;AA+FA,sEAKC;AApGD,sCAA+E;AAC/E,qCAA0D;AAC1D,iDAK0B;AAC1B,2CAKuB;AACvB,0CAAuE;AACvE,8BAA0C;AAC1C,gCAA2D;AAE3D,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC;;;;GAIG;AACH,MAAa,yBAA0B,SAAQ,oBAAa;IAM1D,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QANnB,+BAA+B;QACtB,gBAAW,GAAG,2BAA2B,CAAC;IAMnD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,sBAAsB;QACtB,IAAI,CAAC,WAAW,GAAG,IAAA,gCAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAA,+BAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAA,mCAAsB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,uBAAuB;QACvB,IAAA,oBAAa,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAA,uCAAiC,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElD,oBAAoB;QACpB,IAAA,8CAAiC,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAA,kCAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAA,qCAAwB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzC,iBAAiB;QACjB,IAAA,sCAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAA,gDAAsC,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAA,sCAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,mCAAmC;QACnC,IAAA,sBAAiB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,
|
|
1
|
+
{"version":3,"file":"AssetPluginFeatureFactory.js","sourceRoot":"","sources":["../../../../src/AssetPlugin/Factories/AssetPluginFeatureFactory.ts"],"names":[],"mappings":";;;AA+FA,sEAKC;AApGD,sCAA+E;AAC/E,qCAA0D;AAC1D,iDAK0B;AAC1B,2CAKuB;AACvB,0CAAuE;AACvE,8BAA0C;AAC1C,gCAA2D;AAE3D,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC;;;;GAIG;AACH,MAAa,yBAA0B,SAAQ,oBAAa;IAM1D,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QANnB,+BAA+B;QACtB,gBAAW,GAAG,2BAA2B,CAAC;IAMnD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,sBAAsB;QACtB,IAAI,CAAC,WAAW,GAAG,IAAA,gCAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAA,+BAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAA,mCAAsB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,uBAAuB;QACvB,IAAA,oBAAa,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAA,uCAAiC,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElD,oBAAoB;QACpB,IAAA,8CAAiC,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAA,kCAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAA,qCAAwB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzC,iBAAiB;QACjB,IAAA,sCAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAA,gDAAsC,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAA,sCAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,mCAAmC;QACnC,IAAA,sBAAiB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,cAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAElE,MAAM,IAAI,GAAG,oBAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CACR,mFAAmF,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAnED,8DAmEC;AAED,SAAgB,6BAA6B,CAC3C,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACpD,OAAO,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["import { AppObject, AppObjectRepo, DomainFactory, Version } from \"@vived/core\";\nimport { AppRepoEntity, makeMounterUC } from \"../../Apps\";\nimport {\n makeDispatchDisposeAppUC,\n makeDispatchStartBrowseChannelsUC,\n makeDispatchStopAppUC,\n makeHostDispatchEntity\n} from \"../../Dispatcher\";\nimport {\n makeCloseAssetSystemPluginUC,\n makeGetAssetFolderURLHandler,\n makeHostHandlerEntity,\n makeRegisterExternalStyleSheetsHandler\n} from \"../../Handler\";\nimport { AssetPluginEntity, makeAssetPluginEntity } from \"../Entities\";\nimport { makeAssetPluginPM } from \"../PM\";\nimport { makeSandboxAssetPluginContainerUC } from \"../UCs\";\n\nconst assetPluginAppID = \"app448f8f293fbb493a9e233f113ce8b56a\";\nconst assetPluginVersion = \"1.2.0\";\n\n/**\n * Factory responsible for setting up the AssetPlugin domain components.\n * This factory initializes all entities, use cases, and presentation models\n * required for the AssetPlugin functionality.\n */\nexport class AssetPluginFeatureFactory extends DomainFactory {\n // Unique name for this factory\n readonly factoryName = \"AssetPluginFeatureFactory\";\n\n private assetPlugin?: AssetPluginEntity;\n\n constructor(appObject: AppObject) {\n super(appObject);\n }\n\n /**\n * Sets up all entities required for the AssetPlugin system\n */\n setupEntities(): void {\n // Initialize entities\n this.assetPlugin = makeAssetPluginEntity(this.appObject);\n makeHostHandlerEntity(this.appObject);\n makeHostDispatchEntity(this.appObject);\n }\n\n /**\n * Sets up all use cases for the AssetPlugin system\n */\n setupUCs(): void {\n // Initialize use cases\n makeMounterUC(this.appObject);\n makeSandboxAssetPluginContainerUC(this.appObject);\n\n // Setup dispatchers\n makeDispatchStartBrowseChannelsUC(this.appObject);\n makeDispatchStopAppUC(this.appObject);\n makeDispatchDisposeAppUC(this.appObject);\n\n // Setup handlers\n makeGetAssetFolderURLHandler(this.appObject);\n makeRegisterExternalStyleSheetsHandler(this.appObject);\n makeCloseAssetSystemPluginUC(this.appObject);\n }\n\n /**\n * Sets up all presentation managers for the AssetPlugin system\n */\n setupPMs(): void {\n // Initialize presentation managers\n makeAssetPluginPM(this.appObject);\n }\n\n /**\n * Performs any final setup operations after all components are initialized\n */\n finalSetup(): void {\n if (!this.assetPlugin) {\n this.error(\"AssetPlugin entity not initialized\");\n return;\n }\n\n this.assetPlugin.version = Version.FromString(assetPluginVersion);\n\n const repo = AppRepoEntity.get(this.appObjects);\n if (repo) {\n repo.add(this.assetPlugin.app);\n } else {\n this.error(\n \"Unable to find app repo. Make sure it is setup before setting up the Asset Plugin\"\n );\n }\n }\n}\n\nexport function makeAssetPluginFeatureFactory(\n appObjects: AppObjectRepo\n): AssetPluginFeatureFactory {\n const ao = appObjects.getOrCreate(assetPluginAppID);\n return new AssetPluginFeatureFactory(ao);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AssetPlugin/Factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,gEAA8C","sourcesContent":["export * from \"./AssetPluginFeatureFactory\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/AssetPlugin/Factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,gEAA8C","sourcesContent":["export * from \"./AssetPluginFeatureFactory\";\nexport * from \"./setupAssetsPluginForSandbox\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetFileAdapter.js","sourceRoot":"","sources":["../../../../src/Assets/Adapters/assetFileAdapter.ts"],"names":[],"mappings":";;;AAEA,oDAI4B;AAE5B;;;GAGG;AACU,QAAA,gBAAgB,GAA2B;IACtD;;OAEG;IACH,SAAS,EAAE,gCAAkB;IAE7B;;;;;;OAMG;IACH,SAAS,EAAE,CACT,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,yBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,WAAW,EAAE,CACX,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,yBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["// filepath: c:\\Users\\amosp\\Documents\\WebGL\\vivedlearning_host\\src\\Assets\\Adapters\\assetFileAdapter.ts\
|
|
1
|
+
{"version":3,"file":"assetFileAdapter.js","sourceRoot":"","sources":["../../../../src/Assets/Adapters/assetFileAdapter.ts"],"names":[],"mappings":";;;AAEA,oDAI4B;AAE5B;;;GAGG;AACU,QAAA,gBAAgB,GAA2B;IACtD;;OAEG;IACH,SAAS,EAAE,gCAAkB;IAE7B;;;;;;OAMG;IACH,SAAS,EAAE,CACT,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,yBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,WAAW,EAAE,CACX,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,yBAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["// filepath: c:\\Users\\amosp\\Documents\\WebGL\\vivedlearning_host\\src\\Assets\\Adapters\\assetFileAdapter.ts\nimport { AppObjectRepo, PmAdapter } from \"@vived/core\";\nimport {\n AssetFilePM,\n AssetFileVM,\n defaultAssetFileVM\n} from \"../PMs/AssetFilePM\";\n\n/**\n * Adapter for connecting AssetFilePM to UI components\n * Provides the interface for React components to subscribe to AssetFileVM updates\n */\nexport const assetFileAdapter: PmAdapter<AssetFileVM> = {\n /**\n * Default view model used before subscription is established\n */\n defaultVM: defaultAssetFileVM,\n\n /**\n * Subscribe a view function to updates from the presentation manager\n *\n * @param id - ID of the asset to observe\n * @param appObjects - Repository of app objects\n * @param setVM - Callback function that will receive view model updates\n */\n subscribe: (\n id: string,\n appObjects: AppObjectRepo,\n setVM: (vm: AssetFileVM) => void\n ) => {\n if (!id) {\n return;\n }\n const pm = AssetFilePM.getByID(id, appObjects);\n if (!pm) {\n appObjects.submitError(\"assetFileAdapter\", \"Unable to find AssetFilePM\");\n return;\n }\n pm.addView(setVM);\n },\n\n /**\n * Unsubscribe a view function from updates\n *\n * @param id - ID of the asset to stop observing\n * @param appObjects - Repository of app objects\n * @param setVM - Callback function to remove from updates\n */\n unsubscribe: (\n id: string,\n appObjects: AppObjectRepo,\n setVM: (vm: AssetFileVM) => void\n ) => {\n if (!id) {\n return;\n }\n const pm = AssetFilePM.getByID(id, appObjects);\n if (!pm) {\n appObjects.submitError(\"assetFileAdapter\", \"Unable to find AssetFilePM\");\n return;\n }\n pm.removeView(setVM);\n }\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiveAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/archiveAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,oCAYC;AA1BD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,OAAgB,EAChB,UAAyB;IAEzB,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAC1E,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"archiveAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/archiveAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,oCAYC;AA1BD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,OAAgB,EAChB,UAAyB;IAEzB,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAC1E,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC","sourcesContent":["/**\n * archiveAsset.ts\n *\n * This controller function handles archiving and unarchiving asset operations.\n * It provides a simple interface for managing asset visibility without permanently\n * deleting them from the system.\n *\n * Key Concepts:\n * - Archive operations are reversible soft-deletion mechanisms\n * - Archived assets are hidden from normal views but remain in the system\n * - Uses the ArchiveAssetUC to perform the actual business logic\n * - Provides error handling and validation for missing dependencies\n *\n * Usage Patterns:\n * - Called from UI components when users archive/unarchive assets\n * - Used by bulk operations for managing multiple assets\n * - Integrated with asset management workflows for organizational purposes\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { ArchiveAssetUC } from \"../UCs/ArchiveAssetUC\";\n\n/**\n * Archives or unarchives an asset, making it hidden or visible in asset lists.\n *\n * This function provides a controller-level interface for asset archival operations,\n * abstracting the underlying use case logic and providing consistent error handling.\n *\n * @param assetID - The unique identifier of the asset to archive/unarchive\n * @param archive - True to archive the asset (hide it), false to unarchive (show it)\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns Promise that resolves when the operation completes successfully\n * @throws Promise rejection if the ArchiveAssetUC component cannot be found\n */\nexport function archiveAsset(\n assetID: string,\n archive: boolean,\n appObjects: AppObjectRepo\n): Promise<void> {\n const uc = ArchiveAssetUC.get(assetID, appObjects);\n if (!uc) {\n appObjects.submitWarning(\"archiveAsset\", \"Unable to find ArchiveAssetUC\");\n return Promise.reject();\n }\n\n return uc.setArchived(archive);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/deleteAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,kCAQC;AAtBD,wDAAqD;AAErD;;;;;;;;;;;GAWG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,UAAyB;IACpE,MAAM,EAAE,GAAG,6BAAa,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,EAAE,CAAC,iBAAiB,EAAE,CAAC;AACzB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"deleteAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/deleteAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,kCAQC;AAtBD,wDAAqD;AAErD;;;;;;;;;;;GAWG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,UAAyB;IACpE,MAAM,EAAE,GAAG,6BAAa,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,EAAE,CAAC,iBAAiB,EAAE,CAAC;AACzB,CAAC","sourcesContent":["/**\n * deleteAsset.ts\n *\n * This controller function handles permanent asset deletion operations with user confirmation.\n * It provides a safe interface for removing assets from the system completely, including\n * built-in confirmation dialogs to prevent accidental data loss.\n *\n * Key Concepts:\n * - Permanent deletion removes assets completely from the system\n * - Includes confirmation prompts to prevent accidental deletions\n * - Uses DeleteAssetUC to handle the business logic and user interactions\n * - Provides error handling for missing dependencies\n *\n * Usage Patterns:\n * - Called from UI components when users request asset deletion\n * - Used in asset management workflows for cleanup operations\n * - Integrated with confirmation dialogs for user safety\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { DeleteAssetUC } from \"../UCs/DeleteAssetUC\";\n\n/**\n * Initiates the deletion process for an asset with user confirmation.\n *\n * This function provides a controller-level interface for asset deletion operations.\n * It automatically handles user confirmation prompts through the underlying use case\n * to ensure users don't accidentally delete important assets.\n *\n * @param assetID - The unique identifier of the asset to delete\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns void - The function initiates the deletion process but doesn't return a promise\n * as the confirmation dialog makes the operation inherently asynchronous\n */\nexport function deleteAsset(assetID: string, appObjects: AppObjectRepo) {\n const uc = DeleteAssetUC.get(assetID, appObjects);\n if (!uc) {\n appObjects.submitWarning(\"deleteAsset\", \"Unable to find DeleteAssetUC\");\n return;\n }\n\n uc.deleteWithConfirm();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadAssetFile.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/downloadAssetFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,8CAWC;AAzBD,oEAAiE;AAEjE;;;;;;;;;;;GAWG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,UAAyB;IAC1E,MAAM,EAAE,GAAG,yCAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,aAAa,EACb,oCAAoC,CACrC,CAAC;QACF,OAAO;IACT,CAAC;IAED,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"downloadAssetFile.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/downloadAssetFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,8CAWC;AAzBD,oEAAiE;AAEjE;;;;;;;;;;;GAWG;AACH,SAAgB,iBAAiB,CAAC,OAAe,EAAE,UAAyB;IAC1E,MAAM,EAAE,GAAG,yCAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,aAAa,EACb,oCAAoC,CACrC,CAAC;QACF,OAAO;IACT,CAAC;IAED,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChB,CAAC","sourcesContent":["/**\n * downloadAssetFile.ts\n *\n * This controller function handles asset file download operations, triggering\n * browser downloads of asset files to the user's local system.\n *\n * Key Concepts:\n * - Initiates browser download of asset files to user's local storage\n * - Uses DownloadAssetFileUC to handle the underlying download logic\n * - Provides error handling for missing components\n * - Works with both local and remote asset files\n *\n * Usage Patterns:\n * - Called from UI components when users click download buttons\n * - Used in asset management workflows for file retrieval\n * - Integrated with asset viewers for quick file access\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { DownloadAssetFileUC } from \"../UCs/DownloadAssetFileUC\";\n\n/**\n * Initiates a download of the asset's file to the user's local system.\n *\n * This function provides a controller-level interface for asset file downloads.\n * It triggers the browser's download mechanism to save the asset file locally,\n * handling both cached and remote file sources automatically.\n *\n * @param assetID - The unique identifier of the asset whose file should be downloaded\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns void - The function initiates the download but doesn't return a promise\n * as the download operation is handled by the browser\n */\nexport function downloadAssetFile(assetID: string, appObjects: AppObjectRepo) {\n const uc = DownloadAssetFileUC.get(assetID, appObjects);\n if (!uc) {\n appObjects.submitWarning(\n \"deleteAsset\",\n \"Unable to find DownloadAssetFileUC\"\n );\n return;\n }\n\n uc.download();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editAppAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/editAppAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,oCAQC;AAtBD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,OAAe,EAAE,UAAyB;IACrE,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"editAppAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/editAppAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,oCAQC;AAtBD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,OAAe,EAAE,UAAyB;IACrE,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC","sourcesContent":["/**\n * editAppAsset.ts\n *\n * This controller function initiates the asset editing workflow, transitioning\n * the application into editing mode for a specific asset.\n *\n * Key Concepts:\n * - Initiates asset editing workflows and UI state transitions\n * - Uses EditAppAssetUC to handle editing state management\n * - Provides error handling for missing components\n * - Coordinates with asset editing UI components\n *\n * Usage Patterns:\n * - Called from UI components when users click edit buttons\n * - Used in asset management workflows for content modification\n * - Integrated with asset editing dialogs and forms\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { EditAppAssetUC } from \"../UCs/EditAppAssetUC\";\n\n/**\n * Initiates the editing workflow for a specific asset.\n *\n * This function provides a controller-level interface for starting asset editing operations.\n * It transitions the application into editing mode for the specified asset, typically\n * opening editing dialogs or forms where users can modify asset properties.\n *\n * @param assetID - The unique identifier of the asset to edit\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns void - The function initiates the editing workflow but doesn't return a promise\n * as the editing process is managed through UI state changes\n */\nexport function editAppAsset(assetID: string, appObjects: AppObjectRepo) {\n const uc = EditAppAssetUC.get(appObjects);\n if (!uc) {\n appObjects.submitWarning(\"editAppAsset\", \"Unable to find EditAppAssetUC\");\n return;\n }\n\n uc.editAsset(assetID);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchAssetFile.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/fetchAssetFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,wCAWC;AAzBD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,UAAyB;IAEzB,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"fetchAssetFile.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/fetchAssetFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,wCAWC;AAzBD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,UAAyB;IAEzB,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC","sourcesContent":["/**\n * fetchAssetFile.ts\n *\n * This controller function retrieves an asset file as a File object,\n * handling caching and error management for file access operations.\n *\n * Key Concepts:\n * - Retrieves asset files as File objects for download or processing\n * - Uses GetAssetFileUC to handle caching and file retrieval logic\n * - Provides error handling for missing components\n * - Coordinates with asset file management workflows\n *\n * Usage Patterns:\n * - Called from UI components when users need asset file access\n * - Used in asset management workflows for file processing\n * - Integrated with download and preview functionality\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { GetAssetFileUC } from \"../UCs/GetAssetFileUC\";\n\n/**\n * Retrieves an asset file as a File object.\n *\n * This function provides a controller-level interface for asset file retrieval.\n * It handles the complete file access workflow including caching optimization,\n * error handling, and returns a File object ready for use in web applications.\n *\n * @param assetID - The unique identifier of the asset whose file should be retrieved\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns Promise<File> - A promise that resolves to the File object for the asset,\n * or undefined if the operation cannot be completed\n */\nexport function fetchAssetFile(\n assetID: string,\n appObjects: AppObjectRepo\n): Promise<File> | undefined {\n const uc = GetAssetFileUC.get(appObjects);\n if (!uc) {\n appObjects.submitWarning(\"fetchAssetFile\", \"Unable to find GetAssetFileUC\");\n return;\n }\n\n return uc.getAssetFile(assetID);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAppAssets.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/getAppAssets.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,oCAQC;AAtBD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,KAAa,EAAE,UAAyB;IACnE,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"getAppAssets.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/getAppAssets.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAiBH,oCAQC;AAtBD,0DAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,KAAa,EAAE,UAAyB;IACnE,MAAM,EAAE,GAAG,+BAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC","sourcesContent":["/**\n * getAppAssets.ts\n *\n * This controller function initiates the retrieval of assets associated with a specific application.\n * It triggers the loading and display of all assets that belong to or are used by a particular app.\n *\n * Key Concepts:\n * - Retrieves and loads assets associated with a specific application\n * - Uses GetAppAssetsUC to handle the asset fetching and filtering logic\n * - Provides error handling for missing components\n * - Updates asset collections and UI displays automatically\n *\n * Usage Patterns:\n * - Called when loading an application's asset workspace\n * - Used in asset management interfaces to filter by application\n * - Integrated with application switching workflows\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { GetAppAssetsUC } from \"../UCs/GetAppAssetsUC\";\n\n/**\n * Retrieves and loads all assets associated with a specific application.\n *\n * This function provides a controller-level interface for fetching application-specific assets.\n * It triggers the loading of all assets that belong to or are used by the specified application,\n * updating asset collections and UI displays accordingly.\n *\n * @param appID - The unique identifier of the application whose assets should be retrieved\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns void - The function initiates the asset retrieval but doesn't return a promise\n * as the loading process is managed through UI state updates\n */\nexport function getAppAssets(appID: string, appObjects: AppObjectRepo) {\n const uc = GetAppAssetsUC.get(appObjects);\n if (!uc) {\n appObjects.submitWarning(\"getAppAssets\", \"Unable to find GetAppAssetsUC\");\n return;\n }\n\n uc.getAppAssets(appID);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,gDAA8B;AAC9B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,iDAA+B;AAC/B,gDAA8B;AAC9B,6DAA2C;AAC3C,uDAAqC;AACrC,oDAAkC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,gDAA8B;AAC9B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,iDAA+B;AAC/B,gDAA8B;AAC9B,6DAA2C;AAC3C,uDAAqC;AACrC,oDAAkC","sourcesContent":["/**\n * Assets Controllers Index\n *\n * This module exports all controller functions for the Assets feature.\n * Controllers provide simple, stateless functions that serve as entry points\n * for asset-related operations from UI components and external systems.\n *\n * Key Concepts:\n * - Controllers act as the interface layer between UI components and business logic\n * - Each controller function handles a specific asset operation\n * - Controllers delegate to Use Cases (UCs) for actual business logic implementation\n * - Error handling and validation are performed at the controller level\n *\n * Available Operations:\n * - Asset lifecycle: create, edit, delete, archive\n * - File management: upload, download, update\n * - Collection management: get app assets, toggle archived visibility\n * - Metadata management: update asset information\n */\n\nexport * from \"./archiveAsset\";\nexport * from \"./deleteAsset\";\nexport * from \"./downloadAssetFile\";\nexport * from \"./editAppAsset\";\nexport * from \"./fetchAssetFile\";\nexport * from \"./getAppAssets\";\nexport * from \"./newAppAsset\";\nexport * from \"./toggleShowArchivedAssets\";\nexport * from \"./updateAppAssetMeta\";\nexport * from \"./updateAssetFile\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"newAppAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/newAppAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,kCAWC;AAzBD,wDAAqE;AAErE;;;;;;;;;;;GAWG;AACH,SAAgB,WAAW,CACzB,IAAoB,EACpB,UAAyB;IAEzB,MAAM,EAAE,GAAG,6BAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"newAppAsset.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/newAppAsset.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,kCAWC;AAzBD,wDAAqE;AAErE;;;;;;;;;;;GAWG;AACH,SAAgB,WAAW,CACzB,IAAoB,EACpB,UAAyB;IAEzB,MAAM,EAAE,GAAG,6BAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC","sourcesContent":["/**\n * newAppAsset.ts\n *\n * This controller function handles the creation of new assets within the context\n * of a specific application. It provides a streamlined interface for adding\n * new assets to an application's asset collection.\n *\n * Key Concepts:\n * - Creates new assets and associates them with specific applications\n * - Uses NewAppAssetUC to handle the creation logic and API interactions\n * - Provides error handling for missing components\n * - Returns promises for async operation handling\n *\n * Usage Patterns:\n * - Called from UI components when users upload new assets\n * - Used in asset creation workflows and dialogs\n * - Integrated with file upload mechanisms and asset forms\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { NewAppAssetDTO, NewAppAssetUC } from \"../UCs/NewAppAssetUC\";\n\n/**\n * Creates a new asset associated with a specific application.\n *\n * This function provides a controller-level interface for creating new application assets.\n * It handles the complete asset creation workflow, including file upload, metadata storage,\n * and integration with the application's asset collection.\n *\n * @param data - Data transfer object containing all necessary information for asset creation\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns Promise that resolves when the asset is successfully created\n * @throws Promise rejection if the NewAppAssetUC component cannot be found\n */\nexport function newAppAsset(\n data: NewAppAssetDTO,\n appObjects: AppObjectRepo\n): Promise<void> {\n const uc = NewAppAssetUC.get(appObjects);\n if (!uc) {\n appObjects.submitWarning(\"newAppAsset\", \"Unable to find NewAppAssetUC\");\n return Promise.reject();\n }\n\n return uc.create(data);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggleShowArchivedAssets.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/toggleShowArchivedAssets.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAeH,4DAWC;AAvBD,iEAA8D;AAE9D;;;;;;;;;GASG;AACH,SAAgB,wBAAwB,CAAC,UAAyB;IAChE,MAAM,SAAS,GAAG,iCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAElD,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,YAAY,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,aAAa,CACtB,0BAA0B,EAC1B,gCAAgC,CACjC,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"toggleShowArchivedAssets.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/toggleShowArchivedAssets.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAeH,4DAWC;AAvBD,iEAA8D;AAE9D;;;;;;;;;GASG;AACH,SAAgB,wBAAwB,CAAC,UAAyB;IAChE,MAAM,SAAS,GAAG,iCAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAElD,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,YAAY,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,aAAa,CACtB,0BAA0B,EAC1B,gCAAgC,CACjC,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["/**\n * toggleShowArchivedAssets.ts\n *\n * This controller function toggles the visibility of archived assets in the asset list.\n * It provides a simple interface for users to show or hide archived assets from\n * their asset management workspace.\n *\n * Key Concepts:\n * - Toggles the display state of archived assets in asset lists\n * - Directly modifies the AppAssetsEntity's showArchived property\n * - Provides error handling for missing components\n * - Triggers immediate UI updates through entity change notifications\n *\n * Usage Patterns:\n * - Called from UI components with toggle buttons or checkboxes\n * - Used in asset management interfaces for filtering options\n * - Integrated with asset list displays and filter controls\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { AppAssetsEntity } from \"../Entities/AppAssetsEntity\";\n\n/**\n * Toggles the visibility of archived assets in the asset management interface.\n *\n * This function provides a controller-level interface for toggling archived asset visibility.\n * It flips the current state of the showArchived property, which immediately affects\n * what assets are displayed in asset lists and management interfaces.\n *\n * @param appObjects - Repository for accessing the AppAssetsEntity that controls visibility\n * @returns void - The function operates synchronously and triggers immediate UI updates\n */\nexport function toggleShowArchivedAssets(appObjects: AppObjectRepo) {\n const appAssets = AppAssetsEntity.get(appObjects);\n\n if (appAssets) {\n appAssets.showArchived = !appAssets.showArchived;\n } else {\n appObjects.submitWarning(\n \"toggleShowArchivedAssets\",\n \"Unable to find AppAssetsEntity\"\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateAppAssetMeta.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/updateAppAssetMeta.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAoBH,gDAeC;AAhCD,sEAGqC;AAErC;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAChC,IAA2B,EAC3B,OAAe,EACf,UAAyB;IAEzB,MAAM,EAAE,GAAG,2CAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,oBAAoB,EACpB,kCAAkC,CACnC,CAAC;QACF,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"updateAppAssetMeta.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/updateAppAssetMeta.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAoBH,gDAeC;AAhCD,sEAGqC;AAErC;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAChC,IAA2B,EAC3B,OAAe,EACf,UAAyB;IAEzB,MAAM,EAAE,GAAG,2CAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,oBAAoB,EACpB,kCAAkC,CACnC,CAAC;QACF,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC","sourcesContent":["/**\n * updateAppAssetMeta.ts\n *\n * This controller function handles updating asset metadata (name, description, etc.)\n * for existing assets. It provides a streamlined interface for modifying asset\n * information without affecting the actual asset files.\n *\n * Key Concepts:\n * - Updates asset metadata without modifying the actual file content\n * - Uses UpdateAppAssetMetaUC to handle validation and persistence\n * - Provides error handling for missing components\n * - Supports partial updates of asset information\n *\n * Usage Patterns:\n * - Called from asset editing forms and dialogs\n * - Used in asset management workflows for information updates\n * - Integrated with asset detail views and editing interfaces\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport {\n UpdateAppAssetMetaUC,\n UpdateAppAssetMetaDTO\n} from \"../UCs/UpdateAppAssetMetaUC\";\n\n/**\n * Updates the metadata of an existing asset.\n *\n * This function provides a controller-level interface for updating asset metadata\n * such as name, description, and other properties. It handles validation and\n * persistence of the changes through the underlying use case.\n *\n * @param data - Data transfer object containing the metadata fields to update\n * @param assetID - The unique identifier of the asset to update\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns void - The function operates synchronously and triggers immediate updates\n */\nexport function updateAppAssetMeta(\n data: UpdateAppAssetMetaDTO,\n assetID: string,\n appObjects: AppObjectRepo\n) {\n const uc = UpdateAppAssetMetaUC.get(assetID, appObjects);\n if (!uc) {\n appObjects.submitWarning(\n \"updateAppAssetMeta\",\n \"Unable to find UpdateAssetMetaUC\"\n );\n return;\n }\n\n uc.updateMeta(data);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateAssetFile.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/updateAssetFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,0CAeC;AA7BD,gEAA6D;AAE7D;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAC7B,IAAU,EACV,OAAe,EACf,UAAyB;IAEzB,MAAM,EAAE,GAAG,qCAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,iBAAiB,EACjB,kCAAkC,CACnC,CAAC;QACF,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC","sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"updateAssetFile.js","sourceRoot":"","sources":["../../../../src/Assets/Controllers/updateAssetFile.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAiBH,0CAeC;AA7BD,gEAA6D;AAE7D;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAC7B,IAAU,EACV,OAAe,EACf,UAAyB;IAEzB,MAAM,EAAE,GAAG,qCAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CACtB,iBAAiB,EACjB,kCAAkC,CACnC,CAAC;QACF,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC","sourcesContent":["/**\n * updateAssetFile.ts\n *\n * This controller function handles updating the actual file content of existing assets.\n * It provides a streamlined interface for replacing asset files while preserving\n * the asset's metadata and relationships.\n *\n * Key Concepts:\n * - Updates the actual file content of existing assets\n * - Preserves asset metadata and relationships during file replacement\n * - Uses UpdateAssetFileUC to handle file upload and persistence\n * - Provides error handling for missing components\n *\n * Usage Patterns:\n * - Called from file upload interfaces when users replace asset files\n * - Used in asset management workflows for content updates\n * - Integrated with drag-and-drop file replacement interfaces\n */\n\nimport { AppObjectRepo } from \"@vived/core\";\nimport { UpdateAssetFileUC } from \"../UCs/UpdateAssetFileUC\";\n\n/**\n * Updates the file content of an existing asset.\n *\n * This function provides a controller-level interface for replacing the file\n * associated with an existing asset. It handles the upload and storage of the\n * new file while preserving all asset metadata and relationships.\n *\n * @param file - The new file object to replace the existing asset file\n * @param assetID - The unique identifier of the asset whose file should be updated\n * @param appObjects - Repository for accessing asset-related app objects and components\n * @returns void - The function initiates the file update process asynchronously\n */\nexport function updateAssetFile(\n file: File,\n assetID: string,\n appObjects: AppObjectRepo\n) {\n const uc = UpdateAssetFileUC.get(assetID, appObjects);\n if (!uc) {\n appObjects.submitWarning(\n \"updateAssetFile\",\n \"Unable to find UpdateAssetFileUC\"\n );\n return;\n }\n\n uc.updateFile(file);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppAssetsEntity.js","sourceRoot":"","sources":["../../../../src/Assets/Entities/AppAssetsEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n getSingletonComponent,\r\n MemoizedBoolean\r\n} from \"@vived/core\";\r\nimport { AssetEntity } from \"./AssetEntity\";\r\n\r\n/**\r\n * AppAssetsEntity manages the collection of assets associated with a specific VIVED application.\r\n *\r\n * This singleton entity handles:\r\n * 1. Asset collection management (add, remove, query operations)\r\n * 2. Editing state management with automatic observer registration\r\n * 3. Archive filtering functionality for showing/hiding archived assets\r\n * 4. Global asset reference tracking for applications\r\n *\r\n * Key Concepts:\r\n * - Singleton pattern ensures only one instance exists per application\r\n * - Observer pattern integration for automatic UI updates when editing state changes\r\n * - Smart observer management prevents memory leaks by properly registering/unregistering\r\n * - Archive filtering support for improved user experience\r\n *\r\n * Usage Patterns:\r\n * ```typescript\r\n * // Get the global app assets entity\r\n * const appAssets = AppAssetsEntity.get(appObjects);\r\n * if (appAssets) {\r\n * // Manage asset collection\r\n * appAssets.add(\"asset123\");\r\n * const allAssets = appAssets.getAll();\r\n * const hasAsset = appAssets.has(\"asset123\");\r\n * appAssets.remove(\"asset123\");\r\n *\r\n * // Manage editing state\r\n * const assetEntity = AssetEntity.get(someAppObject);\r\n * appAssets.editingAsset = assetEntity; // Automatically registers observers\r\n *\r\n * // Control archive visibility\r\n * appAssets.showArchived = true; // Show archived assets\r\n * appAssets.showArchived = false; // Hide archived assets\r\n * }\r\n * ```\r\n *\r\n * Integration Points:\r\n * - Works with AssetRepo for asset lifecycle management\r\n * - Integrates with AssetEntity for individual asset operations\r\n * - Used by GetAppAssetsUC for bulk asset operations\r\n * - Supports UI components through observer pattern notifications\r\n */\r\nexport abstract class AppAssetsEntity extends AppObjectEntity {\r\n /** Static type identifier for component registration */\r\n static type = \"AppAssetsEntity\";\r\n\r\n /**\r\n * Retrieves all asset IDs in this application's collection\r\n * @returns Array of asset IDs, returned as a copy to prevent external modification\r\n */\r\n abstract getAll(): string[];\r\n\r\n /**\r\n * Adds an asset ID to the collection if not already present\r\n * @param assetID - The unique identifier of the asset to add\r\n * Side effects: Triggers change notifications for UI updates\r\n */\r\n abstract add(assetID: string): void;\r\n\r\n /**\r\n * Checks if an asset ID exists in the collection\r\n * @param assetID - The unique identifier to check for\r\n * @returns true if the asset is in the collection, false otherwise\r\n */\r\n abstract has(assetID: string): boolean;\r\n\r\n /**\r\n * Removes an asset ID from the collection if present\r\n * @param assetID - The unique identifier of the asset to remove\r\n * Side effects: Triggers change notifications for UI updates\r\n */\r\n abstract remove(assetID: string): void;\r\n\r\n /**\r\n * The asset currently being edited, if any\r\n * When set, automatically manages observer registration for change notifications\r\n * Setting to undefined clears the editing state\r\n */\r\n abstract get editingAsset(): AssetEntity | undefined;\r\n abstract set editingAsset(val: AssetEntity | undefined);\r\n\r\n /**\r\n * Controls whether archived assets are shown in UI components\r\n * When true, archived assets are included in queries and displays\r\n * When false, archived assets are filtered out for better UX\r\n */\r\n abstract get showArchived(): boolean;\r\n abstract set showArchived(show: boolean);\r\n\r\n /**\r\n * Retrieves the singleton AppAssetsEntity from the host application objects\r\n * @param hostAppObjects - The application object repository to search\r\n * @returns AppAssetsEntity instance or undefined if not found\r\n * Uses getSingletonComponent to ensure only one instance exists\r\n */\r\n static get(hostAppObjects: AppObjectRepo): AppAssetsEntity | undefined {\r\n return getSingletonComponent(AppAssetsEntity.type, hostAppObjects);\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new AppAssetsEntity instance\r\n * @param appObj - The AppObject that will host this AppAssetsEntity\r\n * @returns A new AppAssetsEntity implementation instance\r\n */\r\nexport function makeAppAssets(appObj: AppObject): AppAssetsEntity {\r\n return new AppAssetsImp(appObj);\r\n}\r\n\r\n/**\r\n * Private implementation of AppAssetsEntity that handles all concrete functionality.\r\n *\r\n * Key Implementation Details:\r\n * - Maintains an array of asset IDs for the application\r\n * - Smart observer management for editing asset changes\r\n * - Memoized archive visibility flag with change notifications\r\n * - Automatic singleton registration ensures global accessibility\r\n *\r\n * Observer Management Pattern:\r\n * The editing asset property automatically manages observer registration to ensure\r\n * that UI components are notified when the currently edited asset changes.\r\n * When a new asset is set for editing, observers from the previous asset are\r\n * properly removed to prevent memory leaks and duplicate notifications.\r\n */\r\nclass AppAssetsImp extends AppAssetsEntity {\r\n /** Internal storage for the collection of asset IDs */\r\n private appAssets: string[] = [];\r\n\r\n /** Internal reference to the currently editing asset */\r\n private _editingAsset: AssetEntity | undefined;\r\n\r\n /**\r\n * Returns the currently editing asset\r\n * @returns The AssetEntity being edited, or undefined if none\r\n */\r\n get editingAsset(): AssetEntity | undefined {\r\n return this._editingAsset;\r\n }\r\n\r\n /**\r\n * Sets the currently editing asset with smart observer management\r\n * Automatically handles observer registration/deregistration to prevent memory leaks\r\n * @param val - The AssetEntity to edit, or undefined to clear editing state\r\n * Side effects:\r\n * - Removes observers from previous editing asset\r\n * - Adds observers to new editing asset\r\n * - Triggers change notifications for UI updates\r\n */\r\n set editingAsset(val: AssetEntity | undefined) {\r\n if (val?.id === this._editingAsset?.id) return;\r\n\r\n if (this._editingAsset) {\r\n this._editingAsset.removeChangeObserver(this.notifyOnChange);\r\n }\r\n\r\n this._editingAsset = val;\r\n\r\n if (this._editingAsset) {\r\n this._editingAsset.addChangeObserver(this.notifyOnChange);\r\n }\r\n\r\n this.notifyOnChange();\r\n }\r\n\r\n /**\r\n * Retrieves all asset IDs in the collection\r\n * Returns a copy to prevent external modification of internal state\r\n * @returns Array of asset IDs\r\n */\r\n getAll = (): string[] => {\r\n return [...this.appAssets];\r\n };\r\n\r\n /**\r\n * Adds an asset ID to the collection if not already present\r\n * Prevents duplicate entries and maintains collection integrity\r\n * @param assetID - The asset ID to add\r\n * Side effects: Triggers change notifications if asset was added\r\n */\r\n add = (assetID: string): void => {\r\n if (this.appAssets.includes(assetID)) return;\r\n\r\n this.appAssets.push(assetID);\r\n this.notifyOnChange();\r\n };\r\n\r\n /**\r\n * Checks if an asset ID exists in the collection\r\n * @param assetID - The asset ID to check for\r\n * @returns true if asset exists in collection, false otherwise\r\n */\r\n has(assetID: string): boolean {\r\n return this.appAssets.includes(assetID);\r\n }\r\n\r\n /**\r\n * Removes an asset ID from the collection if present\r\n * @param assetID - The asset ID to remove\r\n * Side effects: Triggers change notifications if asset was removed\r\n */\r\n remove(assetID: string): void {\r\n const index = this.appAssets.indexOf(assetID, 0);\r\n if (index > -1) {\r\n this.appAssets.splice(index, 1);\r\n this.notifyOnChange();\r\n }\r\n }\r\n\r\n /**\r\n * Memoized archive visibility flag with change notification\r\n * Controls whether archived assets should be shown in UI components\r\n * Defaults to false (archived assets hidden)\r\n */\r\n private memoizedShowArchived = new MemoizedBoolean(\r\n false,\r\n this.notifyOnChange\r\n );\r\n\r\n /**\r\n * Returns the current archive visibility setting\r\n * @returns true if archived assets should be shown, false to hide them\r\n */\r\n get showArchived(): boolean {\r\n return this.memoizedShowArchived.val;\r\n }\r\n\r\n /**\r\n * Sets the archive visibility with change notification\r\n * @param show - true to show archived assets, false to hide them\r\n * Side effects: Triggers change notifications for UI updates\r\n */\r\n set showArchived(show: boolean) {\r\n this.memoizedShowArchived.val = show;\r\n }\r\n\r\n /**\r\n * Initializes the AppAssetsEntity with singleton registration\r\n * @param appObj - The AppObject that will host this entity\r\n * Side effects: Registers this instance as a singleton for global access\r\n */\r\n constructor(appObj: AppObject) {\r\n super(appObj, AppAssetsEntity.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AppAssetsEntity.js","sourceRoot":"","sources":["../../../../src/Assets/Entities/AppAssetsEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n MemoizedBoolean\n} from \"@vived/core\";\nimport { AssetEntity } from \"./AssetEntity\";\n\n/**\n * AppAssetsEntity manages the collection of assets associated with a specific VIVED application.\n *\n * This singleton entity handles:\n * 1. Asset collection management (add, remove, query operations)\n * 2. Editing state management with automatic observer registration\n * 3. Archive filtering functionality for showing/hiding archived assets\n * 4. Global asset reference tracking for applications\n *\n * Key Concepts:\n * - Singleton pattern ensures only one instance exists per application\n * - Observer pattern integration for automatic UI updates when editing state changes\n * - Smart observer management prevents memory leaks by properly registering/unregistering\n * - Archive filtering support for improved user experience\n *\n * Usage Patterns:\n * ```typescript\n * // Get the global app assets entity\n * const appAssets = AppAssetsEntity.get(appObjects);\n * if (appAssets) {\n * // Manage asset collection\n * appAssets.add(\"asset123\");\n * const allAssets = appAssets.getAll();\n * const hasAsset = appAssets.has(\"asset123\");\n * appAssets.remove(\"asset123\");\n *\n * // Manage editing state\n * const assetEntity = AssetEntity.get(someAppObject);\n * appAssets.editingAsset = assetEntity; // Automatically registers observers\n *\n * // Control archive visibility\n * appAssets.showArchived = true; // Show archived assets\n * appAssets.showArchived = false; // Hide archived assets\n * }\n * ```\n *\n * Integration Points:\n * - Works with AssetRepo for asset lifecycle management\n * - Integrates with AssetEntity for individual asset operations\n * - Used by GetAppAssetsUC for bulk asset operations\n * - Supports UI components through observer pattern notifications\n */\nexport abstract class AppAssetsEntity extends AppObjectEntity {\n /** Static type identifier for component registration */\n static type = \"AppAssetsEntity\";\n\n /**\n * Retrieves all asset IDs in this application's collection\n * @returns Array of asset IDs, returned as a copy to prevent external modification\n */\n abstract getAll(): string[];\n\n /**\n * Adds an asset ID to the collection if not already present\n * @param assetID - The unique identifier of the asset to add\n * Side effects: Triggers change notifications for UI updates\n */\n abstract add(assetID: string): void;\n\n /**\n * Checks if an asset ID exists in the collection\n * @param assetID - The unique identifier to check for\n * @returns true if the asset is in the collection, false otherwise\n */\n abstract has(assetID: string): boolean;\n\n /**\n * Removes an asset ID from the collection if present\n * @param assetID - The unique identifier of the asset to remove\n * Side effects: Triggers change notifications for UI updates\n */\n abstract remove(assetID: string): void;\n\n /**\n * The asset currently being edited, if any\n * When set, automatically manages observer registration for change notifications\n * Setting to undefined clears the editing state\n */\n abstract get editingAsset(): AssetEntity | undefined;\n abstract set editingAsset(val: AssetEntity | undefined);\n\n /**\n * Controls whether archived assets are shown in UI components\n * When true, archived assets are included in queries and displays\n * When false, archived assets are filtered out for better UX\n */\n abstract get showArchived(): boolean;\n abstract set showArchived(show: boolean);\n\n /**\n * Retrieves the singleton AppAssetsEntity from the host application objects\n * @param hostAppObjects - The application object repository to search\n * @returns AppAssetsEntity instance or undefined if not found\n * Uses getSingletonComponent to ensure only one instance exists\n */\n static get(hostAppObjects: AppObjectRepo): AppAssetsEntity | undefined {\n return getSingletonComponent(AppAssetsEntity.type, hostAppObjects);\n }\n}\n\n/**\n * Factory function to create a new AppAssetsEntity instance\n * @param appObj - The AppObject that will host this AppAssetsEntity\n * @returns A new AppAssetsEntity implementation instance\n */\nexport function makeAppAssets(appObj: AppObject): AppAssetsEntity {\n return new AppAssetsImp(appObj);\n}\n\n/**\n * Private implementation of AppAssetsEntity that handles all concrete functionality.\n *\n * Key Implementation Details:\n * - Maintains an array of asset IDs for the application\n * - Smart observer management for editing asset changes\n * - Memoized archive visibility flag with change notifications\n * - Automatic singleton registration ensures global accessibility\n *\n * Observer Management Pattern:\n * The editing asset property automatically manages observer registration to ensure\n * that UI components are notified when the currently edited asset changes.\n * When a new asset is set for editing, observers from the previous asset are\n * properly removed to prevent memory leaks and duplicate notifications.\n */\nclass AppAssetsImp extends AppAssetsEntity {\n /** Internal storage for the collection of asset IDs */\n private appAssets: string[] = [];\n\n /** Internal reference to the currently editing asset */\n private _editingAsset: AssetEntity | undefined;\n\n /**\n * Returns the currently editing asset\n * @returns The AssetEntity being edited, or undefined if none\n */\n get editingAsset(): AssetEntity | undefined {\n return this._editingAsset;\n }\n\n /**\n * Sets the currently editing asset with smart observer management\n * Automatically handles observer registration/deregistration to prevent memory leaks\n * @param val - The AssetEntity to edit, or undefined to clear editing state\n * Side effects:\n * - Removes observers from previous editing asset\n * - Adds observers to new editing asset\n * - Triggers change notifications for UI updates\n */\n set editingAsset(val: AssetEntity | undefined) {\n if (val?.id === this._editingAsset?.id) return;\n\n if (this._editingAsset) {\n this._editingAsset.removeChangeObserver(this.notifyOnChange);\n }\n\n this._editingAsset = val;\n\n if (this._editingAsset) {\n this._editingAsset.addChangeObserver(this.notifyOnChange);\n }\n\n this.notifyOnChange();\n }\n\n /**\n * Retrieves all asset IDs in the collection\n * Returns a copy to prevent external modification of internal state\n * @returns Array of asset IDs\n */\n getAll = (): string[] => {\n return [...this.appAssets];\n };\n\n /**\n * Adds an asset ID to the collection if not already present\n * Prevents duplicate entries and maintains collection integrity\n * @param assetID - The asset ID to add\n * Side effects: Triggers change notifications if asset was added\n */\n add = (assetID: string): void => {\n if (this.appAssets.includes(assetID)) return;\n\n this.appAssets.push(assetID);\n this.notifyOnChange();\n };\n\n /**\n * Checks if an asset ID exists in the collection\n * @param assetID - The asset ID to check for\n * @returns true if asset exists in collection, false otherwise\n */\n has(assetID: string): boolean {\n return this.appAssets.includes(assetID);\n }\n\n /**\n * Removes an asset ID from the collection if present\n * @param assetID - The asset ID to remove\n * Side effects: Triggers change notifications if asset was removed\n */\n remove(assetID: string): void {\n const index = this.appAssets.indexOf(assetID, 0);\n if (index > -1) {\n this.appAssets.splice(index, 1);\n this.notifyOnChange();\n }\n }\n\n /**\n * Memoized archive visibility flag with change notification\n * Controls whether archived assets should be shown in UI components\n * Defaults to false (archived assets hidden)\n */\n private memoizedShowArchived = new MemoizedBoolean(\n false,\n this.notifyOnChange\n );\n\n /**\n * Returns the current archive visibility setting\n * @returns true if archived assets should be shown, false to hide them\n */\n get showArchived(): boolean {\n return this.memoizedShowArchived.val;\n }\n\n /**\n * Sets the archive visibility with change notification\n * @param show - true to show archived assets, false to hide them\n * Side effects: Triggers change notifications for UI updates\n */\n set showArchived(show: boolean) {\n this.memoizedShowArchived.val = show;\n }\n\n /**\n * Initializes the AppAssetsEntity with singleton registration\n * @param appObj - The AppObject that will host this entity\n * Side effects: Registers this instance as a singleton for global access\n */\n constructor(appObj: AppObject) {\n super(appObj, AppAssetsEntity.type);\n this.appObjects.registerSingleton(this);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetEntity.js","sourceRoot":"","sources":["../../../../src/Assets/Entities/AssetEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n MemoizedBoolean,\r\n MemoizedString\r\n} from \"@vived/core\";\r\n\r\n/**\r\n * AssetEntity manages individual file-based resources in VIVED applications.\r\n *\r\n * This entity handles:\r\n * 1. Asset metadata (name, description, owner, archive status)\r\n * 2. File management (filename, fileURL, blob URL creation)\r\n * 3. Linked asset relationships for hierarchical asset structures\r\n * 4. Fetch state management (loading indicators, error handling)\r\n * 5. Observer pattern implementation for UI updates\r\n *\r\n * Key Concepts:\r\n * - Uses memoized properties for efficient change tracking and notifications\r\n * - Supports both file URLs (remote) and blob URLs (local) for flexible file access\r\n * - Maintains linked asset relationships to support complex asset hierarchies\r\n * - Implements observer pattern to notify UI components of changes\r\n *\r\n * Usage Patterns:\r\n * ```typescript\r\n * // Get an asset entity from an app object\r\n * const asset = AssetEntity.get(appObject);\r\n * if (asset) {\r\n * // Set asset metadata\r\n * asset.name = \"My Asset\";\r\n * asset.description = \"A sample asset\";\r\n *\r\n * // Handle file operations\r\n * asset.setFile(fileObject);\r\n * const blobURL = asset.blobURL; // Access local blob URL\r\n *\r\n * // Manage linked assets\r\n * asset.addLinkedAsset(\"texture\", \"texture123\");\r\n * const textures = asset.getLinkedAssetByType(\"texture\");\r\n *\r\n * // Monitor fetch state\r\n * if (asset.isFetchingFile) {\r\n * console.log(\"File is being downloaded...\");\r\n * }\r\n * if (asset.fetchError) {\r\n * console.error(\"Failed to fetch file:\", asset.fetchError.message);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Integration Points:\r\n * - Works with AssetRepo for asset lifecycle management\r\n * - Integrates with AppAssetsEntity for collection management\r\n * - Used by GetAssetBlobURLUC for file retrieval operations\r\n * - Supports caching mechanisms for optimized file access\r\n */\r\nexport abstract class AssetEntity extends AppObjectEntity {\r\n /** Static type identifier for component registration */\r\n static type = \"AssetEntity\";\r\n\r\n /**\r\n * Unique identifier for this asset, derived from the underlying AppObject\r\n * @readonly\r\n */\r\n abstract readonly id: string;\r\n\r\n /**\r\n * Display name of the asset\r\n * Triggers change notifications when modified for UI updates\r\n */\r\n abstract get name(): string;\r\n abstract set name(name: string);\r\n\r\n /**\r\n * Detailed description of the asset's purpose or content\r\n * Triggers change notifications when modified for UI updates\r\n */\r\n abstract get description(): string;\r\n abstract set description(description: string);\r\n\r\n /**\r\n * ID of the user or entity that owns this asset\r\n * Used for permission and filtering operations\r\n */\r\n abstract get owner(): string;\r\n abstract set owner(val: string);\r\n\r\n /**\r\n * Whether this asset is archived (hidden from normal views)\r\n * Used for soft deletion and filtering capabilities\r\n */\r\n abstract get archived(): boolean;\r\n abstract set archived(archived: boolean);\r\n\r\n /**\r\n * Original filename of the uploaded file\r\n * Preserved for download operations and display purposes\r\n */\r\n abstract get filename(): string;\r\n abstract set filename(filename: string);\r\n\r\n /**\r\n * Remote URL where the file can be accessed\r\n * Used for fetching the actual file content from external storage\r\n */\r\n abstract get fileURL(): string;\r\n abstract set fileURL(fileURL: string);\r\n\r\n /**\r\n * Sets the local file object and creates a blob URL for immediate access\r\n * @param file - The file object to associate with this asset\r\n * Side effects: Creates blob URL, triggers change notifications\r\n */\r\n abstract setFile(file: File): void;\r\n\r\n /**\r\n * The local file object if one has been set\r\n * @returns File object or undefined if no file has been loaded locally\r\n */\r\n abstract get file(): File | undefined;\r\n\r\n /**\r\n * Local blob URL for immediate file access without network requests\r\n * @returns Blob URL string or undefined if no local file is available\r\n */\r\n abstract get blobURL(): string | undefined;\r\n\r\n /**\r\n * Indicates whether the file has been successfully fetched and stored locally\r\n * @returns true if file is available locally, false otherwise\r\n */\r\n abstract get fileHasBeenFetched(): boolean;\r\n\r\n /**\r\n * Array of linked assets that have relationships with this asset\r\n * Supports hierarchical asset structures (e.g., models with textures)\r\n * @returns Array of linked asset references with type and ID\r\n */\r\n abstract get linkedAssets(): { type: string; id: string }[];\r\n\r\n /**\r\n * Adds a linked asset relationship\r\n * @param type - The type/category of the linked asset (e.g., \"texture\", \"sound\")\r\n * @param id - The unique ID of the linked asset\r\n * Side effects: Triggers change notifications if asset is not already linked\r\n */\r\n abstract addLinkedAsset(type: string, id: string): void;\r\n\r\n /**\r\n * Removes a linked asset relationship\r\n * @param type - The type/category of the linked asset to remove\r\n * @param id - The unique ID of the linked asset to remove\r\n * Side effects: Triggers change notifications if asset was previously linked\r\n */\r\n abstract removeLinkedAsset(type: string, id: string): void;\r\n\r\n /**\r\n * Retrieves all linked asset IDs of a specific type\r\n * @param type - The type/category to filter by (e.g., \"texture\", \"sound\")\r\n * @returns Array of asset IDs that match the specified type\r\n */\r\n abstract getLinkedAssetByType(type: string): string[];\r\n\r\n /**\r\n * Indicates whether a file fetch operation is currently in progress\r\n * Used for showing loading states in UI components\r\n */\r\n abstract get isFetchingFile(): boolean;\r\n abstract set isFetchingFile(isFetchingFile: boolean);\r\n\r\n /**\r\n * Any error that occurred during the most recent fetch operation\r\n * Used for error handling and user feedback in UI components\r\n */\r\n abstract get fetchError(): Error | undefined;\r\n abstract set fetchError(fetchError: Error | undefined);\r\n\r\n /**\r\n * Retrieves an AssetEntity component from an AppObject\r\n * @param appObject - The AppObject to search for the AssetEntity component\r\n * @returns AssetEntity instance or undefined if not found\r\n * Logs warning if component is not found to aid in debugging\r\n */\r\n static get(appObject: AppObject): AssetEntity | undefined {\r\n const asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\r\n if (!asset) {\r\n appObject.appObjectRepo.submitWarning(\r\n \"AssetEntity.get\",\r\n \"Unable to find AssetEntity on app object \" + appObject.id\r\n );\r\n }\r\n return asset;\r\n }\r\n}\r\n\r\n/**\r\n * Factory function to create a new AssetEntity instance\r\n * @param appObject - The AppObject that will host this AssetEntity\r\n * @returns A new AssetEntity implementation instance\r\n */\r\nexport function makeAssetEntity(appObject: AppObject): AssetEntity {\r\n return new AssetImp(appObject);\r\n}\r\n\r\n/**\r\n * Private implementation of AssetEntity that handles all the concrete functionality.\r\n *\r\n * Key Implementation Details:\r\n * - Uses MemoizedString and MemoizedBoolean for efficient change tracking\r\n * - All memoized properties automatically trigger change notifications when modified\r\n * - Blob URL management with proper cleanup on disposal\r\n * - Linked asset management with duplicate prevention\r\n * - File fetch state management for async operations\r\n *\r\n * Memoization Pattern:\r\n * The implementation uses memoized properties that only trigger change notifications\r\n * when values actually change, preventing unnecessary UI updates and improving performance.\r\n * Each memoized property is initialized with a default value and a change callback.\r\n */\r\nclass AssetImp extends AssetEntity {\r\n /** Returns the unique ID from the underlying AppObject */\r\n get id(): string {\r\n return this.appObject.id;\r\n }\r\n\r\n /**\r\n * Memoized asset name with change notification\r\n * Initialized to empty string, triggers notifyOnChange when modified\r\n */\r\n private _memoizedName: MemoizedString = new MemoizedString(\r\n \"\",\r\n this.notifyOnChange\r\n );\r\n get name(): string {\r\n return this._memoizedName.val;\r\n }\r\n\r\n set name(name: string) {\r\n this._memoizedName.val = name;\r\n }\r\n\r\n /**\r\n * Memoized asset owner with change notification\r\n * Stores the ID of the user/entity that owns this asset\r\n */\r\n private _memoizedOwner: MemoizedString = new MemoizedString(\r\n \"\",\r\n this.notifyOnChange\r\n );\r\n get owner(): string {\r\n return this._memoizedOwner.val;\r\n }\r\n\r\n set owner(val: string) {\r\n this._memoizedOwner.val = val;\r\n }\r\n\r\n /**\r\n * Memoized asset description with change notification\r\n * Stores detailed information about the asset's purpose or content\r\n */\r\n private _memoizedDescription: MemoizedString = new MemoizedString(\r\n \"\",\r\n this.notifyOnChange\r\n );\r\n get description(): string {\r\n return this._memoizedDescription.val;\r\n }\r\n\r\n set description(description: string) {\r\n this._memoizedDescription.val = description;\r\n }\r\n\r\n /**\r\n * Memoized archive status with change notification\r\n * Used for soft deletion and filtering of assets\r\n */\r\n private _memoizedArchived: MemoizedBoolean = new MemoizedBoolean(\r\n false,\r\n this.notifyOnChange\r\n );\r\n get archived(): boolean {\r\n return this._memoizedArchived.val;\r\n }\r\n\r\n set archived(archived: boolean) {\r\n this._memoizedArchived.val = archived;\r\n }\r\n\r\n /**\r\n * Memoized file URL for remote asset access\r\n * Points to where the actual file can be downloaded from\r\n */\r\n private _memoizedFileURL: MemoizedString = new MemoizedString(\r\n \"\",\r\n this.notifyOnChange\r\n );\r\n\r\n /**\r\n * Memoized filename for display and download purposes\r\n * Preserves the original name of the uploaded file\r\n */\r\n private _memoizedFilename: MemoizedString = new MemoizedString(\r\n \"\",\r\n this.notifyOnChange\r\n );\r\n\r\n get filename(): string {\r\n return this._memoizedFilename.val;\r\n }\r\n set filename(name: string) {\r\n this._memoizedFilename.val = name;\r\n }\r\n get fileURL(): string {\r\n return this._memoizedFileURL.val;\r\n }\r\n\r\n set fileURL(name: string) {\r\n this._memoizedFileURL.val = name;\r\n }\r\n\r\n /** Local file object storage */\r\n private _file: File | undefined = undefined;\r\n\r\n /** Local blob URL for immediate file access */\r\n private _blobURL: string | undefined = undefined;\r\n\r\n /**\r\n * Sets a local file and creates a blob URL for immediate access\r\n * This is typically called after successfully downloading a file\r\n * @param file - The file object to store locally\r\n * Side effects: Creates blob URL, triggers change notifications to update UI\r\n */\r\n setFile = (file: File) => {\r\n this._file = file;\r\n this._blobURL = URL.createObjectURL(file);\r\n this.notifyOnChange();\r\n };\r\n\r\n /** Returns the locally stored file object, if any */\r\n get file(): File | undefined {\r\n return this._file;\r\n }\r\n\r\n /** Returns the blob URL for local file access, if available */\r\n get blobURL(): string | undefined {\r\n return this._blobURL;\r\n }\r\n\r\n /**\r\n * Indicates whether a file has been successfully fetched and stored locally\r\n * Used to determine if file operations can proceed without network requests\r\n */\r\n get fileHasBeenFetched(): boolean {\r\n return this._file !== undefined;\r\n }\r\n\r\n /**\r\n * Storage for linked asset relationships\r\n * Supports hierarchical asset structures where assets depend on other assets\r\n */\r\n private _linkedAssets: { type: string; id: string }[] = [];\r\n\r\n /**\r\n * Returns a copy of all linked assets to prevent external modification\r\n * This ensures the internal state cannot be corrupted by external code\r\n */\r\n get linkedAssets(): { type: string; id: string }[] {\r\n return [...this._linkedAssets];\r\n }\r\n\r\n /**\r\n * Adds a linked asset relationship if it doesn't already exist\r\n * Prevents duplicate relationships and maintains data integrity\r\n * @param type - Category of the linked asset (e.g., \"texture\", \"sound\", \"model\")\r\n * @param id - Unique identifier of the linked asset\r\n */\r\n addLinkedAsset = (type: string, id: string) => {\r\n const existingAsset = this._linkedAssets.find((asset) => {\r\n return asset.id === id;\r\n });\r\n\r\n if (existingAsset === undefined) {\r\n this._linkedAssets.push({\r\n id,\r\n type\r\n });\r\n this.notifyOnChange();\r\n }\r\n };\r\n\r\n /**\r\n * Removes a linked asset relationship if it exists\r\n * Maintains referential integrity by only removing exact matches\r\n * @param type - Category of the linked asset to remove\r\n * @param id - Unique identifier of the linked asset to remove\r\n */\r\n removeLinkedAsset = (type: string, id: string) => {\r\n let foundAsset: boolean = false;\r\n this._linkedAssets.forEach((asset) => {\r\n if (asset.type === type && asset.id === id) {\r\n foundAsset = true;\r\n }\r\n });\r\n\r\n if (foundAsset) {\r\n this._linkedAssets = this._linkedAssets.filter(\r\n (asset) => asset.id !== id\r\n );\r\n this.notifyOnChange();\r\n }\r\n };\r\n\r\n /**\r\n * Retrieves all linked asset IDs of a specific type\r\n * Useful for finding all assets of a particular category (e.g., all textures)\r\n * @param type - The asset type to filter by\r\n * @returns Array of asset IDs matching the specified type\r\n */\r\n getLinkedAssetByType = (type: string): string[] => {\r\n const rVal: string[] = [];\r\n\r\n this._linkedAssets.forEach((asset) => {\r\n if (asset.type === type) {\r\n rVal.push(asset.id);\r\n }\r\n });\r\n\r\n return rVal;\r\n };\r\n\r\n /**\r\n * Memoized fetch state indicator with change notification\r\n * Used to show loading states in UI during file download operations\r\n */\r\n private _memoizedIsFetchingFile: MemoizedBoolean = new MemoizedBoolean(\r\n false,\r\n this.notifyOnChange\r\n );\r\n get isFetchingFile(): boolean {\r\n return this._memoizedIsFetchingFile.val;\r\n }\r\n set isFetchingFile(archived: boolean) {\r\n this._memoizedIsFetchingFile.val = archived;\r\n }\r\n\r\n /**\r\n * Storage for the most recent fetch error\r\n * Helps with error handling and user feedback in UI components\r\n */\r\n private _fetchError: Error | undefined = undefined;\r\n\r\n /** Returns the current fetch error, if any */\r\n get fetchError(): Error | undefined {\r\n return this._fetchError;\r\n }\r\n\r\n /**\r\n * Sets the fetch error with smart change detection\r\n * Only triggers change notifications if the error actually changes\r\n * This prevents unnecessary UI updates when the same error is set multiple times\r\n * @param fetchError - The error that occurred, or undefined to clear the error\r\n */\r\n set fetchError(fetchError: Error | undefined) {\r\n if (fetchError === undefined && this.fetchError === undefined) return;\r\n\r\n if (\r\n fetchError !== undefined &&\r\n this.fetchError !== undefined &&\r\n fetchError.message === this.fetchError.message\r\n )\r\n return;\r\n\r\n this._fetchError = fetchError;\r\n this.notifyOnChange();\r\n }\r\n\r\n /**\r\n * Cleanup method that properly releases blob URL resources\r\n * Important: Blob URLs must be revoked to prevent memory leaks\r\n * This is automatically called when the entity is disposed\r\n * Side effects: Revokes blob URL, triggers change notification, calls parent dispose\r\n */\r\n dispose = () => {\r\n if (this._blobURL !== undefined) {\r\n URL.revokeObjectURL(this._blobURL);\r\n this._blobURL = undefined;\r\n this.notifyOnChange();\r\n }\r\n super.dispose();\r\n };\r\n\r\n /**\r\n * Initializes the AssetEntity with proper component registration\r\n * @param appObject - The AppObject that will host this entity\r\n */\r\n constructor(appObject: AppObject) {\r\n super(appObject, AssetEntity.type);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AssetEntity.js","sourceRoot":"","sources":["../../../../src/Assets/Entities/AssetEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n MemoizedBoolean,\n MemoizedString\n} from \"@vived/core\";\n\n/**\n * AssetEntity manages individual file-based resources in VIVED applications.\n *\n * This entity handles:\n * 1. Asset metadata (name, description, owner, archive status)\n * 2. File management (filename, fileURL, blob URL creation)\n * 3. Linked asset relationships for hierarchical asset structures\n * 4. Fetch state management (loading indicators, error handling)\n * 5. Observer pattern implementation for UI updates\n *\n * Key Concepts:\n * - Uses memoized properties for efficient change tracking and notifications\n * - Supports both file URLs (remote) and blob URLs (local) for flexible file access\n * - Maintains linked asset relationships to support complex asset hierarchies\n * - Implements observer pattern to notify UI components of changes\n *\n * Usage Patterns:\n * ```typescript\n * // Get an asset entity from an app object\n * const asset = AssetEntity.get(appObject);\n * if (asset) {\n * // Set asset metadata\n * asset.name = \"My Asset\";\n * asset.description = \"A sample asset\";\n *\n * // Handle file operations\n * asset.setFile(fileObject);\n * const blobURL = asset.blobURL; // Access local blob URL\n *\n * // Manage linked assets\n * asset.addLinkedAsset(\"texture\", \"texture123\");\n * const textures = asset.getLinkedAssetByType(\"texture\");\n *\n * // Monitor fetch state\n * if (asset.isFetchingFile) {\n * console.log(\"File is being downloaded...\");\n * }\n * if (asset.fetchError) {\n * console.error(\"Failed to fetch file:\", asset.fetchError.message);\n * }\n * }\n * ```\n *\n * Integration Points:\n * - Works with AssetRepo for asset lifecycle management\n * - Integrates with AppAssetsEntity for collection management\n * - Used by GetAssetBlobURLUC for file retrieval operations\n * - Supports caching mechanisms for optimized file access\n */\nexport abstract class AssetEntity extends AppObjectEntity {\n /** Static type identifier for component registration */\n static type = \"AssetEntity\";\n\n /**\n * Unique identifier for this asset, derived from the underlying AppObject\n * @readonly\n */\n abstract readonly id: string;\n\n /**\n * Display name of the asset\n * Triggers change notifications when modified for UI updates\n */\n abstract get name(): string;\n abstract set name(name: string);\n\n /**\n * Detailed description of the asset's purpose or content\n * Triggers change notifications when modified for UI updates\n */\n abstract get description(): string;\n abstract set description(description: string);\n\n /**\n * ID of the user or entity that owns this asset\n * Used for permission and filtering operations\n */\n abstract get owner(): string;\n abstract set owner(val: string);\n\n /**\n * Whether this asset is archived (hidden from normal views)\n * Used for soft deletion and filtering capabilities\n */\n abstract get archived(): boolean;\n abstract set archived(archived: boolean);\n\n /**\n * Original filename of the uploaded file\n * Preserved for download operations and display purposes\n */\n abstract get filename(): string;\n abstract set filename(filename: string);\n\n /**\n * Remote URL where the file can be accessed\n * Used for fetching the actual file content from external storage\n */\n abstract get fileURL(): string;\n abstract set fileURL(fileURL: string);\n\n /**\n * Sets the local file object and creates a blob URL for immediate access\n * @param file - The file object to associate with this asset\n * Side effects: Creates blob URL, triggers change notifications\n */\n abstract setFile(file: File): void;\n\n /**\n * The local file object if one has been set\n * @returns File object or undefined if no file has been loaded locally\n */\n abstract get file(): File | undefined;\n\n /**\n * Local blob URL for immediate file access without network requests\n * @returns Blob URL string or undefined if no local file is available\n */\n abstract get blobURL(): string | undefined;\n\n /**\n * Indicates whether the file has been successfully fetched and stored locally\n * @returns true if file is available locally, false otherwise\n */\n abstract get fileHasBeenFetched(): boolean;\n\n /**\n * Array of linked assets that have relationships with this asset\n * Supports hierarchical asset structures (e.g., models with textures)\n * @returns Array of linked asset references with type and ID\n */\n abstract get linkedAssets(): { type: string; id: string }[];\n\n /**\n * Adds a linked asset relationship\n * @param type - The type/category of the linked asset (e.g., \"texture\", \"sound\")\n * @param id - The unique ID of the linked asset\n * Side effects: Triggers change notifications if asset is not already linked\n */\n abstract addLinkedAsset(type: string, id: string): void;\n\n /**\n * Removes a linked asset relationship\n * @param type - The type/category of the linked asset to remove\n * @param id - The unique ID of the linked asset to remove\n * Side effects: Triggers change notifications if asset was previously linked\n */\n abstract removeLinkedAsset(type: string, id: string): void;\n\n /**\n * Retrieves all linked asset IDs of a specific type\n * @param type - The type/category to filter by (e.g., \"texture\", \"sound\")\n * @returns Array of asset IDs that match the specified type\n */\n abstract getLinkedAssetByType(type: string): string[];\n\n /**\n * Indicates whether a file fetch operation is currently in progress\n * Used for showing loading states in UI components\n */\n abstract get isFetchingFile(): boolean;\n abstract set isFetchingFile(isFetchingFile: boolean);\n\n /**\n * Any error that occurred during the most recent fetch operation\n * Used for error handling and user feedback in UI components\n */\n abstract get fetchError(): Error | undefined;\n abstract set fetchError(fetchError: Error | undefined);\n\n /**\n * Retrieves an AssetEntity component from an AppObject\n * @param appObject - The AppObject to search for the AssetEntity component\n * @returns AssetEntity instance or undefined if not found\n * Logs warning if component is not found to aid in debugging\n */\n static get(appObject: AppObject): AssetEntity | undefined {\n const asset = appObject.getComponent<AssetEntity>(AssetEntity.type);\n if (!asset) {\n appObject.appObjectRepo.submitWarning(\n \"AssetEntity.get\",\n \"Unable to find AssetEntity on app object \" + appObject.id\n );\n }\n return asset;\n }\n}\n\n/**\n * Factory function to create a new AssetEntity instance\n * @param appObject - The AppObject that will host this AssetEntity\n * @returns A new AssetEntity implementation instance\n */\nexport function makeAssetEntity(appObject: AppObject): AssetEntity {\n return new AssetImp(appObject);\n}\n\n/**\n * Private implementation of AssetEntity that handles all the concrete functionality.\n *\n * Key Implementation Details:\n * - Uses MemoizedString and MemoizedBoolean for efficient change tracking\n * - All memoized properties automatically trigger change notifications when modified\n * - Blob URL management with proper cleanup on disposal\n * - Linked asset management with duplicate prevention\n * - File fetch state management for async operations\n *\n * Memoization Pattern:\n * The implementation uses memoized properties that only trigger change notifications\n * when values actually change, preventing unnecessary UI updates and improving performance.\n * Each memoized property is initialized with a default value and a change callback.\n */\nclass AssetImp extends AssetEntity {\n /** Returns the unique ID from the underlying AppObject */\n get id(): string {\n return this.appObject.id;\n }\n\n /**\n * Memoized asset name with change notification\n * Initialized to empty string, triggers notifyOnChange when modified\n */\n private _memoizedName: MemoizedString = new MemoizedString(\n \"\",\n this.notifyOnChange\n );\n get name(): string {\n return this._memoizedName.val;\n }\n\n set name(name: string) {\n this._memoizedName.val = name;\n }\n\n /**\n * Memoized asset owner with change notification\n * Stores the ID of the user/entity that owns this asset\n */\n private _memoizedOwner: MemoizedString = new MemoizedString(\n \"\",\n this.notifyOnChange\n );\n get owner(): string {\n return this._memoizedOwner.val;\n }\n\n set owner(val: string) {\n this._memoizedOwner.val = val;\n }\n\n /**\n * Memoized asset description with change notification\n * Stores detailed information about the asset's purpose or content\n */\n private _memoizedDescription: MemoizedString = new MemoizedString(\n \"\",\n this.notifyOnChange\n );\n get description(): string {\n return this._memoizedDescription.val;\n }\n\n set description(description: string) {\n this._memoizedDescription.val = description;\n }\n\n /**\n * Memoized archive status with change notification\n * Used for soft deletion and filtering of assets\n */\n private _memoizedArchived: MemoizedBoolean = new MemoizedBoolean(\n false,\n this.notifyOnChange\n );\n get archived(): boolean {\n return this._memoizedArchived.val;\n }\n\n set archived(archived: boolean) {\n this._memoizedArchived.val = archived;\n }\n\n /**\n * Memoized file URL for remote asset access\n * Points to where the actual file can be downloaded from\n */\n private _memoizedFileURL: MemoizedString = new MemoizedString(\n \"\",\n this.notifyOnChange\n );\n\n /**\n * Memoized filename for display and download purposes\n * Preserves the original name of the uploaded file\n */\n private _memoizedFilename: MemoizedString = new MemoizedString(\n \"\",\n this.notifyOnChange\n );\n\n get filename(): string {\n return this._memoizedFilename.val;\n }\n set filename(name: string) {\n this._memoizedFilename.val = name;\n }\n get fileURL(): string {\n return this._memoizedFileURL.val;\n }\n\n set fileURL(name: string) {\n this._memoizedFileURL.val = name;\n }\n\n /** Local file object storage */\n private _file: File | undefined = undefined;\n\n /** Local blob URL for immediate file access */\n private _blobURL: string | undefined = undefined;\n\n /**\n * Sets a local file and creates a blob URL for immediate access\n * This is typically called after successfully downloading a file\n * @param file - The file object to store locally\n * Side effects: Creates blob URL, triggers change notifications to update UI\n */\n setFile = (file: File) => {\n this._file = file;\n this._blobURL = URL.createObjectURL(file);\n this.notifyOnChange();\n };\n\n /** Returns the locally stored file object, if any */\n get file(): File | undefined {\n return this._file;\n }\n\n /** Returns the blob URL for local file access, if available */\n get blobURL(): string | undefined {\n return this._blobURL;\n }\n\n /**\n * Indicates whether a file has been successfully fetched and stored locally\n * Used to determine if file operations can proceed without network requests\n */\n get fileHasBeenFetched(): boolean {\n return this._file !== undefined;\n }\n\n /**\n * Storage for linked asset relationships\n * Supports hierarchical asset structures where assets depend on other assets\n */\n private _linkedAssets: { type: string; id: string }[] = [];\n\n /**\n * Returns a copy of all linked assets to prevent external modification\n * This ensures the internal state cannot be corrupted by external code\n */\n get linkedAssets(): { type: string; id: string }[] {\n return [...this._linkedAssets];\n }\n\n /**\n * Adds a linked asset relationship if it doesn't already exist\n * Prevents duplicate relationships and maintains data integrity\n * @param type - Category of the linked asset (e.g., \"texture\", \"sound\", \"model\")\n * @param id - Unique identifier of the linked asset\n */\n addLinkedAsset = (type: string, id: string) => {\n const existingAsset = this._linkedAssets.find((asset) => {\n return asset.id === id;\n });\n\n if (existingAsset === undefined) {\n this._linkedAssets.push({\n id,\n type\n });\n this.notifyOnChange();\n }\n };\n\n /**\n * Removes a linked asset relationship if it exists\n * Maintains referential integrity by only removing exact matches\n * @param type - Category of the linked asset to remove\n * @param id - Unique identifier of the linked asset to remove\n */\n removeLinkedAsset = (type: string, id: string) => {\n let foundAsset: boolean = false;\n this._linkedAssets.forEach((asset) => {\n if (asset.type === type && asset.id === id) {\n foundAsset = true;\n }\n });\n\n if (foundAsset) {\n this._linkedAssets = this._linkedAssets.filter(\n (asset) => asset.id !== id\n );\n this.notifyOnChange();\n }\n };\n\n /**\n * Retrieves all linked asset IDs of a specific type\n * Useful for finding all assets of a particular category (e.g., all textures)\n * @param type - The asset type to filter by\n * @returns Array of asset IDs matching the specified type\n */\n getLinkedAssetByType = (type: string): string[] => {\n const rVal: string[] = [];\n\n this._linkedAssets.forEach((asset) => {\n if (asset.type === type) {\n rVal.push(asset.id);\n }\n });\n\n return rVal;\n };\n\n /**\n * Memoized fetch state indicator with change notification\n * Used to show loading states in UI during file download operations\n */\n private _memoizedIsFetchingFile: MemoizedBoolean = new MemoizedBoolean(\n false,\n this.notifyOnChange\n );\n get isFetchingFile(): boolean {\n return this._memoizedIsFetchingFile.val;\n }\n set isFetchingFile(archived: boolean) {\n this._memoizedIsFetchingFile.val = archived;\n }\n\n /**\n * Storage for the most recent fetch error\n * Helps with error handling and user feedback in UI components\n */\n private _fetchError: Error | undefined = undefined;\n\n /** Returns the current fetch error, if any */\n get fetchError(): Error | undefined {\n return this._fetchError;\n }\n\n /**\n * Sets the fetch error with smart change detection\n * Only triggers change notifications if the error actually changes\n * This prevents unnecessary UI updates when the same error is set multiple times\n * @param fetchError - The error that occurred, or undefined to clear the error\n */\n set fetchError(fetchError: Error | undefined) {\n if (fetchError === undefined && this.fetchError === undefined) return;\n\n if (\n fetchError !== undefined &&\n this.fetchError !== undefined &&\n fetchError.message === this.fetchError.message\n )\n return;\n\n this._fetchError = fetchError;\n this.notifyOnChange();\n }\n\n /**\n * Cleanup method that properly releases blob URL resources\n * Important: Blob URLs must be revoked to prevent memory leaks\n * This is automatically called when the entity is disposed\n * Side effects: Revokes blob URL, triggers change notification, calls parent dispose\n */\n dispose = () => {\n if (this._blobURL !== undefined) {\n URL.revokeObjectURL(this._blobURL);\n this._blobURL = undefined;\n this.notifyOnChange();\n }\n super.dispose();\n };\n\n /**\n * Initializes the AssetEntity with proper component registration\n * @param appObject - The AppObject that will host this entity\n */\n constructor(appObject: AppObject) {\n super(appObject, AssetEntity.type);\n }\n}\n"]}
|