import { graphql } from "/_nuxt/lib/common/generated/gql/gql.ts"; import { SavedViewVisibility } from "/_nuxt/lib/common/generated/gql/graphql.ts"; import { Globe, User } from "/_nuxt/node_modules/.cache/vite/client/deps/lucide-vue-next.js?v=e4f18c29"; import { useMutationLoading } from "/_nuxt/node_modules/@vue/apollo-composable/dist/index.mjs?v=e4f18c29"; import { useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts"; import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; graphql(` fragment UseSavedViewValidationHelpers_SavedView on SavedView { id isHomeView visibility permissions { canUpdate { ...FullPermissionCheckResult } canMove { ...FullPermissionCheckResult } canEditTitle { ...FullPermissionCheckResult } canEditDescription { ...FullPermissionCheckResult } canSetAsHomeView { ...FullPermissionCheckResult } } } `); export const useSavedViewValidationHelpers = (params) => { const homeViewPrivateError = "A home view must be shared"; const isLoading = useMutationLoading(); const { resources: { response: { isFederatedView } } } = useInjectedViewerState(); const permissions = computed(() => params.view.value?.permissions); const canUpdate = computed(() => permissions.value?.canUpdate); const canMove = computed(() => permissions.value?.canMove); const canEditTitle = computed(() => permissions.value?.canEditTitle); const canEditDescription = computed(() => permissions.value?.canEditDescription); const canEmbed = computed(() => { if (isLoading.value) { return { authorized: false, errorMessage: void 0, code: "LOADING", message: "" }; } if (params.view.value?.visibility !== SavedViewVisibility.Public) { return { authorized: false, errorMessage: "Only shared views can be embedded", code: "FORBIDDEN", message: "Only shared views can be embedded" }; } return { authorized: true, code: "OK", message: "" }; }); const canOpenEditDialog = computed( () => { if (isLoading.value) { return { authorized: false, errorMessage: void 0, code: "LOADING", message: "" }; } if (canUpdate.value?.authorized) return canUpdate.value; if (canEditTitle.value?.authorized) return canEditTitle.value; if (canEditDescription.value?.authorized) return canEditDescription.value; if (canMove.value?.authorized) return canMove.value; return canMove.value; } ); const isOnlyVisibleToMe = computed( () => params.view.value?.visibility === SavedViewVisibility.AuthorOnly ); const isHomeView = computed(() => params.view.value?.isHomeView); const visibilityOptions = computed(() => [ { value: SavedViewVisibility.Public, title: "Shared", introduction: "Visible to anyone with access to the model", icon: Globe }, { value: SavedViewVisibility.AuthorOnly, title: "Private", introduction: "Visible only to the view author", icon: User, ...params.view.value?.isHomeView ? { disabled: true, help: homeViewPrivateError } : {} } ]); const canSetHomeView = computed( () => { if (!permissions.value?.canSetAsHomeView.authorized || isLoading.value) { return { authorized: false, message: permissions.value?.canSetAsHomeView.errorMessage || void 0 }; } if (isFederatedView.value) { return { authorized: false, message: "Home view settings can't be updated while in a federated view" }; } return { authorized: true, message: void 0 }; } ); const canToggleVisibility = computed(() => { if (!canUpdate.value?.authorized || isLoading.value) { return { authorized: false, message: canUpdate.value?.errorMessage || void 0 }; } if (isHomeView.value && !isOnlyVisibleToMe.value) { return { authorized: false, message: homeViewPrivateError }; } return { authorized: true, message: void 0 }; }); const validateVisibility = (value) => { if (!params.view.value) return true; if (!params.view.value.isHomeView) return true; return value === SavedViewVisibility.AuthorOnly ? homeViewPrivateError : true; }; return { validateVisibility, visibilityOptions, canUpdate, isOnlyVisibleToMe, canSetHomeView, isHomeView, canToggleVisibility, canMove, canEditTitle, canEditDescription, canOpenEditDialog, canEmbed }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxlQUFlO0FBQ3hCO0FBQUEsRUFDRTtBQUFBLE9BR0s7QUFDUCxTQUFTLE9BQU8sWUFBWTtBQUU1QixTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLDhCQUE4Qjs7O0FBRXZDLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLENBdUJQO0FBRU0sYUFBTSxnQ0FBZ0MsQ0FBQyxXQUl4QztBQUNKLFFBQU0sdUJBQXVCO0FBRTdCLFFBQU0sWUFBWSxtQkFBbUI7QUFDckMsUUFBTTtBQUFBLElBQ0osV0FBVztBQUFBLE1BQ1QsVUFBVSxFQUFFLGdCQUFnQjtBQUFBLElBQzlCO0FBQUEsRUFDRixJQUFJLHVCQUF1QjtBQUUzQixRQUFNLGNBQWMsU0FBUyxNQUFNLE9BQU8sS0FBSyxPQUFPLFdBQVc7QUFDakUsUUFBTSxZQUFZLFNBQVMsTUFBTSxZQUFZLE9BQU8sU0FBUztBQUM3RCxRQUFNLFVBQVUsU0FBUyxNQUFNLFlBQVksT0FBTyxPQUFPO0FBQ3pELFFBQU0sZUFBZSxTQUFTLE1BQU0sWUFBWSxPQUFPLFlBQVk7QUFDbkUsUUFBTSxxQkFBcUIsU0FBUyxNQUFNLFlBQVksT0FBTyxrQkFBa0I7QUFFL0UsUUFBTSxXQUFXLFNBQVMsTUFBcUQ7QUFDN0UsUUFBSSxVQUFVLE9BQU87QUFDbkIsYUFBTztBQUFBLFFBQ0wsWUFBWTtBQUFBLFFBQ1osY0FBYztBQUFBLFFBQ2QsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLE1BQ1g7QUFBQSxJQUNGO0FBRUEsUUFBSSxPQUFPLEtBQUssT0FBTyxlQUFlLG9CQUFvQixRQUFRO0FBQ2hFLGFBQU87QUFBQSxRQUNMLFlBQVk7QUFBQSxRQUNaLGNBQWM7QUFBQSxRQUNkLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxNQUNYO0FBQUEsSUFDRjtBQUVBLFdBQU8sRUFBRSxZQUFZLE1BQU0sTUFBTSxNQUFNLFNBQVMsR0FBRztBQUFBLEVBQ3JELENBQUM7QUFFRCxRQUFNLG9CQUFvQjtBQUFBLElBQ3hCLE1BQXFEO0FBQ25ELFVBQUksVUFBVSxPQUFPO0FBQ25CLGVBQU87QUFBQSxVQUNMLFlBQVk7QUFBQSxVQUNaLGNBQWM7QUFBQSxVQUNkLE1BQU07QUFBQSxVQUNOLFNBQVM7QUFBQSxRQUNYO0FBQUEsTUFDRjtBQUVBLFVBQUksVUFBVSxPQUFPLFdBQVksUUFBTyxVQUFVO0FBQ2xELFVBQUksYUFBYSxPQUFPLFdBQVksUUFBTyxhQUFhO0FBQ3hELFVBQUksbUJBQW1CLE9BQU8sV0FBWSxRQUFPLG1CQUFtQjtBQUNwRSxVQUFJLFFBQVEsT0FBTyxXQUFZLFFBQU8sUUFBUTtBQUM5QyxhQUFPLFFBQVE7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG9CQUFvQjtBQUFBLElBQ3hCLE1BQU0sT0FBTyxLQUFLLE9BQU8sZUFBZSxvQkFBb0I7QUFBQSxFQUM5RDtBQUNBLFFBQU0sYUFBYSxTQUFTLE1BQU0sT0FBTyxLQUFLLE9BQU8sVUFBVTtBQUsvRCxRQUFNLG9CQUFvQixTQUFTLE1BQWlEO0FBQUEsSUFDbEY7QUFBQSxNQUNFLE9BQU8sb0JBQW9CO0FBQUEsTUFDM0IsT0FBTztBQUFBLE1BQ1AsY0FBYztBQUFBLE1BQ2QsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsTUFDRSxPQUFPLG9CQUFvQjtBQUFBLE1BQzNCLE9BQU87QUFBQSxNQUNQLGNBQWM7QUFBQSxNQUNkLE1BQU07QUFBQSxNQUNOLEdBQUksT0FBTyxLQUFLLE9BQU8sYUFDbkI7QUFBQSxRQUNFLFVBQVU7QUFBQSxRQUNWLE1BQU07QUFBQSxNQUNSLElBQ0EsQ0FBQztBQUFBLElBQ1A7QUFBQSxFQUNGLENBQUM7QUFFRCxRQUFNLGlCQUFpQjtBQUFBLElBQ3JCLE1BQTBEO0FBQ3hELFVBQUksQ0FBQyxZQUFZLE9BQU8saUJBQWlCLGNBQWMsVUFBVSxPQUFPO0FBQ3RFLGVBQU87QUFBQSxVQUNMLFlBQVk7QUFBQSxVQUNaLFNBQVMsWUFBWSxPQUFPLGlCQUFpQixnQkFBZ0I7QUFBQSxRQUMvRDtBQUFBLE1BQ0Y7QUFFQSxVQUFJLGdCQUFnQixPQUFPO0FBQ3pCLGVBQU87QUFBQSxVQUNMLFlBQVk7QUFBQSxVQUNaLFNBQVM7QUFBQSxRQUNYO0FBQUEsTUFDRjtBQUVBLGFBQU8sRUFBRSxZQUFZLE1BQU0sU0FBUyxPQUFVO0FBQUEsSUFDaEQ7QUFBQSxFQUNGO0FBRUEsUUFBTSxzQkFBc0IsU0FBUyxNQUFNO0FBQ3pDLFFBQUksQ0FBQyxVQUFVLE9BQU8sY0FBYyxVQUFVLE9BQU87QUFDbkQsYUFBTztBQUFBLFFBQ0wsWUFBWTtBQUFBLFFBQ1osU0FBUyxVQUFVLE9BQU8sZ0JBQWdCO0FBQUEsTUFDNUM7QUFBQSxJQUNGO0FBRUEsUUFBSSxXQUFXLFNBQVMsQ0FBQyxrQkFBa0IsT0FBTztBQUNoRCxhQUFPO0FBQUEsUUFDTCxZQUFZO0FBQUEsUUFDWixTQUFTO0FBQUEsTUFDWDtBQUFBLElBQ0Y7QUFFQSxXQUFPLEVBQUUsWUFBWSxNQUFNLFNBQVMsT0FBVTtBQUFBLEVBQ2hELENBQUM7QUFLRCxRQUFNLHFCQUFtRSxDQUFDLFVBQVU7QUFDbEYsUUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFPLFFBQU87QUFDL0IsUUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLFdBQVksUUFBTztBQUUxQyxXQUFPLFVBQVUsb0JBQW9CLGFBQWEsdUJBQXVCO0FBQUEsRUFDM0U7QUFFQSxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJ2YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWF5YmVOdWxsT3JVbmRlZmluZWQsIE9wdGlvbmFsIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNWYWxpZGF0ZUZ1bmN0aW9uIH0gZnJvbSAndmVlLXZhbGlkYXRlJ1xyXG5pbXBvcnQgeyBncmFwaHFsIH0gZnJvbSAnfi9saWIvY29tbW9uL2dlbmVyYXRlZC9ncWwvZ3FsJ1xyXG5pbXBvcnQge1xyXG4gIFNhdmVkVmlld1Zpc2liaWxpdHksXHJcbiAgdHlwZSBGdWxsUGVybWlzc2lvbkNoZWNrUmVzdWx0RnJhZ21lbnQsXHJcbiAgdHlwZSBVc2VTYXZlZFZpZXdWYWxpZGF0aW9uSGVscGVyc19TYXZlZFZpZXdGcmFnbWVudFxyXG59IGZyb20gJ34vbGliL2NvbW1vbi9nZW5lcmF0ZWQvZ3FsL2dyYXBocWwnXHJcbmltcG9ydCB7IEdsb2JlLCBVc2VyIH0gZnJvbSAnbHVjaWRlLXZ1ZS1uZXh0J1xyXG5pbXBvcnQgdHlwZSB7IEZvcm1SYWRpb0dyb3VwSXRlbSB9IGZyb20gJ0BzcGVja2xlL3VpLWNvbXBvbmVudHMnXHJcbmltcG9ydCB7IHVzZU11dGF0aW9uTG9hZGluZyB9IGZyb20gJ0B2dWUvYXBvbGxvLWNvbXBvc2FibGUnXHJcbmltcG9ydCB7IHVzZUluamVjdGVkVmlld2VyU3RhdGUgfSBmcm9tICd+L2xpYi92aWV3ZXIvY29tcG9zYWJsZXMvc2V0dXAnXHJcblxyXG5ncmFwaHFsKGBcclxuICBmcmFnbWVudCBVc2VTYXZlZFZpZXdWYWxpZGF0aW9uSGVscGVyc19TYXZlZFZpZXcgb24gU2F2ZWRWaWV3IHtcclxuICAgIGlkXHJcbiAgICBpc0hvbWVWaWV3XHJcbiAgICB2aXNpYmlsaXR5XHJcbiAgICBwZXJtaXNzaW9ucyB7XHJcbiAgICAgIGNhblVwZGF0ZSB7XHJcbiAgICAgICAgLi4uRnVsbFBlcm1pc3Npb25DaGVja1Jlc3VsdFxyXG4gICAgICB9XHJcbiAgICAgIGNhbk1vdmUge1xyXG4gICAgICAgIC4uLkZ1bGxQZXJtaXNzaW9uQ2hlY2tSZXN1bHRcclxuICAgICAgfVxyXG4gICAgICBjYW5FZGl0VGl0bGUge1xyXG4gICAgICAgIC4uLkZ1bGxQZXJtaXNzaW9uQ2hlY2tSZXN1bHRcclxuICAgICAgfVxyXG4gICAgICBjYW5FZGl0RGVzY3JpcHRpb24ge1xyXG4gICAgICAgIC4uLkZ1bGxQZXJtaXNzaW9uQ2hlY2tSZXN1bHRcclxuICAgICAgfVxyXG4gICAgICBjYW5TZXRBc0hvbWVWaWV3IHtcclxuICAgICAgICAuLi5GdWxsUGVybWlzc2lvbkNoZWNrUmVzdWx0XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmApXHJcblxyXG5leHBvcnQgY29uc3QgdXNlU2F2ZWRWaWV3VmFsaWRhdGlvbkhlbHBlcnMgPSAocGFyYW1zOiB7XHJcbiAgdmlldzogQ29tcHV0ZWRSZWY8XHJcbiAgICBNYXliZU51bGxPclVuZGVmaW5lZDxVc2VTYXZlZFZpZXdWYWxpZGF0aW9uSGVscGVyc19TYXZlZFZpZXdGcmFnbWVudD5cclxuICA+XHJcbn0pID0+IHtcclxuICBjb25zdCBob21lVmlld1ByaXZhdGVFcnJvciA9ICdBIGhvbWUgdmlldyBtdXN0IGJlIHNoYXJlZCdcclxuXHJcbiAgY29uc3QgaXNMb2FkaW5nID0gdXNlTXV0YXRpb25Mb2FkaW5nKClcclxuICBjb25zdCB7XHJcbiAgICByZXNvdXJjZXM6IHtcclxuICAgICAgcmVzcG9uc2U6IHsgaXNGZWRlcmF0ZWRWaWV3IH1cclxuICAgIH1cclxuICB9ID0gdXNlSW5qZWN0ZWRWaWV3ZXJTdGF0ZSgpXHJcblxyXG4gIGNvbnN0IHBlcm1pc3Npb25zID0gY29tcHV0ZWQoKCkgPT4gcGFyYW1zLnZpZXcudmFsdWU/LnBlcm1pc3Npb25zKVxyXG4gIGNvbnN0IGNhblVwZGF0ZSA9IGNvbXB1dGVkKCgpID0+IHBlcm1pc3Npb25zLnZhbHVlPy5jYW5VcGRhdGUpXHJcbiAgY29uc3QgY2FuTW92ZSA9IGNvbXB1dGVkKCgpID0+IHBlcm1pc3Npb25zLnZhbHVlPy5jYW5Nb3ZlKVxyXG4gIGNvbnN0IGNhbkVkaXRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHBlcm1pc3Npb25zLnZhbHVlPy5jYW5FZGl0VGl0bGUpXHJcbiAgY29uc3QgY2FuRWRpdERlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gcGVybWlzc2lvbnMudmFsdWU/LmNhbkVkaXREZXNjcmlwdGlvbilcclxuXHJcbiAgY29uc3QgY2FuRW1iZWQgPSBjb21wdXRlZCgoKTogRnVsbFBlcm1pc3Npb25DaGVja1Jlc3VsdEZyYWdtZW50IHwgdW5kZWZpbmVkID0+IHtcclxuICAgIGlmIChpc0xvYWRpbmcudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBhdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICBjb2RlOiAnTE9BRElORycsXHJcbiAgICAgICAgbWVzc2FnZTogJydcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJhbXMudmlldy52YWx1ZT8udmlzaWJpbGl0eSAhPT0gU2F2ZWRWaWV3VmlzaWJpbGl0eS5QdWJsaWMpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBhdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdPbmx5IHNoYXJlZCB2aWV3cyBjYW4gYmUgZW1iZWRkZWQnLFxyXG4gICAgICAgIGNvZGU6ICdGT1JCSURERU4nLFxyXG4gICAgICAgIG1lc3NhZ2U6ICdPbmx5IHNoYXJlZCB2aWV3cyBjYW4gYmUgZW1iZWRkZWQnXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBhdXRob3JpemVkOiB0cnVlLCBjb2RlOiAnT0snLCBtZXNzYWdlOiAnJyB9XHJcbiAgfSlcclxuXHJcbiAgY29uc3QgY2FuT3BlbkVkaXREaWFsb2cgPSBjb21wdXRlZChcclxuICAgICgpOiBGdWxsUGVybWlzc2lvbkNoZWNrUmVzdWx0RnJhZ21lbnQgfCB1bmRlZmluZWQgPT4ge1xyXG4gICAgICBpZiAoaXNMb2FkaW5nLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGF1dGhvcml6ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBjb2RlOiAnTE9BRElORycsXHJcbiAgICAgICAgICBtZXNzYWdlOiAnJ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNhblVwZGF0ZS52YWx1ZT8uYXV0aG9yaXplZCkgcmV0dXJuIGNhblVwZGF0ZS52YWx1ZVxyXG4gICAgICBpZiAoY2FuRWRpdFRpdGxlLnZhbHVlPy5hdXRob3JpemVkKSByZXR1cm4gY2FuRWRpdFRpdGxlLnZhbHVlXHJcbiAgICAgIGlmIChjYW5FZGl0RGVzY3JpcHRpb24udmFsdWU/LmF1dGhvcml6ZWQpIHJldHVybiBjYW5FZGl0RGVzY3JpcHRpb24udmFsdWVcclxuICAgICAgaWYgKGNhbk1vdmUudmFsdWU/LmF1dGhvcml6ZWQpIHJldHVybiBjYW5Nb3ZlLnZhbHVlXHJcbiAgICAgIHJldHVybiBjYW5Nb3ZlLnZhbHVlXHJcbiAgICB9XHJcbiAgKVxyXG5cclxuICBjb25zdCBpc09ubHlWaXNpYmxlVG9NZSA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT4gcGFyYW1zLnZpZXcudmFsdWU/LnZpc2liaWxpdHkgPT09IFNhdmVkVmlld1Zpc2liaWxpdHkuQXV0aG9yT25seVxyXG4gIClcclxuICBjb25zdCBpc0hvbWVWaWV3ID0gY29tcHV0ZWQoKCkgPT4gcGFyYW1zLnZpZXcudmFsdWU/LmlzSG9tZVZpZXcpXHJcblxyXG4gIC8qKlxyXG4gICAqIFZpc2liaWxpdHkgb3B0aW9ucyBmb3IgdmlzaWJpbGl0eSByYWRpbyBncm91cFxyXG4gICAqL1xyXG4gIGNvbnN0IHZpc2liaWxpdHlPcHRpb25zID0gY29tcHV0ZWQoKCk6IEZvcm1SYWRpb0dyb3VwSXRlbTxTYXZlZFZpZXdWaXNpYmlsaXR5PltdID0+IFtcclxuICAgIHtcclxuICAgICAgdmFsdWU6IFNhdmVkVmlld1Zpc2liaWxpdHkuUHVibGljLFxyXG4gICAgICB0aXRsZTogJ1NoYXJlZCcsXHJcbiAgICAgIGludHJvZHVjdGlvbjogJ1Zpc2libGUgdG8gYW55b25lIHdpdGggYWNjZXNzIHRvIHRoZSBtb2RlbCcsXHJcbiAgICAgIGljb246IEdsb2JlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB2YWx1ZTogU2F2ZWRWaWV3VmlzaWJpbGl0eS5BdXRob3JPbmx5LFxyXG4gICAgICB0aXRsZTogJ1ByaXZhdGUnLFxyXG4gICAgICBpbnRyb2R1Y3Rpb246ICdWaXNpYmxlIG9ubHkgdG8gdGhlIHZpZXcgYXV0aG9yJyxcclxuICAgICAgaWNvbjogVXNlcixcclxuICAgICAgLi4uKHBhcmFtcy52aWV3LnZhbHVlPy5pc0hvbWVWaWV3XHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICBoZWxwOiBob21lVmlld1ByaXZhdGVFcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge30pXHJcbiAgICB9XHJcbiAgXSlcclxuXHJcbiAgY29uc3QgY2FuU2V0SG9tZVZpZXcgPSBjb21wdXRlZChcclxuICAgICgpOiB7IGF1dGhvcml6ZWQ6IGJvb2xlYW47IG1lc3NhZ2U6IE9wdGlvbmFsPHN0cmluZz4gfSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbnMudmFsdWU/LmNhblNldEFzSG9tZVZpZXcuYXV0aG9yaXplZCB8fCBpc0xvYWRpbmcudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgYXV0aG9yaXplZDogZmFsc2UsXHJcbiAgICAgICAgICBtZXNzYWdlOiBwZXJtaXNzaW9ucy52YWx1ZT8uY2FuU2V0QXNIb21lVmlldy5lcnJvck1lc3NhZ2UgfHwgdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNGZWRlcmF0ZWRWaWV3LnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGF1dGhvcml6ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgbWVzc2FnZTogXCJIb21lIHZpZXcgc2V0dGluZ3MgY2FuJ3QgYmUgdXBkYXRlZCB3aGlsZSBpbiBhIGZlZGVyYXRlZCB2aWV3XCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7IGF1dGhvcml6ZWQ6IHRydWUsIG1lc3NhZ2U6IHVuZGVmaW5lZCB9XHJcbiAgICB9XHJcbiAgKVxyXG5cclxuICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCFjYW5VcGRhdGUudmFsdWU/LmF1dGhvcml6ZWQgfHwgaXNMb2FkaW5nLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgYXV0aG9yaXplZDogZmFsc2UsXHJcbiAgICAgICAgbWVzc2FnZTogY2FuVXBkYXRlLnZhbHVlPy5lcnJvck1lc3NhZ2UgfHwgdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNIb21lVmlldy52YWx1ZSAmJiAhaXNPbmx5VmlzaWJsZVRvTWUudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBhdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICBtZXNzYWdlOiBob21lVmlld1ByaXZhdGVFcnJvclxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgYXV0aG9yaXplZDogdHJ1ZSwgbWVzc2FnZTogdW5kZWZpbmVkIH1cclxuICB9KVxyXG5cclxuICAvKipcclxuICAgKiBWZWUtdmFsaWRhdGUgcnVsZSBmb3IgdmlzaWJpbGl0eSBjaGVja3NcclxuICAgKi9cclxuICBjb25zdCB2YWxpZGF0ZVZpc2liaWxpdHk6IEdlbmVyaWNWYWxpZGF0ZUZ1bmN0aW9uPFNhdmVkVmlld1Zpc2liaWxpdHk+ID0gKHZhbHVlKSA9PiB7XHJcbiAgICBpZiAoIXBhcmFtcy52aWV3LnZhbHVlKSByZXR1cm4gdHJ1ZVxyXG4gICAgaWYgKCFwYXJhbXMudmlldy52YWx1ZS5pc0hvbWVWaWV3KSByZXR1cm4gdHJ1ZVxyXG5cclxuICAgIHJldHVybiB2YWx1ZSA9PT0gU2F2ZWRWaWV3VmlzaWJpbGl0eS5BdXRob3JPbmx5ID8gaG9tZVZpZXdQcml2YXRlRXJyb3IgOiB0cnVlXHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgdmFsaWRhdGVWaXNpYmlsaXR5LFxyXG4gICAgdmlzaWJpbGl0eU9wdGlvbnMsXHJcbiAgICBjYW5VcGRhdGUsXHJcbiAgICBpc09ubHlWaXNpYmxlVG9NZSxcclxuICAgIGNhblNldEhvbWVWaWV3LFxyXG4gICAgaXNIb21lVmlldyxcclxuICAgIGNhblRvZ2dsZVZpc2liaWxpdHksXHJcbiAgICBjYW5Nb3ZlLFxyXG4gICAgY2FuRWRpdFRpdGxlLFxyXG4gICAgY2FuRWRpdERlc2NyaXB0aW9uLFxyXG4gICAgY2FuT3BlbkVkaXREaWFsb2csXHJcbiAgICBjYW5FbWJlZFxyXG4gIH1cclxufVxyXG4iXSwiZmlsZSI6IkQ6L3NwZWNrbGUtc2VydmVyL3BhY2thZ2VzL2Zyb250ZW5kLTIvbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zYXZlZFZpZXdzL3ZhbGlkYXRpb24udHMifQ==