{"version":3,"file":"js/app.111e355c.js","mappings":"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,KAAM,qBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,sEAGJ,CACE75E,MAAO,qBACP2J,KAAM,qBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,+EAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,iFACA,mDACA,+CACA,kDACA,kGACA,uDAGJ,CACE75E,MAAO,iDACP2J,KAAM,mBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,oEAGJ,CACE75E,MAAO,qBACP2J,KAAM,mBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,qFAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,qDAIJ,CACE75E,MAAO,iDACP2J,KAAM,mBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,oEAGJ,CACE75E,MAAO,qBACP2J,KAAM,mBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,qFAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,qDAIJ,CACE75E,MAAO,iDACP2J,KAAM,mBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,mEAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,mCAGJ,CACE75E,MAAO,qBACP2J,KAAM,kBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,2DAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,4FACA,0BAIJ,CACE75E,MAAO,iDACP2J,KAAM,iBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,kEAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,sGACA,iCACA,kCAGJ,CACE75E,MAAO,qBACP2J,KAAM,iBAER,CACE3J,MAAO,kBACP45E,YAAY,EACZC,OAAQ,CACN,iEACA,8CACA,yCAGJ,CACE75E,MAAO,uCACP45E,YAAY,EACZC,OAAQ,CACN,4EACA,oEACA,mEACA,uFACA,0GACA,kGACA,kEACA,0BAIJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,gEACA,gCACA,mCAGJ,CACE75E,MAAO,oCACP65E,OAAQ,CACN,yGACA,8DACA,gEACA,mFACA,uFACA,sHACA,8CACA,8BAIJ,CACE75E,MAAO,iDACP2J,KAAM,eACNkwE,OAAQ,CACN,+DACA,mGACA,mCAGJ,CACE75E,MAAO,mCACP65E,OAAQ,CACN,8CACA,6FACA,qEACA,uFACA,0BAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,oEAIJ,CACE75E,MAAO,iDACP2J,KAAM,iBACNkwE,OAAQ,CACN,iEACA,mCAGJ,CACE75E,MAAO,qCACP65E,OAAQ,CACN,iGACA,gJACA,yFACA,+HACA,sDACA,iGACA,gHACA,wDACA,+DACA,0DACA,oGACA,6DAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,gGAGJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,gEACA,mCAGJ,CACE75E,MAAO,oCACP65E,OAAQ,CACN,kEACA,4FACA,8GACA,yEACA,0BAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,wEACA,uDAGJ,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CACN,+EACA,oEACA,6EACA,6DAGJ,CACE75E,MAAO,uCACP65E,OAAQ,CACN,kNACA,gGAGJ,CACE75E,MAAO,iDACP2J,KAAM,oBACNkwE,OAAQ,CACN,oEACA,mCAGJ,CACE75E,MAAO,wCACP65E,OAAQ,CACN,oIACA,8FACA,sFACA,mDACA,oFACA,0GACA,wFACA,wEACA,yEACA,8DAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,8DAGJ,CACE75E,MAAO,iDACP2J,KAAM,qBACNkwE,OAAQ,CACN,qEACA,uEACA,mEACA,mCAGJ,CACE75E,MAAO,yCACP65E,OAAQ,CACN,kHACA,+CACA,+DACA,kFACA,gDACA,wFACA,uFAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,4DACA,oEAGJ,CACE75E,MAAO,iDACP2J,KAAM,kBACNkwE,OAAQ,CACN,kEACA,mCAGJ,CACE75E,MAAO,sCACP65E,OAAQ,CACN,iEACA,8CACA,yEACA,oDACA,kEAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,8CACA,wDACA,kCAGJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,gEACA,mEACA,mCAGJ,CACE75E,MAAO,oCACP65E,OAAQ,CACN,oEACA,2BACA,qFACA,8BACA,4BACA,iEACA,8FACA,uEACA,0DACA,sDAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,wEACA,iGACA,wEAGJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,+DACA,mCAGJ,CACE75E,MAAO,mCACP65E,OAAQ,CACN,cACA,2BACA,2DACA,iDACA,oDACA,oCACA,8CACA,8CAGJ,CACE75E,MAAO,iDACP2J,KAAM,iBACNkwE,OAAQ,CACN,iEACA,yBACA,yCACA,iCACA,kCAGJ,CACE75E,MAAO,qCACP65E,OAAQ,CACN,oEACA,wCACA,wFACA,6CACA,qBACA,0DACA,6DAGJ,CACE75E,MAAO,iDACP2J,KAAM,iBACNkwE,OAAQ,CACN,kDACA,4CAGJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,kEAGJ,CACE75E,MAAO,oCACP65E,OAAQ,CACN,2CAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,gEAGJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,sEACA,kCAGJ,CACE75E,MAAO,wCACP65E,OAAQ,CACN,wDACA,gEACA,oEACA,2DACA,4DACA,wEACA,4DAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,kDACA,4EACA,iEACA,8EAGJ,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CACN,qEACA,6DACA,wEACA,+CACA,yCAGJ,CACE75E,MAAO,uCACP65E,OAAQ,CACN,2DACA,mCACA,2DACA,4CACA,4CACA,mEACA,4CACA,qCAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,wCACA,uFAGJ,CACE75E,MAAO,iDACP2J,KAAM,oBACNkwE,OAAQ,CAAC,uFAEX,CACE75E,MAAO,iDACP2J,KAAM,oBACNkwE,OAAQ,CACN,oEACA,wDACA,6FAGJ,CACE75E,MAAO,wCACP65E,OAAQ,CACN,2DACA,iDACA,6CACA,kDACA,wDACA,qCACA,8CACA,8CACA,oEACA,gDACA,mDACA,6EACA,4EACA,sEACA,4EACA,mDAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CAAC,gEAEX,CACE75E,MAAO,iDACP2J,KAAM,oBACNkwE,OAAQ,CAAC,gEAEX,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CACN,mEACA,kCAGJ,CACE75E,MAAO,uCACP65E,OAAQ,CACN,4BACA,mCACA,+DACA,kCACA,8CACA,iDACA,mCACA,6CACA,+DACA,+CACA,uDACA,4DACA,6DACA,8DACA,gEACA,2DACA,iEACA,8EACA,6EACA,0BAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CAAC,6CAEX,CACE75E,MAAO,iDACP2J,KAAM,qBACNkwE,OAAQ,CACN,qEACA,0CACA,0DAGJ,CACE75E,MAAO,yCACP65E,OAAQ,CACN,mCACA,8CACA,8DACA,wEACA,yFACA,uCACA,yCACA,0BAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,sDACA,mDACA,+EACA,iCACA,qFACA,+EAGJ,CACE75E,MAAO,iDACP2J,KAAM,qBACNkwE,OAAQ,CACN,oEACA,qDACA,gCACA,kCAGJ,CACE75E,MAAO,wCACP65E,OAAQ,CACN,gCACA,cAGJ,CACE75E,MAAO,iDACP2J,KAAM,kBACNkwE,OAAQ,CAAC,qEAEX,CACE75E,MAAO,iDACP2J,KAAM,iBACNkwE,OAAQ,CACN,sCACA,0BAGJ,CACE75E,MAAO,iDACP2J,KAAM,gBACNkwE,OAAQ,CACN,gEACA,uCACA,+DAGJ,CACE75E,MAAO,oCACP65E,OAAQ,CACN,6BACA,yCACA,6CACA,uCACA,wDACA,sCACA,qEACA,iCACA,wDACA,4CACA,oDACA,sDACA,wEACA,+DACA,iDAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,uDACA,mEACA,6EAGJ,CACE75E,MAAO,iDACP2J,KAAM,eACNkwE,OAAQ,CACN,gGACA,uCACA,kCAGJ,CACE75E,MAAO,mCACP65E,OAAQ,CACN,uEACA,6CACA,qFACA,6CACA,qEACA,iEACA,gDACA,kEACA,mDACA,+BACA,mEACA,gEACA,kCACA,gDAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,0DACA,+DACA,mEACA,gDACA,qDACA,gDAGJ,CACE75E,MAAO,iDACP2J,KAAM,eACNkwE,OAAQ,CACN,+DACA,qDAGJ,CACE75E,MAAO,mCACP65E,OAAQ,CACN,oEACA,4CACA,iDACA,uCACA,mCACA,iEACA,oDACA,uDACA,qCAGJ,CACE75E,MAAO,iDACP2J,KAAM,iBACNkwE,OAAQ,CACN,gEACA,mDACA,yEACA,4EAGJ,CACE75E,MAAO,oCACP65E,OAAQ,CACN,kEACA,+BACA,0DACA,0DACA,kDACA,4CACA,yCACA,8CAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,gDACA,8CAGJ,CACE75E,MAAO,iDACP2J,KAAM,iBACNkwE,OAAQ,CACN,iEACA,2DACA,wDACA,uDACA,mDAGJ,CACE75E,MAAO,qCACP65E,OAAQ,CACN,4CACA,uCACA,sDACA,6CACA,gDACA,yCACA,4DAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CAAC,iEAEX,CACE75E,MAAO,iDACP2J,KAAM,oBACNkwE,OAAQ,CACN,oEACA,sCACA,0EAGJ,CACE75E,MAAO,wCACP65E,OAAQ,CACN,uCACA,sCACA,yEACA,sDACA,kEACA,wEACA,gEACA,8EAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,iEACA,sHAGJ,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CACN,mEACA,iDACA,4DAGJ,CACE75E,MAAO,uCACP65E,OAAQ,CACN,+CACA,uCACA,2CACA,kEACA,kDACA,yCACA,wDACA,sDACA,sEAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,wDACA,kEACA,yGACA,6FACA,+FAGJ,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CACN,mEACA,yCACA,+DACA,4DACA,uFACA,0FAGJ,CACE75E,MAAO,uCACP65E,OAAQ,CACN,oDACA,yCACA,kEACA,qEACA,8EAGJ,CACE75E,MAAO,iDACP2J,KAAM,oBACNkwE,OAAQ,CACN,oEACA,yDACA,iHACA,4CAGJ,CACE75E,MAAO,wCACP65E,OAAQ,CACN,8BACA,gDACA,0CACA,oEACA,yCAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CAAC,uDAEX,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CACN,mEACA,uDACA,yCACA,yCAGJ,CACE75E,MAAO,uCACP65E,OAAQ,CACN,8CACA,mFACA,gEACA,yDACA,6DACA,yCACA,sBAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,gCACA,qEACA,+CACA,wDACA,sBAGJ,CACE75E,MAAO,iDACP2J,KAAM,mBACNkwE,OAAQ,CAAC,6DAEX,CACE75E,MAAO,iDACP2J,KAAM,qBACNkwE,OAAQ,CACN,qEACA,wDACA,sFACA,gEAGJ,CACE75E,MAAO,yCACP65E,OAAQ,CACN,oDACA,qEACA,yDACA,8CACA,wCAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,gCACA,mCACA,qCACA,iCACA,gDACA,uGAGJ,CACE75E,MAAO,iDACP2J,KAAM,kBACNkwE,OAAQ,CACN,kEACA,kKAEA,0BACA,MACA,8BAGJ,CACE75E,MAAO,sCACP65E,OAAQ,CACN,gFACA,4CAGJ,CACE75E,MAAO,2BACP45E,YAAY,EACZC,OAAQ,CACN,+IAEA,4EACA,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","sources":["webpack://axure-cloud/./src/components/AxAxureLogoRow.vue","webpack://axure-cloud/./src/components/AxAxureLogoRow.vue?88e1","webpack://axure-cloud/./src/components/AxAxureLogoRow.vue?70b6","webpack://axure-cloud/./src/components/AxAxureLogoRow.vue?b370","webpack://axure-cloud/./src/components/AxButton.vue?0520","webpack://axure-cloud/./src/components/AxButton.vue","webpack://axure-cloud/./src/components/AxButton.vue?b999","webpack://axure-cloud/./src/components/AxButtonGroup.vue","webpack://axure-cloud/./src/components/AxButtonGroup.vue?af14","webpack://axure-cloud/./src/components/AxButtonGroup.vue?057c","webpack://axure-cloud/./src/components/AxChangeOwner.vue","webpack://axure-cloud/./src/components/AxChangeOwner.vue?f7f6","webpack://axure-cloud/./src/components/AxChangeOwner.vue?cc05","webpack://axure-cloud/./src/components/AxChangeOwner.vue?8f93","webpack://axure-cloud/./src/components/AxCheckbox.vue","webpack://axure-cloud/./src/components/AxCheckbox.vue?8691","webpack://axure-cloud/./src/components/AxCheckbox.vue?71be","webpack://axure-cloud/./src/components/AxChoice.vue?0467","webpack://axure-cloud/./src/components/AxChoice.vue","webpack://axure-cloud/./src/components/AxChoice.vue?ea0f","webpack://axure-cloud/./src/components/AxCloudInfoDescription.vue","webpack://axure-cloud/./src/components/AxCloudInfoDescription.vue?d039","webpack://axure-cloud/./src/components/AxCloudInfoDescription.vue?5718","webpack://axure-cloud/./src/components/AxCloudInfoDescription.vue?9407","webpack://axure-cloud/./src/components/AxConfigureWorkspaceSecurity.vue","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersTable.vue","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersTable.vue?3653","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersTable.vue?84c4","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersTable.vue?b80a","webpack://axure-cloud/./src/components/AxConfigureWorkspaceSecurity.vue?46f0","webpack://axure-cloud/./src/components/AxConfigureWorkspaceSecurity.vue?ad92","webpack://axure-cloud/./src/components/AxConfigureWorkspaceSecurity.vue?1810","webpack://axure-cloud/./src/components/AxConfirmDialog.vue","webpack://axure-cloud/./src/components/AxConfirmDialog.vue?a684","webpack://axure-cloud/./src/components/AxConfirmDialog.vue?d2c6","webpack://axure-cloud/./src/components/AxConfirmDialog.vue?e889","webpack://axure-cloud/./src/components/AxCopyToClipboard.vue","webpack://axure-cloud/./src/components/AxCopyToClipboard.vue?955e","webpack://axure-cloud/./src/components/AxCopyToClipboard.vue?5129","webpack://axure-cloud/./src/components/AxCopyToClipboard.vue?64c7","webpack://axure-cloud/./src/components/AxDataTable.vue","webpack://axure-cloud/./src/components/icons/AxSorter.vue","webpack://axure-cloud/./src/components/icons/AxSorter.vue?387d","webpack://axure-cloud/./src/components/icons/AxSorter.vue?0c93","webpack://axure-cloud/./src/components/icons/AxSorter.vue?5f7a","webpack://axure-cloud/./src/components/AxDataTable.vue?86f5","webpack://axure-cloud/./src/components/AxDataTable.vue?1e7c","webpack://axure-cloud/./src/components/AxDataTableCellCheckbox.vue","webpack://axure-cloud/./src/components/AxDataTableCellCheckbox.vue?8f70","webpack://axure-cloud/./src/components/AxDataTableCellCheckbox.vue?851e","webpack://axure-cloud/./src/components/AxDataTableCellCheckbox.vue?98cc","webpack://axure-cloud/./src/components/AxDataTableNoData.vue","webpack://axure-cloud/./src/components/icons/AxCactus.vue","webpack://axure-cloud/./src/components/icons/AxCactus.vue?97b6","webpack://axure-cloud/./src/components/icons/AxCactus.vue?37cc","webpack://axure-cloud/./src/components/icons/AxCactus.vue?03d1","webpack://axure-cloud/./src/components/AxDataTableNoData.vue?242e","webpack://axure-cloud/./src/components/AxDataTableNoData.vue?3915","webpack://axure-cloud/./src/components/AxDataTableNoData.vue?2977","webpack://axure-cloud/./src/components/AxDate.vue?fbb8","webpack://axure-cloud/./src/components/AxDate.vue?9b69","webpack://axure-cloud/./src/components/AxDate.vue","webpack://axure-cloud/./src/components/AxDialogManager.vue?c6af","webpack://axure-cloud/./src/components/AxDialogManager.vue","webpack://axure-cloud/./src/components/AxDialogManager.vue?9040","webpack://axure-cloud/./src/components/AxDialog.vue?aa65","webpack://axure-cloud/./src/components/AxDialog.vue","webpack://axure-cloud/./src/components/AxDialog.vue?b470","webpack://axure-cloud/./src/components/AxDropdownButton.vue","webpack://axure-cloud/./src/components/AxDropdownButton.vue?80aa","webpack://axure-cloud/./src/components/AxDropdownButton.vue?b032","webpack://axure-cloud/./src/components/AxDropdownButton.vue?c1eb","webpack://axure-cloud/./src/components/AxEditable.vue","webpack://axure-cloud/./src/components/AxEditable.vue?947c","webpack://axure-cloud/./src/components/AxEditable.vue?443a","webpack://axure-cloud/./src/components/AxEditable.vue?a77e","webpack://axure-cloud/./src/components/AxFileUpload.vue","webpack://axure-cloud/./src/components/AxFileUpload.vue?73a2","webpack://axure-cloud/./src/components/AxFileUpload.vue?0fa5","webpack://axure-cloud/./src/components/AxFileUpload.vue?e01c","webpack://axure-cloud/./src/components/AxFilesystemNodeDelete.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeDelete.vue?e797","webpack://axure-cloud/./src/components/AxFilesystemNodeDelete.vue?9a33","webpack://axure-cloud/./src/components/AxFilesystemNodeDelete.vue?6c60","webpack://axure-cloud/./src/components/AxFilesystemNodeLink.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeLink.vue?b2aa","webpack://axure-cloud/./src/components/AxFilesystemNodeLink.vue?c0c4","webpack://axure-cloud/./src/components/AxFilesystemNodeLink.vue?6ee4","webpack://axure-cloud/./src/components/AxFilesystemTable.vue","webpack://axure-cloud/./src/components/AxFilesystemNodesActions.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeCreate.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeCreate.vue?b8d2","webpack://axure-cloud/./src/components/AxFilesystemNodeCreate.vue?75ee","webpack://axure-cloud/./src/components/AxFilesystemNodeCreate.vue?a13d","webpack://axure-cloud/./src/components/AxFilesystemNodesActions.vue?3ab2","webpack://axure-cloud/./src/components/AxFilesystemNodesActions.vue?67de","webpack://axure-cloud/./src/components/AxFilesystemNodesActions.vue?af9d","webpack://axure-cloud/./src/components/AxFilesystemTable.vue?756c","webpack://axure-cloud/./src/components/AxFilesystemTable.vue?5566","webpack://axure-cloud/./src/components/AxFilesystemTable.vue?7b98","webpack://axure-cloud/./src/components/AxFilesystemTreeProjects.vue","webpack://axure-cloud/./src/components/AxTreeNode.vue?33c2","webpack://axure-cloud/./src/components/AxTreeNode.vue","webpack://axure-cloud/./src/components/AxTreeNode.vue?2f04","webpack://axure-cloud/./src/components/AxTree.vue?1df4","webpack://axure-cloud/./src/components/AxTree.vue","webpack://axure-cloud/./src/components/AxTree.vue?41d1","webpack://axure-cloud/./src/components/AxFilesystemTreeProjects.vue?88d5","webpack://axure-cloud/./src/components/AxFilesystemTreeProjects.vue?4122","webpack://axure-cloud/./src/components/AxFilesystemTreeProjects.vue?0edb","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsBase.vue","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsBase.vue?a32c","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsBase.vue?fafd","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsBase.vue?17dd","webpack://axure-cloud/./src/components/AxFilesystemViewerHeader.vue","webpack://axure-cloud/./src/components/AxFilesystemViewerActions.vue","webpack://axure-cloud/./src/components/AxFilesystemViewerActions.vue?ccfd","webpack://axure-cloud/./src/components/AxFilesystemViewerActions.vue?5b90","webpack://axure-cloud/./src/components/AxFilesystemViewerActions.vue?618f","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsFolder.vue","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsFolder.vue?8590","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsFolder.vue?170d","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsFolder.vue?2344","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsWorkspace.vue","webpack://axure-cloud/./src/components/AxFilesystemArchive.vue","webpack://axure-cloud/./src/components/AxFilesystemArchive.vue?a0d8","webpack://axure-cloud/./src/components/AxFilesystemArchive.vue?9acf","webpack://axure-cloud/./src/components/AxFilesystemArchive.vue?981a","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersJoin.vue","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersJoin.vue?c3f6","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersJoin.vue?44b4","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersJoin.vue?8dc2","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsWorkspace.vue?5608","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsWorkspace.vue?4c68","webpack://axure-cloud/./src/components/AxFilesystemViewerActionsWorkspace.vue?61dd","webpack://axure-cloud/./src/components/AxFilesystemViewerHeader.vue?f55f","webpack://axure-cloud/./src/components/AxFilesystemViewerHeader.vue?df08","webpack://axure-cloud/./src/components/AxFilesystemViewerHeader.vue?d535","webpack://axure-cloud/./src/components/AxForm.vue","webpack://axure-cloud/./src/components/AxForm.vue?7ed7","webpack://axure-cloud/./src/components/AxForm.vue?ab93","webpack://axure-cloud/./src/components/AxForm.vue?4711","webpack://axure-cloud/./src/components/AxFormErrors.vue","webpack://axure-cloud/./src/components/AxFormErrors.vue?ff33","webpack://axure-cloud/./src/components/AxFormErrors.vue?03e4","webpack://axure-cloud/./src/components/AxFormErrors.vue?dee9","webpack://axure-cloud/./src/components/AxFormGroup.vue","webpack://axure-cloud/./src/components/AxFormGroup.vue?b878","webpack://axure-cloud/./src/components/AxFormGroup.vue?4d61","webpack://axure-cloud/./src/components/AxFormSuccess.vue","webpack://axure-cloud/./src/components/AxFormSuccess.vue?2ccd","webpack://axure-cloud/./src/components/AxFormSuccess.vue?5829","webpack://axure-cloud/./src/components/AxFormSuccess.vue?d66b","webpack://axure-cloud/./src/components/AxHelp.vue","webpack://axure-cloud/./src/components/AxHelp.vue?2524","webpack://axure-cloud/./src/components/AxHelp.vue?d1f6","webpack://axure-cloud/./src/components/AxHelp.vue?4c8c","webpack://axure-cloud/./src/components/AxIcon.vue","webpack://axure-cloud/./src/components/AxIcon.vue?4e3c","webpack://axure-cloud/./src/components/AxIcon.vue?07f4","webpack://axure-cloud/./src/components/AxInput.vue","webpack://axure-cloud/./src/components/AxInput.vue?fd97","webpack://axure-cloud/./src/components/AxInput.vue?16cc","webpack://axure-cloud/./src/components/AxInputEmails.vue","webpack://axure-cloud/./src/components/AxChip.vue","webpack://axure-cloud/./src/components/AxChip.vue?ec77","webpack://axure-cloud/./src/components/AxChip.vue?37da","webpack://axure-cloud/./src/components/AxChip.vue?1c04","webpack://axure-cloud/./src/components/AxTags.vue?9a10","webpack://axure-cloud/./src/components/AxTags.vue","webpack://axure-cloud/./src/components/AxTags.vue?f0ac","webpack://axure-cloud/./src/components/AxInputEmails.vue?7c80","webpack://axure-cloud/./src/components/AxInputEmails.vue?1cb6","webpack://axure-cloud/./src/components/AxInputEmails.vue?9326","webpack://axure-cloud/./src/components/AxInputSearch.vue","webpack://axure-cloud/./src/components/AxInputSearch.vue?ebe0","webpack://axure-cloud/./src/components/AxInputSearch.vue?9d7d","webpack://axure-cloud/./src/components/AxInputSearch.vue?a118","webpack://axure-cloud/./src/components/AxList.vue","webpack://axure-cloud/./src/components/AxList.vue?f9ef","webpack://axure-cloud/./src/components/AxList.vue?8584","webpack://axure-cloud/./src/components/AxList.vue?cea7","webpack://axure-cloud/./src/components/AxListItem.vue","webpack://axure-cloud/./src/components/AxListItem.vue?3bd5","webpack://axure-cloud/./src/components/AxListItem.vue?84b2","webpack://axure-cloud/./src/components/AxListItem.vue?858f","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersInvite.vue","webpack://axure-cloud/./src/components/AxReCaptcha.vue","webpack://axure-cloud/./src/components/AxReCaptcha.vue?4c7d","webpack://axure-cloud/./src/components/AxReCaptcha.vue?fd05","webpack://axure-cloud/./src/components/AxReCaptcha.vue?0b06","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersInvite.vue?e92f","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersInvite.vue?6dd5","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersInvite.vue?6273","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersSelect.vue","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersSelect.vue?a5d0","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersSelect.vue?4800","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersSelect.vue?55e7","webpack://axure-cloud/./src/components/AxMenu.vue","webpack://axure-cloud/./src/common/axshare/popperjs.ts","webpack://axure-cloud/./src/components/AxMenu.vue?803d","webpack://axure-cloud/./src/components/AxMenu.vue?f6a9","webpack://axure-cloud/./src/components/AxMenu.vue?6788","webpack://axure-cloud/./src/components/AxNavigation.vue","webpack://axure-cloud/./src/components/AxNavigationBreadcrumbs.vue","webpack://axure-cloud/./src/components/AxNavigationBreadcrumbs.vue?5b98","webpack://axure-cloud/./src/components/AxNavigationBreadcrumbs.vue?da82","webpack://axure-cloud/./src/components/AxNavigationBreadcrumbs.vue?7c8e","webpack://axure-cloud/./src/components/AxNavigation.vue?82f7","webpack://axure-cloud/./src/components/AxNavigation.vue?3e5d","webpack://axure-cloud/./src/components/AxNavigation.vue?f5e2","webpack://axure-cloud/./src/components/AxNavigationLinkFs.vue","webpack://axure-cloud/./src/components/AxNavigationLinkPrototype.vue","webpack://axure-cloud/./src/components/AxNavigationLinkPrototype.vue?bce9","webpack://axure-cloud/./src/components/AxNavigationLinkPrototype.vue?f8e0","webpack://axure-cloud/./src/components/AxNavigationLinkPrototype.vue?24b8","webpack://axure-cloud/./src/components/AxNavigationLinkFs.vue?e8fc","webpack://axure-cloud/./src/components/AxNavigationLinkFs.vue?0710","webpack://axure-cloud/./src/components/AxNavigationLinkFs.vue?4770","webpack://axure-cloud/./src/components/AxProgressBar.vue","webpack://axure-cloud/./src/components/AxProgressBar.vue?3006","webpack://axure-cloud/./src/components/AxProgressBar.vue?23c3","webpack://axure-cloud/./src/components/AxProgressBar.vue?c1bf","webpack://axure-cloud/./src/components/AxProjectFileDownload.vue","webpack://axure-cloud/./src/components/AxProjectFileDownload.vue?c8a9","webpack://axure-cloud/./src/components/AxProjectFileDownload.vue?b5b1","webpack://axure-cloud/./src/components/AxProjectFileDownload.vue?ea20","webpack://axure-cloud/./src/components/AxProjectFilePicker.vue","webpack://axure-cloud/./src/components/AxProjectFileUploadIndicator.vue","webpack://axure-cloud/./src/components/AxProjectFileUploadIndicator.vue?43cd","webpack://axure-cloud/./src/components/AxProjectFileUploadIndicator.vue?f278","webpack://axure-cloud/./src/components/AxProjectFileUploadIndicator.vue?8795","webpack://axure-cloud/./src/components/AxProjectFilePicker.vue?07ad","webpack://axure-cloud/./src/components/AxProjectFilePicker.vue?ec50","webpack://axure-cloud/./src/components/AxProjectFilePicker.vue?4687","webpack://axure-cloud/./src/components/AxProjectFileUpload.vue","webpack://axure-cloud/./src/components/AxProjectFileUpload.vue?214f","webpack://axure-cloud/./src/components/AxProjectFileUpload.vue?5947","webpack://axure-cloud/./src/components/AxProjectFileUpload.vue?02ff","webpack://axure-cloud/./src/components/AxProjectIcon.vue","webpack://axure-cloud/./src/components/AxProjectIcon.vue?12c4","webpack://axure-cloud/./src/components/AxProjectIcon.vue?8052","webpack://axure-cloud/./src/components/AxProjectIcon.vue?c3a0","webpack://axure-cloud/./src/components/AxProjectInviteSettings.vue","webpack://axure-cloud/./src/components/AxProjectInviteSettings.vue?87ec","webpack://axure-cloud/./src/components/AxProjectInviteSettings.vue?f8ba","webpack://axure-cloud/./src/components/AxProjectInviteSettings.vue?2ea9","webpack://axure-cloud/./src/components/AxProjectState.vue","webpack://axure-cloud/./src/components/AxProjectLoader.vue","webpack://axure-cloud/./src/components/AxProjectLoader.vue?1c96","webpack://axure-cloud/./src/components/AxProjectLoader.vue?4346","webpack://axure-cloud/./src/components/AxProjectStateEmpty.vue","webpack://axure-cloud/./src/components/AxProjectStateEmpty.vue?ed4a","webpack://axure-cloud/./src/components/AxProjectStateEmpty.vue?d6c7","webpack://axure-cloud/./src/components/AxProjectStateEmpty.vue?36bc","webpack://axure-cloud/./src/components/AxProjectStateGenerating.vue","webpack://axure-cloud/./src/components/AxProjectStateGenerating.vue?01a5","webpack://axure-cloud/./src/components/AxProjectStateGenerating.vue?49d0","webpack://axure-cloud/./src/components/AxProjectStateGenerating.vue?a3f6","webpack://axure-cloud/./src/components/AxProjectStateGenerationFailed.vue","webpack://axure-cloud/./src/components/AxProjectStateGenerationFailed.vue?d0cc","webpack://axure-cloud/./src/components/AxProjectStateGenerationFailed.vue?fb51","webpack://axure-cloud/./src/components/AxProjectStateGenerationFailed.vue?6409","webpack://axure-cloud/./src/components/AxProjectState.vue?5521","webpack://axure-cloud/./src/components/AxProjectState.vue?fa37","webpack://axure-cloud/./src/components/AxProjectState.vue?8766","webpack://axure-cloud/./src/components/AxProjectThumbnail.vue","webpack://axure-cloud/./src/components/AxProjectThumbnail.vue?2adb","webpack://axure-cloud/./src/components/AxProjectThumbnail.vue?b38a","webpack://axure-cloud/./src/components/AxProjectThumbnail.vue?f454","webpack://axure-cloud/./src/components/AxPublishNotes.vue","webpack://axure-cloud/./src/components/AxPublishNotes.vue?ee1c","webpack://axure-cloud/./src/components/AxPublishNotes.vue?f042","webpack://axure-cloud/./src/components/AxPublishNotes.vue?b387","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsWorkspace.vue","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsWorkspace.vue?065d","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsWorkspace.vue?cd5d","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsWorkspace.vue?7569","webpack://axure-cloud/./src/components/AxSelectNative.vue","webpack://axure-cloud/./src/components/AxSelectNative.vue?9b3f","webpack://axure-cloud/./src/components/AxSelectNative.vue?5878","webpack://axure-cloud/./src/components/AxSelectNative.vue?c032","webpack://axure-cloud/./src/components/AxSharedWithWorkspace.vue","webpack://axure-cloud/./src/components/AxPerfectScrollbar.vue","webpack://axure-cloud/./src/components/AxSharedWith.vue","webpack://axure-cloud/./src/components/AxPerfectScrollbar.vue?6f9b","webpack://axure-cloud/./src/components/AxPerfectScrollbar.vue?22a4","webpack://axure-cloud/./src/components/AxUserAvatarStack.vue","webpack://axure-cloud/./src/components/AxUserAvatarStack.vue?a36a","webpack://axure-cloud/./src/components/AxUserAvatarStack.vue?f4cf","webpack://axure-cloud/./src/components/AxUserAvatarStack.vue?11ce","webpack://axure-cloud/./src/components/AxSharedWith.vue?644a","webpack://axure-cloud/./src/components/AxSharedWith.vue?2a85","webpack://axure-cloud/./src/components/AxSharedWith.vue?8411","webpack://axure-cloud/./src/components/AxSharedWithWorkspace.vue?46f3","webpack://axure-cloud/./src/components/AxSharedWithWorkspace.vue?fe69","webpack://axure-cloud/./src/components/AxSharedWithWorkspace.vue?665b","webpack://axure-cloud/./src/components/AxShortcutCommentsCount.vue","webpack://axure-cloud/./src/components/AxShortcutCommentsCount.vue?5d38","webpack://axure-cloud/./src/components/AxShortcutCommentsCount.vue?970b","webpack://axure-cloud/./src/components/AxShortcutCommentsCount.vue?452a","webpack://axure-cloud/./src/components/AxShortcutDropdownButton.vue","webpack://axure-cloud/./src/components/AxShortcutDropdownButton.vue?459d","webpack://axure-cloud/./src/components/AxShortcutDropdownButton.vue?94d7","webpack://axure-cloud/./src/components/AxShortcutDropdownButton.vue?6147","webpack://axure-cloud/./src/components/AxShortcutFilesystemActions.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeClone.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeClone.vue?165b","webpack://axure-cloud/./src/components/AxFilesystemNodeClone.vue?803e","webpack://axure-cloud/./src/components/AxFilesystemNodeClone.vue?c096","webpack://axure-cloud/./src/components/AxFilesystemNodeMove.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeMove.vue?5063","webpack://axure-cloud/./src/components/AxFilesystemNodeMove.vue?3619","webpack://axure-cloud/./src/components/AxFilesystemNodeMove.vue?d7c4","webpack://axure-cloud/./src/components/AxFilesystemNodeRename.vue","webpack://axure-cloud/./src/components/AxFilesystemNodeRename.vue?c421","webpack://axure-cloud/./src/components/AxFilesystemNodeRename.vue?2638","webpack://axure-cloud/./src/components/AxFilesystemNodeRename.vue?08af","webpack://axure-cloud/./src/components/AxShortcutFilesystemActions.vue?2b48","webpack://axure-cloud/./src/components/AxShortcutFilesystemActions.vue?80de","webpack://axure-cloud/./src/components/AxShortcutFilesystemActions.vue?06ae","webpack://axure-cloud/./src/components/AxShortcutLink.vue","webpack://axure-cloud/./src/components/AxShortcutLink.vue?2280","webpack://axure-cloud/./src/components/AxShortcutLink.vue?5741","webpack://axure-cloud/./src/components/AxShortcutLink.vue?8b1d","webpack://axure-cloud/./src/components/AxShortcutModified.vue","webpack://axure-cloud/./src/components/AxShortcutModified.vue?1c80","webpack://axure-cloud/./src/components/AxShortcutModified.vue?6662","webpack://axure-cloud/./src/components/AxShortcutModified.vue?96a6","webpack://axure-cloud/./src/components/AxShortcutPublicLink.vue","webpack://axure-cloud/./src/components/AxShortcutPublicLink.vue?ffcb","webpack://axure-cloud/./src/components/AxShortcutPublicLink.vue?109a","webpack://axure-cloud/./src/components/AxShortcutPublicLink.vue?902b","webpack://axure-cloud/./src/components/AxToggleButton.vue","webpack://axure-cloud/./src/components/AxToggleButton.vue?0a22","webpack://axure-cloud/./src/components/AxToggleButton.vue?9856","webpack://axure-cloud/./src/components/AxToggleButton.vue?e455","webpack://axure-cloud/./src/components/AxTooltip.vue?573d","webpack://axure-cloud/./src/components/AxTooltip.vue","webpack://axure-cloud/./src/components/AxTooltip.vue?c897","webpack://axure-cloud/./src/components/AxUnreadMentionsIndicator.vue","webpack://axure-cloud/./src/components/AxUnreadMentionsIndicator.vue?e3b7","webpack://axure-cloud/./src/components/AxUnreadMentionsIndicator.vue?07db","webpack://axure-cloud/./src/components/AxUnreadMentionsIndicator.vue?f946","webpack://axure-cloud/./src/components/AxUser.vue","webpack://axure-cloud/./src/components/AxUser.vue?ff94","webpack://axure-cloud/./src/components/AxUser.vue?d7e6","webpack://axure-cloud/./src/components/AxUser.vue?3d79","webpack://axure-cloud/./src/components/AxUserAvatar.vue","webpack://axure-cloud/./src/components/AxUserAvatarDefault.vue","webpack://axure-cloud/./src/components/AxUserAvatarDefault.vue?50a9","webpack://axure-cloud/./src/components/AxUserAvatarDefault.vue?ef3e","webpack://axure-cloud/./src/components/AxUserAvatarDefault.vue?06f8","webpack://axure-cloud/./src/components/AxUserAvatarDefault.vue?f81f","webpack://axure-cloud/./src/components/AxUserAvatar.vue?d2f0","webpack://axure-cloud/./src/components/AxUserAvatar.vue?8523","webpack://axure-cloud/./src/components/AxUserAvatar.vue?2164","webpack://axure-cloud/./src/components/AxWorkspaceIcon.vue","webpack://axure-cloud/./src/components/AxWorkspaceIcon.vue?cb60","webpack://axure-cloud/./src/components/AxWorkspaceIcon.vue?102b","webpack://axure-cloud/./src/components/AxWorkspaceIcon.vue?db65","webpack://axure-cloud/./src/components/AxWorkspacesToggleAll.vue","webpack://axure-cloud/./src/components/AxWorkspacesToggleAll.vue?7790","webpack://axure-cloud/./src/components/AxWorkspacesToggleAll.vue?5ac6","webpack://axure-cloud/./src/components/AxWorkspacesToggleAll.vue?5bfb","webpack://axure-cloud/./src/components/icons/AxAxureLogo.vue","webpack://axure-cloud/./src/components/icons/AxAxureLogo.vue?5fe5","webpack://axure-cloud/./src/components/icons/AxAxureLogo.vue?4894","webpack://axure-cloud/./src/components/icons/AxAxureLogo.vue?6046","webpack://axure-cloud/./src/components/icons/AxFolder.vue","webpack://axure-cloud/./src/components/icons/AxFolder.vue?6f35","webpack://axure-cloud/./src/components/icons/AxFolder.vue?3f7a","webpack://axure-cloud/./src/components/icons/AxFolder.vue?8161","webpack://axure-cloud/./src/layouts/FilesystemViewer.vue","webpack://axure-cloud/./src/layouts/FilesystemViewer.vue?cf21","webpack://axure-cloud/./src/layouts/FilesystemViewer.vue?21f8","webpack://axure-cloud/./src/layouts/FilesystemViewer.vue?f468","webpack://axure-cloud/./src/layouts/WelcomeLayout.vue","webpack://axure-cloud/./src/layouts/WelcomeLayout.vue?f4b8","webpack://axure-cloud/./src/layouts/WelcomeLayout.vue?d8c1","webpack://axure-cloud/./src/layouts/WelcomeLayout.vue?4b6a","webpack://axure-cloud/./src/common/axshare/analytics.ts","webpack://axure-cloud/./src/common/axshare/api.ts","webpack://axure-cloud/./src/common/axshare/constants.ts","webpack://axure-cloud/./src/common/axshare/errors.ts","webpack://axure-cloud/./src/common/axshare/project.ts","webpack://axure-cloud/./src/common/axshare/prototype.ts","webpack://axure-cloud/./src/common/axshare/notification.ts","webpack://axure-cloud/./src/common/axshare/links.ts","webpack://axure-cloud/./src/common/axshare/messages.ts","webpack://axure-cloud/./src/common/axshare/persistent.ts","webpack://axure-cloud/./src/common/axshare/routing.ts","webpack://axure-cloud/./src/common/axshare/storage.ts","webpack://axure-cloud/./src/common/axshare/user.ts","webpack://axure-cloud/./src/common/axshare/workspaces.ts","webpack://axure-cloud/./src/common/desktop/links.ts","webpack://axure-cloud/./src/common/environment.ts","webpack://axure-cloud/./src/common/expo/actions.ts","webpack://axure-cloud/./src/common/fs/types.ts","webpack://axure-cloud/./src/common/fs/mappers.ts","webpack://axure-cloud/./src/common/fs/utils.ts","webpack://axure-cloud/./src/common/fs/validators.ts","webpack://axure-cloud/./src/common/inspect/events.ts","webpack://axure-cloud/./src/common/inspect/enums.ts","webpack://axure-cloud/./src/common/inspect/plugins.ts","webpack://axure-cloud/./src/common/lib/array.ts","webpack://axure-cloud/./src/common/lib/browser.ts","webpack://axure-cloud/./src/common/lib/file.ts","webpack://axure-cloud/./src/common/lib/date.ts","webpack://axure-cloud/./src/common/lib/object.ts","webpack://axure-cloud/./src/common/lib/function.ts","webpack://axure-cloud/./src/common/lib/error.ts","webpack://axure-cloud/./src/common/lib/number.ts","webpack://axure-cloud/./src/common/lib/promise.ts","webpack://axure-cloud/./src/common/lib/string.ts","webpack://axure-cloud/./src/common/notifications/permissions.ts","webpack://axure-cloud/./src/common/search/SearchResult.ts","webpack://axure-cloud/./src/common/search/SearchUtils.ts","webpack://axure-cloud/./src/common/search/Search.ts","webpack://axure-cloud/./src/common/utils.ts","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsBase.ts","webpack://axure-cloud/./src/components/utils/index.ts","webpack://axure-cloud/./src/desktop/events.ts","webpack://axure-cloud/./src/generated/expo.ts","webpack://axure-cloud/./src/generated/models.ts","webpack://axure-cloud/./src/vendor/portal-vue.ts","webpack://axure-cloud/./src/vendor/vue-gtm.ts","webpack://axure-cloud/./src/vendor/vue-lazyload.ts","webpack://axure-cloud/./src/vendor/vue-meta.ts","webpack://axure-cloud/./src/vendor/vue-transmit.ts","webpack://axure-cloud/./src/vendor/index.ts","webpack://axure-cloud/./src/App.vue","webpack://axure-cloud/./src/mixins/AppStatus.ts","webpack://axure-cloud/./src/mixins/DesktopClasses.ts","webpack://axure-cloud/./src/mixins/DesktopExternalLinks.ts","webpack://axure-cloud/./src/pages/AppView.vue","webpack://axure-cloud/./src/components/AxAppFailure.vue","webpack://axure-cloud/./src/components/AxAppFailureApiException.vue","webpack://axure-cloud/./src/components/AxAppFailureApiException.vue?5a0b","webpack://axure-cloud/./src/components/AxAppFailureApiException.vue?aa30","webpack://axure-cloud/./src/components/AxAppFailureApiException.vue?1240","webpack://axure-cloud/./src/components/AxAppFailureDb.vue","webpack://axure-cloud/./src/components/AxAppFailureDb.vue?fc26","webpack://axure-cloud/./src/components/AxAppFailureDb.vue?a4fa","webpack://axure-cloud/./src/components/AxAppFailureDb.vue?7c03","webpack://axure-cloud/./src/components/AxAppFailureFallback.vue","webpack://axure-cloud/./src/components/AxAppFailureFallback.vue?4a04","webpack://axure-cloud/./src/components/AxAppFailureFallback.vue?cc07","webpack://axure-cloud/./src/components/AxAppFailureFallback.vue?d5dc","webpack://axure-cloud/./src/components/AxAppFailureJsonSettingsLoad.vue","webpack://axure-cloud/./src/components/AxAppFailureJsonSettingsLoad.vue?818b","webpack://axure-cloud/./src/components/AxAppFailureJsonSettingsLoad.vue?8c53","webpack://axure-cloud/./src/components/AxAppFailureJsonSettingsLoad.vue?9a7d","webpack://axure-cloud/./src/components/AxAppFailureReadOnly.vue","webpack://axure-cloud/./src/components/AxAppFailureReadOnly.vue?ce48","webpack://axure-cloud/./src/components/AxAppFailureReadOnly.vue?6013","webpack://axure-cloud/./src/components/AxAppFailureReadOnly.vue?9bf6","webpack://axure-cloud/./src/components/AxAppFailureReadOnlySignIn.vue","webpack://axure-cloud/./src/components/AxAppFailureRetry.vue","webpack://axure-cloud/./src/components/AxAppFailureRetry.vue?cd26","webpack://axure-cloud/./src/components/AxAppFailureRetry.vue?eade","webpack://axure-cloud/./src/components/AxAppFailureRetry.vue?5724","webpack://axure-cloud/./src/components/AxAppFailureReadOnlySignIn.vue?1ad9","webpack://axure-cloud/./src/components/AxAppFailureReadOnlySignIn.vue?ac30","webpack://axure-cloud/./src/components/AxAppFailureReadOnlySignIn.vue?0400","webpack://axure-cloud/./src/components/AxAppFailureReload.vue","webpack://axure-cloud/./src/components/AxAppFailureReload.vue?c292","webpack://axure-cloud/./src/components/AxAppFailureReload.vue?dc2e","webpack://axure-cloud/./src/components/AxAppFailureReload.vue?3ddc","webpack://axure-cloud/./src/components/AxOnline.vue?e6d8","webpack://axure-cloud/./src/components/AxOnline.vue","webpack://axure-cloud/./src/components/AxDelayed.vue","webpack://axure-cloud/./src/components/AxRetry.vue","webpack://axure-cloud/./src/components/AxOnline.vue?3aed","webpack://axure-cloud/./src/components/AxAppFailure.vue?48f0","webpack://axure-cloud/./src/components/AxAppFailure.vue?a8f0","webpack://axure-cloud/./src/components/AxAppFailure.vue?ca02","webpack://axure-cloud/./src/components/AxAppSplashScreen.vue","webpack://axure-cloud/./src/components/AxAppSplashScreen.vue?db4a","webpack://axure-cloud/./src/components/AxAppSplashScreen.vue?1682","webpack://axure-cloud/./src/components/AxAppSplashScreen.vue?33ee","webpack://axure-cloud/./src/components/AxDelayed.vue?1c75","webpack://axure-cloud/./src/components/AxDelayed.vue?9c96","webpack://axure-cloud/./src/pages/AppView.vue?ce8b","webpack://axure-cloud/./src/pages/AppView.vue?12d5","webpack://axure-cloud/./src/pages/AppView.vue?a7d7","webpack://axure-cloud/./src/components/AxVersionTracker.vue","webpack://axure-cloud/./src/components/AxRetry.vue?eba0","webpack://axure-cloud/./src/components/AxRetry.vue?4efb","webpack://axure-cloud/./src/components/AxVersionTracker.vue?e7d3","webpack://axure-cloud/./src/components/AxVersionTracker.vue?6475","webpack://axure-cloud/./src/components/AxVersionTracker.vue?1e93","webpack://axure-cloud/./src/App.vue?38a5","webpack://axure-cloud/./src/service-worker/SWEvents.ts","webpack://axure-cloud/./src/App.vue?892f","webpack://axure-cloud/./src/App.vue?0e40","webpack://axure-cloud/./src/service-worker/SWUpdateEvent.ts","webpack://axure-cloud/./src/service-worker/registerServiceWorker.ts","webpack://axure-cloud/./src/main.ts","webpack://axure-cloud/./src/mixins/ClickAway.ts","webpack://axure-cloud/./src/mixins/ShortcutLink.ts","webpack://axure-cloud/./src/mixins/WorkspaceMembers.ts","webpack://axure-cloud/./src/router/admin/index.ts","webpack://axure-cloud/./src/pages/Filesystem.vue","webpack://axure-cloud/./src/components/AxFilesystemNavigationError.vue","webpack://axure-cloud/./src/components/AxConnectionTrouble.vue","webpack://axure-cloud/./src/components/AxConnectionTrouble.vue?20b3","webpack://axure-cloud/./src/components/AxConnectionTrouble.vue?ef55","webpack://axure-cloud/./src/components/AxConnectionTrouble.vue?afd6","webpack://axure-cloud/./src/components/AxFilesystemNavigationError.vue?d680","webpack://axure-cloud/./src/components/AxFilesystemNavigationError.vue?9682","webpack://axure-cloud/./src/components/AxFilesystemNavigationError.vue?de41","webpack://axure-cloud/./src/pages/Filesystem.vue?a840","webpack://axure-cloud/./src/pages/Filesystem.vue?2da9","webpack://axure-cloud/./src/pages/Filesystem.vue?37c6","webpack://axure-cloud/./src/pages/FilesystemConfigureSecurity.vue","webpack://axure-cloud/./src/pages/FilesystemConfigureSecurity.vue?f635","webpack://axure-cloud/./src/pages/FilesystemConfigureSecurity.vue?0c00","webpack://axure-cloud/./src/pages/FilesystemConfigureSecurity.vue?0bb3","webpack://axure-cloud/./src/pages/FilesystemCreateFolder.vue","webpack://axure-cloud/./src/components/AxCreateFolder.vue","webpack://axure-cloud/./src/components/AxCreateFolder.vue?70f4","webpack://axure-cloud/./src/components/AxCreateFolder.vue?5583","webpack://axure-cloud/./src/components/AxCreateFolder.vue?501b","webpack://axure-cloud/./src/pages/FilesystemCreateFolder.vue?6fd4","webpack://axure-cloud/./src/pages/FilesystemCreateFolder.vue?6455","webpack://axure-cloud/./src/pages/FilesystemCreateFolder.vue?e864","webpack://axure-cloud/./src/pages/FilesystemCreateProject.vue","webpack://axure-cloud/./src/layouts/CreateProject.vue","webpack://axure-cloud/./src/layouts/CreateProject.vue?06ba","webpack://axure-cloud/./src/layouts/CreateProject.vue?b1a6","webpack://axure-cloud/./src/layouts/CreateProject.vue?62af","webpack://axure-cloud/./src/components/AxCreateProject.vue","webpack://axure-cloud/./src/components/AxCreateProjectRp.vue","webpack://axure-cloud/./src/components/AxCreateProjectCompact.vue","webpack://axure-cloud/./src/components/AxCreateProjectCompact.vue?0268","webpack://axure-cloud/./src/components/AxCreateProjectCompact.vue?8408","webpack://axure-cloud/./src/components/AxCreateProjectCompact.vue?4e40","webpack://axure-cloud/./src/components/AxPanel.vue","webpack://axure-cloud/./src/components/AxVNode.vue?1f5f","webpack://axure-cloud/./src/components/AxVNode.vue","webpack://axure-cloud/./src/components/AxInputGroup.vue","webpack://axure-cloud/./src/components/AxVNode.vue?eaeb","webpack://axure-cloud/./src/components/AxPanel.vue?60a2","webpack://axure-cloud/./src/components/AxPanel.vue?a025","webpack://axure-cloud/./src/components/AxPanel.vue?791b","webpack://axure-cloud/./src/components/AxCreateProjectRp.vue?8e68","webpack://axure-cloud/./src/components/AxCreateProjectRp.vue?106e","webpack://axure-cloud/./src/components/AxCreateProjectRp.vue?0452","webpack://axure-cloud/./src/components/AxCreateProjectSketch.vue","webpack://axure-cloud/./src/components/AxInputGroup.vue?79dc","webpack://axure-cloud/./src/components/AxInputGroup.vue?bc3d","webpack://axure-cloud/./src/components/AxCreateProjectSketch.vue?2f8a","webpack://axure-cloud/./src/components/AxCreateProjectSketch.vue?dc8d","webpack://axure-cloud/./src/components/AxCreateProjectSketch.vue?bcea","webpack://axure-cloud/./src/components/AxCreateProject.vue?5c72","webpack://axure-cloud/./src/components/AxCreateProject.vue?09a7","webpack://axure-cloud/./src/components/AxCreateProject.vue?53b7","webpack://axure-cloud/./src/pages/FilesystemCreateProject.vue?83f2","webpack://axure-cloud/./src/pages/FilesystemCreateProject.vue?89b4","webpack://axure-cloud/./src/pages/FilesystemCreateProject.vue?487b","webpack://axure-cloud/./src/pages/FilesystemManage.vue","webpack://axure-cloud/./src/pages/FilesystemManage.vue?65ee","webpack://axure-cloud/./src/pages/FilesystemManage.vue?9637","webpack://axure-cloud/./src/pages/FilesystemManage.vue?734f","webpack://axure-cloud/./src/pages/FilesystemUsersInvite.vue","webpack://axure-cloud/./src/pages/FilesystemUsersInvite.vue?56e0","webpack://axure-cloud/./src/pages/FilesystemUsersInvite.vue?6796","webpack://axure-cloud/./src/pages/FilesystemUsersInvite.vue?0389","webpack://axure-cloud/./src/pages/FilesystemUsersLeave.vue","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersLeave.vue","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersLeave.vue?1633","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersLeave.vue?fde9","webpack://axure-cloud/./src/components/AxManageUsers/AxManageUsersLeave.vue?4da5","webpack://axure-cloud/./src/pages/FilesystemUsersLeave.vue?d8a7","webpack://axure-cloud/./src/pages/FilesystemUsersLeave.vue?404d","webpack://axure-cloud/./src/pages/FilesystemUsersLeave.vue?9728","webpack://axure-cloud/./src/pages/FilesystemWorkspace.vue","webpack://axure-cloud/./src/pages/FilesystemWorkspace.vue?3429","webpack://axure-cloud/./src/pages/FilesystemWorkspace.vue?e9fa","webpack://axure-cloud/./src/pages/FilesystemWorkspace.vue?9d77","webpack://axure-cloud/./src/router/manage-account/index.ts","webpack://axure-cloud/./src/router/notification/index.ts","webpack://axure-cloud/./src/components/AxFilesystemNavigation.vue","webpack://axure-cloud/./src/components/AxCreateWorkspace.vue","webpack://axure-cloud/./src/components/AxCreateWorkspace.vue?68da","webpack://axure-cloud/./src/components/AxCreateWorkspace.vue?afaf","webpack://axure-cloud/./src/components/AxCreateWorkspace.vue?2d5b","webpack://axure-cloud/./src/components/AxFilesystemNavigationWorkspace.vue","webpack://axure-cloud/./src/components/icons/AxStar.vue","webpack://axure-cloud/./src/components/icons/AxStar.vue?4570","webpack://axure-cloud/./src/components/icons/AxStar.vue?fcc6","webpack://axure-cloud/./src/components/icons/AxStar.vue?c979","webpack://axure-cloud/./src/components/AxFilesystemNavigationWorkspace.vue?6667","webpack://axure-cloud/./src/components/AxFilesystemNavigationWorkspace.vue?954d","webpack://axure-cloud/./src/components/AxFilesystemNavigationWorkspace.vue?15b9","webpack://axure-cloud/./src/components/AxFilesystemNavigation.vue?b4bc","webpack://axure-cloud/./src/components/AxFilesystemNavigation.vue?17fe","webpack://axure-cloud/./src/components/AxFilesystemNavigation.vue?b608","webpack://axure-cloud/./src/components/AxFilesystemRecents.vue","webpack://axure-cloud/./src/components/AxFilesystemRecentsTable.vue","webpack://axure-cloud/./src/components/AxFilesystemRecentsTable.vue?fea9","webpack://axure-cloud/./src/components/AxFilesystemRecentsTable.vue?6ec5","webpack://axure-cloud/./src/components/AxFilesystemRecentsTable.vue?f466","webpack://axure-cloud/./src/components/AxFilesystemRecents.vue?78cd","webpack://axure-cloud/./src/components/AxFilesystemRecents.vue?f39b","webpack://axure-cloud/./src/components/AxFilesystemRecents.vue?7fbd","webpack://axure-cloud/./src/components/AxFilesystemViewer.vue","webpack://axure-cloud/./src/components/AxFilesystemViewer.vue?a85e","webpack://axure-cloud/./src/components/AxFilesystemViewer.vue?da8a","webpack://axure-cloud/./src/components/AxFilesystemViewer.vue?fe01","webpack://axure-cloud/./src/components/AxWorkspaceInvitation.vue","webpack://axure-cloud/./src/components/AxWorkspaceInvitation.vue?ab40","webpack://axure-cloud/./src/components/AxWorkspaceInvitation.vue?69d4","webpack://axure-cloud/./src/components/AxWorkspaceInvitation.vue?b48f","webpack://axure-cloud/./src/router/fs/index.ts","webpack://axure-cloud/./src/pages/Home.vue","webpack://axure-cloud/./src/layouts/FixedHeader.vue","webpack://axure-cloud/./src/layouts/FixedHeader.vue?fdec","webpack://axure-cloud/./src/layouts/FixedHeader.vue?1a55","webpack://axure-cloud/./src/layouts/FixedHeader.vue?6861","webpack://axure-cloud/./src/components/AxArtboardUploads.vue","webpack://axure-cloud/./src/components/AxArtboardUploadsPicker.vue","webpack://axure-cloud/./src/components/AxDropzone.vue","webpack://axure-cloud/./src/components/AxDropzone.vue?017b","webpack://axure-cloud/./src/components/AxDropzone.vue?a9e0","webpack://axure-cloud/./src/components/AxDropzone.vue?f773","webpack://axure-cloud/./src/components/expo/AssetUploader.vue","webpack://axure-cloud/./src/components/expo/AssetUploader.vue?8abf","webpack://axure-cloud/./src/components/expo/AssetUploader.vue?4934","webpack://axure-cloud/./src/components/expo/AssetUploader.vue?42b9","webpack://axure-cloud/./src/components/AxArtboardUploadsPicker.vue?c1c0","webpack://axure-cloud/./src/components/AxArtboardUploadsPicker.vue?a35e","webpack://axure-cloud/./src/components/AxArtboardUploadsPicker.vue?aeef","webpack://axure-cloud/./src/components/AxArtboardUploadsProgress.vue","webpack://axure-cloud/./src/components/AxArtboardUploadsItem.vue","webpack://axure-cloud/./src/components/AxArtboardUploadsItem.vue?920b","webpack://axure-cloud/./src/components/AxArtboardUploadsItem.vue?ba8b","webpack://axure-cloud/./src/components/AxArtboardUploadsItem.vue?1b11","webpack://axure-cloud/./src/components/AxPageNotification.vue","webpack://axure-cloud/./src/components/AxPageNotification.vue?0d1e","webpack://axure-cloud/./src/components/AxPageNotification.vue?eec9","webpack://axure-cloud/./src/components/AxPageNotification.vue?aa18","webpack://axure-cloud/./src/components/AxArtboardUploadsProgress.vue?270d","webpack://axure-cloud/./src/components/AxArtboardUploadsProgress.vue?6c61","webpack://axure-cloud/./src/components/AxArtboardUploadsProgress.vue?b8b9","webpack://axure-cloud/./src/components/AxArtboardUploads.vue?b61b","webpack://axure-cloud/./src/components/AxArtboardUploads.vue?4b69","webpack://axure-cloud/./src/components/AxArtboardUploads.vue?4f9c","webpack://axure-cloud/./src/components/AxHeading.vue","webpack://axure-cloud/./src/components/AxAccountMenu.vue","webpack://axure-cloud/./src/common/axshare/new-version.ts","webpack://axure-cloud/./src/components/AxListItemStatic.vue","webpack://axure-cloud/./src/components/AxListItemStatic.vue?ea30","webpack://axure-cloud/./src/components/AxListItemStatic.vue?cafe","webpack://axure-cloud/./src/components/AxListItemStatic.vue?e90d","webpack://axure-cloud/./src/components/AxWhatsNewDialog.vue","webpack://axure-cloud/./src/components/AxReleaseHistory.vue","webpack://axure-cloud/./src/components/AxReleaseHistory.vue?9822","webpack://axure-cloud/./src/components/AxReleaseHistory.vue?701c","webpack://axure-cloud/./src/components/AxReleaseHistory.vue?3801","webpack://axure-cloud/./src/components/AxWhatsNewDialog.vue?e043","webpack://axure-cloud/./src/components/AxWhatsNewDialog.vue?55f4","webpack://axure-cloud/./src/components/AxWhatsNewDialog.vue?8234","webpack://axure-cloud/./src/components/AxAccountMenu.vue?89e9","webpack://axure-cloud/./src/components/AxAccountMenu.vue?b949","webpack://axure-cloud/./src/components/AxAccountMenu.vue?91dd","webpack://axure-cloud/./src/components/AxHeadingLogo.vue","webpack://axure-cloud/./src/components/AxHeadingLogo.vue?f547","webpack://axure-cloud/./src/components/AxHeadingLogo.vue?4b35","webpack://axure-cloud/./src/components/AxHeadingLogo.vue?ff13","webpack://axure-cloud/./src/components/AxHeaderSearch.vue","webpack://axure-cloud/./src/components/AxFilesystemSearch.vue","webpack://axure-cloud/./src/components/AxFilesystemSearchTable.vue","webpack://axure-cloud/./src/components/AxHeaderSearchResultLink.vue","webpack://axure-cloud/./src/components/AxHeaderSearchResult.vue","webpack://axure-cloud/./src/components/AxHeaderSearchResult.vue?3f8e","webpack://axure-cloud/./src/components/AxHeaderSearchResult.vue?aed4","webpack://axure-cloud/./src/components/AxHeaderSearchResult.vue?d591","webpack://axure-cloud/./src/components/AxHeaderSearchResultLink.vue?b77c","webpack://axure-cloud/./src/components/AxHeaderSearchResultLink.vue?fefb","webpack://axure-cloud/./src/components/AxHeaderSearchResultLink.vue?8f01","webpack://axure-cloud/./src/components/AxSearchResultModified.vue","webpack://axure-cloud/./src/components/AxSearchResultModified.vue?1dea","webpack://axure-cloud/./src/components/AxSearchResultModified.vue?b860","webpack://axure-cloud/./src/components/AxSearchResultModified.vue?83fb","webpack://axure-cloud/./src/components/AxFilesystemSearchTable.vue?51c0","webpack://axure-cloud/./src/components/AxFilesystemSearchTable.vue?8219","webpack://axure-cloud/./src/components/AxFilesystemSearchTable.vue?f6c7","webpack://axure-cloud/./src/components/AxFilesystemSearch.vue?2ab7","webpack://axure-cloud/./src/components/AxFilesystemSearch.vue?a179","webpack://axure-cloud/./src/components/AxFilesystemSearch.vue?9c42","webpack://axure-cloud/./src/components/AxHeaderSearch.vue?199c","webpack://axure-cloud/./src/components/AxHeaderSearch.vue?c91d","webpack://axure-cloud/./src/components/AxHeaderSearch.vue?fc72","webpack://axure-cloud/./src/components/AxHeading.vue?b319","webpack://axure-cloud/./src/components/AxHeading.vue?6664","webpack://axure-cloud/./src/components/AxHeading.vue?634c","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsAllWorkspaces.vue","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsAllWorkspaces.vue?8581","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsAllWorkspaces.vue?281b","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsAllWorkspaces.vue?266a","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsGlobal.vue","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsGlobal.vue?cea7","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsGlobal.vue?d463","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsGlobal.vue?f519","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsMentioned.vue","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsMentioned.vue?27ca","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsMentioned.vue?15bd","webpack://axure-cloud/./src/components/AxPushNotifications/AxPushNotificationsMentioned.vue?a6d5","webpack://axure-cloud/./src/components/AxWorkspacesMigration.vue","webpack://axure-cloud/./src/components/AxWorkspacesMigration.vue?dbcc","webpack://axure-cloud/./src/components/AxWorkspacesMigration.vue?b912","webpack://axure-cloud/./src/components/AxWorkspacesMigration.vue?f771","webpack://axure-cloud/./src/pages/Home.vue?51bb","webpack://axure-cloud/./src/pages/Home.vue?650e","webpack://axure-cloud/./src/pages/Home.vue?778d","webpack://axure-cloud/./src/pages/NotFound.vue","webpack://axure-cloud/./src/pages/NotFound.vue?6922","webpack://axure-cloud/./src/pages/NotFound.vue?c809","webpack://axure-cloud/./src/pages/NotFound.vue?5275","webpack://axure-cloud/./src/pages/ProjectNotShared.vue","webpack://axure-cloud/./src/pages/ProjectNotShared.vue?1b45","webpack://axure-cloud/./src/pages/ProjectNotShared.vue?7b27","webpack://axure-cloud/./src/pages/ProjectNotShared.vue?c66c","webpack://axure-cloud/./src/pages/SomethingNotQuiteRight.vue","webpack://axure-cloud/./src/pages/SomethingNotQuiteRight.vue?bd1c","webpack://axure-cloud/./src/pages/SomethingNotQuiteRight.vue?e602","webpack://axure-cloud/./src/pages/SomethingNotQuiteRight.vue?227e","webpack://axure-cloud/./src/pages/WorkspaceAccessRequested.vue","webpack://axure-cloud/./src/pages/WorkspaceAccessRequested.vue?bee6","webpack://axure-cloud/./src/pages/WorkspaceAccessRequested.vue?34ea","webpack://axure-cloud/./src/pages/WorkspaceAccessRequested.vue?686b","webpack://axure-cloud/./src/router/desktop-plugins/index.ts","webpack://axure-cloud/./src/router/sso/index.ts","webpack://axure-cloud/./src/router/subinstance/index.ts","webpack://axure-cloud/./src/router/home/index.ts","webpack://axure-cloud/./src/router/init.ts","webpack://axure-cloud/./src/router/guards.ts","webpack://axure-cloud/./src/router/index.ts","webpack://axure-cloud/./src/pages/LoginSignup.vue","webpack://axure-cloud/./src/pages/LoginSignup.vue?0798","webpack://axure-cloud/./src/pages/LoginSignup.vue?7b23","webpack://axure-cloud/./src/pages/LoginSignup.vue?07dd","webpack://axure-cloud/./src/common/lib/guards.ts","webpack://axure-cloud/./src/components/RpAuth/RpAuthBase.vue","webpack://axure-cloud/./src/components/RpAuth/RpAuthBase.vue?c929","webpack://axure-cloud/./src/components/RpAuth/RpAuthBase.vue?e141","webpack://axure-cloud/./src/components/RpAuth/RpAuthBase.vue?86f2","webpack://axure-cloud/./src/components/RpAuth/RpAuthSidebar.vue","webpack://axure-cloud/./src/components/RpAuth/RpAuthSidebar.vue?f566","webpack://axure-cloud/./src/components/RpAuth/RpAuthSidebar.vue?841e","webpack://axure-cloud/./src/components/RpAuth/RpAuthSidebar.vue?2bf1","webpack://axure-cloud/./src/components/RpAuth/RpError.vue","webpack://axure-cloud/./src/components/RpAuth/RpError.vue?2d01","webpack://axure-cloud/./src/components/RpAuth/RpError.vue?cafd","webpack://axure-cloud/./src/components/RpAuth/RpError.vue?7cf4","webpack://axure-cloud/./src/components/RpAuth/RpKey.vue","webpack://axure-cloud/./src/services/licensing.service.ts","webpack://axure-cloud/./src/components/RpAuth/RpKey.vue?cd94","webpack://axure-cloud/./src/components/RpAuth/RpKey.vue?1d89","webpack://axure-cloud/./src/components/RpAuth/RpKey.vue?08fb","webpack://axure-cloud/./src/components/RpAuth/RpRedirect.vue","webpack://axure-cloud/./src/components/RpAuth/RpRedirect.vue?9497","webpack://axure-cloud/./src/components/RpAuth/RpRedirect.vue?c3d5","webpack://axure-cloud/./src/components/RpAuth/RpRedirect.vue?767c","webpack://axure-cloud/./src/components/RpAuth/RpSignin.vue","webpack://axure-cloud/./src/common/lib/events.ts","webpack://axure-cloud/./src/components/AxForgotPassword.vue","webpack://axure-cloud/./src/components/AxForgotPassword.vue?587f","webpack://axure-cloud/./src/components/AxForgotPassword.vue?254a","webpack://axure-cloud/./src/components/AxForgotPassword.vue?be38","webpack://axure-cloud/./src/components/RpAuth/RpSignin.vue?e711","webpack://axure-cloud/./src/components/RpAuth/RpSignin.vue?1fc9","webpack://axure-cloud/./src/components/RpAuth/RpSignin.vue?c212","webpack://axure-cloud/./src/components/RpAuth/RpSignup.vue","webpack://axure-cloud/./src/components/RpAuth/RpSignup.vue?9d5f","webpack://axure-cloud/./src/components/RpAuth/RpSignup.vue?46b7","webpack://axure-cloud/./src/components/RpAuth/RpSignup.vue?7cb4","webpack://axure-cloud/./src/router/rp/index.ts","webpack://axure-cloud/./src/components/AxLoginWeb.vue","webpack://axure-cloud/./src/components/AxLogin.vue","webpack://axure-cloud/./src/components/AxSamlLogin.vue","webpack://axure-cloud/./src/components/AxSamlLogin.vue?6b1d","webpack://axure-cloud/./src/components/AxSamlLogin.vue?c26d","webpack://axure-cloud/./src/components/AxSamlLogin.vue?8fa1","webpack://axure-cloud/./src/components/AxLogin.vue?429a","webpack://axure-cloud/./src/components/AxLogin.vue?ab12","webpack://axure-cloud/./src/components/AxLogin.vue?6e71","webpack://axure-cloud/./src/components/AxLoginWeb.vue?5e98","webpack://axure-cloud/./src/components/AxLoginWeb.vue?a047","webpack://axure-cloud/./src/components/AxLoginWeb.vue?9dd4","webpack://axure-cloud/./src/components/AxSignupWeb.vue","webpack://axure-cloud/./src/components/AxSignup.vue","webpack://axure-cloud/./src/components/AxSignup.vue?db86","webpack://axure-cloud/./src/components/AxSignup.vue?70dc","webpack://axure-cloud/./src/components/AxSignup.vue?132b","webpack://axure-cloud/./src/components/AxSignupWeb.vue?c1b4","webpack://axure-cloud/./src/components/AxSignupWeb.vue?210b","webpack://axure-cloud/./src/components/AxSignupWeb.vue?01b8","webpack://axure-cloud/./src/router/login/index.ts","webpack://axure-cloud/./src/router/project/expo/index.ts","webpack://axure-cloud/./src/router/project/configure/index.ts","webpack://axure-cloud/./src/router/project/index.ts","webpack://axure-cloud/./src/router/setup/index.ts","webpack://axure-cloud/./src/services/admin.service.ts","webpack://axure-cloud/./src/services/utils/responseMapper.ts","webpack://axure-cloud/./src/services/api.ts","webpack://axure-cloud/./src/services/expo.service.ts","webpack://axure-cloud/./src/services/fs.service.ts","webpack://axure-cloud/./src/services/models/account.ts","webpack://axure-cloud/./src/services/models/filesystem.ts","webpack://axure-cloud/./src/services/models/notification.ts","webpack://axure-cloud/./src/services/notification.service.ts","webpack://axure-cloud/./src/services/project.service.ts","webpack://axure-cloud/./src/services/push.notifications.service.ts","webpack://axure-cloud/./src/services/server.ts","webpack://axure-cloud/./src/services/user.service.ts","webpack://axure-cloud/./src/services/utils/axios.ts","webpack://axure-cloud/./src/services/utils/formData.ts","webpack://axure-cloud/./src/store/actionTypes.ts","webpack://axure-cloud/./src/store/admin/actionTypes.ts","webpack://axure-cloud/./src/store/admin/mutationTypes.ts","webpack://axure-cloud/./src/store/async-action.ts","webpack://axure-cloud/./src/store/expo/actionTypes.ts","webpack://axure-cloud/./src/store/expo/mutationTypes.ts","webpack://axure-cloud/./src/store/fs/actionTypes.ts","webpack://axure-cloud/./src/store/fs/mutationTypes.ts","webpack://axure-cloud/./src/store/fs/state.ts","webpack://axure-cloud/./src/store/actions.ts","webpack://axure-cloud/./src/store/admin/actions.ts","webpack://axure-cloud/./src/store/admin/getters.ts","webpack://axure-cloud/./src/store/admin/mutations.ts","webpack://axure-cloud/./src/store/admin/state.ts","webpack://axure-cloud/./src/store/admin/index.ts","webpack://axure-cloud/./src/common/notifications/BadgeDrawer.ts","webpack://axure-cloud/./src/store/desktop/actionTypes.ts","webpack://axure-cloud/./src/store/desktop/actions.ts","webpack://axure-cloud/./src/store/desktop/mutationTypes.ts","webpack://axure-cloud/./src/store/desktop/mutations.ts","webpack://axure-cloud/./src/store/desktop/state.ts","webpack://axure-cloud/./src/store/desktop/index.ts","webpack://axure-cloud/./src/store/expo/actions.ts","webpack://axure-cloud/./src/store/expo/getters.ts","webpack://axure-cloud/./src/store/expo/state.ts","webpack://axure-cloud/./src/store/expo/mutations.ts","webpack://axure-cloud/./src/store/expo/index.ts","webpack://axure-cloud/./src/store/fs/actions.ts","webpack://axure-cloud/./src/store/fs/getters.ts","webpack://axure-cloud/./src/store/fs/mutations.ts","webpack://axure-cloud/./src/store/fs/index.ts","webpack://axure-cloud/./src/store/getters.ts","webpack://axure-cloud/./src/store/migration/getters.ts","webpack://axure-cloud/./src/store/migration/mutations.ts","webpack://axure-cloud/./src/store/migration/index.ts","webpack://axure-cloud/./src/common/axshare/auth.ts","webpack://axure-cloud/./src/services/account.service.ts","webpack://axure-cloud/./src/store/notifications/state.ts","webpack://axure-cloud/./src/store/user/state.ts","webpack://axure-cloud/./src/store/state.ts","webpack://axure-cloud/./src/store/mutations.ts","webpack://axure-cloud/./src/store/notifications/mutationTypes.ts","webpack://axure-cloud/./src/store/notifications/actions.ts","webpack://axure-cloud/./src/store/notifications/getters.ts","webpack://axure-cloud/./src/store/notifications/mutations.ts","webpack://axure-cloud/./src/store/notifications/index.ts","webpack://axure-cloud/./src/store/project/actions.ts","webpack://axure-cloud/./src/store/project/getters.ts","webpack://axure-cloud/./src/store/project/mutations.ts","webpack://axure-cloud/./src/store/project/index.ts","webpack://axure-cloud/./src/store/settings/mutations.ts","webpack://axure-cloud/./src/store/settings/state.ts","webpack://axure-cloud/./src/store/settings/index.ts","webpack://axure-cloud/./src/store/uploads/getters.ts","webpack://axure-cloud/./src/store/uploads/mutations.ts","webpack://axure-cloud/./src/store/user/mutationsTypes.ts","webpack://axure-cloud/./src/store/uploads/index.ts","webpack://axure-cloud/./src/store/user/actions.ts","webpack://axure-cloud/./src/store/user/getters.ts","webpack://axure-cloud/./src/store/user/mutations.ts","webpack://axure-cloud/./src/store/user/index.ts","webpack://axure-cloud/./src/store/plugins.ts","webpack://axure-cloud/./src/store/index.ts","webpack://axure-cloud/./src/store/migration/mutationTypes.ts","webpack://axure-cloud/./src/store/migration/state.ts","webpack://axure-cloud/./src/store/mutationTypes.ts","webpack://axure-cloud/./src/store/notifications/actionTypes.ts","webpack://axure-cloud/./src/store/project/actionTypes.ts","webpack://axure-cloud/./src/store/project/mutationTypes.ts","webpack://axure-cloud/./src/store/project/state.ts","webpack://axure-cloud/./src/store/settings/mutationTypes.ts","webpack://axure-cloud/./src/store/uploads/mutationTypes.ts","webpack://axure-cloud/./src/store/uploads/state.ts","webpack://axure-cloud/./src/store/user/actionTypes.ts","webpack://axure-cloud/./src/assets/svg/ sync ^\\.\\/.*\\.svg$","webpack://axure-cloud/webpack/bootstrap","webpack://axure-cloud/webpack/runtime/chunk loaded","webpack://axure-cloud/webpack/runtime/compat get default export","webpack://axure-cloud/webpack/runtime/define property getters","webpack://axure-cloud/webpack/runtime/ensure chunk","webpack://axure-cloud/webpack/runtime/get javascript chunk filename","webpack://axure-cloud/webpack/runtime/get mini-css chunk filename","webpack://axure-cloud/webpack/runtime/global","webpack://axure-cloud/webpack/runtime/hasOwnProperty shorthand","webpack://axure-cloud/webpack/runtime/load script","webpack://axure-cloud/webpack/runtime/make namespace object","webpack://axure-cloud/webpack/runtime/publicPath","webpack://axure-cloud/webpack/runtime/css loading","webpack://axure-cloud/webpack/runtime/jsonp chunk loading","webpack://axure-cloud/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-10 col-md-8 col-lg-6 axure-logo\"},[(_vm.logoRoute)?_c('RouterLink',{staticClass:\"logo-link\",attrs:{\"to\":_vm.logoRoute}},[_c('AxIcon',{staticClass:\"logo-icon\"},[_c('AxAxureLogo',{attrs:{\"dark\":\"\"}})],1)],1):_c('AxIcon',{staticClass:\"logo-icon\"},[_c('AxAxureLogo',{attrs:{\"dark\":\"\"}})],1),_c('div',{staticClass:\"axure-logo-content\"},[_vm._t(\"content\")],2)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxAxureLogo from \"@/components/icons/AxAxureLogo.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxAxureLogo,\r\n },\r\n\r\n props: {\r\n logoRoute: {\r\n type: [Object, String],\r\n required: false,\r\n default: undefined,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAxureLogoRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAxureLogoRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAxureLogoRow.vue?vue&type=template&id=aec2a628&\"\nimport script from \"./AxAxureLogoRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAxureLogoRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAxureLogoRow.vue?vue&type=style&index=0&id=aec2a628&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode, VNodeData } from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\ntype Sizes = \"large\" | \"medium\" | \"small\" | \"tiny\";\r\ntype DefaultSize = \"large\";\r\ntype NotDefaultSizes = Exclude;\r\ntype SizeProps = {\r\n [K in NotDefaultSizes]: PropValidator;\r\n} &\r\n{\r\n [K in DefaultSize]: PropValidator & { default: true };\r\n};\r\n\r\nconst OTHER_SIZES: NotDefaultSizes[] = [\"medium\", \"small\", \"tiny\"];\r\nconst SIZE_PROPS: SizeProps = {\r\n large: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n medium: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n small: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n tiny: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n props: {\r\n tag: {\r\n type: String,\r\n default: \"button\",\r\n },\r\n\r\n circle: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n type: {\r\n type: String,\r\n default: \"button\",\r\n },\r\n\r\n color: {\r\n type: String,\r\n default: \"default\",\r\n },\r\n\r\n to: {\r\n type: [String, Object],\r\n default: undefined,\r\n },\r\n\r\n exactActiveClass: {\r\n type: String,\r\n default: \"ax-button--primary router-link-exact-active\",\r\n },\r\n\r\n activeClass: {\r\n type: String,\r\n default: \"ax-button--primary router-link-active\",\r\n },\r\n\r\n noActiveClass: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n blurOnClick: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n append: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n replace: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n exact: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n\r\n href: {\r\n type: [String, Object],\r\n default: undefined,\r\n },\r\n\r\n target: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n block: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n uppercase: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n wrap: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n rounded: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n lifted: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n highlighted: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n icon: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n ...SIZE_PROPS,\r\n },\r\n\r\n computed: {\r\n classes(): Record {\r\n const otherSizeIsSet = OTHER_SIZES.some(size => this[size]);\r\n\r\n return {\r\n \"ax-button\": true,\r\n [`ax-button--${this.color}`]: true,\r\n \"ax-button--link-highlighted\": this.highlighted,\r\n \"ax-button--circle\": this.circle,\r\n \"ax-button--block\": this.block,\r\n \"ax-button--large\": this.large && !otherSizeIsSet,\r\n \"ax-button--medium\": this.medium,\r\n \"ax-button--small\": this.small,\r\n \"ax-button--tiny\": this.tiny,\r\n \"ax-button--uppercase\": this.uppercase,\r\n \"ax-button--wrap\": this.wrap,\r\n \"ax-button--rounded\": this.rounded,\r\n \"ax-button--lifted\": this.lifted,\r\n \"ax-button--icon\": this.icon,\r\n disabled: this.disabled,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n click(e: MouseEvent) {\r\n if (this.disabled) return;\r\n this.$emit(\"click\", e);\r\n if (this.blurOnClick) {\r\n this.blur();\r\n }\r\n },\r\n\r\n blur() {\r\n const button = this.getButton();\r\n if (button && typeof button.blur === \"function\") {\r\n button.blur();\r\n }\r\n },\r\n\r\n focus() {\r\n const button = this.getButton();\r\n if (button && typeof button.focus === \"function\") {\r\n button.focus();\r\n }\r\n },\r\n\r\n getButton() {\r\n const button = this.$refs.button as HTMLElement | Vue | undefined;\r\n if (button) {\r\n return button instanceof HTMLElement ? button : (button.$el as HTMLElement);\r\n }\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n let exact = this.exact;\r\n let tag;\r\n const data: VNodeData = {\r\n attrs: {\r\n disabled: this.disabled || this.loading, // TODO: move \"loading\" to separate logic - disable and show loading indicator for example\r\n },\r\n\r\n ref: \"button\",\r\n class: this.classes,\r\n props: {},\r\n [this.to ? \"nativeOn\" : \"on\"]: {\r\n ...this.$listeners,\r\n click: this.click,\r\n },\r\n };\r\n\r\n if (typeof this.exact === \"undefined\") {\r\n exact = this.to === \"/\" || (this.to === Object(this.to) && this.to.path === \"/\");\r\n }\r\n\r\n if (this.to) {\r\n const activeClass = this.activeClass;\r\n const exactActiveClass = this.exactActiveClass || activeClass;\r\n\r\n tag = \"router-link\";\r\n Object.assign(data.props ?? {}, {\r\n to: this.to,\r\n exact,\r\n append: this.append,\r\n replace: this.replace,\r\n ...(this.noActiveClass === false\r\n ? {\r\n activeClass,\r\n exactActiveClass,\r\n }\r\n : undefined),\r\n });\r\n } else {\r\n tag = (this.href && \"a\") || this.tag || \"a\";\r\n\r\n if (tag === \"a\" && this.href) data.attrs!.href = this.href;\r\n }\r\n\r\n if (tag === \"button\") data.attrs!.type = this.type;\r\n if (this.target) data.attrs!.target = this.target;\r\n\r\n const children = this.$scopedSlots.default && this.$scopedSlots.default({});\r\n\r\n return h(tag, data, children);\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxButton.vue?vue&type=style&index=0&id=74da7c9f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74da7c9f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxButton.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./AxButtonGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxButtonGroup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxButtonGroup.vue?vue&type=style&index=0&id=3179ef8d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3179ef8d\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode } from \"vue\";\r\nimport { mergeData } from \"vue-functional-data-merge\";\r\n\r\nexport default Vue.extend({\r\n functional: true,\r\n props: {\r\n stacked: {\r\n type: String,\r\n default: \"horizontal\",\r\n },\r\n noWrap: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n render(h, ctx): VNode {\r\n const data = {\r\n staticClass: \"ax-button-group\",\r\n class: {\r\n [`ax-button-group--${ctx.props.stacked}`]: true,\r\n \"ax-button-group--no-wrap\": ctx.props.noWrap,\r\n },\r\n };\r\n return h(\"div\", mergeData(ctx.data, data), ctx.slots().default);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxButtonGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxButtonGroup.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"submit\":_vm.submit,\"value\":_vm.model},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',[_vm._t(\"default\",function(){return [_c('div',{staticClass:\"form-title\"},[_vm._v(\" Change Owner \")])]}),_c('AxFormGroup',[(_vm.isSubInstance)?_c('AxManageUsersSelect',{attrs:{\"items\":values,\"placeholder\":_vm.placeholder,\"autofocus\":\"\"},on:{\"select\":_vm.select}}):_c('AxFormGroup',[_c('AxInput',{attrs:{\"autofocus\":\"\",\"block\":\"\",\"type\":\"email\",\"placeholder\":\"Enter Email address\"},model:{value:(_vm.owner),callback:function ($$v) {_vm.owner=$$v},expression:\"owner\"}})],1)],1),_c('div',[_c('AxButton',{attrs:{\"loading\":submitting,\"block\":\"\",\"type\":\"submit\",\"color\":_vm.buttonColor,\"large\":\"\",\"disabled\":!_vm.owner},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.buttonValue)+\" \")])],1)],2)]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { SsoResponse, AccountRowJs } from \"@shared/models\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { getSubinstanceAccounts } from \"@/services/fs.service\";\r\nimport { ManageUsersModel, ManageUserModel, AccessLevels } from \"@/services/models/account\";\r\nimport { UpdateFilesystemOwner, Fetch } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { AxShareUser } from \"@/store/user/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxManageUsersSelect from \"@/components/AxManageUsers/AxManageUsersSelect.vue\";\r\n\r\nconst workspaceProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nconst props = {\r\n workspace: workspaceProp,\r\n buttonColor: {\r\n type: String,\r\n default: \"primary\",\r\n },\r\n buttonValue: {\r\n type: String,\r\n default: \"Update\",\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxManageUsersSelect,\r\n AxInput,\r\n },\r\n\r\n props,\r\n\r\n data() {\r\n const model: Partial = {\r\n users: [],\r\n };\r\n\r\n return {\r\n model,\r\n owner: \"\",\r\n };\r\n },\r\n\r\n computed: {\r\n placeholder(): string | undefined {\r\n return this.owner ? this.owner : undefined;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n currentUser(): AxShareUser {\r\n const { user } = this.$store.state as AxShare;\r\n return user;\r\n },\r\n\r\n isSubInstanceAuthor(): boolean {\r\n return this.$store.getters.isSubInstanceAuthor;\r\n },\r\n },\r\n\r\n async mounted() {\r\n await this.init();\r\n },\r\n\r\n methods: {\r\n async init() {\r\n const { isOwner, ownerEmail, users } = this.workspace;\r\n const { userInfo } = this.currentUser;\r\n const { isSubInstance } = this;\r\n\r\n let filteredUsers: SsoResponse[] = [];\r\n\r\n if (isSubInstance) {\r\n const accounts = await getSubinstanceAccounts();\r\n filteredUsers = accounts.Items.filter(\r\n item => !item.IsDeactivated\r\n && item.Email !== ownerEmail\r\n && !(isOwner && userInfo && userInfo.userEmail === item.Email)\r\n && (item.Level === AccessLevels.Author\r\n || item.Level === AccessLevels.Admin\r\n || item.Level === AccessLevels.SuperAdmin),\r\n ).map(item => this.getUser(item) as SsoResponse);\r\n } else {\r\n filteredUsers = users.filter(item => item.user.userEmail !== ownerEmail).map(item => item.user);\r\n }\r\n\r\n this.model.users = filteredUsers.map(item => ({\r\n user: item,\r\n })) as ManageUserModel[];\r\n },\r\n\r\n getUser(account: AccountRowJs) {\r\n const user: Partial = {\r\n userId: account.Id,\r\n userEmail: account.Email,\r\n nickname: account.Nickname,\r\n };\r\n return user;\r\n },\r\n\r\n async submit() {\r\n if (this.owner) {\r\n await this.$store.dispatch(new UpdateFilesystemOwner(this.workspace.id, this.owner));\r\n await this.$store.dispatch(new Fetch(this.workspace));\r\n this.$emit(\"owner-changed\");\r\n }\r\n },\r\n\r\n select(user: SsoResponse, deactivate: () => any) {\r\n this.owner = user.userEmail;\r\n deactivate();\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxChangeOwner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxChangeOwner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxChangeOwner.vue?vue&type=template&id=126ec0d4&scoped=true&\"\nimport script from \"./AxChangeOwner.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxChangeOwner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxChangeOwner.vue?vue&type=style&index=0&id=126ec0d4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"126ec0d4\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxCheckbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCheckbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCheckbox.vue?vue&type=style&index=0&id=57e8c85c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57e8c85c\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode, VNodeData } from \"vue\";\r\n\r\ntype Value = string | number | boolean | object;\r\n\r\nexport default Vue.extend({\r\n props: {\r\n text: {\r\n type: String,\r\n default: \"\",\r\n },\r\n inputClass: {\r\n type: String,\r\n default: \"item-horizontal\",\r\n },\r\n value: {\r\n type: Boolean,\r\n default: null,\r\n },\r\n indeterminate: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n isDisabled(): boolean {\r\n return this.disabled;\r\n },\r\n\r\n createInputElement(value: boolean) {\r\n const data: VNodeData = {\r\n attrs: {\r\n readonly: this.readonly,\r\n disabled: this.disabled,\r\n type: \"checkbox\",\r\n },\r\n domProps: {\r\n checked: value,\r\n indeterminate: this.indeterminate,\r\n },\r\n on: {\r\n change: (event: any) => {\r\n this.$emit(\"input\", event.target.checked);\r\n },\r\n },\r\n };\r\n\r\n return this.$createElement(\"input\", data);\r\n },\r\n\r\n createLabelElement(label: string) {\r\n const children = (this.$scopedSlots.default && this.$scopedSlots.default({})) || label;\r\n if (!children) return undefined;\r\n\r\n let cssClass = \"ms-1\";\r\n if (this.disabled) cssClass += \" disabled\";\r\n\r\n return this.$createElement(\"span\", { class: cssClass }, children);\r\n },\r\n\r\n createProps() {\r\n return {\r\n text: this.text,\r\n checked: this.value,\r\n disabled: this.disabled,\r\n readonly: this.readonly,\r\n change: (event: any) => {\r\n this.$emit(\"input\", event.target.checked);\r\n },\r\n };\r\n },\r\n\r\n genItem() {\r\n const children = [this.createInputElement(this.value), this.createLabelElement(this.text)];\r\n\r\n const node = this.$scopedSlots.default\r\n ? this.$scopedSlots.default(this.createProps())\r\n : this.$createElement(\"label\", { class: this.inputClass }, children);\r\n\r\n return node;\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n return h(\"div\", [this.genItem()]);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCheckbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCheckbox.vue?vue&type=script&lang=ts&\"","\r\nimport Vue, { VNode, VNodeData } from \"vue\";\r\n\r\nimport { getObjectValueByPath, removeAll } from \"@/common/lib\";\r\nimport { createUniqueTag } from \"@/common/utils\";\r\n\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nconst inputTypes = {\r\n checkbox: \"checkbox\",\r\n radio: \"radio\",\r\n};\r\n\r\ntype Value = string | number | boolean | object;\r\n\r\nexport default Vue.extend({\r\n props: {\r\n items: arrayProp({\r\n required: false,\r\n default: () => [],\r\n }),\r\n\r\n itemValueProp: {\r\n type: String,\r\n default: \"value\",\r\n },\r\n\r\n itemTextProp: {\r\n type: String,\r\n default: \"text\",\r\n },\r\n\r\n itemDisabledProp: {\r\n type: String,\r\n default: \"disabled\",\r\n },\r\n\r\n horizontal: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n multiple: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n value: {\r\n type: [String, Number, Array, Boolean, Object],\r\n default: null,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n name: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n data() {\r\n const inputName = this.name || createUniqueTag();\r\n return { inputName };\r\n },\r\n\r\n computed: {\r\n itemClass(): string {\r\n return this.horizontal ? \"item-horizontal\" : \"item-vertical\";\r\n },\r\n\r\n type(): string {\r\n return this.multiple ? inputTypes.checkbox : inputTypes.radio;\r\n },\r\n\r\n selected(): Value[] {\r\n return this.multiple ? [...this.value] : [this.value];\r\n },\r\n },\r\n\r\n methods: {\r\n isDisabled(item: any): boolean {\r\n if (!item || !this.itemDisabledProp) return this.disabled;\r\n return getObjectValueByPath(item, this.itemDisabledProp, this.disabled);\r\n },\r\n\r\n createInputElement(type: string, item?: any) {\r\n const self = this;\r\n\r\n const data: VNodeData = {\r\n attrs: {\r\n type,\r\n disabled: this.isDisabled(item),\r\n name: this.inputName,\r\n },\r\n domProps: {\r\n value: this.itemValue(item),\r\n checked: this.isSelected(item),\r\n },\r\n on: {\r\n change: (event: any) => {\r\n this.toggle(event, item);\r\n },\r\n },\r\n };\r\n\r\n return this.$createElement(\"input\", data);\r\n },\r\n\r\n createLabelElement(label: string) {\r\n return this.$createElement(\"span\", { class: \"ms-1\" }, label);\r\n },\r\n\r\n toggle(event: any, item: any) {\r\n const itemValue = this.itemValue(item);\r\n if (this.multiple) {\r\n const selected = [...this.selected];\r\n event.target.checked ? selected.push(itemValue) : removeAll(selected, s => s === itemValue);\r\n this.$emit(\"input\", selected);\r\n } else {\r\n this.$emit(\"input\", itemValue);\r\n }\r\n },\r\n\r\n isSelected(item: any): boolean {\r\n return this.selected.includes(this.itemValue(item));\r\n },\r\n\r\n createProps(item: any, index: number) {\r\n return {\r\n item,\r\n index,\r\n name: this.inputName,\r\n value: this.itemValue(item),\r\n text: this.itemText(item),\r\n type: this.type,\r\n checked: this.isSelected(item),\r\n disabled: this.isDisabled(item),\r\n toggle: (event: any) => this.toggle(event, item),\r\n };\r\n },\r\n\r\n genItem(item: any, index: number) {\r\n const node = this.$scopedSlots.default\r\n ? this.$scopedSlots.default(this.createProps(item, index))\r\n : this.$createElement(\"label\", { class: this.itemClass }, [\r\n this.createInputElement(this.type, item),\r\n this.createLabelElement(this.itemText(item)),\r\n ]);\r\n\r\n return node;\r\n },\r\n\r\n genItems() {\r\n return this.items.map(this.genItem);\r\n },\r\n\r\n itemValue(item: any) {\r\n return getObjectValueByPath(item, this.itemValueProp);\r\n },\r\n\r\n itemText(item: any) {\r\n return getObjectValueByPath(item, this.itemTextProp);\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n const self = this;\r\n return h(\"div\", this.genItems());\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxChoice.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxChoice.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxChoice.vue?vue&type=style&index=0&id=2769c97c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2769c97c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxChoice.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxChoice.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.forBusiness)?_c('div',{staticClass:\"axure-cloud-info__description\"},[_c('p',[_vm._v(\"Axure Cloud for Business lets you host, share, inspect, and gather feedback on Axure RP UX prototypes with ease. You can manage accounts and permissions on your own custom domain.\")]),_c('br'),_c('p',[_vm._v(\"Invite your team to publish UX prototypes and design assets to shared Workspaces giving your team a single destination for UX content. Share artboards from Sketch, Adobe XD, and Figma right next to your Axure RP prototypes.\")])]):_c('div',{staticClass:\"axure-cloud-info__description\"},[_c('p',[_vm._v(\"Axure Cloud lets you easily host, share, inspect, and gather feedback on Axure RP prototypes.\")]),_c('br'),_c('p',[_vm._v(\"Discuss changes, share redlines, and create prototypes from images, Figma, Sketch, and Adobe XD – all in Axure Cloud.\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n forBusiness: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCloudInfoDescription.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCloudInfoDescription.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCloudInfoDescription.vue?vue&type=template&id=bf87e130&scoped=true&\"\nimport script from \"./AxCloudInfoDescription.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCloudInfoDescription.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCloudInfoDescription.vue?vue&type=style&index=0&id=bf87e130&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bf87e130\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-workspace-security\"},[_c('AxForm',{attrs:{\"value\":_vm.model,\"errors\":_vm.errors},scopedSlots:_vm._u([{key:\"default\",fn:function({ values }){return [_c('form',[_c('span',{staticClass:\"ax-workspace-security__title\"},[_vm._t(\"existingMembersTitle\",function(){return [_vm._v(\" \"+_vm._s(_vm.existingMembersInWorkspace)+\" existing workspace users: \")]},{\"existingMembersCount\":_vm.existingMembersInWorkspace})],2),_c('AxManageUsersTable',{staticClass:\"ax-workspace-security-table\",attrs:{\"users\":values.users,\"disabled\":_vm.submitting,\"edit-mode\":_vm.editMode},on:{\"remove\":_vm.remove,\"changeAccessLevel\":_vm.changeAccessLevel},scopedSlots:_vm._u([{key:\"noData\",fn:function(){return [_vm._v(\" Workspace members will appear here. \")]},proxy:true}],null,true)})],1)]}}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDataTable',{staticClass:\"ax-manage-users\",class:{ 'ax-manage-users__disabled': _vm.disabled },attrs:{\"headers\":_vm.headers,\"hide-headers\":\"\",\"fixed-header\":\"\",\"items\":_vm.usersList},scopedSlots:_vm._u([{key:\"items\",fn:function({ item }){return [_c('td',[_c('AxUser',{staticClass:\"text truncate-ellipsis\",attrs:{\"username-classes\":\"truncate-ellipsis\",\"user\":item.user,\"profile\":item.profile}})],1),(_vm.hasPendingInvitations)?_c('td',[(!!item.invitationAccepted)?_c('AxTooltip',{attrs:{\"title\":\"Workspace Invitation Pending\",\"tooltip-placement\":\"bottom\",\"arrow\":\"\"}},[_c('div',{staticClass:\"icon-exclamation\"},[_c('AxIcon',{attrs:{\"name\":\"exclamation-circle\"}})],1)]):_vm._e()],1):_vm._e(),_c('td',[(item.canChangeAccessLevel)?_c('AxDropdownButton',{attrs:{\"disabled\":item.isViewerAccount,\"color\":\"link\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(item.accessLevelName)+\" \"),(!item.isViewerAccount)?_c('AxIcon',{staticClass:\"icon-caret\",attrs:{\"name\":\"caret\"}}):_vm._e()],1)]},proxy:true}],null,true)},[_c('AxList',[_c('AxListItem',[_c('AxButton',{attrs:{\"color\":\"link\"},on:{\"click\":function($event){return _vm.changeAccessLevel(item.user, false)}}},[_c('div',{staticClass:\"menu-item\"},[_c('div',{staticClass:\"icon-checkmark\"},[(!item.isViewer)?_c('AxIcon',{attrs:{\"name\":\"checkmark\"}}):_vm._e()],1),_c('span',[_vm._v(\"Author\")])])])],1),_c('AxListItem',[_c('AxButton',{attrs:{\"color\":\"link\"},on:{\"click\":function($event){return _vm.changeAccessLevel(item.user, true)}}},[_c('div',{staticClass:\"menu-item\"},[_c('div',{staticClass:\"icon-checkmark\"},[(!!item.isViewer)?_c('AxIcon',{attrs:{\"name\":\"checkmark\"}}):_vm._e()],1),_c('span',[_vm._v(\"Viewer\")])])])],1)],1)],1):_c('div',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(item.accessLevelName)+\" \")])],1),(_vm.editMode)?_c('td',[(!item.isOwner)?_c('AxButton',{staticClass:\"text remove-user-button\",attrs:{\"title\":\"Remove\",\"color\":\"link\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.remove(item.user)}}},[_c('AxIcon',{staticClass:\"icon-add\",attrs:{\"name\":\"add\",\"rotate\":\"45deg\"}})],1):_vm._e()],1):_vm._e()]}},{key:\"noData\",fn:function(){return [_vm._t(\"noData\")]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { SsoResponse } from \"@shared/models\";\r\n\r\nimport { ManageUserModel, AccessLevels } from \"@/services/models/account\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport { orderBy } from \"../../common/lib\";\r\nimport { AxShareUser } from \"../../store/user/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDataTable from \"@/components/AxDataTable.vue\";\r\nimport AxDropdownButton from \"@/components/AxDropdownButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxList from \"@/components/AxList.vue\";\r\nimport AxListItem from \"@/components/AxListItem.vue\";\r\nimport AxTooltip from \"@/components/AxTooltip.vue\";\r\nimport AxUser from \"@/components/AxUser.vue\";\r\nimport { Header } from \"@/components/types/AxDataTable\";\r\n\r\nconst usersProp: PropOptions = {\r\n type: Array,\r\n required: true,\r\n};\r\n\r\ninterface UserListItem extends ManageUserModel {\r\n accessLevelName: string;\r\n canChangeAccessLevel: boolean;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxDataTable,\r\n AxDropdownButton,\r\n AxList,\r\n AxListItem,\r\n AxIcon,\r\n AxUser,\r\n AxTooltip,\r\n },\r\n\r\n props: {\r\n users: usersProp,\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n editMode: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n headers(): Header[] {\r\n const headers: Header[] = [\r\n {\r\n text: \"Email\",\r\n value: \"Email\",\r\n },\r\n {\r\n text: \"Review Only\",\r\n value: \"ViewOnly\",\r\n width: this.editMode ? \"20%\" : \"auto\",\r\n },\r\n {\r\n text: \"Remove User\",\r\n width: \"5%\",\r\n },\r\n ];\r\n\r\n // Show \"Pending Invitation\" header only if has invited\r\n if (this.hasPendingInvitations) {\r\n headers.splice(1, 0, {\r\n text: \"Pending Invitation\",\r\n width: \"5%\",\r\n });\r\n }\r\n\r\n return headers;\r\n },\r\n\r\n hasPendingInvitations(): boolean {\r\n return this.usersList.filter(user => !!user.invitationAccepted).length > 0;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n currentUser(): AxShareUser {\r\n const { user } = this.$store.state as AxShare;\r\n return user;\r\n },\r\n\r\n usersList(): UserListItem[] {\r\n const currentUserInfo = this.currentUser.userInfo;\r\n\r\n const users = this.users.map(u => ({\r\n ...u,\r\n isAdmin: u.Level === AccessLevels.SuperAdmin || u.Level === AccessLevels.Admin,\r\n canChangeAccessLevel: this.canChangeAccessLevel(u),\r\n accessLevelName: this.getAccessLevelName(u),\r\n }));\r\n\r\n if (!currentUserInfo) {\r\n return users;\r\n }\r\n\r\n // Users list should be in following order:\r\n // - Owner\r\n // - Current user (if not owner)\r\n // - Admins\r\n // - Authors\r\n // - Viewers in workspace\r\n // - Reviewers instance-wide\r\n // - alphabetic by email\r\n\r\n const ordered = orderBy(\r\n users,\r\n u => ({ value: !!u.isOwner, descending: true }),\r\n u => ({ value: u.user.userId === currentUserInfo.userId, descending: true }),\r\n u => ({ value: u.isAdmin, descending: true }),\r\n u => ({ value: u.isViewer === false, descending: true }),\r\n u => u.Level || 0,\r\n u => u.user.userEmail,\r\n );\r\n\r\n return ordered;\r\n },\r\n },\r\n\r\n methods: {\r\n canChangeAccessLevel(user: ManageUserModel): boolean {\r\n const { editMode, isSubInstance } = this;\r\n const { isOwner } = user;\r\n\r\n return editMode && !isOwner && (!isSubInstance || (isSubInstance && user.Level === AccessLevels.Author));\r\n },\r\n\r\n getAccessLevelName(user: ManageUserModel) {\r\n let accessLevelName = \"\";\r\n if (user.isOwner) {\r\n accessLevelName = \"Owner\";\r\n } else if (this.isSubInstance && (user.Level === AccessLevels.Admin || user.Level === AccessLevels.SuperAdmin)) {\r\n accessLevelName = \"Admin\";\r\n } else {\r\n accessLevelName = user.isViewer ? \"Viewer\" : \"Author\";\r\n }\r\n\r\n return accessLevelName;\r\n },\r\n\r\n remove(user: SsoResponse) {\r\n this.$emit(\"remove\", user);\r\n },\r\n\r\n changeAccessLevel(user: SsoResponse, viewOnly: boolean) {\r\n this.$emit(\"changeAccessLevel\", user, viewOnly);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxManageUsersTable.vue?vue&type=template&id=1d8a451a&scoped=true&\"\nimport script from \"./AxManageUsersTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxManageUsersTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxManageUsersTable.vue?vue&type=style&index=0&id=1d8a451a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d8a451a\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VueConstructor } from \"vue\";\r\n\r\nimport { AccountRowJs, SsoResponse, SharedFilesystemMappingJs } from \"@shared/models\";\r\n\r\nimport { asError } from \"@/common/lib\";\r\nimport { workspaceMembersMixin } from \"@/mixins/WorkspaceMembers\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\nimport {\r\n getSubinstanceAccounts,\r\n setReviewerOnly, setSecurityPrefs, setUserOnly, unshareFileSystem,\r\n} from \"@/services/fs.service\";\r\nimport { ConfigureSecurityModel } from \"@/services/models\";\r\nimport { AccessLevels, ManageUsersModel, UserProfile } from \"@/services/models/account\";\r\nimport { ManageUsersRemoveModel } from \"@/services/models/filesystem\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxManageUsersTable from \"@/components/AxManageUsers/AxManageUsersTable.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ntype Mixins = InstanceType;\r\n\r\nexport default (Vue as VueConstructor).extend({\r\n components: {\r\n AxForm,\r\n AxManageUsersTable,\r\n },\r\n\r\n mixins: [workspaceMembersMixin],\r\n\r\n props: {\r\n editMode: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n const errors: string[] = [];\r\n\r\n return {\r\n persistent: false,\r\n dialog: false,\r\n subInstanceAccounts: [] as AccountRowJs[],\r\n submitting: false,\r\n errors,\r\n };\r\n },\r\n\r\n computed: {\r\n existingMembersInWorkspace(): number {\r\n return this.workspaceMembers.length;\r\n },\r\n\r\n workspaceMembers(): SharedFilesystemMappingJs[] {\r\n const { sharedWith, owner } = this;\r\n const workspaceMembers: SharedFilesystemMappingJs[] = [];\r\n\r\n if (this.sharedWith.length > 0) {\r\n workspaceMembers.push(...sharedWith);\r\n } else if (owner) {\r\n workspaceMembers.push(owner);\r\n }\r\n\r\n return workspaceMembers;\r\n },\r\n\r\n model(): ManageUsersModel {\r\n const { userOnly, httpsOnly, invited } = this.workspace;\r\n const invitedUserIds = invited.map(item => item.user.userId);\r\n\r\n const model: ManageUsersModel = {\r\n userOnly,\r\n httpsOnly,\r\n users: this.workspaceMembers.map(item => ({\r\n user: item.user,\r\n profile: this.getProfile(item.user),\r\n isViewer: item.isViewer,\r\n Level: this.getLevel(item.user),\r\n isViewerAccount: this.isViewerAccount(item.user),\r\n isOwner: this.owner && this.owner.user.userId === item.user.userId,\r\n invitationAccepted: invitedUserIds.includes(item.user.userId),\r\n })),\r\n };\r\n return model;\r\n },\r\n },\r\n\r\n async mounted() {\r\n await this.init();\r\n },\r\n\r\n methods: {\r\n async init() {\r\n if (this.isSubInstance) {\r\n this.subInstanceAccounts = (await getSubinstanceAccounts()).Items;\r\n }\r\n },\r\n\r\n async changeOwnerSubmit() {\r\n await this.$router.replace(fsRouterLocation(this.$route.params.id));\r\n },\r\n\r\n getProfile(user: SsoResponse): UserProfile {\r\n return {\r\n Name: user.userEmail,\r\n Bio: user.bio,\r\n Img: user.profileImageUrl,\r\n };\r\n },\r\n\r\n getLevel(user: SsoResponse): number | undefined {\r\n const { isSubInstance } = this;\r\n if (isSubInstance) {\r\n const account = this.subInstanceAccounts.find(item => item.Id === user.userId);\r\n if (account) return account.Level;\r\n }\r\n },\r\n\r\n isViewerAccount(user: SsoResponse): boolean {\r\n const { isSubInstance } = this;\r\n if (isSubInstance) {\r\n const account = this.subInstanceAccounts.find(item => item.Id === user.userId);\r\n if (account) return account.Level === AccessLevels.Reviewer || account.Level === AccessLevels.TechnicalAdmin;\r\n }\r\n return false;\r\n },\r\n\r\n async remove(user: SsoResponse) {\r\n this.submitting = true;\r\n try {\r\n const usersRemove: Partial = {\r\n usersToRemove: [user.userId],\r\n filesystemId: this.workspace.id,\r\n removeAllUsers: false,\r\n };\r\n await unshareFileSystem(usersRemove);\r\n await this.$store.dispatch(new Fetch(this.workspace));\r\n this.$emit(\"remove\");\r\n } catch (error) {\r\n this.errors.push(asError(error).message);\r\n } finally {\r\n this.submitting = false;\r\n }\r\n },\r\n\r\n async changeAccessLevel(user: SsoResponse, viewOnly: boolean) {\r\n this.errors = [];\r\n this.submitting = true;\r\n try {\r\n const { isSubInstance, workspace } = this;\r\n const index = this.model.users.findIndex(item => item.user.userId === user.userId);\r\n this.model.users[index].isViewer = viewOnly;\r\n if (isSubInstance) {\r\n await setReviewerOnly(workspace.id, user.userEmail, viewOnly);\r\n } else {\r\n let viewerUsers = this.model.users.filter(item => item.isViewer).map(item => item.user.userId);\r\n if (viewOnly) {\r\n viewerUsers.push(user.userId);\r\n } else {\r\n viewerUsers = viewerUsers.filter(item => item !== user.userId);\r\n }\r\n\r\n const configureSecurity: Partial = {\r\n FilesystemId: workspace.id,\r\n userOnly: workspace.userOnly,\r\n httpsOnly: workspace.httpsOnly,\r\n viewerUsers,\r\n };\r\n await setSecurityPrefs(configureSecurity);\r\n }\r\n await this.$store.dispatch(new Fetch(this.workspace));\r\n } catch (error) {\r\n this.errors.push(asError(error).message);\r\n } finally {\r\n this.submitting = false;\r\n }\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n const { workspace, model, isSubInstance } = this;\r\n const isUserOnlyModified = model.userOnly !== values.userOnly;\r\n const viewerUsers = values.users.filter(user => user.isViewer).map(item => item.user.userId);\r\n\r\n if (isSubInstance) {\r\n if (isUserOnlyModified) {\r\n await setUserOnly(workspace.id, values.userOnly);\r\n }\r\n }\r\n\r\n if (!isSubInstance) {\r\n const configureSecurity: Partial = {\r\n FilesystemId: workspace.id,\r\n userOnly: values.userOnly,\r\n httpsOnly: values.httpsOnly,\r\n viewerUsers,\r\n };\r\n await setSecurityPrefs(configureSecurity);\r\n }\r\n\r\n this.$emit(\"submit\");\r\n },\r\n\r\n cancel() {\r\n this.$emit(\"cancel\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxConfigureWorkspaceSecurity.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxConfigureWorkspaceSecurity.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxConfigureWorkspaceSecurity.vue?vue&type=template&id=cbbf7810&scoped=true&\"\nimport script from \"./AxConfigureWorkspaceSecurity.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxConfigureWorkspaceSecurity.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxConfigureWorkspaceSecurity.vue?vue&type=style&index=0&id=cbbf7810&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cbbf7810\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.value)?_c('AxDialog',{attrs:{\"content-class\":\"ax-confirm-dialog-content\"},on:{\"after-leave\":_vm.cancelHandler},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('AxForm',{attrs:{\"value\":_vm.value,\"submit\":_vm.submitHandler},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',{staticClass:\"ax-confirm-dialog\"},[_c('div',{staticClass:\"form-title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{staticClass:\"form-description\"},[_vm._t(\"default\",null,{\"value\":values})],2),_c('AxButtonGroup',{staticClass:\"d-flex justify-content-around\"},[_c('AxButton',{staticClass:\"confirm-button\",attrs:{\"color\":\"secondary\",\"large\":\"\",\"loading\":submitting},on:{\"click\":_vm.cancelHandler}},[_vm._v(\" Cancel \")]),_c('AxButton',{staticClass:\"confirm-button\",attrs:{\"type\":\"submit\",\"color\":\"danger\",\"loading\":submitting,\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.submitText)+\" \")])],1)],1)]}}],null,true)})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { noop } from \"@/common/lib\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxButtonGroup from \"@/components/AxButtonGroup.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDialog,\r\n AxForm,\r\n AxButton,\r\n AxButtonGroup,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Object,\r\n required: true,\r\n },\r\n\r\n title: {\r\n type: String,\r\n required: false,\r\n default: \"Are You Sure?\",\r\n },\r\n\r\n submitText: {\r\n type: String,\r\n default: \"Submit\",\r\n },\r\n\r\n submit: {\r\n type: Function,\r\n default: () => noop,\r\n } as PropValidator<(model: any) => Promise | Function>,\r\n\r\n cancel: {\r\n type: Function,\r\n default: () => noop,\r\n } as PropValidator<() => Promise | Function>,\r\n },\r\n\r\n data() {\r\n return {\r\n dialog: true,\r\n };\r\n },\r\n\r\n methods: {\r\n async submitHandler({ values }: Submit) {\r\n await this.submit(values);\r\n },\r\n\r\n async cancelHandler() {\r\n await this.cancel();\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxConfirmDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxConfirmDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxConfirmDialog.vue?vue&type=template&id=1dd2ff54&scoped=true&\"\nimport script from \"./AxConfirmDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxConfirmDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxConfirmDialog.vue?vue&type=style&index=0&id=1dd2ff54&prod&lang=scss&scoped=true&\"\nimport style1 from \"./AxConfirmDialog.vue?vue&type=style&index=1&id=1dd2ff54&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1dd2ff54\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"copyToClipboard\",staticClass:\"ax-copy-to-clipboard\"},[_vm._t(\"default\",function(){return [_c('AxButton',_vm._b({on:{\"click\":_vm.copy}},'AxButton',_vm.buttonOptions,false),[_vm._v(\" \"+_vm._s(_vm.copyButtonText)+\" \")])]},{\"copy\":_vm.copy,\"delay\":_vm.delay})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { copyTextToClipboard, delay } from \"@/common/lib\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n buttonOptions: {\r\n type: Object,\r\n required: false,\r\n default: () => ({\r\n color: \"secondary\",\r\n small: true,\r\n }),\r\n },\r\n\r\n buttonText: {\r\n type: String,\r\n default: \"Copy\",\r\n },\r\n\r\n buttonTextCopied: {\r\n type: String,\r\n default: \"Copied\",\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n delay: false,\r\n copyButtonText: this.buttonText,\r\n };\r\n },\r\n\r\n methods: {\r\n async copy() {\r\n const wrapper = this.$refs.copyToClipboard as Element;\r\n if (copyTextToClipboard(this.value, wrapper)) {\r\n this.$emit(\"copy\");\r\n this.copyButtonText = this.buttonTextCopied;\r\n this.delay = true;\r\n await delay(2000);\r\n this.delay = false;\r\n this.copyButtonText = this.buttonText;\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCopyToClipboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCopyToClipboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCopyToClipboard.vue?vue&type=template&id=2e59eba6&scoped=true&\"\nimport script from \"./AxCopyToClipboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCopyToClipboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCopyToClipboard.vue?vue&type=style&index=0&id=2e59eba6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e59eba6\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxDataTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDataTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxDataTable.vue?vue&type=style&index=0&id=26f63154&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _c(_vm.props.components.AxIcon,_vm._b({tag:\"Component\"},'Component',_vm.data,false),[_c('svg',{attrs:{\"viewBox\":\"0 0 7 12\"}},[_c('path',{attrs:{\"fill\":_vm.props.sorting === 'asc' ? '#686868' : '#c5c4c4',\"d\":\"M3.182 0l3.182 5H0z\"}}),_c('path',{attrs:{\"fill\":_vm.props.sorting === 'desc' ? '#686868' : '#c5c4c4',\"d\":\"M3.182 12l3.182-5H0z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n components: {\r\n type: Object,\r\n default() {\r\n return {\r\n AxIcon,\r\n };\r\n },\r\n },\r\n sorting: {\r\n type: String,\r\n default: \"none\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSorter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSorter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSorter.vue?vue&type=template&id=2b2615e4&functional=true&\"\nimport script from \"./AxSorter.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSorter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, {\r\n VNode, VNodeChildren, VNodeChildrenArrayContents, VNodeData,\r\n} from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\nimport { ScopedSlotChildren } from \"vue/types/vnode\";\r\n\r\nimport { getObjectValueByPath, objectsSort } from \"@/common/lib\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDataTableCellCheckbox from \"@/components/AxDataTableCellCheckbox.vue\";\r\nimport AxSorter from \"@/components/icons/AxSorter.vue\";\r\nimport { Header } from \"@/components/types/AxDataTable\";\r\n\r\nexport interface Pagination {\r\n descending?: boolean;\r\n page: number;\r\n rowsPerPage: number;\r\n sortBy?: string;\r\n totalItems?: number;\r\n}\r\n\r\ninterface RowPerPageItemValue {\r\n text: string;\r\n value: number;\r\n}\r\n\r\nexport type RowPerPageItem = Array;\r\n\r\nexport default Vue.extend({\r\n props: {\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n value: {\r\n type: Array,\r\n required: false,\r\n default(): any[] {\r\n return [];\r\n },\r\n } as PropValidator,\r\n\r\n items: {\r\n type: Array,\r\n required: true,\r\n default(): any[] {\r\n return [];\r\n },\r\n } as PropValidator,\r\n\r\n headers: {\r\n type: Array,\r\n default(): Header[] {\r\n return [];\r\n },\r\n } as PropValidator,\r\n\r\n rowsPerPageItems: {\r\n type: Array,\r\n default() {\r\n return [\r\n {\r\n text: \"All\",\r\n value: -1,\r\n },\r\n 5,\r\n 10,\r\n 25,\r\n ];\r\n },\r\n } as PropValidator,\r\n\r\n itemKey: {\r\n type: String,\r\n default: \"id\",\r\n },\r\n\r\n headerText: {\r\n type: String,\r\n default: \"text\",\r\n },\r\n\r\n selectColumn: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n selectAll: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n customSort: {\r\n type: Function,\r\n default: objectsSort,\r\n } as PropValidator,\r\n\r\n fixedHeader: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n fixedActionsHeader: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n fixedHeaderStyles: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n\r\n pagination: {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n } as PropValidator,\r\n\r\n totalItems: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n disableInitialSort: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n hideActionsFooter: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n hideHeaders: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n responsive: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n transitionItems: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n data() {\r\n const defaultPagination: Pagination = {\r\n descending: false,\r\n page: 1,\r\n rowsPerPage: -1,\r\n sortBy: undefined,\r\n totalItems: 0,\r\n };\r\n return {\r\n defaultPagination,\r\n };\r\n },\r\n\r\n computed: {\r\n computedPagination(): Pagination {\r\n return this.hasPagination ? { ...this.defaultPagination, ...this.pagination } : this.defaultPagination;\r\n },\r\n\r\n hasPagination(): boolean {\r\n const pagination = this.pagination || {};\r\n return Object.keys(pagination).length > 0;\r\n },\r\n\r\n filteredItems(): any[] {\r\n return this.filteredItemsImpl();\r\n },\r\n\r\n headerColumns(): number {\r\n const { headers } = this;\r\n return headers.length + (this.hasSelectAll || this.hasSelectColumn ? 1 : 0);\r\n },\r\n\r\n tableClasses(): Record {\r\n const { fixedHeader } = this;\r\n return {\r\n \"ax-table--fixed-header\": fixedHeader,\r\n };\r\n },\r\n\r\n hasSelectColumn(): boolean {\r\n return this.selectColumn !== undefined && this.selectColumn !== false;\r\n },\r\n\r\n hasSelectAll(): boolean {\r\n return this.selectAll !== undefined && this.selectAll !== false;\r\n },\r\n\r\n selected(): Record {\r\n const selected: { [key: string]: boolean } = {};\r\n for (const value of this.value) {\r\n const key = getObjectValueByPath(value, this.itemKey) as string;\r\n selected[key] = true;\r\n }\r\n return selected;\r\n },\r\n\r\n everyItem(): boolean {\r\n return this.filteredItems.length !== 0 && this.filteredItems.every(i => this.isSelected(i));\r\n },\r\n\r\n someItems(): boolean {\r\n return this.filteredItems.some(i => this.isSelected(i));\r\n },\r\n\r\n itemsLength(): number {\r\n return this.totalItems || this.items.length;\r\n },\r\n\r\n getPage(): number {\r\n const { rowsPerPage } = this.computedPagination;\r\n\r\n return rowsPerPage;\r\n },\r\n\r\n pageStart(): number {\r\n return this.getPage === -1 ? 0 : (this.computedPagination.page - 1) * this.getPage;\r\n },\r\n\r\n pageStop(): number {\r\n return this.getPage === -1 ? this.itemsLength : this.computedPagination.page * this.getPage;\r\n },\r\n\r\n indeterminate(): boolean {\r\n return this.hasSelectAll && this.someItems && !this.everyItem;\r\n },\r\n },\r\n\r\n created() {\r\n const firstSortable = this.headers.find(h => h.sortable === true);\r\n this.defaultPagination.sortBy = !this.disableInitialSort && firstSortable ? firstSortable.value : undefined;\r\n this.initPagination();\r\n },\r\n\r\n methods: {\r\n sort(index: string | undefined) {\r\n const { sortBy, descending } = this.computedPagination;\r\n if (sortBy === null) {\r\n this.updatePagination({ sortBy: index, descending: false });\r\n } else if (sortBy === index && !descending) {\r\n this.updatePagination({ descending: true });\r\n } else if (sortBy !== index) {\r\n this.updatePagination({ sortBy: index, descending: false });\r\n } else {\r\n this.updatePagination({ sortBy: undefined, descending: undefined });\r\n }\r\n },\r\n\r\n isSelected(item: any): boolean {\r\n return !!this.selected[getObjectValueByPath(item, this.itemKey)];\r\n },\r\n\r\n initPagination() {\r\n if (!this.rowsPerPageItems.length) {\r\n console.warn(\"The prop 'rows-per-page-items' can not be empty\", this);\r\n } else {\r\n const rowsDefault = this.rowsPerPageItems[0];\r\n this.defaultPagination.rowsPerPage = typeof rowsDefault === \"number\" ? rowsDefault : rowsDefault.value;\r\n }\r\n\r\n this.defaultPagination.totalItems = this.items.length;\r\n\r\n this.updatePagination({ ...this.defaultPagination, ...this.pagination });\r\n },\r\n\r\n updatePagination(val: Partial) {\r\n const pagination: Pagination = this.hasPagination ? this.pagination : this.defaultPagination;\r\n const updatedPagination: Pagination = { ...pagination, ...val };\r\n this.$emit(\"update:pagination\", updatedPagination);\r\n\r\n if (!this.hasPagination) {\r\n this.defaultPagination = updatedPagination;\r\n }\r\n },\r\n\r\n filteredItemsImpl(): any[] {\r\n if (this.totalItems) return this.items;\r\n\r\n let items = this.items.slice();\r\n const { computedPagination } = this;\r\n if (computedPagination.sortBy) {\r\n items = this.customSort(items, computedPagination.sortBy, computedPagination.descending);\r\n }\r\n return this.hasPagination ? items.slice(this.pageStart, this.pageStop) : items;\r\n },\r\n\r\n genTHead() {\r\n if (this.hideHeaders) return undefined;\r\n let children = [];\r\n const data: VNodeData = {};\r\n const row = this.headers.map(o => this.genHeader(o));\r\n if (this.hasSelectAll) {\r\n const checkbox = this.$createElement(AxDataTableCellCheckbox, {\r\n props: {\r\n value: this.everyItem,\r\n indeterminate: this.indeterminate,\r\n },\r\n on: { input: this.toggle },\r\n });\r\n row.unshift(this.$createElement(\"th\", { class: \"ax-data-table-checkbox always-show\" }, [checkbox]));\r\n } else if (this.hasSelectColumn) {\r\n row.unshift(this.$createElement(\"th\", { class: \"ax-data-table-checkbox\" }, []));\r\n }\r\n\r\n children = [\r\n this.genTR(row, {\r\n class: {\r\n selected: this.someItems,\r\n },\r\n }),\r\n // this.genTProgress(),\r\n ];\r\n\r\n if (this.fixedHeader) {\r\n data.style = this.fixedHeaderStyles;\r\n }\r\n\r\n return this.$createElement(\"thead\", data, [children]);\r\n },\r\n\r\n genTProgress() {\r\n if (this.loading === false) return undefined;\r\n\r\n const col = this.$createElement(\r\n \"th\",\r\n {\r\n attrs: {\r\n colspan: this.headerColumns,\r\n },\r\n },\r\n this.genProgress(),\r\n );\r\n\r\n return this.genTR([col], {\r\n staticClass: \"ax-data-table__progress\",\r\n });\r\n },\r\n\r\n genProgress() {\r\n return this.$scopedSlots.progress && this.$scopedSlots.progress({}); // || this.genProgressDefault();\r\n },\r\n\r\n genProgressDefault() {\r\n const progressBar = this.$createElement(\"div\", {\r\n class: [\"progress-bar\", \"progress-bar-striped\", \"progress-bar-animated\", \"w-100\"],\r\n });\r\n return this.$createElement(\r\n \"div\",\r\n {\r\n class: [\"progress\", \"w-100\"],\r\n attrs: { style: \"height: 5px\" },\r\n },\r\n [progressBar],\r\n );\r\n },\r\n\r\n genHeader(header: Header): VNode {\r\n const array = [\r\n this.$scopedSlots.headerCell ? this.$scopedSlots.headerCell({ header }) : (header[this.headerText] as string),\r\n ];\r\n const { data, children } = this.genHeaderData(header, array);\r\n return this.$createElement(\"th\", data, children);\r\n },\r\n\r\n genHeaderData(header: Header, children: VNodeChildrenArrayContents) {\r\n const classes: string[] = [];\r\n const data: VNodeData = {\r\n key: header[this.headerText] as string,\r\n attrs: {\r\n scope: \"col\",\r\n },\r\n\r\n style: this.genHeaderStyles(header),\r\n class: classes,\r\n };\r\n\r\n if (header.sortable == null || header.sortable) {\r\n this.genHeaderSortingData(header, children, data, classes);\r\n }\r\n\r\n return { data, children };\r\n },\r\n\r\n genHeaderStyles(header: Header) {\r\n let styles: Partial = {};\r\n if (header.width) {\r\n const headerWidthStyles = { flexBasis: header.width, flexGrow: \"0\" };\r\n styles = { ...styles, ...headerWidthStyles };\r\n }\r\n return styles;\r\n },\r\n\r\n genHeaderSortingData(header: Header, children: VNodeChildrenArrayContents, data: VNodeData, classes: string[]) {\r\n if (!(\"value\" in header)) {\r\n console.warn(\"Headers must have a value property that corresponds to a value in the v-model array\", this);\r\n }\r\n\r\n data.attrs = {\r\n ...data.attrs,\r\n tabIndex: 0,\r\n };\r\n data.on = {\r\n click: () => {\r\n this.sort(header.value);\r\n },\r\n\r\n keydown: (e: KeyboardEvent) => {\r\n const spaceKeyCode = 32;\r\n if (e.keyCode === spaceKeyCode) {\r\n e.preventDefault();\r\n this.sort(header.value);\r\n }\r\n },\r\n };\r\n\r\n classes.push(\"sortable\");\r\n if (this.isSorted(header)) {\r\n classes.push(\"active\");\r\n }\r\n const sorter = this.genSorter(header);\r\n children.push(sorter);\r\n },\r\n\r\n genSorter(header: Header): VNode {\r\n const data: VNodeData = {\r\n class: \"sort-icon\",\r\n };\r\n if (this.isSorted(header)) {\r\n data.props = { ...data.props, sorting: this.computedPagination.descending ? \"desc\" : \"asc\" };\r\n }\r\n return this.$createElement(AxSorter, data);\r\n },\r\n\r\n isSorted(header: Header) {\r\n return this.computedPagination.sortBy === header.value;\r\n },\r\n\r\n genTBody() {\r\n const children = this.genItems();\r\n if (this.transitionItems) {\r\n return this.$createElement(\r\n \"transition-group\",\r\n {\r\n props: {\r\n name: this.transitionItems,\r\n tag: \"tbody\",\r\n },\r\n },\r\n children,\r\n );\r\n }\r\n return this.$createElement(\"tbody\", children);\r\n },\r\n\r\n genTFoot(): VNode | string {\r\n if (!this.$scopedSlots.footer) {\r\n return \"\";\r\n }\r\n\r\n const footer = this.$scopedSlots.footer({});\r\n const row = this.hasTag(footer, \"td\") ? this.genTR([footer]) : footer;\r\n\r\n return this.$createElement(\"tfoot\", [row]);\r\n },\r\n\r\n genActionsHeader(): VNode | string {\r\n if (this.$scopedSlots.actionsHeader) {\r\n return this.$createElement(\r\n \"div\",\r\n {\r\n class: this.fixedActionsHeader ? \"ax-data-table__actions-header-fixed\" : \"ax-data-table__actions-header\",\r\n },\r\n [this.$scopedSlots.actionsHeader({})],\r\n );\r\n }\r\n return \"\";\r\n },\r\n\r\n genActionsFooter(): VNode | string {\r\n if (this.hideActionsFooter) {\r\n return \"\";\r\n }\r\n\r\n return this.$createElement(\"div\", { class: \"ax-data-table__actions-footer\" }, [\r\n this.genPagination(),\r\n this.genPrevBtn(),\r\n this.genNextBtn(),\r\n ]);\r\n },\r\n\r\n genPagination(): VNode {\r\n let pagination: VNode | VNodeChildren = \"–\";\r\n\r\n if (this.itemsLength) {\r\n const stop = this.itemsLength < this.pageStop || this.pageStop < 0 ? this.itemsLength : this.pageStop;\r\n\r\n pagination = this.$scopedSlots.pageText\r\n ? this.$scopedSlots.pageText({\r\n pageStart: this.pageStart + 1,\r\n pageStop: stop,\r\n itemsLength: this.itemsLength,\r\n })\r\n : `${this.pageStart + 1}-${stop} of ${this.itemsLength}`;\r\n }\r\n\r\n return this.$createElement(\"div\", { class: \"ax-data-table__pagination\" }, [pagination]);\r\n },\r\n\r\n genPrevBtn() {\r\n return this.$createElement(\r\n AxButton,\r\n {\r\n props: {\r\n disabled: this.computedPagination.page === 1,\r\n },\r\n on: {\r\n click: () => {\r\n const { page } = this.computedPagination;\r\n this.updatePagination({ page: page - 1 });\r\n },\r\n },\r\n },\r\n [\"Prev\"],\r\n );\r\n },\r\n\r\n genNextBtn() {\r\n const pagination = this.computedPagination;\r\n const disabled = pagination.rowsPerPage < 0 || pagination.page * pagination.rowsPerPage >= this.itemsLength || this.pageStop < 0;\r\n\r\n return this.$createElement(\r\n AxButton,\r\n {\r\n props: {\r\n disabled,\r\n },\r\n on: {\r\n click: () => {\r\n const { page } = this.computedPagination;\r\n this.updatePagination({ page: page + 1 });\r\n },\r\n },\r\n },\r\n [\"Next\"],\r\n );\r\n },\r\n\r\n genItems() {\r\n if (!this.items.length && !this.loading) {\r\n const noData = (this.$scopedSlots.noData && this.$scopedSlots.noData({})) || \"No items to display.\";\r\n return [this.genEmptyItems(noData)];\r\n }\r\n\r\n return this.genFilteredItems();\r\n },\r\n\r\n genFilteredItems(): VNodeChildren {\r\n if (!this.$scopedSlots.items) {\r\n return undefined;\r\n }\r\n\r\n const rows = [];\r\n for (let index = 0, len = this.filteredItems.length; index < len; ++index) {\r\n const item = this.filteredItems[index];\r\n const props = this.createProps(item, index);\r\n const row = this.$scopedSlots.items(props);\r\n if (!row) continue;\r\n rows.push(\r\n this.hasTag(row, \"td\")\r\n ? this.setTdStyles(\r\n this.genTR([row], {\r\n key: this.getKey(props.item) || index,\r\n class: { selected: this.isSelected(item) },\r\n }),\r\n )\r\n : this.setRowTdStyles(row),\r\n );\r\n }\r\n return rows;\r\n },\r\n\r\n setRowTdStyles(row: ScopedSlotChildren) {\r\n if (!row) return row;\r\n if (typeof row === \"string\") return row;\r\n if (!Array.isArray(row)) return row;\r\n for (const r of row) {\r\n if (!r || typeof r === \"string\" || typeof r === \"boolean\" || Array.isArray(r)) continue;\r\n if (r.tag !== undefined) {\r\n this.setTdStyles(r);\r\n }\r\n }\r\n return row;\r\n },\r\n\r\n setTdStyles(row: VNode) {\r\n const totalHeaders = this.headers.length;\r\n if (!row.children) return row;\r\n\r\n const cellOffset = this.hasSelectAll || this.hasSelectColumn ? 1 : 0;\r\n const children = row.children.filter(cell => cell.tag === \"td\");\r\n for (let i = 0; i < totalHeaders; i++) {\r\n const header = this.headers[i];\r\n const cell = children[i + cellOffset];\r\n if (!cell || !header) continue;\r\n if (cell.tag !== \"td\") continue;\r\n\r\n const data = cell.data || {};\r\n let headerStyles;\r\n if (data.style && typeof data.style === \"object\") {\r\n headerStyles = { ...data.style, ...this.genHeaderStyles(header) };\r\n } else {\r\n headerStyles = this.genHeaderStyles(header);\r\n }\r\n\r\n data.style = headerStyles;\r\n cell.data = data;\r\n }\r\n return row;\r\n },\r\n\r\n createProps(item: any, index: number) {\r\n const keyProp = this.itemKey;\r\n const itemKey = getObjectValueByPath(item, keyProp);\r\n const props = { item, index, key: itemKey };\r\n\r\n Object.defineProperty(props, \"selected\", {\r\n get: () => this.isSelected(item),\r\n set: value => {\r\n if (itemKey == null) {\r\n console.warn(`\"${keyProp}\" attribute must be defined for item`, this);\r\n }\r\n\r\n let selected = this.value.slice();\r\n if (value) selected.push(item);\r\n else {\r\n selected = selected.filter(i => getObjectValueByPath(i, keyProp) !== itemKey);\r\n }\r\n this.$emit(\"input\", selected);\r\n },\r\n });\r\n\r\n return props;\r\n },\r\n\r\n genEmptyItems(content: VNodeChildren) {\r\n return this.genTR([\r\n this.$createElement(\r\n \"th\",\r\n {\r\n attrs: { colspan: this.headerColumns },\r\n },\r\n content,\r\n ),\r\n ], {\r\n class: \"ax-no-data-row\",\r\n });\r\n },\r\n\r\n hasTag(elements: any, tag: string): boolean {\r\n return Array.isArray(elements) && elements.find(e => e.tag === tag);\r\n },\r\n\r\n genTR(children: VNodeChildren, data?: VNodeData) {\r\n return this.$createElement(\"tr\", data, children);\r\n },\r\n\r\n toggle(value: boolean) {\r\n const selected = { ...this.selected };\r\n for (const filteredItem of this.filteredItems) {\r\n const key = getObjectValueByPath(filteredItem, this.itemKey);\r\n selected[key] = value;\r\n }\r\n\r\n this.$emit(\r\n \"input\",\r\n this.items.filter(i => {\r\n const key = getObjectValueByPath(i, this.itemKey);\r\n return selected[key];\r\n }),\r\n );\r\n },\r\n\r\n getKey(item: any): any | null {\r\n return this.itemKey ? getObjectValueByPath(item, this.itemKey) : null;\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n let table = h(\"table\", { class: this.tableClasses }, [this.genTHead(), this.genTBody(), this.genTFoot()]);\r\n\r\n if (this.responsive) {\r\n table = h(\"div\", { class: \"ax-data-table__overflow\" }, [table]);\r\n }\r\n\r\n return h(\"div\", { class: \"ax-data-table\" }, [this.genActionsHeader(), table, this.genActionsFooter()]);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDataTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDataTable.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('label',{staticClass:\"ax-data-table-label-checkbox\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"value\":_vm.value,\"checked\":_vm.value,\"indeterminate\":_vm.indeterminate},on:{\"change\":_vm.change}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n value: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n indeterminate: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n change(event: any) {\r\n this.$emit(\"input\", event.target.checked);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDataTableCellCheckbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDataTableCellCheckbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxDataTableCellCheckbox.vue?vue&type=template&id=3b815612&\"\nimport script from \"./AxDataTableCellCheckbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDataTableCellCheckbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxDataTableCellCheckbox.vue?vue&type=style&index=0&id=3b815612&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _c('div',{staticClass:\"text-center no-data-message\"},[_vm._t(\"noDataIcon\",function(){return [_c('div',{staticClass:\"no-data-icon\"},[_c(_vm.props.components.AxCactus,{tag:\"Component\"})],1)]}),_c('p',{staticClass:\"no-data-title\"},[_vm._t(\"title\",function(){return [_vm._v(\" \"+_vm._s(_vm.props.title)+\" \")]})],2),_c('p',[_vm._t(\"sub-title\",function(){return [_vm._v(\" \"+_vm._s(_vm.props.subTitle)+\" \")]})],2),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{attrs:{\"viewBox\":\"0 0 52 52\"}},[_c('g',{attrs:{\"fill\":\"none\",\"fill-rule\":\"nonzero\"}},[_c('path',{attrs:{\"fill\":_vm.border,\"d\":\"M32.9 22.5c1.15 0 2.1-.95 2.1-2.1V15c0-1.15-.95-2.1-2.1-2.1-1.15 0-2.1.95-2.1 2.1v3.35h-2.7V12.1c0-1.15-.95-2.1-2.1-2.1-1.15 0-2.1.95-2.1 2.1v9.7h-2.7v-3.1c0-1.15-.95-2.1-2.1-2.1-1.15 0-2.1.95-2.1 2.1v5.2c0 1.15.95 2.1 2.1 2.1h4.8v4.7h-4.65c-.3 0-.55.3-.5.6L21 40.9c.15.65.7 1.1 1.35 1.1h7.249c.65 0 1.2-.45 1.35-1.1l2.249-9.6c.05-.3-.15-.599-.5-.599h-4.65l.001-8.2H32.9V22.5z\"}}),_c('path',{attrs:{\"fill\":_vm.pot,\"d\":\"M30 40.7c-.05.2-.2.3-.4.3h-7.2c-.2 0-.35-.101-.4-.301l-1.299-5.6h10.6L30 40.7zm1.55-6.6h-11.1l-.55-2.4h12.2l-.55 2.4z\"}}),_c('path',{attrs:{\"fill\":_vm.color,\"d\":\"M24.9 30.7v-5.2c0-.301-.2-.5-.5-.5h-5.3c-.6 0-1.1-.501-1.1-1.1v-5.2c0-.6.5-1.1 1.1-1.1.6 0 1.1.5 1.1 1.1v3.6c0 .3.2.5.5.5h3.7c.3 0 .5-.2.5-.5V12.1c0-.6.5-1.1 1.1-1.1.6 0 1.1.5 1.1 1.1v6.7c0 .3.2.5.5.5h3.7c.3 0 .5-.2.5-.5V15c0-.6.5-1.1 1.1-1.1.598 0 1.099.5 1.099 1.1v5.45c0 .6-.5 1.1-1.1 1.1h-5.3c-.3 0-.5.2-.5.5v8.7H24.9v-.05z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n color: {\r\n type: String,\r\n default: \"#47b469\",\r\n },\r\n\r\n pot: {\r\n type: String,\r\n default: \"#fff\",\r\n },\r\n\r\n border: {\r\n type: String,\r\n default: \"#333\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCactus.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCactus.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCactus.vue?vue&type=template&id=863105ae&\"\nimport script from \"./AxCactus.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCactus.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxCactus from \"@/components/icons/AxCactus.vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n components: {\r\n type: Object,\r\n default() {\r\n return {\r\n AxIcon,\r\n AxCactus,\r\n };\r\n },\r\n },\r\n\r\n title: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n subTitle: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDataTableNoData.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDataTableNoData.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxDataTableNoData.vue?vue&type=template&id=7e17751a&functional=true&\"\nimport script from \"./AxDataTableNoData.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDataTableNoData.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxDataTableNoData.vue?vue&type=style&index=0&id=7e17751a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport {\r\n format, formatRelative, formatDistance, isValid, formatDistanceStrict,\r\n} from \"date-fns\";\r\nimport Vue, { VNodeData } from \"vue\";\r\n\r\nimport { jsDateFromAspDateString } from \"@/common/lib\";\r\n\r\nconst defaults = {\r\n dateFormat: \"PPP\",\r\n dateTimeFormat: \"p EEEE, MMMM do\",\r\n timeAfterDateFormat: \"EEEE, MMMM do p\",\r\n tooltipFormat: \"PPpp\",\r\n};\r\n\r\ninterface Props {\r\n value: Date | string;\r\n format: string;\r\n tooltipFormat: string;\r\n dateTimeFormat: string;\r\n time: boolean;\r\n timeAfterDate: boolean;\r\n}\r\n\r\nconst componentProps = {\r\n value: {\r\n type: [Date, String],\r\n required: true,\r\n },\r\n\r\n format: {\r\n type: String,\r\n default: defaults.dateFormat,\r\n },\r\n\r\n tooltipFormat: {\r\n type: String,\r\n default: defaults.tooltipFormat,\r\n },\r\n\r\n dateTimeFormat: {\r\n type: String,\r\n default: defaults.dateTimeFormat,\r\n },\r\n\r\n time: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n timeAfterDate: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n relative: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n distance: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n strict: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n addSuffix: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n functional: true,\r\n props: componentProps,\r\n\r\n render(h, context) {\r\n const { props, data } = context;\r\n const date = normalize(props.value);\r\n const formatters = determineFormatters(props);\r\n let text = \"\";\r\n let tooltip = \"\";\r\n if (date) {\r\n if (props.relative) {\r\n text = formatRelative(date, new Date());\r\n } else if (props.distance) {\r\n const formatDistanceFn = props.strict ? formatDistanceStrict : formatDistance;\r\n text = formatDistanceFn(date, new Date(), {\r\n addSuffix: props.addSuffix,\r\n });\r\n if (text.includes(\"second\")) {\r\n text = \"just now\";\r\n } else {\r\n text = text.replace(\"minute\", \"min\");\r\n }\r\n } else {\r\n text = format(date, formatters.text);\r\n }\r\n\r\n tooltip = format(date, formatters.tooltip);\r\n } else {\r\n text = \"Invalid Date\";\r\n }\r\n const nodeData: VNodeData = {\r\n class: [\"ax-date\", data.staticClass],\r\n attrs: {\r\n title: tooltip,\r\n },\r\n domProps: {\r\n innerHTML: text,\r\n },\r\n };\r\n return h(\"span\", nodeData);\r\n },\r\n});\r\n\r\nconst determineFormatters = (props: Props) => {\r\n const {\r\n time, timeAfterDate, format: dateFormat, tooltipFormat, dateTimeFormat,\r\n } = props;\r\n\r\n return {\r\n text: time ? (timeAfterDate ? defaults.timeAfterDateFormat : dateTimeFormat) : dateFormat,\r\n tooltip: tooltipFormat,\r\n };\r\n};\r\n\r\nconst normalize = (value: Date | string) => {\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n return convertToDate(value);\r\n};\r\n\r\nconst convertToDate = (value: string) => {\r\n const date = new Date(value);\r\n try {\r\n return isValid(date) ? date : jsDateFromAspDateString(value);\r\n } catch (error) {\r\n console.error(error);\r\n return undefined;\r\n }\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDate.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDate.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./AxDate.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDate.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxDate.vue?vue&type=style&index=0&id=311f02b8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nconst AxDialogManager = Vue.extend({\r\n data() {\r\n const modals: Vue[] = [];\r\n return {\r\n modals,\r\n baseZIndex: 2000,\r\n };\r\n },\r\n\r\n watch: {\r\n modals(newVal, _oldVal) {\r\n this.updateModals(newVal || []);\r\n },\r\n },\r\n\r\n methods: {\r\n // Public methods\r\n registerModal(modal: Vue | any) {\r\n // Register the modal if not already registered\r\n if (modal && this.modals.indexOf(modal) === -1) {\r\n // Add modal to modals array\r\n this.modals.push(modal);\r\n modal.$once(\"hook:beforeDestroy\", () => {\r\n this.unregisterModal(modal);\r\n });\r\n }\r\n },\r\n\r\n unregisterModal(modal: Vue | any) {\r\n const index = this.modals.indexOf(modal);\r\n if (index > -1) {\r\n // Remove modal from modals array\r\n this.modals.splice(index, 1);\r\n // Reset the modal's data\r\n // eslint-disable-next-line no-underscore-dangle\r\n if (!(modal._isBeingDestroyed || modal._isDestroyed)) {\r\n this.resetModal(modal);\r\n }\r\n }\r\n },\r\n\r\n getBaseZIndex() {\r\n return this.baseZIndex;\r\n },\r\n\r\n // Private methods\r\n updateModals(modals: Vue[]) {\r\n const baseZIndex = this.getBaseZIndex();\r\n modals.forEach((modal, index) => {\r\n const dialog = modal as any;\r\n // We update data values on each modal\r\n dialog.zIndex = baseZIndex + 2 * index;\r\n dialog.isTop = index === this.modals.length - 1;\r\n });\r\n },\r\n\r\n resetModal(modal: any) {\r\n if (modal) {\r\n modal.zIndex = this.getBaseZIndex();\r\n modal.isTop = true;\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport default new AxDialogManager();\r\n","var render, staticRenderFns\nimport script from \"./AxDialogManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDialogManager.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDialogManager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDialogManager.vue?vue&type=script&lang=ts&\"","\r\nimport Vue, {\r\n VNode, VNodeChildren, VNodeData, VNodeDirective,\r\n} from \"vue\";\r\n\r\nimport { directive as clickAway } from \"@/mixins/ClickAway\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport dialogManager from \"@/components/AxDialogManager.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nfunction validateAttachTarget(val: string | boolean | Node) {\r\n if (typeof val === \"boolean\" || typeof val === \"string\") return true;\r\n return val.nodeType === Node.ELEMENT_NODE;\r\n}\r\n\r\nfunction getZIndex(el?: Element | null): number {\r\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0;\r\n\r\n const index = +window.getComputedStyle(el).getPropertyValue(\"z-index\");\r\n\r\n // eslint-disable-next-line no-restricted-globals\r\n if (isNaN(index)) return getZIndex(el.parentNode as Element);\r\n return index;\r\n}\r\n\r\nexport default Vue.extend({\r\n directives: {\r\n clickAway,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n attach: {\r\n type: [String, Boolean],\r\n default: false,\r\n validator: validateAttachTarget,\r\n },\r\n\r\n lazy: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n hideOverlay: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n fullscreen: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n transition: {\r\n type: [String, Boolean],\r\n default: \"fade\",\r\n },\r\n\r\n persistent: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n disableClickAway: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dialogClass: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n contentClass: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n wrapperClass: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n hidden: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n target: null as HTMLElement | null,\r\n isActive: this.value,\r\n isBooted: false,\r\n hasDetached: false,\r\n stackMinZIndex: 2000,\r\n stackClass: \"ax-dialog__content--active\",\r\n overlay: null as HTMLElement | null,\r\n overlayTimeout: null as any | null,\r\n overlayTransitionDuration: 200 + 150, // transition + delay\r\n zIndex: dialogManager.getBaseZIndex(),\r\n isTop: true,\r\n return_focus: null as Element | null,\r\n ignoreClickAway: false,\r\n };\r\n },\r\n\r\n computed: {\r\n activeZIndex(): number {\r\n if (typeof window === \"undefined\") return 0;\r\n\r\n const content = this.$refs.dialog as Element;\r\n // Return current zindex if not active\r\n\r\n // Return max current z-index (excluding self) + 2\r\n // (2 to leave room for an overlay below, if needed)\r\n const index = !this.isActive ? getZIndex(content) : this.getMaxZIndex([content]) + 2;\r\n\r\n return index;\r\n },\r\n\r\n hasContent(): boolean {\r\n return this.isBooted || !this.lazy;\r\n },\r\n\r\n absolute(): boolean {\r\n return this.attach !== false && this.attach !== \"\";\r\n },\r\n\r\n classes(): Record {\r\n return {\r\n [`ax-dialog ${this.dialogClass}`.trim()]: true,\r\n \"ax-dialog--hidden\": this.hidden || !this.isTop,\r\n \"ax-dialog--active\": this.isActive,\r\n \"ax-dialog--fullscreen\": this.fullscreen,\r\n \"ax-dialog--absolute\": this.absolute,\r\n };\r\n },\r\n contentClasses(): Record {\r\n return {\r\n [`ax-dialog__content row g-0 ${this.contentClass}`.trim()]: true,\r\n \"ax-dialog__content--active\": this.isActive,\r\n };\r\n },\r\n wrapperClasses(): Record {\r\n return {\r\n [`ax-dialog__wrapper ${this.wrapperClass}`.trim()]: true,\r\n };\r\n },\r\n },\r\n\r\n watch: {\r\n value(val) {\r\n this.isActive = val;\r\n },\r\n\r\n isActive(val) {\r\n if (val) {\r\n this.isBooted = true;\r\n }\r\n if (val) {\r\n this.show();\r\n } else {\r\n this.removeOverlay();\r\n }\r\n this.$emit(\"input\", val);\r\n this.$emit(\"toggle\", val);\r\n },\r\n\r\n persistent(val) {\r\n if (!val) this.focusDialog();\r\n },\r\n },\r\n\r\n mounted() {\r\n this.isBooted = this.isActive;\r\n this.zIndex = dialogManager.getBaseZIndex();\r\n this.initDetach();\r\n if (this.isActive) {\r\n this.show();\r\n }\r\n },\r\n\r\n deactivated() {\r\n this.isActive = false;\r\n },\r\n\r\n beforeDestroy() {\r\n this.removeOverlay();\r\n if (this.hasDetached) {\r\n const dialog = this.$refs.dialog as HTMLElement | undefined;\r\n if (!dialog) return;\r\n\r\n this.setEnforceFocus(false);\r\n\r\n try {\r\n const { parentNode } = dialog;\r\n if (parentNode) {\r\n parentNode.removeChild(dialog);\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n show() {\r\n dialogManager.registerModal(this);\r\n this.return_focus = document.activeElement;\r\n\r\n if (!this.fullscreen && !this.hideOverlay) {\r\n this.genOverlay();\r\n }\r\n this.focusDialog();\r\n },\r\n\r\n focusDialog() {\r\n const content = this.$refs.content as HTMLElement | null;\r\n if (content) {\r\n content.focus();\r\n }\r\n },\r\n\r\n onDialogMousedown() {\r\n // Watch to see if the matching mouseup event occurs outside the dialog\r\n // And if it does, cancel the clickAway handler\r\n const dialog = this.$refs.dialog as HTMLElement | undefined;\r\n if (!dialog) return;\r\n this.ignoreClickAway = true;\r\n const onceModalMouseup = (evt: MouseEvent) => {\r\n dialog.removeEventListener(\"mouseup\", onceModalMouseup);\r\n if (dialog.contains(evt.target as Element)) {\r\n this.ignoreClickAway = false;\r\n }\r\n };\r\n dialog.addEventListener(\"mouseup\", onceModalMouseup);\r\n },\r\n\r\n closeConditional() {\r\n if (this.ignoreClickAway) {\r\n this.ignoreClickAway = false;\r\n return;\r\n }\r\n\r\n if (this.persistent) return;\r\n this.close();\r\n },\r\n\r\n close() {\r\n this.isActive = false;\r\n },\r\n\r\n showLazyContent(content: VNodeChildren) {\r\n return this.hasContent ? content : undefined;\r\n },\r\n\r\n genCloseButton(): VNode {\r\n const closeIcon = this.$createElement(AxIcon, {\r\n props: {\r\n name: \"add\",\r\n size: \"auto\",\r\n rotate: \"45deg\",\r\n },\r\n });\r\n const closeHint = this.$createElement(\r\n \"div\",\r\n {\r\n class: [\"ax-dialog__close-hint\"],\r\n },\r\n );\r\n const button = this.$createElement(\r\n AxButton,\r\n {\r\n props: {\r\n color: \"link\",\r\n },\r\n on: {\r\n click: () => this.close(),\r\n },\r\n },\r\n [closeIcon, closeHint],\r\n );\r\n return this.$createElement(\r\n \"div\",\r\n {\r\n class: [\"ax-dialog__close\"],\r\n },\r\n [button],\r\n );\r\n },\r\n\r\n genOverlay() {\r\n if (!this.isActive || this.hideOverlay || (this.isActive && this.overlayTimeout) || this.overlay) {\r\n if (this.overlayTimeout) {\r\n clearTimeout(this.overlayTimeout);\r\n }\r\n\r\n return this.overlay && this.overlay.classList.add(\"ax-dialog-overlay--active\");\r\n }\r\n\r\n this.overlay = document.createElement(\"div\");\r\n this.overlay.className = \"ax-dialog-overlay\";\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n const parent = this.target ? this.target : this.absolute ? this.$el.parentNode : document.querySelector(\"#app\");\r\n\r\n if (parent) {\r\n parent.insertBefore(this.overlay, parent.firstChild);\r\n }\r\n\r\n // eslint-disable-next-line no-unused-expressions\r\n this.overlay.clientHeight; // Force repaint\r\n requestAnimationFrame(() => {\r\n if (!this.overlay) return;\r\n\r\n this.overlay.className += \" ax-dialog-overlay--active\";\r\n\r\n if (this.absolute) {\r\n this.overlay.className += \" ax-dialog-overlay--absolute\";\r\n }\r\n\r\n this.overlay.style.zIndex = `${this.zIndex - 1}`;\r\n\r\n this.overlay.style.display = this.isTop ? \"\" : \"none\";\r\n });\r\n },\r\n\r\n removeOverlay() {\r\n if (!this.overlay) {\r\n this.afterOverlayTransitioned(() => {\r\n this.isBooted = false;\r\n });\r\n return;\r\n }\r\n\r\n this.overlay.classList.remove(\"ax-dialog-overlay--active\");\r\n this.afterOverlayTransitioned(() => {\r\n try {\r\n if (this.overlay && this.overlay.parentNode) {\r\n this.overlay.parentNode.removeChild(this.overlay);\r\n }\r\n this.overlay = null;\r\n this.isBooted = false;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n });\r\n },\r\n\r\n afterOverlayTransitioned(fn: () => void) {\r\n this.overlayTimeout = setTimeout(() => {\r\n fn();\r\n if (this.overlayTimeout) {\r\n clearTimeout(this.overlayTimeout);\r\n }\r\n this.overlayTimeout = null;\r\n }, this.overlayTransitionDuration);\r\n },\r\n\r\n genDialog(): VNode {\r\n const data = {\r\n ref: \"content\",\r\n attrs: {\r\n tabIndex: \"-1\",\r\n },\r\n class: this.contentClasses,\r\n on: {\r\n keydown: (event: KeyboardEvent) => {\r\n if (event.keyCode !== 27) return;\r\n event.preventDefault();\r\n this.closeConditional();\r\n },\r\n mousedown: this.onDialogMousedown,\r\n },\r\n };\r\n const children = [];\r\n const lazyContent = this.$scopedSlots.default && this.showLazyContent(this.$scopedSlots.default({}));\r\n if (lazyContent) {\r\n children.push(lazyContent);\r\n }\r\n // add close button after content to move it to the end of the tabbing sequence\r\n if (!this.persistent) {\r\n children.push(this.genCloseButton());\r\n }\r\n const wrapper = this.$createElement(\r\n \"div\",\r\n {\r\n class: this.wrapperClasses,\r\n },\r\n children,\r\n );\r\n const dialog = this.$createElement(\"div\", data, [wrapper]);\r\n return dialog;\r\n },\r\n\r\n initDetach() {\r\n if (!this.$refs.dialog || this.hasDetached || this.attach === \"\" || this.attach === true) {\r\n return;\r\n }\r\n\r\n let target: HTMLElement | null = null;\r\n if (this.attach === false) {\r\n // Default, detach to app\r\n target = document.querySelector(\"#app\");\r\n } else if (typeof this.attach === \"string\") {\r\n // CSS selector\r\n target = document.querySelector(this.attach);\r\n } else {\r\n // DOM Element\r\n target = this.attach as HTMLElement;\r\n }\r\n\r\n if (!target) {\r\n console.warn(`Unable to locate target ${this.attach || \"#app\"}`);\r\n return;\r\n }\r\n this.target = target;\r\n\r\n target.insertBefore(this.$refs.dialog as HTMLElement, target.firstChild);\r\n this.hasDetached = true;\r\n },\r\n\r\n getMaxZIndex(exclude: Element[] = [] as Element[]) {\r\n const base = this.$el;\r\n const zis = [this.stackMinZIndex, getZIndex(base)];\r\n const activeElements = [...document.getElementsByClassName(this.stackClass)];\r\n\r\n // Get z-index for all active dialogs\r\n for (const activeElement of activeElements) {\r\n if (exclude.indexOf(activeElement) === -1) {\r\n zis.push(getZIndex(activeElement));\r\n }\r\n }\r\n\r\n return Math.max(...zis);\r\n },\r\n\r\n genContent() {\r\n const directives: VNodeDirective[] = [{ name: \"show\", value: this.isActive }];\r\n if (this.isActive && !this.disableClickAway) {\r\n directives.push({\r\n name: \"click-away\",\r\n value: {\r\n handler: () => this.closeConditional(),\r\n closeConditional: () => this.isActive,\r\n },\r\n });\r\n }\r\n const data: VNodeData = {\r\n class: this.classes,\r\n style: { zIndex: this.zIndex },\r\n ref: \"dialog\",\r\n directives,\r\n };\r\n return this.$createElement(\"div\", data, [this.genDialog()]);\r\n },\r\n\r\n // Turn on/off focusin listener\r\n setEnforceFocus(enabled: boolean) {\r\n if (enabled) {\r\n document.addEventListener(\"focusin\", this.focusHandler);\r\n } else {\r\n document.removeEventListener(\"focusin\", this.focusHandler);\r\n }\r\n },\r\n\r\n // Document focusin listener\r\n focusHandler(event: Event) {\r\n // If focus leaves modal, bring it back\r\n const modal = this.$refs.dialog as HTMLElement | null;\r\n const { isTop } = this;\r\n if (\r\n isTop\r\n && this.isActive\r\n && modal\r\n && event.target\r\n && document !== event.target\r\n && !modal.contains(event.target as Element)\r\n ) {\r\n this.focusDialog();\r\n }\r\n },\r\n\r\n returnFocusTo() {\r\n const el = this.return_focus as HTMLElement;\r\n if (el.focus) {\r\n el.focus();\r\n }\r\n },\r\n\r\n onAfterEnter() {\r\n this.setEnforceFocus(true);\r\n },\r\n\r\n onAfterLeave() {\r\n this.$emit(\"after-leave\");\r\n this.setEnforceFocus(false);\r\n requestAnimationFrame(() => {\r\n this.returnFocusTo();\r\n this.return_focus = null;\r\n });\r\n dialogManager.unregisterModal(this);\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n const children: any[] = [];\r\n let content = this.genContent();\r\n if (this.transition) {\r\n content = this.$createElement(\r\n \"transition\",\r\n {\r\n props: {\r\n appear: true,\r\n name: this.transition,\r\n },\r\n on: {\r\n enter: () => this.focusDialog(),\r\n afterEnter: () => this.onAfterEnter(),\r\n afterLeave: () => this.onAfterLeave(),\r\n },\r\n },\r\n [content],\r\n );\r\n }\r\n\r\n children.push(content);\r\n return h(\r\n \"div\",\r\n {\r\n staticClass: \"ax-dialog__container\",\r\n style: {\r\n display: this.isTop ? \"block\" : \"none\",\r\n },\r\n },\r\n children,\r\n );\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxDialog.vue?vue&type=style&index=0&id=21d10062&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDialog.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxMenu',{attrs:{\"right\":_vm.right,\"left\":_vm.left,\"top\":_vm.top,\"bottom\":_vm.bottom,\"middle\":_vm.middle,\"skidding\":_vm.skidding,\"distance\":_vm.distance,\"close-on-content-click\":_vm.closeOnContentClick,\"content-class\":_vm.contentClass,\"overlay\":_vm.overlay,\"control-manually\":_vm.controlManually,\"scroll-to-index\":_vm.scrollToIndex,\"native-styled\":_vm.nativeStyled,\"item-height\":_vm.itemHeight,\"activator-ref\":_vm.activatorRef,\"use-activator-width\":_vm.useActivatorWidth,\"strategy\":_vm.strategy,\"arrow\":_vm.arrow,\"drop-max-height\":_vm.dropMaxHeight},on:{\"toggle\":_vm.menuToggled},scopedSlots:_vm._u([{key:\"activator\",fn:function({ deactivate, activate, toggle }){return [(_vm.$scopedSlots.activator)?_vm._t(\"activator\",null,{\"deactivate\":deactivate,\"activate\":activate,\"toggle\":toggle,\"active\":_vm.active}):_c('AxButton',{class:_vm.disabled ? 'btn-disabled' : '',attrs:{\"tabindex\":_vm.untabbable ? -1 : 0,\"color\":_vm.color,\"block\":_vm.block},on:{\"click\":_vm.onActivatorClicked}},[_vm._t(\"button\")],2)]}},{key:\"default\",fn:function({ deactivate, activate, toggle }){return [_vm._t(\"default\",null,{\"deactivate\":deactivate,\"activate\":activate,\"toggle\":toggle})]}}],null,true),model:{value:(_vm.dropdownActive),callback:function ($$v) {_vm.dropdownActive=$$v},expression:\"dropdownActive\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { PositioningStrategy } from \"@popperjs/core\";\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport AxButton from \"./AxButton.vue\";\r\nimport AxMenu from \"./AxMenu.vue\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxMenu,\r\n },\r\n\r\n props: {\r\n color: {\r\n type: String,\r\n default: \"default\",\r\n },\r\n\r\n block: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n closeOnContentClick: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n right: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n left: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n top: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n bottom: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n middle: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n skidding: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n distance: {\r\n type: Number,\r\n default: -3,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n contentClass: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n overlay: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n active: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n toggleCallback: {\r\n type: Function,\r\n default: () => {},\r\n } as PropOptions<(opened: boolean) => void>,\r\n\r\n attach: {\r\n type: [String, Boolean],\r\n default: true,\r\n },\r\n\r\n controlManually: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n untabbable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n scrollToIndex: {\r\n type: Number,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n itemHeight: {\r\n type: Number,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n nativeStyled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n strategy: prop({\r\n required: false,\r\n default: undefined,\r\n }),\r\n\r\n activatorRef: {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n useActivatorWidth: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n arrow: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dropMaxHeight: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n dropdownActive: this.active,\r\n };\r\n },\r\n\r\n watch: {\r\n active(value) {\r\n this.dropdownActive = value;\r\n },\r\n },\r\n\r\n methods: {\r\n menuToggled(menuOpened: boolean) {\r\n this.toggleCallback(menuOpened);\r\n },\r\n\r\n onActivatorClicked(event: any) {\r\n // Click happens, but triggers toggle twice...\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDropdownButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDropdownButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxDropdownButton.vue?vue&type=template&id=44a7732d&scoped=true&\"\nimport script from \"./AxDropdownButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDropdownButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxDropdownButton.vue?vue&type=style&index=0&id=44a7732d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44a7732d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.active)?_c('AxForm',{class:{ 'ax-editable--active': _vm.active },attrs:{\"submit\":_vm.submitForm},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, errors }){return [_c('form',[_c('span',{staticClass:\"inline-editable-wrapper\",style:(_vm.editableStyles)},[_c('AxInput',{ref:\"input\",staticClass:\"inline-editable\",attrs:{\"autofocus\":\"\",\"input-class\":\"inline-editable-input\"},on:{\"blur\":function($event){_vm.submitOnBlur ? handleSubmit() : _vm.deactivate()},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.preventDefault();$event.stopPropagation();return _vm.deactivate.apply(null, arguments)}},model:{value:(values.value),callback:function ($$v) {_vm.$set(values, \"value\", $$v)},expression:\"values.value\"}})],1),_vm._t(\"hint\",null,{\"errors\":errors}),_c('button',{staticClass:\"submit-hidden\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}})],2)]}},{key:\"errors\",fn:function({ errors }){return [_vm._t(\"errors\",function(){return [_c('div',[_c('AxFormErrors',{staticClass:\"ax-errors\",attrs:{\"errors\":errors}})],1)]},{\"errors\":errors})]}}],null,true),model:{value:(_vm.form),callback:function ($$v) {_vm.form=$$v},expression:\"form\"}}):_c('span',{ref:\"editable\",staticClass:\"ax-editable\",on:{\"click\":_vm.activate}},[(_vm.$scopedSlots.default)?_vm._t(\"default\"):[_vm._v(\" \"+_vm._s(_vm.value)+\" \")]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormErrors from \"@/components/AxFormErrors.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ninterface Editable {\r\n value: string;\r\n}\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxInput,\r\n AxFormErrors,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n submitOnBlur: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n submit: {\r\n type: Function,\r\n default: null,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n original: this.value,\r\n active: false,\r\n editableHeight: \"auto\",\r\n editableWidth: \"auto\",\r\n };\r\n },\r\n\r\n computed: {\r\n form(): Editable {\r\n return {\r\n value: this.value,\r\n };\r\n },\r\n\r\n editableStyles(): Partial {\r\n return { height: this.editableHeight, width: this.editableWidth };\r\n },\r\n },\r\n\r\n watch: {\r\n value(newValue) {\r\n this.original = newValue;\r\n },\r\n },\r\n\r\n methods: {\r\n activate() {\r\n this.saveDimensions();\r\n this.active = true;\r\n this.$nextTick(() => {\r\n const input = this.$refs.input as any;\r\n if (input && input.select) {\r\n input.select();\r\n }\r\n });\r\n },\r\n\r\n deactivate() {\r\n this.active = false;\r\n },\r\n\r\n saveDimensions() {\r\n const editableElement = this.$refs.editable as HTMLElement;\r\n if (editableElement) {\r\n this.editableHeight = `${editableElement.getBoundingClientRect().height}px`;\r\n this.editableWidth = `${editableElement.getBoundingClientRect().width}px`;\r\n }\r\n },\r\n\r\n async submitForm({ values }: Submit) {\r\n if (!this.active) return;\r\n\r\n if (this.original !== values.value) {\r\n if (this.submit) {\r\n await this.submit(values.value);\r\n }\r\n this.$emit(\"input\", values.value);\r\n }\r\n this.deactivate();\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxEditable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxEditable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxEditable.vue?vue&type=template&id=cf51a2e2&scoped=true&\"\nimport script from \"./AxEditable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxEditable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxEditable.vue?vue&type=style&index=0&id=cf51a2e2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf51a2e2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VueTransmit',_vm._b({ref:\"uploader\",class:_vm.uploaderClasses,on:{\"accepted-file\":_vm.acceptedFile,\"added-file\":_vm.addedFile,\"error\":_vm.error},scopedSlots:_vm._u([{key:\"files\",fn:function(props){return [_vm._t(\"files\",function(){return _vm._l((props.acceptedFiles),function(file,i){return _c('div',{key:file.id,class:{'mt-4': i === 0}},[_c('h5',[_vm._v(_vm._s(file.name))])])})},null,props)]}}],null,true)},'VueTransmit',_vm.vTransmitOptions,false),[_vm._t(\"default\",function(){return [_c('AxButton',{attrs:{\"color\":\"secondary\",\"medium\":\"\"},on:{\"click\":_vm.triggerBrowse}},[_vm._v(\" Choose File \")])]},null,_vm.scopeProps)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\n\r\nconst defaultOptions = {\r\n paramName: \"fileData\",\r\n url: \"\",\r\n autoProcessQueue: false,\r\n uploadMultiple: false,\r\n clickable: false,\r\n maxFiles: 1,\r\n autoQueue: false,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Object,\r\n required: false,\r\n default: null,\r\n },\r\n\r\n /* eslint-disable vue/require-default-prop */\r\n options: {\r\n type: Object,\r\n required: false,\r\n default: null,\r\n } as PropOptions,\r\n /* eslint-enable vue/require-default-prop */\r\n\r\n uploaderClasses: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n selected: null,\r\n maxFilesReached: false,\r\n vTransmitOptions: {\r\n ...defaultOptions,\r\n ...this.options,\r\n },\r\n };\r\n },\r\n\r\n computed: {\r\n scopeProps(): any {\r\n return {\r\n triggerBrowse: this.triggerBrowse,\r\n removeFile: this.removeFile,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n triggerBrowse() {\r\n const uploader = this.$refs.uploader as any;\r\n uploader.triggerBrowseFiles();\r\n },\r\n\r\n removeFile(file: any) {\r\n const uploader = this.$refs.uploader as any;\r\n uploader.removeFile(file);\r\n this.selected = null;\r\n this.$emit(\"input\", this.selected);\r\n },\r\n\r\n addedFile() {\r\n if (this.selected) {\r\n this.removeFile(this.selected);\r\n }\r\n },\r\n\r\n acceptedFile(file: any) {\r\n this.selected = file;\r\n this.$emit(\"input\", this.selected);\r\n this.$emit(\"accepted-file\", this.selected);\r\n },\r\n\r\n error() {\r\n if (this.selected) {\r\n this.removeFile(this.selected);\r\n }\r\n this.$emit(\"error\", ...arguments);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFileUpload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFileUpload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFileUpload.vue?vue&type=template&id=308aeff6&\"\nimport script from \"./AxFileUpload.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFileUpload.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxConfirmDialog',{attrs:{\"value\":{},\"submit-text\":\"Confirm Delete\",\"submit\":_vm.submit,\"cancel\":_vm.cancel}},[_c('div',{staticClass:\"content\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.workspaces.length > 0),expression:\"workspaces.length > 0\"}]},[(_vm.workspaces.length > 1)?_c('div',[_vm._v(\" All projects and comments within these workspaces will be deleted \")]):_c('div',[_vm._v(\" All projects and comments within this workspace will be deleted \")]),_c('div',{staticClass:\"item-wrapper\"},_vm._l((_vm.workspaces),function(workspaceItem,index){return _c('div',{key:workspaceItem.id,staticClass:\"item-name\"},[_c('span',{staticClass:\"item-name-text\"},[_vm._v(\" \"+_vm._s(workspaceItem.name)+\" \")]),(index != _vm.workspaces.length - 1)?_c('span',{staticClass:\"separator\"},[_vm._v(\",\")]):_vm._e()])}),0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.folders.length > 0),expression:\"folders.length > 0\"}]},[_c('div',[_vm._v(\"All projects will be deleted within the following folder(s)\")]),_c('div',{staticClass:\"item-wrapper\"},_vm._l((_vm.folders),function(folderItem,index){return _c('div',{key:folderItem.id,staticClass:\"item-name\"},[_c('span',{staticClass:\"item-name-text\"},[_vm._v(\" \"+_vm._s(folderItem.name)+\" \")]),(index != _vm.folders.length - 1)?_c('span',{staticClass:\"separator\"},[_vm._v(\",\")]):_vm._e()])}),0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shortcuts.length > 0),expression:\"shortcuts.length > 0\"}]},[(_vm.folders.length > 0)?_c('div',[_vm._v(\" Additionally, the following project(s) and their comments will be deleted \")]):_c('div',[_vm._v(\" The following project(s) and their comments will be deleted \")]),_c('div',{staticClass:\"item-wrapper\"},_vm._l((_vm.shortcuts),function(shortcut,index){return _c('div',{key:shortcut.id,staticClass:\"item-name\"},[_c('span',{staticClass:\"item-name-text\"},[_vm._v(\" \"+_vm._s(shortcut.name)+\" \")]),(index != _vm.shortcuts.length - 1)?_c('span',{staticClass:\"separator\"},[_vm._v(\",\")]):_vm._e()])}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport {\r\n FilesystemNodeDeletable,\r\n FilesystemNodeFolder,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeType,\r\n FilesystemNodeWorkspace,\r\n} from \"@/common/fs\";\r\nimport { deleteItems } from \"@/services/fs.service\";\r\nimport { NodeRemove } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxConfirmDialog from \"@/components/AxConfirmDialog.vue\";\r\n\r\nconst itemsProp: PropValidator = {\r\n type: Array,\r\n required: true,\r\n};\r\n\r\nconst props = {\r\n items: itemsProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxConfirmDialog,\r\n },\r\n\r\n props: {\r\n folder: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n ...props,\r\n },\r\n\r\n computed: {\r\n workspaces(): FilesystemNodeWorkspace[] {\r\n return this.items.filter(item => item.type === FilesystemNodeType.Workspace) as FilesystemNodeWorkspace[];\r\n },\r\n\r\n folders(): FilesystemNodeFolder[] {\r\n return this.items.filter(item => item.type === FilesystemNodeType.Folder) as FilesystemNodeFolder[];\r\n },\r\n\r\n shortcuts(): FilesystemNodeShortcut[] {\r\n return this.items.filter(item => item.type === FilesystemNodeType.Shortcut) as FilesystemNodeShortcut[];\r\n },\r\n\r\n onlyWorkspaces(): boolean {\r\n return this.workspaces.length > 0 && this.folders.length === 0 && this.shortcuts.length === 0;\r\n },\r\n },\r\n\r\n methods: {\r\n async submit() {\r\n const { items, folder } = this;\r\n const result = await deleteItems(items, folder);\r\n if (result && result.success !== false) {\r\n this.$emit(\"submit\");\r\n await this.$store.dispatch(new NodeRemove(items, folder));\r\n }\r\n },\r\n\r\n cancel() {\r\n this.$emit(\"cancel\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeDelete.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeDelete.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodeDelete.vue?vue&type=template&id=dee1435c&scoped=true&\"\nimport script from \"./AxFilesystemNodeDelete.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodeDelete.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNodeDelete.vue?vue&type=style&index=0&id=dee1435c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dee1435c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-node-link\"},[(!_vm.disabled)?_c('AxNavigationLinkFs',{staticClass:\"ax-filesystem__node-link\",attrs:{\"id\":_vm.node.id,\"navigation-node\":_vm.node}},[_c('span',{staticClass:\"ax-filesystem__link-thumbnail\"},[(_vm.node.type === _vm.FilesystemNodeType.Folder)?_c('AxIcon',[_c('AxFolder')],1):(_vm.node.type === _vm.FilesystemNodeType.Shortcut)?_c('AxProjectThumbnail',{attrs:{\"project\":_vm.node,\"small\":\"\"}}):_vm._e()],1),_c('span',{staticClass:\"ax-filesystem__link-text\",attrs:{\"title\":_vm.node.name}},[_vm._v(\" \"+_vm._s(_vm.node.name)+\" \")])]):_c('div',{staticClass:\"ax-filesystem__node-link\"},[_c('span',{staticClass:\"ax-filesystem__link-thumbnail\"},[(_vm.node.type === _vm.FilesystemNodeType.Folder)?_c('AxIcon',[_c('AxFolder')],1):(_vm.node.type === _vm.FilesystemNodeType.Shortcut)?_c('AxProjectThumbnail',{attrs:{\"project\":_vm.node,\"small\":\"\"}}):_vm._e()],1),_c('span',{staticClass:\"ax-filesystem__link-text\",attrs:{\"title\":_vm.node.name}},[_vm._v(\" \"+_vm._s(_vm.node.name)+\" \")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeType, FilesystemNodeTypes } from \"@/common/fs\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxNavigationLinkFs from \"@/components/AxNavigationLinkFs.vue\";\r\nimport AxProjectThumbnail from \"@/components/AxProjectThumbnail.vue\";\r\nimport AxFolder from \"@/components/icons/AxFolder.vue\";\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxFolder,\r\n AxProjectThumbnail,\r\n AxNavigationLinkFs,\r\n },\r\n\r\n props: {\r\n node: prop({\r\n required: true,\r\n }),\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n FilesystemNodeType,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodeLink.vue?vue&type=template&id=651b1738&scoped=true&\"\nimport script from \"./AxFilesystemNodeLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodeLink.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNodeLink.vue?vue&type=style&index=0&id=651b1738&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"651b1738\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-table\"},[_c('AxDataTable',_vm._b({staticClass:\"ax-filesystem-data-table\",attrs:{\"value\":_vm.selected,\"items\":_vm.items,\"headers\":_vm.headers,\"loading\":_vm.loading,\"select-all\":_vm.isSelectCheckboxEnabled,\"select-column\":\"\",\"responsive\":false,\"pagination\":_vm.dataTablePagination,\"fixed-header-styles\":_vm.fixedHeaderStyles,\"hide-headers\":_vm.hideHeaders,\"fixed-header\":\"\",\"fixed-actions-header\":\"\"},on:{\"update:pagination\":function($event){_vm.dataTablePagination=$event},\"input\":_vm.selectionChanged},scopedSlots:_vm._u([{key:\"actionsHeader\",fn:function(){return [_vm._t(\"actionsHeader\",function(){return [(!_vm.viewOnly && !_vm.emptyState)?_c('AxFilesystemNodesActions',{attrs:{\"id\":_vm.$route.params.id,\"selected\":_vm.selected},on:{\"refresh\":() => _vm.$emit('refresh'),\"input\":_vm.selectionChanged}}):_vm._e()]})]},proxy:true},{key:\"items\",fn:function(props){return [_c('tr',{key:props.key,staticClass:\"ax-filesystem-table-row\",class:{ selected: props.selected, 'ax-filesystem-table-row__disabled': _vm.itemNavigationDisabled(props.item) },on:{\"click\":function($event){return _vm.navigateToItem(props.item, $event)}}},[_c('td',{staticClass:\"ax-data-table-checkbox\"},[(_vm.isSelectCheckboxEnabled)?_c('AxDataTableCellCheckbox',{model:{value:(props.selected),callback:function ($$v) {_vm.$set(props, \"selected\", $$v)},expression:\"props.selected\"}}):_vm._e()],1),_vm._t(\"content\",function(){return [_c('td',{staticClass:\"ax-filesystem-node-link\"},[_c('AxFilesystemNodeLink',{attrs:{\"node\":props.item}})],1),_c('td',[_c('AxShortcutCommentsCount',{attrs:{\"project\":props.item,\"disabled\":_vm.itemNavigationDisabled(props.item)}})],1),_c('td',[(props.item.type === _vm.FilesystemNodeType.Shortcut)?_c('AxShortcutPublicLink',{attrs:{\"project\":props.item}}):_vm._e()],1),_c('td',[(props.item.type === _vm.FilesystemNodeType.Shortcut)?_c('AxShortcutModified',{attrs:{\"project\":props.item}}):(props.item.type === _vm.FilesystemNodeType.Folder)?_c('AxShortcutModified',{attrs:{\"project-modified\":_vm.getFolderModifiedDate(props.item),\"project-id\":_vm.getFolderModifiedOnShortcut(props.item)}}):_vm._e(),(_vm.hasUnreadPublishNotesMentions(props.item))?_c('AxUnreadMentionsIndicator',{staticClass:\"ms-1\"}):_vm._e()],1),_c('td',[(_vm.showShortcutDropdown(props.item))?_c('AxShortcutDropdownButton',{attrs:{\"project\":props.item},on:{\"deleted\":_vm.clearSelection,\"moved\":_vm.clearSelection}}):_vm._e()],1)]},{\"item\":props.item,\"viewOnly\":_vm.isViewOnly(props.item)})],2)]}},{key:\"noData\",fn:function(){return [_vm._t(\"noData\",function(){return [_c('AxDataTableNoData',{staticClass:\"ax-no-data-table\",scopedSlots:_vm._u([{key:\"noDataIcon\",fn:function(){return [_c('div')]},proxy:true},{key:\"title\",fn:function(){return [_c('span',{staticClass:\"ax-no-data-table__title\"},[_vm._v(\" This workspace has no Projects \")])]},proxy:true},(!_vm.viewOnly)?{key:\"sub-title\",fn:function(){return [_vm._v(\" Once Projects or Folders are added they will appear here \")]},proxy:true}:null,(!_vm.viewOnly)?{key:\"default\",fn:function(){return [_c('AxButton',{staticClass:\"ax-no-data-table__btn\",attrs:{\"medium\":\"\",\"to\":_vm.createFolderRoute,\"color\":\"secondary\"}},[_vm._v(\" Create New Folder \")]),_c('AxButton',{staticClass:\"ax-no-data-table__btn ms-3\",attrs:{\"medium\":\"\",\"color\":\"primary\",\"to\":_vm.createProjectRoute}},[_vm._v(\" Create New Project \")])]},proxy:true}:null],null,true)})]})]},proxy:true}],null,true)},'AxDataTable',_vm.dataTableParams,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('Transition',{attrs:{\"name\":\"fade-fast\",\"mode\":\"out-in\"}},[(_vm.selected.length === 0)?_c('div',{key:\"no-selection\",staticClass:\"filesystem-actions\"},[_c('AxFilesystemNodeCreate',{attrs:{\"id\":_vm.id}})],1):_c('div',{key:\"has-selection\",staticClass:\"filesystem-actions\"},[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-auto\"},[_c('div',{staticClass:\"m-0 actions-label user-select-none\"},[_vm._v(\" With selected: \")])]),_c('div',{staticClass:\"col\"},[_c('AxButtonGroup',[(_vm.options.canMove)?_c('AxButton',{attrs:{\"color\":\"primary\",\"medium\":\"\"},on:{\"click\":function($event){_vm.moving=true}}},[_vm._v(\" Move \")]):_vm._e(),(_vm.options.canDelete)?_c('AxButton',{attrs:{\"color\":\"danger\",\"medium\":\"\"},on:{\"click\":function($event){_vm.deleting=true}}},[_vm._v(\" Delete \")]):_vm._e()],1)],1)])])]),_c('AxShortcutFilesystemActions',{attrs:{\"options\":_vm.shortcutActionsOptions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.canCreate)?_c('AxButtonGroup',[_c('AxButton',{class:_vm.AnalyticsClickEvents.NewProject.eventClass,attrs:{\"to\":_vm.createProjectRoute,\"medium\":\"\",\"color\":\"primary\"}},[_c('AxIcon',{staticClass:\"icon-create-project\",attrs:{\"name\":\"add\"}}),_vm._v(\"New Project \")],1),_c('AxButton',{class:_vm.AnalyticsClickEvents.NewFolder.eventClass,attrs:{\"to\":_vm.createFolderRoute,\"medium\":\"\",\"color\":\"secondary\"}},[_c('AxIcon',{staticClass:\"icon-create-folder\",attrs:{\"name\":\"folder\"}}),_vm._v(\"New Folder \")],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { AnalyticsClickEvents } from \"@/common/axshare\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxButton from \"./AxButton.vue\";\r\nimport AxButtonGroup from \"./AxButtonGroup.vue\";\r\nimport AxIcon from \"./AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxButtonGroup,\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n AnalyticsClickEvents,\r\n };\r\n },\r\n\r\n computed: {\r\n canCreate(): boolean {\r\n return !!this.id;\r\n },\r\n\r\n createFolderRoute(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.createfolder\"].name,\r\n params: { id: this.id },\r\n };\r\n },\r\n\r\n createProjectRoute(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.createproject\"].name,\r\n params: { id: this.id },\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeCreate.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeCreate.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodeCreate.vue?vue&type=template&id=699cf45f&scoped=true&\"\nimport script from \"./AxFilesystemNodeCreate.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodeCreate.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNodeCreate.vue?vue&type=style&index=0&id=699cf45f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"699cf45f\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeTypes, getNodeOptions, NodeOptions } from \"@/common/fs\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxButtonGroup from \"@/components/AxButtonGroup.vue\";\r\nimport AxFilesystemNodeCreate from \"@/components/AxFilesystemNodeCreate.vue\";\r\nimport AxShortcutFilesystemActions, { ShortcutActionsOptions } from \"@/components/AxShortcutFilesystemActions.vue\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFilesystemNodeCreate,\r\n AxButtonGroup,\r\n AxButton,\r\n AxShortcutFilesystemActions,\r\n },\r\n\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n selected: arrayProp({\r\n required: false,\r\n default: () => [],\r\n }),\r\n },\r\n\r\n data() {\r\n return {\r\n moving: false,\r\n deleting: false,\r\n };\r\n },\r\n\r\n computed: {\r\n options(): NodeOptions {\r\n return getNodeOptions(this.$store.getters.current.node);\r\n },\r\n\r\n shortcutActionsOptions(): ShortcutActionsOptions {\r\n return {\r\n move: {\r\n show: this.moving,\r\n submit: this.moveSubmit,\r\n cancel: this.moveCancel,\r\n },\r\n delete: {\r\n show: this.deleting,\r\n submit: this.deleteSubmit,\r\n cancel: this.deleteCancel,\r\n },\r\n clone: { show: false },\r\n rename: { show: false },\r\n upload: { show: false },\r\n folderId: this.options.folderId,\r\n items: this.selected,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n moveSubmit() {\r\n this.moving = false;\r\n this.clearSelection();\r\n },\r\n\r\n moveCancel() {\r\n this.moving = false;\r\n },\r\n\r\n deleteSubmit() {\r\n this.deleting = false;\r\n this.clearSelection();\r\n },\r\n\r\n deleteCancel() {\r\n this.deleting = false;\r\n },\r\n\r\n refresh() {\r\n this.$emit(\"refresh\");\r\n },\r\n\r\n clearSelection() {\r\n this.$emit(\"input\", []);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodesActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodesActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodesActions.vue?vue&type=template&id=2c13e48a&scoped=true&\"\nimport script from \"./AxFilesystemNodesActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodesActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNodesActions.vue?vue&type=style&index=0&id=2c13e48a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c13e48a\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport {\r\n FilesystemNodeShortcut,\r\n FilesystemNodeFolder,\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n getUnreadPublishNotesMentions,\r\n isShortcutSearchNode,\r\n isFilesystemFolderNode,\r\n} from \"@/common/fs\";\r\nimport { jsDateFromAspDateString as toJsDate } from \"@/common/lib\";\r\nimport { equalsIgnoringCase } from \"@/common/lib/string\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDataTable from \"@/components/AxDataTable.vue\";\r\nimport AxDataTableCellCheckbox from \"@/components/AxDataTableCellCheckbox.vue\";\r\nimport AxDataTableNoData from \"@/components/AxDataTableNoData.vue\";\r\nimport AxFilesystemNodeLink from \"@/components/AxFilesystemNodeLink.vue\";\r\nimport AxFilesystemNodesActions from \"@/components/AxFilesystemNodesActions.vue\";\r\nimport AxShortcutCommentsCount from \"@/components/AxShortcutCommentsCount.vue\";\r\nimport AxShortcutDropdownButton from \"@/components/AxShortcutDropdownButton.vue\";\r\nimport AxShortcutModified from \"@/components/AxShortcutModified.vue\";\r\nimport AxShortcutPublicLink from \"@/components/AxShortcutPublicLink.vue\";\r\nimport AxUnreadMentionsIndicator from \"@/components/AxUnreadMentionsIndicator.vue\";\r\nimport { Header } from \"@/components/types/AxDataTable\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDataTable,\r\n AxDataTableNoData,\r\n AxDataTableCellCheckbox,\r\n AxFilesystemNodeLink,\r\n AxShortcutCommentsCount,\r\n AxShortcutDropdownButton,\r\n AxShortcutModified,\r\n AxShortcutPublicLink,\r\n AxButton,\r\n AxUnreadMentionsIndicator,\r\n AxFilesystemNodesActions,\r\n },\r\n\r\n props: {\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n selectDisabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n viewOnly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n headers: arrayProp
({\r\n type: Array,\r\n default: () => [\r\n {\r\n text: \"Project name\",\r\n value: \"name\",\r\n },\r\n {\r\n text: \"Comments\",\r\n value: \"listingNode.NotificationState.TotalCommentsCount\",\r\n width: \"23%\",\r\n },\r\n {\r\n text: \"Share\",\r\n value: \"shortcut\",\r\n sortable: false,\r\n width: \"18%\",\r\n },\r\n {\r\n text: \"Modified\",\r\n value: \"updated\",\r\n width: \"20%\",\r\n },\r\n {\r\n // actions\r\n text: \"\",\r\n sortable: false,\r\n width: \"50px\",\r\n },\r\n ],\r\n }),\r\n\r\n hideHeaders: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n headerOffsetTop: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n pagination: {\r\n type: Object,\r\n default: () => ({\r\n sortBy: \"updated\",\r\n descending: true,\r\n }),\r\n },\r\n\r\n paginationDisabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n customSort: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n\r\n items: arrayProp({\r\n required: false,\r\n default: () => [],\r\n }),\r\n\r\n itemNavigationDisabled: {\r\n type: Function,\r\n required: false,\r\n default: () => false,\r\n } as PropOptions<(item: FilesystemNodeTypes) => boolean>,\r\n },\r\n\r\n data() {\r\n return {\r\n dataTablePagination: this.paginationDisabled ? {} : this.pagination,\r\n FilesystemNodeType,\r\n selected: [] as FilesystemNodeTypes[],\r\n };\r\n },\r\n\r\n computed: {\r\n fixedHeaderStyles(): any {\r\n return {\r\n top: `${this.headerOffsetTop}px`,\r\n };\r\n },\r\n\r\n isSelectCheckboxEnabled(): boolean {\r\n const { selectDisabled, viewOnly } = this;\r\n\r\n if (selectDisabled) {\r\n return false;\r\n }\r\n\r\n return !viewOnly;\r\n },\r\n\r\n dataTableParams(): any {\r\n const options: Record = {};\r\n if (this.customSort) {\r\n options.customSort = this.customSort;\r\n }\r\n return options;\r\n },\r\n\r\n createProjectRoute(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.createproject\"].name,\r\n params: { id: this.$route.params.id },\r\n };\r\n },\r\n\r\n createFolderRoute(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.createfolder\"].name,\r\n params: { id: this.$route.params.id },\r\n };\r\n },\r\n\r\n emptyState(): Boolean {\r\n return !this.items.length;\r\n },\r\n },\r\n\r\n methods: {\r\n selectionChanged(selection: any) {\r\n this.selected = selection;\r\n },\r\n\r\n clearSelection(deleted: FilesystemNodeTypes) {\r\n this.selected = this.selected.filter(item => item.id !== deleted.id);\r\n },\r\n\r\n isNavigatableTarget(target: HTMLElement): boolean {\r\n // don't include tag as valid navigation target, as those clicks are handled by router-link component\r\n const validNavigationTargets = [\"tr\", \"td\"];\r\n return (\r\n validNavigationTargets.some(validTarget => equalsIgnoringCase(validTarget, target.nodeName))\r\n || target.classList.contains(\"allow-navigation\")\r\n );\r\n },\r\n\r\n showShortcutDropdown(item: FilesystemNodeTypes) {\r\n return item.type === FilesystemNodeType.Shortcut && item.viewOnly === false;\r\n },\r\n\r\n isViewOnly(item: FilesystemNodeTypes) {\r\n if (item.type === FilesystemNodeType.Shortcut) {\r\n if (this.viewOnly) {\r\n return !this.viewOnly;\r\n }\r\n return !item.viewOnly;\r\n }\r\n },\r\n\r\n hasUnreadPublishNotesMentions(item: FilesystemNodeTypes) {\r\n if (!item.listingNode) return false;\r\n const mentionsCount = getUnreadPublishNotesMentions(item.listingNode.NotificationState);\r\n return mentionsCount > 0;\r\n },\r\n\r\n async navigateToItem(item: FilesystemNodeTypes, event: MouseEvent) {\r\n if (this.itemNavigationDisabled(item)) {\r\n return false;\r\n }\r\n const target = event.target as HTMLElement;\r\n if (this.isNavigatableTarget(target)) {\r\n if (item.type === FilesystemNodeType.Shortcut) {\r\n await this.navigateToShortcutOverview(item);\r\n } else {\r\n await this.$router.push(fsRouterLocation(item));\r\n }\r\n }\r\n },\r\n\r\n async navigateToShortcutOverview(item: FilesystemNodeShortcut) {\r\n await this.$router.push({\r\n name: ROUTES[\"project.overview\"].name,\r\n params: {\r\n shortcut: item.shortcut || item.id,\r\n },\r\n });\r\n },\r\n\r\n getFolderModifiedDate(item: FilesystemNodeFolder | FilesystemSearchItem): Date | undefined {\r\n let folder: FilesystemNodeFolder | undefined;\r\n if (isShortcutSearchNode(item)) {\r\n const node = this.$store.getters.getFsNode(item.id);\r\n if (isFilesystemFolderNode(node)) {\r\n folder = node;\r\n }\r\n } else {\r\n folder = item;\r\n }\r\n if (folder && folder.listingNode) {\r\n return toJsDate(folder.listingNode.ModifiedOn.Value);\r\n }\r\n },\r\n\r\n getFolderModifiedOnShortcut(item: FilesystemNodeFolder | FilesystemSearchItem): string | undefined {\r\n let folder: FilesystemNodeFolder | undefined;\r\n if (isShortcutSearchNode(item)) {\r\n const node = this.$store.getters.getFsNode(item.id);\r\n if (isFilesystemFolderNode(node)) {\r\n folder = node;\r\n }\r\n } else {\r\n folder = item;\r\n }\r\n if (folder && folder.listingNode) {\r\n return folder.listingNode.ModifiedOn.Shortcut;\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemTable.vue?vue&type=template&id=46cb2396&\"\nimport script from \"./AxFilesystemTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemTable.vue?vue&type=style&index=0&id=46cb2396&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.loading)?_c('div',{key:\"loading\"},[_vm._v(\" Loading... \")]):_c('div',[_c('div',{staticClass:\"filter-wrapper\"},[_c('AxInput',{staticClass:\"input-filter\",attrs:{\"disable-label\":\"\",\"keep-placeholder\":\"\",\"placeholder\":\"Workspace or Project...\"},on:{\"focus\":function($event){$event.stopPropagation();$event.preventDefault();return (() => _vm.isExpanded = true).apply(null, arguments)}},model:{value:(_vm.inputFilter),callback:function ($$v) {_vm.inputFilter=$$v},expression:\"inputFilter\"}}),_c('AxIcon',{staticClass:\"icon-caret small\",attrs:{\"name\":\"caret\",\"small\":\"\"}})],1),_c('AxTree',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded),expression:\"isExpanded\"}],key:\"loaded\",staticClass:\"ax-filesystem-tree\",attrs:{\"active\":_vm.active,\"items\":_vm.tree,\"multiple-active\":_vm.multiple,\"activatable\":\"\",\"open-all\":\"\"},on:{\"update:active\":function($event){_vm.active=$event},\"update:activeItems\":_vm.selected},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [(_vm.isWorkspace(item.data))?_c('AxWorkspaceIcon',{attrs:{\"small\":\"\"}}):_vm._e(),(_vm.isFolder(item.data))?_c('AxIcon',{attrs:{\"small\":\"\"}},[_c('AxFolder')],1):_vm._e(),(_vm.isProject(item.data))?_c('AxProjectThumbnail',{attrs:{\"state\":item.data.State,\"type\":item.data.Type,\"version\":item.data.ResourceDirVersion,\"small\":\"\"}}):_vm._e(),(item.data.owner)?_c('span',{attrs:{\"title\":item.data.owner.userEmail}},[_vm._v(\" \"+_vm._s(item.name)+\" \"+_vm._s(_vm.getOwnerDescription(item.data))+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue, { VNode } from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport { TreeNodeWithState } from \"@/components/types/AxTree\";\r\n\r\nconst itemProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n};\r\nconst props = {\r\n item: itemProp,\r\n};\r\nexport const AxTreeNodeProps = {\r\n activatable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n selectable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n openOnClick: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n name: \"AxTreeNode\",\r\n inject: {\r\n tree: {\r\n default: null,\r\n },\r\n },\r\n\r\n props: {\r\n ...props,\r\n ...AxTreeNodeProps,\r\n },\r\n\r\n computed: {\r\n key(): string {\r\n return this.item.id;\r\n },\r\n\r\n children(): TreeNodeWithState[] | null {\r\n return this.item.children;\r\n },\r\n\r\n text(): string {\r\n return this.item.name;\r\n },\r\n\r\n treeview(): any {\r\n return (this as any).tree;\r\n },\r\n\r\n isOpen(): boolean {\r\n return this.treeview.isOpen(this.item);\r\n },\r\n\r\n isActive(): boolean {\r\n return this.treeview.isActive(this.item);\r\n },\r\n\r\n isSelected(): boolean {\r\n return this.treeview.isSelected(this.item);\r\n },\r\n\r\n isIndeterminate(): boolean {\r\n return this.treeview.isIndeterminate(this.item);\r\n },\r\n },\r\n\r\n methods: {\r\n genChild(item: TreeNodeWithState): VNode {\r\n return this.$createElement(this.$options.name, {\r\n key: item.id,\r\n props: {\r\n item,\r\n activatable: this.activatable,\r\n selectable: this.selectable,\r\n openOnClick: this.openOnClick,\r\n },\r\n scopedSlots: this.$scopedSlots,\r\n });\r\n },\r\n\r\n genNode(): VNode {\r\n const children = [this.genContent()];\r\n\r\n if (this.selectable) children.unshift(this.genCheckbox());\r\n if (this.children && this.children.length > 0) children.unshift(this.genToggle());\r\n\r\n return this.$createElement(\r\n AxButton,\r\n {\r\n props: {\r\n color: \"link\",\r\n block: true,\r\n },\r\n staticClass: \"ax-tree-node__root\",\r\n attrs: {\r\n tabindex: this.activatable ? 0 : -1,\r\n },\r\n class: {\r\n \"ax-tree-node--click\": true,\r\n \"ax-tree-node--activatable\": this.activatable,\r\n },\r\n on: {\r\n click: () => {\r\n if (this.openOnClick && this.children) {\r\n this.open();\r\n } else if (this.activatable) {\r\n this.activate();\r\n }\r\n },\r\n },\r\n },\r\n children,\r\n );\r\n },\r\n\r\n genCheckbox() {\r\n return this.$createElement(\"input\", {\r\n attrs: {\r\n type: \"checkbox\",\r\n },\r\n domProps: {\r\n indeterminate: this.isIndeterminate,\r\n checked: this.isSelected,\r\n },\r\n staticClass: \"ax-tree-node__checkbox\",\r\n on: {\r\n click: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n this.select();\r\n },\r\n },\r\n });\r\n },\r\n\r\n genLabel() {\r\n const children = this.$scopedSlots.item ? this.$scopedSlots.item({ item: this.item }) : this.text;\r\n return this.$createElement(\r\n \"label\",\r\n {\r\n slot: \"label\",\r\n staticClass: \"ax-tree-node__label ax-tree-node--click\",\r\n },\r\n [children],\r\n );\r\n },\r\n\r\n genContent() {\r\n const children = [this.genLabel()];\r\n return this.$createElement(\"div\", { staticClass: \"ax-tree-node__content\" }, children);\r\n },\r\n\r\n genToggle() {\r\n const icon = this.$createElement(AxIcon, {\r\n props: {\r\n name: \"caret\",\r\n rotate: this.isOpen ? \"0\" : \"-90deg\",\r\n },\r\n staticClass: \"ax-tree-node__toggle-icon\",\r\n });\r\n return this.$createElement(\r\n AxButton,\r\n {\r\n props: {\r\n color: \"link\",\r\n medium: true,\r\n },\r\n staticClass: \"ax-tree-node__toggle\",\r\n class: {\r\n \"ax-tree-node__toggle--open\": this.isOpen,\r\n \"ax-tree-node--click\": true,\r\n },\r\n on: {\r\n click: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n this.open();\r\n },\r\n },\r\n },\r\n [icon],\r\n );\r\n },\r\n\r\n genChildrenWrapper(): any {\r\n if (!this.isOpen || !this.children || this.children.length === 0) return null;\r\n const children = [this.children.map(this.genChild)];\r\n return this.$createElement(\"div\", { staticClass: \"ax-tree-node__children\" }, children);\r\n },\r\n\r\n open() {\r\n this.treeview.updateOpen(this.key, !this.isOpen);\r\n this.treeview.emitOpen();\r\n },\r\n\r\n activate() {\r\n this.treeview.updateActive(this.key, !this.isActive);\r\n this.treeview.emitActive();\r\n },\r\n\r\n select() {\r\n this.treeview.updateSelected(this.key, !this.isSelected);\r\n this.treeview.emitSelected();\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n const children = [this.genNode()];\r\n children.push(this.genChildrenWrapper());\r\n return h(\r\n \"div\",\r\n {\r\n staticClass: \"ax-tree-node\",\r\n class: {\r\n \"ax-tree-node--selected\": this.isSelected,\r\n \"ax-tree-node--active\": this.isActive,\r\n \"ax-tree-node--click\": this.openOnClick,\r\n },\r\n },\r\n children,\r\n );\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxTreeNode.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxTreeNode.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxTreeNode.vue?vue&type=style&index=0&id=3c4b2a82&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c4b2a82\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTreeNode.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTreeNode.vue?vue&type=script&lang=ts&\"","\r\nimport Vue, { VNode } from \"vue\";\r\n\r\nimport AxTreeNode, { AxTreeNodeProps } from \"./AxTreeNode.vue\";\r\n\r\nimport { TreeNode, TreeNodeWithState } from \"@/components/types/AxTree\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport type AxTreeNodeInstance = InstanceType;\r\nconst props = {\r\n value: arrayProp(),\r\n items: arrayProp(),\r\n open: arrayProp(),\r\n active: arrayProp(),\r\n activeItems: arrayProp(),\r\n selectedItems: arrayProp(),\r\n openItems: arrayProp(),\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxTreeNode,\r\n },\r\n\r\n provide(): any {\r\n return { tree: this };\r\n },\r\n\r\n props: {\r\n openAll: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n multipleActive: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n ...props,\r\n ...AxTreeNodeProps,\r\n },\r\n\r\n data() {\r\n const nodes: Record = {};\r\n const selectedCache: Record = {};\r\n const activeCache: Record = {};\r\n const openedCache: Record = {};\r\n const indeterminateItems: Record = {};\r\n return {\r\n nodes,\r\n selectedCache,\r\n activeCache,\r\n openedCache,\r\n indeterminateItems,\r\n };\r\n },\r\n\r\n watch: {\r\n items() {\r\n this.initTree();\r\n this.refreshOpen();\r\n },\r\n },\r\n\r\n created() {\r\n this.initTree();\r\n },\r\n\r\n mounted() {\r\n this.refreshOpen();\r\n },\r\n\r\n methods: {\r\n initTree() {\r\n this.buildTree(this.items);\r\n this.value.forEach(key => this.updateSelected(key, true));\r\n this.emitSelected();\r\n this.active.forEach(key => this.updateActive(key, true));\r\n this.emitActive();\r\n },\r\n\r\n refreshOpen() {\r\n if (this.openAll) {\r\n Object.keys(this.nodes).forEach(key => this.updateOpen(key, true));\r\n } else {\r\n this.open.forEach(key => this.updateOpen(key, true));\r\n }\r\n this.emitOpen();\r\n },\r\n\r\n buildTree(items: TreeNode[], parent: TreeNodeWithState | TreeNode | null = null) {\r\n for (const item of items) {\r\n const key = item.id;\r\n const children = item.children || [];\r\n const oldNode = this.nodes.hasOwnProperty(key)\r\n ? this.nodes[key]\r\n : {\r\n isSelected: false,\r\n isIndeterminate: false,\r\n isActive: false,\r\n isOpen: false,\r\n children: [],\r\n data: item.data,\r\n id: item.id,\r\n name: item.name,\r\n parent,\r\n };\r\n\r\n const node: any = {\r\n parent,\r\n children,\r\n data: item.data,\r\n id: item.id,\r\n name: item.name,\r\n isActive: false,\r\n isOpen: false,\r\n isSelected: false,\r\n isIndeterminate: false,\r\n };\r\n\r\n this.buildTree(children, item);\r\n\r\n // This fixed bug with dynamic children resetting selected parent state\r\n if (!this.nodes.hasOwnProperty(key) && parent !== null && this.nodes.hasOwnProperty(parent.id)) {\r\n node.isSelected = this.nodes[parent.id].isSelected;\r\n node.isIndeterminate = this.nodes[parent.id].isIndeterminate;\r\n } else {\r\n node.isSelected = oldNode.isSelected;\r\n node.isIndeterminate = oldNode.isIndeterminate;\r\n }\r\n\r\n node.isActive = oldNode.isActive;\r\n node.isOpen = oldNode.isOpen;\r\n\r\n this.nodes[key] = !children.length ? node : this.calculateState(node, this.nodes);\r\n\r\n // Don't forget to rebuild cache\r\n if (this.nodes[key].isSelected) Vue.set(this.selectedCache, key, this.nodes[key]);\r\n if (this.nodes[key].isActive) Vue.set(this.activeCache, key, this.nodes[key]);\r\n if (this.nodes[key].isOpen) Vue.set(this.openedCache, key, this.nodes[key]);\r\n if (this.nodes[key].isIndeterminate) Vue.set(this.indeterminateItems, key, this.nodes[key]);\r\n }\r\n },\r\n\r\n calculateState(node: TreeNodeWithState, state: Record) {\r\n const counts: number[] = node.children.reduce(\r\n (acc: number[], child: TreeNode) => {\r\n acc[0] += +Boolean(state[child.id].isSelected);\r\n acc[1] += +Boolean(state[child.id].isIndeterminate);\r\n return acc;\r\n },\r\n [0, 0],\r\n );\r\n\r\n node.isSelected = !!node.children.length && counts[0] === node.children.length;\r\n node.isIndeterminate = !node.isSelected && (counts[0] > 0 || counts[1] > 0);\r\n\r\n return node;\r\n },\r\n\r\n updateActive(key: string, isActive: boolean) {\r\n if (!this.nodes.hasOwnProperty(key)) return;\r\n\r\n if (!this.multipleActive) {\r\n this.activeCache = {};\r\n }\r\n\r\n const node = this.nodes[key];\r\n if (!node) return;\r\n\r\n if (isActive) Vue.set(this.activeCache, key, node);\r\n else Vue.delete(this.activeCache, key);\r\n node.isActive = isActive;\r\n },\r\n\r\n updateSelected(key: string, isSelected: boolean) {\r\n if (!this.nodes.hasOwnProperty(key)) return;\r\n const node = this.nodes[key];\r\n\r\n const changed: Record = {};\r\n\r\n const descendants = [node, ...this.getDescendants(key)];\r\n descendants.forEach(descendant => {\r\n const id = descendant.id;\r\n this.nodes[id].isSelected = isSelected;\r\n this.nodes[id].isIndeterminate = false;\r\n changed[id] = this.nodes[id];\r\n });\r\n\r\n const parents = this.getParents(key);\r\n parents.forEach(parent => {\r\n const id = parent.id;\r\n this.nodes[id] = this.calculateState(this.nodes[id], this.nodes);\r\n changed[id] = this.nodes[id];\r\n });\r\n\r\n Object.entries(changed).forEach(kv => {\r\n const [k, v] = kv;\r\n v.isSelected ? Vue.set(this.selectedCache, k, v) : Vue.delete(this.selectedCache, k);\r\n v.isIndeterminate ? Vue.set(this.indeterminateItems, k, v) : Vue.delete(this.indeterminateItems, k);\r\n });\r\n },\r\n\r\n updateOpen(key: string, isOpen: boolean) {\r\n if (!this.nodes.hasOwnProperty(key)) return;\r\n\r\n const node = this.nodes[key];\r\n node.isOpen = isOpen;\r\n node.isOpen ? Vue.set(this.openedCache, key, node) : Vue.delete(this.openedCache, key);\r\n },\r\n\r\n getDescendants(key: string, descendants: TreeNodeWithState[] = []) {\r\n const children = this.nodes[key].children;\r\n descendants.push(...children);\r\n for (const child of children) {\r\n descendants = this.getDescendants(child.id, descendants);\r\n }\r\n\r\n return descendants;\r\n },\r\n\r\n getParents(key: string) {\r\n let parent = this.nodes[key].parent;\r\n\r\n const parents = [];\r\n while (parent !== null) {\r\n parents.push(parent);\r\n parent = this.nodes[parent.id].parent;\r\n }\r\n\r\n return parents;\r\n },\r\n\r\n isOpen(item: TreeNodeWithState) {\r\n return this.openedCache.hasOwnProperty(item.id);\r\n },\r\n\r\n isActive(item: TreeNodeWithState) {\r\n return this.activeCache.hasOwnProperty(item.id);\r\n },\r\n\r\n isSelected(item: TreeNodeWithState) {\r\n return this.selectedCache.hasOwnProperty(item.id);\r\n },\r\n\r\n isIndeterminate(item: TreeNodeWithState) {\r\n return this.indeterminateItems.hasOwnProperty(item.id);\r\n },\r\n\r\n emitOpen() {\r\n this.$emit(\"update:open\", Object.keys(this.openedCache));\r\n this.$emit(\"update:openItems\", Object.values(this.openedCache).map(i => i.data));\r\n },\r\n\r\n emitSelected() {\r\n this.$emit(\"input\", Object.keys(this.selectedCache));\r\n this.$emit(\"update:selectedItems\", Object.values(this.selectedCache).map(i => i.data));\r\n },\r\n\r\n emitActive() {\r\n this.$emit(\"update:active\", Object.keys(this.activeCache));\r\n this.$emit(\"update:activeItems\", Object.values(this.activeCache).map(i => i.data));\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n const children = this.items.length\r\n ? this.items.map(item => h(AxTreeNode, {\r\n key: item.id,\r\n props: {\r\n item,\r\n activatable: this.activatable,\r\n selectable: this.selectable,\r\n openOnClick: this.openOnClick,\r\n },\r\n scopedSlots: this.$scopedSlots,\r\n }))\r\n : this.$scopedSlots.default && this.$scopedSlots.default({});\r\n\r\n return h(\"div\", { staticClass: \"ax-tree\" }, children);\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxTree.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxTree.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTree.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTree.vue?vue&type=script&lang=ts&\"","\r\nimport Vue from \"vue\";\r\n\r\nimport { SsoResponse } from \"@shared/models\";\r\n\r\nimport { getUserName } from \"@/common/axshare\";\r\nimport { sortDirectoryTree } from \"@/common/fs\";\r\nimport { orderBy } from \"@/common/lib\";\r\nimport { getUserDirectoryTree } from \"@/services/fs.service\";\r\nimport {\r\n FilesystemEntry, FilesystemEntryTreeNode, FilesystemEntryTree, DirectoryTreeNode,\r\n} from \"@/services/models\";\r\nimport { EntryType } from \"@/services/models/notification\";\r\nimport { getUserFsEntryTree } from \"@/services/notification.service\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxProjectThumbnail from \"@/components/AxProjectThumbnail.vue\";\r\nimport AxTree from \"@/components/AxTree.vue\";\r\nimport AxWorkspaceIcon from \"@/components/AxWorkspaceIcon.vue\";\r\nimport AxFolder from \"@/components/icons/AxFolder.vue\";\r\nimport { TreeNode } from \"@/components/types/AxTree\";\r\n\r\nconst allProjects = {\r\n id: \"00000000-0000-0000-0000-000000000000\",\r\n name: \"All Projects\",\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxTree,\r\n AxProjectThumbnail,\r\n AxWorkspaceIcon,\r\n AxInput,\r\n AxIcon,\r\n AxFolder,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Object,\r\n default: null,\r\n },\r\n\r\n multiple: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n select: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n showAll: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n renderDefaultAllItem: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n workspacesOnly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n loading: false,\r\n active: [this.select],\r\n fsEntries: undefined as FilesystemEntryTree | undefined,\r\n workspacesRoot: undefined as DirectoryTreeNode | undefined,\r\n inputFilter: \"\",\r\n selectedName: \"\",\r\n isExpanded: false,\r\n };\r\n },\r\n\r\n computed: {\r\n user(): SsoResponse | undefined {\r\n const { user } = this.$store.state as AxShare;\r\n return user.userInfo;\r\n },\r\n\r\n tree(): TreeNode[] {\r\n let tree = [] as TreeNode[];\r\n\r\n if (this.workspacesOnly) {\r\n if (!this.workspacesRoot) return [];\r\n tree = this.generateWorkspaceNode(this.workspacesRoot).children;\r\n } else {\r\n if (!this.fsEntries) return [];\r\n tree = this.fsEntries\r\n .filter(n => this.userIsOwner(n) || this.showAll || n.explicitlyJoined)\r\n .map(this.generate);\r\n }\r\n\r\n if (this.inputFilter && this.inputFilter !== this.selectedName) {\r\n this.filterItems(tree);\r\n }\r\n\r\n if (this.renderDefaultAllItem) {\r\n tree.unshift({\r\n id: allProjects.id,\r\n name: allProjects.name,\r\n data: {\r\n id: allProjects.id,\r\n name: allProjects.name,\r\n targetType: EntryType.All,\r\n },\r\n children: [],\r\n });\r\n }\r\n return tree;\r\n },\r\n },\r\n\r\n watch: {\r\n inputFilter() {\r\n if (this.inputFilter !== this.selectedName) this.isExpanded = true;\r\n },\r\n },\r\n\r\n async created() {\r\n this.loading = true;\r\n try {\r\n if (this.workspacesOnly) {\r\n this.workspacesRoot = (await getUserDirectoryTree()).workspacesRoot;\r\n } else {\r\n this.fsEntries = await getUserFsEntryTree();\r\n }\r\n } catch {\r\n //\r\n }\r\n this.loading = false;\r\n },\r\n\r\n methods: {\r\n generate(node: FilesystemEntryTreeNode): TreeNode {\r\n const hasChildren = node.entries && node.entries.length > 0;\r\n const children: Array> = hasChildren\r\n ? orderBy(node.entries, n => n.Name).map(n => ({\r\n id: n.shortcutId,\r\n name: n.Name,\r\n data: { ...n, targetType: EntryType.Shortcut },\r\n children: [],\r\n }))\r\n : [];\r\n\r\n return {\r\n id: node.folderId,\r\n name: node.folderName,\r\n data: { ...node, targetType: EntryType.Filesystem, owner: node.owner },\r\n children,\r\n };\r\n },\r\n\r\n generateWorkspaceNode(node: DirectoryTreeNode): TreeNode {\r\n const hasChildren = node.children && node.children.length > 0;\r\n const showAll = this.showAll;\r\n const children = hasChildren\r\n ? sortDirectoryTree(node.children)\r\n .filter(n => showAll || this.userIsOwner(n) || n.explicitlyJoined)\r\n .map(this.generateWorkspaceNode)\r\n : [];\r\n\r\n const targetType = node.isFolder ? EntryType.Folder : EntryType.Filesystem;\r\n\r\n return {\r\n id: node.id,\r\n name: node.name,\r\n data: { ...node, targetType },\r\n children,\r\n };\r\n },\r\n\r\n getOwnerDescription(node: FilesystemEntryTreeNode) {\r\n if (!this.userIsOwner(node)) {\r\n return `(Owner: ${this.getUserName(node.owner)})`;\r\n }\r\n return \"\";\r\n },\r\n\r\n userIsOwner(node: FilesystemEntryTreeNode | DirectoryTreeNode) {\r\n if (this.user) {\r\n return this.user.userId === node.owner.userId;\r\n }\r\n return false;\r\n },\r\n\r\n getUserName(user: SsoResponse): string {\r\n return getUserName(user) || user.userEmail || \"\";\r\n },\r\n\r\n selected(items: any) {\r\n const selected = this.multiple ? items : items[0];\r\n this.$emit(\"input\", selected);\r\n\r\n if (selected) {\r\n const itemName = this.workspacesOnly\r\n ? items[0].name\r\n : items[0].Name ?? items[0].folderName;\r\n\r\n if (this.selectedName !== itemName) {\r\n this.isExpanded = false;\r\n this.selectedName = itemName;\r\n this.inputFilter = itemName;\r\n }\r\n }\r\n },\r\n\r\n isWorkspace(node: any) {\r\n const { targetType } = node;\r\n return targetType === EntryType.Filesystem;\r\n },\r\n\r\n isFolder(node: any) {\r\n const { targetType } = node;\r\n return targetType === EntryType.Folder;\r\n },\r\n\r\n isProject(node: any) {\r\n const { targetType } = node;\r\n return targetType === EntryType.Shortcut;\r\n },\r\n\r\n filterItems(treeItems: TreeNode[]) {\r\n const itemsToDelete = [];\r\n for (const item of treeItems) {\r\n this.filterItems(item.children);\r\n const visible = item.name.toLowerCase().indexOf(this.inputFilter.toLowerCase()) >= 0;\r\n if (!visible && item.children.length === 0) {\r\n itemsToDelete.push(item);\r\n }\r\n }\r\n\r\n for (const delItem of itemsToDelete) {\r\n const delIndex = treeItems.indexOf(delItem);\r\n if (delIndex >= 0) {\r\n treeItems.splice(delIndex, 1);\r\n }\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemTreeProjects.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemTreeProjects.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemTreeProjects.vue?vue&type=template&id=2cfaad18&scoped=true&\"\nimport script from \"./AxFilesystemTreeProjects.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemTreeProjects.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemTreeProjects.vue?vue&type=style&index=0&id=2cfaad18&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2cfaad18\",\n null\n \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _c('div',{staticClass:\"row flex-nowrap align-items-center\"},[_c('div',{staticClass:\"col column-name\"},[_c('h2',{staticClass:\"m-0 workspace-name-label\"},[_c('div',{staticClass:\"d-flex align-items-start align-items-center\"},[(_vm.$scopedSlots[`node-icon`])?_c('div',{staticClass:\"node-icon\"},[_vm._t(\"node-icon\")],2):_vm._e(),_c('div',{staticClass:\"node-name\"},[_vm._t(\"node-name\")],2)])])]),(_vm.$scopedSlots.actions)?_c('div',{staticClass:\"col-auto\"},[_c('div',{staticClass:\"actions-row\"},[_vm._t(\"actions\")],2)]):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActionsBase.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActionsBase.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemViewerActionsBase.vue?vue&type=template&id=753220fc&scoped=true&functional=true&\"\nimport script from \"./AxFilesystemViewerActionsBase.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemViewerActionsBase.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemViewerActionsBase.vue?vue&type=style&index=0&id=753220fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n \"753220fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-viewer-header\"},[_c(_vm.actionsComponent,{tag:\"Component\",attrs:{\"item\":_vm.node,\"loading\":_vm.loading}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxFilesystemViewerActionsBase',{scopedSlots:_vm._u([{key:\"node-name\",fn:function(){return [_c('span',{staticClass:\"node-name__content\"},[_vm._v(\" \"+_vm._s(_vm.item.name)+\" \")])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeTypes } from \"@/common/fs\";\r\nimport AxFilesystemViewerActionsBase from \"@/components/AxFilesystemViewerActionsBase.vue\";\r\n\r\nconst itemProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n};\r\nconst props = {\r\n item: itemProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFilesystemViewerActionsBase,\r\n },\r\n props,\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemViewerActions.vue?vue&type=template&id=4845e524&\"\nimport script from \"./AxFilesystemViewerActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemViewerActions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxFilesystemViewerActionsBase',{scopedSlots:_vm._u([{key:\"node-icon\",fn:function(){return [_c('div',[_c('AxIcon',[_c('AxFolder')],1)],1)]},proxy:true},{key:\"node-name\",fn:function(){return [(_vm.rights.folderRename)?_c('div',[_c('AxEditable',{staticClass:\"node-name__content\",attrs:{\"value\":_vm.item.name,\"submit\":_vm.renameSubmit,\"title\":_vm.item.name}})],1):_c('span',{staticClass:\"node-name__content\"},[_vm._v(\" \"+_vm._s(_vm.item.name)+\" \")])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeFolder, isFilesystemFolderNode } from \"@/common/fs\";\r\nimport { FolderRename } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxEditable from \"@/components/AxEditable.vue\";\r\nimport AxFilesystemViewerActionsBase from \"@/components/AxFilesystemViewerActionsBase.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxFolder from \"@/components/icons/AxFolder.vue\";\r\n\r\nconst itemProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isFilesystemFolderNode(item);\r\n },\r\n};\r\nconst props = {\r\n item: itemProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxEditable,\r\n AxFilesystemViewerActionsBase,\r\n AxFolder,\r\n AxIcon,\r\n },\r\n\r\n props,\r\n\r\n computed: {\r\n viewOnly(): boolean {\r\n return this.item.viewOnly;\r\n },\r\n\r\n rights(): { folderRename: boolean } {\r\n return {\r\n folderRename: !this.viewOnly,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n async renameSubmit(name: string) {\r\n await this.$store.dispatch(new FolderRename(this.item.id, name));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActionsFolder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActionsFolder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemViewerActionsFolder.vue?vue&type=template&id=d4345410&\"\nimport script from \"./AxFilesystemViewerActionsFolder.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemViewerActionsFolder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxFilesystemViewerActionsBase',{scopedSlots:_vm._u([{key:\"node-icon\",fn:function(){return [(!_vm.isDefaultWorkspace)?_c('AxWorkspaceIcon',{attrs:{\"shared\":_vm.shared}}):_c('AxIcon',{attrs:{\"name\":\"lock\"}})]},proxy:true},{key:\"node-name\",fn:function(){return [(_vm.rights.workspaceRename)?_c('div',[_c('AxEditable',{staticClass:\"node-name__content rename-workspace\",attrs:{\"value\":_vm.item.name,\"submit\":_vm.renameSubmit,\"title\":_vm.item.name}})],1):_c('span',{staticClass:\"node-name__content\"},[_vm._v(\" \"+_vm._s(_vm.item.name)+\" \")])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.item.rootFolderId)?_c('AxButtonGroup',[(!_vm.isDefaultWorkspace)?_c('AxSharedWithWorkspace',{attrs:{\"avatar-size\":\"24px\",\"workspace\":_vm.item,\"stack-inversed\":\"\",\"stack-expandable\":false,\"not-stacked-length\":6,\"stack-length\":0,\"can-invite\":_vm.rights.usersInvite,\"invite-others\":false}}):_vm._e()],1):_vm._e(),(_vm.rights.usersInvite)?_c('AxButtonGroup',{staticClass:\"m-0\"},[_c('AxButton',{staticClass:\"workspace-invite-btn\",attrs:{\"color\":\"light\",\"to\":_vm.userInviteRoute,\"medium\":\"\"}},[_c('AxIcon',{staticClass:\"pe-1\",attrs:{\"h\":\"13px\",\"name\":\"plus\"}}),_vm._v(\" Invite \")],1)],1):_vm._e(),(_vm.anyManageUserAction)?_c('div',{staticClass:\"divider\"}):_vm._e(),(_vm.anyManageUserAction)?_c('AxDropdownButton',{directives:[{name:\"on-click-away\",rawName:\"v-on-click-away\",value:(_vm.onClickAway),expression:\"onClickAway\"}],attrs:{\"close-on-content-click\":false,\"toggle-callback\":_vm.toggleMenuBtn,\"active\":_vm.menuOpened},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('AxButton',{staticClass:\"workspace-settings-btn\",attrs:{\"title\":\"Workspace Settings\",\"color\":\"light\",\"medium\":\"\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.closeMenu.apply(null, arguments)}}},[_c('AxIcon',{attrs:{\"h\":\"16px\",\"name\":\"gear\"}})],1)]},proxy:true},{key:\"default\",fn:function(){return [_c('AxList',[(_vm.rights.workspaceJoin)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.joining}},[_vm._v(\" Join Workspace \")])],1):_vm._e(),(_vm.rights.securityConfigure)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.changeOwner}},[_vm._v(\" Change Owner \")])],1):_vm._e(),(_vm.rights.userLeave)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\",\"to\":_vm.workspaceLeave},on:{\"click\":_vm.closeMenu}},[_vm._v(\" Leave Workspace \")])],1):_vm._e(),(_vm.rights.workspaceArchive)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.archiving}},[_vm._v(\" \"+_vm._s(_vm.archiveText)+\" Workspace \")])],1):_vm._e(),(_vm.rights.workspaceDelete)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.deleting}},[_vm._v(\" Delete Workspace \")])],1):_vm._e(),(_vm.isLimitAccessAvailable)?_c('AxListItem',[_c('AxForm',{attrs:{\"value\":_vm.item,\"submit\":_vm.limitAccessChanged},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',[_c('div',{staticClass:\"limit-access\"},[_c('span',{staticClass:\"limit-access_label\"},[_vm._v(\" \"+_vm._s(`Limit Access ${values.userOnly ? \"On\" : \"Off\"}`)+\" \")]),_c('AxHelp',{attrs:{\"content\":\"When ON, only allow access to public link URLs for users that can access this workspace\"}}),_c('AxToggleButton',{staticClass:\"limit-access_toggle\",attrs:{\"disabled\":submitting},on:{\"change\":handleSubmit},model:{value:(values.userOnly),callback:function ($$v) {_vm.$set(values, \"userOnly\", $$v)},expression:\"values.userOnly\"}})],1)])]}}],null,false,3215248738)})],1):_vm._e()],1)]},proxy:true}],null,false,3332687308)}):_vm._e()]},proxy:true}])},[(_vm.deletingWorkspace)?_c('AxFilesystemNodeDelete',{attrs:{\"folder\":_vm.item.rootFolderId,\"items\":[_vm.item]},on:{\"submit\":_vm.deleteSubmit,\"cancel\":_vm.deleteCancel}}):_vm._e(),(_vm.changingOwnerWorkspace)?_c('AxDialog',{attrs:{\"lazy\":\"\"},model:{value:(_vm.changingOwnerWorkspace),callback:function ($$v) {_vm.changingOwnerWorkspace=$$v},expression:\"changingOwnerWorkspace\"}},[_c('AxChangeOwner',{attrs:{\"workspace\":_vm.item},on:{\"owner-changed\":_vm.onOwnerChanged}})],1):_vm._e(),(_vm.joiningWorkspace)?_c('AxDialog',{attrs:{\"lazy\":\"\"},model:{value:(_vm.joiningWorkspace),callback:function ($$v) {_vm.joiningWorkspace=$$v},expression:\"joiningWorkspace\"}},[_c('AxManageUsersJoin',{attrs:{\"workspace\":_vm.item},on:{\"cancel\":_vm.joinCancel}})],1):_vm._e(),(_vm.archivingWorkspace)?_c('AxDialog',{attrs:{\"lazy\":\"\"},model:{value:(_vm.archivingWorkspace),callback:function ($$v) {_vm.archivingWorkspace=$$v},expression:\"archivingWorkspace\"}},[_c('AxFilesystemArchive',{attrs:{\"workspace\":_vm.item},on:{\"submit\":_vm.archiveSubmit,\"cancel\":_vm.archiveCancel}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return [_c('form',[_c('div',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" \"+_vm._s(_vm.workspace.isArchived ? \"Unarchive\" : \"Archive\")+\" Workspace \")]),_c('AxFormGroup',[_c('p',[_vm._v(\" \"+_vm._s(_vm.workspace.isArchived ? \"Unarchiving\" : \"Archiving\")+\" the following workspace will do so for everyone. Are you sure you want to \"+_vm._s(_vm.workspace.isArchived ? \"unarchive\" : \"archive\")+\" this workspace? \")]),_c('div',{staticClass:\"item-name\"},[_vm._v(\" \"+_vm._s(_vm.workspace.name)+\" \")])])],1),_c('AxButton',{attrs:{\"type\":\"submit\",\"color\":\"danger\",\"block\":\"\",\"large\":\"\",\"disabled\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.workspace.isArchived ? \"Unarchive\" : \"Archive\")+\" \")])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { isWorkspaceNode, FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { WorkspaceArchive } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nconst itemProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isWorkspaceNode(item);\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxFormGroup,\r\n AxButton,\r\n },\r\n\r\n props: {\r\n workspace: itemProp,\r\n },\r\n\r\n computed: {},\r\n\r\n methods: {\r\n async submit(_: Submit) {\r\n await this.$store.dispatch(new WorkspaceArchive(this.workspace.id, !this.workspace.isArchived));\r\n this.$emit(\"submit\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemArchive.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemArchive.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemArchive.vue?vue&type=template&id=e287bf0c&scoped=true&\"\nimport script from \"./AxFilesystemArchive.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemArchive.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemArchive.vue?vue&type=style&index=0&id=e287bf0c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e287bf0c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return [_c('form',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Join Workspace \")]),_c('AxFormGroup',[_vm._v(\" Please confirm that you would like to join this workspace. \")]),_c('AxButton',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"large\":\"\",\"block\":\"\",\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Join \")])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { shareFileSystem } from \"@/services/fs.service\";\r\nimport { ManageUsersInviteModel } from \"@/services/models/filesystem\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { AxShareUser } from \"@/store/user/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\n\r\nconst workspaceProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n },\r\n\r\n props: {\r\n workspace: workspaceProp,\r\n },\r\n\r\n computed: {\r\n currentUser(): AxShareUser {\r\n const { user } = this.$store.state as AxShare;\r\n return user;\r\n },\r\n },\r\n\r\n methods: {\r\n async submit() {\r\n const { userInfo } = this.currentUser;\r\n const usersJoin: ManageUsersInviteModel = {\r\n userEmails: userInfo && userInfo.userEmail,\r\n viewerOnly: false,\r\n filesystemId: this.workspace.id,\r\n };\r\n\r\n await shareFileSystem(usersJoin);\r\n await this.$store.dispatch(new Fetch(this.workspace));\r\n this.cancel();\r\n },\r\n\r\n cancel() {\r\n this.$emit(\"cancel\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersJoin.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersJoin.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxManageUsersJoin.vue?vue&type=template&id=558da494&\"\nimport script from \"./AxManageUsersJoin.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxManageUsersJoin.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { isWorkspaceNode, FilesystemNodeWorkspace, WorkspaceRights } from \"@/common/fs\";\r\nimport { directive as onClickAway } from \"@/mixins/ClickAway\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\nimport { setUserOnly } from \"@/services/fs.service\";\r\nimport { WorkspaceRename, WorkspacesRefresh } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxButtonGroup from \"@/components/AxButtonGroup.vue\";\r\nimport AxChangeOwner from \"@/components/AxChangeOwner.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxDropdownButton from \"@/components/AxDropdownButton.vue\";\r\nimport AxEditable from \"@/components/AxEditable.vue\";\r\nimport AxFilesystemArchive from \"@/components/AxFilesystemArchive.vue\";\r\nimport AxFilesystemNodeDelete from \"@/components/AxFilesystemNodeDelete.vue\";\r\nimport AxFilesystemViewerActionsBase from \"@/components/AxFilesystemViewerActionsBase.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxHelp from \"@/components/AxHelp.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxList from \"@/components/AxList.vue\";\r\nimport AxListItem from \"@/components/AxListItem.vue\";\r\nimport AxManageUsersJoin from \"@/components/AxManageUsers/AxManageUsersJoin.vue\";\r\nimport AxSharedWithWorkspace from \"@/components/AxSharedWithWorkspace.vue\";\r\nimport AxToggleButton from \"@/components/AxToggleButton.vue\";\r\nimport AxWorkspaceIcon from \"@/components/AxWorkspaceIcon.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nconst itemProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isWorkspaceNode(item);\r\n },\r\n};\r\n\r\nconst props = {\r\n item: itemProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n directives: { onClickAway },\r\n components: {\r\n AxButton,\r\n AxButtonGroup,\r\n AxDialog,\r\n AxDropdownButton,\r\n AxEditable,\r\n AxIcon,\r\n AxList,\r\n AxListItem,\r\n AxFilesystemNodeDelete,\r\n AxFilesystemViewerActionsBase,\r\n AxSharedWithWorkspace,\r\n AxChangeOwner,\r\n AxManageUsersJoin,\r\n AxForm,\r\n AxHelp,\r\n AxToggleButton,\r\n AxWorkspaceIcon,\r\n AxFilesystemArchive,\r\n },\r\n\r\n props,\r\n\r\n data() {\r\n return {\r\n deletingWorkspace: false,\r\n changingOwnerWorkspace: false,\r\n joiningWorkspace: false,\r\n menuOpened: false,\r\n archivingWorkspace: false,\r\n };\r\n },\r\n\r\n computed: {\r\n inputClasses(): string {\r\n let className = \"input-checkbox\";\r\n if (this.item.userOnly) className += \" checked\";\r\n return className;\r\n },\r\n\r\n viewOnly(): boolean {\r\n return this.item.viewOnly;\r\n },\r\n\r\n shared(): boolean {\r\n return this.item.users && this.item.users.length > 0;\r\n },\r\n\r\n isDefaultWorkspace(): boolean {\r\n return this.item.isDefault;\r\n },\r\n\r\n rights(): WorkspaceRights {\r\n return this.$store.getters.workspaceRights(this.item);\r\n },\r\n\r\n workspaceLeave(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.userleave\"].name,\r\n params: { id: this.item.rootFolderId },\r\n };\r\n },\r\n\r\n securityConfigure(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.configure\"].name,\r\n params: { id: this.item.rootFolderId },\r\n };\r\n },\r\n\r\n anyManageUserAction(): boolean {\r\n return this.rights.usersInvite || this.rights.userLeave;\r\n },\r\n\r\n isLimitAccessAvailable(): boolean {\r\n return this.rights.securityConfigure && (this.isOnPrem || this.isSubInstance);\r\n },\r\n\r\n isOnPrem(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.AxShareOnPrem;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n archiveText(): string {\r\n return this.item.isArchived ? \"Unarchive\" : \"Archive\";\r\n },\r\n\r\n userInviteRoute(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.userinvite\"].name,\r\n params: { id: this.item.rootFolderId },\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n async limitAccessChanged({ values }: Submit) {\r\n const { isSubInstance, item } = this;\r\n\r\n if (isSubInstance) {\r\n await setUserOnly(item.id, values.userOnly);\r\n await this.$store.dispatch(new WorkspacesRefresh());\r\n }\r\n },\r\n\r\n toggleMenuBtn(_openedMenu: boolean) {\r\n this.menuOpened = _openedMenu;\r\n },\r\n\r\n closeMenu() {\r\n this.menuOpened = false;\r\n },\r\n\r\n onClickAway() {\r\n if (this.menuOpened) {\r\n this.closeMenu();\r\n }\r\n },\r\n\r\n async deleteSubmit() {\r\n this.deletingWorkspace = false;\r\n const defaultWorkspace: FilesystemNodeWorkspace = this.$store.getters.defaultWorkspace;\r\n await this.$router.push(\r\n fsRouterLocation(defaultWorkspace),\r\n );\r\n },\r\n\r\n deleting() {\r\n this.deletingWorkspace = true;\r\n this.closeMenu();\r\n },\r\n\r\n deleteCancel() {\r\n this.deletingWorkspace = false;\r\n },\r\n\r\n changeOwner() {\r\n this.changingOwnerWorkspace = true;\r\n this.closeMenu();\r\n },\r\n\r\n onOwnerChanged() {\r\n this.changingOwnerWorkspace = false;\r\n },\r\n\r\n joining() {\r\n this.joiningWorkspace = true;\r\n this.closeMenu();\r\n },\r\n\r\n joinCancel() {\r\n this.joiningWorkspace = false;\r\n },\r\n\r\n async renameSubmit(name: string) {\r\n await this.$store.dispatch(new WorkspaceRename({ Name: name, FilesystemId: this.item.id }));\r\n },\r\n\r\n archiving() {\r\n this.archivingWorkspace = true;\r\n this.closeMenu();\r\n },\r\n\r\n archiveSubmit() {\r\n this.archivingWorkspace = false;\r\n },\r\n\r\n archiveCancel() {\r\n this.archivingWorkspace = false;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActionsWorkspace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerActionsWorkspace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemViewerActionsWorkspace.vue?vue&type=template&id=54eb098c&scoped=true&\"\nimport script from \"./AxFilesystemViewerActionsWorkspace.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemViewerActionsWorkspace.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemViewerActionsWorkspace.vue?vue&type=style&index=0&id=54eb098c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54eb098c\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VueConstructor } from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport {\r\n FilesystemNodeType, FilesystemNodeTypes,\r\n} from \"@/common/fs\";\r\n\r\nimport AxFilesystemViewerActions from \"./AxFilesystemViewerActions.vue\";\r\nimport AxFilesystemViewerActionsFolder from \"./AxFilesystemViewerActionsFolder.vue\";\r\nimport AxFilesystemViewerActionsWorkspace from \"./AxFilesystemViewerActionsWorkspace.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFilesystemViewerActions,\r\n AxFilesystemViewerActionsFolder,\r\n AxFilesystemViewerActionsWorkspace,\r\n },\r\n\r\n props: {\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n /* eslint-disable vue/require-default-prop */\r\n node: {\r\n type: Object,\r\n default: null,\r\n } as PropValidator,\r\n },\r\n\r\n data() {\r\n return {\r\n FilesystemNodeType,\r\n };\r\n },\r\n\r\n computed: {\r\n actionsComponent(): VueConstructor | null {\r\n const node = this.node;\r\n let actionsComponent = AxFilesystemViewerActions;\r\n if (node.type === FilesystemNodeType.Folder) {\r\n actionsComponent = AxFilesystemViewerActionsFolder;\r\n }\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n actionsComponent = AxFilesystemViewerActionsWorkspace;\r\n }\r\n return actionsComponent;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewerHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemViewerHeader.vue?vue&type=template&id=2059f356&scoped=true&\"\nimport script from \"./AxFilesystemViewerHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemViewerHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemViewerHeader.vue?vue&type=style&index=0&id=2059f356&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2059f356\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-form\"},[_vm._t(\"default\",null,{\"values\":_vm.values,\"handleSubmit\":_vm.handleSubmit,\"submitting\":_vm.submitting,\"errors\":_vm.errorsInner,\"validationResult\":_vm.validationResult}),(!_vm.hideErrors && _vm.errorsInner.length > 0)?_vm._t(\"errors\",function(){return [_c('AxFormErrors',_vm._b({attrs:{\"errors\":_vm.errorsInner}},'AxFormErrors',_vm.errorsOptions,false))]},{\"errors\":_vm.errorsInner,\"values\":_vm.submitValues}):_vm._e(),(_vm.$scopedSlots.success)?_vm._t(\"success\"):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { ValidationResult, Validator } from \"lakmus\";\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { DbConnectionError, JsonSettingsLoadError } from \"@/common/axshare/errors\";\r\nimport { asError, deepCopy } from \"@/common/lib\";\r\n\r\nimport AxFormErrors from \"@/components/AxFormErrors.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nclass DefaultValidator extends Validator {}\r\nconst defaultValidator = new DefaultValidator();\r\n\r\nconst validatorProp: PropOptions> = {\r\n type: Object,\r\n required: false,\r\n default: (): Validator => defaultValidator,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFormErrors,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Object,\r\n required: false,\r\n default: () => ({}),\r\n },\r\n\r\n submit: {\r\n type: Function,\r\n required: false,\r\n default: null,\r\n },\r\n\r\n clearErrorsOnSumbit: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n errors: arrayProp(),\r\n\r\n errorsColor: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n hideErrors: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n validator: validatorProp,\r\n },\r\n\r\n data() {\r\n return {\r\n values: deepCopy(this.value),\r\n submitValues: undefined,\r\n errorsInner: this.errors,\r\n submitting: false,\r\n };\r\n },\r\n\r\n computed: {\r\n errorsOptions(): any {\r\n const options: Record = {};\r\n if (this.errorsColor) {\r\n options.color = this.errorsColor;\r\n }\r\n return options;\r\n },\r\n\r\n validationResult(): ValidationResult {\r\n const { values } = this;\r\n return this.validator.validate(values);\r\n },\r\n },\r\n\r\n watch: {\r\n value: {\r\n handler(newForm) {\r\n this.values = deepCopy(newForm);\r\n },\r\n deep: true,\r\n },\r\n\r\n errors: {\r\n handler(errors) {\r\n this.errorsInner = errors;\r\n },\r\n },\r\n },\r\n\r\n methods: {\r\n async handleSubmit() {\r\n if (this.submitting) return;\r\n this.submitting = true;\r\n if (this.clearErrorsOnSumbit) {\r\n this.errorsInner = [];\r\n this.$emit(\"errors-cleared\");\r\n }\r\n const submit: Submit = {\r\n values: this.values,\r\n };\r\n this.submitValues = deepCopy(this.values);\r\n if (this.submit) {\r\n try {\r\n await this.submit(submit);\r\n } catch (error) {\r\n const errorMessage = asError(error).message;\r\n\r\n // rethrow DbConnectionError or JsonSettingsLoadError further, so it can be handled globally by Vue error handler\r\n if (error && (error instanceof DbConnectionError || error instanceof JsonSettingsLoadError)) throw error;\r\n\r\n this.errorsInner = [errorMessage];\r\n this.$emit(\"on-error\", errorMessage);\r\n } finally {\r\n this.submitting = false;\r\n }\r\n } else {\r\n this.$emit(\"submit\", submit);\r\n }\r\n this.submitting = false;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxForm.vue?vue&type=template&id=6ce314d3&\"\nimport script from \"./AxForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.errors.length > 0)?_c('ul',{staticClass:\"ax-form-errors list-unstyled\"},_vm._l((_vm.errors),function(error,i){return _c('li',{key:i,staticClass:\"ax-form-errors__error\",style:(_vm.errorStyle)},[_vm._v(\" \"+_vm._s(error.message ? error.message : error)+\" \")])}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nconst props = {\r\n errors: arrayProp(),\r\n color: {\r\n type: String,\r\n default: \"#e92525\",\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n props,\r\n computed: {\r\n errorStyle(): Partial {\r\n return {\r\n color: this.color,\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFormErrors.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFormErrors.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFormErrors.vue?vue&type=template&id=6b92fa04&scoped=true&\"\nimport script from \"./AxFormErrors.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFormErrors.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFormErrors.vue?vue&type=style&index=0&id=6b92fa04&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b92fa04\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxFormGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFormGroup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFormGroup.vue?vue&type=style&index=0&id=74b61066&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74b61066\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNodeData } from \"vue\";\r\nimport { mergeData } from \"vue-functional-data-merge\";\r\n\r\nexport default Vue.extend({\r\n functional: true,\r\n render(h, ctx) {\r\n const data: VNodeData = {\r\n staticClass: \"ax-form-group\",\r\n };\r\n return h(\"div\", mergeData(ctx.data, data), ctx.slots().default);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFormGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFormGroup.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.messages.length > 0)?_c('ul',{staticClass:\"ax-form-success list-unstyled\"},_vm._l((_vm.messages),function(message,i){return _c('li',{key:i,staticClass:\"ax-form-success__message\"},[_vm._v(\" \"+_vm._s(message)+\" \")])}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n messages: arrayProp(),\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFormSuccess.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFormSuccess.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFormSuccess.vue?vue&type=template&id=86dd80fc&scoped=true&\"\nimport script from \"./AxFormSuccess.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFormSuccess.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFormSuccess.vue?vue&type=style&index=0&id=86dd80fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"86dd80fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-help\"},[_c('AxTooltip',{attrs:{\"title\":_vm.content,\"arrow\":\"\"}},[_c('AxIcon',{attrs:{\"tabindex\":\"0\",\"name\":\"help\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxTooltip from \"@/components/AxTooltip.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxTooltip,\r\n },\r\n\r\n props: {\r\n content: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHelp.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHelp.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxHelp.vue?vue&type=template&id=92f15404&\"\nimport script from \"./AxHelp.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxHelp.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxHelp.vue?vue&type=style&index=0&id=92f15404&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxIcon.vue?vue&type=style&index=0&id=e7c9e9b4&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNodeData } from \"vue\";\r\n\r\nimport { isIE } from \"@/common/lib\";\r\n\r\nexport default Vue.extend({\r\n functional: true,\r\n props: {\r\n name: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n size: {\r\n type: String,\r\n default: \"auto\",\r\n },\r\n w: {\r\n type: String,\r\n default: \"\",\r\n },\r\n h: {\r\n type: String,\r\n default: \"\",\r\n },\r\n rotate: {\r\n type: [String, Number],\r\n default: \"\",\r\n },\r\n },\r\n\r\n render(h, context) {\r\n const { props, data, slots, listeners } = context;\r\n\r\n const style: Partial = {};\r\n if (props.w) {\r\n style.width = context.props.w;\r\n }\r\n if (props.h) {\r\n style.height = context.props.h;\r\n }\r\n if (props.rotate) {\r\n const translateY = typeof props.rotate === \"number\" ? `${(props.rotate / 360) * 100}%` : 0;\r\n const rotation = typeof props.rotate === \"number\" ? `${props.rotate}deg` : props.rotate;\r\n style.transform = `rotate(${rotation}) translateY(${translateY})`;\r\n }\r\n\r\n const innerIcon = slots().default;\r\n const classBinding = [`ax-icon--${props.size}`, data.class, data.staticClass];\r\n if (isIE) {\r\n // marker class to fix SVG icons behavior in Internet Explorer\r\n classBinding.push(\"ax-icon--ie\");\r\n }\r\n const nodeData: VNodeData = {\r\n class: classBinding,\r\n staticClass: \"ax-icon\",\r\n style,\r\n on: listeners,\r\n ref: \"icon\",\r\n };\r\n\r\n if (!innerIcon) {\r\n nodeData.domProps = {\r\n // don't use string template, as it breaks jest resolve in watch mode\r\n // see: https://github.com/facebook/jest/issues/7511\r\n // eslint-disable-next-line prefer-template, import/no-dynamic-require, global-require\r\n innerHTML: require(\"@/assets/svg/\" + props.name + \".svg\"),\r\n };\r\n }\r\n\r\n return h(\"div\", nodeData, [innerIcon]);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxIcon.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./AxInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxInput.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxInput.vue?vue&type=style&index=0&id=36381dec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36381dec\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode, VNodeData } from \"vue\";\r\n\r\nimport { isKeyboardKey } from \"@/common/lib\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n label: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n autocomplete: {\r\n type: String,\r\n default: \"off\",\r\n },\r\n\r\n disableLabel: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n placeholder: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n keepPlaceholder: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n preventPasswordManager: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n type: {\r\n type: String,\r\n default: \"text\",\r\n },\r\n\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n value: {\r\n type: [String, Number],\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n cursor: {\r\n type: String,\r\n default: \"auto\",\r\n },\r\n\r\n textarea: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n resize: {\r\n type: String,\r\n default: \"none\",\r\n },\r\n\r\n rows: {\r\n type: String,\r\n default: \"2\",\r\n },\r\n\r\n cols: {\r\n type: String,\r\n default: \"20\",\r\n },\r\n\r\n inputClass: {\r\n type: [Object, String],\r\n default: \"\",\r\n },\r\n\r\n name: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n classAppend: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n classPrepend: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n alignRight: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n blurOnEsc: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n inputClasses(): Record {\r\n let inputClass: Record | string = this.inputClass;\r\n if (typeof inputClass === \"string\") {\r\n inputClass = { [inputClass.trim()]: true };\r\n }\r\n\r\n return {\r\n input: true,\r\n empty: !this.value,\r\n \"text-end\": this.alignRight,\r\n ...inputClass,\r\n };\r\n },\r\n },\r\n\r\n mounted() {\r\n if (this.autofocus) {\r\n this.onFocus();\r\n }\r\n },\r\n\r\n methods: {\r\n onInput(e: any): void {\r\n if (this.value) {\r\n e.currentTarget.classList.remove(\"empty\");\r\n } else {\r\n e.currentTarget.classList.add(\"empty\");\r\n }\r\n this.$emit(\"input\", e.target.value);\r\n },\r\n onBlur(e: any): void {\r\n e.currentTarget.placeholder = this.placeholder;\r\n this.$emit(\"blur\", e);\r\n },\r\n onFocus(e?: any): void {\r\n const input = this.$refs.input as HTMLElement;\r\n if (!input) return;\r\n\r\n if (document.activeElement !== input) {\r\n this.$nextTick(() => input.focus());\r\n }\r\n\r\n if (e) {\r\n if (!this.keepPlaceholder) {\r\n e.currentTarget.placeholder = \"\";\r\n }\r\n this.$emit(\"focus\", e);\r\n }\r\n },\r\n\r\n genAttrs() {\r\n let attrs: Record = {\r\n ...this.$attrs,\r\n autofocus: this.autofocus,\r\n autocomplete: this.autocomplete,\r\n disabled: this.disabled,\r\n readonly: this.readonly,\r\n type: this.type,\r\n placeholder: this.placeholder,\r\n };\r\n\r\n if (attrs.type === \"password\" && this.preventPasswordManager) {\r\n // rather hacky way to disable browser's password manager\r\n // for 'password' input type we pretend that it's a credit card security code\r\n // apparently this won't trigger \"Save password\" dialog\r\n attrs = { ...attrs, autocomplete: \"off cc-csc\" };\r\n }\r\n\r\n if (this.textarea) {\r\n attrs = { ...attrs, ...this.genTextAreaAttrs() };\r\n }\r\n\r\n if (this.name) {\r\n attrs = { ...attrs, ...this.genNameAttrs() };\r\n }\r\n return attrs;\r\n },\r\n\r\n genStyles() {\r\n let attrs = {\r\n cursor: this.cursor,\r\n };\r\n if (this.textarea) {\r\n attrs = { ...attrs, ...this.genTextAreaStyles() };\r\n }\r\n return attrs;\r\n },\r\n\r\n genTextAreaAttrs(): any {\r\n const textAreaAttrs = {\r\n rows: this.rows,\r\n cols: this.cols,\r\n };\r\n return textAreaAttrs;\r\n },\r\n\r\n genNameAttrs(): any {\r\n const nameAttrs = {\r\n name: this.name,\r\n };\r\n return nameAttrs;\r\n },\r\n\r\n genTextAreaStyles(): any {\r\n const textAreaStyles = {\r\n resize: this.resize,\r\n };\r\n return textAreaStyles;\r\n },\r\n\r\n genInputTextareaTag(): string {\r\n if (this.textarea) {\r\n return \"textarea\";\r\n }\r\n return \"input\";\r\n },\r\n\r\n focus() {\r\n const input = this.$refs.input as HTMLInputElement;\r\n input.focus();\r\n },\r\n\r\n blur() {\r\n const input = this.$refs.input as HTMLInputElement;\r\n input.blur();\r\n },\r\n\r\n select() {\r\n const input = this.$refs.input as HTMLInputElement;\r\n input.select();\r\n },\r\n\r\n genAddon(addon: string, addonClass: string) {\r\n const addonSlot = this.$scopedSlots[addon];\r\n if (addonSlot) {\r\n const addonData: VNodeData = {\r\n staticClass: addon,\r\n style: {\r\n cursor: this.cursor,\r\n },\r\n ref: addon,\r\n };\r\n const addonContent = this.$createElement(\r\n \"span\",\r\n { staticClass: \"input-addon-content\", class: [addonClass] },\r\n addonSlot({}),\r\n );\r\n return this.$createElement(\"div\", addonData, [addonContent]);\r\n }\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n const children: any[] = [];\r\n\r\n const dataLabel: VNodeData = {\r\n staticClass: \"ax-input\",\r\n };\r\n\r\n const dataInput: VNodeData = {\r\n attrs: this.genAttrs(),\r\n style: this.genStyles(),\r\n on: {\r\n ...this.$listeners,\r\n input: this.onInput,\r\n blur: this.onBlur,\r\n focus: this.onFocus,\r\n keyup: (e: KeyboardEvent) => {\r\n if (this.blurOnEsc && isKeyboardKey(e, \"esc\")) {\r\n this.blur();\r\n }\r\n },\r\n },\r\n domProps: {\r\n value: this.value,\r\n },\r\n class: this.inputClasses,\r\n ref: \"input\",\r\n };\r\n\r\n const prepend = this.genAddon(\"prepend\", this.classPrepend);\r\n if (prepend) children.push(prepend);\r\n children.push(h(this.genInputTextareaTag(), dataInput));\r\n\r\n if (!this.disableLabel) {\r\n const dataSpanLabel: VNodeData = {\r\n staticClass: \"label\",\r\n style: {\r\n cursor: this.cursor,\r\n },\r\n domProps: {\r\n innerHTML: this.label || this.placeholder,\r\n },\r\n };\r\n children.push(h(\"span\", dataSpanLabel));\r\n }\r\n\r\n const append = this.genAddon(\"append\", this.classAppend);\r\n if (append) children.push(append);\r\n\r\n return h(\"label\", dataLabel, children);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInput.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxTags',{attrs:{\"validator\":_vm.validators,\"submit-keys\":_vm.submitKeys,\"separators\":_vm.separators,\"disable-add-on-blur\":_vm.disableAddOnBlur},on:{\"validation-error\":_vm.onValidationError,\"escape-input\":_vm.selectLast,\"added\":_vm.onAdd,\"before-paste\":_vm.onBeforePaste,\"after-paste\":_vm.onAfterPaste},scopedSlots:_vm._u([{key:\"default\",fn:function({ current, tags: emails, removeTag, inputAttrs, inputEvents, clearNewTag }){return [_c('div',{staticClass:\"ax-input-emails\",on:{\"click\":_vm.focusInput}},[_c('div',{staticClass:\"row g-0\"},[_c('div',{staticClass:\"overflow-hidden\"},_vm._l((emails),function(email){return _c('AxChip',{key:email,staticClass:\"ax-email-chip\",attrs:{\"selected\":email === _vm.selected},on:{\"focus\":function($event){return _vm.select(email)},\"removed\":function($event){return _vm.removeViaKeyboard(email, removeTag)}},nativeOn:{\"blur\":function($event){return _vm.clearSelection.apply(null, arguments)},\"click\":function($event){$event.stopPropagation();return _vm.select(email)},\"focus\":function($event){$event.stopPropagation();return _vm.select(email)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"]))return null;if('button' in $event && $event.button !== 0)return null;return _vm.selectPrevious(email)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"]))return null;if('button' in $event && $event.button !== 2)return null;return _vm.selectNext(email)}]}},[_c('span',{staticClass:\"ax-email-chip-text\"},[_vm._v(\" \"+_vm._s(email)+\" \")]),_c('AxButton',{attrs:{\"color\":\"link\",\"tabindex\":\"-1\"},on:{\"click\":() => { removeTag(email); _vm.onRemove(email); }}},[_c('AxIcon',{attrs:{\"name\":\"plus\",\"rotate\":45}})],1)],1)}),1),_vm._t(\"input\",function(){return [_c('div',{staticClass:\"col col-for-chip\"},[_c('AxInput',_vm._g(_vm._b({ref:\"input\",staticClass:\"m-0 p-0 h-100\",attrs:{\"autofocus\":_vm.autofocus,\"disable-label\":\"\",\"keep-placeholder\":\"\",\"placeholder\":(emails.length ? '' : _vm.placeholder),\"input-class\":\"no-border ax-input-email-for-chip\"},on:{\"input\":function($event){return _vm.onInputStarted($event)}}},'AxInput',inputAttrs,false),inputEvents)),_vm._t(\"default\")],2)]},{\"inputAttrs\":inputAttrs,\"inputEvents\":inputEvents,\"emails\":emails,\"clearNewTag\":clearNewTag})],2)])]}}],null,true),model:{value:(_vm.innerValue),callback:function ($$v) {_vm.innerValue=$$v},expression:\"innerValue\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-chip\",attrs:{\"tabindex\":\"0\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"]))return null;return _vm.$emit('removed')}}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n selected: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n watch: {\r\n selected(val: boolean) {\r\n if (val) {\r\n (this.$el as HTMLElement).focus();\r\n this.$emit(\"focus\");\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxChip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxChip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxChip.vue?vue&type=template&id=48d9e8b4&scoped=true&\"\nimport script from \"./AxChip.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxChip.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxChip.vue?vue&type=style&index=0&id=48d9e8b4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48d9e8b4\",\n null\n \n)\n\nexport default component.exports","\r\nimport {\r\n ValidationError, Validator, PropertyValidator, ValidationResult, ValidationContext,\r\n} from \"lakmus\";\r\nimport Vue, { VNode } from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport {\r\n multiSplit, isApple, isKeyboardKey, KeyCodeKeys,\r\n} from \"@/common/lib\";\r\n\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nconst validationSuccess = {\r\n isValid: true,\r\n errors: [] as ValidationError[],\r\n};\r\n\r\ninterface Tags {\r\n newTag: string;\r\n tags: string[];\r\n}\r\n\r\ninterface TagsValidatorOptions {\r\n allowDuplicates: boolean;\r\n}\r\n\r\nexport class UniqueValidator extends PropertyValidator {\r\n private collectionAccessor?: (instance: T) => any[];\r\n\r\n constructor(errorMessage?: string) {\r\n super(errorMessage);\r\n }\r\n\r\n public withCollection(obj: (instance: T) => any[]) {\r\n this.collectionAccessor = obj;\r\n return this;\r\n }\r\n\r\n public isValid(context: ValidationContext): boolean {\r\n if (!this.collectionAccessor) {\r\n return false;\r\n }\r\n\r\n return !this.collectionAccessor(context.instance).includes(context.propertyValue);\r\n }\r\n\r\n public getErrorMessage(ctx: ValidationContext) {\r\n return `'${ctx.propertyValue}' is already added`;\r\n }\r\n}\r\n\r\nclass TagsValidator extends Validator {\r\n constructor(\r\n private readonly options: TagsValidatorOptions = {\r\n allowDuplicates: false,\r\n },\r\n private readonly newTagValidators?: PropertyValidator | PropertyValidator[],\r\n ) {\r\n super();\r\n\r\n if (!this.options.allowDuplicates) {\r\n this.ruleFor(x => x.newTag).setValidator(new UniqueValidator().withCollection(x => x.tags));\r\n }\r\n\r\n if (this.newTagValidators) {\r\n const validators = Array.isArray(this.newTagValidators) ? this.newTagValidators : [this.newTagValidators];\r\n if (validators) {\r\n for (const validator of validators) {\r\n this.ruleFor(x => x.newTag).setValidator(validator);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Vue.extend({\r\n props: {\r\n value: arrayProp(),\r\n\r\n disableAddOnBlur: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n validator: {\r\n type: [Object, Array],\r\n default: undefined,\r\n } as PropValidator,\r\n\r\n allowDuplicates: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n submitKeys: arrayProp({\r\n default(): KeyCodeKeys[] {\r\n return [\"enter\"] as KeyCodeKeys[];\r\n },\r\n }),\r\n\r\n separators: {\r\n type: Array,\r\n default(): string[] {\r\n return [];\r\n },\r\n } as PropValidator,\r\n },\r\n\r\n data() {\r\n return {\r\n newTag: \"\",\r\n innerValidator: Object.freeze(new TagsValidator({ allowDuplicates: this.allowDuplicates }, this.validator)),\r\n validationResult: validationSuccess,\r\n };\r\n },\r\n\r\n computed: {\r\n firstTag(): string | undefined {\r\n return this.value[0];\r\n },\r\n\r\n lastTag(): string | undefined {\r\n return this.value[this.value.length - 1];\r\n },\r\n },\r\n\r\n methods: {\r\n addTag() {\r\n const tag = this.newTag.trim();\r\n if (!tag) {\r\n this.clearValidation();\r\n return;\r\n }\r\n\r\n const validationResult = this.validate(tag);\r\n if (!validationResult.isValid) {\r\n this.$emit(\"validation-error\", validationResult);\r\n return;\r\n }\r\n if (tag) {\r\n this.$emit(\"input\", [...this.value, tag]);\r\n this.clearNewTag();\r\n this.$emit(\"added\", tag);\r\n return true;\r\n }\r\n },\r\n\r\n removeTag(tag: any) {\r\n if (tag) {\r\n this.$emit(\"input\", this.value.filter(t => t !== tag));\r\n if (this.newTag) {\r\n this.$emit(\"edit\", tag);\r\n } else {\r\n this.$emit(\"removed\", tag);\r\n }\r\n }\r\n },\r\n\r\n clearNewTag() {\r\n this.newTag = \"\";\r\n },\r\n\r\n validate(tag: string): ValidationResult {\r\n this.validationResult = this.innerValidator.validate({\r\n newTag: tag,\r\n tags: this.value,\r\n });\r\n return this.validationResult;\r\n },\r\n\r\n updateValueFromEvent(e: string | InputEvent) {\r\n let value: string = \"\";\r\n if (typeof e === \"string\") {\r\n value = e;\r\n } else {\r\n if (!e.target) return;\r\n if (e.target instanceof HTMLInputElement) {\r\n value = e.target.value;\r\n }\r\n }\r\n this.newTag = value;\r\n this.clearValidation();\r\n },\r\n\r\n clearValidation() {\r\n this.validationResult = validationSuccess;\r\n },\r\n\r\n tryHandleAdd(e: KeyboardEvent, shouldPrevent: boolean) {\r\n if (this.submitKeys.some(submitKey => isKeyboardKey(e, submitKey))) {\r\n if (shouldPrevent) {\r\n e.preventDefault();\r\n }\r\n this.addTag();\r\n return true;\r\n }\r\n },\r\n\r\n tryHandleRemove(e: KeyboardEvent, shouldPrevent: boolean) {\r\n if (isKeyboardKey(e, \"backspace\")) {\r\n if (!this.newTag) {\r\n if (this.lastTag) {\r\n this.newTag = this.lastTag;\r\n }\r\n if (shouldPrevent) {\r\n e.preventDefault();\r\n }\r\n this.removeTag(this.lastTag);\r\n return true;\r\n }\r\n }\r\n },\r\n\r\n async handleClipboardEvent(e: ClipboardEvent) {\r\n try {\r\n const clipboardData = e.clipboardData;\r\n if (clipboardData) {\r\n const pastedText = clipboardData.getData(\"text\");\r\n const emails = multiSplit(pastedText, this.separators, true);\r\n if (emails.length > 1) {\r\n for (const email of emails) {\r\n this.newTag = email;\r\n this.addTag();\r\n // eslint-disable-next-line no-await-in-loop\r\n await this.$nextTick();\r\n this.newTag = \"\";\r\n }\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n } catch {\r\n // don't prevent and let browser continue with default paste behavior\r\n }\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n return (\r\n (((this.$scopedSlots.default\r\n && this.$scopedSlots.default({\r\n tags: this.value,\r\n current: this.newTag,\r\n firstTag: this.firstTag,\r\n lastTag: this.lastTag,\r\n addTag: this.addTag,\r\n removeTag: this.removeTag,\r\n validationResult: this.validationResult,\r\n clearNewTag: this.clearNewTag,\r\n inputAttrs: {\r\n value: this.newTag,\r\n },\r\n inputEvents: {\r\n input: (e: string | InputEvent) => {\r\n this.updateValueFromEvent(e);\r\n },\r\n blur: () => {\r\n if (!this.disableAddOnBlur) {\r\n this.addTag();\r\n }\r\n },\r\n keydown: (e: KeyboardEvent) => {\r\n const target = e.target as HTMLInputElement;\r\n let shouldPrevent = true;\r\n if (isKeyboardKey(e, \"tab\")) {\r\n // allow tabbing further when input is empty\r\n shouldPrevent = false;\r\n }\r\n if (isKeyboardKey(e, \"left\")) {\r\n if (target.selectionStart === 0) {\r\n this.$emit(\"escape-input\");\r\n }\r\n }\r\n if (isKeyboardKey(e, \"a\")) {\r\n if ((isApple && e.metaKey) || (!isApple && e.ctrlKey)) {\r\n if (!this.newTag) {\r\n e.preventDefault();\r\n this.$emit(\"select-all\");\r\n return;\r\n }\r\n }\r\n }\r\n const handled = this.tryHandleAdd(e, shouldPrevent) || this.tryHandleRemove(e, shouldPrevent);\r\n return handled;\r\n },\r\n paste: (e: ClipboardEvent) => {\r\n this.$emit(\"before-paste\");\r\n this.handleClipboardEvent(e).finally(() => {\r\n this.$emit(\"after-paste\");\r\n });\r\n },\r\n },\r\n })) as unknown) as VNode) || h(\"\")\r\n );\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxTags.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxTags.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTags.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTags.vue?vue&type=script&lang=ts&\"","\r\nimport { ValidationResult, PropertyValidator, ValidationContext } from \"lakmus\";\r\nimport Vue from \"vue\";\r\n\r\nimport { KeyCodeKeys } from \"../common/lib\";\r\n\r\nimport { arrayProp } from \"./utils\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxChip from \"@/components/AxChip.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxTags from \"@/components/AxTags.vue\";\r\n\r\nconst emailRegex = /^[^\\s@]+@[^\\s@]+$/;\r\n\r\nexport class EmailValidator extends PropertyValidator {\r\n constructor(errorMessage?: string) {\r\n super(errorMessage);\r\n }\r\n\r\n public isValid(context: ValidationContext): boolean {\r\n const email = context.propertyValue as string;\r\n\r\n if (typeof email !== \"string\") {\r\n return false;\r\n }\r\n\r\n return emailRegex.test(email);\r\n }\r\n\r\n public getErrorMessage(ctx: ValidationContext) {\r\n return `'${ctx.propertyValue}' is not a valid email address`;\r\n }\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxChip,\r\n AxIcon,\r\n AxInput,\r\n AxTags,\r\n },\r\n\r\n props: {\r\n value: arrayProp({\r\n default: () => [],\r\n }),\r\n\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n placeholder: {\r\n type: String,\r\n default: \"name@example.com\",\r\n },\r\n\r\n inputStarted: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n disableAddOnBlur: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n extraValidators: arrayProp({\r\n default: undefined,\r\n }),\r\n },\r\n\r\n data() {\r\n const submitKeys: KeyCodeKeys[] = [\"tab\", \"enter\", \"space\", \"comma\"];\r\n const validators = [new EmailValidator()];\r\n if (this.extraValidators) {\r\n validators.push(...this.extraValidators);\r\n }\r\n\r\n return {\r\n selected: undefined as string | undefined,\r\n submitKeys,\r\n separators: [\"\\t\", \"\\n\\r\", \"\\n\", \" \", \",\"],\r\n validators,\r\n };\r\n },\r\n\r\n computed: {\r\n innerValue: {\r\n get(): string[] {\r\n return this.value;\r\n },\r\n set(value: string[]) {\r\n this.$emit(\"input\", value);\r\n },\r\n },\r\n },\r\n\r\n watch: {\r\n value() {\r\n this.$emit(\"change\");\r\n },\r\n },\r\n\r\n methods: {\r\n select(email: string) {\r\n this.selected = email;\r\n return !!this.selected;\r\n },\r\n\r\n clearSelection() {\r\n this.selected = undefined;\r\n return false;\r\n },\r\n\r\n selectPrevious(email: string) {\r\n const emailIndex = this.innerValue.findIndex(inner => inner === email);\r\n const previous = this.innerValue[emailIndex - 1];\r\n return this.select(previous);\r\n },\r\n\r\n selectNext(email: string) {\r\n const emailIndex = this.innerValue.findIndex(inner => inner === email);\r\n const next = this.innerValue[emailIndex + 1];\r\n if (!next) {\r\n this.focusInput();\r\n } else {\r\n return this.select(next);\r\n }\r\n },\r\n\r\n selectLast() {\r\n const last = this.innerValue[this.innerValue.length - 1];\r\n return this.select(last);\r\n },\r\n\r\n focusInput() {\r\n // no next email in the list. return focus back to input\r\n const input = this.$refs.input as Vue & { focus?(): void };\r\n if (input && typeof input.focus === \"function\") {\r\n input.focus();\r\n }\r\n this.$emit(\"focus-input\");\r\n },\r\n\r\n onValidationError(validationResult: ValidationResult) {\r\n this.$emit(\"validation-error\", validationResult);\r\n },\r\n\r\n removeViaKeyboard(email: string, removeTag: (email: string) => void) {\r\n const index = this.innerValue.findIndex(val => val === email);\r\n const previous = this.innerValue[index - 1];\r\n removeTag(email);\r\n this.$nextTick(() => this.select(previous) || this.focusInput());\r\n this.onRemove(email);\r\n },\r\n\r\n onAdd() {\r\n this.$emit(\"update:input-started\", true);\r\n },\r\n\r\n onRemove(email: string) {\r\n const emails = this.innerValue.filter(value => value !== email);\r\n if (emails.length === 0) {\r\n this.$emit(\"update:input-started\", false);\r\n }\r\n this.$emit(\"remove\", email);\r\n },\r\n\r\n onInputStarted(value: string) {\r\n this.$emit(\"update:input-started\", !!value || this.innerValue.length > 0);\r\n },\r\n\r\n onBeforePaste() {\r\n this.$emit(\"before-paste\");\r\n },\r\n\r\n onAfterPaste() {\r\n this.$emit(\"after-paste\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInputEmails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInputEmails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxInputEmails.vue?vue&type=template&id=7a9ee880&scoped=true&\"\nimport script from \"./AxInputEmails.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxInputEmails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxInputEmails.vue?vue&type=style&index=0&id=7a9ee880&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a9ee880\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxInput',{staticClass:\"search\",class:{ 'search--collapsible': _vm.collapsible },attrs:{\"type\":\"search\",\"placeholder\":\"Search\",\"keep-placeholder\":_vm.keepPlaceholder,\"input-class\":{\n 'search-input': true,\n 'search-input--collapsible': _vm.collapsible,\n 'search-input--has-value': !!_vm.value,\n },\"blur-on-esc\":\"\",\"value\":_vm.value},on:{\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"input\":_vm.onInput},scopedSlots:_vm._u([(!_vm.collapsible)?{key:\"prepend\",fn:function(){return [_c('AxIcon',{staticClass:\"search-icon\",attrs:{\"name\":\"search\"}})]},proxy:true}:null,{key:\"append\",fn:function(){return [(_vm.collapsible)?_c('AxIcon',{staticClass:\"search-icon\",attrs:{\"name\":\"search\"}}):_c('AxButton',{staticClass:\"clear-button\",class:{ invisible: !_vm.value },attrs:{\"color\":\"link\"},on:{\"click\":function($event){return _vm.onInput('')}}},[_c('AxIcon',{staticClass:\"clear-icon\",attrs:{\"name\":\"close\"}})],1)]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxInput,\r\n AxIcon,\r\n AxButton,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n inputClass: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n collapsible: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n keepPlaceholder: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n onInput(e?: any): void {\r\n this.$emit(\"input\", e);\r\n },\r\n\r\n onBlur(e?: any): void {\r\n this.$emit(\"blur\", e);\r\n if (this.collapsible) {\r\n this.$emit(\"open\", false);\r\n }\r\n },\r\n\r\n onFocus(e?: any): void {\r\n this.$emit(\"focus\", e);\r\n if (this.collapsible) {\r\n this.$emit(\"open\", true);\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInputSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInputSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxInputSearch.vue?vue&type=template&id=7e96f8d5&scoped=true&\"\nimport script from \"./AxInputSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxInputSearch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxInputSearch.vue?vue&type=style&index=0&id=7e96f8d5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e96f8d5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ul',{staticClass:\"ax-list\"},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxList.vue?vue&type=template&id=a0e0d80e&scoped=true&\"\nimport script from \"./AxList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxList.vue?vue&type=style&index=0&id=a0e0d80e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a0e0d80e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{staticClass:\"ax-list-item\",class:{\n 'ax-list-item--divider-top': _vm.dividerTop,\n 'ax-list-item--divider-bottom': _vm.dividerBottom\n }},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n dividerTop: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dividerBottom: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxListItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxListItem.vue?vue&type=template&id=729ad525&scoped=true&\"\nimport script from \"./AxListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxListItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxListItem.vue?vue&type=style&index=0&id=729ad525&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"729ad525\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{staticClass:\"ax-manage-users-invite\",attrs:{\"submit\":_vm.submit,\"validator\":_vm.validator,\"value\":_vm.model,\"errors\":_vm.validationErrors},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, validationResult }){return [_c('form',[_vm._t(\"title\",function(){return [_c('div',{staticClass:\"form-title\"},[_vm._v(\" Invite users to this Workspace \")])]}),_vm._t(\"input-email\",function(){return [(_vm.isSubInstance)?_c('div',[(_vm.usersLoaded)?_c('AxFormGroup',{staticClass:\"form-info\"},[_c('AxInputEmails',{ref:\"inputEmails\",staticClass:\"input-email-addresses\",class:{ 'border-menu-active': _vm.menuOpened },attrs:{\"extra-validators\":_vm.validators,\"disable-add-on-blur\":\"\"},on:{\"validation-error\":_vm.onValidationError,\"remove\":function($event){values.usersInvite.userEmails = values.usersInvite.userEmails.filter(em => $event !== em)},\"focus-input\":() => _vm.$refs.usersSelect.focus(),\"change\":() => _vm.$emit('change', values.usersInvite),\"before-paste\":() => _vm.onBeforePaste(values.usersInvite.userEmails),\"after-paste\":() => _vm.onAfterPaste(values.usersInvite.userEmails)},scopedSlots:_vm._u([{key:\"input\",fn:function({ inputAttrs, inputEvents, emails, clearNewTag }){return [_c('AxManageUsersSelect',{ref:\"usersSelect\",attrs:{\"input-class\":\"no-border\",\"disable-label\":\"\",\"autofocus\":_vm.autofocus,\"items\":values,\"placeholder\":(emails.length ? '' : 'name@example.com'),\"input-attrs\":inputAttrs,\"input-events\":inputEvents,\"input-started\":_vm.inputStarted,\"menu-opened\":_vm.menuOpened,\"activator-ref\":_vm.$refs.inputEmails},on:{\"update:inputStarted\":function($event){_vm.inputStarted=$event},\"update:input-started\":[function($event){_vm.inputStarted=$event},_vm.clearErrors],\"update:menuOpened\":function($event){_vm.menuOpened=$event},\"update:menu-opened\":function($event){_vm.menuOpened=$event},\"error\":_vm.onError,\"select\":clearNewTag},model:{value:(values.usersInvite.userEmails),callback:function ($$v) {_vm.$set(values.usersInvite, \"userEmails\", $$v)},expression:\"values.usersInvite.userEmails\"}})]}}],null,true),model:{value:(values.usersInvite.userEmails),callback:function ($$v) {_vm.$set(values.usersInvite, \"userEmails\", $$v)},expression:\"values.usersInvite.userEmails\"}})],1):_vm._e()],1):_c('div',[_c('AxFormGroup',{staticClass:\"form-info\"},[_c('AxInputEmails',{attrs:{\"autofocus\":_vm.autofocus,\"input-started\":_vm.inputStarted,\"placeholder\":\"Enter emails, separated by commas\"},on:{\"update:inputStarted\":function($event){_vm.inputStarted=$event},\"update:input-started\":[function($event){_vm.inputStarted=$event},_vm.clearErrors],\"validation-error\":_vm.onValidationError,\"change\":() => _vm.$emit('change', values.usersInvite)},model:{value:(values.usersInvite.userEmails),callback:function ($$v) {_vm.$set(values.usersInvite, \"userEmails\", $$v)},expression:\"values.usersInvite.userEmails\"}})],1)],1)]}),(_vm.inputStarted || _vm.forceAction)?_vm._t(\"input-message\",function(){return [_c('AxInput',{staticClass:\"ax-manage-users-invite_message\",attrs:{\"resize\":\"vertical\",\"textarea\":\"\",\"disable-label\":\"\",\"keep-placeholder\":\"\",\"placeholder\":(values.usersInvite.inviteMessage.length ? '' : 'Optional Message')},on:{\"input\":_vm.onMessageInput,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.ctrlKey)return null;return handleSubmit.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.metaKey)return null;return handleSubmit.apply(null, arguments)}]},model:{value:(values.usersInvite.inviteMessage),callback:function ($$v) {_vm.$set(values.usersInvite, \"inviteMessage\", $$v)},expression:\"values.usersInvite.inviteMessage\"}})]}):_vm._e(),_vm._t(\"action\",function(){return [(_vm.inputStarted || _vm.forceAction)?_c('div',[_c('AxFormGroup',[_c('AxButton',{attrs:{\"block\":\"\",\"color\":\"upload\",\"type\":\"submit\",\"loading\":_vm.formLoading,\"disabled\":_vm.validationErrors.length > 0},on:{\"click\":function($event){$event.preventDefault();return (() => {values.usersInvite.viewerOnly = false; handleSubmit()}).apply(null, arguments)}}},[_vm._v(\" Invite \")])],1),_c('div',{staticClass:\"text-center\"},[_c('AxButton',{staticClass:\"text-underline pb-2\",attrs:{\"color\":\"link\",\"type\":\"submit\",\"loading\":_vm.formLoading,\"disabled\":_vm.validationErrors.length > 0},on:{\"click\":function($event){$event.preventDefault();return (() => {values.usersInvite.viewerOnly = true; handleSubmit()}).apply(null, arguments)}}},[_vm._v(\" Invite as Viewer Only \")])],1)],1):_vm._e()]},{\"validationResult\":validationResult,\"submitting\":_vm.submitting,\"handleSubmit\":handleSubmit,\"values\":values}),_vm._t(\"configure\",function(){return [(!_vm.inputStarted && !_vm.isDefaultWorkspace)?_c('div',[_c('AxConfigureWorkspaceSecurity',{attrs:{\"edit-mode\":_vm.editMode,\"workspace\":_vm.workspace},on:{\"remove\":_vm.updateUsers},scopedSlots:_vm._u([{key:\"existingMembersTitle\",fn:function({ existingMembersCount }){return [_vm._v(\" \"+_vm._s(existingMembersCount)+\" \"+_vm._s(_vm.existingUsersTitle)+\" \")]}}],null,true)})],1):_vm._e()]}),(!_vm.isSubInstance && !!_vm.sitekey)?_c('AxReCaptcha',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isMessageEmpty),expression:\"!isMessageEmpty\"}],ref:\"recaptcha\",staticClass:\"recaptcha\",attrs:{\"sitekey\":_vm.sitekey},on:{\"captcha-ready\":_vm.onCaptchaReadyChanging,\"captcha-callback\":_vm.submitAction}}):_vm._e()],2)]}},{key:\"errors\",fn:function({ errors }){return [_c('div',[_c('AxFormErrors',{staticClass:\"ax-errors\",attrs:{\"errors\":errors}})],1)]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.showBadge && _vm.captchaLoaded)?_c('span',[_vm._v(\" This site is protected by reCAPTCHA and the Google \"),_c('a',{attrs:{\"href\":\"https://policies.google.com/privacy\"}},[_vm._v(\"Privacy Policy\")]),_vm._v(\" and \"),_c('a',{attrs:{\"href\":\"https://policies.google.com/terms\"}},[_vm._v(\"Terms of Service\")]),_vm._v(\" apply. \")]):_vm._e(),_c('div',{staticClass:\"g-recaptcha\",class:{'hidden': !_vm.showBadge},attrs:{\"id\":\"gRecaptcha\",\"data-sitekey\":_vm.sitekey}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nconst recaptchaScriptId = \"axRecaptchaScript\";\r\nfunction appendRecaptchaScript() {\r\n const oldScript = document.getElementById(recaptchaScriptId);\r\n if (!oldScript) {\r\n const script = document.createElement(\"script\");\r\n script.id = recaptchaScriptId;\r\n script.src = \"https://www.google.com/recaptcha/api.js?render=explicit\";\r\n script.async = true;\r\n script.defer = true;\r\n document.head.appendChild(script);\r\n } else {\r\n document.head.removeChild(oldScript);\r\n appendRecaptchaScript();\r\n }\r\n}\r\n\r\nfunction removeRecaptchaScripts() {\r\n (window as any).grecaptcha = undefined;\r\n (window as any).recaptcha = undefined;\r\n // remove the recaptcha iframe wrapper that remains in the body\r\n document.querySelectorAll(\"iframe[src*=recaptcha]\").forEach(a => a.parentElement?.parentElement?.remove());\r\n document.querySelectorAll(\"script[src*=recaptcha]\").forEach(a => a.remove());\r\n}\r\n\r\nexport default Vue.extend({\r\n props: {\r\n sitekey: {\r\n type: String,\r\n required: true,\r\n },\r\n showBadge: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n captchaLoaded: false,\r\n gAssignedId: undefined as string | undefined,\r\n };\r\n },\r\n\r\n computed: {\r\n grecaptcha(): any {\r\n if ((window as any).grecaptcha) {\r\n return (window as any).grecaptcha;\r\n }\r\n return undefined;\r\n },\r\n },\r\n\r\n beforeMount() {\r\n appendRecaptchaScript();\r\n },\r\n\r\n beforeDestroy() {\r\n removeRecaptchaScripts();\r\n this.$emit(\"captcha-ready\", false);\r\n },\r\n\r\n mounted() {\r\n // Initialize the recaptcha\r\n this.init();\r\n },\r\n\r\n methods: {\r\n async execute() {\r\n if (this.grecaptcha) {\r\n this.$emit(\"captcha-ready\", false);\r\n await this.grecaptcha.execute(this.gAssignedId);\r\n }\r\n },\r\n async reset() {\r\n if (this.grecaptcha) {\r\n this.$emit(\"captcha-ready\", false);\r\n await this.grecaptcha.reset(this.gAssignedId);\r\n this.$emit(\"captcha-ready\", true);\r\n }\r\n },\r\n async callback(recaptchaToken: string) {\r\n if (this.grecaptcha) {\r\n await this.reset();\r\n this.$emit(\"captcha-callback\", recaptchaToken);\r\n this.$emit(\"captcha-ready\", true);\r\n }\r\n },\r\n render() {\r\n if (this.grecaptcha) {\r\n this.gAssignedId = this.grecaptcha.render(\"gRecaptcha\", {\r\n sitekey: this.sitekey,\r\n size: \"invisible\",\r\n callback: this.callback,\r\n \"expired-callback\": () => {\r\n this.reset();\r\n },\r\n });\r\n this.grecaptcha.reset();\r\n }\r\n },\r\n init() {\r\n this.$emit(\"captcha-ready\", false);\r\n const checkInterval = setInterval(() => {\r\n if (this.grecaptcha && Object.prototype.hasOwnProperty.call(this.grecaptcha, \"render\")) {\r\n clearInterval(checkInterval);\r\n this.render();\r\n this.$emit(\"captcha-ready\", true);\r\n this.captchaLoaded = true;\r\n }\r\n }, 500);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxReCaptcha.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxReCaptcha.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxReCaptcha.vue?vue&type=template&id=30f82a7a&\"\nimport script from \"./AxReCaptcha.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxReCaptcha.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxReCaptcha.vue?vue&type=style&index=0&id=30f82a7a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { ValidationResult, PropertyValidator, ValidationContext } from \"lakmus\";\r\nimport Vue, { VueConstructor } from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { AccountRowJs, SsoResponse } from \"@shared/models\";\r\n\r\nimport { FilesystemNodeWorkspace, isWorkspaceNode, ManageUsersInviteModelValidator } from \"@/common/fs\";\r\nimport { asError } from \"@/common/lib\";\r\nimport { workspaceMembersMixin } from \"@/mixins/WorkspaceMembers\";\r\nimport { getSubinstanceAccounts, shareOrInviteToFileSystem } from \"@/services/fs.service\";\r\nimport { AccessLevels, ManageUsersModel, UserProfile } from \"@/services/models/account\";\r\nimport { ManageUsersInviteModel } from \"@/services/models/filesystem\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { AxShareUser } from \"@/store/user/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxConfigureWorkspaceSecurity from \"@/components/AxConfigureWorkspaceSecurity.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormErrors from \"@/components/AxFormErrors.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxInputEmails from \"@/components/AxInputEmails.vue\";\r\nimport AxManageUsersSelect from \"@/components/AxManageUsers/AxManageUsersSelect.vue\";\r\nimport AxReCaptcha from \"@/components/AxReCaptcha.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ntype Mixins = InstanceType;\r\n\r\nconst workspaceProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n validator(item) {\r\n return isWorkspaceNode(item);\r\n },\r\n};\r\n\r\nexport class StringListValidator extends PropertyValidator {\r\n constructor(private readonly list: string[],\r\n private readonly message?: (value: string) => string,\r\n private readonly invert: boolean = false,\r\n errorMessage?: string) {\r\n super(errorMessage);\r\n }\r\n\r\n public isValid(context: ValidationContext): boolean {\r\n const value = context.propertyValue as string;\r\n\r\n if (typeof value !== \"string\") {\r\n return false;\r\n }\r\n\r\n return this.list.includes(value) ? !this.invert : this.invert;\r\n }\r\n\r\n public getErrorMessage(ctx: ValidationContext) {\r\n return !this.message ? `'${ctx.propertyValue}' is not a valid email address` : this.message(ctx.propertyValue);\r\n }\r\n}\r\n\r\nfunction createListValidator(list: string[], message: (value: string) => string, invert = false) {\r\n return new StringListValidator(list, message, invert);\r\n}\r\n\r\nexport default (Vue as VueConstructor).extend({\r\n components: {\r\n AxButton,\r\n AxConfigureWorkspaceSecurity,\r\n AxForm,\r\n AxFormGroup,\r\n AxManageUsersSelect,\r\n AxInput,\r\n AxInputEmails,\r\n AxFormErrors,\r\n AxReCaptcha,\r\n },\r\n\r\n mixins: [workspaceMembersMixin],\r\n\r\n props: {\r\n workspace: workspaceProp,\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n customSubmit: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n editMode: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n forceAction: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n existingUsersTitle: {\r\n type: String,\r\n default: \"existing workspace users:\",\r\n },\r\n },\r\n\r\n data() {\r\n const usersInvite: ManageUsersInviteModel = {\r\n userEmails: [],\r\n inviteMessage: \"\",\r\n viewerOnly: false,\r\n };\r\n\r\n const validators: PropertyValidator[] = [];\r\n const model: ManageUsersModel = {\r\n users: [],\r\n usersInvite,\r\n userOnly: this.workspace && !!this.workspace.userOnly,\r\n httpsOnly: this.workspace && !!this.workspace.httpsOnly,\r\n };\r\n return {\r\n model,\r\n validators,\r\n userEmails: [] as string[],\r\n inviteModel: undefined as ManageUsersInviteModel | undefined,\r\n validationErrors: [] as string[],\r\n validator: ManageUsersInviteModelValidator,\r\n inputStarted: false,\r\n menuOpened: false,\r\n subInstanceAccounts: [] as AccountRowJs[],\r\n captchaReady: false,\r\n submitting: false,\r\n isMessageEmpty: true,\r\n usersLoaded: false,\r\n pasting: false,\r\n };\r\n },\r\n\r\n computed: {\r\n isDefaultWorkspace(): boolean {\r\n return this.workspace && this.workspace.isDefault;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n currentUser(): AxShareUser {\r\n const { user } = this.$store.state as AxShare;\r\n return user;\r\n },\r\n\r\n sitekey(): string {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null ? axShareConfig.GoogleReCaptchaSiteKey : \"\";\r\n },\r\n\r\n useReCaptcha(): boolean {\r\n return !this.isMessageEmpty && !this.isSubInstance && !!this.sitekey;\r\n },\r\n formLoading(): boolean {\r\n if (this.useReCaptcha) {\r\n return this.submitting || !this.captchaReady;\r\n }\r\n return this.submitting;\r\n },\r\n },\r\n\r\n async mounted() {\r\n await this.init();\r\n },\r\n\r\n methods: {\r\n onMessageInput(text: string) {\r\n this.isMessageEmpty = !text;\r\n },\r\n\r\n async init() {\r\n if (this.isSubInstance) {\r\n await this.updateUsers();\r\n }\r\n },\r\n\r\n async updateUsers() {\r\n if (this.isSubInstance) {\r\n this.subInstanceAccounts = (await getSubinstanceAccounts()).Items;\r\n const { userInfo } = this.currentUser;\r\n\r\n // Get the workspace owner's email, since if current user is workspace owner,\r\n // the ownerEmail is null and we grab it from userInfo\r\n let ownerEmail: string | undefined;\r\n if (this.workspace) {\r\n if (this.workspace.isOwner && userInfo) {\r\n ownerEmail = userInfo.userEmail;\r\n } else {\r\n ownerEmail = this.workspace.ownerEmail;\r\n }\r\n }\r\n\r\n const filteredAccounts = this.subInstanceAccounts.filter(\r\n account => !account.IsDeactivated // exclude deactivated account\r\n && !(account.Email === ownerEmail) // exclude owner account\r\n && !(this.workspace && this.workspace.users.some(shared => shared.user.userId === account.Id)), // exclude already invited\r\n );\r\n\r\n this.model.users = filteredAccounts.map(account => ({\r\n user: this.getUser(account) as SsoResponse,\r\n profile: this.getProfile(account) as UserProfile,\r\n isViewer: account.Level === AccessLevels.Reviewer || account.Level === AccessLevels.TechnicalAdmin,\r\n Level: account.Level,\r\n isViewerAccount: account.Level === AccessLevels.Reviewer || account.Level === AccessLevels.TechnicalAdmin,\r\n }));\r\n\r\n const canBeInvitedUsers = this.model.users.map(u => u.user.userEmail);\r\n const sharedUsers = this.sharedWith.map(u => u.user.userEmail);\r\n const allUsers = canBeInvitedUsers.concat(sharedUsers);\r\n this.validators.push(\r\n createListValidator(sharedUsers, email => `'${email}' already invited.`, true),\r\n createListValidator(allUsers, email => `'${email}' does not exist, contact your system admin.`),\r\n );\r\n\r\n this.usersLoaded = true;\r\n }\r\n },\r\n\r\n getUser(account: AccountRowJs) {\r\n const user: Partial = {\r\n userId: account.Id,\r\n userEmail: account.Email,\r\n };\r\n return user;\r\n },\r\n\r\n getProfile(account: AccountRowJs) {\r\n const userProfile: Partial = {\r\n Name: account.Email,\r\n };\r\n return userProfile;\r\n },\r\n\r\n onValidationError(validationResult: ValidationResult) {\r\n this.clearErrors();\r\n this.validationErrors.push(...validationResult.errors.map(error => error.errorMessage));\r\n },\r\n\r\n onError(errorMessage: string) {\r\n this.clearErrors();\r\n this.validationErrors.push(errorMessage);\r\n },\r\n\r\n clearErrors() {\r\n if (this.pasting) return;\r\n this.validationErrors = [];\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n this.submitting = true;\r\n if (values.usersInvite && values.usersInvite.userEmails) {\r\n const userEmails = values.usersInvite.userEmails;\r\n this.inviteModel = {\r\n userEmails: Array.isArray(userEmails) ? userEmails.join(\",\") : userEmails,\r\n inviteMessage: values.usersInvite.inviteMessage,\r\n viewerOnly: values.usersInvite.viewerOnly,\r\n filesystemId: this.workspace.id,\r\n ignoreAccepted: true,\r\n ignorePending: true,\r\n };\r\n if (!this.useReCaptcha) {\r\n await this.submitAction();\r\n } else {\r\n await (this.$refs.recaptcha as any).execute();\r\n }\r\n } else {\r\n this.submitting = false;\r\n }\r\n },\r\n\r\n cancel() {\r\n this.$emit(\"cancel\");\r\n },\r\n\r\n async submitAction(recaptchaToken: string | undefined = undefined) {\r\n this.clearErrors();\r\n const { customSubmit } = this;\r\n const model = this.inviteModel;\r\n if (model) {\r\n try {\r\n if (customSubmit) {\r\n return await customSubmit(model, recaptchaToken);\r\n }\r\n\r\n await shareOrInviteToFileSystem(model, recaptchaToken);\r\n await this.$store.dispatch(new Fetch(this.workspace));\r\n this.$emit(\"submit\");\r\n } catch (error) {\r\n this.validationErrors.push(asError(error).message);\r\n } finally {\r\n this.submitting = false;\r\n }\r\n }\r\n },\r\n\r\n onCaptchaReadyChanging(ready: boolean) {\r\n this.captchaReady = ready;\r\n },\r\n\r\n onBeforePaste() {\r\n this.clearErrors();\r\n this.pasting = true;\r\n },\r\n\r\n onAfterPaste() {\r\n this.pasting = false;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersInvite.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersInvite.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxManageUsersInvite.vue?vue&type=template&id=eef7c166&scoped=true&\"\nimport script from \"./AxManageUsersInvite.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxManageUsersInvite.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxManageUsersInvite.vue?vue&type=style&index=0&id=eef7c166&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eef7c166\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-manage-users-select\"},[_c('AxDropdownButton',{staticClass:\"w-100\",attrs:{\"content-class\":_vm.contentClasses,\"toggle-callback\":_vm.toggleCallback,\"active\":_vm.isOpen,\"color\":\"link\",\"block\":\"\",\"bottom\":\"\",\"strategy\":\"fixed\",\"activator-ref\":_vm.activatorRef,\"use-activator-width\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('AxFormGroup',{on:{\"click\":function($event){$event.stopPropagation();if($event.target !== $event.currentTarget)return null;return _vm.activate.apply(null, arguments)}}},[_c('AxInput',_vm._g(_vm._b({ref:\"search\",staticClass:\"search\",attrs:{\"autofocus\":_vm.autofocus,\"block\":\"\",\"input-class\":_vm.inputClass,\"placeholder\":_vm.placeholder,\"label\":_vm.label,\"disable-label\":_vm.disableLabel},on:{\"focus\":function($event){$event.stopPropagation();if($event.target !== $event.currentTarget)return null;return _vm.activate.apply(null, arguments)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.stopPropagation();if($event.target !== $event.currentTarget)return null;return _vm.deactivate.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;if($event.target !== $event.currentTarget)return null;$event.preventDefault();return _vm.pointerForward.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;if($event.target !== $event.currentTarget)return null;$event.preventDefault();return _vm.pointerBackward.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==188&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.stopPropagation();if($event.target !== $event.currentTarget)return null;return _vm.addPointerElement($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"]))return null;if($event.target !== $event.currentTarget)return null;return _vm.remove.apply(null, arguments)}]},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}},'AxInput',_vm.inputAttrs,false),_vm.inputEvents))],1)]},proxy:true}])},[_c('AxList',{ref:\"list\",staticClass:\"ax-manage-users-select__list\"},_vm._l((_vm.filteredOptions),function(option,index){return _c('AxListItem',{key:option.value.userId,class:_vm.optionHighlight(index, option.value)},[_c('AxButton',{staticClass:\"add-email-button\",attrs:{\"title\":option.value.userEmail,\"color\":\"link\",\"disabled\":_vm.isInvited(option.value)},on:{\"mouseenter\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.pointerSet(index)},\"click\":function($event){return _vm.addPointerElement($event)}}},[_vm._v(\" \"+_vm._s(option.value.userEmail)+\" \")])],1)}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { SsoResponse } from \"@shared/models\";\r\n\r\nimport { Search } from \"@/common/search/Search\";\r\nimport { ManageUsersModel } from \"@/services/models/account\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDropdownButton from \"@/components/AxDropdownButton.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxList from \"@/components/AxList.vue\";\r\nimport AxListItem from \"@/components/AxListItem.vue\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\ninterface SelectOption {\r\n value: T;\r\n [index: string]: any;\r\n}\r\n\r\nconst itemsProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxList,\r\n AxListItem,\r\n AxDropdownButton,\r\n AxInput,\r\n AxFormGroup,\r\n },\r\n\r\n props: {\r\n items: itemsProp,\r\n\r\n activatorRef: {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n value: arrayProp({\r\n default: () => [],\r\n }),\r\n\r\n placeholder: {\r\n type: String,\r\n default: \"Enter Email addresses\",\r\n },\r\n\r\n label: {\r\n type: String,\r\n default: \"Enter Email addresses\",\r\n },\r\n\r\n disableLabel: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n inputClass: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n inputAttrs: {\r\n type: Object,\r\n required: false,\r\n default: () => ({}),\r\n },\r\n\r\n inputEvents: {\r\n type: Object,\r\n required: false,\r\n default: () => ({}),\r\n },\r\n\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n menuOpened: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n const searchFields = new Map boolean>([\r\n [\"userEmail\", () => true],\r\n [\"nickname\", () => true],\r\n ]);\r\n const searchEngine: Search = new Search([], searchFields);\r\n\r\n return {\r\n isOpen: false,\r\n searchQuery: \"\",\r\n searchEngine,\r\n searchFields,\r\n pointer: 0,\r\n optionHeight: 30,\r\n };\r\n },\r\n\r\n computed: {\r\n filteredOptions(): Array> {\r\n if (!this.searchQuery) {\r\n return this.users.map(user => ({ value: user }));\r\n }\r\n if (!this.searchEngine.items.length) this.initSearch();\r\n return this.searchEngine\r\n .doSearch(this.searchQuery)\r\n .map(result => ({\r\n value: result.item,\r\n }))\r\n .filter(item => !this.isInvited(item.value));\r\n },\r\n\r\n users(): SsoResponse[] {\r\n return this.items.users.map(item => item.user);\r\n },\r\n\r\n contentClasses(): any {\r\n return this.isOpen && this.filteredOptions.length > 0 ? \"content-list\" : \"border-0\";\r\n },\r\n\r\n pointerPosition(): number {\r\n return this.pointer * this.optionHeight;\r\n },\r\n },\r\n\r\n watch: {\r\n filteredOptions() {\r\n this.pointerAdjust();\r\n },\r\n\r\n searchQuery(searchQuery) {\r\n if (searchQuery.length > 0) {\r\n this.activate();\r\n } else {\r\n this.deactivate(false);\r\n }\r\n },\r\n\r\n value(value) {\r\n this.$emit(\"update:input-started\", value.length > 0);\r\n },\r\n\r\n isOpen(value) {\r\n this.$emit(\"update:menu-opened\", value);\r\n },\r\n\r\n items() {\r\n this.initSearch();\r\n },\r\n },\r\n\r\n methods: {\r\n initSearch() {\r\n this.searchEngine = new Search(this.users, this.searchFields);\r\n },\r\n\r\n isInvited(user: SsoResponse): boolean {\r\n const { items } = this;\r\n return !!(\r\n items.usersInvite\r\n && items.usersInvite.userEmails\r\n && items.usersInvite.userEmails.indexOf(user.userEmail) > -1\r\n );\r\n },\r\n\r\n toggleCallback(_openedMenu: boolean) {\r\n _openedMenu ? this.activate() : this.deactivate();\r\n },\r\n\r\n pointerForward() {\r\n if (this.isOpen && this.pointer < this.filteredOptions.length - 1) {\r\n this.pointer++;\r\n\r\n const user = this.filteredOptions[this.pointer].value;\r\n if (this.isInvited(user)) this.pointerForward();\r\n\r\n const listElement = (this.$refs.list as any).$el as HTMLElement;\r\n if (listElement.scrollTop <= this.pointerPosition) {\r\n listElement.scrollTop = this.pointerPosition;\r\n }\r\n }\r\n },\r\n\r\n pointerBackward() {\r\n if (this.isOpen && this.pointer > 0) {\r\n this.pointer--;\r\n\r\n const user = this.filteredOptions[this.pointer].value;\r\n if (this.isInvited(user)) this.pointerBackward();\r\n\r\n const listElement = (this.$refs.list as any).$el as HTMLElement;\r\n if (listElement.scrollTop >= this.pointerPosition) {\r\n listElement.scrollTop = this.pointerPosition;\r\n }\r\n }\r\n },\r\n\r\n optionHighlight(index: number, user: SsoResponse): any {\r\n const { pointer, isInvited } = this;\r\n return {\r\n highlight: index === pointer && !isInvited(user),\r\n };\r\n },\r\n\r\n pointerAdjust() {\r\n if (this.isOpen && this.pointer >= this.filteredOptions.length - 1) {\r\n this.pointer = this.filteredOptions.length ? this.filteredOptions.length - 1 : 0;\r\n }\r\n },\r\n\r\n pointerSet(index: number) {\r\n this.pointer = index;\r\n },\r\n\r\n activate() {\r\n if (this.isOpen) return;\r\n if (this.searchQuery.length > 0) this.isOpen = true;\r\n this.focus();\r\n },\r\n\r\n deactivate(blur: boolean = true) {\r\n if (!this.isOpen) return;\r\n this.isOpen = false;\r\n this.searchQuery = \"\";\r\n this.pointerReset();\r\n\r\n if (blur) {\r\n const inputElement = (this.$refs.search as any).$refs.input as HTMLElement;\r\n inputElement.blur();\r\n }\r\n },\r\n\r\n focus() {\r\n const inputElement = (this.$refs.search as any).$refs.input as HTMLElement;\r\n if (inputElement && typeof inputElement.focus === \"function\") {\r\n inputElement.focus();\r\n }\r\n },\r\n\r\n addPointerElement(event: any) {\r\n if (this.searchQuery.length) {\r\n event.preventDefault();\r\n const { isOpen, isInvited, filteredOptions } = this;\r\n\r\n if (isOpen && filteredOptions.length > 0) {\r\n const user = filteredOptions[this.pointer].value;\r\n if (!isInvited(user)) this.select(user);\r\n }\r\n\r\n this.deactivate(false);\r\n }\r\n },\r\n\r\n pointerReset() {\r\n this.pointer = 0;\r\n if (this.$refs.list) {\r\n ((this.$refs.list as any).$el as HTMLElement).scrollTop = 0;\r\n }\r\n },\r\n\r\n select(user: SsoResponse) {\r\n this.$emit(\"select\", user, this.deactivate);\r\n this.$emit(\"input\", [...this.value, user.userEmail]);\r\n },\r\n\r\n remove() {\r\n if (this.searchQuery.length === 0 && this.value.length > 0) {\r\n const lastSelected = this.value[this.value.length - 1];\r\n this.$emit(\"input\", this.value.filter(val => val !== lastSelected));\r\n this.searchQuery = lastSelected;\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxManageUsersSelect.vue?vue&type=template&id=d698eda4&scoped=true&\"\nimport script from \"./AxManageUsersSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxManageUsersSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxManageUsersSelect.vue?vue&type=style&index=0&id=d698eda4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d698eda4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-menu\"},[_c('div',{ref:\"activator\",staticClass:\"ax-menu__activator\",attrs:{\"role\":\"button\",\"aria-expanded\":_vm.value.toString()},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggle.apply(null, arguments)}}},[_vm._t(\"activator\",null,{\"deactivate\":_vm.deactivate,\"activate\":_vm.activate,\"toggle\":_vm.toggle})],2),(_vm.value)?_c('div',{directives:[{name:\"on-click-away\",rawName:\"v-on-click-away\",value:({ handler: _vm.deactivate, closeConditional: _vm.closeConditional, include: _vm.onClickAwayInclude }),expression:\"{ handler: deactivate, closeConditional, include: onClickAwayInclude }\"}],ref:\"content\",staticClass:\"ax-menu__content\",class:_vm.contentClassComputed,style:(_vm.contentStyleComputed),on:{\"click\":_vm.contentClick}},[(_vm.arrow)?_c('div',{staticClass:\"ax-menu__content-arrow\",attrs:{\"data-popper-arrow\":\"\"}}):_vm._e(),_vm._t(\"default\",null,{\"deactivate\":_vm.deactivate,\"activate\":_vm.activate,\"toggle\":_vm.toggle})],2):_vm._e(),(_vm.overlay && _vm.value)?_c('div',{staticClass:\"fullscreen-overlay\",on:{\"click\":function($event){$event.preventDefault();return _vm.deactivate.apply(null, arguments)}}}):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\r\n Modifier,\r\n} from \"@popperjs/core\";\r\n\r\nconst sameWidth: Modifier<\"sameWidth\", any> = {\r\n name: \"sameWidth\",\r\n enabled: true,\r\n fn({ state }) {\r\n state.styles.popper.width = `${state.rects.reference.width}px`;\r\n },\r\n effect({ state }) {\r\n const rect = state.elements.reference.getBoundingClientRect();\r\n state.elements.popper.style.width = `${rect.width}px`;\r\n },\r\n phase: \"beforeWrite\",\r\n requires: [\"computeStyles\"],\r\n};\r\n\r\nexport { sameWidth };\r\n","\r\nimport {\r\n createPopper, Instance, Modifier, Placement, PositioningStrategy,\r\n} from \"@popperjs/core\";\r\nimport flip from \"@popperjs/core/lib/modifiers/flip\";\r\nimport preventOverflow from \"@popperjs/core/lib/modifiers/preventOverflow\";\r\nimport Vue from \"vue\";\r\n\r\nimport { sameWidth } from \"@/common/axshare/popperjs\";\r\nimport { directive as onClickAway } from \"@/mixins/ClickAway\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n directives: {\r\n onClickAway,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n\r\n closeOnContentClick: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n right: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n left: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n top: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n bottom: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n middle: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n skidding: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n distance: {\r\n type: Number,\r\n default: -3,\r\n },\r\n\r\n contentClass: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n overlay: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n controlManually: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n scrollToIndex: {\r\n type: Number,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n itemHeight: {\r\n type: Number,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n nativeStyled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n strategy: prop({\r\n required: false,\r\n default: undefined,\r\n }),\r\n\r\n activatorRef: {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n useActivatorWidth: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n arrow: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dropMaxHeight: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n hasDetached: false,\r\n popper: undefined as Instance | undefined,\r\n };\r\n },\r\n\r\n computed: {\r\n contentClassComputed(): Record {\r\n const classes = {\r\n [`ax-menu__content ${this.contentClass}`.trim()]: true,\r\n \"ax-menu__content--native-styled\": this.nativeStyled,\r\n };\r\n return classes;\r\n },\r\n\r\n contentMaxHeight() {\r\n return this.nativeStyled ? 190 : 295;\r\n },\r\n\r\n contentStyleComputed(): Partial {\r\n const styles: Partial = {\r\n };\r\n\r\n if (!this.dropMaxHeight) {\r\n styles.maxHeight = `${this.contentMaxHeight}px`;\r\n }\r\n return styles;\r\n },\r\n\r\n placement(): Placement {\r\n if (this.top) {\r\n if (this.right) {\r\n return \"top-end\";\r\n }\r\n if (this.left) {\r\n return \"top-start\";\r\n }\r\n return \"top\";\r\n }\r\n\r\n if (this.bottom) {\r\n if (this.right) {\r\n return \"bottom-end\";\r\n }\r\n if (this.left) {\r\n return \"bottom-start\";\r\n }\r\n return \"bottom\";\r\n }\r\n\r\n if (this.left) {\r\n return \"left\";\r\n }\r\n\r\n if (this.right) {\r\n return \"right\";\r\n }\r\n\r\n return \"bottom-end\";\r\n },\r\n },\r\n\r\n watch: {\r\n value(val) {\r\n this.$emit(\"toggle\", val);\r\n if (val) {\r\n this.activate();\r\n } else {\r\n this.deactivate();\r\n }\r\n },\r\n\r\n scrollToIndex(index) {\r\n if (this.itemHeight && index !== null && index !== undefined) {\r\n const content = this.$refs.content as HTMLElement | undefined;\r\n if (content) {\r\n const itemPosition = this.itemHeight * index;\r\n const oldScrollPosition = content.scrollTop;\r\n const offset = 2;\r\n if (itemPosition < oldScrollPosition) {\r\n content.scrollTop = itemPosition;\r\n } else if (itemPosition + this.itemHeight >= oldScrollPosition + this.contentMaxHeight) {\r\n content.scrollTop = itemPosition + this.itemHeight - this.contentMaxHeight + offset;\r\n }\r\n }\r\n }\r\n },\r\n },\r\n\r\n beforeDestroy() {\r\n if (this.hasDetached) {\r\n const content = this.$refs.content as HTMLElement | undefined;\r\n if (!content) return;\r\n\r\n try {\r\n if (this.popper) {\r\n this.popper.destroy();\r\n this.popper = undefined;\r\n return;\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n closeConditional(): boolean {\r\n if (this.controlManually) {\r\n return false;\r\n }\r\n return this.value && this.closeOnContentClick;\r\n },\r\n\r\n detach() {\r\n this.$nextTick(() => {\r\n if (!this.$refs.content) {\r\n return;\r\n }\r\n\r\n let activator = (this.activatorRef || this.$refs.activator) as Element | Vue | undefined;\r\n if (activator && !(activator instanceof Element)) {\r\n activator = activator.$el;\r\n }\r\n const content = this.$refs.content as HTMLElement | undefined;\r\n if (activator && content) {\r\n const modifiers: Partial>[] = [\r\n preventOverflow,\r\n flip,\r\n {\r\n name: \"offset\",\r\n options: {\r\n offset: [this.skidding, this.distance],\r\n },\r\n },\r\n ];\r\n if (this.useActivatorWidth) {\r\n modifiers.push(sameWidth);\r\n }\r\n\r\n this.popper = createPopper(activator, content, {\r\n placement: this.placement,\r\n strategy: this.strategy,\r\n modifiers,\r\n });\r\n this.hasDetached = true;\r\n }\r\n });\r\n },\r\n\r\n toggle(): void {\r\n const val = this.value;\r\n if (val) {\r\n this.deactivate();\r\n } else {\r\n this.activate();\r\n }\r\n },\r\n\r\n activate(): void {\r\n this.$emit(\"input\", true);\r\n this.detach();\r\n },\r\n\r\n deactivate(): void {\r\n this.$emit(\"input\", false);\r\n },\r\n\r\n contentClick(e: MouseEvent): void {\r\n e.stopPropagation();\r\n if (e.target && e.target instanceof Element && e.target.getAttribute(\"disabled\")) {\r\n return;\r\n }\r\n if (this.closeOnContentClick) {\r\n this.deactivate();\r\n }\r\n },\r\n\r\n onClickAwayInclude() {\r\n return [this.$el];\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxMenu.vue?vue&type=template&id=5d702dce&scoped=true&\"\nimport script from \"./AxMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxMenu.vue?vue&type=style&index=0&id=5d702dce&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d702dce\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"ax-navigation\",class:{ row: !_vm.isElectron }},[_c('div',{class:{ col: !_vm.isElectron, 'navigation-content': _vm.isElectron }},[_c('AxNavigationBreadcrumbs',{attrs:{\"items\":_vm.breadcrumbs}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-navigation-breadcrumbs desktop-app-no-drag\",class:{ 'ax-navigation-breadcrumbs--collapsed': _vm.shouldCollapse }},_vm._l((_vm.breadcrumbs),function(item,index){return _c('span',{key:index,staticClass:\"ax-navigation-breadcrumbs__item\"},[(typeof item === 'string')?_c('span',{staticClass:\"ax-navigation-breadcrumbs__item--collapse\"},[_vm._v(\" \"+_vm._s(item)+\" \")]):(item.type === _vm.FilesystemNodeType.Recents)?_c('RouterLink',{attrs:{\"to\":_vm.recentsRoute}},[_vm._v(\" \"+_vm._s(item.name)+\" \")]):_c('AxNavigationLinkFs',{staticClass:\"ax-navigation-breadcrumb--truncate\",class:{ 'ax-navigation-breadcrumb--shortcut': item.type === _vm.FilesystemNodeType.Shortcut },attrs:{\"id\":item.id,\"title\":item.name}},[_vm._v(\" \"+_vm._s(item.name)+\" \")]),(index < _vm.breadcrumbs.length - 1)?_c('span',{staticClass:\"path-separator\"},[_c('AxIcon',{staticClass:\"path-separator__caret\",attrs:{\"name\":\"caret\",\"rotate\":\"-90deg\"}})],1):_vm._e()],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeType, FilesystemNodeTypes } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxNavigationLinkFs from \"./AxNavigationLinkFs.vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nconst itemsProp: PropOptions = {\r\n type: Array,\r\n default: () => [],\r\n};\r\n\r\nconst props = {\r\n items: itemsProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxNavigationLinkFs,\r\n AxIcon,\r\n },\r\n\r\n props,\r\n\r\n data() {\r\n return {\r\n FilesystemNodeType,\r\n fsRootLocation: {\r\n name: ROUTES.fs.name,\r\n },\r\n };\r\n },\r\n\r\n computed: {\r\n noRootItems(): FilesystemNodeTypes[] {\r\n return this.items.filter(item => item.type !== FilesystemNodeType.Root);\r\n },\r\n\r\n breadcrumbs(): (FilesystemNodeTypes | string)[] {\r\n const noRootItems = this.noRootItems;\r\n if (!this.shouldCollapse) {\r\n return noRootItems;\r\n }\r\n return [noRootItems[0], \"...\", noRootItems[noRootItems.length - 2], noRootItems[noRootItems.length - 1]];\r\n },\r\n\r\n shouldCollapse(): boolean {\r\n return this.noRootItems.length > 3;\r\n },\r\n\r\n recentsRoute(): Location {\r\n const recentRouteName = ROUTES[\"fs.recents\"].name;\r\n return {\r\n name: recentRouteName,\r\n query: {\r\n refresh: \"true\",\r\n },\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigationBreadcrumbs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigationBreadcrumbs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxNavigationBreadcrumbs.vue?vue&type=template&id=24ab1960&scoped=true&\"\nimport script from \"./AxNavigationBreadcrumbs.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxNavigationBreadcrumbs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxNavigationBreadcrumbs.vue?vue&type=style&index=0&id=24ab1960&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24ab1960\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { FilesystemNodeRecents, FilesystemNodeType, FilesystemNodeTypes } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxNavigationBreadcrumbs from \"./AxNavigationBreadcrumbs.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxNavigationBreadcrumbs,\r\n },\r\n\r\n computed: {\r\n breadcrumbs(): FilesystemNodeTypes [] {\r\n const breadcrumbs: FilesystemNodeTypes [] = [...this.$store.getters.filesystemPath];\r\n if (this.isRecents) {\r\n const recentsNode = {\r\n id: \"recent\",\r\n name: \"Recents\",\r\n type: FilesystemNodeType.Recents,\r\n } as FilesystemNodeRecents;\r\n breadcrumbs.push(recentsNode);\r\n }\r\n return breadcrumbs;\r\n },\r\n\r\n visible(): boolean {\r\n return this.breadcrumbs.length > 1;\r\n },\r\n\r\n isElectron(): boolean {\r\n return isElectron;\r\n },\r\n\r\n isRecents(): boolean {\r\n return this.$route.name === ROUTES[\"fs.recents\"].name;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxNavigation.vue?vue&type=template&id=7dc52796&scoped=true&\"\nimport script from \"./AxNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxNavigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxNavigation.vue?vue&type=style&index=0&id=7dc52796&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7dc52796\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.node.type === _vm.FilesystemNodeType.Shortcut)?_c('AxNavigationLinkPrototype',{attrs:{\"item\":_vm.node}},[_vm._t(\"default\")],2):(_vm.linkReady)?_c('RouterLink',{attrs:{\"to\":_vm.fsLocation}},[_vm._t(\"default\",function(){return [_vm._v(\" \"+_vm._s(_vm.node.name)+\" \")]})],2):_c('span',{staticClass:\"align-middle\"},[_vm._v(\" \"+_vm._s(_vm.node.name)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RouterLink',{attrs:{\"to\":_vm.to}},[_vm._t(\"default\",function(){return [_vm._v(\" \"+_vm._s(_vm.urls.display)+\" \")]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { prototypeUrls } from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n item: {\r\n type: Object,\r\n required: true,\r\n },\r\n },\r\n\r\n computed: {\r\n to(): Location {\r\n const { shortcut } = this.item as FilesystemNodeShortcut;\r\n return {\r\n name: ROUTES.project.name,\r\n params: {\r\n shortcut: shortcut.toLowerCase(),\r\n },\r\n };\r\n },\r\n urls(): { href: string; display: string } {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n const project = this.item as FilesystemNodeShortcut;\r\n return prototypeUrls(axShareConfig, project);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigationLinkPrototype.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigationLinkPrototype.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxNavigationLinkPrototype.vue?vue&type=template&id=24036fc2&\"\nimport script from \"./AxNavigationLinkPrototype.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxNavigationLinkPrototype.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { FilesystemNodeType, FilesystemNodeTypes, FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxNavigationLinkPrototype from \"./AxNavigationLinkPrototype.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxNavigationLinkPrototype,\r\n },\r\n\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n navigationNode: {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n workspace: {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n FilesystemNodeType,\r\n };\r\n },\r\n\r\n computed: {\r\n node(): FilesystemNodeTypes {\r\n if (this.navigationNode) return this.navigationNode;\r\n\r\n const node = this.$store.getters.getFsNode(this.id);\r\n return node;\r\n },\r\n\r\n workspaceComputed(): FilesystemNodeWorkspace | undefined {\r\n return this.workspace || this.$store.getters.findWorkspace(this.id);\r\n },\r\n\r\n linkReady(): boolean {\r\n const { id, type } = this.node;\r\n if (type === FilesystemNodeType.Root) return true;\r\n if (type === FilesystemNodeType.Folder) {\r\n return id !== undefined && this.workspaceComputed !== undefined;\r\n }\r\n return id !== undefined;\r\n },\r\n\r\n fsLocation(): Location {\r\n const { type } = this.node;\r\n if (type === FilesystemNodeType.Folder && this.workspaceComputed) {\r\n return fsRouterLocation(this.node, { workspaceId: this.workspaceComputed.id });\r\n }\r\n return fsRouterLocation(this.node);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigationLinkFs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxNavigationLinkFs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxNavigationLinkFs.vue?vue&type=template&id=4ea6b402&\"\nimport script from \"./AxNavigationLinkFs.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxNavigationLinkFs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-progress\",style:({ backgroundColor: _vm.backgroundColor, height: _vm.height })},[_c('div',{class:_vm.spinnerClasses,style:(_vm.spinnerStyles)})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n backgroundColor: {\r\n type: String,\r\n default: \"#b1eaef\",\r\n },\r\n\r\n spinnerColor: {\r\n type: String,\r\n default: \"#00b9ca\",\r\n },\r\n\r\n progress: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n indeterminate: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n short: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n height: {\r\n type: String,\r\n default: \"3px\",\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n // random animation delay allows multiple spinners work not synchronously\r\n randomAnimationDelay: `${Math.random()}s`,\r\n };\r\n },\r\n\r\n computed: {\r\n spinnerClasses(): Record {\r\n return {\r\n indeterminate: this.indeterminate,\r\n \"indeterminate--short\": this.indeterminate && this.short,\r\n \"progress-bar\": !this.indeterminate,\r\n };\r\n },\r\n\r\n spinnerStyles(): Partial {\r\n const styles: Partial = {};\r\n if (this.spinnerColor) styles.backgroundColor = this.spinnerColor;\r\n if (this.indeterminate) {\r\n styles.animationDelay = this.randomAnimationDelay;\r\n } else {\r\n styles.width = `${this.progress}%`;\r\n }\r\n return styles;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProgressBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProgressBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProgressBar.vue?vue&type=template&id=3ca5a9fc&scoped=true&\"\nimport script from \"./AxProgressBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProgressBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxProgressBar.vue?vue&type=style&index=0&id=3ca5a9fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ca5a9fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.fileAvailable)?_c('a',{attrs:{\"href\":_vm.urls.download}},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_c('span',[_vm._v(\" None \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { ShortcutJs } from \"@shared/models\";\r\nimport { PrototypeUrls } from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut, isShortcutNode, isShortcutSearchNode } from \"@/common/fs\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nconst itemProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n};\r\nconst props = {\r\n item: itemProp,\r\n linkText: {\r\n type: String,\r\n required: false,\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n props,\r\n\r\n computed: {\r\n fileAvailable(): boolean {\r\n return !!this.filename;\r\n },\r\n\r\n filename(): string {\r\n if (isShortcutNode(this.item)) {\r\n return (this.item.listingNode && this.item.listingNode.TargetPrototypeFileName) || \"\";\r\n }\r\n if (isShortcutSearchNode(this.item)) {\r\n return \"Download\";\r\n }\r\n return this.item.TargetPrototypeFileName;\r\n },\r\n\r\n urls(): PrototypeUrls {\r\n return this.$store.getters.prototypeUrls(this.item);\r\n },\r\n\r\n text(): string {\r\n return this.linkText || this.filename;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFileDownload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFileDownload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectFileDownload.vue?vue&type=template&id=37081876&\"\nimport script from \"./AxProjectFileDownload.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectFileDownload.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-project-file-picker\"},[_c('AxFileUpload',{attrs:{\"options\":_vm.fileOptions,\"uploader-classes\":\"ax-project-file-picker__uploader\"},on:{\"error\":_vm.error},scopedSlots:_vm._u([{key:\"default\",fn:function({ triggerBrowse, removeFile }){return [_c('div',{staticClass:\"ax-project-file-picker__dropzone\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.file),expression:\"!file\"}]},[_c('h5',{staticClass:\"text-muted\"},[_vm._v(\" \"+_vm._s(_vm.uploadMessage)+\" \")]),_c('AxButton',{ref:\"chooseBtn\",staticClass:\"ax-project-file-picker-btn\",attrs:{\"medium\":\"\",\"color\":\"secondary\"},on:{\"click\":triggerBrowse}},[_vm._v(\" Choose File \")])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.file),expression:\"file\"}],staticClass:\"remove-file\"},[_c('AxButton',{staticClass:\"remove-file__button\",attrs:{\"color\":\"link\",\"small\":\"\"},on:{\"click\":() => { removeFile(_vm.file); _vm.cancelUpload() }}},[_vm._v(\" Cancel \")])],1)])]}},{key:\"files\",fn:function({ acceptedFiles }){return [_c('div',{staticClass:\"ax-project-file-picker__files\"},[_vm._l((acceptedFiles),function(accepted){return _c('div',{key:accepted.id},[_c('AxProjectIcon',{staticClass:\"file-icon\",attrs:{\"type\":_vm.getTypeFromFilename(accepted),\"small\":\"\"}}),_c('p',{staticClass:\"file-name truncate\",attrs:{\"title\":accepted.name}},[_vm._v(\" \"+_vm._s(accepted.name)+\" \")])],1)}),(_vm.uploadProgress)?_c('AxProjectFileUploadIndicator',{staticClass:\"p-3\",attrs:{\"progress\":_vm.uploadProgress}}):_vm._e()],2)]}}]),model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-project-file-upload-indicator\"},[_c('img',{attrs:{\"src\":require(\"@/assets/ajaxload.gif\")}}),(_vm.progressComputable)?_c('div',[_c('div',{staticClass:\"progress\"},[_c('div',{staticClass:\"progress-bar progress-bar-striped progress-bar-animated w100\",style:({ width: `${_vm.percentage}%` })})]),_c('div',[_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"fileSize\")(_vm.progress.current))+\" / \"+_vm._s(_vm._f(\"fileSize\")(_vm.progress.total))+\" \")])])]):_c('div',[_vm._v(\" Uploading... \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { fileSize } from \"@/common/lib\";\r\n\r\nexport interface Progress {\r\n current: number;\r\n total: number;\r\n lengthComputable: boolean;\r\n}\r\n\r\nconst progressProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nconst props = {\r\n progress: progressProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n filters: {\r\n fileSize(bytes: number) {\r\n return fileSize(bytes);\r\n },\r\n },\r\n props,\r\n\r\n computed: {\r\n progressComputable(): boolean {\r\n return this.progress.lengthComputable && this.progress.current !== 0 && this.progress.total !== 0;\r\n },\r\n\r\n completed(): boolean {\r\n return this.progress.current === this.progress.total;\r\n },\r\n\r\n percentage(): number {\r\n return (this.progress.current / this.progress.total) * 100;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFileUploadIndicator.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFileUploadIndicator.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectFileUploadIndicator.vue?vue&type=template&id=3885abba&\"\nimport script from \"./AxProjectFileUploadIndicator.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectFileUploadIndicator.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxProjectFileUploadIndicator.vue?vue&type=style&index=0&id=3885abba&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { formatArray } from \"@/common/lib\";\r\nimport { getFileExtension } from \"@/common/lib/string\";\r\nimport { ShortcutType } from \"@/services/models\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxFileUpload from \"@/components/AxFileUpload.vue\";\r\nimport AxProjectFileUploadIndicator from \"@/components/AxProjectFileUploadIndicator.vue\";\r\nimport AxProjectIcon from \"@/components/AxProjectIcon.vue\";\r\n\r\nconst bytesInMegabyte = 1024 * 1024;\r\n\r\nconst fileTypesToShortcutType: { [key: string]: ShortcutType | undefined } = {\r\n \".rp\": ShortcutType.Rp,\r\n \".rplib\": ShortcutType.Lib,\r\n};\r\nconst imgFileTypes = [\".png\", \".jpg\", \".gif\"];\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxFileUpload,\r\n AxProjectFileUploadIndicator,\r\n AxProjectIcon,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: Object,\r\n required: false,\r\n default: null,\r\n },\r\n\r\n uploadProgress: {\r\n type: Object,\r\n required: false,\r\n default: null,\r\n },\r\n\r\n uploadMessage: {\r\n type: String,\r\n default: \"Drop .RP file here or\",\r\n },\r\n\r\n isRpUploader: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n let maxFileSize = 0;\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n if (axShareConfig) {\r\n // axShareConfig's max file size value is in bytes, and vue-transmit's is in MB\r\n // conversion is required\r\n maxFileSize = axShareConfig.MaxFileSize / bytesInMegabyte;\r\n }\r\n\r\n const acceptedFileTypes = this.isRpUploader ? Object.keys(fileTypesToShortcutType) : imgFileTypes;\r\n const acceptedFileTypeFormatted = formatArray(acceptedFileTypes);\r\n\r\n // prettier-ignore\r\n const fileTooLargeMessage = \"Upload error: The selected file is too large ({{ fileSize }}MB). Maximum file size is {{ maxFileSize }}MB.\";\r\n const fileIncorrectTypeMessage = `Upload error: The selected file has incorrect type. Valid file extensions are ${acceptedFileTypeFormatted}.`;\r\n\r\n return {\r\n errors: [] as string[],\r\n fileOptions: {\r\n acceptedFileTypes,\r\n paramName: \"fileData\",\r\n maxFiles: 1,\r\n maxFileSize,\r\n fileSizeBase: 1024,\r\n uploadAreaClasses: \"ax-project-file-picker__upload-area\",\r\n dictFileTooBig: fileTooLargeMessage,\r\n dictInvalidFileType: fileIncorrectTypeMessage,\r\n },\r\n };\r\n },\r\n\r\n computed: {\r\n file: {\r\n get(): any | null {\r\n return this.value;\r\n },\r\n\r\n set(value: any) {\r\n this.$emit(\"file-accepted\");\r\n this.$emit(\"input\", value);\r\n },\r\n },\r\n },\r\n\r\n mounted() {\r\n if (this.autofocus) {\r\n this.onFocus();\r\n }\r\n },\r\n\r\n methods: {\r\n filesProps(props: any) {\r\n const file = props.acceptedFiles[0];\r\n return {\r\n file,\r\n type: this.getTypeFromFilename(file),\r\n };\r\n },\r\n\r\n getTypeFromFilename(file: any) {\r\n const fallback = ShortcutType.Rp;\r\n if (!file || !file.name) return fallback;\r\n\r\n const extension = getFileExtension(file.name.toLowerCase());\r\n return (extension && fileTypesToShortcutType[extension]) || fallback;\r\n },\r\n\r\n error(_: any, reason: string) {\r\n this.errors = [reason];\r\n this.$emit(\"file-error\", this.errors);\r\n },\r\n\r\n cancelUpload() {\r\n this.$emit(\"cancel-upload\");\r\n },\r\n\r\n onFocus() {\r\n const chooseBtn = (this.$refs.chooseBtn as any).$el as HTMLElement;\r\n\r\n if (chooseBtn && document.activeElement !== chooseBtn) {\r\n this.$nextTick(() => chooseBtn.focus());\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFilePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFilePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectFilePicker.vue?vue&type=template&id=8b2222a2&scoped=true&\"\nimport script from \"./AxProjectFilePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectFilePicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxProjectFilePicker.vue?vue&type=style&index=0&id=8b2222a2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8b2222a2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDialog',{attrs:{\"lazy\":\"\",\"persistent\":_vm.uploading},on:{\"after-leave\":_vm.uploadDestroy},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[(!_vm.uploadDestroyed)?_c('AxForm',{attrs:{\"submit\":_vm.submit,\"errors\":_vm.errors},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return _c('form',{},[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Upload File \")]),_c('AxFormGroup',[_c('p',[_vm._v(\"Uploading a new RP file will replace the old one\")]),_c('AxProjectFilePicker',{attrs:{\"upload-progress\":_vm.progress},on:{\"file-accepted\":_vm.fileAccepted,\"file-error\":_vm.fileError,\"cancel-upload\":_vm.cancelUpload},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1),_c('AxFormGroup',[_c('span',{staticClass:\"input-hint-text\"},[_vm._v(\" Publish Notes \")]),_c('AxPublishNotes',{attrs:{\"shortcut\":_vm.shortcut,\"user-id\":_vm.currentUserId,\"user-token\":_vm.currentUserToken},model:{value:(_vm.publishNote),callback:function ($$v) {_vm.publishNote=$$v},expression:\"publishNote\"}})],1),_c('AxButton',{attrs:{\"type\":\"submit\",\"block\":\"\",\"large\":\"\",\"disabled\":_vm.file == null || submitting,\"color\":\"primary\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Upload \")])],1)}}],null,false,399978270)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Canceler } from \"axios\";\r\nimport Vue from \"vue\";\r\n\r\nimport { enterpriseLicenseCheckFailed } from \"@/common/axshare/messages\";\r\nimport { RichText } from \"@/generated/models\";\r\nimport { ChangeProjectInfo } from \"@/services/models/project\";\r\nimport { changeProjectInfo } from \"@/services/project.service\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxProjectFilePicker from \"@/components/AxProjectFilePicker.vue\";\r\nimport { Progress } from \"@/components/AxProjectFileUploadIndicator.vue\";\r\nimport AxPublishNotes from \"@/components/AxPublishNotes.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxDialog,\r\n AxForm,\r\n AxFormGroup,\r\n AxProjectFilePicker,\r\n AxPublishNotes,\r\n },\r\n\r\n props: {\r\n shortcut: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n value: {\r\n type: Boolean,\r\n required: false,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n uploadDestroyed: false,\r\n file: null,\r\n uploading: false,\r\n uploadCanceled: false,\r\n errors: [] as string[],\r\n canceler: null as Canceler | null,\r\n progress: null as Progress | null,\r\n publishNote: null as RichText | null,\r\n };\r\n },\r\n\r\n computed: {\r\n show: {\r\n get(): boolean {\r\n return this.value;\r\n },\r\n\r\n set(value: boolean) {\r\n this.$emit(\"input\", value);\r\n },\r\n },\r\n\r\n currentUserId(): string {\r\n const { user } = this.$store.state as AxShare;\r\n if (user.userInfo) {\r\n return user.userInfo.userId;\r\n }\r\n return \"\";\r\n },\r\n\r\n currentUserToken(): string {\r\n const { accountService } = this.$store.state;\r\n if (accountService) {\r\n return accountService().AuthToken;\r\n }\r\n return \"\";\r\n },\r\n },\r\n\r\n watch: {\r\n value(val) {\r\n if (val) {\r\n this.uploadDestroyed = false;\r\n }\r\n },\r\n },\r\n\r\n methods: {\r\n uploadDestroy() {\r\n this.clearUpload();\r\n this.file = null;\r\n this.uploadDestroyed = true;\r\n this.$emit(\"after-leave\");\r\n },\r\n\r\n async submit() {\r\n if (this.file) {\r\n if (this.$store.getters.enterpriseLicenseCheckFailed) {\r\n this.errors = [enterpriseLicenseCheckFailed];\r\n return;\r\n }\r\n\r\n this.uploading = true;\r\n this.uploadCanceled = false;\r\n this.progress = {\r\n current: 0,\r\n total: 0,\r\n lengthComputable: false,\r\n };\r\n\r\n const prototypeInfo: Partial = {\r\n fileData: this.file,\r\n };\r\n\r\n if (this.publishNote) {\r\n prototypeInfo.PublishNoteRichText = JSON.stringify(this.publishNote);\r\n }\r\n\r\n try {\r\n await changeProjectInfo(\r\n this.shortcut,\r\n prototypeInfo,\r\n canceler => { this.canceler = canceler; },\r\n progress => {\r\n if (!this.uploadCanceled) {\r\n this.progress = {\r\n current: progress.loaded,\r\n total: progress.total ?? 0,\r\n lengthComputable: !!(progress.total),\r\n };\r\n }\r\n },\r\n );\r\n } finally {\r\n this.clearUpload();\r\n }\r\n this.$emit(\"upload\");\r\n }\r\n },\r\n\r\n fileAccepted() {\r\n this.errors = [];\r\n },\r\n\r\n fileError(errors: string[]) {\r\n this.errors = errors;\r\n },\r\n\r\n clearUpload() {\r\n this.progress = null;\r\n this.uploading = false;\r\n },\r\n\r\n cancelUpload() {\r\n if (this.uploading && this.canceler) {\r\n this.clearUpload();\r\n this.uploadCanceled = true;\r\n this.canceler(\"Prototype file upload was canceled by user.\");\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFileUpload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectFileUpload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectFileUpload.vue?vue&type=template&id=051a3bde&\"\nimport script from \"./AxProjectFileUpload.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectFileUpload.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-project-icon d-inline-flex flex-column\",class:{ 'large': _vm.large }},[_c('AxIcon',{class:_vm.iconClasses,attrs:{\"name\":_vm.name}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue, { PropOptions } from \"vue\";\r\n\r\nimport {\r\n isRp6ProjectAndBelow, isRp7Project, isRp8Project, isRp9Project, isRp9ProjectWithThumbnails, isRp10Project,\r\n} from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport { ShortcutType } from \"@/services/models\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nconst projectTypeIcons: { [key: number]: string | undefined } = {\r\n [ShortcutType.Rp]: \"rp\",\r\n [ShortcutType.Lib]: \"library\",\r\n [ShortcutType.TeamLib]: \"teamlib\",\r\n [ShortcutType.TeamRp]: \"teamrp\",\r\n};\r\n\r\nconst projectProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n type: {\r\n type: Number,\r\n required: true,\r\n },\r\n state: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n small: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n large: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n version: {\r\n type: Number,\r\n required: false,\r\n default: undefined,\r\n },\r\n iconClasses: {\r\n type: String,\r\n default: \"\",\r\n },\r\n project: projectProp,\r\n },\r\n\r\n computed: {\r\n icon(): any {\r\n return projectTypeIcons[this.type] || projectTypeIcons[ShortcutType.Rp];\r\n },\r\n\r\n size(): string {\r\n if (this.small) return \"sm\";\r\n if (this.large) return \"lg\";\r\n return \"sm\";\r\n },\r\n\r\n classes(): Record {\r\n return {\r\n small: this.small,\r\n large: this.large,\r\n \"rp-6\": this.isRp6AndBelow,\r\n \"rp-7\": this.isRp7,\r\n \"rp-8\": this.isRp8,\r\n \"rp-9\": this.isRp9,\r\n \"rp-10\": this.isRp10,\r\n };\r\n },\r\n\r\n name(): string {\r\n if (this.isRp10) {\r\n return `project-${this.icon}-10-${this.size}`;\r\n }\r\n if (this.isRp9 || this.isRp9WithThumbnails) {\r\n return `project-${this.icon}-9-${this.size}`;\r\n }\r\n if (this.isRp8) {\r\n return `project-${this.icon}-8-${this.size}`;\r\n }\r\n if (this.isRp7) {\r\n return `project-${this.icon}-7-${this.size}`;\r\n }\r\n if (this.isRp6AndBelow) {\r\n return `project-${this.icon}-6-${this.size}`;\r\n }\r\n return `project-${this.icon}-${this.size}`;\r\n },\r\n\r\n isRp6AndBelow(): boolean {\r\n return isRp6ProjectAndBelow(\r\n { project: this.project, resourceDirVersion: this.version, shortcutState: this.state },\r\n );\r\n },\r\n\r\n isRp7(): boolean {\r\n return isRp7Project({ project: this.project, resourceDirVersion: this.version });\r\n },\r\n\r\n isRp8(): boolean {\r\n return isRp8Project({ project: this.project, resourceDirVersion: this.version });\r\n },\r\n\r\n isRp9(): boolean {\r\n return isRp9Project({ project: this.project, resourceDirVersion: this.version });\r\n },\r\n\r\n isRp9WithThumbnails(): boolean {\r\n return isRp9ProjectWithThumbnails({ project: this.project, resourceDirVersion: this.version });\r\n },\r\n\r\n isRp10(): boolean {\r\n return isRp10Project({ project: this.project, resourceDirVersion: this.version });\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectIcon.vue?vue&type=template&id=7ae2381e&scoped=true&\"\nimport script from \"./AxProjectIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxProjectIcon.vue?vue&type=style&index=0&id=7ae2381e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7ae2381e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-form-invite\"},[(_vm.canInviteUsers)?_c('AxManageUsersInvite',{attrs:{\"autofocus\":\"\",\"force-action\":_vm.isDefaultWorkspace,\"workspace\":_vm.workspace,\"custom-submit\":_vm.isDefaultWorkspace ? _vm.shareDefaultWorkspaceProject : undefined,\"existing-users-title\":\"existing workspace member(s):\",\"edit-mode\":_vm.rights.securityConfigure},on:{\"submit\":_vm.cancel},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{staticClass:\"form-title\"},[_vm._v(\" \"+_vm._s(_vm.inviteUsersTitle)+\" \")])]},proxy:true},{key:\"description\",fn:function(){return [_c('AxFormGroup',[_c('span',{staticClass:\"ax-form-invite__description\"},[_vm._v(\" Inviting users to a workspace gives them access to the projects in the workspace. \")])])]},proxy:true},(_vm.isDefaultWorkspace)?{key:\"action\",fn:function({ submitting, handleSubmit, values }){return [_c('div',{staticClass:\"ax-form-invite__action\"},[_c('AxButton',{attrs:{\"block\":\"\",\"color\":\"upload\",\"type\":\"submit\",\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return (() => {\n values.usersInvite.viewerOnly = false;\n handleSubmit();\n }).apply(null, arguments)}}},[_vm._v(\" Create Workspace and Invite Others \")])],1),_c('div',{staticClass:\"ax-form-invite__action\"},[_c('AxButton',{staticClass:\"mb-2\",attrs:{\"color\":\"link\",\"type\":\"submit\",\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return (() => {\n values.usersInvite.viewerOnly = true;\n handleSubmit();\n }).apply(null, arguments)}}},[_vm._v(\" Create Workspace and Invite as Viewers \")])],1)]}}:null],null,true)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport {\r\n FilesystemNodeShortcut,\r\n FilesystemNodeWorkspace,\r\n WorkspaceRights,\r\n FilesystemNodeType,\r\n} from \"@/common/fs\";\r\nimport { FilesystemFolderInfo } from \"@/generated/models\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\nimport { ManageUsersInviteModel } from \"@/services/models/filesystem\";\r\nimport { ProjectShare } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxManageUsersInvite from \"@/components/AxManageUsers/AxManageUsersInvite.vue\";\r\n\r\nconst projectProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n};\r\n\r\nconst workspaceProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFormGroup,\r\n AxButton,\r\n AxManageUsersInvite,\r\n },\r\n\r\n props: {\r\n project: projectProp,\r\n\r\n ws: workspaceProp,\r\n },\r\n\r\n computed: {\r\n workspace(): FilesystemNodeWorkspace | undefined {\r\n if (this.ws) return this.ws;\r\n\r\n const workspace: FilesystemNodeWorkspace = this.$store.getters.findWorkspace(this.project.id);\r\n if (!workspace) return undefined;\r\n return workspace;\r\n },\r\n\r\n isDefaultWorkspace(): boolean | undefined {\r\n return this.workspace && this.workspace.isDefault;\r\n },\r\n\r\n inviteUsersTitle(): String {\r\n return this.isDefaultWorkspace ? \"Invite Others to a New Workspace\" : \"Invite Others to this Workspace\";\r\n },\r\n\r\n canInviteUsers(): boolean | undefined {\r\n return this.isDefaultWorkspace || (this.rights && this.rights.usersInvite);\r\n },\r\n\r\n rights(): WorkspaceRights | undefined {\r\n return this.workspace && this.$store.getters.workspaceRights(this.workspace);\r\n },\r\n },\r\n\r\n methods: {\r\n async shareDefaultWorkspaceProject(inviteUsers: ManageUsersInviteModel, recaptchaToken: string | undefined) {\r\n if (this.workspace && this.workspace.isDefault) {\r\n const newWorkspace: FilesystemFolderInfo | undefined = await this.$store.dispatch(\r\n new ProjectShare(this.workspace, this.project, inviteUsers, recaptchaToken),\r\n );\r\n if (newWorkspace) {\r\n const { FilesystemInfo } = newWorkspace;\r\n\r\n await this.$router.replace(\r\n fsRouterLocation({\r\n id: FilesystemInfo.FilesystemId,\r\n type: FilesystemNodeType.Workspace,\r\n }),\r\n );\r\n }\r\n }\r\n },\r\n\r\n cancel() {\r\n this.$emit(\"cancel\", true);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectInviteSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectInviteSettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectInviteSettings.vue?vue&type=template&id=682f9790&scoped=true&\"\nimport script from \"./AxProjectInviteSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectInviteSettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxProjectInviteSettings.vue?vue&type=style&index=0&id=682f9790&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"682f9790\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._t(\"default\"),(_vm.empty)?_vm._t(\"empty\",function(){return [(_vm.showDefaults)?_c('AxProjectStateEmpty'):_vm._e()]}):(_vm.notGenerated)?_vm._t(\"not-generated\"):(_vm.generating)?_vm._t(\"generating\",function(){return [(_vm.showDefaults)?_c('AxProjectStateGenerating'):_vm._e()]}):(_vm.generationFailed)?_vm._t(\"generation-failed\",function(){return [(_vm.showDefaults)?_c('AxProjectStateGenerationFailed'):_vm._e()]}):(_vm.generated)?_vm._t(\"generated\"):_vm._e(),(_vm.showDefaults && _vm.generating && _vm.fetchUpdates)?_c('AxProjectLoader',{attrs:{\"shortcut\":_vm.shortcut}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./AxProjectLoader.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectLoader.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode } from \"vue\";\r\n\r\nimport { ProjectLoad } from \"@/store/fs/actionTypes\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n shortcut: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n interval: {\r\n type: Number,\r\n required: false,\r\n default: 10000,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n pollingInterval: null as number | null,\r\n isDestroyed: false,\r\n };\r\n },\r\n\r\n async created() {\r\n await this.$store.dispatch(new ProjectLoad(this.shortcut));\r\n if (!this.isDestroyed) {\r\n this.pollingInterval = window.setInterval(\r\n () => this.$store.dispatch(new ProjectLoad(this.shortcut)),\r\n this.interval,\r\n );\r\n }\r\n },\r\n\r\n beforeDestroy() {\r\n if (this.pollingInterval) {\r\n clearInterval(this.pollingInterval);\r\n }\r\n this.isDestroyed = true;\r\n },\r\n\r\n render(h): VNode {\r\n return h(\"span\", this.$scopedSlots.default && this.$scopedSlots.default({}));\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectLoader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectLoader.vue?vue&type=script&lang=ts&\"","var render = function render(_c,_vm){return _c('span',[_vm._v(\"no prototype\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectStateEmpty.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectStateEmpty.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectStateEmpty.vue?vue&type=template&id=34c6ef28&functional=true&\"\nimport script from \"./AxProjectStateEmpty.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectStateEmpty.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _vm._m(0)\n}\nvar staticRenderFns = [function (_c,_vm){return _c('span',[_vm._v(\" generating... \"),_c('img',{attrs:{\"src\":require(\"@/assets/ajaxload.gif\")}})])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectStateGenerating.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectStateGenerating.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectStateGenerating.vue?vue&type=template&id=5bef5da3&functional=true&\"\nimport script from \"./AxProjectStateGenerating.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectStateGenerating.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _c('span',{staticClass:\"ax-generation-failed text-danger\"},[_vm._v(\" generation error \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectStateGenerationFailed.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectStateGenerationFailed.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectStateGenerationFailed.vue?vue&type=template&id=3d73f486&functional=true&\"\nimport script from \"./AxProjectStateGenerationFailed.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectStateGenerationFailed.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { ShortcutJs } from \"@shared/models\";\r\nimport { FilesystemNodeShortcut, isShortcutNode, ShortcutState, ShortcutStates, ShortcutStateName } from \"@/common/fs\";\r\nimport AxProjectLoader from \"@/components/AxProjectLoader.vue\";\r\nimport AxProjectStateEmpty from \"@/components/AxProjectStateEmpty.vue\";\r\nimport AxProjectStateGenerating from \"@/components/AxProjectStateGenerating.vue\";\r\nimport AxProjectStateGenerationFailed from \"@/components/AxProjectStateGenerationFailed.vue\";\r\n\r\nconst projectProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n};\r\nconst projectIdProp = {\r\n type: String,\r\n required: false,\r\n};\r\nconst projectStateProp = {\r\n type: String,\r\n required: false,\r\n validator(state: ShortcutStateName) {\r\n return ShortcutStates.includes(state);\r\n },\r\n};\r\n\r\nconst props = {\r\n project: projectProp,\r\n projectId: projectIdProp,\r\n projectState: projectStateProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxProjectLoader,\r\n AxProjectStateEmpty,\r\n AxProjectStateGenerating,\r\n AxProjectStateGenerationFailed,\r\n },\r\n\r\n props: {\r\n fetchUpdates: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n showDefaults: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n ...props,\r\n },\r\n\r\n computed: {\r\n state(): ShortcutStateName {\r\n if (this.project) {\r\n return isShortcutNode(this.project)\r\n ? this.project.shortcutState\r\n : (this.project.ShortcutState as ShortcutStateName);\r\n }\r\n\r\n return this.projectState as ShortcutStateName;\r\n },\r\n\r\n shortcut(): string {\r\n if (this.project) {\r\n return isShortcutNode(this.project) ? this.project.id : this.project.Shortcut;\r\n }\r\n\r\n return this.projectId;\r\n },\r\n\r\n empty(): boolean {\r\n return this.state === ShortcutState.Empty;\r\n },\r\n\r\n generating(): boolean {\r\n return this.state === ShortcutState.Generating;\r\n },\r\n\r\n notGenerated(): boolean {\r\n return this.state === ShortcutState.Deleted || this.state === ShortcutState.Empty;\r\n },\r\n\r\n generationFailed(): boolean {\r\n return this.state === ShortcutState.GenerationFailed || this.state === ShortcutState.Empty;\r\n },\r\n\r\n generated(): boolean {\r\n return this.state === ShortcutState.Ok;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectState.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectState.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectState.vue?vue&type=template&id=9e011b2a&\"\nimport script from \"./AxProjectState.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectState.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-project-thumbnail\"},[_c('div',{staticClass:\"d-inline-flex flex-column\",class:_vm.classes},[(_vm.isRp)?_c('AxProjectIcon',{class:_vm.iconClasses,attrs:{\"type\":_vm.shortcutType,\"state\":_vm.shortcutState,\"version\":_vm.projectResourceDirVersion,\"project\":_vm.project,\"small\":_vm.small,\"large\":!_vm.small}}):(_vm.isSketch)?_c('AxIcon',{class:_vm.iconClasses,attrs:{\"name\":\"artboard\"}}):_c('img',{staticClass:\"img-fluid\",class:_vm.iconClasses,attrs:{\"src\":_vm.fallback,\"alt\":\"Project thumbnail\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport {\r\n isRpProject, isRpProjectType, isSketchProject, isSketchProjectType,\r\n} from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut, isShortcutNode, ShortcutStateName } from \"@/common/fs\";\r\nimport { ShortcutType } from \"@/services/models\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxProjectIcon from \"@/components/AxProjectIcon.vue\";\r\n\r\nconst projectProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n validator: item => isShortcutNode(item),\r\n};\r\nconst typeProp: PropOptions = {\r\n type: Number,\r\n required: false,\r\n};\r\nconst props = {\r\n project: projectProp,\r\n type: typeProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxProjectIcon,\r\n },\r\n\r\n props: {\r\n small: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n iconClasses: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n state: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n stretch: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n version: {\r\n type: Number,\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n ...props,\r\n },\r\n\r\n data() {\r\n return {\r\n // eslint-disable-next-line global-require\r\n fallback: require(\"@/assets/project-rp8.png\"),\r\n };\r\n },\r\n\r\n computed: {\r\n classes(): Record {\r\n return {\r\n \"w-100\": this.stretch,\r\n \"ax-project-thumbnail__small\": this.small,\r\n \"ax-project-thumbnail__large\": !this.small,\r\n };\r\n },\r\n\r\n shortcutType(): ShortcutType {\r\n const { project, type } = this;\r\n if (project && project.listingNode) {\r\n return project.listingNode.ShortcutType;\r\n }\r\n\r\n return type;\r\n },\r\n\r\n shortcutState(): ShortcutStateName {\r\n const { project, state } = this;\r\n if (project) {\r\n return project.shortcutState;\r\n }\r\n\r\n return state as ShortcutStateName;\r\n },\r\n\r\n projectResourceDirVersion(): number {\r\n const { project, version } = this;\r\n return (project && project.listingNode && project.listingNode.ResourceDirVersion) || version;\r\n },\r\n\r\n isRp(): boolean {\r\n const { project, type } = this;\r\n if (project) {\r\n return isRpProject(project);\r\n }\r\n\r\n return isRpProjectType(type);\r\n },\r\n\r\n isSketch(): boolean {\r\n const { project, type } = this;\r\n if (project) {\r\n return isSketchProject(project);\r\n }\r\n\r\n return isSketchProjectType(type);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectThumbnail.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxProjectThumbnail.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxProjectThumbnail.vue?vue&type=template&id=0a8be669&scoped=true&\"\nimport script from \"./AxProjectThumbnail.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxProjectThumbnail.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxProjectThumbnail.vue?vue&type=style&index=0&id=0a8be669&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a8be669\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxReply',_vm._b({staticClass:\"ax-publish-notes\",attrs:{\"for-publish-note\":\"\",\"placeholder\":_vm.placeholder},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},'AxReply',_vm.$props,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nconst AxReply = () => import(\"@/components/standalone/feedback/AxReply.vue\");\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxReply,\r\n },\r\n\r\n props: {\r\n value: {\r\n type: [Object, String],\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n shortcut: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n workspaceId: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n folderId: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n userId: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n userToken: {\r\n type: [Function, String],\r\n default: \"\",\r\n },\r\n\r\n placeholder: {\r\n type: String,\r\n default: \"Let your team know what's changed\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPublishNotes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPublishNotes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPublishNotes.vue?vue&type=template&id=b4e45cb8&scoped=true&\"\nimport script from \"./AxPublishNotes.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPublishNotes.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxPublishNotes.vue?vue&type=style&index=0&id=b4e45cb8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b4e45cb8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxPushNotificationsBase',{attrs:{\"hub\":_vm.hubName,\"listeners\":_vm.listeners}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { CommentsChangedArgs, WorkspaceActivityEventArgs } from \"@shared/models\";\r\n\r\nimport { isWorkspaceNode, FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { pushNotificationsService } from \"@/services/push.notifications.service\";\r\n\r\nimport AxPushNotificationsBase from \"@/components/AxPushNotifications/AxPushNotificationsBase\";\r\n\r\nconst hubName = \"workspaces\";\r\n\r\nconst workspace: PropOptions = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isWorkspaceNode(item);\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxPushNotificationsBase,\r\n },\r\n\r\n props: {\r\n workspace,\r\n\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n hubName,\r\n listeners: {\r\n commentsChanged: (payload: CommentsChangedArgs) => {\r\n this.$emit(\"comments-changed\", payload);\r\n },\r\n\r\n activityEvent: (payload: WorkspaceActivityEventArgs) => {\r\n this.$emit(\"activity-event\", payload);\r\n },\r\n },\r\n };\r\n },\r\n\r\n async mounted() {\r\n if (this.readonly) return;\r\n // join group only after child component finished mounting\r\n // this is required, because AxPushNotificationsBase keeps track of hub connection\r\n // and to join hub group, connection is required first\r\n this.$nextTick(async () => {\r\n await pushNotificationsService.addToGroup(hubName, this.workspace.id);\r\n });\r\n },\r\n\r\n async beforeDestroy() {\r\n if (this.readonly) return;\r\n await pushNotificationsService.removeFromGroup(hubName, this.workspace.id);\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsWorkspace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsWorkspace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPushNotificationsWorkspace.vue?vue&type=template&id=3b3d374d&\"\nimport script from \"./AxPushNotificationsWorkspace.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPushNotificationsWorkspace.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:['ax-select', { 'ax-select--compact': _vm.compact }]},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.innerValue),expression:\"innerValue\"}],staticClass:\"select\",class:{ 'select--has-value': _vm.innerValue },attrs:{\"disabled\":_vm.disabled},on:{\"blur\":_vm.blurHandler,\"click\":_vm.toggle,\"keydown\":function($event){return _vm.keyHandler($event)},\"keyup\":function($event){return _vm.keyHandler($event)},\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.innerValue=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[(_vm.optionsLoading)?_c('option',{attrs:{\"value\":\"\",\"disabled\":\"\"}},[_vm._v(\" Loading... \")]):[_c('option',{staticClass:\"select__option-default\",attrs:{\"value\":\"\",\"disabled\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.defaultOptionText)+\" \")]),_vm._l((_vm.optionItems),function(option){return _c('option',{key:_vm.getOptionKey(option),attrs:{\"disabled\":_vm.isOptionDisabled(option)},domProps:{\"value\":_vm.getOptionValue(option)}},[_vm._v(\" \"+_vm._s(_vm.getOptionText(option))+\" \")])})]],2),_c('AxIcon',{staticClass:\"icon-caret\",class:{ 'open': _vm.isOpen },attrs:{\"name\":\"caret\"}}),_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.labelText)+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { getObjectValueByPath } from \"@/common/lib\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nconst optionsProp: PropOptions = {\r\n type: [Array, Function],\r\n default: () => [],\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n options: optionsProp,\r\n\r\n label: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n placeholder: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n value: {\r\n type: [Object, String, Number, Boolean],\r\n default: \"\",\r\n },\r\n\r\n defaultValue: {\r\n type: [Object, String, Number, Boolean],\r\n default: undefined,\r\n },\r\n\r\n optionKey: {\r\n type: String,\r\n default: \"value\",\r\n },\r\n\r\n optionValue: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n optionText: {\r\n type: String,\r\n default: \"text\",\r\n },\r\n\r\n optionDisabled: {\r\n type: [String, Boolean],\r\n default: \"disabled\",\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n compact: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n optionsLoading: true,\r\n optionItems: this.options,\r\n isOpen: false,\r\n };\r\n },\r\n\r\n computed: {\r\n innerValue: {\r\n get(): any {\r\n if (this.value || this.value === 0 || this.value === false) {\r\n return this.value;\r\n }\r\n return \"\";\r\n },\r\n\r\n set(value: any): any {\r\n return this.$emit(\"input\", value);\r\n },\r\n },\r\n\r\n labelText(): string {\r\n return this.label || this.placeholder;\r\n },\r\n\r\n defaultOptionText(): string {\r\n return this.placeholder || this.label;\r\n },\r\n },\r\n\r\n watch: {\r\n options: {\r\n async handler() {\r\n await this.resolveOptions();\r\n },\r\n immediate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n keyHandler(event: any) {\r\n const { keyCode } = event;\r\n const enterKeyCode = 13;\r\n const escKeyCode = 27;\r\n const spaceKeyCode = 32;\r\n\r\n if (keyCode === escKeyCode) {\r\n this.isOpen = false;\r\n } else if (keyCode === enterKeyCode) {\r\n this.toggle();\r\n } else if (keyCode === spaceKeyCode) {\r\n this.isOpen = true;\r\n }\r\n },\r\n\r\n blurHandler() {\r\n if (this.isOpen) {\r\n this.toggle();\r\n }\r\n },\r\n\r\n toggle() {\r\n this.isOpen = !this.isOpen;\r\n },\r\n\r\n async resolveOptions() {\r\n this.optionsLoading = true;\r\n this.optionItems = typeof this.optionItems === \"function\" ? await this.optionItems() : this.options;\r\n if (this.defaultValue && this.optionItems && this.optionItems.length) {\r\n for (let i = 0; i <= this.optionItems.length - 1; i++) {\r\n if (this.optionItems[i][this.optionValue] === this.defaultValue) {\r\n this.innerValue = this.optionItems[i][this.optionValue];\r\n break;\r\n }\r\n }\r\n }\r\n this.optionsLoading = false;\r\n },\r\n\r\n getOptionKey(option: any) {\r\n return getObjectValueByPath(option, this.optionKey);\r\n },\r\n\r\n getOptionValue(option: any) {\r\n if (this.optionValue) {\r\n return getObjectValueByPath(option, this.optionValue);\r\n }\r\n return option;\r\n },\r\n\r\n getOptionText(option: any) {\r\n if (this.optionText) {\r\n return getObjectValueByPath(option, this.optionText);\r\n }\r\n return option;\r\n },\r\n\r\n isOptionDisabled(option: any) {\r\n if (typeof this.optionDisabled === \"boolean\") {\r\n return this.optionDisabled;\r\n }\r\n\r\n return !!getObjectValueByPath(option, this.optionDisabled);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSelectNative.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSelectNative.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSelectNative.vue?vue&type=template&id=35e25554&scoped=true&\"\nimport script from \"./AxSelectNative.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSelectNative.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxSelectNative.vue?vue&type=style&index=0&id=35e25554&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35e25554\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxSharedWith',{attrs:{\"items\":_vm.sharedWith,\"stack-inversed\":_vm.stackInversed,\"stack-expandable\":_vm.stackExpandable,\"inversed\":_vm.inversed,\"avatar-size\":_vm.avatarSize,\"not-stacked-length\":_vm.notStackedLength,\"stack-length\":_vm.stackLength,\"root-folder-id\":_vm.workspace.rootFolderId,\"can-invite\":_vm.canInvite,\"invite-others\":_vm.inviteOthers}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./AxPerfectScrollbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPerfectScrollbar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_vm.component,{tag:\"Component\",staticClass:\"ax-shared\",class:{ 'can-invite': _vm.canInvite },attrs:{\"to\":_vm.userInvite,\"color\":\"link\"}},[_c('span',{staticClass:\"d-flex flex-row flex-nowrap\"},[_vm._l((_vm.notStacked),function(item){return _c('AxTooltip',{key:item.user.userId,attrs:{\"tooltip-placement\":\"bottom\",\"arrow\":\"\",\"title\":_vm.getUserNameOrEmail(item.user)}},[_c('AxUserAvatar',_vm._b({key:item.user.userId,staticClass:\"user-avatar\",class:{ 'user-avatar--inversed': _vm.inversed }},'AxUserAvatar',_vm.avatarProps(item),false))],1)}),(_vm.remaining.length > 0)?_c('AxTooltip',{attrs:{\"tooltip-placement\":\"bottom\",\"arrow\":\"\",\"persist-on-hover\":_vm.remaining.length > 0},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('span',{staticClass:\"ax-user-avatar user-avatar\"},[_c('div',{staticClass:\"ax-more-users-in-workspace\",style:(_vm.inviteUsersButtonStyle)},[_c('span',{staticClass:\"ax-more-users-in-workspace-text\"},[_vm._v(\" +\"+_vm._s(_vm.remaining.length)+\" \")])])])]},proxy:true},{key:\"tooltip\",fn:function(){return [_c('AxPerfectScrollbar',{staticClass:\"remaining-users-tooltip text-start\"},_vm._l((_vm.remaining),function(remainingItem){return _c('div',{key:remainingItem.user.userId,staticClass:\"user-in-tooltip\"},[_vm._v(\" \"+_vm._s(_vm.getUserNameOrEmail(remainingItem.user))+\" \")])}),0)]},proxy:true}],null,false,3354043967)}):_vm._e(),(_vm.canInvite && _vm.inviteOthers)?_c('span',{staticClass:\"ax-user-avatar user-avatar ax-invite-users-to-workspace-btn\"},[_c('AxTooltip',{attrs:{\"title\":\"Invite Others\",\"arrow\":\"\"}},[_c('div',{staticClass:\"ax-invite-users-to-workspace\",style:(_vm.inviteUsersButtonStyle)},[_c('span',{staticClass:\"ax-invite-users-to-workspace-text\"},[_c('AxIcon',{attrs:{\"name\":\"add\"}})],1)])])],1):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport PerfectScrollbar from \"perfect-scrollbar\";\r\nimport Vue, { VNode } from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n options: {\r\n type: Object,\r\n required: false,\r\n default: () => ({}),\r\n },\r\n\r\n tag: {\r\n type: String,\r\n required: false,\r\n default: \"div\",\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n ps: undefined as PerfectScrollbar | undefined,\r\n };\r\n },\r\n\r\n mounted() {\r\n // delay initialization of perfect-scrollbar due to left-side scrollbars rendering bug\r\n // https://github.com/mdbootstrap/perfect-scrollbar/issues/792\r\n window.setTimeout(() => {\r\n if (!(this.ps && this.$isServer)) {\r\n const container = this.$refs.container as HTMLElement | undefined;\r\n if (container) {\r\n this.ps = new PerfectScrollbar(container, this.options);\r\n }\r\n }\r\n }, 0);\r\n },\r\n\r\n updated() {\r\n this.update();\r\n },\r\n\r\n beforeDestroy() {\r\n this.destroy();\r\n },\r\n\r\n methods: {\r\n update() {\r\n if (this.ps) {\r\n this.ps.update();\r\n }\r\n },\r\n destroy() {\r\n if (this.ps) {\r\n this.ps.destroy();\r\n this.ps = undefined;\r\n }\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n return h(\r\n this.tag,\r\n {\r\n ref: \"container\",\r\n on: this.$listeners,\r\n },\r\n this.$slots.default\r\n );\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPerfectScrollbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPerfectScrollbar.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-avatar-stack\",class:_vm.classes},[_vm._t(\"default\",function(){return _vm._l((_vm.items),function(item){return _c('AxUserAvatar',_vm._b({key:item.user.userId},'AxUserAvatar',_vm.avatarProps(item),false))})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { SharedFilesystemMappingJs } from \"@shared/models\";\r\n\r\nimport AxUserAvatar from \"@/components/AxUserAvatar.vue\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxUserAvatar,\r\n },\r\n\r\n props: {\r\n items: arrayProp(),\r\n\r\n inversed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n expandable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n avatarSize: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n },\r\n\r\n computed: {\r\n classes(): Record {\r\n return {\r\n \"ax-avatar-stack--inversed\": this.inversed,\r\n \"ax-avatar-stack--expandable\": this.expandable,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n avatarProps(item: SharedFilesystemMappingJs) {\r\n return {\r\n user: item.user,\r\n title: item.user.userEmail,\r\n w: this.avatarSize,\r\n h: this.avatarSize,\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatarStack.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatarStack.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxUserAvatarStack.vue?vue&type=template&id=7b38f26b&scoped=true&\"\nimport script from \"./AxUserAvatarStack.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxUserAvatarStack.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxUserAvatarStack.vue?vue&type=style&index=0&id=7b38f26b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b38f26b\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { SharedFilesystemMappingJs, SsoResponse } from \"@shared/models\";\r\n\r\nimport { getUserName } from \"@/common/axshare\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxList from \"@/components/AxList.vue\";\r\nimport AxListItem from \"@/components/AxListItem.vue\";\r\nimport AxMenu from \"@/components/AxMenu.vue\";\r\nimport AxPerfectScrollbar from \"@/components/AxPerfectScrollbar.vue\";\r\nimport AxTooltip from \"@/components/AxTooltip.vue\";\r\nimport AxUserAvatar from \"@/components/AxUserAvatar.vue\";\r\nimport AxUserAvatarStack from \"@/components/AxUserAvatarStack.vue\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxIcon,\r\n AxList,\r\n AxListItem,\r\n AxMenu,\r\n AxPerfectScrollbar,\r\n AxTooltip,\r\n AxUserAvatar,\r\n AxUserAvatarStack,\r\n },\r\n\r\n props: {\r\n items: arrayProp(),\r\n\r\n notStackedLength: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n stackLength: {\r\n type: Number,\r\n default: 3,\r\n },\r\n\r\n inversed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n stackExpandable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n stackInversed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n avatarSize: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n\r\n rootFolderId: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n canInvite: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n inviteOthers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n menuOpened: false,\r\n };\r\n },\r\n\r\n computed: {\r\n component(): string {\r\n return this.canInvite ? \"AxButton\" : \"div\";\r\n },\r\n\r\n notStacked(): SharedFilesystemMappingJs[] {\r\n const from = 0;\r\n const to = this.notStackedLength;\r\n const sliced = this.items.slice(from, to);\r\n return this.inversed ? sliced.reverse() : sliced;\r\n },\r\n\r\n stacked(): SharedFilesystemMappingJs[] {\r\n const from = this.notStacked.length;\r\n const to = from + this.stackLength;\r\n const sliced = this.items.slice(from, to);\r\n return this.inversed || this.stackInversed ? sliced.reverse() : sliced;\r\n },\r\n\r\n remaining(): SharedFilesystemMappingJs[] {\r\n const from = this.notStacked.length + this.stacked.length;\r\n const sliced = this.items.slice(from);\r\n return this.inversed ? sliced.reverse() : sliced;\r\n },\r\n\r\n inviteUsersButtonStyle(): Partial {\r\n return {\r\n width: this.avatarSize,\r\n height: this.avatarSize,\r\n fontSize: this.avatarSize,\r\n };\r\n },\r\n\r\n userInvite(): Location {\r\n return {\r\n name: ROUTES[\"fs.node.userinvite\"].name,\r\n params: { id: this.rootFolderId },\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n displayName(item: SharedFilesystemMappingJs) {\r\n return `${item.user.bio} ${item.user.nickname} ${item.user.userEmail}`;\r\n },\r\n\r\n avatarProps(item: SharedFilesystemMappingJs) {\r\n return {\r\n hideTitle: true,\r\n user: item.user,\r\n w: this.avatarSize,\r\n h: this.avatarSize,\r\n };\r\n },\r\n\r\n getUserNameOrEmail(user: SsoResponse): string {\r\n return getUserName(user) || user.userEmail;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSharedWith.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSharedWith.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSharedWith.vue?vue&type=template&id=7ed0d852&scoped=true&\"\nimport script from \"./AxSharedWith.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSharedWith.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxSharedWith.vue?vue&type=style&index=0&id=7ed0d852&prod&lang=scss&\"\nimport style1 from \"./AxSharedWith.vue?vue&type=style&index=1&id=7ed0d852&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7ed0d852\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VueConstructor } from \"vue\";\r\n\r\nimport { workspaceMembersMixin } from \"@/mixins/WorkspaceMembers\";\r\n\r\nimport AxSharedWith from \"@/components/AxSharedWith.vue\";\r\n\r\ntype Mixins = InstanceType;\r\n\r\nexport default (Vue as VueConstructor).extend({\r\n components: {\r\n AxSharedWith,\r\n },\r\n\r\n mixins: [workspaceMembersMixin],\r\n\r\n props: {\r\n canInvite: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n notStackedLength: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n inversed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n stackExpandable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n stackInversed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n avatarSize: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n\r\n stackLength: {\r\n type: Number,\r\n default: 3,\r\n },\r\n\r\n inviteOthers: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSharedWithWorkspace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSharedWithWorkspace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSharedWithWorkspace.vue?vue&type=template&id=9913a1a6&\"\nimport script from \"./AxSharedWithWorkspace.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSharedWithWorkspace.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"comments-link\"},[_c(!_vm.navigationDisabled ? 'router-link' : 'span',{tag:\"Component\",attrs:{\"to\":_vm.viewCommentsRoute}},[_c('span',{class:_vm.commentsClasses},[_vm._v(\" \"+_vm._s(_vm.commentsCountMessage)+\" \")]),(_vm.hasUnreadCommentsMentions)?_c('AxUnreadMentionsIndicator'):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport {\r\n isShortcutNode,\r\n isFilesystemFolderNode,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeFolder,\r\n FilesystemNodeType,\r\n getUnreadCommentMentions,\r\n} from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxUnreadMentionsIndicator from \"@/components/AxUnreadMentionsIndicator.vue\";\r\n\r\nconst projectProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isShortcutNode(item) || isFilesystemFolderNode(item);\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxUnreadMentionsIndicator,\r\n },\r\n\r\n props: {\r\n project: projectProp,\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n navigationDisabled(): boolean {\r\n if (this.disabled) return true;\r\n if (this.project.type === FilesystemNodeType.Shortcut) return !this.project.feedbackEnabled;\r\n if (this.project.type === FilesystemNodeType.Folder && this.project.listingNode) {\r\n return !this.project.listingNode.NotificationState?.NewCommentShortcutFeedbackEnabled;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n hasNewComments(): boolean {\r\n return !!this.project.listingNode && this.project.listingNode.NotificationState?.HasNewComments;\r\n },\r\n\r\n hasUnreadCommentsMentions(): boolean {\r\n if (!this.project.listingNode) return false;\r\n const commentsMentionsCount = getUnreadCommentMentions(this.project.listingNode.NotificationState);\r\n return commentsMentionsCount > 0;\r\n },\r\n\r\n commentsClasses(): any {\r\n const classes = [\r\n {\r\n \"new-comments\": this.hasNewComments || this.hasUnreadCommentsMentions,\r\n },\r\n \"comments-text\",\r\n ];\r\n\r\n return classes;\r\n },\r\n\r\n commentsCountMessage(): string {\r\n if (!this.project.listingNode) {\r\n return \"\";\r\n }\r\n\r\n const totalCount = this.project.listingNode?.NotificationState?.TotalCommentsCount ?? 0;\r\n\r\n // \\xa0 - unbreakable space symbol\r\n let message = `${totalCount}\\xa0comment`;\r\n if (totalCount !== 1) message += \"s\";\r\n\r\n if (this.project.listingNode.NotificationState?.NewCommentsCount) {\r\n message += `, ${this.project.listingNode.NotificationState.NewCommentsCount}\\xa0new`;\r\n }\r\n\r\n return message;\r\n },\r\n\r\n viewCommentsRoute(): Location {\r\n let shortcut = \"\";\r\n if (this.project.type === FilesystemNodeType.Shortcut) {\r\n shortcut = this.project.shortcut;\r\n } else if (this.project.type === FilesystemNodeType.Folder && this.project.listingNode) {\r\n shortcut = this.project.listingNode.NotificationState?.NewCommentShortcut;\r\n }\r\n\r\n return {\r\n name: ROUTES[\"project.comments\"].name,\r\n params: { shortcut: shortcut || this.project.id },\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutCommentsCount.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutCommentsCount.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxShortcutCommentsCount.vue?vue&type=template&id=604e126e&scoped=true&\"\nimport script from \"./AxShortcutCommentsCount.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxShortcutCommentsCount.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxShortcutCommentsCount.vue?vue&type=style&index=0&id=604e126e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"604e126e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-shortcut-dropdown-button\"},[_c('AxDropdownButton',{scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('AxButton',{staticClass:\"ax-filesystem__item-options-button\",attrs:{\"block\":\"\",\"color\":\"link\",\"medium\":\"\"},on:{\"click\":_vm.lazyLoadNode}},[_c('AxIcon',{staticClass:\"options-toggle\",attrs:{\"name\":\"overflow-vertical\"}})],1)]},proxy:true}])},[_c('AxList',[_c('AxListItem',[(_vm.options.canMove)?_c('AxButton',{attrs:{\"color\":\"link\",\"medium\":\"\"},on:{\"click\":function($event){_vm.moving = true}}},[_vm._v(\" Move \")]):_vm._e()],1),_c('AxListItem',[(_vm.options.canRename)?_c('AxButton',{attrs:{\"color\":\"link\",\"medium\":\"\"},on:{\"click\":function($event){_vm.renaming = true}}},[_vm._v(\" Rename \")]):_vm._e()],1),_c('AxListItem',[(_vm.options.canClone)?_c('AxButton',{attrs:{\"color\":\"link\",\"medium\":\"\"},on:{\"click\":function($event){_vm.cloning = true}}},[_vm._v(\" Duplicate \")]):_vm._e()],1),_c('AxListItem',[(_vm.options.canUpload)?_c('AxButton',{attrs:{\"color\":\"link\",\"medium\":\"\"},on:{\"click\":function($event){_vm.uploading = true}}},[_vm._v(\" Upload \")]):_vm._e()],1),_c('AxListItem',[(_vm.options.canDownload)?_c('AxProjectFileDownload',{attrs:{\"item\":_vm.project,\"link-text\":\"Download\"}}):_vm._e()],1),_c('AxListItem',[(_vm.options.canDelete)?_c('AxButton',{attrs:{\"color\":\"link\",\"medium\":\"\"},on:{\"click\":function($event){_vm.deleting = true}}},[_vm._v(\" Delete \")]):_vm._e()],1)],1)],1),_c('AxShortcutFilesystemActions',{attrs:{\"options\":_vm.shortcutActionsOptions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport {\r\n FilesystemNodeShortcut,\r\n isShortcutNode,\r\n ShortcutState,\r\n isShortcutSearchNode,\r\n NodeOptions,\r\n getNodeOptions,\r\n} from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { ShortcutType } from \"@/services/models\";\r\nimport { FetchCurrent, NavigationRestore } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDropdownButton from \"@/components/AxDropdownButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxList from \"@/components/AxList.vue\";\r\nimport AxListItem from \"@/components/AxListItem.vue\";\r\nimport AxProjectFileDownload from \"@/components/AxProjectFileDownload.vue\";\r\nimport AxShortcutFilesystemActions, { ShortcutActionsOptions } from \"@/components/AxShortcutFilesystemActions.vue\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\ninterface Options extends NodeOptions {\r\n canClone: boolean;\r\n canRename: boolean;\r\n canDownload: boolean;\r\n canUpload: boolean;\r\n}\r\n\r\nconst projectProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isShortcutNode(item);\r\n },\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDropdownButton,\r\n AxButton,\r\n AxIcon,\r\n AxList,\r\n AxListItem,\r\n AxProjectFileDownload,\r\n AxShortcutFilesystemActions,\r\n },\r\n\r\n props: {\r\n project: projectProp,\r\n refreshDisabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n moving: false,\r\n deleting: false,\r\n cloning: false,\r\n renaming: false,\r\n uploading: false,\r\n };\r\n },\r\n\r\n computed: {\r\n isUploadable(): boolean {\r\n const uploadableTypes = [ShortcutType.Rp, ShortcutType.Lib];\r\n let projectType: ShortcutType | undefined;\r\n if (isShortcutSearchNode(this.project)) {\r\n projectType = this.project.subtype;\r\n } else {\r\n projectType = this.project.shortcutType;\r\n }\r\n return this.project.viewOnly === false && uploadableTypes.some(type => projectType === type);\r\n },\r\n\r\n isDownloadable(): boolean {\r\n const downloadableTypes = [ShortcutType.Rp, ShortcutType.TeamRp, ShortcutType.Lib, ShortcutType.TeamLib];\r\n let projectType: ShortcutType | undefined;\r\n if (isShortcutSearchNode(this.project)) {\r\n projectType = this.project.subtype;\r\n // eslint-disable-next-line no-else-return\r\n } else {\r\n projectType = this.project.shortcutType;\r\n }\r\n return (\r\n this.project.viewOnly === false\r\n && downloadableTypes.some(type => projectType === type)\r\n && this.project.shortcutState === ShortcutState.Ok\r\n );\r\n },\r\n\r\n isCloneable(): boolean {\r\n if (!isShortcutSearchNode(this.project)) {\r\n const cloneableTypes = [ShortcutType.Rp, ShortcutType.Lib];\r\n const projectType = this.project.shortcutType;\r\n return cloneableTypes.some(type => projectType === type);\r\n }\r\n return false;\r\n },\r\n\r\n options(): Options {\r\n if (isShortcutSearchNode(this.project)) {\r\n let folderId = \"\";\r\n if (this.project.folderId) {\r\n folderId = this.project.folderId;\r\n }\r\n return {\r\n folderId,\r\n canMove: this.project.viewOnly === false,\r\n canDelete: this.project.viewOnly === false,\r\n canClone: this.isCloneable,\r\n canRename: this.project.viewOnly === false,\r\n canDownload: this.isDownloadable,\r\n canUpload: this.isUploadable,\r\n };\r\n // eslint-disable-next-line no-else-return\r\n } else {\r\n return {\r\n ...getNodeOptions(this.project.parent),\r\n canClone: this.project.viewOnly === false && this.isCloneable,\r\n canRename: this.project.viewOnly === false,\r\n canDownload: this.isDownloadable,\r\n canUpload: this.isUploadable,\r\n };\r\n }\r\n },\r\n\r\n shortcutActionsOptions(): ShortcutActionsOptions {\r\n return {\r\n move: {\r\n show: this.moving,\r\n submit: this.moveSubmit,\r\n cancel: this.moveCancel,\r\n },\r\n\r\n delete: {\r\n show: this.deleting,\r\n submit: this.deleteSubmit,\r\n cancel: this.deleteCancel,\r\n },\r\n\r\n clone: {\r\n show: this.cloning,\r\n submit: this.cloneSubmit,\r\n cancel: this.cloneCancel,\r\n },\r\n\r\n rename: {\r\n show: this.renaming,\r\n submit: this.renameSubmit,\r\n cancel: this.renameCancel,\r\n },\r\n\r\n upload: {\r\n show: this.uploading,\r\n submit: this.uploadSubmit,\r\n cancel: this.uploadCancel,\r\n },\r\n\r\n folderId: this.options.folderId,\r\n items: [this.project],\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n async lazyLoadNode() {\r\n if (!this.$store.getters.getFsNode(this.project.id)) {\r\n await this.$store.dispatch(new NavigationRestore(this.project.id, \"shortcut\"));\r\n }\r\n },\r\n\r\n async moveSubmit() {\r\n this.moving = false;\r\n this.$emit(\"modified\");\r\n this.$emit(\"moved\", this.project);\r\n if (!this.refreshDisabled) {\r\n await this.refresh();\r\n }\r\n },\r\n\r\n moveCancel() {\r\n this.moving = false;\r\n },\r\n\r\n async deleteSubmit() {\r\n this.deleting = false;\r\n this.$emit(\"modified\");\r\n this.$emit(\"deleted\", this.project);\r\n },\r\n\r\n deleteCancel() {\r\n this.deleting = false;\r\n },\r\n\r\n async cloneSubmit() {\r\n this.cloning = false;\r\n this.$emit(\"modified\");\r\n this.$emit(\"cloned\", this.project);\r\n if (!this.refreshDisabled) {\r\n await this.refresh();\r\n }\r\n },\r\n\r\n cloneCancel() {\r\n this.cloning = false;\r\n },\r\n\r\n async renameSubmit() {\r\n this.renaming = false;\r\n this.$emit(\"modified\");\r\n this.$emit(\"renamed\", this.project);\r\n if (!this.refreshDisabled) {\r\n await this.refresh();\r\n }\r\n },\r\n\r\n renameCancel() {\r\n this.renaming = false;\r\n },\r\n\r\n async uploadSubmit() {\r\n this.uploading = false;\r\n await this.$router.push({\r\n name: ROUTES[\"project.overview\"].name,\r\n params: {\r\n shortcut: !isShortcutSearchNode(this.project) ? this.project.shortcut : this.project.id,\r\n },\r\n });\r\n },\r\n\r\n uploadCancel() {\r\n this.uploading = false;\r\n },\r\n\r\n async refresh() {\r\n await this.$store.dispatch(new FetchCurrent());\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutDropdownButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutDropdownButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxShortcutDropdownButton.vue?vue&type=template&id=3ec85c7a&scoped=true&\"\nimport script from \"./AxShortcutDropdownButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxShortcutDropdownButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxShortcutDropdownButton.vue?vue&type=style&index=0&id=3ec85c7a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec85c7a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.options.move.show)?_c('AxDialog',{attrs:{\"lazy\":\"\"},on:{\"after-leave\":_vm.options.move.cancel},model:{value:(_vm.options.move.show),callback:function ($$v) {_vm.$set(_vm.options.move, \"show\", $$v)},expression:\"options.move.show\"}},[_c('AxFilesystemNodeMove',{attrs:{\"folder\":_vm.options.folderId,\"items\":_vm.options.items},on:{\"submit\":_vm.options.move.submit}})],1):_vm._e(),(_vm.options.delete.show)?_c('AxFilesystemNodeDelete',{attrs:{\"folder\":_vm.options.folderId,\"items\":_vm.options.items},on:{\"submit\":_vm.options.delete.submit,\"cancel\":_vm.options.delete.cancel}}):_vm._e(),(_vm.options.clone.show)?_c('AxDialog',{attrs:{\"lazy\":\"\"},on:{\"after-leave\":_vm.options.clone.cancel},model:{value:(_vm.options.clone.show),callback:function ($$v) {_vm.$set(_vm.options.clone, \"show\", $$v)},expression:\"options.clone.show\"}},[_c('AxFilesystemNodeClone',{attrs:{\"folder\":_vm.options.folderId,\"item\":_vm.options.items[0]},on:{\"submit\":_vm.options.clone.submit}})],1):_vm._e(),(_vm.options.rename.show)?_c('AxDialog',{attrs:{\"lazy\":\"\"},on:{\"after-leave\":_vm.options.rename.cancel},model:{value:(_vm.options.rename.show),callback:function ($$v) {_vm.$set(_vm.options.rename, \"show\", $$v)},expression:\"options.rename.show\"}},[_c('AxFilesystemNodeRename',{attrs:{\"item\":_vm.options.items[0]},on:{\"submit\":_vm.options.rename.submit}})],1):_vm._e(),(_vm.options.upload.show)?_c('AxProjectFileUpload',{attrs:{\"shortcut\":_vm.options.items[0].id},on:{\"upload\":_vm.options.upload.submit,\"after-leave\":_vm.options.upload.cancel},model:{value:(_vm.options.upload.show),callback:function ($$v) {_vm.$set(_vm.options.upload, \"show\", $$v)},expression:\"options.upload.show\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting}){return [_c('form',[_c('div',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Duplicate Project \")]),_c('div',{staticClass:\"item-name\"},[_vm._v(\" \"+_vm._s(_vm.item.name)+\" \")]),_c('p',[_vm._v(\" Please confirm that you would like to clone this project including any plugins, redirects, and pretty URLs. \")])]),_c('AxButton',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"block\":\"\",\"large\":\"\",\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Duplicate \")])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeClonable } from \"@/common/fs\";\r\nimport { cloneShortcut } from \"@/services/project.service\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nconst item: PropValidator = {\r\n type: Object,\r\n required: true,\r\n};\r\nconst props = {\r\n item,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxButton,\r\n },\r\n\r\n props: {\r\n folder: {\r\n type: String,\r\n required: true,\r\n },\r\n ...props,\r\n },\r\n\r\n data() {\r\n return {\r\n selected: null,\r\n };\r\n },\r\n\r\n methods: {\r\n async submit(_: Submit) {\r\n await cloneShortcut(this.item.id, this.folder);\r\n this.$emit(\"submit\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeClone.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeClone.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodeClone.vue?vue&type=template&id=bad1c1f4&scoped=true&\"\nimport script from \"./AxFilesystemNodeClone.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodeClone.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNodeClone.vue?vue&type=style&index=0&id=bad1c1f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bad1c1f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"value\":{ selectedObj: _vm.selectedObj },\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',[_c('div',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Move Projects \")]),_c('AxFormGroup',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},_vm._l((_vm.items),function(item){return _c('div',{key:item.id,staticClass:\"item-name\"},[_vm._v(\" \"+_vm._s(item.name)+\" \")])}),0),_c('div',{staticClass:\"col-auto text-end\"},[_c('AxWorkspacesToggleAll',{model:{value:(_vm.showAll),callback:function ($$v) {_vm.showAll=$$v},expression:\"showAll\"}})],1)])]),_c('AxFormGroup',[_c('AxFilesystemTreeProjects',{attrs:{\"show-all\":_vm.showAll,\"workspaces-only\":true,\"render-default-all-item\":false},model:{value:(values.selectedObj),callback:function ($$v) {_vm.$set(values, \"selectedObj\", $$v)},expression:\"values.selectedObj\"}})],1)],1),_c('AxButton',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"block\":\"\",\"large\":\"\",\"loading\":submitting,\"disabled\":!values.selectedObj},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Move \")])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeMovable, FilesystemNodeType } from \"@/common/fs\";\r\nimport { delay } from \"@/common/lib\";\r\nimport { moveItems } from \"@/services/fs.service\";\r\nimport {\r\n Fetch, NavigationRestore, NodeRemove, WorkspacesRefresh,\r\n} from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxFilesystemTreeProjects from \"@/components/AxFilesystemTreeProjects.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxWorkspacesToggleAll from \"@/components/AxWorkspacesToggleAll.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxFormGroup,\r\n AxButton,\r\n AxFilesystemTreeProjects,\r\n AxWorkspacesToggleAll,\r\n },\r\n\r\n props: {\r\n folder: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n /* eslint-disable vue/require-default-prop */\r\n items: {\r\n type: Array,\r\n required: true,\r\n } as PropValidator,\r\n /* eslint-enable vue/require-default-prop */\r\n },\r\n\r\n data() {\r\n return {\r\n // selected: this.folder,\r\n selectedObj: null as any,\r\n showAll: false,\r\n };\r\n },\r\n\r\n methods: {\r\n async submit({ values }: Submit) {\r\n await moveItems(this.items, this.folder, values.selectedObj.id);\r\n await this.$store.dispatch(new NodeRemove(this.items, this.folder));\r\n this.$emit(\"submit\");\r\n delay(500).then(async () => {\r\n const tasks = [];\r\n for (const item of this.items) {\r\n const type = item.type === FilesystemNodeType.Shortcut ? \"shortcut\" : \"folder\";\r\n tasks.push(this.$store.dispatch(new NavigationRestore(item.id, type, true)));\r\n }\r\n await Promise.all(tasks);\r\n await this.$store.dispatch(new WorkspacesRefresh());\r\n const { node } = this.$store.getters.current;\r\n await this.$store.dispatch(new Fetch(node));\r\n });\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeMove.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeMove.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodeMove.vue?vue&type=template&id=b62463fc&scoped=true&\"\nimport script from \"./AxFilesystemNodeMove.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodeMove.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNodeMove.vue?vue&type=style&index=0&id=b62463fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b62463fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"submit\":_vm.submit,\"value\":_vm.form,\"validator\":_vm.validator},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting, validationResult }){return [_c('form',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Rename Project \")]),_c('AxFormGroup',[_c('AxInput',{attrs:{\"placeholder\":\"Project Name\",\"autofocus\":\"\",\"type\":\"text\"},model:{value:(values.name),callback:function ($$v) {_vm.$set(values, \"name\", $$v)},expression:\"values.name\"}})],1),_c('div',[_c('AxButton',{attrs:{\"disabled\":!validationResult.isValid,\"loading\":submitting,\"type\":\"submit\",\"color\":\"primary\",\"block\":\"\",\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Rename \")])],1)],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Validator } from \"lakmus\";\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport { ProjectRename } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ninterface RenameForm {\r\n name: string;\r\n}\r\n\r\nconst item: PropValidator = {\r\n type: Object,\r\n required: true,\r\n};\r\nconst props = {\r\n item,\r\n};\r\n\r\nclass RenameFormValidator extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.name)\r\n .notEmpty()\r\n .withMessage(\"Please enter project name.\");\r\n }\r\n}\r\nexport const renameFormValidator = new RenameFormValidator();\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxFormGroup,\r\n AxInput,\r\n AxButton,\r\n },\r\n\r\n props: {\r\n ...props,\r\n },\r\n data() {\r\n const form: RenameForm = { name: this.item.name };\r\n return {\r\n form,\r\n validator: renameFormValidator,\r\n };\r\n },\r\n methods: {\r\n async submit({ values }: Submit) {\r\n await this.$store.dispatch(new ProjectRename(this.item.id, values.name));\r\n this.$emit(\"submit\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeRename.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNodeRename.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNodeRename.vue?vue&type=template&id=22a1dbb0&\"\nimport script from \"./AxFilesystemNodeRename.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNodeRename.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeTypes } from \"@/common/fs\";\r\n\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxFilesystemNodeClone from \"@/components/AxFilesystemNodeClone.vue\";\r\nimport AxFilesystemNodeDelete from \"@/components/AxFilesystemNodeDelete.vue\";\r\nimport AxFilesystemNodeMove from \"@/components/AxFilesystemNodeMove.vue\";\r\nimport AxFilesystemNodeRename from \"@/components/AxFilesystemNodeRename.vue\";\r\nimport AxProjectFileUpload from \"@/components/AxProjectFileUpload.vue\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\ninterface DialogOptions {\r\n show: boolean;\r\n submit?: () => void;\r\n cancel?: () => void;\r\n}\r\nexport interface ShortcutActionsOptions {\r\n move: DialogOptions;\r\n delete: DialogOptions;\r\n clone: DialogOptions;\r\n rename: DialogOptions;\r\n upload: DialogOptions;\r\n folderId: string;\r\n items: (FilesystemNodeTypes | FilesystemSearchItem)[];\r\n}\r\n\r\nconst optionsProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDialog,\r\n AxFilesystemNodeClone,\r\n AxFilesystemNodeDelete,\r\n AxFilesystemNodeMove,\r\n AxFilesystemNodeRename,\r\n AxProjectFileUpload,\r\n },\r\n props: {\r\n options: optionsProp,\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutFilesystemActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutFilesystemActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxShortcutFilesystemActions.vue?vue&type=template&id=4a56ed3f&\"\nimport script from \"./AxShortcutFilesystemActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxShortcutFilesystemActions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('a',{attrs:{\"href\":_vm.urls.full,\"target\":\"_blank\",\"rel\":\"noopener\"},on:{\"click\":_vm.openPrototypeLink}},[_vm._t(\"default\",function(){return [_vm._v(\" \"+_vm._s(_vm.url)+\" \")]},{\"url\":_vm.url})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue, { VueConstructor } from \"vue\";\r\n\r\nimport { shortcutLinkMixin } from \"@/mixins/ShortcutLink\";\r\n\r\ntype Mixins = InstanceType;\r\n\r\nexport default (Vue as VueConstructor).extend({\r\n mixins: [shortcutLinkMixin],\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxShortcutLink.vue?vue&type=template&id=27bdf86d&\"\nimport script from \"./AxShortcutLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxShortcutLink.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-shortcut-modified\"},[(_vm.project || (_vm.projectId && _vm.state))?[_c('RouterLink',{attrs:{\"to\":_vm.historyTabRoute}},[_c('AxProjectState',{attrs:{\"project\":_vm.project,\"project-id\":_vm.projectId,\"project-state\":_vm.state},scopedSlots:_vm._u([{key:\"generated\",fn:function(){return [(_vm.modified)?_c('AxDate',{attrs:{\"value\":_vm.modified,\"format\":\"PP\"}}):_vm._e()]},proxy:true}],null,false,696598439)})],1)]:(_vm.modified)?[(_vm.modified)?_c('AxDate',{attrs:{\"value\":_vm.modified,\"format\":\"PP\"}}):_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeShortcut, isShortcutNode } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxDate from \"@/components/AxDate.vue\";\r\nimport AxProjectState from \"@/components/AxProjectState.vue\";\r\n\r\nconst projectProp: PropValidator = {\r\n type: Object,\r\n required: false,\r\n validator(item) {\r\n return isShortcutNode(item);\r\n },\r\n};\r\nconst projectModifiedProp = {\r\n type: [Date, String],\r\n required: false,\r\n};\r\nconst projectStateProp = {\r\n type: String,\r\n required: false,\r\n};\r\nconst projectIdProp = {\r\n type: String,\r\n required: false,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxProjectState,\r\n AxDate,\r\n },\r\n\r\n props: {\r\n project: projectProp,\r\n projectId: projectIdProp,\r\n projectModified: projectModifiedProp,\r\n projectState: projectStateProp,\r\n },\r\n\r\n computed: {\r\n modified(): Date | string | undefined {\r\n if (this.project) {\r\n return this.project.updated;\r\n }\r\n\r\n return this.projectModified;\r\n },\r\n\r\n historyTabRoute(): Location {\r\n return {\r\n name: ROUTES[\"project.history\"].name,\r\n params: { shortcut: this.projectId || this.project.id },\r\n };\r\n },\r\n\r\n state(): string {\r\n if (this.projectModified) {\r\n return \"Ok\";\r\n }\r\n return this.projectState;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutModified.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutModified.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxShortcutModified.vue?vue&type=template&id=77f44868&scoped=true&\"\nimport script from \"./AxShortcutModified.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxShortcutModified.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxShortcutModified.vue?vue&type=style&index=0&id=77f44868&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77f44868\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-shortcut-link text-nowrap\"},[(_vm.linkDisabled)?_c('span',{staticClass:\"allow-navigation\"},[_vm._v(\" \"+_vm._s(_vm.shortcutId)+\" \")]):_c('AxShortcutLink',{attrs:{\"project\":_vm.project,\"full\":_vm.full},scopedSlots:_vm._u([{key:\"default\",fn:function({ url }){return [_c('span',{staticClass:\"ax-shortcut-link__segments\"},[_c('span',{staticClass:\"ax-shortcut-link__shortcut\"},[_vm._t(\"default\",function(){return [_vm._v(\" \"+_vm._s(_vm.shortcutId)+\" \")]},{\"url\":url})],2)])]}}],null,true)}),(!_vm.linkDisabled)?_c('AxCopyToClipboard',{attrs:{\"value\":_vm.urlFull},scopedSlots:_vm._u([{key:\"default\",fn:function({ copy, delay }){return [_c('AxButton',{ref:\"copyButton\",staticClass:\"copy-button\",attrs:{\"color\":\"transparent\",\"small\":\"\"},on:{\"click\":copy}},[_c('AxIcon',{attrs:{\"name\":\"copy-link-flipped\"}})],1),(delay)?_c('AxTooltip',{attrs:{\"tooltip-placement\":\"bottom\",\"arrow\":\"\",\"title\":\"Copied\",\"reference\":_vm.$refs.copyButton}}):_vm._e()]}}],null,false,4023868724)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropValidator } from \"vue/types/options\";\r\n\r\nimport { PrototypeUrls } from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut, isShortcutNode } from \"@/common/fs\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxCopyToClipboard from \"@/components/AxCopyToClipboard.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxShortcutLink from \"@/components/AxShortcutLink.vue\";\r\nimport AxTooltip from \"@/components/AxTooltip.vue\";\r\n\r\nconst projectProp: PropValidator = {\r\n type: Object,\r\n required: true,\r\n validator(item) {\r\n return isShortcutNode(item);\r\n },\r\n};\r\n\r\nconst prototypeUrlsProp = {\r\n type: Object,\r\n required: false,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxCopyToClipboard,\r\n AxShortcutLink,\r\n AxIcon,\r\n AxTooltip,\r\n },\r\n\r\n props: {\r\n project: projectProp,\r\n prototypeUrls: prototypeUrlsProp,\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n full: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n urls(): PrototypeUrls {\r\n if (this.prototypeUrls) {\r\n return this.prototypeUrls;\r\n }\r\n return this.$store.getters.prototypeUrls(this.project);\r\n },\r\n\r\n urlFull(): string {\r\n return this.urls.full.toLowerCase();\r\n },\r\n\r\n urlDisplay(): string {\r\n return this.urls.display.toLowerCase();\r\n },\r\n\r\n shortcutId(): string {\r\n return this.project.shortcut || this.project.id;\r\n },\r\n\r\n linkDisabled(): boolean {\r\n return this.project.isUserOnly || this.disabled;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutPublicLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxShortcutPublicLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxShortcutPublicLink.vue?vue&type=template&id=00776d42&scoped=true&\"\nimport script from \"./AxShortcutPublicLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxShortcutPublicLink.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxShortcutPublicLink.vue?vue&type=style&index=0&id=00776d42&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00776d42\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('label',{staticClass:\"ax-toggle-button\",class:_vm.className},[_c('input',{staticClass:\"switch-input\",attrs:{\"type\":\"checkbox\",\"name\":_vm.name,\"disabled\":_vm.disabled},domProps:{\"checked\":_vm.toggled},on:{\"change\":function($event){$event.stopPropagation();return _vm.toggle.apply(null, arguments)}}}),_c('div',{class:['switch-core', {'switch-core--large': _vm.large}],style:({backgroundColor: _vm.toggleColor})},[_c('div',{staticClass:\"switch-button\"})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n name: {\r\n type: String,\r\n default: \"AxToggleButton\",\r\n },\r\n colorChecked: {\r\n type: String,\r\n default: \"#C7E5F5\",\r\n },\r\n colorUnchecked: {\r\n type: String,\r\n default: \"#a0aec0\",\r\n },\r\n large: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n toggled: !!this.value,\r\n };\r\n },\r\n\r\n computed: {\r\n className(): Record {\r\n return {\r\n toggled: this.toggled,\r\n disabled: this.disabled,\r\n };\r\n },\r\n toggleColor(): String {\r\n if (this.toggled) {\r\n return this.colorChecked;\r\n }\r\n\r\n return this.colorUnchecked;\r\n },\r\n },\r\n\r\n watch: {\r\n value(value) {\r\n this.toggled = !!value;\r\n },\r\n },\r\n\r\n methods: {\r\n toggle(event: any) {\r\n this.toggled = !this.toggled;\r\n this.$emit(\"input\", this.toggled);\r\n this.$emit(\"change\", {\r\n value: this.toggled,\r\n srcEvent: event,\r\n });\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxToggleButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxToggleButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxToggleButton.vue?vue&type=template&id=d781d14a&scoped=true&\"\nimport script from \"./AxToggleButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxToggleButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxToggleButton.vue?vue&type=style&index=0&id=d781d14a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d781d14a\",\n null\n \n)\n\nexport default component.exports","\r\nimport { createPopper, Instance, Placement } from \"@popperjs/core\";\r\nimport flip from \"@popperjs/core/lib/modifiers/flip\";\r\nimport preventOverflow from \"@popperjs/core/lib/modifiers/preventOverflow\";\r\nimport { Wormhole } from \"portal-vue\";\r\nimport Vue, { VNode, VNodeData } from \"vue\";\r\n\r\nconst ctx = {\r\n axTooltipIsShown: false,\r\n axTooltipUseTimeout: true,\r\n popperJsInstance: undefined as Instance | undefined,\r\n timeoutBeforeShowing: undefined as NodeJS.Timeout | undefined,\r\n timeoutBeforeHiding: undefined as NodeJS.Timeout | undefined,\r\n};\r\n\r\nexport default Vue.extend({\r\n props: {\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n title: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n\r\n timeout: {\r\n type: Number,\r\n required: false,\r\n default: 0,\r\n },\r\n\r\n tooltipPlacement: {\r\n type: String,\r\n required: false,\r\n default: \"bottom\",\r\n },\r\n\r\n offset: {\r\n type: Number,\r\n required: false,\r\n default: 10,\r\n },\r\n\r\n arrow: {\r\n type: Boolean,\r\n required: false,\r\n default: false,\r\n },\r\n\r\n tooltipClasses: {\r\n type: Object,\r\n required: false,\r\n default: () => ({}),\r\n },\r\n\r\n persistOnHover: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n reference: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n tooltip: undefined as VNode | undefined,\r\n preventHiding: false,\r\n leaveTimeout: 50,\r\n };\r\n },\r\n\r\n beforeDestroy() {\r\n this.hideTooltip();\r\n },\r\n\r\n mounted() {\r\n let targetFromReference = this.reference as Vue | Element | undefined;\r\n\r\n if (targetFromReference && !(targetFromReference instanceof Element)) {\r\n targetFromReference = targetFromReference.$el;\r\n }\r\n\r\n if (targetFromReference) {\r\n this.initShowTooltip(targetFromReference);\r\n }\r\n },\r\n\r\n methods: {\r\n async onMouseEnter(e: Event) {\r\n const targetElement = e.target as Element;\r\n\r\n await this.initShowTooltip(targetElement);\r\n },\r\n\r\n onMouseLeave() {\r\n this.initHideTooltip();\r\n },\r\n\r\n async onFocus(e: Event) {\r\n const targetElement = e.target as Element;\r\n\r\n await this.initShowTooltip(targetElement);\r\n },\r\n\r\n onBlur() {\r\n this.initHideTooltip();\r\n },\r\n\r\n async initShowTooltip(targetElement: Element) {\r\n if (ctx.axTooltipUseTimeout) {\r\n ctx.timeoutBeforeShowing = setTimeout(async () => {\r\n await this.showTooltip(targetElement, true);\r\n }, this.timeout);\r\n } else {\r\n if (ctx.timeoutBeforeHiding) {\r\n clearTimeout(ctx.timeoutBeforeHiding);\r\n }\r\n await this.showTooltip(targetElement);\r\n }\r\n },\r\n\r\n async showTooltip(targetElement: Element, fadein?: boolean) {\r\n if (this.tooltip) {\r\n // previous tooltip is not hidden\r\n if (ctx.axTooltipIsShown) {\r\n await this.hideTooltip();\r\n }\r\n\r\n ctx.axTooltipIsShown = true;\r\n\r\n Wormhole.open({ to: \"tooltips-area\", from: \"tooltip-component\", passengers: [this.tooltip] });\r\n // https://portal-vue.linusb.org/guide/caveats.html#provide-inject\r\n // workaround to get elements from refs\r\n await this.$nextTick();\r\n await this.$nextTick();\r\n\r\n const tooltipElement = this.$refs.tooltipMessage as HTMLElement;\r\n\r\n if (targetElement && tooltipElement) {\r\n const tooltipPlacement = this.getPopupPlacementFromString(this.tooltipPlacement);\r\n\r\n if (fadein) {\r\n tooltipElement.classList.add(\"fade-in\");\r\n } else {\r\n tooltipElement.classList.remove(\"fade-in\");\r\n }\r\n\r\n ctx.popperJsInstance = createPopper(targetElement, tooltipElement, {\r\n placement: tooltipPlacement,\r\n modifiers: [\r\n preventOverflow,\r\n flip,\r\n {\r\n name: \"offset\",\r\n options: {\r\n offset: [0, this.offset],\r\n },\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n },\r\n\r\n async initHideTooltip() {\r\n if (ctx.timeoutBeforeShowing) {\r\n clearTimeout(ctx.timeoutBeforeShowing);\r\n }\r\n\r\n ctx.axTooltipUseTimeout = false;\r\n\r\n if (this.leaveTimeout === 0 && this.timeout === 0) {\r\n await this.hideTooltip();\r\n } else {\r\n ctx.timeoutBeforeHiding = setTimeout(async () => {\r\n if (this.preventHiding) return;\r\n\r\n if (ctx.axTooltipIsShown) {\r\n await this.hideTooltip();\r\n }\r\n\r\n ctx.axTooltipUseTimeout = true;\r\n }, this.leaveTimeout);\r\n }\r\n },\r\n\r\n async hideTooltip() {\r\n ctx.axTooltipIsShown = false;\r\n\r\n if (ctx.popperJsInstance) {\r\n ctx.popperJsInstance.destroy();\r\n ctx.popperJsInstance = undefined;\r\n }\r\n\r\n Wormhole.close({ to: \"tooltips-area\", from: \"tooltip-component\" });\r\n await this.$nextTick();\r\n await this.$nextTick();\r\n },\r\n\r\n genTooltip(): VNode {\r\n const data: VNodeData = {\r\n class: {\r\n \"tooltip-message\": true,\r\n ...this.tooltipClasses,\r\n },\r\n on: {\r\n mouseenter: () => {\r\n if (this.persistOnHover) {\r\n this.preventHiding = true;\r\n }\r\n },\r\n mouseleave: () => {\r\n if (this.persistOnHover) {\r\n this.preventHiding = false;\r\n this.initHideTooltip();\r\n }\r\n },\r\n },\r\n ref: \"tooltipMessage\",\r\n };\r\n\r\n const tooltipFromTitle = this.$createElement(\"span\", [this.title]);\r\n\r\n const tooltipContent = this.$scopedSlots.tooltip ? this.$scopedSlots.tooltip({}) : tooltipFromTitle;\r\n\r\n const children = [tooltipContent];\r\n\r\n if (this.arrow) {\r\n const arrowElement = this.$createElement(\"div\", {\r\n class: { arrow: true },\r\n attrs: { \"data-popper-arrow\": \"data-popper-arrow\" },\r\n });\r\n\r\n children.push(arrowElement);\r\n }\r\n\r\n return this.$createElement(\"div\", data, children);\r\n },\r\n getPopupPlacementFromString(value: string): Placement {\r\n switch (value) {\r\n case \"bottom\":\r\n return \"bottom\";\r\n case \"top\":\r\n return \"top\";\r\n case \"left\":\r\n return \"left\";\r\n case \"right\":\r\n return \"right\";\r\n default:\r\n return \"bottom\";\r\n }\r\n },\r\n\r\n assignTooltipEvents(content: VNode, tooltipEvents: { [key: string]: Function | Function[] }) {\r\n const tooltipElement: VNode = Array.isArray(content) ? content[0] : content;\r\n\r\n let data: VNodeData = {};\r\n\r\n if (tooltipElement.data) {\r\n const oldData = tooltipElement.data;\r\n\r\n if (oldData.on) {\r\n oldData.on = {\r\n ...oldData.on,\r\n ...tooltipEvents,\r\n };\r\n data = { ...oldData };\r\n } else {\r\n data = {\r\n ...oldData,\r\n on: tooltipEvents,\r\n };\r\n }\r\n } else {\r\n data = {\r\n on: tooltipEvents,\r\n };\r\n }\r\n\r\n tooltipElement.data = data;\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n const tooltipEvents = {\r\n mouseenter: this.onMouseEnter,\r\n mouseleave: this.onMouseLeave,\r\n focus: this.onFocus,\r\n blur: this.onBlur,\r\n };\r\n\r\n const content = (this.$scopedSlots.default\r\n && ((this.$scopedSlots.default({ tooltipEvents }) as unknown) as VNode)\r\n ) || h(\"\");\r\n\r\n if (this.disabled) {\r\n return content;\r\n }\r\n\r\n this.tooltip = this.genTooltip();\r\n\r\n if (!this.reference) {\r\n this.assignTooltipEvents(content, tooltipEvents);\r\n }\r\n\r\n return content;\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxTooltip.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxTooltip.vue?vue&type=style&index=0&id=699f7a50&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"699f7a50\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxTooltip.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-unread-mentions-indicator\",attrs:{\"title\":\"You have unread mentions\"}},[_c('AxIcon',{staticClass:\"unread-mentions-dot\",attrs:{\"name\":\"dot\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUnreadMentionsIndicator.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUnreadMentionsIndicator.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxUnreadMentionsIndicator.vue?vue&type=template&id=c5321bb0&scoped=true&\"\nimport script from \"./AxUnreadMentionsIndicator.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxUnreadMentionsIndicator.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxUnreadMentionsIndicator.vue?vue&type=style&index=0&id=c5321bb0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5321bb0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-user\"},[_c('AxUserAvatar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAvatar),expression:\"showAvatar\"}],staticClass:\"ax-user__user-avatar\",attrs:{\"user\":_vm.user,\"profile-img\":_vm.profileImg,\"w\":_vm.w,\"h\":_vm.h}}),(_vm.user)?_c('span',{staticClass:\"ax-user__user-name\",class:_vm.usernameClasses,attrs:{\"title\":_vm.user.userEmail}},[(_vm.showUsername)?[_vm._v(\" \"+_vm._s(_vm.userName)+\" \")]:_vm._e(),(_vm.showNotificationBadge)?_c('AxIcon',{staticClass:\"notification-badge\",attrs:{\"name\":\"dot\"}}):_vm._e(),_vm._t(\"append\")],2):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { SsoResponse } from \"@shared/models\";\r\n\r\nimport { getUserName } from \"@/common/axshare\";\r\nimport { UserProfile } from \"@/services/models/account\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxUserAvatar from \"@/components/AxUserAvatar.vue\";\r\n\r\nconst userProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nconst profileProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nconst props = {\r\n user: userProp,\r\n profile: profileProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxUserAvatar,\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n showAvatar: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n showUsername: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n\r\n usernameClasses: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n showNotificationBadge: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n w: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n\r\n h: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n\r\n ...props,\r\n },\r\n\r\n computed: {\r\n userName(): string {\r\n return getUserName(this.profile) || this.user.userEmail || \"\";\r\n },\r\n\r\n profileImg(): string {\r\n let profileImg = this.profile.Img || \"\";\r\n if (!profileImg) {\r\n profileImg = this.user.profileImageUrl || \"\";\r\n }\r\n return profileImg;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUser.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxUser.vue?vue&type=template&id=aae14282&scoped=true&\"\nimport script from \"./AxUser.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxUser.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxUser.vue?vue&type=style&index=0&id=aae14282&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aae14282\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-avatar\",attrs:{\"title\":!_vm.hideTitle ? _vm.title : ''}},[(_vm.isDefaultAvatar)?_c('AxUserAvatarDefault',{style:(_vm.style),attrs:{\"title\":_vm.title,\"email-name\":_vm.emailName}}):_c('img',{staticClass:\"ax-avatar_image\",style:(_vm.style),attrs:{\"src\":_vm.profileImgResolved,\"alt\":\"avatar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-avatar-default ax-avatar-default__image\"},[_c('AxIcon',{staticClass:\"ax-avatar-default__icon\",attrs:{\"name\":_vm.iconName}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { equalsIgnoringCase, memoizer } from \"@/common/lib\";\r\nimport { simpleHash } from \"@/common/utils\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\n/* eslint-disable key-spacing */\r\nconst iconsToLetter = {\r\n octopus: [\"a\", \"k\", \"u\"],\r\n rabbit: [\"b\", \"l\", \"v\"],\r\n seahorse: [\"c\", \"m\", \"w\"],\r\n fox: [\"d\", \"n\", \"x\"],\r\n lion: [\"e\", \"o\", \"y\"],\r\n swan: [\"f\", \"p\", \"z\"],\r\n kangaroo: [\"g\", \"q\"],\r\n bear: [\"h\", \"r\"],\r\n ram: [\"i\", \"s\"],\r\n toucan: [\"j\", \"t\"],\r\n};\r\n/* eslint-enable key-spacing */\r\n\r\nconst lettersToIcon = Object.entries(iconsToLetter).reduce((acc, [icon, letters]) => {\r\n for (let i = 0; i < letters.length; i++) {\r\n const letter = letters[i];\r\n acc[letter] = icon;\r\n }\r\n return acc;\r\n}, {} as Record);\r\n\r\nconst getIconName = memoizer((name: string) => {\r\n const hash = simpleHash(name);\r\n // 26 letters in alphabet\r\n // 97 - is a charcode for 'a'\r\n const letter = String.fromCharCode(Math.abs(hash % 26) + 97);\r\n return lettersToIcon[letter];\r\n});\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n title: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n emailName: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n computed: {\r\n firstLetter(): string {\r\n if (!this.emailName) return \"\";\r\n return this.emailName.charAt(0).toLowerCase();\r\n },\r\n\r\n isAnonymous(): boolean {\r\n return equalsIgnoringCase(this.emailName, \"Anonymous\");\r\n },\r\n\r\n iconName(): string {\r\n if (this.isAnonymous) return \"avatars/bear\";\r\n if (this.emailName) {\r\n const icon = getIconName(this.emailName);\r\n if (icon) {\r\n return `avatars/${icon}`;\r\n }\r\n }\r\n return \"avatars/bear\";\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatarDefault.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatarDefault.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatarDefault.vue?vue&type=custom&index=0&blockType=styles&lang=scss&scoped=true\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatarDefault.vue?vue&type=custom&index=0&blockType=styles&lang=scss&scoped=true\"","import { render, staticRenderFns } from \"./AxUserAvatarDefault.vue?vue&type=template&id=07f73dbc&\"\nimport script from \"./AxUserAvatarDefault.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxUserAvatarDefault.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AxUserAvatarDefault.vue?vue&type=custom&index=0&blockType=styles&lang=scss&scoped=true\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { SsoResponse, UserProfileJs } from \"@shared/models\";\r\n\r\nimport { getUserName } from \"@/common/axshare\";\r\nimport { trimEmailDomain } from \"@/common/lib\";\r\n\r\nimport { prop } from \"./utils\";\r\n\r\nimport AxUserAvatarDefault from \"@/components/AxUserAvatarDefault.vue\";\r\n\r\n// eslint-disable-next-line import/order\r\nconst defaultIcon = require(\"@/assets/defaultProfile.png\");\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxUserAvatarDefault,\r\n },\r\n\r\n props: {\r\n w: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n\r\n h: {\r\n type: String,\r\n default: \"24px\",\r\n },\r\n\r\n profileImg: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n hideTitle: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n forceDefault: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n user: prop({\r\n type: Object,\r\n required: false,\r\n default: null,\r\n }),\r\n },\r\n\r\n computed: {\r\n style(): Partial {\r\n return {\r\n width: this.w,\r\n height: this.h,\r\n fontSize: this.isDefaultAvatar ? `${this.h}` : \"unset\",\r\n };\r\n },\r\n\r\n profileImgResolved(): string {\r\n if (this.profileImg) return this.profileImg;\r\n if (this.user) {\r\n if (isSsoResponse(this.user)) {\r\n if (this.user.profileImageUrl) return this.user.profileImageUrl;\r\n } else if (this.user.profileImg) return this.user.profileImg;\r\n }\r\n return defaultIcon;\r\n },\r\n\r\n isDefaultAvatar(): boolean {\r\n return this.forceDefault || (!!this.user && this.profileImgResolved === defaultIcon);\r\n },\r\n\r\n title(): string {\r\n const userInfo = this.user;\r\n if (!userInfo) return \"\";\r\n const name = getUserName(userInfo);\r\n return name || userInfo.userEmail;\r\n },\r\n\r\n emailName(): string {\r\n return trimEmailDomain(this.user.userEmail);\r\n },\r\n },\r\n});\r\n\r\nfunction isSsoResponse(user: UserProfileJs | SsoResponse): user is SsoResponse {\r\n return (user as any).profileImageUrl !== undefined;\r\n}\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxUserAvatar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxUserAvatar.vue?vue&type=template&id=b36877bc&scoped=true&\"\nimport script from \"./AxUserAvatar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxUserAvatar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxUserAvatar.vue?vue&type=style&index=0&id=b36877bc&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b36877bc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-workspace-icon\"},[_c('AxIcon',{attrs:{\"name\":_vm.iconName}}),(false)?_c('AxIcon',{staticClass:\"ax-workspace-users-icon\",attrs:{\"name\":\"users\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n shared: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n iconName: {\r\n type: String,\r\n default: \"workspace\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspaceIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspaceIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxWorkspaceIcon.vue?vue&type=template&id=675cc656&scoped=true&\"\nimport script from \"./AxWorkspaceIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxWorkspaceIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxWorkspaceIcon.vue?vue&type=style&index=0&id=675cc656&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"675cc656\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isSubInstanceAdmin)?_c('span',{staticClass:\"ax-workspaces-toggle-all\"},[_c('label',{staticClass:\"d-inline-flex align-items-center m-0\"},[_c('small',[_vm._v(\"All Workspaces\")]),_c('AxHelp',{attrs:{\"content\":\"When ON, workspaces you are not a member of will be displayed\"}}),_c('AxToggleButton',{staticClass:\"m-0\",attrs:{\"value\":_vm.showAllWorkspaces},on:{\"input\":_vm.setShowAllWorkspaces}})],1)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { SetShowAllWorkspaces } from \"@/store/settings/mutationTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxHelp from \"@/components/AxHelp.vue\";\r\nimport AxToggleButton from \"@/components/AxToggleButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxToggleButton,\r\n AxHelp,\r\n },\r\n\r\n props: {\r\n persist: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n local: false,\r\n };\r\n },\r\n\r\n computed: {\r\n showAllWorkspaces(): boolean {\r\n if (this.persist) {\r\n const { settings } = this.$store.state as AxShare;\r\n return settings && settings.showAllWorkspaces;\r\n }\r\n return this.local;\r\n },\r\n\r\n isSubInstanceAdmin(): boolean {\r\n return this.$store.getters.isSubInstanceAdmin;\r\n },\r\n },\r\n\r\n created() {\r\n this.$emit(\"input\", this.showAllWorkspaces);\r\n },\r\n\r\n methods: {\r\n setShowAllWorkspaces(showAll: boolean) {\r\n if (this.persist) {\r\n this.$store.commit(new SetShowAllWorkspaces(showAll));\r\n } else {\r\n this.local = showAll;\r\n }\r\n this.$emit(\"input\", this.showAllWorkspaces);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspacesToggleAll.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspacesToggleAll.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxWorkspacesToggleAll.vue?vue&type=template&id=2c614715&\"\nimport script from \"./AxWorkspacesToggleAll.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxWorkspacesToggleAll.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{attrs:{\"viewBox\":_vm.short ? '0 0 20 12' : '0 0 50 12'}},[_c('g',{attrs:{\"fill\":\"none\",\"fill-rule\":\"evenodd\"}},[_c('g',{attrs:{\"fill\":_vm.colorValue}},[_c('g',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.short),expression:\"!short\"}]},[_c('path',{attrs:{\"d\":\"M30.697.138h-.686a.708.708 0 0 0-.733.732v8.913h-2.717c-1.659 0-2.345 0-2.345-2.796V.87a.709.709 0 0 0-.733-.732h-.667c-.429 0-.752.315-.752.732v6.117c0 4.1 1.56 4.85 4.633 4.85 1.101 0 2.608 0 4.057-.205l.04-.008c.525-.132.635-.473.635-.736V.87a.708.708 0 0 0-.732-.732\"}}),_c('path',{attrs:{\"d\":\"M39.253.166l-.062-.017c-.411-.086-1.525-.15-2.076-.15-2.55 0-3.085 1.349-3.085 2.479v8.527c0 .425.308.733.733.733h.686a.709.709 0 0 0 .733-.733V2.634c0-.272 0-.58 1.11-.58l1.688-.003c.199.028.4-.03.553-.161a.732.732 0 0 0 .256-.57V.89c0-.341-.201-.611-.536-.724\"}}),_c('path',{attrs:{\"d\":\"M45.444 0c-2.024 0-3.174.399-3.843 1.335-.69.966-.83 2.466-.83 4.574 0 4.099.675 5.927 4.673 5.927.472 0 2.083-.01 3.032-.125a.728.728 0 0 0 .641-.725v-.451a.735.735 0 0 0-.752-.752h-2.92c-2.114 0-2.467-.47-2.522-3.345V5.48c.018-2.946.372-3.426 2.521-3.426 1.957 0 2.317.406 2.393 2.867h-3.282v2.073h4.457c.451 0 .988-.161.988-.93V5.49C49.937 1.283 48.873 0 45.444 0\"}})]),_c('path',{attrs:{\"fill\":_vm.colorValue,\"fill-rule\":\"nonzero\",\"d\":\"M4.163 0l.001-.001c3.21 0 4.771 1.189 4.771 3.636v6.88c0 .515-.256.847-.76.987-.795.244-2.931.334-4.09.334C1.184 11.836 0 10.789 0 8.221c0-2.31 1.145-3.34 3.713-3.339h3.07v-1.13c0-1.222-.734-1.698-2.62-1.698h-2.43c-.446 0-.733-.287-.733-.732V.89c0-.374.194-.627.561-.731l.056-.012A20.5 20.5 0 0 1 4.163 0zm2.62 6.915H3.712c-1.195 0-1.54.293-1.54 1.307 0 1.038.092 1.58 2.09 1.58.42 0 1.655-.026 2.521-.146V6.915z\"}}),_c('path',{attrs:{\"fill\":\"#74bb11\",\"d\":\"M19.934.496c-.11-.237-.346-.378-.629-.378h-.882c-.305 0-.543.128-.66.349L16.4 2.461l1.314 1.802 2.101-3.022c.27-.328.173-.63.12-.745\"}}),_c('path',{attrs:{\"fill\":\"#009cd9\",\"d\":\"M13.03.443l-.004-.004a.783.783 0 0 0-.66-.321h-.863a.674.674 0 0 0-.618.35c-.12.228-.098.499.068.747l3.14 4.36-3.622 5.063c-.157.237-.178.503-.056.73.122.225.361.36.617.35h.882a.717.717 0 0 0 .636-.36l4.172-5.761L13.03.443z\"}}),_c('path',{attrs:{\"fill\":\"#eb2084\",\"d\":\"M20.371 10.698l-2.687-3.7-1.296 1.794 2.11 2.822.085.038a.774.774 0 0 0 .31.067h.863a.686.686 0 0 0 .601-.32.705.705 0 0 0 .014-.701\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n color: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n short: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dark: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n light: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n colorValue(): string {\r\n if (this.color) return this.color;\r\n if (this.dark) return \"#444\";\r\n if (this.light) return \"#e3e3e3\";\r\n return \"#e3e3e3\";\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAxureLogo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAxureLogo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAxureLogo.vue?vue&type=template&id=6baa7270&\"\nimport script from \"./AxAxureLogo.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAxureLogo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _c('svg',{attrs:{\"viewBox\":\"0 0 38 30\"}},[_c('g',{attrs:{\"fill\":\"none\",\"fill-rule\":\"evenodd\"}},[_c('path',{attrs:{\"fill\":_vm.props.top,\"d\":\"M14.394 2.857h21.879c.953 0 1.727.768 1.727 1.714v2.572a.86.86 0 0 1-.864.857H.864A.86.86 0 0 1 0 7.143V1.714C0 .768.774 0 1.727 0H9.69c.405 0 .796.14 1.106.397l2.492 2.063c.31.257.702.397 1.107.397z\"}}),_c('path',{attrs:{\"fill\":_vm.props.bottom,\"d\":\"M38 28.385c0 .891-.774 1.615-1.727 1.615H1.727C.774 30 0 29.276 0 28.385V9.808C0 9.362.387 9 .864 9h36.272c.477 0 .864.362.864.808v18.577z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n top: {\r\n type: String,\r\n default: \"#F6DB84\",\r\n },\r\n bottom: {\r\n type: String,\r\n default: \"#FCE7A4\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFolder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFolder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFolder.vue?vue&type=template&id=4ca63c5a&functional=true&\"\nimport script from \"./AxFolder.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFolder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-viewer\"},[_c('div',{staticClass:\"ax-filesystem-viewer__header\"},[_c('div',{staticClass:\"viewer-header\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_vm._t(\"header-top\")],2)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"header__content\"},[_vm._t(\"header-content\")],2)])])])]),_c('div',{staticClass:\"ax-filesystem-viewer__wrapper\"},[_c('div',{staticClass:\"ax-filesystem-viewer__content\",class:{ divider: _vm.contentDivider }},[_vm._t(\"content\")],2)]),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n contentDivider: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemViewer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemViewer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemViewer.vue?vue&type=template&id=39ffe306&scoped=true&\"\nimport script from \"./FilesystemViewer.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemViewer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesystemViewer.vue?vue&type=style&index=0&id=39ffe306&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39ffe306\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-welcome-form\"},[_c('div',{staticClass:\"row flex-grow-1 g-0\"},[_c('div',{staticClass:\"d-flex flex-column col ax-welcome-column\",class:{ 'col-md col-sm-7': !!_vm.$scopedSlots.description, 'full-screen': _vm.isFullScreen }},[_vm._t(\"logo\",function(){return [(!_vm.noLogo)?_c('AxAxureLogoRow',{staticClass:\"logo-row desktop-app-drag\",attrs:{\"logo-route\":_vm.logoRoute}}):_vm._e()]}),_c('div',{staticClass:\"row flex-grow-1\"},[_c('div',{staticClass:\"ms-auto me-auto col-12 col-sm-10 col-md-8 col-lg-6 welcome-form-pane\"},[_c('div',{staticClass:\"d-flex flex-column flex-grow-1 welcome-outlet\"},[_vm._t(\"default\")],2),(!_vm.isElectron && _vm.copyright)?_c('div',{staticClass:\"welcome-copyright\"},[_vm._v(\" © 2002-\"+_vm._s(new Date().getFullYear())+\" Axure Software Solutions, Inc. | \"),_c('a',{staticClass:\"axure-copyright-link\",attrs:{\"target\":\"_blank\",\"rel\":\"noopener\",\"href\":\"https://www.axure.com/patents\"}},[_vm._v(\" www.axure.com/patents \")])]):_vm._e()])])],2),(_vm.$scopedSlots.description)?_c('div',{staticClass:\"d-none d-sm-block col-sm-5 col-md-auto ms-auto ax-welcome-column\"},[_c('div',{staticClass:\"axure-cloud-info\"},[_c('div',{staticClass:\"cloud-icon\"},[_c('AxIcon',{attrs:{\"name\":\"axure-cloud-logo\"}})],1),_vm._t(\"description\")],2)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxAxureLogoRow from \"@/components/AxAxureLogoRow.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxAxureLogoRow,\r\n },\r\n\r\n props: {\r\n noLogo: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n logoRoute: {\r\n type: [Object, String],\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n copyright: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n isFullScreen(): boolean {\r\n const { desktop } = this.$store.state as AxShare;\r\n return desktop.desktopParams.isFullScreen;\r\n },\r\n\r\n isElectron(): boolean {\r\n return isElectron;\r\n },\r\n },\r\n\r\n created() {\r\n document.body.classList.add(\"body-fluid\");\r\n },\r\n\r\n destroyed() {\r\n document.body.classList.remove(\"body-fluid\");\r\n },\r\n\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeLayout.vue?vue&type=template&id=5e146461&scoped=true&\"\nimport script from \"./WelcomeLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WelcomeLayout.vue?vue&type=style&index=0&id=5e146461&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e146461\",\n null\n \n)\n\nexport default component.exports","// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { TrackEventOptions } from \"@gtm-support/core\";\r\nimport Vue from \"vue\";\r\n\r\nexport function trackEvent(payload: TrackEventOptions): void {\r\n if (!process.env.VUE_APP_GTM_TRACKING_ID) return;\r\n if (Vue.gtm) {\r\n return Vue.gtm.trackEvent({\r\n event: \"GAEvent\",\r\n category: payload.eventCategory,\r\n action: payload.eventAction,\r\n label: payload.label,\r\n value: payload.value,\r\n });\r\n }\r\n}\r\n\r\nexport const AnalyticsClickEvents = {\r\n NewFolder: {\r\n eventClass: \"analytics-track-new-folder\",\r\n },\r\n NewProject: {\r\n eventClass: \"analytics-track-new-project\",\r\n },\r\n NewProjectArtboard: {\r\n eventClass: \"analytics-track-new-project-artboard\",\r\n },\r\n NewProjectRP: {\r\n eventClass: \"analytics-track-new-project-rp\",\r\n },\r\n Preview: {\r\n eventClass: \"analytics-track-project-preview\",\r\n },\r\n Inspect: {\r\n eventClass: \"analytics-track-project-inspect\",\r\n },\r\n Build: {\r\n eventClass: \"analytics-track-project-build\",\r\n },\r\n UserProfile: {\r\n eventClass: \"analytics-track-user-profile\",\r\n },\r\n AddAsset: {\r\n eventClass: \"analytics-track-add-asset\",\r\n },\r\n ProjectShare: {\r\n eventClass: \"analytics-track-project-share\",\r\n },\r\n AddHotspotConfirm: {\r\n eventClass: \"analytics-track-add-hotspot-confirm\",\r\n },\r\n LogInEmailInput: {\r\n eventClass: \"analytics-track-log-in-email-input\",\r\n },\r\n LogInSubmitButton: {\r\n eventClass: \"analytics-track-log-in-submit-button\",\r\n },\r\n SignUpEmailInput: {\r\n eventClass: \"analytics-track-sign-up-email-input\",\r\n },\r\n SignUpSubmitButton: {\r\n eventClass: \"analytics-track-sign-up-submit-button\",\r\n },\r\n};\r\n","import { AxShareConfigModel } from \"@shared/models\";\r\n\r\nimport { isDesktopLocal } from \"@/common/environment\";\r\nimport { delay } from \"@/common/lib\";\r\n\r\nlet apiBaseUrl = \"\";\r\nlet accountServiceUrl = \"\";\r\nlet apiCallsCounter: number = 0;\r\n\r\n// slight delay after write operation to avoid next stale read\r\nexport const dualDbDelay = (ms?: number) => delay(ms ?? 50);\r\n\r\nexport function setApiBaseUrl(url: string) {\r\n apiBaseUrl = url;\r\n}\r\n\r\nexport function setAccountServiceHost(url: string) {\r\n accountServiceUrl = url;\r\n}\r\n\r\nexport const resolveApiBaseUrl = (config?: AxShareConfigModel | null): string => {\r\n if (config) {\r\n return config.MatchProtocolMode ? config.AxShareHostUrl : config.AxShareHostSecureUrl;\r\n }\r\n if (apiBaseUrl) return apiBaseUrl;\r\n return (isDesktopLocal ? process.env.VUE_APP_DESKTOP_AXSHARE_API_URL : process.env.VUE_APP_AXSHARE_API_URL) || \"\";\r\n};\r\n\r\nexport const resolveAccountServiceHost = (config?: AxShareConfigModel | null): string => {\r\n if (config) {\r\n return config.MatchProtocolMode ? config.AccountServiceUrl : config.AccountServiceSecureUrl;\r\n }\r\n if (accountServiceUrl) return accountServiceUrl;\r\n return process.env.VUE_APP_AXSHARE_ACCOUNT_SERVICE_URL || \"\";\r\n};\r\n\r\nexport function getApiCallId() {\r\n apiCallsCounter++;\r\n return apiCallsCounter.toString();\r\n}\r\n","export const DEFAULT_WORKSPACE_NAME = \"Private Workspace\";\r\nexport const PRETTY_URL_NOT_FOUND_PAGE_TEXT = \"404 Page\";\r\nexport const PRETTY_URL_NOT_FOUND_PAGE = \"%_-404-_%\";\r\nexport const PRETTY_URL_ROOT_PAGE_TEXT = \"Root Page\";\r\nexport const PRETTY_URL_ROOT_PAGE = \"\";\r\n","export class DbConnectionError extends Error {}\r\n\r\nexport class JsonSettingsLoadError extends Error {}\r\n\r\nexport class SignInReadOnlyError extends Error {}\r\n\r\nexport class ReadOnlyError extends Error {}\r\n\r\nexport class ApiExceptionError extends Error {\r\n exceptionId?: string;\r\n\r\n constructor(message: string, exceptionId?: string) {\r\n super(message);\r\n this.exceptionId = exceptionId;\r\n }\r\n}\r\n","import {\r\n FilesystemNodeShortcut, FilesystemNodeTypes, isShortcutNode, ShortcutState,\r\n} from \"@/common/fs\";\r\nimport { ShortcutType } from \"@/services/models\";\r\n\r\nconst sketchProjectTypes = [ShortcutType.Expo, ShortcutType.Handoff];\r\nconst rpProjectTypes = [ShortcutType.Rp, ShortcutType.Lib, ShortcutType.TeamLib, ShortcutType.TeamRp];\r\nconst teamProjectTypes = [ShortcutType.TeamLib, ShortcutType.TeamRp];\r\n\r\nexport function isRp6ProjectAndBelow(options: {\r\n project?: FilesystemNodeShortcut;\r\n resourceDirVersion?: number;\r\n shortcutState?: string\r\n }) {\r\n const { project, resourceDirVersion, shortcutState } = options;\r\n const state = (project && project.shortcutState) || shortcutState;\r\n if (state\r\n && (state === ShortcutState.Generating\r\n || state === ShortcutState.Empty\r\n || state === ShortcutState.GenerationFailed)) {\r\n return false;\r\n }\r\n const revNumber = (project && project.listingNode && project.listingNode.ResourceDirVersion) || resourceDirVersion;\r\n if (!revNumber) return false;\r\n return revNumber < MinRP7Build;\r\n}\r\n\r\nconst MinRP7Build = 3100;\r\nexport function isRp7Project(options: { project?: FilesystemNodeShortcut; resourceDirVersion?: number }) {\r\n const { project, resourceDirVersion } = options;\r\n const revNumber = (project && project.listingNode && project.listingNode.ResourceDirVersion) || resourceDirVersion;\r\n if (!revNumber) return false;\r\n return revNumber < 10000 && revNumber >= MinRP7Build && revNumber < MinRP8Build;\r\n}\r\n\r\nconst MinRP8Build = 3200;\r\nexport function isRp8Project(options: { project?: FilesystemNodeShortcut; resourceDirVersion?: number }) {\r\n const { project, resourceDirVersion } = options;\r\n const revNumber = (project && project.listingNode && project.listingNode.ResourceDirVersion) || resourceDirVersion;\r\n if (!revNumber) return false;\r\n return revNumber < 10000 && revNumber >= MinRP8Build && revNumber < MinRP9Build;\r\n}\r\n\r\nconst MinRP9Build = 3600;\r\nexport function isRp9Project(options: { project?: FilesystemNodeShortcut; resourceDirVersion?: number }) {\r\n const { project, resourceDirVersion } = options;\r\n const revNumber = (project && project.listingNode && project.listingNode.ResourceDirVersion) || resourceDirVersion;\r\n if (!revNumber) return false;\r\n return revNumber < 10000 && revNumber >= MinRP9Build && revNumber < MinRP10Build;\r\n}\r\n\r\nconst MinRP9BuildWithThumbnails = 3629;\r\nconst MinRP9HgRevWithThumbnails = 17532;\r\nexport function isRp9ProjectWithThumbnails(options: { project?: FilesystemNodeShortcut; resourceDirVersion?: number }) {\r\n const { project, resourceDirVersion } = options;\r\n const revNumber = (project && project.listingNode && project.listingNode.ResourceDirVersion) || resourceDirVersion;\r\n if (!revNumber) return false;\r\n return ((revNumber >= MinRP9HgRevWithThumbnails && revNumber < MinRP10HgRev)\r\n || (revNumber < 10000 && revNumber >= MinRP9BuildWithThumbnails && revNumber < MinRP10Build));\r\n}\r\n\r\nconst MinRP10Build = 3800;\r\nconst MinRP10HgRev = 21000;\r\nexport function isRp10Project(options: { project?: FilesystemNodeShortcut; resourceDirVersion?: number }) {\r\n const { project, resourceDirVersion } = options;\r\n const revNumber = (project && project.listingNode && project.listingNode.ResourceDirVersion) || resourceDirVersion;\r\n if (!revNumber) return false;\r\n return (revNumber >= MinRP10HgRev || (revNumber < 10000 && revNumber >= MinRP10Build));\r\n}\r\n\r\nexport function isThumbnailSupportedProject(project: FilesystemNodeTypes) {\r\n return isShortcutNode(project)\r\n && (!!project.shortcutState && project.shortcutState !== \"GenerationFailed\")\r\n // eslint-disable-next-line max-len\r\n && (isSketchProjectType(project.shortcutType) || isRp9ProjectWithThumbnails({ project }) || isRp10Project({ project }));\r\n}\r\n\r\nexport function isPublicInspectSupportedProject(project: FilesystemNodeTypes) {\r\n return isSketchProject(project) || (isRpProject(project) && isRp10Project({ project }));\r\n}\r\n\r\nexport function isSketchProject(project: FilesystemNodeTypes): project is FilesystemNodeShortcut {\r\n return isShortcutNode(project) && isSketchProjectType(project.shortcutType);\r\n}\r\nexport function isRpProject(project: FilesystemNodeTypes): project is FilesystemNodeShortcut {\r\n return isShortcutNode(project) && isRpProjectType(project.shortcutType);\r\n}\r\nexport function isTeamProject(project: FilesystemNodeTypes): project is FilesystemNodeShortcut {\r\n return isShortcutNode(project) && isTeamProjectType(project.shortcutType);\r\n}\r\nexport function isSketchProjectType(type: ShortcutType) {\r\n return sketchProjectTypes.some(sketchType => sketchType === type);\r\n}\r\nexport function isRpProjectType(type: ShortcutType) {\r\n return rpProjectTypes.some(rpType => rpType === type);\r\n}\r\nexport function isTeamProjectType(type: ShortcutType) {\r\n return teamProjectTypes.some(rpType => rpType === type);\r\n}\r\n","import { AxShareConfigModel } from \"@shared/models\";\r\n\r\nimport { ShortcutType } from \"@/services/models\";\r\n\r\nimport { FilesystemNodeShortcut, isShortcutNode } from \"../fs\";\r\nimport { isRelativeUrl, stripProtocol } from \"../lib/string\";\r\n\r\nimport { resolveApiBaseUrl } from \"./api\";\r\nimport { isThumbnailSupportedProject } from \"./project\";\r\n\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nexport interface PrototypeUrls {\r\n href: string;\r\n full: string;\r\n display: string;\r\n download: string;\r\n frame: string;\r\n}\r\n\r\nexport function prototypeUrls(\r\n config: AxShareConfigModel | null,\r\n project: FilesystemNodeShortcut | FilesystemSearchItem\r\n): PrototypeUrls;\r\nexport function prototypeUrls(config: AxShareConfigModel | null, prototypeUrl: string, shortcut: string): PrototypeUrls;\r\nexport function prototypeUrls(\r\n config: AxShareConfigModel | null,\r\n project: FilesystemNodeShortcut | FilesystemSearchItem | string,\r\n shortcutId?: string,\r\n): PrototypeUrls {\r\n let prototypeUrl = \"\";\r\n let shortcut = \"\";\r\n let shortcutType: ShortcutType | undefined;\r\n if (typeof project === \"object\") {\r\n prototypeUrl = project.prototypeUrl || \"\";\r\n if (isShortcutNode(project)) {\r\n shortcut = project.shortcut;\r\n shortcutType = project.shortcutType;\r\n } else {\r\n shortcut = project.id;\r\n shortcutType = project.subtype;\r\n }\r\n } else if (typeof project === \"string\" && shortcutId) {\r\n prototypeUrl = project;\r\n shortcut = shortcutId;\r\n }\r\n\r\n const baseUrl = resolveApiBaseUrl(config);\r\n\r\n let href = \"\";\r\n let full = \"\";\r\n if (prototypeUrl !== \"\") {\r\n href = full = prototypeUrl;\r\n } else {\r\n href = `/${shortcut}`;\r\n full = `${baseUrl}/${shortcut}`;\r\n }\r\n let frame = full;\r\n if (isShortcutNode(project) && useFramedDomain(config, project)) {\r\n const withPort = process.env.NODE_ENV === \"development\";\r\n const port = withPort ? \":44300\" : \"\";\r\n const protocol = config.MatchProtocolMode ? \"http\" : \"https\";\r\n frame = `${protocol}://${shortcut}${config.AxSitesFramedPrototypeDomain}${port}`;\r\n }\r\n\r\n let download = `${baseUrl}/prototype/downloadrpfile/${shortcut}`;\r\n if (shortcutType === ShortcutType.TeamRp) {\r\n download = `${baseUrl}/versions/DownloadRevision?shortcut=${shortcut}`;\r\n }\r\n\r\n return {\r\n href,\r\n full,\r\n display: stripProtocol(full),\r\n frame,\r\n download,\r\n };\r\n}\r\n\r\nfunction linkHandler(endpoint: string, urls: PrototypeUrls, event?: MouseEvent) {\r\n // If non absolute, use original href, since no need to obtain auth\r\n if (isRelativeUrl(urls.href)) {\r\n return true;\r\n }\r\n\r\n if (event && !event.defaultPrevented) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n window.open(`${endpoint}?url=${encodeURIComponent(urls.full)}`, \"_blank\", \"noopener\");\r\n }\r\n return false;\r\n}\r\n\r\nexport function prototypeLinkHandler(urls: PrototypeUrls, event?: MouseEvent) {\r\n return linkHandler(\"/prototype/getprototypeurl\", urls, event);\r\n}\r\n\r\nexport function prototypeLinkHandlerNoAuth(urls: PrototypeUrls, event?: MouseEvent) {\r\n return linkHandler(\"/prototype/getvtkprototypeurl\", urls, event);\r\n}\r\n\r\nfunction useFramedDomain(\r\n config: AxShareConfigModel | null,\r\n project: string | FilesystemNodeShortcut,\r\n): config is AxShareConfigModel {\r\n return (\r\n !!config\r\n && !!config.AxSitesFramedPrototypeDomain\r\n && typeof project === \"object\"\r\n && isThumbnailSupportedProject(project)\r\n );\r\n}\r\n","export function preprocessNotificationName(workspaceName: string, projectName: string): string {\r\n let notificationName = workspaceName;\r\n\r\n if (projectName) {\r\n notificationName = `${workspaceName} \\\\ ${projectName}`;\r\n }\r\n\r\n const maxTextLength = 36;\r\n const halfTextLength = maxTextLength / 2;\r\n\r\n if (notificationName.length <= maxTextLength) return notificationName;\r\n\r\n if (workspaceName.length <= halfTextLength) return truncateText(notificationName, maxTextLength);\r\n\r\n if (projectName) {\r\n return `${truncateText(workspaceName, halfTextLength)} \\\\ ${truncateText(projectName, halfTextLength)}`;\r\n }\r\n\r\n return truncateText(notificationName, maxTextLength);\r\n}\r\n\r\nexport function truncateText(text: string, length: number): string {\r\n if (text.length <= length) return text;\r\n\r\n const truncatedText = `${text.substring(0, length - 3)}...`;\r\n return truncatedText;\r\n}\r\n","import { isApple } from \"@/common/lib\";\r\n\r\nconst DESKTOP_APP_DOWNLOAD_MAC = \"https://www.axure.cloud/desktop/mac/AxureCloud.dmg\";\r\nconst DESKTOP_APP_DOWNLOAD_WINDOWS = \"https://www.axure.cloud/desktop/win/AxureCloud.exe\";\r\nexport const DOCS_DISCUSSIONS_LINK = \"https://docs.axure.com/axure-cloud/basics/discussions/\";\r\n\r\nexport const DESKTOP_APP_DOWNLOAD_URL = isApple ? DESKTOP_APP_DOWNLOAD_MAC : DESKTOP_APP_DOWNLOAD_WINDOWS;\r\n\r\nexport const SKETCH_PLUGIN_DOWNLOAD_URL = \"https://www.axure.com/misc/sketch/Axure.sketchplugin.zip\";\r\nexport const XD_PLUGIN_DOWNLOAD_URL = \"https://adobe.com/go/xd_plugins_discover_plugin?pluginId=2d46a4a0\";\r\nexport const FIGMA_PLUGIN_DOWNLOAD_URL = \"https://www.figma.com/community/plugin/837098402230990991\";\r\nexport const FEEDBACK_URL = \"https://www.axure.com/cloud/feedback\";\r\nexport const HELP_PAGE_URL = \"https://docs.axure.com/axure-cloud/reference/publishing-axure-rp-projects/\";\r\n","import { NotificationErrorType } from \"@/services/models/notification\";\r\n\r\nconst accountServiceUnavailable =\r\n \"Couldn't connect to the account service. Please, check your connection and try again.\";\r\nconst enterpriseLicenseCheckFailed =\r\n \"Your account's license needs to be verified. To continue, please publish an Axure RP project from Axure RP Enterprise or contact your system administrator.\";\r\nconst betaFeaturesDisabled =\r\n \"This feature is currently in beta and disabled on your instance of Axure Cloud for Business. Please contact your system administrator to enable beta features.\";\r\n\r\nexport { enterpriseLicenseCheckFailed, accountServiceUnavailable, betaFeaturesDisabled };\r\n\r\nexport const NotificationErrorMessages = {\r\n [NotificationErrorType.InvalidData]:\r\n \"Invalid Slack add/edit request, please retry. If problem persists, please contact us at support@axure.com.\",\r\n [NotificationErrorType.InvalidDataTeams]:\r\n \"Invalid Microsoft Teams add/edit request, please retry. If problem persists, please contact us at support@axure.com.\",\r\n [NotificationErrorType.ExpiredToken]: \"Expired Slack request, please retry.\",\r\n [NotificationErrorType.ExpiredTokenTeams]: \"Expired Microsoft Teams request, please retry.\",\r\n [NotificationErrorType.SlackIssue]:\r\n \"Issue encountered during request, please retry. If problem persists, please contact us at support@axure.com.\",\r\n [NotificationErrorType.SlackAlreadyExist]: \"Can not add Slack Notification. Slack Notification already exists.\",\r\n [NotificationErrorType.Unknown]: \"Unknown error. If problem persists, please contact us at support@axure.com.\",\r\n};\r\n","import { LocalStorage, Storage } from \"@/common/axshare/storage\";\r\nimport { equalsIgnoringCase } from \"@/common/lib\";\r\nimport { VersionInfoResponse } from \"@/generated/models\";\r\n\r\nexport interface VersionInfoLastPolling {\r\n date: Date;\r\n value: VersionInfoResponse;\r\n}\r\n\r\nexport interface LastVersion {\r\n version: string;\r\n releaseDate: number;\r\n acknowledgedAt?: number;\r\n}\r\n\r\nexport class PersistentStorage {\r\n private apiVersionInfoKey = \"api-version-info\";\r\n private continueWithOldBrowserKey = \"continue-with-old-browser\";\r\n private desktopNotificationsEnabled = \"desktop-notifications-enabled\";\r\n private workspacesMigrationAcknowledged = \"workspaces-migration-acknowledged\";\r\n private lastVersionKey = \"last-version\";\r\n private store: Storage;\r\n\r\n constructor(store: Storage) {\r\n this.store = store;\r\n }\r\n\r\n public get(key: string): string | undefined {\r\n return this.store.get(key);\r\n }\r\n\r\n public set(key: string, value: string) {\r\n return this.store.set(key, value);\r\n }\r\n\r\n public getJson(key: string): T | undefined {\r\n const value = this.get(key);\r\n if (value) {\r\n return JSON.parse(value) as T;\r\n }\r\n }\r\n\r\n public setJson(key: string, value: T) {\r\n return this.set(key, JSON.stringify(value));\r\n }\r\n\r\n public getLastVersion(): LastVersion | undefined {\r\n return this.getJson(this.lastVersionKey);\r\n }\r\n\r\n public setLastVersion(value: LastVersion): void {\r\n return this.setJson(this.lastVersionKey, value);\r\n }\r\n\r\n public getApiVersionInfo(): VersionInfoLastPolling | undefined {\r\n return this.getJson(this.apiVersionInfoKey);\r\n }\r\n\r\n public setApiVersionInfo(value: VersionInfoResponse): void {\r\n return this.setJson(this.apiVersionInfoKey, { date: new Date(), value });\r\n }\r\n\r\n public getContinueWithOldBrowser(): boolean {\r\n return this.getBoolean(this.continueWithOldBrowserKey);\r\n }\r\n\r\n public setContinueWithOldBrowser(value: boolean) {\r\n this.setBoolean(this.continueWithOldBrowserKey, value);\r\n }\r\n\r\n public getDesktopNotificationsEnabled(): boolean | undefined {\r\n return this.getBoolean(this.desktopNotificationsEnabled);\r\n }\r\n\r\n public setDesktopNotificationsEnabled(value: boolean) {\r\n this.setBoolean(this.desktopNotificationsEnabled, value);\r\n }\r\n\r\n public get WorkspacesMigrationAcknowledged(): boolean {\r\n return this.getBoolean(this.workspacesMigrationAcknowledged);\r\n }\r\n\r\n public set WorkspacesMigrationAcknowledged(value: boolean) {\r\n this.setBoolean(this.workspacesMigrationAcknowledged, value);\r\n }\r\n\r\n private getBoolean(key: string) {\r\n const value = this.store.get(key);\r\n if (value !== undefined) {\r\n return equalsIgnoringCase(value, \"true\");\r\n }\r\n return false;\r\n }\r\n\r\n private setBoolean(key: string, value: boolean) {\r\n this.store.set(key, value.toString());\r\n }\r\n}\r\n\r\nconst storage = new LocalStorage();\r\nexport const persistentStorage = new PersistentStorage(storage);\r\n","import { Location, Route, RawLocation } from \"vue-router\";\r\n\r\nimport { isDesktopLocal } from \"@/common/environment\";\r\nimport { testSameOrigin } from \"@/common/lib/browser\";\r\n\r\nimport { isRelativeUrl, removeDuplicateForwardSlashes } from \"../lib\";\r\n\r\nimport { resolveApiBaseUrl } from \"./api\";\r\n\r\nexport const redirectParamName = \"redirect\";\r\n\r\nexport interface RouterNavigationLink {\r\n title: string;\r\n to: Location;\r\n}\r\n\r\ninterface MakeUrlOptions {\r\n relative?: boolean;\r\n baseUrl?: string;\r\n}\r\n\r\nconst defaultOptions: MakeUrlOptions = {\r\n relative: false,\r\n baseUrl: undefined,\r\n};\r\n\r\nexport const wellKnownRoutes = {\r\n home: {\r\n path: \"/\",\r\n name: \"home\",\r\n },\r\n uploadFromSketch: {\r\n path: \"/upload-from-sketch\",\r\n name: \"uploadfromsketch\",\r\n },\r\n downloadingUpdatesProgress: {\r\n path: \"/downloading-updates-progress\",\r\n name: \"downloadingupdatesprogress\",\r\n },\r\n proxylogin: {\r\n path: \"/proxy-login\",\r\n name: \"proxylogin\",\r\n props: true,\r\n },\r\n login: {\r\n path: \"/login\",\r\n name: \"login\",\r\n },\r\n};\r\n\r\nfunction isRoute(to: Route | RawLocation): to is Route {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return (to as any).fullPath !== undefined;\r\n}\r\n\r\nexport const makeUrl = (bundleSuffix: string, to: Route | RawLocation, options: MakeUrlOptions = defaultOptions) => {\r\n const { relative, baseUrl } = options;\r\n const base = relative ? \"/\" : baseUrl || resolveApiBaseUrl();\r\n const path = typeof to === \"string\" ? to : (isRoute(to) ? to.fullPath : to.path) || to.path || \"\";\r\n const url = removeDuplicateForwardSlashes(`${base}/${bundleSuffix}/${path}`);\r\n return url;\r\n};\r\n\r\nexport const makeWebUrl = (to: Route | RawLocation, options = defaultOptions) => {\r\n const webSuffix = process.env.VUE_APP_BASE_URL || \"\";\r\n return makeUrl(webSuffix, to, options);\r\n};\r\n\r\nexport const resolveRedirect = (to: Route | RawLocation): RawLocation | undefined => {\r\n if (isDesktopLocal) {\r\n const desktopUrl = makeWebUrl(to);\r\n window.location.href = decodeURIComponent(desktopUrl);\r\n return;\r\n }\r\n\r\n return to as RawLocation;\r\n};\r\n\r\nexport const resolveAfterAuthRedirect = (to: Route | Location, axShareHost: string = \"\"): RawLocation | undefined => {\r\n const { query } = to;\r\n if (query !== undefined && query[redirectParamName]) {\r\n const { [redirectParamName]: redirect } = query;\r\n if (typeof redirect === \"string\") {\r\n const isAbsoluteUrl = !isRelativeUrl(redirect);\r\n if (isDesktopLocal || isAbsoluteUrl) {\r\n const isSameOrigin = testSameOrigin(redirect, axShareHost);\r\n if (!isSameOrigin) return wellKnownRoutes.home;\r\n window.location.href = redirect + to.hash;\r\n return;\r\n }\r\n return { path: redirect, hash: to.hash };\r\n }\r\n }\r\n const resolved = resolveRedirect(to);\r\n if (!resolved) {\r\n return;\r\n }\r\n\r\n return wellKnownRoutes.home;\r\n};\r\n","import { isSafari } from \"@/common/lib\";\r\n\r\nexport interface Storage {\r\n get(key: string): string | undefined;\r\n set(key: string, value: string): void;\r\n delete(key: string): void;\r\n}\r\n\r\nexport class InMemoryStorage implements Storage {\r\n private storage: Record = {};\r\n\r\n public get(key: string): string | undefined {\r\n return this.storage[key];\r\n }\r\n\r\n public set(key: string, value: string): void {\r\n this.storage[key] = value;\r\n }\r\n\r\n public delete(key: string): void {\r\n delete this.storage[key];\r\n }\r\n}\r\n\r\nexport class LocalStorage implements Storage {\r\n public get(key: string): string | undefined {\r\n const value = localStorage.getItem(key);\r\n if (typeof value === \"string\") return value;\r\n return undefined;\r\n }\r\n\r\n public set(key: string, value: string): void {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n public delete(key: string): void {\r\n localStorage.removeItem(key);\r\n }\r\n}\r\n\r\nexport const BrowserStorage: new () => Storage = !isSafari ? InMemoryStorage : LocalStorage;\r\n","import { trimEmailDomain } from \"@/common/lib\";\r\nimport { SsoResponse, UserProfileJs } from \"@/generated/models\";\r\nimport { UserProfile } from \"@/services/models/account\";\r\n\r\nfunction hasName(profile: any): profile is { Name: string } {\r\n return profile && typeof profile.Name === \"string\";\r\n}\r\n\r\nfunction hasUsername(profile: any): profile is { username: string } {\r\n return profile && typeof profile.username === \"string\";\r\n}\r\n\r\nfunction hasEmail(profile: any): profile is { userEmail: string } {\r\n return profile && typeof profile.userEmail === \"string\";\r\n}\r\n\r\ninterface User {\r\n Name?: string;\r\n nickname?: string;\r\n}\r\n\r\nexport function getUserName(profile: UserProfile | SsoResponse | UserProfileJs | undefined, fallback = \"\") {\r\n if (!profile) return fallback;\r\n /* eslint-disable */\r\n const name = hasName(profile) ? profile.Name :\r\n hasUsername(profile) ? profile.username :\r\n profile.nickname;\r\n /* eslint-enable */\r\n\r\n if (!name) {\r\n if (!fallback && hasEmail(profile)) {\r\n // fill empty fallback to userEmail\r\n // eslint-disable-next-line no-param-reassign\r\n fallback = profile.userEmail;\r\n }\r\n return trimEmailDomain(fallback);\r\n }\r\n return name;\r\n}\r\n\r\nclass PasswordValidationRule {\r\n constructor(message: string, private validator: (password: string) => boolean) {\r\n this.message = message;\r\n }\r\n\r\n public state = false;\r\n public message: string;\r\n public validate(password: string) {\r\n this.state = this.validator(password);\r\n }\r\n}\r\n\r\nexport class PasswordValidator {\r\n constructor(useExtraRules: boolean = false) {\r\n this.useExtraRules = useExtraRules;\r\n }\r\n\r\n public useExtraRules: boolean;\r\n private minLength = 8;\r\n private upperRegex = /[A-Z]/;\r\n private lowerRegex = /[a-z]/;\r\n private numberRegex = /[0-9]/;\r\n private errorMessages: string[] = [];\r\n\r\n public rules: PasswordValidationRule[] = [\r\n new PasswordValidationRule(`${this.minLength} characters`, password => password.trim().length >= this.minLength),\r\n new PasswordValidationRule(\"One uppercase letter\", password => this.upperRegex.test(password)),\r\n new PasswordValidationRule(\"One lowercase letter\", password => this.lowerRegex.test(password)),\r\n new PasswordValidationRule(\"One number\", password => this.numberRegex.test(password)),\r\n ];\r\n\r\n public get isValid(): boolean {\r\n return this.errorMessages.length === 0;\r\n }\r\n\r\n public validate(password: string) {\r\n this.errorMessages = [];\r\n\r\n for (let i = 0; i < this.rules.length; i++) {\r\n const rule = this.rules[i];\r\n rule.validate(password);\r\n\r\n if (!rule.state) this.errorMessages.push(rule.message);\r\n if (!this.useExtraRules) break;\r\n }\r\n }\r\n\r\n public errorMessage(): string {\r\n if (this.isValid) return \"\";\r\n\r\n let errorMessage = \"Your password must contain at least\";\r\n this.errorMessages.forEach(error => {\r\n errorMessage += ` ${error}.`;\r\n });\r\n\r\n return errorMessage;\r\n }\r\n}\r\n","import { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { SsoResponse } from \"@/generated/models\";\r\n\r\nexport function filterWorkspacesUserIsMember(userInfo: SsoResponse | undefined, workspaces: FilesystemNodeWorkspace[]) {\r\n let userId: string | undefined;\r\n\r\n if (userInfo) {\r\n userId = userInfo.userId;\r\n }\r\n\r\n return workspaces.filter(ws => ws.isOwner || ws.sharedWith.some(shared => userId && userId === shared.user.userId));\r\n}\r\n","import { isElectron } from \"@/common/environment\";\r\nimport { Main } from \"@/desktop/events\";\r\n\r\nexport function openExternal(url: string) {\r\n if (isElectron) {\r\n const { ipc } = window.AxureCloudNative;\r\n ipc.send(Main.OpenExternal, url);\r\n }\r\n}\r\n","declare global {\r\n namespace NodeJS {\r\n interface ProcessEnv {\r\n NODE_ENV: \"development\" | \"production\";\r\n // provided by vue-cli-plugin-electron-builder, but it's actually boolean\r\n IS_ELECTRON: string | undefined;\r\n VUE_APP_IS_ELECTRON: \"true\" | \"false\";\r\n VUE_APP_IS_ELECTRON_MAIN: \"true\" | \"false\";\r\n VUE_APP_IS_ELECTRON_LOCAL: \"true\" | \"false\";\r\n VUE_APP_AXSHARE_LATEST: \"true\" | \"false\";\r\n VUE_APP_BASE_URL: string | undefined;\r\n VUE_APP_AXSHARE_API_URL: string | undefined;\r\n VUE_APP_AXSHARE_ACCOUNT_SERVICE_URL: string | undefined;\r\n VUE_APP_AXSHARE_ACCOUNT_SERVICE_CLASSIC: \"true\" | \"false\";\r\n VUE_APP_DESKTOP_AXSHARE_API_URL: string | undefined;\r\n VUE_APP_DESKTOP_AXSHARE_SUBINSTANCE_TLD: string | undefined;\r\n VUE_APP_DESKTOP_LOGIN: \"true\" | \"false\";\r\n VUE_APP_EXPO_PREVIEW_PINS_DISABLED: \"true\" | \"false\";\r\n VUE_APP_ON_PREM: \"true\" | \"false\";\r\n VUE_APP_PWA_ENABLED: \"true\" | \"false\";\r\n }\r\n }\r\n}\r\n\r\nexport const isDevelopment = process.env.NODE_ENV === \"development\";\r\nexport const isProduction = process.env.NODE_ENV === \"production\";\r\nexport const isLatest = process.env.VUE_APP_AXSHARE_LATEST === \"true\";\r\nexport const isExpoPreviewPinsDisabled = process.env.VUE_APP_EXPO_PREVIEW_PINS_DISABLED === \"true\";\r\nexport const serviceWorkerEnabled = process.env.VUE_APP_PWA_ENABLED === \"true\";\r\nexport const commitHash = isDevelopment ? process.env.VUE_APP_COMMIT_HASH : \"\";\r\n\r\nfunction isElectronRendererFn() {\r\n if (typeof window === \"undefined\") return false;\r\n if (window.AxureCloudNative !== undefined) return true;\r\n const { process }: { process: NodeJS.Process } = window as any;\r\n if (typeof process === \"object\" && process.type === \"renderer\") return true;\r\n if (\r\n typeof navigator === \"object\"\r\n && typeof navigator.userAgent === \"string\"\r\n && (\r\n navigator.userAgent.indexOf(\"Electron\") >= 0\r\n || navigator.userAgent.indexOf(\"Axure Cloud\") >= 0\r\n || navigator.userAgent.indexOf(\"axure-cloud\") >= 0\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction isElectronMainFn() {\r\n return typeof process !== \"undefined\" && typeof process.versions === \"object\" && !!process.versions.electron;\r\n}\r\n\r\nexport const isElectronBuild = process.env.VUE_APP_IS_ELECTRON === \"true\";\r\nexport const isElectronRenderer = isElectronRendererFn();\r\nexport const isElectronMain = isElectronMainFn();\r\nexport const isElectron = isElectronMain || isElectronRenderer;\r\n\r\nexport const isDesktopLocal = (isElectronBuild && (process.env.NODE_ENV === \"production\" && process.env.VUE_APP_IS_ELECTRON_LOCAL === \"true\"))\r\n || process.env.VUE_APP_DESKTOP_LOGIN === \"true\";\r\n","import { Action } from \"@shared/expo\";\r\n\r\n// Determines if the action has been saved and committed already\r\nexport function isSavedAction(action: Action) {\r\n return !!action.Id && !!action.CreatedOn;\r\n}\r\n\r\n// Determines if an action belongs to a master or not\r\nexport function isMasterAction(action: Action) {\r\n return isSavedAction(action) && action.IsMaster;\r\n}\r\n","import {\r\n FilesystemJs,\r\n FolderRowJs,\r\n InvitationJs,\r\n SharedFilesystemMappingJs,\r\n ShortcutJs,\r\n SsoResponse,\r\n ShortcutNotificationStateJs,\r\n} from \"@shared/models\";\r\n\r\nimport { ShortcutType } from \"@/services/models\";\r\n\r\nexport enum FilesystemNodeType {\r\n Root = \"root\",\r\n Workspace = \"workspace\",\r\n Folder = \"folder\",\r\n Shortcut = \"shortcut\",\r\n Invitation = \"invitation\",\r\n Recents = \"recents\",\r\n Search = \"search\",\r\n}\r\n\r\nconst enum ShortcutStateEnum {\r\n Empty = 0,\r\n GenerationFailed = 1,\r\n Generating = 2,\r\n Deleted = 3,\r\n Ok = 4,\r\n}\r\n\r\nexport type ShortcutStateName = keyof typeof ShortcutStateEnum;\r\nexport type ShortcutStateNames = { readonly [P in ShortcutStateName]: P };\r\n\r\nexport const ShortcutState: ShortcutStateNames = {\r\n Empty: \"Empty\",\r\n GenerationFailed: \"GenerationFailed\",\r\n Generating: \"Generating\",\r\n Deleted: \"Deleted\",\r\n Ok: \"Ok\",\r\n};\r\nexport const ShortcutStates = Object.values(ShortcutState);\r\n\r\nexport interface FilesystemNodeRoot extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Root;\r\n}\r\n\r\nexport interface FilesystemNodeRecents extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Recents;\r\n}\r\n\r\nexport interface FilesystemNodeSearch extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Search;\r\n}\r\n\r\nexport interface FilesystemNodeWorkspace extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Workspace;\r\n rootFolderId: string;\r\n isDefault: boolean;\r\n listingNode: FilesystemJs | undefined;\r\n sharedWith: SharedFilesystemMappingJs[];\r\n invited: SharedFilesystemMappingJs[];\r\n users: SharedFilesystemMappingJs[];\r\n viewOnly: boolean;\r\n isOwner: boolean;\r\n owner?: SsoResponse;\r\n ownerEmail: string;\r\n userOnly: boolean;\r\n httpsOnly: boolean;\r\n isArchived: boolean;\r\n isFavorite: boolean;\r\n}\r\n\r\nexport interface FilesystemNodeInvitation extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Invitation;\r\n owner: SsoResponse;\r\n sender: SsoResponse;\r\n message: string;\r\n listingNode: InvitationJs | undefined;\r\n}\r\n\r\nexport interface FilesystemNodeFolder extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Folder;\r\n listingNode: FolderRowJs | undefined;\r\n viewOnly: boolean;\r\n updated?: Date;\r\n}\r\n\r\nexport interface FilesystemNodeShortcut extends FilesystemNode {\r\n readonly type: FilesystemNodeType.Shortcut;\r\n listingNode: ShortcutJs | undefined;\r\n shortcutType: ShortcutType;\r\n prototypeUrl: string;\r\n shortcut: string;\r\n isExpoProject: boolean;\r\n viewOnly: boolean;\r\n updated?: Date;\r\n generated?: Date;\r\n shortcutState: ShortcutStateName;\r\n feedbackEnabled: boolean;\r\n isUserOnly: boolean;\r\n hasPassword: boolean;\r\n isUserOnlyWorkspace: boolean;\r\n notificationState: ShortcutNotificationStateJs;\r\n}\r\n\r\nexport type FilesystemNodeTypes =\r\n | FilesystemNodeRoot\r\n | FilesystemNodeFolder\r\n | FilesystemNodeShortcut\r\n | FilesystemNodeWorkspace\r\n | FilesystemNodeInvitation\r\n | FilesystemNodeRecents\r\n | FilesystemNodeSearch;\r\n\r\nexport type FilesystemNodeMovable = FilesystemNodeFolder | FilesystemNodeShortcut;\r\nexport type FilesystemNodeDeletable = FilesystemNodeFolder | FilesystemNodeShortcut | FilesystemNodeWorkspace;\r\nexport type FilesystemNodeClonable = FilesystemNodeShortcut;\r\n\r\nexport interface FilesystemNode {\r\n type: FilesystemNodeType;\r\n id: string;\r\n name: string;\r\n parent: FilesystemNodeTypes | undefined;\r\n siblings: FilesystemNodeTypes[];\r\n listingNode: any;\r\n created: Date;\r\n totalItems: number;\r\n}\r\n\r\nexport interface FilesystemNodeWithContents {\r\n node: FilesystemNodeTypes;\r\n contents: FilesystemNodeTypes[];\r\n}\r\n\r\nexport interface WorkspaceRights {\r\n usersManage: boolean;\r\n usersInvite: boolean;\r\n usersRemove: boolean;\r\n securityConfigure: boolean;\r\n workspaceDelete: boolean;\r\n workspaceRename: boolean;\r\n workspaceArchive: boolean;\r\n userLeave: boolean;\r\n workspaceJoin: boolean;\r\n}\r\n\r\nexport interface CreateWorkspaceModel {\r\n workspaceName: string;\r\n userViewOnly: boolean;\r\n}\r\n\r\nconst enum MentionSourceTypeEnum {\r\n Issue = 0,\r\n IssueComment = 1,\r\n PublishNote = 2,\r\n}\r\n\r\nexport type MentionTypeName = keyof typeof MentionSourceTypeEnum;\r\nexport type MentionTypeNames = { readonly [P in MentionTypeName]: P };\r\n\r\nexport const MentionType: MentionTypeNames = {\r\n Issue: \"Issue\",\r\n IssueComment: \"IssueComment\",\r\n PublishNote: \"PublishNote\",\r\n};\r\nexport const MentionTypes = Object.values(MentionType);\r\n\r\nexport type ProjectTypes = \"rp\" | \"sketch\" | \"image\";\r\nexport const ProjectType: Record = {\r\n rp: \"rp\",\r\n sketch: \"sketch\",\r\n image: \"image\",\r\n};\r\n","import {\r\n FilesystemJs, FolderRowJs, InvitationJs, ShortcutJs,\r\n} from \"@shared/models\";\r\n\r\nimport { jsDateFromAspDateString as toJsDate } from \"@/common/lib\";\r\nimport { BreadcrumbJson } from \"@/services/models\";\r\n\r\nimport {\r\n FilesystemNodeFolder,\r\n FilesystemNodeInvitation,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n FilesystemNodeWorkspace,\r\n ShortcutStateName,\r\n} from \"./types\";\r\n\r\nfunction getSharedUsers(fs: FilesystemJs) {\r\n return fs.SharedUsers2 || [];\r\n}\r\n\r\nfunction getInvitedUsers(fs: FilesystemJs) {\r\n return fs.InvitedUsers2 || [];\r\n}\r\n\r\nexport function toWorkspaceNode(item: FilesystemJs, parent: FilesystemNodeTypes): FilesystemNodeWorkspace {\r\n const sharedWith = getSharedUsers(item);\r\n const invited = getInvitedUsers(item);\r\n return {\r\n ...common(item),\r\n id: item.FilesystemId,\r\n name: item.DisplayName,\r\n type: FilesystemNodeType.Workspace,\r\n parent,\r\n isDefault: item.IsDefaultFs,\r\n rootFolderId: \"\",\r\n listingNode: item,\r\n viewOnly: item.ViewerFs,\r\n isOwner: !item.Owner,\r\n sharedWith,\r\n invited,\r\n users: [...sharedWith, ...invited],\r\n owner: item.OwnerSso,\r\n ownerEmail: item.Owner,\r\n userOnly: item.UserViewOnly,\r\n httpsOnly: item.HttpsOnly,\r\n isArchived: item.IsArchived,\r\n isFavorite: item.IsFavorite,\r\n };\r\n}\r\n\r\nexport function toInvitationNode(item: InvitationJs, parent: FilesystemNodeTypes): FilesystemNodeInvitation {\r\n return {\r\n ...common(item),\r\n parent,\r\n id: item.FilesystemId,\r\n name: item.FilesystemName,\r\n type: FilesystemNodeType.Invitation,\r\n owner: item.Owner2,\r\n sender: item.Sender,\r\n message: item.Message,\r\n listingNode: item,\r\n };\r\n}\r\n\r\nexport function toFolderNode(item: FolderRowJs, parent: FilesystemNodeTypes): FilesystemNodeFolder {\r\n return {\r\n ...common(item),\r\n id: item.FolderId,\r\n name: item.FolderName,\r\n type: FilesystemNodeType.Folder,\r\n viewOnly: false,\r\n parent,\r\n listingNode: item,\r\n updated: item.ModifiedOn && item.ModifiedOn.Value ? toJsDate(item.ModifiedOn.Value) : toJsDate(item.CreatedOn),\r\n };\r\n}\r\n\r\nexport function toShortcutNode(item: ShortcutJs, parent: FilesystemNodeTypes): FilesystemNodeShortcut {\r\n const shortcut = item.Shortcut.toLowerCase();\r\n return {\r\n ...common(item),\r\n id: shortcut,\r\n name: item.Name,\r\n type: FilesystemNodeType.Shortcut,\r\n parent,\r\n prototypeUrl: item.PrototypeUrl,\r\n shortcut,\r\n shortcutType: item.ShortcutType,\r\n shortcutState: item.ShortcutState as ShortcutStateName,\r\n isExpoProject: item.IsExpoProject,\r\n listingNode: item,\r\n viewOnly: item.InFsViewerFolder,\r\n feedbackEnabled: item.FeedbackEnabled,\r\n isUserOnly: item.IsUserOnly,\r\n hasPassword: item.HasPassword,\r\n updated: item.ModifiedOn ? toJsDate(item.ModifiedOn) : toJsDate(item.CreatedOn),\r\n generated: item.TargetPrototypeGenerationTimestamp ? toJsDate(item.TargetPrototypeGenerationTimestamp) : undefined,\r\n isUserOnlyWorkspace: item.IsUserOnlyWorkspace,\r\n notificationState: item.NotificationState,\r\n };\r\n}\r\n\r\nexport function common(item: { CreatedOn: string }) {\r\n return {\r\n created: toJsDate(item.CreatedOn),\r\n listingNode: item,\r\n totalItems: 10,\r\n sharedWith: [],\r\n siblings: [] as FilesystemNodeTypes[],\r\n };\r\n}\r\n\r\nexport function breadcrumbToWorkspaceNode(\r\n breadcrumb: BreadcrumbJson,\r\n existing: FilesystemNodeTypes | undefined,\r\n): FilesystemNodeWorkspace {\r\n const mapped = {\r\n id: breadcrumb.id,\r\n name: breadcrumb.name,\r\n rootFolderId: breadcrumb.fsRootFolderId,\r\n isDefault: breadcrumb.isDefaultFs,\r\n };\r\n if (existing && existing.type === FilesystemNodeType.Workspace) {\r\n return {\r\n ...existing,\r\n ...mapped,\r\n };\r\n }\r\n return {\r\n ...fromBreadcrumb(breadcrumb),\r\n ...mapped,\r\n type: FilesystemNodeType.Workspace,\r\n viewOnly: false,\r\n userOnly: false,\r\n httpsOnly: false,\r\n isOwner: false,\r\n sharedWith: [],\r\n invited: [],\r\n users: [],\r\n owner: undefined,\r\n ownerEmail: \"\",\r\n isArchived: false,\r\n isFavorite: false,\r\n };\r\n}\r\n\r\nexport function breadcrumbToFolderNode(\r\n breadcrumb: BreadcrumbJson,\r\n existing: FilesystemNodeTypes | undefined,\r\n): FilesystemNodeFolder {\r\n const mapped = {\r\n id: breadcrumb.id,\r\n name: breadcrumb.name,\r\n };\r\n\r\n if (existing && existing.type === FilesystemNodeType.Folder) {\r\n return {\r\n ...existing,\r\n ...mapped,\r\n };\r\n }\r\n\r\n return {\r\n ...fromBreadcrumb(breadcrumb),\r\n ...mapped,\r\n type: FilesystemNodeType.Folder,\r\n viewOnly: false,\r\n };\r\n}\r\n\r\nfunction fromBreadcrumb(breadcrumb: BreadcrumbJson) {\r\n return {\r\n id: breadcrumb.id,\r\n name: breadcrumb.name,\r\n listingNode: undefined,\r\n siblings: [],\r\n parent: undefined,\r\n totalItems: 0,\r\n created: new Date(),\r\n };\r\n}\r\n","import {\r\n FilesystemNode,\r\n FilesystemNodeClonable,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n MentionType,\r\n MentionTypeName,\r\n} from \"@/common/fs\";\r\nimport {\r\n FilesystemNodeWorkspace, WorkspaceRights, FilesystemNodeFolder, FilesystemNodeRoot,\r\n} from \"@/common/fs/types\";\r\nimport { SsoResponse, ShortcutNotificationStateJs, FolderNotificationStateJs } from \"@/generated/models\";\r\nimport { DirectoryTreeNode, ShortcutType } from \"@/services/models\";\r\n\r\nimport { orderBy } from \"../lib\";\r\n\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nexport function isRootNode(node: any): node is FilesystemNodeRoot {\r\n return !!node && node.type === FilesystemNodeType.Root;\r\n}\r\n\r\nexport function isWorkspaceNode(node: any): node is FilesystemNodeWorkspace {\r\n return !!node && node.type === FilesystemNodeType.Workspace && !!node.id;\r\n}\r\n\r\nexport function isShortcutNode(node: any): node is FilesystemNodeShortcut {\r\n return !!node && node.type === FilesystemNodeType.Shortcut && !!node.shortcut;\r\n}\r\n\r\nexport function isFilesystemFolderNode(node: any): node is FilesystemNodeFolder {\r\n return !!node && !node.isSearchResult && node.type === FilesystemNodeType.Folder;\r\n}\r\n\r\nexport function isShortcutSearchNode(node: any): node is FilesystemSearchItem {\r\n return !!node && node.isSearchResult;\r\n}\r\n\r\nexport function isCloneableNode(node: FilesystemNode): node is FilesystemNodeClonable {\r\n if (isShortcutNode(node)) {\r\n const cloneableShortcutTypes: ShortcutType[] = [ShortcutType.Rp, ShortcutType.Lib];\r\n return cloneableShortcutTypes.some(type => node.shortcutType === type);\r\n }\r\n return false;\r\n}\r\n\r\nexport function sortDirectoryTree(treeItems: DirectoryTreeNode[]) {\r\n return orderBy(\r\n treeItems,\r\n item => ({ value: item.defaultWorkspace || false, descending: true }),\r\n item => ({ value: item.isFavorite || false, descending: true }),\r\n item => ({ value: item.name }),\r\n );\r\n}\r\n\r\nexport interface NodeOptions {\r\n folderId: string;\r\n canMove: boolean;\r\n canDelete: boolean;\r\n}\r\n\r\nexport function getNodeOptions(node: FilesystemNodeTypes | undefined): NodeOptions {\r\n const options: NodeOptions = {\r\n folderId: \"\",\r\n canDelete: false,\r\n canMove: false,\r\n };\r\n if (!node) {\r\n return options;\r\n }\r\n\r\n if (node.type === FilesystemNodeType.Folder) {\r\n options.canDelete = node.viewOnly === false;\r\n options.canMove = node.viewOnly === false;\r\n options.folderId = node.id;\r\n }\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n options.canDelete = node.viewOnly === false;\r\n options.canMove = node.viewOnly === false;\r\n options.folderId = node.rootFolderId;\r\n }\r\n return options;\r\n}\r\n\r\nexport interface WorkspaceRightsContext {\r\n userInfo: SsoResponse;\r\n isSubInstance: boolean;\r\n hasAuthorRights: boolean;\r\n isAdminUser: boolean;\r\n}\r\n\r\nexport function computeWorkspaceRights(\r\n workspace: FilesystemNodeWorkspace,\r\n env: WorkspaceRightsContext,\r\n): WorkspaceRights {\r\n const {\r\n isDefault, viewOnly, isOwner, sharedWith,\r\n } = workspace;\r\n const {\r\n isSubInstance, hasAuthorRights, isAdminUser, userInfo,\r\n } = env;\r\n\r\n // Users can leave any workspace except their private default\r\n // Admins can leave only those workspaces that they explicitly joined\r\n const joinedWorkspace = isOwner || sharedWith.some(item => userInfo && userInfo.userId === item.user.userId);\r\n const canLeave = joinedWorkspace && !isDefault;\r\n\r\n if (isDefault || (isSubInstance && !hasAuthorRights)) {\r\n return {\r\n usersManage: false,\r\n usersInvite: false,\r\n usersRemove: false,\r\n userLeave: canLeave,\r\n securityConfigure: false,\r\n workspaceDelete: false,\r\n workspaceRename: false,\r\n workspaceJoin: false,\r\n workspaceArchive: false,\r\n };\r\n }\r\n const canBeShared = sharedWith && sharedWith.some(item => !item.isViewer);\r\n return {\r\n usersManage: !isDefault,\r\n usersInvite: !viewOnly && (!isSubInstance || (isSubInstance && hasAuthorRights)),\r\n usersRemove: !!isOwner || isAdminUser,\r\n securityConfigure: (isOwner || isAdminUser) && !isDefault,\r\n workspaceDelete: (isOwner || isAdminUser) && !isDefault,\r\n workspaceRename: !viewOnly && !isDefault && (!isSubInstance || (isSubInstance && hasAuthorRights)),\r\n userLeave: canLeave && (isSubInstance || !isOwner || canBeShared),\r\n workspaceJoin: !isOwner && !isDefault && !joinedWorkspace && isAdminUser,\r\n workspaceArchive: !viewOnly && !isDefault && (!isSubInstance || (isSubInstance && hasAuthorRights)),\r\n };\r\n}\r\n\r\nexport function getUnreadCommentMentions(\r\n notificationState: ShortcutNotificationStateJs | FolderNotificationStateJs | undefined,\r\n): number {\r\n return getUnreadMentions(notificationState, [MentionType.Issue, MentionType.IssueComment]);\r\n}\r\n\r\nexport function getUnreadPublishNotesMentions(\r\n notificationState: ShortcutNotificationStateJs | FolderNotificationStateJs | undefined,\r\n): number {\r\n return getUnreadMentions(notificationState, MentionType.PublishNote);\r\n}\r\n\r\nexport function getUnreadMentions(\r\n notificationState: ShortcutNotificationStateJs | FolderNotificationStateJs | undefined,\r\n mentionTypes: MentionTypeName | MentionTypeName[],\r\n): number {\r\n let unreadMentionsCount = 0;\r\n if (notificationState && notificationState.UnreadMentionsCount) {\r\n const unreadMentions = notificationState.UnreadMentionsCount;\r\n const types = Array.isArray(mentionTypes) ? [...mentionTypes] : [mentionTypes];\r\n\r\n for (const mentionType of types) {\r\n if (unreadMentions[mentionType]) unreadMentionsCount += unreadMentions[mentionType];\r\n }\r\n }\r\n\r\n return unreadMentionsCount;\r\n}\r\n","import { Validator } from \"lakmus\";\r\n\r\nimport { IssueCommentJs } from \"@/generated/models\";\r\nimport { ManageUsersModel } from \"@/services/models/account\";\r\nimport { CreateExpoProjectModel } from \"@/services/models/expo\";\r\nimport { FolderCreateModel } from \"@/services/models/filesystem\";\r\nimport { ProjectCreateModel } from \"@/services/models/project\";\r\nimport { ShortcutPluginMapping } from \"@/services/models/sites\";\r\n\r\nimport { CreateWorkspaceModel } from \"./types\";\r\n\r\nclass FolderCreateModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.Name)\r\n .notEmpty()\r\n .withMessage(\"Please enter Folder name.\");\r\n }\r\n}\r\nexport const FolderCreateModelValidator = new FolderCreateModelValidatorInner();\r\n\r\nclass CreateWorkspaceModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.workspaceName)\r\n .notEmpty()\r\n .withMessage(\"Please enter Workspace name.\");\r\n }\r\n}\r\nexport const CreateWorkspaceModelValidator = new CreateWorkspaceModelValidatorInner();\r\n\r\nclass ManageUsersInviteModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.usersInvite)\r\n .must(value => !!value && !!value.userEmails && value.userEmails.length > 0)\r\n .withMessage(\"Please specify at least one Email.\");\r\n }\r\n}\r\nexport const ManageUsersInviteModelValidator = new ManageUsersInviteModelValidatorInner();\r\n\r\nclass ProjectCreateModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.Name)\r\n .notEmpty()\r\n .withMessage(\"Please enter Project name.\");\r\n }\r\n}\r\nexport const ProjectCreateModelValidator = new ProjectCreateModelValidatorInner();\r\n\r\nclass CreateExpoProjectModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.Name)\r\n .notEmpty()\r\n .withMessage(\"Please enter Project name.\");\r\n }\r\n}\r\nexport const CreateExpoProjectModelValidator = new CreateExpoProjectModelValidatorInner();\r\n\r\nclass PluginModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.PluginName)\r\n .notEmpty()\r\n .withMessage(\"Please enter Plugin name.\");\r\n\r\n this.ruleFor(x => x.Content)\r\n .notEmpty()\r\n .withMessage(\"Please enter Plugin content.\");\r\n }\r\n}\r\nexport const PluginModelValidator = new PluginModelValidatorInner();\r\n\r\nclass CommentModelValidatorInner extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor(x => x.commentText)\r\n .notEmpty()\r\n .withMessage(\"Please enter text.\");\r\n }\r\n}\r\nexport const CommentModelValidator = new CommentModelValidatorInner();\r\n","export const BridgeEvents = {\r\n bridgeReady: \"bridgeReady\",\r\n ready: \"ready\",\r\n playerMessageCenterEvent: \"playerMessageCenterEvent\",\r\n inspectorToggled: \"inspectorToggled\",\r\n documentConfiguration: \"documentConfiguration\",\r\n previewGenerationComplete: \"generationComplete\",\r\n pluginCreated: \"pluginCreated\",\r\n updateIsPanZoomEnabled: \"updateIsPanZoomEnabled\",\r\n};\r\n\r\nexport const AppEvents = {\r\n starting: \"AppEvents.starting\",\r\n};\r\n\r\nexport const commands = {\r\n addHandoff: \"addHandoff\",\r\n getPageData: \"getPageData\",\r\n getDocumentConfiguration: \"getDocumentConfiguration\",\r\n inspectorEnable: \"inspectorEnable\",\r\n inspectorDisable: \"inspectorDisable\",\r\n inspectorShow: \"inspectorShow\",\r\n inspectorHide: \"inspectorHide\",\r\n keyboardEvent: \"keyboardEvent\",\r\n selectAdaptiveView: \"selectAdaptiveView\",\r\n setZoom: \"setZoom\",\r\n pluginToggle: \"pluginToggle\",\r\n hidePlayerControls: \"hidePlayerControls\",\r\n hidePinsOverlay: \"hidePinsOverlay\",\r\n selectPage: \"selectPage\",\r\n resizePlayerContent: \"resizePlayerContent\",\r\n selectScaleOption: \"selectScaleOption\",\r\n selectOverlayOption: \"selectOverlayOption\",\r\n\r\n triggerUpdateIsPanZoomEnabled: \"updateIsPanZoomEnabled\",\r\n\r\n generateLocalExpoPreview: \"generateLocalExpoPreview\",\r\n\r\n reload: \"reload\",\r\n refreshViewPort: \"refreshViewPort\",\r\n\r\n navigateToIssue: \"navigateToIssue\",\r\n updateNotificationState: \"updateNotificationState\",\r\n\r\n exitCommentMode: \"exitCommentMode\",\r\n reset: \"reset\",\r\n};\r\n\r\nexport const KeyboardEvents = {\r\n ctrlOrCmdPlus: \"ctrlOrCmdPlus\",\r\n ctrlOrCmdMinus: \"ctrlOrCmdMinus\",\r\n ctrlOrCmdZero: \"ctrlOrCmdZero\",\r\n spaceBarUp: \"spaceBarUp\",\r\n spaceBarDown: \"spaceBarDown\",\r\n comma: \"comma\",\r\n period: \"period\",\r\n esc: \"esc\",\r\n comment: \"comment\",\r\n};\r\n","export const enum ScaleValues {\r\n ViewAt100 = \"0\",\r\n ScaleToWidth = \"1\",\r\n ScaleToFit = \"2\",\r\n ZoomMode = \"3\"\r\n}\r\n\r\nexport interface OverlayOptions {\r\n hotspots?: boolean;\r\n comments?: boolean;\r\n notes?: boolean;\r\n}\r\n","export default {\r\n sitemap: {\r\n id: \"sitemapHost\",\r\n gid: 1,\r\n },\r\n notes: {\r\n id: \"pageNotesHost\",\r\n gid: 2,\r\n },\r\n discussions: {\r\n id: \"feedbackHost\",\r\n gid: 4,\r\n },\r\n handoff: {\r\n id: \"handoffHost\",\r\n gid: 5,\r\n },\r\n};\r\n","export function find(obj: { [key: string]: T }, func: (obj: T) => boolean) {\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (func(obj[key])) return obj[key];\r\n }\r\n }\r\n}\r\n\r\ninterface Sorter {\r\n value: SortingArg;\r\n descending?: boolean;\r\n}\r\ninterface SorterNormalized {\r\n value1: any;\r\n value2: any;\r\n descending: boolean;\r\n}\r\n\r\ntype SortingPrimitive = Date | number | string | boolean;\r\ntype SortingArg = Sorter | SortingPrimitive;\r\ntype SortingFn = (item: T) => SortingArg;\r\n\r\nexport function sort(items: T[], isDescending = false) {\r\n return isDescending ? orderByDescending(items, a => a) : orderBy(items, a => a);\r\n}\r\n\r\nexport function orderByDescending(items: T[], func: SortingFn) {\r\n return orderBy(items, item => ({ value: func(item), descending: true }));\r\n}\r\n\r\nexport function orderBy(items: T[], ...funcs: Array>) {\r\n return items.sort((a, b) => {\r\n let result = 0;\r\n for (const func of funcs) {\r\n const { value1, value2, descending } = normalizeSortingArgument(func, a, b);\r\n result = order(value1, value2, descending);\r\n if (result !== 0) break;\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nfunction normalizeSortingArgument(func: SortingFn, a: T, b: T): SorterNormalized {\r\n const first = func(a);\r\n const second = func(b);\r\n let descending: boolean = false;\r\n let value1;\r\n let value2;\r\n if (isSortingObject(first) && isSortingObject(second)) {\r\n descending = first.descending || false;\r\n value1 = first.value;\r\n value2 = second.value;\r\n } else {\r\n value1 = first;\r\n value2 = second;\r\n }\r\n return { value1, value2, descending };\r\n}\r\n\r\nfunction isSortingObject(arg: SortingArg): arg is Sorter {\r\n return typeof arg === \"object\" && arg !== null && !(arg instanceof Date);\r\n}\r\n\r\nexport function order(first: any, second: any, isDescending = false) {\r\n if (isDescending) {\r\n [first, second] = [second, first];\r\n }\r\n\r\n // Check if both are numbers\r\n if (!isNaN(first) && !isNaN(second)) {\r\n return first - second;\r\n }\r\n\r\n // Check if both cannot be evaluated\r\n if (first === null && second === null) {\r\n return 0;\r\n }\r\n\r\n [first, second] = [first, second].map(s => (s || \"\").toString().toLocaleLowerCase());\r\n\r\n if (first > second) return 1;\r\n if (first < second) return -1;\r\n\r\n return 0;\r\n}\r\n\r\nexport function removeFirst(array: T[], func: (item: T) => boolean) {\r\n return array.splice(array.findIndex(item => func(item)), 1);\r\n}\r\n\r\nexport function removeAll(array: T[], func: (item: T) => boolean) {\r\n const indexesToRemove = findIndexes(array, func);\r\n const removed: T[] = [];\r\n for (let i = indexesToRemove.length - 1; i >= 0; i--) {\r\n const indexToRemove = indexesToRemove[i];\r\n removed.push(...array.splice(indexToRemove, 1));\r\n }\r\n return removed;\r\n}\r\n\r\nexport function findIndexes(array: T[], func: (item: T) => boolean) {\r\n const initial: number[] = [];\r\n const indexes = array.reduce((a, e, i) => {\r\n if (func(e)) {\r\n a.push(i);\r\n }\r\n return a;\r\n }, initial);\r\n return indexes;\r\n}\r\n\r\nexport function formatArray(a: any[]) {\r\n return [a.slice(0, -1).join(\", \"), a.slice(-1)[0]].join(a.length < 2 ? \"\" : \" and \");\r\n}\r\n\r\nexport function splitArray(list: T[], chunkLength: number) {\r\n const chunks = [];\r\n let chunk = [];\r\n let i = 0;\r\n let l = 0;\r\n const n = list.length;\r\n while (i < n) {\r\n chunk.push(list[i]);\r\n l++;\r\n if (l === chunkLength) {\r\n chunks.push(chunk);\r\n chunk = [];\r\n l = 0;\r\n }\r\n i++;\r\n }\r\n if (chunk.length) {\r\n chunks.push(chunk);\r\n }\r\n return chunks;\r\n}\r\n\r\nexport function flatten(items: T[]): T[] {\r\n return items.reduce((a: T[], b: T | T[]) => a.concat(Array.isArray(b) ? flatten(b) : b), []);\r\n}\r\n\r\nexport function arrayToMap>(\r\n array: TVal[],\r\n keyField: ((item: TVal) => string | number) | keyof TVal\r\n): Record {\r\n return array.reduce(\r\n (acc, item) => {\r\n let keyValue: string | number;\r\n if (typeof keyField === \"function\") {\r\n keyValue = keyField(item);\r\n } else {\r\n keyValue = item[keyField];\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n acc[keyValue] = item;\r\n\r\n return acc;\r\n },\r\n {} as Record\r\n );\r\n}\r\n\r\nexport function distinct(value: T, index: number, self: T[]) {\r\n return self.indexOf(value) === index;\r\n}\r\n","import { detect } from \"detect-browser\";\r\n\r\nimport { equalsIgnoringCase } from \"@/common/lib/string\";\r\n\r\nconst inBrowser = typeof window !== \"undefined\";\r\nexport const hasIntersectionObserver = inBrowser && \"IntersectionObserver\" in window;\r\nexport const hasMutationObserver = inBrowser && \"MutationObserver\" in window;\r\nexport const hasServiceWorker = inBrowser && \"serviceWorker\" in navigator;\r\nexport const hasNotifications = inBrowser && typeof window.Notification !== \"undefined\";\r\n\r\nexport const copyTextToClipboard = (text: string, wrapper?: Element) => {\r\n const container = wrapper || document.body;\r\n const textarea = document.createElement(\"textarea\");\r\n textarea.textContent = text;\r\n textarea.style.position = \"fixed\";\r\n textarea.setAttribute(\"readonly\", \"\");\r\n container.appendChild(textarea);\r\n textarea.focus();\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\");\r\n } catch (ex) {\r\n console.warn(\"Copy to clipboard failed.\", ex);\r\n return false;\r\n } finally {\r\n container.removeChild(textarea);\r\n }\r\n};\r\n\r\nfunction createScrollbarMeasure(measure: (measure: HTMLElement) => void) {\r\n const scrollbar = document.createElement(\"div\");\r\n scrollbar.className = \"modal-scrollbar-measure\";\r\n document.body.appendChild(scrollbar);\r\n measure(scrollbar);\r\n document.body.removeChild(scrollbar);\r\n}\r\n\r\nexport const measureScrollbar = () => {\r\n // use default of 20px, when failed to calculate scrollbar\r\n const scrollbarMeasures = { width: 20, height: 20 };\r\n try {\r\n createScrollbarMeasure(measure => {\r\n const rect = measure.getBoundingClientRect();\r\n scrollbarMeasures.width = rect.width - measure.clientWidth;\r\n scrollbarMeasures.height = rect.height - measure.clientHeight;\r\n });\r\n } catch {\r\n return scrollbarMeasures;\r\n }\r\n\r\n return scrollbarMeasures;\r\n};\r\n\r\nexport function addEventListeners(el: EventTarget, events: string[], handler: EventListener) {\r\n for (let i = 0, len = events.length; i < len; i++) {\r\n el.addEventListener(events[i], handler);\r\n }\r\n}\r\n\r\nexport function removeEventListeners(el: EventTarget, events: string[], handler: EventListener) {\r\n for (let i = 0, len = events.length; i < len; i++) {\r\n el.removeEventListener(events[i], handler);\r\n }\r\n}\r\n\r\nexport function testSameOrigin(first: string, second: string) {\r\n const a = document.createElement(\"a\");\r\n const b = document.createElement(\"a\");\r\n\r\n a.href = first;\r\n b.href = second;\r\n\r\n return a.hostname === b.hostname && a.port === b.port && a.protocol === b.protocol;\r\n}\r\n\r\nexport const KeyCodes = {\r\n esc: 27,\r\n tab: 9,\r\n enter: 13,\r\n space: 32,\r\n comma: 188,\r\n up: 38,\r\n left: 37,\r\n right: 39,\r\n down: 40,\r\n backspace: 8,\r\n delete: [8, 46],\r\n a: 65,\r\n colon: 186,\r\n};\r\n\r\nexport type KeyCodeKeys = keyof typeof KeyCodes;\r\n\r\nexport const Keys: { [k in KeyCodeKeys]: string } = {\r\n esc: \"Escape\",\r\n tab: \"Tab\",\r\n enter: \"Enter\",\r\n space: \" \",\r\n comma: \",\",\r\n up: \"ArrowUp\",\r\n left: \"ArrowLeft\",\r\n right: \"ArrowRight\",\r\n down: \"ArrowDown\",\r\n backspace: \"Backspace\",\r\n delete: \"Delete\",\r\n a: \"a\",\r\n colon: \":\",\r\n};\r\n\r\nexport const isKeyboardKey = (event: KeyboardEvent, code: KeyCodeKeys): event is KeyboardEvent => {\r\n if (!(event instanceof KeyboardEvent)) return false;\r\n\r\n const keyCode = KeyCodes[code];\r\n if (keyCode) {\r\n if (Array.isArray(keyCode)) {\r\n if (keyCode.includes(event.keyCode)) return true;\r\n }\r\n if (event.keyCode === keyCode) {\r\n return true;\r\n }\r\n }\r\n return equalsIgnoringCase(event.key, Keys[code]);\r\n};\r\n\r\nconst browser = detect();\r\nexport const isSafari = !!browser && browser.name === \"safari\";\r\nexport const isIE = !!browser && browser.name === \"ie\";\r\nexport const isEdge = !!browser && browser.name === \"edge\";\r\nexport const isApple = !!browser && (browser.os === \"iOS\" || browser.os === \"Mac OS\");\r\nexport const isWindows = !!browser\r\n && (browser.os === \"Windows 7\"\r\n || browser.os === \"Windows 10\"\r\n || browser.os === \"Windows 3.11\"\r\n || browser.os === \"Windows 95\"\r\n || browser.os === \"Windows 98\"\r\n || browser.os === \"Windows 2000\"\r\n || browser.os === \"Windows XP\"\r\n || browser.os === \"Windows Server 2003\"\r\n || browser.os === \"Windows Vista\"\r\n || browser.os === \"Windows 8\"\r\n || browser.os === \"Windows 8.1\"\r\n || browser.os === \"Windows ME\");\r\n\r\nexport const browserVersion = browser ? browser.version : null;\r\n\r\nexport function isIframe() {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n}\r\n","const sizeSymbols = [\"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\r\nexport const fileSize = (bytes: number) => {\r\n if (bytes === 0) {\r\n return bytes + sizeSymbols[0];\r\n }\r\n let i = -1;\r\n do {\r\n bytes /= 1000;\r\n i++;\r\n } while (bytes > 999);\r\n\r\n return Math.max(bytes, 0.1).toFixed(1) + sizeSymbols[i];\r\n};\r\n","export function jsDateFromAspDateString(aspDateString: string) {\r\n return new Date(Number(aspDateString.substring(6, aspDateString.length - 2)));\r\n}\r\n","import { order } from \"./array\";\r\n\r\nexport function deepCopy(obj: T) {\r\n return JSON.parse(JSON.stringify(obj)) as T;\r\n}\r\n\r\nexport function objectsSort(items: T[], path: string, isDescending = false): T[] {\r\n return items.sort((a, b) => {\r\n const sortA = getObjectValueByPath(a, path);\r\n const sortB = getObjectValueByPath(b, path);\r\n\r\n return order(sortA, sortB, isDescending);\r\n });\r\n}\r\n\r\nexport function getObjectValueByPath(obj: T, path: string, fallback?: any): any {\r\n if (!path || path.constructor !== String) return fallback;\r\n path = path.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n path = path.replace(/^\\./, \"\"); // strip a leading dot\r\n return getNestedValue(obj, path.split(\".\"), fallback);\r\n}\r\n\r\nexport function getNestedValue(obj: any, path: Array, fallback?: any): any {\r\n const last = path.length - 1;\r\n\r\n if (last < 0) return obj === undefined ? fallback : obj;\r\n\r\n for (let i = 0; i < last; i++) {\r\n if (obj == null) {\r\n return fallback;\r\n }\r\n obj = obj[path[i]];\r\n }\r\n\r\n if (obj == null) return fallback;\r\n\r\n return obj[path[last]] === undefined ? fallback : obj[path[last]];\r\n}\r\n\r\nexport const fromEntries = (arr: Array<[string, T]>): { [key: string]: T } =>\r\n Object.assign({}, ...Array.from(arr, ([k, v]) => ({ [k]: v })));\r\n\r\nfunction noopSelector(el: T): V {\r\n return (el as unknown) as V;\r\n}\r\n\r\nexport function filterByKeys(obj: Record, keys: string[], valueSelector: (el: T) => V = noopSelector) {\r\n const filteredKeys = Object.keys(obj).filter(key => keys.includes(key));\r\n const filtered: Record = {};\r\n\r\n const mapped = filteredKeys.reduce((acc, current) => {\r\n acc[current] = valueSelector(obj[current]);\r\n return acc;\r\n }, filtered);\r\n\r\n return mapped;\r\n}\r\n","// eslint-disable-next-line no-empty-function\r\nexport const noop = () => { };\r\n\r\nexport function memoizer(fun: (n: string) => T) {\r\n const cache: Record = {};\r\n return (n: string) => {\r\n if (cache[n] !== undefined) {\r\n return cache[n];\r\n }\r\n const result = fun(n);\r\n cache[n] = result;\r\n return result;\r\n };\r\n}\r\n","export function isError(err: unknown): err is Error {\r\n return err instanceof Error;\r\n}\r\n\r\nexport function asError(err: unknown): Error {\r\n if (isError(err)) {\r\n return err;\r\n }\r\n\r\n if (typeof err === \"string\") {\r\n return { message: err, name: typeof err };\r\n }\r\n\r\n if (err !== undefined) {\r\n return { message: (err as any).toString(), name: typeof err };\r\n }\r\n\r\n return new Error();\r\n}\r\n","export function round(value: number, precision = 0) {\r\n const multiplier = Math.pow(10, precision);\r\n return Math.round(value * multiplier) / multiplier;\r\n}\r\n\r\nexport function randomBetween(min: number, max: number) {\r\n return Math.random() * (max - min) + min;\r\n}\r\n\r\nexport function randomIntegerBetween(min: number, max: number) {\r\n const rMin = Math.ceil(min);\r\n const rMax = Math.floor(max);\r\n return Math.floor(Math.random() * (rMax - rMin)) + rMin;\r\n}\r\n","export function delay(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\nexport async function measure(action: (() => any) | Promise, cb: () => any, ms: number) {\r\n const measurer = setInterval(() => {\r\n clearInterval(measurer);\r\n cb();\r\n }, ms);\r\n if (typeof action === \"function\") {\r\n await action();\r\n } else {\r\n await action;\r\n }\r\n clearInterval(measurer);\r\n}\r\n\r\nexport async function retryUntilTruthy(\r\n fn: () => T | Promise,\r\n maxRetries?: number,\r\n retryTimeout?: number,\r\n timeout?: number,\r\n) {\r\n const infinite = true;\r\n let shouldCancel = false;\r\n const cancelTimeout = timeout ? setInterval(() => { shouldCancel = true; }, timeout) : undefined;\r\n while (infinite) {\r\n if (shouldCancel) return;\r\n // eslint-disable-next-line no-await-in-loop\r\n const result = await fn();\r\n if (result) {\r\n if (cancelTimeout) {\r\n clearInterval(cancelTimeout);\r\n }\r\n return result;\r\n }\r\n if (maxRetries) {\r\n if (--maxRetries <= 0) {\r\n if (cancelTimeout) {\r\n clearInterval(cancelTimeout);\r\n }\r\n return result;\r\n }\r\n }\r\n // eslint-disable-next-line no-await-in-loop\r\n await delay(retryTimeout || 0);\r\n }\r\n}\r\n\r\nexport async function retryForever(fn: () => any, retryTimeout?: number) {\r\n let canceled = false;\r\n delay(retryTimeout || 0).then(() => {\r\n retryUntilTruthy(\r\n async () => {\r\n if (canceled) return;\r\n await fn();\r\n return false;\r\n },\r\n undefined,\r\n retryTimeout,\r\n );\r\n });\r\n\r\n return () => {\r\n canceled = true;\r\n };\r\n}\r\n","export function stripProtocol(url: string) {\r\n return url.replace(/(^\\w+:|^)\\/\\//, \"\");\r\n}\r\n\r\nexport function isRelativeUrl(url: string) {\r\n return url.indexOf(\"://\") < 0 && url.indexOf(\"//\") !== 0;\r\n}\r\n\r\nexport const updateQueryStringParam = (url: string, key: string, value: string) => {\r\n const [baseUrl, urlQueryString] = url.split(\"?\");\r\n const newParam = `${key}=${value}`;\r\n let params = `?${newParam}`;\r\n\r\n // If the \"search\" string exists, then build params from it\r\n if (urlQueryString) {\r\n const updateRegex = new RegExp(`([?&])${key}[^&]*`);\r\n const removeRegex = new RegExp(`([?&])${key}=[^&;]+[&;]?`);\r\n\r\n if (typeof value === \"undefined\" || value === null || value === \"\") {\r\n // Remove param if value is empty\r\n params = urlQueryString.replace(removeRegex, \"$1\");\r\n params = params.replace(/[&;]$/, \"\");\r\n } else if (urlQueryString.match(updateRegex) !== null) {\r\n // If param exists already, update it\r\n params = urlQueryString.replace(updateRegex, `$1${newParam}`);\r\n } else {\r\n // Otherwise, add it to end of query string\r\n params = `?${urlQueryString}&${newParam}`;\r\n }\r\n }\r\n\r\n // no parameter was set so we don't need the question mark\r\n params = params === \"?\" ? \"\" : params;\r\n\r\n return baseUrl + params;\r\n};\r\n\r\nexport function getFileExtension(fileName: string) {\r\n return fileName.split(\".\").pop();\r\n}\r\n\r\nexport function getFilenameWithoutExtension(fileName: string) {\r\n return fileName.substring(0, fileName.lastIndexOf(\".\"));\r\n}\r\n\r\nexport function equalsIgnoringCase(s1?: string, s2?: string, useLocale = true) {\r\n if (s1 == null || s2 == null) return false;\r\n\r\n if (useLocale) {\r\n return s1.localeCompare(s2, \"en\", { sensitivity: \"base\" }) === 0;\r\n }\r\n\r\n if (s1.length !== s2.length) return false;\r\n return s1.toLowerCase() === s2.toLowerCase();\r\n}\r\n\r\nexport function dashify(str: string) {\r\n return str\r\n .trim()\r\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\r\n .replace(/\\W/g, m => (/[À-ž]/.test(m) ? m : \"-\"))\r\n .replace(/^-+|-+$/g, \"\")\r\n .toLowerCase();\r\n}\r\n\r\nexport function toKebabCase(str: string) {\r\n const KEBAB_REGEX = /[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g;\r\n return str.replace(KEBAB_REGEX, match => `-${match.toLowerCase()}`);\r\n}\r\n\r\nexport function removeDuplicateForwardSlashes(str: string) {\r\n return str.replace(/(^\\/|[^:]\\/)\\/+/g, \"$1\");\r\n}\r\n\r\nexport function isHttps(str: string) {\r\n return str.toLowerCase().startsWith(\"https://\");\r\n}\r\n\r\nexport function isHttp(str: string) {\r\n return str.toLowerCase().startsWith(\"http://\");\r\n}\r\n\r\nexport function isNullOrEmpty(str: string | undefined | null) {\r\n return str === undefined || str === null || str.trim() === \"\";\r\n}\r\n\r\nexport function parseBool(str: string) {\r\n if (isNullOrEmpty(str)) {\r\n return false;\r\n }\r\n\r\n return str.trim().toLowerCase() === \"true\";\r\n}\r\n\r\n// Remove dashes in string (mainly used for guids)\r\nexport function removeDashes(s: string): string {\r\n return s.replace(/-/g, \"\");\r\n}\r\n\r\n// Empty Guid in string format\r\nexport const EmptyGuid = \"00000000-0000-0000-0000-000000000000\";\r\n\r\nconst lut: string[] = [];\r\nfor (let i = 0; i < 256; i++) {\r\n lut[i] = (i < 16 ? \"0\" : \"\") + i.toString(16);\r\n}\r\n\r\n// Pseudo-generate a guid via js\r\nexport function guid(includeDashes?: boolean, isSecure?: boolean): string {\r\n const rVals = new Uint32Array(4);\r\n const hasCrypto = isSecure && window.crypto != null && window.crypto.getRandomValues != null;\r\n\r\n if (hasCrypto) {\r\n window.crypto.getRandomValues(rVals);\r\n }\r\n\r\n /* eslint-disable no-bitwise */\r\n const d0 = hasCrypto ? (rVals[0] * 0x100000000) >>> 0 : (Math.random() * 0xffffffff) | 0;\r\n const d1 = hasCrypto ? (rVals[1] * 0x100000000) >>> 0 : (Math.random() * 0xffffffff) | 0;\r\n const d2 = hasCrypto ? (rVals[2] * 0x100000000) >>> 0 : (Math.random() * 0xffffffff) | 0;\r\n const d3 = hasCrypto ? (rVals[3] * 0x100000000) >>> 0 : (Math.random() * 0xffffffff) | 0;\r\n\r\n return (\r\n lut[d0 & 0xff]\r\n + lut[(d0 >> 8) & 0xff]\r\n + lut[(d0 >> 16) & 0xff]\r\n + lut[(d0 >> 24) & 0xff]\r\n + (includeDashes ? \"-\" : \"\")\r\n + lut[d1 & 0xff]\r\n + lut[(d1 >> 8) & 0xff]\r\n + (includeDashes ? \"-\" : \"\")\r\n + lut[((d1 >> 16) & 0x0f) | 0x40]\r\n + lut[(d1 >> 24) & 0xff]\r\n + (includeDashes ? \"-\" : \"\")\r\n + lut[(d2 & 0x3f) | 0x80]\r\n + lut[(d2 >> 8) & 0xff]\r\n + (includeDashes ? \"-\" : \"\")\r\n + lut[(d2 >> 16) & 0xff]\r\n + lut[(d2 >> 24) & 0xff]\r\n + lut[d3 & 0xff]\r\n + lut[(d3 >> 8) & 0xff]\r\n + lut[(d3 >> 16) & 0xff]\r\n + lut[(d3 >> 24) & 0xff]\r\n );\r\n /* eslint-enable no-bitwise */\r\n}\r\n\r\nexport function removeParameterFromHash(hash: string, parameter: string) {\r\n if (hash.length === 0) return \"\";\r\n const prms = hash.replace(\"#\", \"\").split(\"&\");\r\n const frmElements = [];\r\n for (let i = 0; i < prms.length; i++) {\r\n const current = prms[i].split(\"=\");\r\n if (current[0] === parameter) continue;\r\n frmElements.push(prms[i]);\r\n }\r\n const fragment = frmElements.join(\"&\");\r\n return fragment.length > 0 ? `#${fragment}` : \"\";\r\n}\r\n\r\nexport function getHashVarString(href: string, query: string) {\r\n const qstring = href.split(\"#\");\r\n if (qstring.length < 2) return \"\";\r\n return getParameter(qstring, query);\r\n}\r\n\r\nfunction getParameter(qstring: string[], query: string) {\r\n const prms = qstring[1].split(\"&\");\r\n const frmelements: string[][] = [];\r\n let current;\r\n let querystr = \"\";\r\n\r\n for (let i = 0; i < prms.length; i++) {\r\n current = prms[i].split(\"=\");\r\n frmelements[i] = [];\r\n frmelements[i][0] = current[0];\r\n frmelements[i][1] = current[1];\r\n }\r\n for (const frmelement of frmelements) {\r\n if (frmelement[0].toLowerCase() === query.toLowerCase()) {\r\n querystr = frmelement[1];\r\n break;\r\n }\r\n }\r\n\r\n return querystr;\r\n}\r\n\r\nexport function uuid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\r\n}\r\n\r\nexport function uuidDashify(str: string) {\r\n return `${str.substr(0, 8)}-${str.substr(8, 4)}-${str.substr(12, 4)}-${str.substr(16, 4)}-${str.substr(20)}`;\r\n}\r\n\r\nexport const makeId = (length: number) => {\r\n let result = \"\";\r\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n const charactersLength = characters.length;\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n return result;\r\n};\r\n\r\nexport const multiSplit = (str: string, separators: string[], removeEmptyEntries = false): string[] => {\r\n let value = str;\r\n if (separators.length === 0) return str.split(\"\");\r\n\r\n const tempChar = separators[0];\r\n for (let i = 1; i < separators.length; i++) {\r\n value = value.split(separators[i]).join(tempChar);\r\n }\r\n const result = value.split(tempChar);\r\n if (removeEmptyEntries) {\r\n return result.filter(Boolean);\r\n }\r\n return result;\r\n};\r\n\r\nexport const pluralize = (singular: string, plural: string, count: number) => (count === 1 ? singular : plural);\r\n\r\nexport function trimEmailDomain(email: string) {\r\n if (!email || email.length === 1) return email;\r\n\r\n // Strip everything after and including the '@'\r\n const atSymbolIndex = email.indexOf(\"@\");\r\n if (atSymbolIndex !== -1) {\r\n return email.substring(0, atSymbolIndex);\r\n }\r\n return email;\r\n}\r\n\r\nexport function tryDecodeURIComponent(str: string) {\r\n try {\r\n return decodeURIComponent(str);\r\n } catch {\r\n return str;\r\n }\r\n}\r\n","import { persistentStorage } from \"@/common/axshare/persistent\";\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { hasNotifications, isSafari, browserVersion } from \"@/common/lib/browser\";\r\n\r\nexport async function hasDesktopNotificationsPermission(): Promise {\r\n if (!hasNotifications) {\r\n return false;\r\n }\r\n\r\n const version = browserVersion ?? \"0\";\r\n const versionWithCorrectPermissions = \"13.1.0\";\r\n\r\n if (isSafari && compareVersion(version, versionWithCorrectPermissions) === -1) {\r\n return hasDesktopNotificationsPermissionForOldSafari();\r\n }\r\n\r\n if (Notification.permission.toLowerCase() !== \"granted\") {\r\n return false;\r\n }\r\n\r\n const permissionFromStorage = persistentStorage.getDesktopNotificationsEnabled();\r\n\r\n if (permissionFromStorage !== undefined) {\r\n return permissionFromStorage;\r\n }\r\n\r\n // electron always has \"granted\" permission\r\n // for electron if notifications option is not set we consider it turned on\r\n if (isElectron) {\r\n return true;\r\n }\r\n\r\n // for browser if notifications option is not set we consider it turned off\r\n // browser will ask permission when option is turned on manually\r\n return false;\r\n}\r\n\r\nexport async function requestNotificationsPermission(): Promise {\r\n if (isSafari) {\r\n // Safari doesn't return promise - it takes callback instead\r\n return new Promise((resolve, reject) => {\r\n try {\r\n Notification.requestPermission(result => resolve(result.toString()));\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n return Notification.requestPermission();\r\n}\r\n\r\nasync function hasDesktopNotificationsPermissionForOldSafari(): Promise {\r\n const browserPermission = Notification.permission.toString();\r\n\r\n if (browserPermission === \"denied\") {\r\n return false;\r\n }\r\n\r\n const permissionFromStorage = persistentStorage.getDesktopNotificationsEnabled();\r\n\r\n if (browserPermission === \"granted\" && permissionFromStorage !== undefined) {\r\n return permissionFromStorage;\r\n }\r\n\r\n // old safari browser doesn't show correct permission from Notification.permission\r\n // requestPermission is performed in order to get correct permission\r\n if (browserPermission === \"default\" && permissionFromStorage === true) {\r\n const correctPermission = await requestNotificationsPermission();\r\n\r\n return correctPermission === \"granted\";\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction compareVersion(v1:string, v2:string) {\r\n const v1Values = v1.split(\".\");\r\n const v2Values = v2.split(\".\");\r\n const k = Math.min(v1Values.length, v2Values.length);\r\n for (let i = 0; i < k; ++ i) {\r\n const v1Value = parseInt(v1Values[i], 10);\r\n const v2Value = parseInt(v2Values[i], 10);\r\n if (v1Value > v2Value) return 1;\r\n if (v1Value < v2Value) return -1;\r\n }\r\n\r\n if (v1Values.length === v2Values.length ) {\r\n return 0;\r\n }\r\n\r\n return v1Values.length < v2Values.length ? -1 : 1;\r\n}\r\n","import { SearchHit } from \"./Search\";\r\n\r\nexport interface StringChunk {\r\n text: string;\r\n isBold: boolean;\r\n}\r\n\r\nexport class SearchResult {\r\n public item: T;\r\n public matches: Array>;\r\n public matched: boolean;\r\n\r\n constructor(item: T, matches: Array>, matched: boolean) {\r\n this.item = item;\r\n this.matches = matches;\r\n this.matched = matched;\r\n }\r\n\r\n // get string chunks of search result by key\r\n public getStringChunks(key: keyof T): StringChunk[] | undefined {\r\n const str = this.item[key];\r\n if (typeof str !== \"string\") {\r\n return undefined;\r\n }\r\n\r\n const chunks: StringChunk[] = [];\r\n let index: number = 0;\r\n const keyMatches = this.mergeMatches(key);\r\n for (const keyMatch of keyMatches) {\r\n if (index !== keyMatch.position) {\r\n chunks.push({\r\n text: str.slice(index, keyMatch.position),\r\n isBold: false,\r\n });\r\n }\r\n index = keyMatch.position + keyMatch.length;\r\n chunks.push({\r\n text: str.slice(keyMatch.position, index),\r\n isBold: true,\r\n });\r\n }\r\n if (index !== str.length) {\r\n chunks.push({\r\n text: str.slice(index, str.length),\r\n isBold: false,\r\n });\r\n }\r\n return chunks;\r\n }\r\n\r\n // merge matches by key using match position\r\n private mergeMatches(key: keyof T): Array> {\r\n const matches = this.matches.filter(m => m.key === key && m.position >= 0);\r\n const result: Array> = [];\r\n let lastIndex = 0;\r\n\r\n const sortedMatches = matches.sort((a, b) => a.position - b.position);\r\n for (const hit of sortedMatches) {\r\n if (hit.position >= lastIndex) {\r\n result.push(hit);\r\n lastIndex = hit.position + hit.length;\r\n } else if (hit.position + hit.length >= lastIndex) {\r\n const hitIndex = result.findIndex(r => r.position >= hit.position && r.position + r.length >= hit.position);\r\n if (hitIndex >= 0) {\r\n const searchHit = result[hitIndex];\r\n const newHit = { ...searchHit, length: hit.position + hit.length - searchHit.position };\r\n result.splice(hitIndex, 1);\r\n result.push(newHit);\r\n lastIndex = newHit.position + newHit.length;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","export function stringSearch(str: string, query: string, startIndex: number = 0): number {\r\n if (!str || !query) {\r\n return -1;\r\n }\r\n return str.toLowerCase().indexOf(query.toLowerCase(), startIndex);\r\n}\r\n\r\nexport interface StringWord {\r\n text: string;\r\n position: number;\r\n}\r\n\r\nexport function getWordsOfString(str: string): StringWord[] {\r\n const result: StringWord[] = [];\r\n let startIndex = 0;\r\n let wordStarted = false;\r\n let word: string = \"\";\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str[i];\r\n // words only splited by space character\r\n if (char === \" \") {\r\n wordStarted = false;\r\n result.push({\r\n text: word,\r\n position: startIndex,\r\n });\r\n word = \"\";\r\n } else {\r\n if (!wordStarted) {\r\n startIndex = i;\r\n }\r\n wordStarted = true;\r\n word += char;\r\n }\r\n }\r\n if (word) {\r\n result.push({\r\n text: word,\r\n position: startIndex,\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n","import { FilesystemNodeType } from \"../fs\";\r\nimport { orderBy } from \"../lib\";\r\nimport { SearchResult } from \"./SearchResult\";\r\nimport { getWordsOfString, stringSearch } from \"./SearchUtils\";\r\n\r\nexport interface SearchHit {\r\n key: keyof T;\r\n position: number;\r\n length: number;\r\n}\r\n\r\nexport class Search {\r\n public items: T[];\r\n public searchFields: Map boolean>;\r\n\r\n constructor(items: T[], searchFields: Map boolean>) {\r\n this.items = items;\r\n this.searchFields = searchFields;\r\n }\r\n\r\n public doSearch(query: string): Array> {\r\n const matchedItems = this.items.map(item => this.toSearchResult(item, query)).filter(s => s.matched);\r\n\r\n return orderBy(matchedItems, i => {\r\n const nameMatch = i.matches.find(m => m.key === \"name\");\r\n return {\r\n value: nameMatch ? nameMatch.position : Infinity,\r\n descending: false,\r\n };\r\n });\r\n }\r\n\r\n private toSearchResult(item: T, query: string) {\r\n const matches = this.match(item, query);\r\n const matched = Object.values(matches).some(h => !!h && h.position >= 0);\r\n return new SearchResult(item, matches, matched);\r\n }\r\n\r\n private match(item: T, query: string): Array> {\r\n const result: Array> = [];\r\n\r\n if (!this.searchFields) {\r\n return result;\r\n }\r\n\r\n this.searchFields.forEach((value, key, _map) => {\r\n if (!value || value(item)) {\r\n result.push(...this.getKeyMatches(item, query, key));\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private getKeyMatches(item: T, query: string, key: keyof T): Array> {\r\n const result: Array> = [];\r\n\r\n const str = item[key];\r\n if (typeof str === \"string\") {\r\n const trimedQuery = query.trim();\r\n if (stringSearch(trimedQuery, \" \") >= 0) {\r\n return this.getMultiwordSearchHits(str, trimedQuery, key);\r\n }\r\n return this.getStringSearchHits(str, trimedQuery, key);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getStringSearchHits(str: string, query: string, key: keyof T): Array> {\r\n const result: Array> = [];\r\n let index: number = 0;\r\n let offset: number = 0;\r\n do {\r\n index = stringSearch(str, query, offset);\r\n if (index >= 0) {\r\n result.push({\r\n key,\r\n position: index,\r\n length: query.length,\r\n });\r\n offset = index + query.length;\r\n }\r\n } while (index >= 0);\r\n\r\n return result;\r\n }\r\n\r\n private getWordSearchHits(str: string, queryWord: string, key: keyof T): Array> {\r\n const sourceWords = getWordsOfString(str);\r\n\r\n const findWords = sourceWords.filter(w => w.text.toLowerCase().startsWith(queryWord.toLowerCase()));\r\n\r\n return findWords.map(w => ({\r\n key,\r\n position: w.position,\r\n length: queryWord.length,\r\n }));\r\n }\r\n\r\n private getMultiwordSearchHits(str: string, query: string, key: keyof T): Array> {\r\n const result: Array> = [];\r\n const words = new Set(\r\n query\r\n .trim()\r\n .split(\" \")\r\n .filter(x => x)\r\n );\r\n\r\n for (const word of words) {\r\n const wordSearchHits = this.getWordSearchHits(str, word, key);\r\n if (wordSearchHits.length === 0) {\r\n return [];\r\n }\r\n\r\n result.push(...wordSearchHits);\r\n }\r\n return result.sort((a, b) => a.position - b.position);\r\n }\r\n}\r\n","import { sha512 } from \"sha.js\";\r\n\r\nimport { Hotspot } from \"@shared/expo\";\r\n\r\nexport function normalizeHotspotMeasurements(hs: Hotspot) {\r\n // Rounds or floors the val based on traditional rounding\r\n function floorRound(val: number) {\r\n const integer = Math.floor(val);\r\n const decimal = val % 1;\r\n\r\n if (decimal < 0.5) {\r\n return integer;\r\n }\r\n return Math.round(val);\r\n }\r\n\r\n const normalized: Hotspot = {\r\n Dimensions: {\r\n Height: floorRound(hs.Dimensions.Height),\r\n Width: floorRound(hs.Dimensions.Width),\r\n },\r\n Start: {\r\n X: floorRound(hs.Start.X),\r\n Y: floorRound(hs.Start.Y),\r\n },\r\n End: {\r\n X: floorRound(hs.End.X),\r\n Y: floorRound(hs.End.Y),\r\n },\r\n };\r\n\r\n return normalized;\r\n}\r\n\r\nexport function createUniqueTag(): string {\r\n const tag = Math.random()\r\n .toString()\r\n .substring(2)\r\n + Math.random()\r\n .toString()\r\n .substring(2)\r\n + Math.random()\r\n .toString()\r\n .substring(2)\r\n + Math.random()\r\n .toString()\r\n .substring(2);\r\n return tag;\r\n}\r\n\r\nexport function hashPassword(toHash: string, salt: string = \"axure\") {\r\n return new sha512().update(`${salt}${toHash}`).digest(\"hex\");\r\n}\r\n\r\n/* eslint-disable no-bitwise */\r\nexport function simpleHash(toHash: string): number {\r\n let hash = 0;\r\n if (toHash.length === 0) {\r\n return hash;\r\n }\r\n for (let i = 0; i < toHash.length; i++) {\r\n const char = toHash.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + char;\r\n hash &= hash;\r\n }\r\n return hash;\r\n}\r\n/* eslint-enable no-bitwise */\r\n\r\nexport function addParamsToFragment(hash: string, params: string) {\r\n const fragment = hash ? `${hash.substring(1)}&${params}` : params;\r\n const separatedParams = fragment.split(\"&\");\r\n const uniqueParams = [...new Set(separatedParams)];\r\n return uniqueParams.join(\"&\");\r\n}\r\n","import Vue, { VNode } from \"vue\";\r\n\r\nimport { pushNotificationsService, HubName, SignalRHubListeners } from \"@/services/push.notifications.service\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n hub: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n listeners: prop({\r\n type: Object,\r\n default: {},\r\n }),\r\n },\r\n\r\n async created() {\r\n await pushNotificationsService.addHubListeners(this.hub as HubName, this.listeners);\r\n },\r\n\r\n async beforeDestroy() {\r\n await pushNotificationsService.removeHubListeners(this.hub as HubName, this.listeners);\r\n },\r\n\r\n render(h): VNode {\r\n return h();\r\n },\r\n});\r\n","import { Prop, PropValidator } from \"vue/types/options\";\r\n\r\nexport function arrayProp(overrides?: PropValidator): PropValidator {\r\n return {\r\n type: Array,\r\n default: () => [],\r\n ...overrides,\r\n };\r\n}\r\n\r\nexport function prop(typeOrOverrides?: Prop | PropValidator, overrides?: PropValidator): PropValidator {\r\n let resolvedType;\r\n let resolvedOverrides: PropValidator | undefined;\r\n\r\n if (typeOrOverrides !== undefined) {\r\n if (typeof typeOrOverrides === \"function\") {\r\n resolvedType = typeOrOverrides;\r\n resolvedOverrides = overrides;\r\n } else if (!Array.isArray(typeOrOverrides) && typeOrOverrides.type !== undefined) {\r\n resolvedType = typeOrOverrides.type;\r\n resolvedOverrides = overrides;\r\n } else {\r\n resolvedOverrides = typeOrOverrides;\r\n }\r\n }\r\n\r\n return {\r\n type: resolvedType,\r\n ...resolvedOverrides,\r\n };\r\n}\r\n","export const enum Main {\r\n Login = \"login\",\r\n ConfigGet = \"config-get\",\r\n ConfigSet = \"config-set\",\r\n Logout = \"logout\",\r\n VuexCommit = \"vuex-commit\",\r\n VuexDispatch = \"vuex-dispatch\",\r\n DesktopMenu = \"desktop-menu\",\r\n DesktopMinimize = \"desktop-minimize\",\r\n DesktopMaximize = \"desktop-maximize\",\r\n DesktopClose = \"desktop-close\",\r\n OpenExternal = \"open-external\",\r\n PerformProxyAuth = \"perform-proxy-authentication\",\r\n CancelProxyAuth = \"cancel-proxy-athenticatoin\",\r\n DownloadingUpdatesProgress = \"downloading-updates-progress\",\r\n DownloadingUpdatesCancel = \"downloading-updates-cancel\",\r\n LogoutPerformed = \"logout-performed\",\r\n GetSystemColor = \"get-system-color\",\r\n GetWindowState = \"get-window-state\",\r\n GetLastLoginState = \"get-last-login-state\",\r\n LastLoginStateChanged = \"last-login-state-changed\",\r\n // this event is triggered from axshare_mvc project\r\n BackToLoginScreenFromView = \"back-to-login-screen-from-view\",\r\n\r\n // artboards export\r\n ExportArtboardCancelRequested = \"export-artboard-cancel-requested\",\r\n ShowBadge = \"show-badge\",\r\n ResizeBrowserWindow = \"resize-browser-window\",\r\n}\r\n\r\nexport const enum Renderer {\r\n VuexDispatchAck = \"vuex-dispatch-ack-\",\r\n VuexDispatchComplete = \"vuex-dispatch-complete-\",\r\n ConfigProvide = \"config-provide\",\r\n LoginHandled = \"login-handled\",\r\n LogoutHandled = \"logout-handled\",\r\n ProvideSystemColor = \"provide-system-color\",\r\n Logout = \"logout\",\r\n\r\n // artboards export\r\n ExportStarted = \"artboards-export-started\",\r\n ExportFinished = \"artboards-export-finished\",\r\n ExportErrored = \"artboards-export-errored\",\r\n ExportArtboardStarted = \"artboards-export-artboard-started\",\r\n ExportArtboardUploadStarted = \"artboards-export-artboard-upload-started\",\r\n ExportArtboardProgress = \"artboards-export-artboard-progress\",\r\n ExportArtboardSuccess = \"artboards-export-artboard-success\",\r\n ExportArtboardCanceled = \"artboards-export-artboard-canceled\",\r\n ExportArtboardError = \"artboards-export-artboard-error\",\r\n}\r\n\r\nexport const IPC_EVENT_PREFIX = \"AXURE_CLOUD_DESKTOP_\";\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport const enum FileType {\r\n Jpg = 0,\r\n Png = 1,\r\n Gif = 2,\r\n Axvg = 3\r\n}\r\nexport interface Interaction\r\n{\r\n Type: InteractionType;\r\n Animation: Animation;\r\n}\r\nexport interface Action extends IdObject\r\n{\r\n Name: string;\r\n Hotspot: Hotspot;\r\n Type: ActionType;\r\n Setting: ActionSetting;\r\n ParentId: string;\r\n IsMaster: boolean;\r\n RelativeToBottom?: number;\r\n}\r\nexport interface NavigationAction extends ActionSetting\r\n{\r\n TargetArtboardId: string;\r\n}\r\nexport interface ScrollPositionAction extends ActionSetting\r\n{\r\n Location: Point;\r\n IsSmoothScroll: boolean;\r\n}\r\nexport interface ExternalUrlAction extends ActionSetting\r\n{\r\n Url: string;\r\n}\r\nexport interface ActionSetting\r\n{\r\n Interaction: Interaction;\r\n Type: ActionType;\r\n}\r\nexport interface ActionSettingConverter\r\n{\r\n}\r\nexport interface DebugConverter\r\n{\r\n}\r\nexport interface Animation\r\n{\r\n Out: AnimationSetting;\r\n In: AnimationSetting;\r\n}\r\nexport interface AnimationSetting\r\n{\r\n Easing: EasingType;\r\n Animation: AnimationType;\r\n Duration: number;\r\n}\r\nexport interface ArtboardInfo\r\n{\r\n ArtboardId: string;\r\n ActionPoolId: string;\r\n CurrRevision: number;\r\n Name: string;\r\n IsModified: boolean;\r\n IsArchived: boolean;\r\n IsDeleted: boolean;\r\n}\r\nexport interface ActionPool extends IdObject\r\n{\r\n ArtboardId: string;\r\n Actions: { [key:string]: Action };\r\n}\r\nexport interface Artboard extends IdObject\r\n{\r\n S3_BUCKET: string;\r\n AssetId: string;\r\n SubAssetIds: string[];\r\n AssetInfo: { [key:string]: Asset };\r\n MasterIds: string[];\r\n Name: string;\r\n NextArtboardId: string;\r\n HeaderHeight: number;\r\n FooterHeight: number;\r\n HasHeader: boolean;\r\n HasFooter: boolean;\r\n IsArchived: boolean;\r\n IsHandoffCapable: boolean;\r\n Asset: Asset;\r\n SubAssets: { [key:string]: Asset };\r\n ActionPool: ActionPool;\r\n CurrRevision: number;\r\n}\r\nexport interface AssetInfo\r\n{\r\n AssetId: string;\r\n IsModified: boolean;\r\n IsDeleted: boolean;\r\n}\r\nexport interface ArtboardAssetManifest\r\n{\r\n ArtboardAsset: Asset;\r\n SubAssets: Asset[];\r\n}\r\nexport interface Asset extends IdObject\r\n{\r\n OriginalFileName: string;\r\n FileName: string;\r\n ThumbFileName: string;\r\n FilePath: string;\r\n Type: FileType;\r\n Dimensions: Dimensions;\r\n LayerId: string;\r\n Scale: number;\r\n}\r\nexport interface Hotspot\r\n{\r\n Start: Point;\r\n End: Point;\r\n Dimensions: Dimensions;\r\n}\r\nexport interface Point\r\n{\r\n X: number;\r\n Y: number;\r\n}\r\nexport interface IdObject\r\n{\r\n Id: string;\r\n CreatedOn: string;\r\n ModifiedOn?: string;\r\n DeletedOn?: string;\r\n IsModified: boolean;\r\n IsDeleted: boolean;\r\n}\r\nexport interface SyncManifest\r\n{\r\n Shortcut: string;\r\n Artboards: SyncArtboard[];\r\n}\r\nexport interface SyncArtboard\r\n{\r\n Id: string;\r\n Name: string;\r\n Asset: SyncAsset;\r\n SubAssets: SyncAsset[];\r\n}\r\nexport interface SyncAsset\r\n{\r\n LayerId: string;\r\n Name: string;\r\n FileName: string;\r\n Scale: number;\r\n}\r\nexport interface Master extends IdObject\r\n{\r\n Name: string;\r\n Actions: { [key:string]: Action };\r\n}\r\nexport interface Project extends IdObject\r\n{\r\n ShortcutKey: string;\r\n ProjectName: string;\r\n Platform: Platform;\r\n MasterIds: string[];\r\n ArtboardIds: string[];\r\n ArtboardInfoMap: { [key:string]: ArtboardInfo };\r\n Zoom: number;\r\n}\r\nexport interface ExpoRevision\r\n{\r\n ArtboardId: string;\r\n CurrentRevisionNumber: number;\r\n RevisionTimestamp: { [key:number]: string };\r\n ModifiedOn?: string;\r\n CreatedOn: string;\r\n IsModified: boolean;\r\n}\r\nexport interface ExpoJson\r\n{\r\n}\r\nexport interface ExpoStaticContent\r\n{\r\n project: Project;\r\n masters: { [key:string]: Master };\r\n artboards: { [key:string]: Artboard };\r\n assets: { [key:string]: Asset };\r\n images: { [key:string]: string };\r\n thumbnails: { [key:string]: string };\r\n bgImgLink: string;\r\n}\r\nexport interface AddHotspotRequest\r\n{\r\n tag: string;\r\n artboardId?: string;\r\n masterId?: string;\r\n hotspot: Hotspot;\r\n type: ActionType;\r\n setting: ActionSetting;\r\n relativeToBottom?: number;\r\n}\r\nexport interface ArchiveArtboardRequest\r\n{\r\n artboardId: string;\r\n}\r\nexport interface CreateMasterRequest\r\n{\r\n name: string;\r\n artboardId: string;\r\n}\r\nexport interface DeleteArtboardRequest\r\n{\r\n artboardId: string;\r\n}\r\nexport interface DeleteArtboardsRequest\r\n{\r\n artboardIds: string[];\r\n}\r\nexport interface DeleteHotspotRequest\r\n{\r\n isMaster: boolean;\r\n sourceId: string;\r\n actionId: string;\r\n}\r\nexport interface EditHotspotRequest\r\n{\r\n sourceId: string;\r\n targetId: string;\r\n actionId: string;\r\n hotspot: Hotspot;\r\n type: ActionType;\r\n setting: ActionSetting;\r\n relativeToBottom?: number;\r\n isSourceMaster: boolean;\r\n isTargetMaster: boolean;\r\n}\r\nexport interface ModifyMasterRequest\r\n{\r\n artboardId: string;\r\n masterId: string;\r\n name: string;\r\n}\r\nexport interface ReorderArtboardRequest\r\n{\r\n targetAbId: string;\r\n tailAbId: string;\r\n fullResequence: boolean;\r\n}\r\nexport interface SetHeaderFooterHeightRequest\r\n{\r\n artboardId: string;\r\n height: number;\r\n isHeader: boolean;\r\n}\r\nexport interface SetZoomRequest\r\n{\r\n zoom: number;\r\n}\r\nexport interface UpdatePlatformRequest\r\n{\r\n platform: Platform;\r\n}\r\nexport const enum ActionType {\r\n SetPanelState = 0,\r\n PreviousScreen = 1,\r\n NextScreen = 2,\r\n PreviousHistoryScreen = 3,\r\n PointOnScreen = 4,\r\n ExternalUrl = 5\r\n}\r\nexport const enum InteractionType {\r\n Click = 0,\r\n DoubleClick = 1,\r\n SwipeRight = 2,\r\n SwipeLeft = 3,\r\n SwipeUp = 4,\r\n SwipeDown = 5\r\n}\r\nexport const enum AnimationType {\r\n None = 0,\r\n Swing = 1,\r\n Linear = 2,\r\n EaseInCubic = 3,\r\n EaseOutCubic = 4,\r\n EaseInOutCubic = 5,\r\n Bounce = 6,\r\n Elastic = 7\r\n}\r\nexport const enum EasingType {\r\n None = 0,\r\n Fade = 1,\r\n PushRight = 2,\r\n PushLeft = 3,\r\n SlideRight = 4,\r\n SlideLeft = 5,\r\n SlideUp = 6,\r\n SlideDown = 7,\r\n FlipRight = 8,\r\n FlipLeft = 9,\r\n FlipUp = 10,\r\n FlipDown = 11\r\n}\r\nexport const enum DeviceType {\r\n iPhone8 = 0,\r\n iPhone8Plus = 1,\r\n iPhoneSE = 2,\r\n iPhoneX = 3,\r\n iPhone11Pro = 4,\r\n iPhone12Pro = 5,\r\n iPhone12ProMax = 6,\r\n iPhone13Pro = 7,\r\n iPhone13ProMax = 8,\r\n iPadMini7_9 = 9,\r\n iPadMini8_3 = 10,\r\n iPad10_2 = 11,\r\n iPadPro11 = 12,\r\n IPadPro12_9 = 13,\r\n GalaxyS8 = 14,\r\n Pixel2 = 15,\r\n Pixel2XL = 16,\r\n Mobile = 17,\r\n Tablet9 = 18,\r\n Tablet7 = 19,\r\n Custom = 20,\r\n Web = 21,\r\n Auto = 22,\r\n iPhone11 = 23,\r\n GalaxyS9 = 24,\r\n GalaxyS10 = 25,\r\n Pixel3 = 26,\r\n Pixel3XL = 27,\r\n Pixel4 = 28,\r\n Pixel5 = 29,\r\n Pixel4XL = 30\r\n}\r\nexport const enum ForegroundColor {\r\n Light = 0,\r\n Dark = 1\r\n}\r\nexport const enum PlatformType {\r\n Web = 0,\r\n Mobile = 1,\r\n MobileApple = 2,\r\n MobileGoogle = 3,\r\n MobileSamsung = 4\r\n}\r\nexport const enum Orientation {\r\n Portrait = 0,\r\n Landscape = 1\r\n}\r\nexport const enum PageAlign {\r\n Left = 0,\r\n Center = 1\r\n}\r\nexport const enum HorizontalAlign {\r\n Left = 0,\r\n Center = 1,\r\n Right = 2\r\n}\r\nexport const enum VerticalAlign {\r\n Top = 0,\r\n Middle = 1,\r\n Bottom = 2\r\n}\r\nexport const enum ImageRepeat {\r\n NoRepeat = 0,\r\n Repeat = 1,\r\n RepeatX = 2,\r\n RepeatY = 3,\r\n StretchToCover = 4,\r\n StretchToContain = 5,\r\n StretchHorizontalAndVertical = 6\r\n}\r\nexport interface MobilePlatform extends Platform\r\n{\r\n HasStatusBar: boolean;\r\n StatusBarHeight: number;\r\n ForegroundColor: ForegroundColor;\r\n ShowScreensBelowStatusBar: boolean;\r\n}\r\nexport interface PlatformInfo\r\n{\r\n}\r\nexport interface PlatformConverter\r\n{\r\n}\r\nexport interface Dimensions\r\n{\r\n Width: number;\r\n Height: number;\r\n}\r\nexport interface PlatformSettings\r\n{\r\n Orientation: Orientation;\r\n Dimensions: Dimensions;\r\n}\r\nexport interface Platform\r\n{\r\n Type: PlatformType;\r\n Device: DeviceType;\r\n Settings: PlatformSettings;\r\n BackgroundColor: string;\r\n IsUsingBackgroundColor: boolean;\r\n}\r\nexport interface WebPlatform extends Platform\r\n{\r\n PageAlignment: PageAlign;\r\n HasBackgroundImage: boolean;\r\n BackgroundImageExt: string;\r\n BackgroundImageName: string;\r\n BackgroundImageWidth: number;\r\n BackgroundImageHeight: number;\r\n HorizontalAlignment: HorizontalAlign;\r\n VerticalAlignment: VerticalAlign;\r\n ImageRepeat: ImageRepeat;\r\n}\r\nexport interface DeviceDropDownOption\r\n{\r\n Value: number;\r\n Text: string;\r\n DeviceName: string;\r\n Device: DeviceType;\r\n Dimensions?: Dimensions;\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nimport { Master } from './expo';\r\n\r\nexport const enum OperationType {\r\n Add = 0,\r\n Edit = 1,\r\n Delete = 2\r\n}\r\nexport const enum PackageType {\r\n Page = 0,\r\n Component = 1,\r\n Property = 2\r\n}\r\nexport const enum SsoId {\r\n Axure = 0,\r\n AxShare = 1,\r\n Portal = 2\r\n}\r\nexport const enum RpErrorTypes {\r\n None = 0,\r\n UnKnown = 1,\r\n AxShareError = 2,\r\n AxShareException = 3,\r\n AuthenticationFailed = 4,\r\n TokenExpired = 5,\r\n LoginLockedOut = 6,\r\n InReadonlyMode = 7,\r\n NoPermissionToAccess = 8,\r\n CreateShortCutParentDeleted = 9,\r\n ShortcutNotExist = 10,\r\n ShortcutHasNoRepository = 11,\r\n ShortcutDeleted = 12,\r\n CannotFindVersionFile = 13,\r\n EntryForShortcutNotFound = 14,\r\n CannotFindFileKeyFor = 15,\r\n RepoTranTaken = 16,\r\n LockFileFailed = 17,\r\n UnlockFileFailed = 18,\r\n CommitFailed = 19,\r\n CommitFilesOutDated = 20,\r\n FilesCheckedOutByOthers = 21,\r\n FilesDeleted = 22,\r\n HaveConflicts = 23,\r\n ExportPathReadOnly = 24,\r\n OpenFileReadOnly = 25,\r\n ServerNoResponse = 26,\r\n ConnectionErrorOffline = 27,\r\n SVNCannotFindTeamDirectory = 28,\r\n InvalidReturnValue = 29,\r\n WorkingCopyLocked = 30,\r\n TeamDirectoryNotFound = 31,\r\n CleanUpBackUpFileNotCreated = 32,\r\n CleanUpFileLocked = 33,\r\n NotATeamProject = 34,\r\n LocalFolderAccessError = 35,\r\n AccountNotFound = 36,\r\n ShortcutTypeMissMatch = 37,\r\n ShortcutGenerationFailed = 38,\r\n ShortcutStillGenerating = 39,\r\n FileTooNew = 40,\r\n EnterpriseRequired = 41,\r\n CannotCreateUser = 42,\r\n PreventNewUsers = 43,\r\n UserPasswordTooShort = 44,\r\n TrailingSpaceInPassword = 45,\r\n EmptyPassword = 46,\r\n EmailIsInvalid = 47,\r\n EmailAlreadyInUse = 48,\r\n SaveFromPreuploadFailed = 49,\r\n TeamProjectDowngraded = 50,\r\n InvalidPasswordComplexity = 60,\r\n InvalidUser = 61,\r\n PasswordForSuperAdmin = 62,\r\n PasswordForOtherAdmins = 63,\r\n ShouldNotPublishToTeam = 100,\r\n SamlRedirectToIdp = 600,\r\n SamlUserMismatched = 601,\r\n SamlCannotResetPassword = 602,\r\n LdapRequiresClearPassword = 700,\r\n AseExpired = 800,\r\n NotUsingEnterprise = 810,\r\n RedemptionKeyNotFound = 900\r\n}\r\nexport const enum ApiErrorTypes {\r\n SignInReadOnlyError = 1,\r\n ReadOnlyError = 2\r\n}\r\nexport const enum DiscussionAction {\r\n Create = 0,\r\n Resolve = 1,\r\n Unresolve = 2\r\n}\r\nexport const enum DiscussionType {\r\n Issue = 0,\r\n Comment = 1\r\n}\r\nexport const enum ShortcutAction {\r\n Create = 0,\r\n Edit = 1,\r\n Rename = 2,\r\n Moved = 3,\r\n Clone = 4,\r\n Deleted = 5\r\n}\r\nexport const enum WorkspaceAction {\r\n Created = 0,\r\n Joined = 1,\r\n Left = 2,\r\n Archived = 3,\r\n Unarchived = 4,\r\n Migrated = 5,\r\n Renamed = 6\r\n}\r\nexport const enum FolderAction {\r\n Moved = 0\r\n}\r\nexport interface ActivityObjectHelpers\r\n{\r\n}\r\nexport interface ActivityFeedListingJs\r\n{\r\n FeedItems: ActivityFeedItem[];\r\n Profiles: { [key:string]: UserProfileJs };\r\n FilesystemInfo: ActivityFeedFilesystemInfo;\r\n Shortcuts: { [key:string]: ActivityFeedShortcutJs };\r\n}\r\nexport interface ActivityFeedFilesystemInfo\r\n{\r\n Name: string;\r\n FilesystemId: string;\r\n OwnerId: string;\r\n OwnerName: string;\r\n IsDefaultFs: boolean;\r\n IsArchived: boolean;\r\n IsFavorite: boolean;\r\n}\r\nexport interface ActivityFeedShortcutJs\r\n{\r\n Shortcut: string;\r\n Name: string;\r\n ShortcutState: string;\r\n ShortcutType: number;\r\n}\r\nexport interface ActivityFeedItem\r\n{\r\n FilesystemId: string;\r\n Timestamp: string;\r\n Shortcut: string;\r\n Type: number;\r\n Data: EventItem;\r\n}\r\nexport interface EventItem\r\n{\r\n UserId: string;\r\n UserName: string;\r\n}\r\nexport interface DiscussionsItem extends EventItem\r\n{\r\n Action: DiscussionAction;\r\n Type: DiscussionType;\r\n IssueCode: string;\r\n IssueDescription: string;\r\n IssueDescriptionRichText: string;\r\n IssueCommentText: string;\r\n IssueCommentTextRichText: string;\r\n IssueCreator: string;\r\n IssueCreatorId?: string;\r\n ShortcutName: string;\r\n PageName: string;\r\n PageFileName: string;\r\n PageId: string;\r\n ShortPageId: string;\r\n MentionedUsers: string[];\r\n Images: string[];\r\n}\r\nexport interface ShortcutItem extends EventItem\r\n{\r\n Action: ShortcutAction;\r\n TargetPrototypeId?: string;\r\n PublishMessage: string;\r\n Changeset: Changeset;\r\n MentionedUsers: string[];\r\n ShortcutName: string;\r\n Current: string;\r\n Previous: string;\r\n CurrentFilesystemId?: string;\r\n CurrentFolderId?: string;\r\n CurrentFilesystemName: string;\r\n CurrentFolderName: string;\r\n PreviousFilesystemId?: string;\r\n PreviousFolderId?: string;\r\n PreviousFilesystemName: string;\r\n PreviousFolderName: string;\r\n}\r\nexport interface WorkspaceItem extends EventItem\r\n{\r\n Action: WorkspaceAction;\r\n Current: string;\r\n Previous: string;\r\n}\r\nexport interface FolderItem extends EventItem\r\n{\r\n Action: FolderAction;\r\n FolderId: string;\r\n FolderName: string;\r\n CurrentFilesystemId?: string;\r\n CurrentFolderId?: string;\r\n CurrentFilesystemName: string;\r\n CurrentFolderName: string;\r\n PreviousFilesystemId?: string;\r\n PreviousFolderId?: string;\r\n PreviousFilesystemName: string;\r\n PreviousFolderName: string;\r\n}\r\nexport interface AxShareConfigModel\r\n{\r\n AxSharePublicClientUrl: string;\r\n AxShareHost: string;\r\n AxShareHostUrl: string;\r\n AxShareHostSecureUrl: string;\r\n AxSitesFramedPrototypeDomain: string;\r\n AccountServiceUrl: string;\r\n AccountServiceSecureUrl: string;\r\n LicensingServiceHost: string;\r\n MatchProtocolMode: boolean;\r\n AxShareOnPrem: boolean;\r\n NeedsSetup: boolean;\r\n NeedsDbUpgrade: boolean;\r\n DisableSetup: boolean;\r\n LdapAuthenticationEnabled: boolean;\r\n Version: string;\r\n ReleaseDate: string;\r\n SchemaVersion: string;\r\n IsSubInstance: boolean;\r\n VCurrentUrl: string;\r\n MaxFileSize: number;\r\n SubInstancesSupported: boolean;\r\n SubInstanceTopLevelDomain: string;\r\n SamlUrl: string;\r\n EnablePlugins: boolean;\r\n EnableBetaFeatures: boolean;\r\n PasswordUseExtraRules: boolean;\r\n ManagePageMessage: string;\r\n ReadOnlyMode: boolean;\r\n ReadOnlyMessage: string;\r\n GoogleReCaptchaSiteKey: string;\r\n EnablePushNotifications: boolean;\r\n EnableWorkspacesMigration: boolean;\r\n EnableActivityFeedUI: boolean;\r\n}\r\nexport interface AxShareCurrentUserInfo\r\n{\r\n UserId: string;\r\n AccessLevel: number;\r\n SubInstanceProviderExists: boolean;\r\n}\r\nexport interface AxShareIdentityProvider\r\n{\r\n Id: string;\r\n SubInstanceId: string;\r\n Certificate: string;\r\n SignOnUrl: string;\r\n LogOutUrl: string;\r\n CertMeta: string;\r\n LogOnLink: string;\r\n SamlLdapConflictDetected: boolean;\r\n AllowCreateNewAccountsAutomatically: boolean;\r\n}\r\nexport interface AxShareSubInstanceInfo\r\n{\r\n Level: number;\r\n Expiration?: string;\r\n IsExpired: boolean;\r\n TrialDaysLeft: number;\r\n MaxAdminAuthors: number;\r\n IsGracePeriod: boolean;\r\n GracePeriodDaysLeft: number;\r\n}\r\nexport interface Changeset\r\n{\r\n Entries: ChangesetEntry[];\r\n Message: string;\r\n}\r\nexport interface ChangesetEntry\r\n{\r\n PackageId: string;\r\n PackageType: PackageType;\r\n ShortId: string;\r\n PackageName: string;\r\n OperationType: OperationType;\r\n}\r\nexport interface Constants\r\n{\r\n AccountServerErrorMessage: string;\r\n}\r\nexport interface EmailSettings\r\n{\r\n EmailsEnabled: boolean;\r\n EmailSender: string;\r\n EmailSenderAddress: string;\r\n SmtpSsl: boolean;\r\n SmtpHost: string;\r\n SmtpPort?: number;\r\n SmtpLogin: string;\r\n SmtpPassword: string;\r\n TraceEnabled: boolean;\r\n SmtpConfigured: boolean;\r\n}\r\nexport interface FbEnabledJs\r\n{\r\n feedbackEnabled: boolean;\r\n passwordProtected: boolean;\r\n viewCookieName: string;\r\n userCookieName: string;\r\n isSubInstance: boolean;\r\n}\r\nexport interface FeedbackPollingInfoJs\r\n{\r\n success: boolean;\r\n hasChanges: boolean;\r\n unreadIssueMentionsCount: number;\r\n unreadCommentMentionsCount: number;\r\n originalPollTime: string;\r\n lastPollTime: string;\r\n continuePolling: boolean;\r\n message: string;\r\n}\r\nexport interface GetIssueCommentJs\r\n{\r\n comment: IssueCommentJs;\r\n pageId: string;\r\n profile: { [key:string]: UserProfileJs };\r\n mostRecentCommentTimestamp?: string;\r\n}\r\nexport interface DeleteIssueJs\r\n{\r\n issue: DeletedIssueCode;\r\n mostRecentCommentTimestamp?: string;\r\n}\r\nexport interface DeletedIssueCode\r\n{\r\n code: string;\r\n}\r\nexport interface DeleteCommentJs\r\n{\r\n issue: IssueJs;\r\n comment: DeletedIssueCommentId;\r\n profiles: { [key:string]: UserProfileJs };\r\n mostRecentCommentTimestamp?: string;\r\n}\r\nexport interface DeletedIssueCommentId\r\n{\r\n id: string;\r\n}\r\nexport interface GetIssueJs\r\n{\r\n issue: IssueJs;\r\n pageId: string;\r\n profile: { [key:string]: UserProfileJs };\r\n mostRecentCommentTimestamp?: string;\r\n}\r\nexport interface IssueListJs\r\n{\r\n issues: IssueJs[];\r\n profiles: { [key:string]: UserProfileJs };\r\n lastPollTime: string;\r\n mostRecentCommentTimestamp: string;\r\n hasCommentsOnDeletedPages: boolean;\r\n}\r\nexport interface IssueByShortcutListJs\r\n{\r\n data: IssueByShortcutListItemsJs;\r\n success: boolean;\r\n readOnlyMode: boolean;\r\n readOnlyMessage: string;\r\n feedbackEnabled: boolean;\r\n}\r\nexport interface IssueByShortcutListItemsJs\r\n{\r\n issues: IssueJs[];\r\n profiles: { [key:string]: UserProfileJs };\r\n totalIssueCount: number;\r\n}\r\nexport interface IssueCommentListJs\r\n{\r\n comments: IssueCommentJs[];\r\n profiles: { [key:string]: UserProfileJs };\r\n isUnresolved: boolean;\r\n}\r\nexport interface IssueJs\r\n{\r\n id: string;\r\n code: string;\r\n shortPageId: string;\r\n pageId: string;\r\n pageName: string;\r\n fileName: string;\r\n description: string;\r\n isRichText?: boolean;\r\n userId?: string;\r\n creator: string;\r\n createdDate: string;\r\n modifier: string;\r\n modifiedDate?: string;\r\n changedDate: string;\r\n comments: IssueCommentJs[];\r\n numComments: number;\r\n lastIssueComment: IssueCommentJs;\r\n screenshotIds: string[];\r\n screenshotUrls: string[];\r\n fullsizeUrls: string[];\r\n x?: number;\r\n y?: number;\r\n color: string;\r\n pinNumber?: number;\r\n resolvedDate?: string;\r\n isUnread: boolean;\r\n hasUnreadMention: boolean;\r\n}\r\nexport interface IssueCommentJs\r\n{\r\n id: string;\r\n issueCode: string;\r\n userId?: string;\r\n commenter: string;\r\n commentText: string;\r\n isRichText?: boolean;\r\n commentDate: string;\r\n commentModifiedDate?: string;\r\n screenshotIds: string[];\r\n screenshotUrls: string[];\r\n fullsizeUrls: string[];\r\n hasUnreadMention: boolean;\r\n}\r\nexport interface ImagePreUploadJs\r\n{\r\n success: boolean;\r\n id: string;\r\n}\r\nexport interface FrequentlyUsedEmojisJs\r\n{\r\n LastUsed: string[];\r\n}\r\nexport interface GetLicenseKey\r\n{\r\n success: boolean;\r\n licenseKey: string;\r\n licenseJs: LicenseJs;\r\n}\r\nexport interface IdentityProviderResponse extends ResponseObject\r\n{\r\n Id: string;\r\n Name: string;\r\n SubInstanceId: string;\r\n SignOnUrl: string;\r\n CertThumbprint: string;\r\n Exclusive: boolean;\r\n LogOutUrl: string;\r\n CurrentAxShareHostSecureUrl: string;\r\n}\r\nexport interface IsRp8UpgradeResponse\r\n{\r\n success: boolean;\r\n isRp8Upgrade: boolean;\r\n}\r\nexport interface LdapSettings\r\n{\r\n AuthenticationProvider: number;\r\n ActiveDirectoryServerName: string;\r\n ActiveDirectoryDomainName: string;\r\n AllowActiveDirectoryCreateNewAccountsAutomatically: boolean;\r\n ActiveDirectoryAdminUser: string;\r\n ActiveDirectoryAdminPassword: string;\r\n LdapHost: string;\r\n LdapUserTemplate: string;\r\n LdapUserFilter: string;\r\n LdapUserEmailAttribute: string;\r\n LdapUseSSL: boolean;\r\n LdapCertificate: string;\r\n LdapAdminUser: string;\r\n LdapAdminPassword: string;\r\n LdapCertMeta: string;\r\n AllowLdapCreateNewAccountsAutomatically: boolean;\r\n LdapForgotPasswordLink: string;\r\n SamlLdapConflictDetected: boolean;\r\n}\r\nexport interface MigrateToAcbResult\r\n{\r\n UserActivationRequired: boolean;\r\n SystemAdmins: SsoResponse[];\r\n}\r\nexport interface UsersForMigrate\r\n{\r\n AlreadyMigrated: SsoResponse[];\r\n CanBeMigrated: SsoResponse[];\r\n}\r\nexport interface ProjectPage\r\n{\r\n Id: string;\r\n OriginalId: string;\r\n Name: string;\r\n Thumbnails: ResponsiveImage[];\r\n}\r\nexport interface ShortcutPagesResponse\r\n{\r\n Shortcut: ShortcutJs;\r\n Pages: ProjectPage[];\r\n}\r\nexport interface ExtendedProjectPage extends ProjectPage\r\n{\r\n Url: string;\r\n}\r\nexport interface PrototypeViewerParams\r\n{\r\n Params: { [key:string]: string };\r\n}\r\nexport interface ResponseObject\r\n{\r\n success: boolean;\r\n message: string;\r\n errorMessage: string;\r\n redirecturl: string;\r\n forceRedirect?: boolean;\r\n}\r\nexport interface ResponseObjectOf extends ResponseObject\r\n{\r\n data: T;\r\n}\r\nexport interface CreateMasterJs\r\n{\r\n Master: Master;\r\n}\r\nexport interface ValidateRequestJs\r\n{\r\n IsValid: boolean;\r\n}\r\nexport interface FilesystemRootListingJs\r\n{\r\n FilesystemInfo: FilesystemJs;\r\n Listing: ListingJs;\r\n}\r\nexport interface VarsJs\r\n{\r\n Vars: { [key:string]: string };\r\n}\r\nexport interface ListingJs\r\n{\r\n Invitations: InvitationJs[];\r\n Filesystems: FilesystemJs[];\r\n Folders: FolderRowJs[];\r\n Shortcuts: ShortcutJs[];\r\n AdditionalVars: { [key:string]: string };\r\n}\r\nexport interface InvitationJs\r\n{\r\n FilesystemId: string;\r\n Owner: string;\r\n Owner2: SsoResponse;\r\n Sender: SsoResponse;\r\n FilesystemName: string;\r\n Message: string;\r\n CreatedOn: string;\r\n}\r\nexport interface FilesystemJs\r\n{\r\n DisplayName: string;\r\n IsDefaultFs: boolean;\r\n FilesystemId: string;\r\n Owner: string;\r\n OwnerSso: SsoResponse;\r\n InvitedUsers: string[];\r\n SharedUsers: string[];\r\n InvitedUsers2: SharedFilesystemMappingJs[];\r\n SharedUsers2: SharedFilesystemMappingJs[];\r\n ViewerFs: boolean;\r\n HttpsOnly: boolean;\r\n UserViewOnly: boolean;\r\n CreatedOn: string;\r\n IsArchived: boolean;\r\n IsFavorite: boolean;\r\n NotificationState: FilesystemNotificationStateJs;\r\n}\r\nexport interface FilesystemNotificationStateJs\r\n{\r\n HasNewComments: boolean;\r\n UnreadMentionsCount: number;\r\n}\r\nexport interface SharedFilesystemMappingJs\r\n{\r\n user: SsoResponse;\r\n isViewer: boolean;\r\n isAdmin?: boolean;\r\n}\r\nexport interface FolderRowJs\r\n{\r\n FolderId: string;\r\n FolderName: string;\r\n CreatedOn: string;\r\n NotificationState: FolderNotificationStateJs;\r\n ModifiedOn: FolderModifiedOnJs;\r\n}\r\nexport interface FolderModifiedOnJs\r\n{\r\n Value: string;\r\n Shortcut: string;\r\n}\r\nexport interface FolderNotificationStateJs\r\n{\r\n HasNewComments: boolean;\r\n TotalCommentsCount?: number;\r\n NewCommentsCount: number;\r\n NewCommentShortcut: string;\r\n NewCommentShortcutFeedbackEnabled: boolean;\r\n UnreadMentionsCount: { [key:string]: number };\r\n}\r\nexport interface ShortcutJs\r\n{\r\n PrototypeUrl: string;\r\n CustomDomain: boolean;\r\n Shortcut: string;\r\n Name: string;\r\n CreatedOn: string;\r\n ModifiedOn?: string;\r\n DeletedOn?: string;\r\n HasPassword: boolean;\r\n FeedbackEnabled: boolean;\r\n IsUserOnly: boolean;\r\n ShortcutState: string;\r\n TargetPrototypeId?: string;\r\n TargetPrototypeFileName: string;\r\n TargetPrototypeCreatedOn?: string;\r\n TargetPrototypeGenerationFailedTimestamp?: string;\r\n TargetPrototypeGenerationTimestamp?: string;\r\n Regenerating?: boolean;\r\n InFsViewerFolder: boolean;\r\n ResourceDirVersion?: number;\r\n IsTeamProject: boolean;\r\n IsExpoProject: boolean;\r\n ShortcutType: number;\r\n IsUserOnlyWorkspace: boolean;\r\n WorkspaceName: string;\r\n NotificationState: ShortcutNotificationStateJs;\r\n}\r\nexport interface ShortcutNotificationStateJs\r\n{\r\n HasNewComments: boolean;\r\n NewCommentsCount: number;\r\n CurrentCommentPageId?: string;\r\n CurrentIssueCode: string;\r\n TotalCommentsCount?: number;\r\n UnreadMentionsCount: { [key:string]: number };\r\n}\r\nexport interface CommentsChangedArgs\r\n{\r\n UserId?: string;\r\n FilesystemId: string;\r\n Shortcut: string;\r\n IssueCode: string;\r\n PageId?: string;\r\n Delta: number;\r\n LatestTimestamp?: string;\r\n}\r\nexport interface WorkspaceInvitationDeletedArgs\r\n{\r\n FilesystemId: string;\r\n}\r\nexport interface ShortcutRedirectCommentInfoJs\r\n{\r\n IssueCode: string;\r\n PageId?: string;\r\n ShortPageId: string;\r\n}\r\nexport interface RecentJs\r\n{\r\n Shortcut: ShortcutJs;\r\n Date: string;\r\n}\r\nexport interface ListJs\r\n{\r\n Items: T[];\r\n}\r\nexport interface DomainJs\r\n{\r\n Owner: string;\r\n Id: string;\r\n Domain: string;\r\n Verified: boolean;\r\n Level: number;\r\n ShortcutName: string;\r\n ShortcutId: string;\r\n}\r\nexport interface SeoJs\r\n{\r\n Id: string;\r\n FileName: string;\r\n PageName: string;\r\n PageTitle: string;\r\n PrettyUrl: string;\r\n MetaDescription: string;\r\n}\r\nexport interface HistoryListingJs\r\n{\r\n TotalRevisionCount: number;\r\n Revisions: HistoryJs[];\r\n Profiles: { [key:string]: UserProfileJs };\r\n}\r\nexport interface HistoryJs\r\n{\r\n Revision: number;\r\n User: SsoResponse;\r\n Notes: string;\r\n Changeset: Changeset;\r\n NotesRichText: RichText;\r\n CreatedOn: string;\r\n NewMajorVersion?: number;\r\n OldMajorVersion?: number;\r\n}\r\nexport interface RedirectJs\r\n{\r\n Id: string;\r\n Type: number;\r\n From: string;\r\n To: string;\r\n}\r\nexport interface WorkspaceUserRowJs\r\n{\r\n Id: string;\r\n Email: string;\r\n CreatedOn: string;\r\n Level: number;\r\n ReviewOnly: boolean;\r\n}\r\nexport interface AccountRowJs\r\n{\r\n Id: string;\r\n Email: string;\r\n Nickname: string;\r\n CreatedOn: string;\r\n Level: number;\r\n IsSaml: boolean;\r\n IsDeactivated: boolean;\r\n IsRpEnterprise: boolean;\r\n}\r\nexport interface NotificationJs\r\n{\r\n Id: string;\r\n Name: string;\r\n ProjectName: string;\r\n WorkspaceName: string;\r\n TargetId?: string;\r\n TargetType: number;\r\n ShortcutType: number;\r\n ShortcutKey: string;\r\n Method: number;\r\n SubRate: number;\r\n SlackChannel: string;\r\n MsTeamsUrl: string;\r\n Type: number;\r\n PrototypeUrl: string;\r\n}\r\nexport interface NotificationSettingJs\r\n{\r\n NotificationType: number;\r\n ProjectCommentsType: number;\r\n}\r\nexport interface NotificationMuteItemJs\r\n{\r\n Id: string;\r\n NotificationType: number;\r\n TargetId?: string;\r\n TargetType: number;\r\n ProjectName: string;\r\n WorkspaceName: string;\r\n}\r\nexport interface ZippedFileJs\r\n{\r\n FileUrl: string;\r\n}\r\nexport interface LicenseJs\r\n{\r\n regName: string;\r\n key: string;\r\n aseUserCount: number;\r\n term: number;\r\n expireDate?: string;\r\n autoRenew: boolean;\r\n isTrial: boolean;\r\n}\r\nexport interface TrialJs\r\n{\r\n ExpireDate: string;\r\n TrialKey: string;\r\n}\r\nexport interface LicenseInfoResponse\r\n{\r\n BestLicense: LicenseJs;\r\n CurrentTrial: TrialJs;\r\n}\r\nexport interface SsoResponse extends ResponseObject\r\n{\r\n userId: string;\r\n userEmail: string;\r\n verified: boolean;\r\n pending: boolean;\r\n serverVersion: string;\r\n authToken: string;\r\n verifyAccountUrl: string;\r\n nickname: string;\r\n bio: string;\r\n profileImageUrl: string;\r\n modifiedOn: string;\r\n isRpEnterprise: boolean;\r\n isWhitelisted: boolean;\r\n isReviewer: boolean;\r\n meta: { [key:string]: string };\r\n welcomeEmailSent: boolean;\r\n localTimeZone: string;\r\n}\r\nexport interface ExtendedSsoResponse extends SsoResponse\r\n{\r\n IdentityProviderId?: string;\r\n IsIdpAdmin: boolean;\r\n IdpSessionId: string;\r\n}\r\nexport interface VersionInfoResponse\r\n{\r\n BuildVersion: string;\r\n EnterpriseVersion: string;\r\n}\r\nexport interface RequestInviteResponse\r\n{\r\n WorkspaceName: string;\r\n}\r\nexport interface RpResponseObject extends ResponseObject\r\n{\r\n Payload: any;\r\n ErrorType: RpErrorTypes;\r\n AuthToken: string;\r\n ExceptionId?: string;\r\n DeletedOn?: string;\r\n UserEmail: string;\r\n UserId: string;\r\n}\r\nexport interface RpResponseObjectOf extends RpResponseObject\r\n{\r\n Payload: T;\r\n}\r\nexport interface AseLicenseResponseObject extends ResponseObject\r\n{\r\n License: LicenseJs;\r\n}\r\nexport interface ExtensionMethods\r\n{\r\n}\r\nexport interface FilesystemFolderInfo\r\n{\r\n RootFolderId: string;\r\n FilesystemInfo: FilesystemJs;\r\n}\r\nexport interface FilesystemSearchItemJs\r\n{\r\n id: string;\r\n folderId: string;\r\n workspaceId: string;\r\n name: string;\r\n type: string;\r\n subtype?: number;\r\n path: string;\r\n updated: string;\r\n lastUpdatedShortcut: string;\r\n viewOnly: boolean;\r\n isUserOnly?: boolean;\r\n prototypeUrl: string;\r\n shortcutState: string;\r\n hasPassword?: boolean;\r\n IsUserOnlyWorkspace?: boolean;\r\n ResourceDirVersion?: number;\r\n}\r\nexport interface ApiErrorData\r\n{\r\n ApiErrorType: ApiErrorTypes;\r\n}\r\nexport interface NotificationEventArgs\r\n{\r\n Id: string;\r\n}\r\nexport interface ArtboardProjectChangedArgs extends NotificationEventArgs\r\n{\r\n Shortcut: string;\r\n}\r\nexport interface RpProjectChangedArgs extends NotificationEventArgs\r\n{\r\n Shortcut: string;\r\n}\r\nexport interface WorkspaceInvitedArgs extends NotificationEventArgs\r\n{\r\n FilesystemId: string;\r\n InvitedByMention: boolean;\r\n OwnerName: string;\r\n OwnerEmail: string;\r\n OwnerProfileImage: string;\r\n MentionComment: string;\r\n}\r\nexport interface UserMentionedArgs extends NotificationEventArgs\r\n{\r\n Shortcut: string;\r\n PageId: string;\r\n IssueCode: string;\r\n Message: string;\r\n AuthorEmail: string;\r\n AuthorName: string;\r\n AuthorProfileImage: string;\r\n MentionType: string;\r\n}\r\nexport interface WorkspaceActivityEventArgs extends NotificationEventArgs\r\n{\r\n FilesystemId: string;\r\n}\r\nexport interface ResetPasswordValidateJs\r\n{\r\n Email: string;\r\n}\r\nexport interface UserProfileJs\r\n{\r\n userId: string;\r\n userEmail: string;\r\n username: string;\r\n profileImg: string;\r\n}\r\nexport interface ShareStatusJs\r\n{\r\n success: boolean;\r\n readOnlyMode: boolean;\r\n readOnlyMessage: string;\r\n isSubInstance: boolean;\r\n}\r\nexport interface TreeNodeJs\r\n{\r\n name: string;\r\n id: string;\r\n}\r\nexport interface TreeNodeFileJs extends TreeNodeJs\r\n{\r\n filetype: string;\r\n rpmajorversion: string;\r\n}\r\nexport interface TreeNodeWorkspaceJs extends TreeNodeJs\r\n{\r\n owner: SsoResponse;\r\n defaultWorkspace: boolean;\r\n isFavorite: boolean;\r\n isFolder: boolean;\r\n explicitlyJoined: boolean;\r\n children: TreeNodeJs[];\r\n}\r\nexport interface CloudLibrariesJs\r\n{\r\n defaultLibraries: CloudLibraryJs[];\r\n}\r\nexport interface CloudLibraryJs\r\n{\r\n shortcut: string;\r\n id: string;\r\n name: string;\r\n fileType: string;\r\n}\r\nexport interface TimeZoneJs\r\n{\r\n Id: string;\r\n DisplayName: string;\r\n baseUtcOffsetMinutes: number;\r\n}\r\nexport interface ResponsiveImage\r\n{\r\n Url: string;\r\n Density: number;\r\n}\r\nexport interface RichTextNodeTypes\r\n{\r\n Doc: string;\r\n Paragraph: string;\r\n Text: string;\r\n Mention: string;\r\n Emoji: string;\r\n}\r\nexport interface RichTextNodeTypesAttributes\r\n{\r\n}\r\nexport interface RichTextNodeAttributes\r\n{\r\n id: string;\r\n label: string;\r\n}\r\nexport interface RichTextNode\r\n{\r\n type: string;\r\n text: string;\r\n content: RichTextNode[];\r\n attrs: { [key:string]: string };\r\n}\r\nexport interface RichText extends RichTextNode\r\n{\r\n}\r\nexport interface RichTextComment\r\n{\r\n Content: RichText;\r\n}\r\nexport interface UserSuggestions\r\n{\r\n Shortcut: string;\r\n FilesystemId: string;\r\n Suggestions: UserSuggestion[];\r\n}\r\nexport interface UserSuggestion\r\n{\r\n UserId: string;\r\n IsMe: boolean;\r\n UserEmail: string;\r\n UserName: string;\r\n UserBio: string;\r\n JoinedFilesystem: boolean;\r\n}\r\nexport interface ContentType\r\n{\r\n Json: string;\r\n WwwFormUrlEncoded: string;\r\n}\r\nexport interface Mention\r\n{\r\n Id: string;\r\n Label: string;\r\n}\r\nexport interface Emoji\r\n{\r\n Id: string;\r\n Native: string;\r\n ShortName: string;\r\n}\r\n","import Vue from \"vue\";\r\nimport PortalVue from \"portal-vue\";\r\n\r\nexport default () => {\r\n Vue.use(PortalVue);\r\n};\r\n","import VueGTM from \"@gtm-support/vue2-gtm\";\r\nimport Vue from \"vue\";\r\n\r\nimport { asError } from \"@/common/lib\";\r\nimport router from \"@/router\";\r\n\r\nconst gtmTrackingId = process.env.VUE_APP_GTM_TRACKING_ID;\r\n\r\nexport default () => {\r\n if (!gtmTrackingId) return;\r\n\r\n try {\r\n Vue.use(VueGTM, {\r\n id: gtmTrackingId,\r\n enabled: process.env.NODE_ENV === \"production\" && !!gtmTrackingId,\r\n vueRouter: router,\r\n });\r\n } catch (err) {\r\n console.error(asError(err).message);\r\n }\r\n};\r\n","import Vue from \"vue\";\r\nimport VueLazyload from \"vue-lazyload\";\r\n\r\nexport default () => {\r\n Vue.use(VueLazyload, {\r\n observer: true,\r\n dispatchEvent: true,\r\n });\r\n};\r\n","import Vue from \"vue\";\r\nimport VueMeta, { VueMetaOptions } from \"vue-meta\";\r\n\r\nexport default () => {\r\n const options: Partial = {\r\n refreshOnceOnNavigation: true,\r\n };\r\n Vue.use(VueMeta, options);\r\n};\r\n","import Vue from \"vue\";\r\nimport VueTransmit from \"vue-transmit\";\r\n\r\nexport default () => {\r\n Vue.use(VueTransmit);\r\n};\r\n","import portalVue from \"@/vendor/portal-vue\";\r\nimport gtm from \"@/vendor/vue-gtm\";\r\nimport lazyload from \"@/vendor/vue-lazyload\";\r\nimport meta from \"@/vendor/vue-meta\";\r\nimport transmit from \"@/vendor/vue-transmit\";\r\n\r\nexport default () => {\r\n [transmit, lazyload, gtm, meta, portalVue].forEach(installer => installer());\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"app-wrapper\"},[(_vm.isElectron)?_c('AxTitleBar'):_vm._e(),_c('div',{class:_vm.classes,attrs:{\"id\":\"app\"}},[_c('AppView'),_c('PortalTarget',{attrs:{\"name\":\"tooltips-area\"}})],1),_c('AxAppFailure',{attrs:{\"error\":_vm.navigationError}}),(_vm.appConfigured)?_c('AxVersionTracker'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport const appStatus = Vue.extend({\r\n computed: {\r\n appStatus() {\r\n const { initializationStatus: status } = this.$store.state as AxShare;\r\n return status;\r\n },\r\n\r\n appStatusInitialized(): boolean {\r\n return !!this.appStatus;\r\n },\r\n\r\n appStatusFailure(): boolean {\r\n return this.appStatus === \"failure\";\r\n },\r\n\r\n appStatusSuccess(): boolean {\r\n return this.appStatus === \"success\";\r\n },\r\n },\r\n});\r\n","import Vue from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\n\r\nexport const desktopClasses = Vue.extend({\r\n computed: {\r\n isWindowsPlatform(): boolean {\r\n return window.AxureCloudNative.process.platform === \"win32\";\r\n },\r\n\r\n isMacPlatform(): boolean {\r\n return window.AxureCloudNative.process.platform === \"darwin\";\r\n },\r\n\r\n classes(): Record {\r\n // class names should be kept in sync with mixins in _desktop.scss\r\n return {\r\n \"desktop-app\": isElectron,\r\n \"desktop-app--windows\": isElectron && this.isWindowsPlatform,\r\n \"desktop-app--mac\": isElectron && this.isMacPlatform,\r\n };\r\n },\r\n },\r\n});\r\n","import Vue from \"vue\";\r\n\r\nimport { openExternal } from \"@/common/desktop/links\";\r\nimport { isElectron } from \"@/common/environment\";\r\n\r\nexport const desktopExternalLinks = Vue.extend({\r\n created() {\r\n if (isElectron) {\r\n document.addEventListener(\"click\", this.handleClick, false);\r\n }\r\n },\r\n\r\n destroyed() {\r\n if (isElectron) {\r\n document.removeEventListener(\"click\", this.handleClick);\r\n }\r\n },\r\n\r\n methods: {\r\n handleClick(event: MouseEvent) {\r\n const target = event.target;\r\n if (!(target instanceof HTMLElement)) return;\r\n const link = this.findLink(target);\r\n if (!link) return;\r\n\r\n const isExternal = location.hostname !== link.hostname;\r\n if (isExternal && !event.defaultPrevented) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n openExternal(link.href);\r\n }\r\n },\r\n\r\n findLink(target: HTMLElement): HTMLAnchorElement | undefined {\r\n let node: HTMLElement | undefined = target;\r\n while (node) {\r\n if (node instanceof HTMLAnchorElement) {\r\n return node;\r\n }\r\n node = node.parentNode as HTMLElement;\r\n }\r\n },\r\n },\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Transition',{attrs:{\"appear\":\"\",\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.appStatusFailure)?_c('div',{staticClass:\"container-fluid\"},[_c('AxOnline',{on:{\"change\":_vm.onlineStatusChanged}}),_c('AxAppFailure',{attrs:{\"error\":_vm.initializationError,\"force-error\":\"\"}})],1):(_vm.appStatusInitialized && _vm.componentMatched)?_c('RouterView'):_c('AxAppSplashScreen',{staticClass:\"app-loading\"},[_c('div',{staticClass:\"app-loading-status\"},[_c('AxDelayed',{attrs:{\"delay\":1500}},[_c('Transition',{attrs:{\"name\":\"slide-up\",\"appear\":\"\",\"mode\":\"out-in\"}},[_c('span',[_vm._v(\" Starting up... \")])])],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.hasError)?_c('div',{staticClass:\"ax-app-failure\",class:{'desktop-app--windows': _vm.isDesktopWindows}},[_c('div',{staticClass:\"container-fluid\"},[_c('AxAxureLogoRow'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"failure-container\"},[_c('div',[_c('AxOnline',{on:{\"change\":_vm.onlineStatusChanged},scopedSlots:_vm._u([{key:\"default\",fn:function({ isOnline }){return [(_vm.isSignInRoError)?[_c('AxAppFailureReadOnlySignIn',{attrs:{\"can-retry\":isOnline},on:{\"retry\":_vm.acknowledge}})]:[_c('div',[(_vm.isDbError)?_c('AxAppFailureDb',{attrs:{\"error\":_vm.dbError}}):_vm._e(),(_vm.isJsonSettingsLoadError)?_c('AxAppFailureJsonSettingsLoad',{attrs:{\"error\":_vm.jsonSettingsLoadError}}):(_vm.isRoError)?_c('AxAppFailureReadOnly'):(_vm.isApiExceptionError)?_c('AxAppFailureApiException',{attrs:{\"error\":_vm.apiExceptionError}}):_c('AxAppFailureFallback',{attrs:{\"is-online\":isOnline}}),_c('div',[(isOnline && _vm.isAuthed)?_c('span',[_c('div',[_vm._v(\" You can also try to refresh the page \"),_c('AxButton',{attrs:{\"to\":_vm.fsRoute,\"color\":\"link\",\"highlighted\":\"\"},on:{\"click\":() => { _vm.clearApiCalls(); _vm.acknowledge() }}},[_vm._v(\" or navigate back to the Home page \")]),_vm._v(\". \")],1)]):_vm._e()]),(isOnline && _vm.canRetry)?_c('AxAppFailureRetry',{on:{\"retry\":_vm.retry}}):_vm._e(),(_vm.canReload)?_c('AxAppFailureReload'):_vm._e()],1)]]}}],null,false,2112480843)})],1)])])])],1)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"user-select-initial\"},[_c('h2',[_vm._v(\" An error occurred while processing your request \")]),_vm._v(\" Please contact \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\" support@axure.com\")]),_vm._v(\" and reference error code \"+_vm._s(_vm.error.exceptionId)+\". \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\nimport { ApiExceptionError } from \"@/common/axshare/errors\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n error: prop(ApiExceptionError, {\r\n required: true,\r\n }),\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureApiException.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureApiException.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureApiException.vue?vue&type=template&id=5f185481&\"\nimport script from \"./AxAppFailureApiException.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureApiException.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"dberror-placeholder\"},[_c('h2',[_vm._v(\" There was an error connecting to the database \")]),_vm._m(0),_c('div',[_c('a',{staticClass:\"link-highlighted\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onDetailsClicked}},[_vm._v(_vm._s(_vm.detailsMessage))])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showError),expression:\"showError\"}]},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.errorMessage),expression:\"errorMessage\"}],attrs:{\"rows\":\"10\",\"readonly\":\"true\"},domProps:{\"value\":(_vm.errorMessage)},on:{\"input\":function($event){if($event.target.composing)return;_vm.errorMessage=$event.target.value}}})])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._v(\" Please contact your system administrators to resolve this issue. If your system administrator is not able to resolve the issue please click \\\"Show Details\\\" below and include this information when you contact \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\" about the issue. \")])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { DbConnectionError } from \"@/common/axshare/errors\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n error: prop(DbConnectionError, {\r\n required: true,\r\n }),\r\n },\r\n\r\n data() {\r\n return {\r\n showError: false,\r\n };\r\n },\r\n\r\n computed: {\r\n errorMessage(): string {\r\n return this.error ? this.error.message : \"\";\r\n },\r\n\r\n detailsMessage(): string {\r\n return this.showError ? \"Hide Details\" : \"Show Details\";\r\n },\r\n },\r\n\r\n methods: {\r\n onDetailsClicked() {\r\n this.showError = !this.showError;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureDb.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureDb.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureDb.vue?vue&type=template&id=f44608ee&scoped=true&\"\nimport script from \"./AxAppFailureDb.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureDb.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAppFailureDb.vue?vue&type=style&index=0&id=f44608ee&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f44608ee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isOnline)?_c('div',[_c('h2',[_vm._v(\" We're having trouble connecting \")]),_vm._m(0)]):_c('div',[_vm._m(1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._v(\" If you need some help, email us at \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\". \")])\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('h2',[_vm._v(\" You appear to be offline.\"),_c('br'),_vm._v(\"We're trying to reconnect. \")])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n isOnline: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureFallback.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureFallback.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureFallback.vue?vue&type=template&id=a004f866&\"\nimport script from \"./AxAppFailureFallback.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureFallback.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"error-placeholder\"},[_c('h2',[_vm._v(\" There was an error loading customsettings.json file. \")]),_vm._m(0),_c('div',[_c('a',{staticClass:\"link-highlighted\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onDetailsClicked}},[_vm._v(\" \"+_vm._s(_vm.detailsMessage)+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showError),expression:\"showError\"}]},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.errorMessage),expression:\"errorMessage\"}],attrs:{\"rows\":\"10\",\"readonly\":\"true\"},domProps:{\"value\":(_vm.errorMessage)},on:{\"input\":function($event){if($event.target.composing)return;_vm.errorMessage=$event.target.value}}})])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._v(\" Please contact your system administrator to resolve this issue. If your system administrator is not able to resolve the issue, please click \\\"Show Details\\\" below and include this information when you contact \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\". \")])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { JsonSettingsLoadError } from \"@/common/axshare/errors\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n error: prop(JsonSettingsLoadError, {\r\n required: true,\r\n }),\r\n },\r\n\r\n data() {\r\n return {\r\n showError: false,\r\n };\r\n },\r\n\r\n computed: {\r\n errorMessage(): string {\r\n return this.error ? this.error.message : \"\";\r\n },\r\n\r\n detailsMessage(): string {\r\n return this.showError ? \"Hide Details\" : \"Show Details\";\r\n },\r\n },\r\n\r\n methods: {\r\n onDetailsClicked() {\r\n this.showError = !this.showError;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureJsonSettingsLoad.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureJsonSettingsLoad.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureJsonSettingsLoad.vue?vue&type=template&id=1fce1e96&scoped=true&\"\nimport script from \"./AxAppFailureJsonSettingsLoad.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureJsonSettingsLoad.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAppFailureJsonSettingsLoad.vue?vue&type=style&index=0&id=1fce1e96&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fce1e96\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('h2',[_vm._v(\" \"+_vm._s(_vm.readOnlyErrorMessage)+\" \")]),_vm._m(0)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._v(\" For additional help, contact us at \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\". \")])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport default Vue.extend({\r\n computed: {\r\n readOnlyErrorMessage(): string {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig ? axShareConfig.ReadOnlyMessage : \"\";\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureReadOnly.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureReadOnly.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureReadOnly.vue?vue&type=template&id=8edac7fa&\"\nimport script from \"./AxAppFailureReadOnly.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureReadOnly.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('h2',[_vm._v(\" \"+_vm._s(_vm.readOnlyErrorMessage)+\" \")]),_c('div',[_vm._v(\" For additional help, contact us at \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\". \"),(_vm.canRetry)?_c('AxAppFailureRetry',{on:{\"retry\":_vm.retry}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"retry-attempt\"},[_c('AxButton',{attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.$emit('retry')}}},[_vm._v(\" Retry \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureRetry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureRetry.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureRetry.vue?vue&type=template&id=43ec0c9d&scoped=true&\"\nimport script from \"./AxAppFailureRetry.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureRetry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAppFailureRetry.vue?vue&type=style&index=0&id=43ec0c9d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43ec0c9d\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { resolveRedirect, wellKnownRoutes } from \"@/common/axshare\";\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { Main } from \"@/desktop/events\";\r\nimport { Logout } from \"@/store/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxAppFailureRetry from \"@/components/AxAppFailureRetry.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxAppFailureRetry,\r\n },\r\n\r\n props: {\r\n canRetry: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n readOnlyErrorMessage(): string {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig ? axShareConfig.ReadOnlyMessage : \"\";\r\n },\r\n },\r\n\r\n methods: {\r\n async retry() {\r\n await this.logout();\r\n this.$emit(\"retry\");\r\n },\r\n\r\n async logout() {\r\n const onSuccess = () => new Promise((resolve, reject) => {\r\n const afterLogoutRedirect = resolveRedirect({ name: wellKnownRoutes.login.name });\r\n if (afterLogoutRedirect) {\r\n this.$router.push(afterLogoutRedirect, () => resolve(), reject);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n\r\n if (isElectron) {\r\n window.AxureCloudNative.ipc.send(Main.LogoutPerformed);\r\n }\r\n\r\n await this.$store.dispatch(new Logout(onSuccess));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureReadOnlySignIn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureReadOnlySignIn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureReadOnlySignIn.vue?vue&type=template&id=43073585&\"\nimport script from \"./AxAppFailureReadOnlySignIn.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureReadOnlySignIn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"reload-attempt\"},[_c('AxButton',{attrs:{\"type\":\"submit\"},on:{\"click\":_vm.reload}},[_vm._v(\" Reload \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n },\r\n\r\n methods: {\r\n reload() {\r\n window.location.reload();\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureReload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailureReload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailureReload.vue?vue&type=template&id=be8fe98c&scoped=true&\"\nimport script from \"./AxAppFailureReload.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailureReload.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAppFailureReload.vue?vue&type=style&index=0&id=be8fe98c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"be8fe98c\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode } from \"vue\";\r\n\r\nconst EVENTS = [\"online\", \"offline\", \"load\"];\r\n\r\nexport default Vue.extend({\r\n data() {\r\n return {\r\n supportsStatusCheck: typeof window.navigator.onLine !== \"undefined\",\r\n isOnline: false,\r\n };\r\n },\r\n\r\n created() {\r\n this.updateStatus(true);\r\n EVENTS.forEach(event => window.addEventListener(event, this.statusChanged));\r\n },\r\n\r\n beforeDestroy() {\r\n EVENTS.forEach(event => window.removeEventListener(event, this.statusChanged));\r\n },\r\n\r\n methods: {\r\n statusChanged() {\r\n this.updateStatus();\r\n },\r\n\r\n updateStatus(initial = false) {\r\n const before = this.isOnline;\r\n this.isOnline = this.supportsStatusCheck ? window.navigator.onLine : true;\r\n const changed = before !== this.isOnline;\r\n if (!initial && changed) {\r\n this.$emit(\"change\", this.isOnline);\r\n }\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n return (\r\n (this.$scopedSlots.default &&\r\n ((this.$scopedSlots.default({\r\n isOnline: this.isOnline,\r\n }) as unknown) as VNode)) ||\r\n h(\"\")\r\n );\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxOnline.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxOnline.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxDelayed.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDelayed.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxRetry.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxRetry.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxOnline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxOnline.vue?vue&type=script&lang=ts&\"","\r\nimport { HttpError } from \"@microsoft/signalr\";\r\nimport Vue from \"vue\";\r\nimport VueRouter from \"vue-router\";\r\n\r\nimport { wellKnownRoutes } from \"@/common/axshare\";\r\nimport {\r\n ApiExceptionError,\r\n SignInReadOnlyError,\r\n ReadOnlyError,\r\n DbConnectionError,\r\n JsonSettingsLoadError,\r\n} from \"@/common/axshare/errors\";\r\nimport { isDevelopment, isProduction, isElectron } from \"@/common/environment\";\r\nimport { isEdge } from \"@/common/lib\";\r\nimport { ApiCallRetry, ApiCallClear } from \"@/store/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxAppFailureApiException from \"@/components/AxAppFailureApiException.vue\";\r\nimport AxAppFailureDb from \"@/components/AxAppFailureDb.vue\";\r\nimport AxAppFailureFallback from \"@/components/AxAppFailureFallback.vue\";\r\nimport AxAppFailureJsonSettingsLoad from \"@/components/AxAppFailureJsonSettingsLoad.vue\";\r\nimport AxAppFailureReadOnly from \"@/components/AxAppFailureReadOnly.vue\";\r\nimport AxAppFailureReadOnlySignIn from \"@/components/AxAppFailureReadOnlySignIn.vue\";\r\nimport AxAppFailureReload from \"@/components/AxAppFailureReload.vue\";\r\nimport AxAppFailureRetry from \"@/components/AxAppFailureRetry.vue\";\r\nimport AxAxureLogoRow from \"@/components/AxAxureLogoRow.vue\";\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxOnline from \"@/components/AxOnline.vue\";\r\n\r\ntype VueGlobalErrorHandlerArgs = [Error, Vue, string];\r\ntype VueGlobalErrorHandler = (...args: VueGlobalErrorHandlerArgs) => void;\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxAppFailureApiException,\r\n AxAppFailureDb,\r\n AxAppFailureJsonSettingsLoad,\r\n AxAppFailureFallback,\r\n AxAppFailureReadOnly,\r\n AxAppFailureReadOnlySignIn,\r\n AxAppFailureRetry,\r\n AxAppFailureReload,\r\n AxAxureLogoRow,\r\n AxButton,\r\n AxOnline,\r\n },\r\n\r\n props: {\r\n error: {\r\n type: [Error, Object],\r\n required: false,\r\n default: undefined,\r\n },\r\n\r\n forceError: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n acknowledged: false,\r\n originalFocus: null as HTMLElement | null,\r\n vueError: undefined as Error | undefined,\r\n promiseRejection: undefined as PromiseRejectionEvent | undefined,\r\n errorInfo: \"\",\r\n originalVueHandler: undefined as VueGlobalErrorHandler | undefined,\r\n originalWindowErrorHandler: undefined as OnErrorEventHandlerNonNull | undefined,\r\n fsRoute: {\r\n name: wellKnownRoutes.home.name,\r\n },\r\n };\r\n },\r\n\r\n computed: {\r\n hasError(): boolean {\r\n return (this.error || this.forceError || !!this.vueError || !!this.promiseRejection) && !this.acknowledged;\r\n },\r\n\r\n isDesktopWindows(): boolean {\r\n return isElectron && window.AxureCloudNative.process.platform === \"win32\";\r\n },\r\n\r\n isAuthed(): boolean {\r\n let isAuthed = false;\r\n const { accountService } = this.$store.state as AxShare;\r\n if (accountService) {\r\n isAuthed = accountService().IsAuthed;\r\n }\r\n return isAuthed;\r\n },\r\n\r\n failuredApiCallsIds(): string[] {\r\n return this.$store.getters.failuredApiCallsIds as string[];\r\n },\r\n\r\n canRetry(): boolean {\r\n return !this.isJsonSettingsLoadError && this.failuredApiCallsIds.length > 0;\r\n },\r\n\r\n canReload(): boolean {\r\n return this.isJsonSettingsLoadError;\r\n },\r\n\r\n dbError(): DbConnectionError | undefined {\r\n return this.unwrapError(DbConnectionError);\r\n },\r\n\r\n jsonSettingsLoadError(): JsonSettingsLoadError | undefined {\r\n return this.unwrapError(JsonSettingsLoadError);\r\n },\r\n\r\n apiExceptionError(): ApiExceptionError | undefined {\r\n return this.unwrapError(ApiExceptionError);\r\n },\r\n\r\n signInReadOnlyError(): SignInReadOnlyError | undefined {\r\n return this.unwrapError(SignInReadOnlyError);\r\n },\r\n\r\n readOnlyError(): ReadOnlyError | undefined {\r\n if (this.error && this.error instanceof ReadOnlyError) {\r\n return this.error;\r\n }\r\n if (this.promiseRejection && this.promiseRejection.reason instanceof ReadOnlyError) {\r\n return this.promiseRejection.reason;\r\n }\r\n if (this.vueError && this.vueError instanceof ReadOnlyError) {\r\n return this.vueError;\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n isDbError(): boolean {\r\n return !!this.dbError;\r\n },\r\n\r\n isJsonSettingsLoadError(): boolean {\r\n return !!this.jsonSettingsLoadError;\r\n },\r\n\r\n isApiExceptionError(): boolean {\r\n return !!this.apiExceptionError && !!this.apiExceptionError.exceptionId;\r\n },\r\n\r\n isSignInRoError(): boolean {\r\n return !!this.signInReadOnlyError;\r\n },\r\n\r\n isRoError(): boolean {\r\n return !!this.readOnlyError;\r\n },\r\n },\r\n\r\n watch: {\r\n error(val) {\r\n if (val) {\r\n this.acknowledged = false;\r\n }\r\n },\r\n\r\n hasError(val) {\r\n if (val && document.activeElement instanceof HTMLElement) {\r\n // save current focused element to restore focus after error is acknowledged\r\n this.originalFocus = document.activeElement;\r\n this.originalFocus.blur();\r\n }\r\n },\r\n },\r\n\r\n created() {\r\n this.originalVueHandler = Vue.config.errorHandler;\r\n this.originalWindowErrorHandler = window.onerror || undefined;\r\n\r\n Vue.config.errorHandler = this.handleVueError;\r\n window.onerror = this.handleWindowError;\r\n window.addEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\r\n },\r\n\r\n destroyed() {\r\n if (this.originalVueHandler) Vue.config.errorHandler = this.originalVueHandler;\r\n if (this.originalWindowErrorHandler) window.onerror = this.originalWindowErrorHandler;\r\n window.removeEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\r\n },\r\n\r\n methods: {\r\n unwrapError any>(Ctor: T) {\r\n if (this.error && this.error instanceof Ctor) {\r\n return this.error;\r\n }\r\n if (this.promiseRejection && this.promiseRejection.reason instanceof Ctor) {\r\n return this.promiseRejection.reason;\r\n }\r\n if (this.vueError && this.vueError instanceof Ctor) {\r\n return this.vueError;\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n handleVueError(...args: [Error | undefined, Vue, string]) {\r\n this.acknowledged = false;\r\n const [error, _vm, info] = args;\r\n if (!error) {\r\n // there is a bug in Vue that error might be undefined if exception has been thrown inside async handler\r\n // ignore those errors\r\n return;\r\n }\r\n this.tryLogError(error, info);\r\n\r\n if (VueRouter.isNavigationFailure(error)) {\r\n // ignore duplicated navigation in production builds,\r\n // as probably we can survive that\r\n if (isProduction) {\r\n return;\r\n }\r\n }\r\n\r\n if (info === \"render\") {\r\n // ignore 'render' errors, as likely app will be able to survive and still be usable\r\n // displaying full-screen overlay in this case is too much\r\n console.error(error);\r\n return;\r\n }\r\n\r\n this.vueError = error;\r\n this.errorInfo = info;\r\n\r\n if (this.originalVueHandler) {\r\n this.originalVueHandler(...(args as VueGlobalErrorHandlerArgs));\r\n }\r\n },\r\n\r\n handleWindowError(\r\n ...args: [Event | string, string | undefined, number | undefined, number | undefined, Error | undefined]\r\n ) {\r\n const [event, source, lineno, colno, error] = args;\r\n\r\n // Catch error which happens when resize prototype build page in Edge. See A9-1345 for more info.\r\n if (isEdge && error && error.message && error.message.includes(\"getPropertyValue\")) {\r\n console.error(error);\r\n return false;\r\n }\r\n\r\n this.acknowledged = false;\r\n this.tryLogError(error, source, lineno, colno);\r\n\r\n this.vueError = error;\r\n if (typeof event === \"string\") {\r\n this.errorInfo = event;\r\n }\r\n\r\n if (this.originalWindowErrorHandler) {\r\n this.originalWindowErrorHandler(...args);\r\n }\r\n },\r\n\r\n handleUnhandledRejection(rejection: PromiseRejectionEvent) {\r\n if (rejection.reason === \"Timeout\") {\r\n // ignore global promise rejection thrown by recaptcha\r\n return;\r\n }\r\n\r\n if (isProduction && rejection.reason instanceof HttpError) {\r\n // ignore global promise rejection thrown by SignalR connection\r\n return;\r\n }\r\n\r\n // ignore router errors in production builds as probably we can survive that\r\n if (isProduction && VueRouter.isNavigationFailure(rejection.reason)) {\r\n return;\r\n }\r\n\r\n this.tryLogError(rejection.reason, rejection);\r\n this.acknowledged = false;\r\n this.promiseRejection = rejection;\r\n this.errorInfo = rejection.reason;\r\n },\r\n\r\n acknowledge() {\r\n this.acknowledged = true;\r\n\r\n // restore focused element\r\n if (this.originalFocus) {\r\n this.originalFocus.focus();\r\n this.originalFocus = null;\r\n }\r\n },\r\n\r\n async onlineStatusChanged(isOnline: boolean) {\r\n if (this.hasError && !this.forceError && isOnline) {\r\n this.acknowledge();\r\n await this.retry();\r\n }\r\n },\r\n\r\n async retry() {\r\n this.acknowledge();\r\n await Promise.all(this.failuredApiCallsIds.map(id => this.$store.dispatch(new ApiCallRetry(id))));\r\n },\r\n\r\n clearApiCalls() {\r\n this.$store.dispatch(new ApiCallClear());\r\n },\r\n\r\n tryLogError(error: Error | undefined, ...extras: any[]) {\r\n if (isDevelopment) {\r\n console.error(error, extras);\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailure.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppFailure.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppFailure.vue?vue&type=template&id=d7e8dfbe&scoped=true&\"\nimport script from \"./AxAppFailure.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppFailure.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAppFailure.vue?vue&type=style&index=0&id=d7e8dfbe&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d7e8dfbe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-app-loading desktop-app-drag\"},[_c('div',[_c('div',{staticClass:\"loading-logo\"},[_c('AxIcon',[_c('AxAxureLogo',{attrs:{\"dark\":\"\"}})],1)],1),_c('div',[_vm._t(\"default\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxAxureLogo from \"@/components/icons/AxAxureLogo.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxAxureLogo,\r\n },\r\n\r\n created() {\r\n document.body.classList.add(\"body-fluid\");\r\n },\r\n\r\n destroyed() {\r\n document.body.classList.remove(\"body-fluid\");\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppSplashScreen.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAppSplashScreen.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAppSplashScreen.vue?vue&type=template&id=1788e3db&scoped=true&\"\nimport script from \"./AxAppSplashScreen.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAppSplashScreen.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAppSplashScreen.vue?vue&type=style&index=0&id=1788e3db&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1788e3db\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VNode } from \"vue\";\r\n\r\nimport { delay } from \"@/common/lib/promise\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n delay: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n completed: false,\r\n cancelled: false,\r\n };\r\n },\r\n\r\n computed: {\r\n fulfilled(): boolean {\r\n return this.completed && !this.cancelled;\r\n },\r\n },\r\n\r\n async created() {\r\n await delay(this.delay);\r\n this.completed = true;\r\n },\r\n\r\n destroyed() {\r\n if (!this.completed) {\r\n this.cancelled = true;\r\n }\r\n },\r\n\r\n render(h): VNode {\r\n return this.fulfilled && this.$scopedSlots.default ? ((this.$scopedSlots.default({}) as unknown) as VNode) : h(\"\");\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDelayed.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDelayed.vue?vue&type=script&lang=ts&\"","\r\nimport Vue, { VueConstructor } from \"vue\";\r\n\r\nimport { appStatus } from \"@/mixins/AppStatus\";\r\nimport { Initialize } from \"@/store/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxAppFailure from \"@/components/AxAppFailure.vue\";\r\nimport AxAppSplashScreen from \"@/components/AxAppSplashScreen.vue\";\r\nimport AxDelayed from \"@/components/AxDelayed.vue\";\r\nimport AxOnline from \"@/components/AxOnline.vue\";\r\n\r\ntype Mixins = InstanceType;\r\n\r\nexport default (Vue as VueConstructor).extend({\r\n components: {\r\n AxAppFailure,\r\n AxAppSplashScreen,\r\n AxDelayed,\r\n AxOnline,\r\n },\r\n\r\n mixins: [appStatus],\r\n\r\n computed: {\r\n componentMatched(): boolean {\r\n return this.$route.matched.length > 0;\r\n },\r\n\r\n initializationError(): Error | undefined | unknown {\r\n const { initializationError } = this.$store.state as AxShare;\r\n return initializationError;\r\n },\r\n\r\n navigationError(): Error | undefined | unknown {\r\n const { navigationError } = this.$store.state as AxShare;\r\n return navigationError;\r\n },\r\n },\r\n\r\n methods: {\r\n async onlineStatusChanged(isOnline: boolean) {\r\n if (isOnline && (!this.appStatusInitialized || this.appStatusFailure)) {\r\n // try to recover from uninitialized app state, if it was due-to networking issue\r\n await this.$store.dispatch(new Initialize(true));\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppView.vue?vue&type=template&id=3f58ef20&scoped=true&\"\nimport script from \"./AppView.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppView.vue?vue&type=style&index=0&id=3f58ef20&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f58ef20\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.repoUrl && _vm.hash)?_c('span',{staticClass:\"version-badge\"},[_c('a',{attrs:{\"href\":_vm.commitOnRemote,\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.shortHash))]),_c('AxRetry',{attrs:{\"interval\":_vm.interval,\"handler\":_vm.pollApiVersionInfo,\"immediate\":true}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue, { VNode } from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n interval: {\r\n type: Number,\r\n required: true,\r\n },\r\n\r\n handler: {\r\n type: Function,\r\n required: true,\r\n },\r\n\r\n immediate: {\r\n type: Boolean,\r\n required: false,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n retryInterval: undefined as number | undefined,\r\n };\r\n },\r\n\r\n async created() {\r\n if (this.immediate) {\r\n await this.runHandler();\r\n }\r\n this.retryInterval = window.setInterval(this.runHandler, this.interval);\r\n },\r\n\r\n beforeDestroy() {\r\n clearInterval(this.retryInterval);\r\n },\r\n\r\n methods: {\r\n async runHandler() {\r\n try {\r\n await this.handler();\r\n } catch (e) {\r\n this.$emit(\"error\", e);\r\n }\r\n },\r\n },\r\n\r\n render(h): VNode {\r\n return h();\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxRetry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxRetry.vue?vue&type=script&lang=ts&\"","\r\nimport Vue from \"vue\";\r\n\r\nimport { VersionInfoResponse } from \"@shared/models\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport { persistentStorage } from \"../common/axshare/persistent\";\r\nimport { commitHash } from \"../common/environment\";\r\nimport { LoadApiVersionInfo } from \"../store/actionTypes\";\r\nimport { ApiVersionSet } from \"../store/mutationTypes\";\r\n\r\nimport AxRetry from \"@/components/AxRetry.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxRetry,\r\n },\r\n\r\n props: {\r\n interval: {\r\n type: Number,\r\n required: false,\r\n default: 1000 * 60 * 10,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n willReloadOnNextNavigation: false,\r\n reloading: false,\r\n };\r\n },\r\n\r\n computed: {\r\n versionInfo(): VersionInfoResponse | null {\r\n const { apiVersionInfo } = this.$store.state as AxShare;\r\n return apiVersionInfo;\r\n },\r\n\r\n hash(): string {\r\n if (commitHash) {\r\n return commitHash;\r\n }\r\n return this.versionInfo ? this.versionInfo.BuildVersion : \"\";\r\n },\r\n\r\n shortHash(): string {\r\n return this.hash.substring(0, 7);\r\n },\r\n\r\n repoUrl(): string {\r\n const repoUrl = process.env.VUE_APP_REPO_URL;\r\n return repoUrl || \"\";\r\n },\r\n\r\n commitOnRemote(): string {\r\n return `${this.repoUrl}${this.hash}`;\r\n },\r\n },\r\n\r\n watch: {\r\n versionInfo(newVersion: VersionInfoResponse, oldVersion: VersionInfoResponse) {\r\n if (!oldVersion || !newVersion) {\r\n return;\r\n }\r\n if (oldVersion.BuildVersion && newVersion.BuildVersion) {\r\n if (oldVersion.BuildVersion !== newVersion.BuildVersion) {\r\n this.reloadOnNextRouteNavigation();\r\n }\r\n } else if (oldVersion.EnterpriseVersion && newVersion.EnterpriseVersion) {\r\n if (oldVersion.EnterpriseVersion !== newVersion.EnterpriseVersion) {\r\n this.reloadOnNextRouteNavigation();\r\n }\r\n }\r\n },\r\n },\r\n\r\n methods: {\r\n async pollApiVersionInfo() {\r\n const lastPolling = persistentStorage.getApiVersionInfo();\r\n if (!lastPolling || !lastPolling.date || !lastPolling.value) {\r\n await this.loadApiVersionInfo();\r\n } else {\r\n const dateDiff = Date.now() - new Date(lastPolling.date).getTime();\r\n if (dateDiff >= this.interval) {\r\n await this.loadApiVersionInfo();\r\n } else {\r\n this.$store.commit(new ApiVersionSet(lastPolling.value));\r\n }\r\n }\r\n },\r\n\r\n async loadApiVersionInfo() {\r\n await this.$store.dispatch(new LoadApiVersionInfo());\r\n },\r\n\r\n reloadOnNextRouteNavigation() {\r\n if (this.willReloadOnNextNavigation || this.reloading) return;\r\n this.willReloadOnNextNavigation = true;\r\n // register a guard that will reload on next route navigation if it's safe route\r\n this.$router.beforeEach((to, _from, next) => {\r\n if (to.meta && to.meta.safeToApplySWUpdate) {\r\n this.reloading = true;\r\n window.location.reload();\r\n } else {\r\n next();\r\n }\r\n });\r\n },\r\n },\r\n\r\n render(h) {\r\n return h(\"\");\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxVersionTracker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxVersionTracker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxVersionTracker.vue?vue&type=template&id=26a99b44&scoped=true&\"\nimport script from \"./AxVersionTracker.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxVersionTracker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxVersionTracker.vue?vue&type=style&index=0&id=26a99b44&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26a99b44\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue, { VueConstructor } from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { appStatus } from \"@/mixins/AppStatus\";\r\nimport { desktopClasses } from \"@/mixins/DesktopClasses\";\r\nimport { desktopExternalLinks } from \"@/mixins/DesktopExternalLinks\";\r\nimport AppView from \"@/pages/AppView.vue\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxAppFailure from \"@/components/AxAppFailure.vue\";\r\nimport AxVersionTracker from \"@/components/AxVersionTracker.vue\";\r\n\r\nconst AxTitleBar = () => import(\"@/components/AxTitleBar.vue\");\r\n\r\ntype Mixins = InstanceType &\r\nInstanceType &\r\nInstanceType;\r\n\r\nexport default (Vue as VueConstructor).extend({\r\n components: {\r\n AxAppFailure,\r\n AppView,\r\n AxTitleBar,\r\n AxVersionTracker,\r\n },\r\n\r\n mixins: [desktopExternalLinks, desktopClasses, appStatus],\r\n\r\n metaInfo: {\r\n title: \"Axure Cloud\",\r\n },\r\n\r\n data() {\r\n return { isElectron };\r\n },\r\n\r\n computed: {\r\n appConfigured(): boolean {\r\n return this.$store.getters.appConfigured && this.appStatusSuccess;\r\n },\r\n\r\n navigationError(): Error | unknown {\r\n const { navigationError } = this.$store.state as AxShare;\r\n return navigationError;\r\n },\r\n },\r\n\r\n created() {\r\n window.addEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\r\n },\r\n\r\n destroyed() {\r\n window.removeEventListener(\"unhandledrejection\", this.handleUnhandledRejection);\r\n },\r\n\r\n methods: {\r\n handleUnhandledRejection(rejection: PromiseRejectionEvent) {\r\n if (rejection.reason === \"We are currently performing maintenance, please retry shortly.\") {\r\n // temp fix: silent RO mode error\r\n rejection.preventDefault();\r\n }\r\n },\r\n },\r\n});\r\n","export const enum SWEvents {\r\n Ready = \"sw-ready\",\r\n Registered = \"sw-registered\",\r\n Cached = \"sw-cached\",\r\n UpdateFound = \"sw-updatefound\",\r\n Updated = \"sw-updated\",\r\n Offline = \"sw-offline\",\r\n Error = \"sw-error\",\r\n}\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3d669b98&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=3d669b98&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export class SWUpdateEvent {\r\n constructor(private readonly registration: ServiceWorkerRegistration) {}\r\n\r\n /**\r\n * Check if the new service worker exists or not.\r\n */\r\n public update() {\r\n return this.registration.update();\r\n }\r\n\r\n /**\r\n * Activate new service worker to work 'location.reload()' with new data.\r\n */\r\n public skipWaiting() {\r\n const worker = this.registration.waiting;\r\n if (!worker) {\r\n return Promise.resolve();\r\n }\r\n\r\n console.log(\"[sw] Doing worker.skipWaiting().\");\r\n return new Promise((resolve, reject) => {\r\n const channel = new MessageChannel();\r\n\r\n channel.port1.onmessage = event => {\r\n console.log(\"[sw] Done worker.skipWaiting().\");\r\n if (event.data.error) {\r\n reject(event.data.error);\r\n } else {\r\n resolve(event.data);\r\n }\r\n };\r\n\r\n worker.postMessage({ type: \"skip-waiting\" }, [channel.port2]);\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-console */\r\n\r\nimport { register } from \"register-service-worker\";\r\nimport Vue from \"vue\";\r\nimport VueRouter, { NavigationGuard } from \"vue-router\";\r\n\r\nimport { isProduction, isElectron, serviceWorkerEnabled } from \"@/common/environment\";\r\nimport { hasServiceWorker, retryForever } from \"@/common/lib\";\r\nimport { SWEvents } from \"@/service-worker/SWEvents\";\r\nimport { SWUpdateEvent } from \"@/service-worker/SWUpdateEvent\";\r\n\r\ninterface Options {\r\n app: Vue;\r\n router: VueRouter;\r\n}\r\n\r\nlet updateEvent: SWUpdateEvent | undefined;\r\n\r\nexport default ({ app, router }: Options) => {\r\n if (!hasServiceWorker) return;\r\n if (!isProduction) return;\r\n\r\n if (!serviceWorkerEnabled) {\r\n // clean up all existing service-worker registrations\r\n navigator.serviceWorker\r\n .getRegistrations()\r\n .then(registrations => {\r\n for (const registration of registrations) {\r\n registration.unregister();\r\n }\r\n })\r\n .catch(_err => {\r\n // it can fail in browser, specifically in Firefox when \"Delete cookies and site data when Firefox is closed\" is enabled\r\n // silently skip\r\n });\r\n\r\n return;\r\n }\r\n\r\n // temporarily disabling service worker registration for electron\r\n if (isElectron) return;\r\n\r\n let reloading = false;\r\n const applyPendingSWUpdate: NavigationGuard = (to, _from, next) => {\r\n if (!to.meta || !to.meta.safeToApplySWUpdate) return next();\r\n\r\n if (updateEvent) {\r\n updateEvent\r\n .skipWaiting()\r\n .then(() => {\r\n window.location.reload();\r\n reloading = true;\r\n })\r\n .catch(() => next());\r\n updateEvent = undefined;\r\n } else {\r\n next();\r\n }\r\n };\r\n router.beforeEach(applyPendingSWUpdate);\r\n\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready() {\r\n console.log(\r\n \"[sw] App is being served from cache by a service worker.\\nFor more details, visit https://goo.gl/AFskqB\",\r\n );\r\n app.$emit(SWEvents.Ready);\r\n },\r\n registered(registration: ServiceWorkerRegistration) {\r\n console.log(\"[sw] Service worker has been registered.\");\r\n app.$emit(SWEvents.Registered);\r\n\r\n // poll for updates more often than that default service worker does\r\n const oneHourMs = 1000 * 60 * 60;\r\n retryForever(async () => {\r\n await registration.update();\r\n }, oneHourMs);\r\n },\r\n cached() {\r\n console.log(\"[sw] Content has been cached for offline use.\");\r\n app.$emit(SWEvents.Cached);\r\n },\r\n updatefound() {\r\n console.log(\"[sw] New content is downloading.\");\r\n app.$emit(SWEvents.UpdateFound);\r\n },\r\n updated(registration: ServiceWorkerRegistration) {\r\n console.log(\"[sw] New content is available; please refresh.\");\r\n updateEvent = new SWUpdateEvent(registration);\r\n app.$emit(SWEvents.Updated, updateEvent);\r\n },\r\n offline() {\r\n console.log(\"[sw] No internet connection found. App is running in offline mode.\");\r\n app.$emit(SWEvents.Offline);\r\n },\r\n error(error) {\r\n console.error(\"[sw] Error during service worker registration:\", error);\r\n app.$emit(SWEvents.Error);\r\n },\r\n });\r\n\r\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\r\n if (reloading) return;\r\n\r\n const { currentRoute } = router;\r\n if (currentRoute && currentRoute.meta && currentRoute.meta.safeToApplySWUpdate) {\r\n window.location.reload();\r\n }\r\n });\r\n};\r\n","import Vue from \"vue\";\r\nimport { sync } from \"vuex-router-sync\";\r\n\r\nimport { MessageData } from \"@/common/iframe-bridge\";\r\nimport { AppEvents } from \"@/common/inspect\";\r\nimport router from \"@/router\";\r\nimport store from \"@/store\";\r\nimport installVendors from \"@/vendor\";\r\n\r\nimport App from \"./App.vue\";\r\nimport registerServiceWorker from \"./service-worker/registerServiceWorker\";\r\n\r\n(function emitStarting() {\r\n // Safely emitting event, to indicate that app started its initialization routine.\r\n // This is required to handle the case when app itself is loaded inside iframe,\r\n // it might happen when session (cookie) became invalid, e.g. by logout in different browser tab.\r\n // Eventually, parent app should capture this event and will trigger app reload.\r\n try {\r\n const messageData: MessageData = { key: AppEvents.starting, data: {} };\r\n const message = JSON.stringify(messageData);\r\n if (window) {\r\n const { parent } = window;\r\n parent.postMessage(message, \"*\");\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}());\r\n\r\ninstallVendors();\r\nsync(store, router);\r\n\r\nVue.config.productionTip = false;\r\n\r\nconst app = new Vue({\r\n router,\r\n store,\r\n render: h => h(App),\r\n}).$mount(\"#app\");\r\n\r\nregisterServiceWorker({\r\n app,\r\n router,\r\n});\r\n","import { DirectiveOptions, VNode, VNodeDirective } from \"vue\";\r\n\r\nconst overlayClass = \"_vue_clickaway_overlay\";\r\nconst HANDLER = \"_vue_clickaway_handler\";\r\ninterface ClickAwayHTMLElement extends HTMLElement {\r\n [HANDLER]?: {\r\n handler: (e: MouseEvent) => void;\r\n target: HTMLElement;\r\n };\r\n}\r\n\r\ntype Options =\r\n | ((e: MouseEvent) => void)\r\n | {\r\n handler: (e: MouseEvent) => void;\r\n closeConditional?: (e: MouseEvent) => boolean;\r\n include?: () => Element[];\r\n overlay: boolean;\r\n };\r\n\r\nfunction closeConditionalDefault(_e: MouseEvent) {\r\n return true;\r\n}\r\n\r\nfunction validate(handler: CallableFunction | null, binding: VNodeDirective): handler is CallableFunction {\r\n if (typeof handler === \"function\") return true;\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.warn(`v-${binding.name}=\"${binding.expression}\" expects a function value, got ${handler}`);\r\n }\r\n return false;\r\n}\r\n\r\nfunction getOptions(binding: VNodeDirective) {\r\n const options: Options = binding.value;\r\n let callback: ((e: MouseEvent) => void) | null = null;\r\n let overlay = false;\r\n let closeConditional = closeConditionalDefault;\r\n let include: () => Element[] = () => [];\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n }\r\n if (typeof options === \"object\") {\r\n callback = options.handler;\r\n if (options.closeConditional && typeof options.closeConditional === \"function\") {\r\n closeConditional = options.closeConditional;\r\n }\r\n if (options.include && typeof options.include === \"function\") {\r\n include = options.include;\r\n }\r\n if (typeof options.overlay === \"boolean\") {\r\n overlay = options.overlay;\r\n }\r\n }\r\n\r\n return { callback, overlay, closeConditional, include };\r\n}\r\n\r\nfunction bind(_element: HTMLElement, binding: VNodeDirective, _vnode: VNode) {\r\n const options = getOptions(binding);\r\n validate(options.callback, binding);\r\n}\r\n\r\nfunction unbind(element: HTMLElement) {\r\n const el = element as ClickAwayHTMLElement;\r\n const bindedHandler = el[HANDLER];\r\n if (bindedHandler) {\r\n const { handler, target } = bindedHandler;\r\n target.removeEventListener(\"click\", handler, {\r\n capture: true,\r\n });\r\n if (target.classList.contains(overlayClass)) {\r\n target.remove();\r\n }\r\n delete el[HANDLER];\r\n }\r\n}\r\n\r\nfunction inserted(element: HTMLElement, binding: VNodeDirective, vnode: VNode) {\r\n const el = element as ClickAwayHTMLElement;\r\n\r\n const vm = vnode.context;\r\n const { callback, overlay, closeConditional, include } = getOptions(binding);\r\n\r\n // @NOTE: Vue binds directives in microtasks, while UI events are dispatched\r\n // in macrotasks. This causes the listener to be set up before\r\n // the \"origin\" click event (the event that lead to the binding of\r\n // the directive) arrives at the document root. To work around that,\r\n // we ignore events until the end of the \"initial\" macrotask.\r\n let initialMacrotaskEnded = false;\r\n setTimeout(() => {\r\n initialMacrotaskEnded = true;\r\n }, 0);\r\n\r\n el[HANDLER] = {\r\n handler(ev: MouseEvent) {\r\n if (!callback) return;\r\n const e = ev as any;\r\n const path = e.path || (e.composedPath ? e.composedPath() : undefined);\r\n if (initialMacrotaskEnded) {\r\n const isActive = closeConditional;\r\n if (!isActive(e)) return;\r\n\r\n const includeNodes = include().reduce(\r\n (acc, curr) => {\r\n acc.push(...curr.getElementsByTagName(\"*\"));\r\n return acc;\r\n },\r\n [] as Element[]\r\n );\r\n const clickedInEls =\r\n (path && path.indexOf(el) >= 0) ||\r\n (ev.target && ev.target instanceof Element && (el.contains(ev.target) || includeNodes.includes(ev.target)));\r\n if (!clickedInEls) {\r\n return callback.call(vm, ev);\r\n }\r\n }\r\n },\r\n target: resolveTarget(overlay, vnode),\r\n };\r\n\r\n const bindedHandler = el[HANDLER];\r\n if (bindedHandler) {\r\n const { handler, target } = bindedHandler;\r\n target.addEventListener(\"click\", handler, {\r\n passive: true,\r\n capture: true,\r\n });\r\n }\r\n}\r\n\r\nexport const directive: DirectiveOptions = {\r\n bind,\r\n inserted,\r\n update(el, binding, vnode) {\r\n if (binding.value === binding.oldValue) return;\r\n bind(el, binding, vnode);\r\n },\r\n unbind,\r\n};\r\n\r\nexport const mixin = {\r\n directives: { onClickaway: directive },\r\n};\r\n\r\nfunction resolveTarget(createOverlay: boolean, binding: VNode): HTMLElement {\r\n const target = ((binding.context && binding.context.$root.$el) ||\r\n document.querySelector(\"#app\") ||\r\n document.documentElement) as HTMLElement;\r\n if (!createOverlay) return target;\r\n\r\n const element = binding.elm;\r\n if (!element) return target;\r\n\r\n const parent = element.parentElement;\r\n if (!parent) return target;\r\n\r\n const overlay = document.createElement(\"div\");\r\n overlay.classList.add(overlayClass);\r\n parent.appendChild(overlay);\r\n return overlay;\r\n}\r\n","import Vue, { PropOptions } from \"vue\";\r\n\r\nimport { PrototypeUrls, prototypeLinkHandler, prototypeLinkHandlerNoAuth } from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut, isShortcutNode } from \"@/common/fs\";\r\n\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nconst projectProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n validator: item => isShortcutNode(item),\r\n};\r\n\r\nexport const shortcutLinkMixin = Vue.extend({\r\n props: {\r\n full: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n project: projectProp,\r\n },\r\n\r\n computed: {\r\n url(): string {\r\n return this.full ? this.urls.full : this.urls.display;\r\n },\r\n\r\n urls(): PrototypeUrls {\r\n const project = this.project;\r\n return this.$store.getters.prototypeUrls(project);\r\n },\r\n },\r\n\r\n methods: {\r\n openPrototypeLink(event: MouseEvent) {\r\n /* Clicks on prototype links might navigate to different url that is displayed:\r\n 1. If project is user-only (requires user to have an account on Axure Cloud), then it should always go through full authentication attempt.\r\n 2. If project has password, then prototype password authentication might not be required, if user is already logged in on Axure Cloud.\r\n 3. Otherwise don't hijack click event, and let it open normally.\r\n */\r\n if (this.project.isUserOnlyWorkspace) {\r\n prototypeLinkHandler(this.urls, event);\r\n } else if (this.project.hasPassword) {\r\n prototypeLinkHandlerNoAuth(this.urls, event);\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n});\r\n","import Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { SharedFilesystemMappingJs } from \"@shared/models\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst workspaceProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nexport const workspaceMembersMixin = Vue.extend({\r\n props: {\r\n workspace: workspaceProp,\r\n },\r\n\r\n computed: {\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n sharedWith(): SharedFilesystemMappingJs[] {\r\n // ordering: owner -> current user -> everyone else\r\n\r\n let users = this.workspace ? this.workspace.users : [];\r\n const sharedWith: SharedFilesystemMappingJs[] = [];\r\n\r\n const { yourself, iAmTheOwner, didJoinWorkspace } = this;\r\n\r\n const owner = this.owner;\r\n if (owner) {\r\n sharedWith.push(owner);\r\n users = users.filter(u => u.user.userId !== owner.user.userId);\r\n }\r\n\r\n if (yourself && !iAmTheOwner && didJoinWorkspace) {\r\n sharedWith.push(yourself);\r\n users = users.filter(u => u.user.userId !== yourself.user.userId);\r\n }\r\n\r\n sharedWith.push(...users);\r\n\r\n return sharedWith;\r\n },\r\n\r\n yourself(): SharedFilesystemMappingJs | undefined {\r\n const { user } = this.$store.state as AxShare;\r\n if (user.userInfo) {\r\n const profileImageUrl = user.userInfo.profileImageUrl || (user.profile ? user.profile.Img : \"\");\r\n const yourself: SharedFilesystemMappingJs = {\r\n user: {\r\n ...user.userInfo,\r\n profileImageUrl,\r\n },\r\n isViewer: this.workspace ? this.workspace.viewOnly : false,\r\n };\r\n return yourself;\r\n }\r\n return undefined;\r\n },\r\n\r\n owner(): SharedFilesystemMappingJs | undefined {\r\n if (!this.workspace) return undefined;\r\n if (this.workspace.isOwner) return this.yourself;\r\n if (this.workspace.owner) {\r\n return {\r\n user: this.workspace.owner,\r\n isViewer: false,\r\n };\r\n }\r\n return undefined;\r\n },\r\n\r\n didJoinWorkspace(): boolean {\r\n if (!this.workspace) return false;\r\n if (this.workspace.isOwner) return true;\r\n const me = this.yourself;\r\n if (me && this.workspace.users.some(d => d.user.userId === me.user.userId)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n iAmTheOwner(): boolean {\r\n if (this.yourself && this.owner) {\r\n return this.yourself.user === this.owner.user;\r\n }\r\n return false;\r\n },\r\n },\r\n});\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nimport { ROUTES } from \"@/router\";\r\nimport store from \"@/store\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst AdminAccounts = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccounts.vue\");\r\nconst AdminAccountsAdd = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsAdd.vue\");\r\nconst AdminAccountsSetAccess = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsSetAccess.vue\");\r\nconst AdminAccountsDeactivate = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsDeactivate.vue\");\r\nconst AdminAccountsActivate = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsActivate.vue\");\r\nconst AdminAccountsActivateMulti = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsActivateMulti.vue\");\r\nconst AdminAccountsSamlRemove = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsSamlRemove.vue\");\r\nconst AdminAccountsSamlAdd = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsSamlAdd.vue\");\r\nconst AdminAccountsChangeEmail = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsChangeEmail.vue\");\r\nconst AdminAccountsChangePassword = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsChangePassword.vue\");\r\nconst AxAdminAccountsSuperAdminChange = () =>\r\n import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminAccountsSuperAdminChange.vue\");\r\nconst AdminEmail = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminEmail.vue\");\r\nconst AdminLicense = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminLicense.vue\");\r\nconst AdminInfo = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminInfo.vue\");\r\nconst AdminLdap = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminLdap.vue\");\r\nconst AdminSaml = () => import(/* webpackChunkName: \"admin\" */ \"@/components/AxAdmin/AxAdminSaml.vue\");\r\nconst AdminBase = () => import(/* webpackChunkName: \"admin\" */ \"@/pages/Admin.vue\");\r\n\r\nexport type Keys =\r\n | \"admin\"\r\n | \"admin.accounts\"\r\n | \"admin.accounts.add\"\r\n | \"admin.accounts.access\"\r\n | \"admin.accounts.deactivate\"\r\n | \"admin.accounts.activate\"\r\n | \"admin.accounts.bulk.activate\"\r\n | \"admin.accounts.saml.remove\"\r\n | \"admin.accounts.saml.add\"\r\n | \"admin.accounts.email.change\"\r\n | \"admin.accounts.password.change\"\r\n | \"admin.accounts.superadmin.change\"\r\n | \"admin.saml\"\r\n | \"admin.ldap\"\r\n | \"admin.email\"\r\n | \"admin.license\"\r\n | \"admin.info\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n admin: {\r\n path: \"/admin\",\r\n name: \"admin\",\r\n component: AdminBase,\r\n beforeEnter(_, __, next) {\r\n const { axShareConfig } = store.state as AxShare;\r\n if (axShareConfig && axShareConfig.IsSubInstance) {\r\n return next();\r\n }\r\n return next(ROUTES.home);\r\n },\r\n },\r\n \"admin.accounts\": {\r\n path: \"accounts\",\r\n name: \"Manage Accounts\",\r\n component: AdminAccounts,\r\n props: true,\r\n },\r\n \"admin.accounts.add\": {\r\n path: \"add\",\r\n name: \"admin.accounts.add\",\r\n component: AdminAccountsAdd,\r\n props: true,\r\n },\r\n \"admin.accounts.access\": {\r\n path: \"access\",\r\n name: \"admin.accounts.access\",\r\n component: AdminAccountsSetAccess,\r\n props: true,\r\n },\r\n \"admin.accounts.deactivate\": {\r\n path: \"deactivate\",\r\n name: \"admin.accounts.deactivate\",\r\n component: AdminAccountsDeactivate,\r\n props: true,\r\n },\r\n \"admin.accounts.activate\": {\r\n path: \"activate\",\r\n name: \"admin.accounts.activate\",\r\n component: AdminAccountsActivate,\r\n props: true,\r\n },\r\n \"admin.accounts.bulk.activate\": {\r\n path: \"bulk-activate\",\r\n name: \"admin.accounts.bulk.activate\",\r\n component: AdminAccountsActivateMulti,\r\n props: true,\r\n },\r\n \"admin.accounts.saml.remove\": {\r\n path: \"samlremove\",\r\n name: \"admin.accounts.saml.remove\",\r\n component: AdminAccountsSamlRemove,\r\n props: true,\r\n },\r\n \"admin.accounts.saml.add\": {\r\n path: \"samladd\",\r\n name: \"admin.accounts.saml.add\",\r\n component: AdminAccountsSamlAdd,\r\n props: true,\r\n },\r\n \"admin.accounts.email.change\": {\r\n path: \"changeemail\",\r\n name: \"admin.accounts.email.change\",\r\n component: AdminAccountsChangeEmail,\r\n props: true,\r\n },\r\n \"admin.accounts.password.change\": {\r\n path: \"changepassword\",\r\n name: \"admin.accounts.password.change\",\r\n component: AdminAccountsChangePassword,\r\n props: true,\r\n },\r\n \"admin.accounts.superadmin.change\": {\r\n path: \"changesuperadmin\",\r\n name: \"admin.accounts.superadmin.change\",\r\n component: AxAdminAccountsSuperAdminChange,\r\n props: true,\r\n },\r\n \"admin.saml\": {\r\n path: \"saml\",\r\n name: \"Single Sign On (SAML)\",\r\n component: AdminSaml,\r\n props: true,\r\n },\r\n \"admin.ldap\": {\r\n path: \"ldap\",\r\n name: \"Active Directory / LDAP\",\r\n component: AdminLdap,\r\n props: true,\r\n },\r\n \"admin.email\": {\r\n path: \"email\",\r\n name: \"Email\",\r\n component: AdminEmail,\r\n props: true,\r\n },\r\n \"admin.license\": {\r\n path: \"license\",\r\n name: \"License Key\",\r\n component: AdminLicense,\r\n props: true,\r\n },\r\n \"admin.info\": {\r\n path: \"info\",\r\n name: \"Information\",\r\n component: AdminInfo,\r\n props: true,\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes.admin,\r\n redirect: routes[\"admin.accounts\"],\r\n children: [\r\n {\r\n ...routes[\"admin.accounts\"],\r\n children: [\r\n routes[\"admin.accounts.add\"],\r\n routes[\"admin.accounts.access\"],\r\n routes[\"admin.accounts.deactivate\"],\r\n routes[\"admin.accounts.activate\"],\r\n routes[\"admin.accounts.bulk.activate\"],\r\n routes[\"admin.accounts.saml.remove\"],\r\n routes[\"admin.accounts.saml.add\"],\r\n routes[\"admin.accounts.email.change\"],\r\n routes[\"admin.accounts.password.change\"],\r\n routes[\"admin.accounts.superadmin.change\"],\r\n ],\r\n },\r\n routes[\"admin.saml\"],\r\n routes[\"admin.ldap\"],\r\n routes[\"admin.email\"],\r\n routes[\"admin.license\"],\r\n routes[\"admin.info\"],\r\n ],\r\n },\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row h-100\"},[_c('div',{staticClass:\"col p-0 sidebar-pane\"},[_c('div',{staticClass:\"row h-100\"},[_c('div',{staticClass:\"col h-100\"},[(_vm.profileLoaded)?_c('RouterView',{attrs:{\"name\":\"sidebar\"}}):_vm._e()],1)])]),_c('div',{staticClass:\"col viewer-pane\"},[(_vm.profileLoaded)?_c('RouterView',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.navigatingError),expression:\"!navigatingError\"}]}):_vm._e(),(_vm.navigatingError)?_c('AxFilesystemNavigationError'):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxConnectionTrouble',{staticClass:\"ax-filesystem-navigation-error\",attrs:{\"retry\":_vm.retryNavigation}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-connection-trouble\"},[_c('div',{staticClass:\"text-center\"},[_c('h3',[_vm._v(\"We're having trouble connecting.\")]),(_vm.retry)?_c('AxButton',{on:{\"click\":_vm.retry}},[_vm._v(\" Retry \")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n },\r\n\r\n props: {\r\n retry: {\r\n type: Function,\r\n default: undefined,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxConnectionTrouble.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxConnectionTrouble.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxConnectionTrouble.vue?vue&type=template&id=ebb3a54a&scoped=true&\"\nimport script from \"./AxConnectionTrouble.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxConnectionTrouble.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxConnectionTrouble.vue?vue&type=style&index=0&id=ebb3a54a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ebb3a54a\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { Store } from \"vuex\";\r\n\r\nimport {\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n FilesystemNodeWithContents,\r\n FilesystemNodeWorkspace,\r\n} from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { Navigate } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxConnectionTrouble from \"@/components/AxConnectionTrouble.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxConnectionTrouble,\r\n },\r\n\r\n methods: {\r\n async retryNavigation() {\r\n const { node }: FilesystemNodeWithContents = this.$store.getters.current;\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n await this.navigateToWorkspace(node);\r\n } else {\r\n this.$store.dispatch(new Navigate(node));\r\n if (!this.$store.getters.navigatingError) {\r\n const retriedNode: FilesystemNodeTypes | undefined = this.$store.getters.getFsNode(node.id);\r\n if (retriedNode && retriedNode.type === FilesystemNodeType.Workspace) {\r\n await this.$store.dispatch(new Navigate(retriedNode));\r\n }\r\n }\r\n }\r\n },\r\n\r\n async navigateToWorkspace(node: FilesystemNodeWorkspace) {\r\n const store = this.$store as Store;\r\n const routeBeforeNavigate = this.$route;\r\n await store.dispatch(new Navigate(node));\r\n\r\n // check if still this route is selected\r\n if (routeBeforeNavigate === this.$route) {\r\n const workspaceNode: FilesystemNodeWorkspace | undefined = store.getters.getFsNode(node.id);\r\n if (workspaceNode) {\r\n const { id, rootFolderId } = workspaceNode;\r\n if (id) {\r\n let location: Location;\r\n if (rootFolderId) {\r\n location = {\r\n name: ROUTES[\"fs.node\"].name,\r\n params: { workspaceId: id, id: rootFolderId },\r\n };\r\n } else {\r\n location = {\r\n name: ROUTES[\"fs.workspace\"].name,\r\n params: { workspaceId: id },\r\n };\r\n }\r\n this.$router.replace(location);\r\n }\r\n }\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNavigationError.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNavigationError.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNavigationError.vue?vue&type=template&id=5a26b978&scoped=true&\"\nimport script from \"./AxFilesystemNavigationError.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNavigationError.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNavigationError.vue?vue&type=style&index=0&id=5a26b978&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5a26b978\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxFilesystemNavigationError from \"@/components/AxFilesystemNavigationError.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFilesystemNavigationError,\r\n },\r\n\r\n computed: {\r\n profileLoaded(): boolean {\r\n // await till initial user info will be fetched before making FS requests\r\n // this resolves reace-condition issue when default filesystem isn't initialized\r\n // but client already makes request\r\n // consider removing this computed property after back-end issue is addressed\r\n const { user } = this.$store.state as AxShare;\r\n return !!user.userInfo && !!user.profile;\r\n },\r\n\r\n navigatingError(): boolean {\r\n return this.$store.getters.navigatingError;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Filesystem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Filesystem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Filesystem.vue?vue&type=template&id=0eaaf5ca&scoped=true&\"\nimport script from \"./Filesystem.vue?vue&type=script&lang=ts&\"\nexport * from \"./Filesystem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Filesystem.vue?vue&type=style&index=0&id=0eaaf5ca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0eaaf5ca\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDialog',{attrs:{\"content-class\":\"ax-filesystem-configure-security\",\"persistent\":_vm.persistent,\"hidden\":_vm.persistent},on:{\"after-leave\":_vm.cancel},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[(_vm.workspace)?_c('AxConfigureWorkspaceSecurity',{attrs:{\"workspace\":_vm.workspace},on:{\"persistent\":_vm.setPersistent,\"submit\":_vm.submit,\"cancel\":_vm.cancel}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxConfigureWorkspaceSecurity from \"@/components/AxConfigureWorkspaceSecurity.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxConfigureWorkspaceSecurity,\r\n AxDialog,\r\n },\r\n\r\n props: {\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n show: true,\r\n persistent: false,\r\n };\r\n },\r\n\r\n computed: {\r\n workspace(): FilesystemNodeWorkspace {\r\n return this.$store.getters.getFsNode(this.workspaceId);\r\n },\r\n },\r\n\r\n methods: {\r\n async submit() {\r\n this.cancel(true);\r\n },\r\n\r\n cancel(refresh: boolean = false) {\r\n this.$router.push(fsRouterLocation(this.id, { refresh: { contents: refresh } }));\r\n },\r\n\r\n setPersistent(persistent: boolean) {\r\n this.persistent = persistent;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemConfigureSecurity.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemConfigureSecurity.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemConfigureSecurity.vue?vue&type=template&id=57e867da&\"\nimport script from \"./FilesystemConfigureSecurity.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemConfigureSecurity.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesystemConfigureSecurity.vue?vue&type=style&index=0&id=57e867da&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.node)?_c('AxDialog',{on:{\"after-leave\":_vm.cancel},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('AxCreateFolder',{attrs:{\"parent-folder\":_vm.folderId},on:{\"submit\":_vm.submit,\"cancel\":_vm.cancel}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"validator\":_vm.validator},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting, validationResult }){return [_c('form',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Create a New Folder \")]),_c('AxFormGroup',[_c('AxInput',{attrs:{\"autofocus\":\"\",\"placeholder\":\"Folder Name\",\"type\":\"text\"},model:{value:(values.Name),callback:function ($$v) {_vm.$set(values, \"Name\", $$v)},expression:\"values.Name\"}})],1),_c('div',[_c('AxButton',{attrs:{\"disabled\":!validationResult.isValid,\"loading\":submitting,\"block\":\"\",\"type\":\"submit\",\"color\":\"primary\",\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Create \")])],1)],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FolderCreateModelValidator } from \"@/common/fs\";\r\nimport { FolderCreateModel } from \"@/services/models/filesystem\";\r\nimport { FolderCreate } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxInput,\r\n },\r\n\r\n props: {\r\n parentFolder: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n const model: FolderCreateModel = {\r\n Name: \"\",\r\n FolderId: this.parentFolder,\r\n currentFolderId: this.parentFolder,\r\n };\r\n\r\n return {\r\n model,\r\n validator: FolderCreateModelValidator,\r\n };\r\n },\r\n\r\n methods: {\r\n async submit({ values }: Submit) {\r\n await this.$store.dispatch(new FolderCreate(values));\r\n this.$emit(\"submit\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateFolder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateFolder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCreateFolder.vue?vue&type=template&id=24368152&\"\nimport script from \"./AxCreateFolder.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCreateFolder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeType, FilesystemNodeTypes } from \"@/common/fs\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxCreateFolder from \"@/components/AxCreateFolder.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxCreateFolder,\r\n AxDialog,\r\n },\r\n\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n show: true,\r\n };\r\n },\r\n\r\n computed: {\r\n node(): FilesystemNodeTypes {\r\n return this.$store.getters.getNodeByFolderId(this.id);\r\n },\r\n\r\n folderId(): string {\r\n if (this.node.type === FilesystemNodeType.Workspace) return this.node.rootFolderId;\r\n return this.node.id;\r\n },\r\n },\r\n\r\n methods: {\r\n async submit() {\r\n this.cancel();\r\n },\r\n\r\n cancel(refresh: boolean = false) {\r\n this.$router.push(fsRouterLocation(this.id, { refresh: { contents: refresh } }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemCreateFolder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemCreateFolder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemCreateFolder.vue?vue&type=template&id=ad92d33e&\"\nimport script from \"./FilesystemCreateFolder.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemCreateFolder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.node)?_c('AxDialog',{attrs:{\"dialog-class\":\"create-project\",\"content-class\":\"create-project__content\",\"wrapper-class\":\"create-project__wrapper\",\"fullscreen\":\"\"},on:{\"after-leave\":_vm.cancel},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('CreateProject',{scopedSlots:_vm._u([(!_vm.compact)?{key:\"header\",fn:function(){return [_c('AxPanel',{staticClass:\"create-project__icons\",attrs:{\"small\":\"\"},scopedSlots:_vm._u([(_vm.projectType === _vm.ProjectType.sketch)?{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"imageapp\"}})],1),_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"figmaapp\"}})],1),_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"xdapp\"}})],1),_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"sketchapp\"}})],1)]},proxy:true}:{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"h1 rp-logo-icon m-0\"},[_c('AxIcon',{attrs:{\"name\":\"axure-rp-logo\"}})],1)]},proxy:true},{key:\"body\",fn:function(){return [_c('div',{staticClass:\"form-title\"},[_vm._v(\" \"+_vm._s(_vm.projectType === _vm.ProjectType.sketch ? \"Create a New Basic Prototype\" : \"Create an Axure RP Prototype\")+\" \")])]},proxy:true}],null,true)})]},proxy:true}:null],null,true)},[_c('AxCreateProject',{class:{ 'mb-5 mt-5': _vm.compact },attrs:{\"node\":_vm.node},on:{\"modeChanged\":function($event){return _vm.modeChanged($event)}}})],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"layout-create-project\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col text-center\"},[_vm._t(\"header\",function(){return [_c('div',{staticClass:\"form-title\"},[_vm._v(\" Create a new project \")]),_c('p',[_vm._v(\" Upload and share prototypes with your team and clients. \"),(!_vm.isSubInstance)?_c('span',[_c('br'),_vm._v(\"You can host up to 1,000 prototypes with discussions for free. \")]):_vm._e()])]})],2)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_vm._t(\"default\")],2)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport default Vue.extend({\r\n computed: {\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateProject.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateProject.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateProject.vue?vue&type=template&id=740fb0e6&scoped=true&\"\nimport script from \"./CreateProject.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateProject.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CreateProject.vue?vue&type=style&index=0&id=740fb0e6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"740fb0e6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.projectType || _vm.projectType === _vm.ProjectType.rp),expression:\"!projectType || projectType === ProjectType.rp\"}],staticClass:\"col col-transition\"},[_c('AxCreateProjectRp',{attrs:{\"compact\":_vm.compact,\"parent-folder\":_vm.folderId},on:{\"submit\":_vm.submit,\"cancel\":_vm.cancel,\"modeChanged\":function($event){return _vm.modeChanged(_vm.ProjectType.rp, $event)}}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.projectType || _vm.projectType === _vm.ProjectType.sketch),expression:\"!projectType || projectType === ProjectType.sketch\"}],staticClass:\"col col-transition\"},[_c('AxCreateProjectSketch',{attrs:{\"compact\":_vm.compact,\"parent-folder\":_vm.folderId},on:{\"submit\":_vm.submit,\"cancel\":_vm.cancel,\"modeChanged\":function($event){return _vm.modeChanged(_vm.ProjectType.sketch, $event)}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxPanel',{staticClass:\"ax-create-project\",attrs:{\"small\":_vm.compact},scopedSlots:_vm._u([(_vm.compact)?{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"h1 m-0 rp-logo-icon\"},[_c('AxIcon',{attrs:{\"name\":\"axure-rp-logo\"}})],1)]},proxy:true}:null,{key:\"body\",fn:function(){return [(_vm.compact)?_c('AxCreateProjectCompact',{scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Start a new Axure RP project \")]},proxy:true}],null,false,1045595251)},[_c('AxButton',{staticClass:\"ax-create-project__btn\",class:_vm.AnalyticsClickEvents.NewProjectRP.eventClass,attrs:{\"block\":\"\",\"large\":\"\",\"color\":\"upload\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('modeChanged', false)}}},[_vm._v(\" New Axure RP Project \")])],1):_c('AxForm',{attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"errors\":_vm.errors,\"validator\":_vm.validator},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting, validationResult }){return [_c('form',[_c('div',{staticClass:\"row ax-create-project__main\"},[(_vm.compact)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h4',{staticClass:\"ax-create-project__header text-center\"},[_vm._v(\" Please enter your project details below \")])])])]):_vm._e(),_c('div',{staticClass:\"col-5\"},[_c('div',{staticClass:\"d-flex flex-column h-100\"},[_c('AxProjectFilePicker',{staticClass:\"project-uploader m-0\",attrs:{\"autofocus\":\"\",\"upload-progress\":_vm.progress},on:{\"file-accepted\":_vm.fileAccepted,\"file-error\":_vm.fileError,\"cancel-upload\":_vm.cancelUpload,\"input\":_vm.fileChanged},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)]),_c('div',{staticClass:\"col-7\"},[_c('AxInput',{staticClass:\"project-name-input\",attrs:{\"placeholder\":\"Project Name\"},on:{\"input\":function($event){_vm.projectNameUserChanged = true}},model:{value:(_vm.model.Name),callback:function ($$v) {_vm.$set(_vm.model, \"Name\", $$v)},expression:\"model.Name\"}}),_c('label',{staticClass:\"m-0\"},[_c('span',{staticClass:\"input-hint-text\"},[_vm._v(\" Add Access Code? \")]),_c('AxToggleButton',{staticClass:\"ms-2\",attrs:{\"disabled\":submitting},model:{value:(_vm.passwordProtect),callback:function ($$v) {_vm.passwordProtect=$$v},expression:\"passwordProtect\"}})],1),_c('AxInput',{staticClass:\"project-password-input pt-0\",class:{ revealed: _vm.passwordProtect },attrs:{\"placeholder\":\"Must be at least 4 characters\",\"type\":_vm.isSubInstance ? 'password' : 'text',\"prevent-password-manager\":\"\",\"disable-label\":\"\"},model:{value:(values.Password),callback:function ($$v) {_vm.$set(values, \"Password\", $$v)},expression:\"values.Password\"}}),_c('div',{staticClass:\"ax-create-project__description-group\"},[_c('span',{staticClass:\"input-hint-text\"},[_vm._v(\" Publish Notes \")]),_c('AxPublishNotes',{attrs:{\"placeholder\":\"Optional Message\",\"workspace-id\":_vm.currentWorkspaceId,\"user-id\":_vm.currentUserId,\"user-token\":_vm.currentUserToken},model:{value:(_vm.publishNote),callback:function ($$v) {_vm.publishNote=$$v},expression:\"publishNote\"}})],1)],1)]),_c('div',{staticClass:\"row mt-2\"},[_c('div',{staticClass:\"col-5\"},[_c('div',{staticClass:\"upload-hint\"},[_c('p',{staticClass:\"text-center small fw-light\"},[_vm._v(\" Remember, you can always create your project in Axure RP by clicking \\\"Share\\\"\"),_c('span',{staticClass:\"white-space-pre\"},[_vm._v(\" \"),_c('span',{staticClass:\"axure-share-icon\"})])])])])]),_c('div',{staticClass:\"row justify-content-end\"},[_c('div',{staticClass:\"col-7\"},[_c('AxButton',{attrs:{\"block\":\"\",\"large\":\"\",\"color\":\"primary\",\"type\":\"submit\",\"disabled\":!validationResult.isValid || !_vm.passwordValid(values.Password),\"loading\":submitting || _vm.loading},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Create Project \")])],1)])])]}}])})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"text-center\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('p',{staticClass:\"ax-create-project-compact__header\"},[_vm._t(\"header\")],2)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"ax-create-project-compact__body\"},[_vm._t(\"default\")],2)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"ax-create-project-compact__hint small\"},[_vm._t(\"hint\")],2)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProjectCompact.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProjectCompact.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCreateProjectCompact.vue?vue&type=template&id=30d86eb6&scoped=true&\"\nimport script from \"./AxCreateProjectCompact.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCreateProjectCompact.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCreateProjectCompact.vue?vue&type=style&index=0&id=30d86eb6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30d86eb6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.classes},[(_vm.$scopedSlots.icon)?_c('div',{staticClass:\"ax-panel__icon\"},_vm._l((_vm.$scopedSlots.icon()),function(item,i){return _c('div',{key:i,staticClass:\"square\"},[_c('div',{staticClass:\"content\"},[_c('AxVNode',{attrs:{\"vnode\":item}})],1)])}),0):_vm._e(),(_vm.$scopedSlots.body)?_c('div',{staticClass:\"ax-panel__body\"},[_vm._t(\"body\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue, { VNode } from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nconst vNodeProp: PropOptions = {\r\n type: Object,\r\n required: false,\r\n default: undefined,\r\n};\r\n\r\nconst props = {\r\n vnode: vNodeProp,\r\n};\r\n\r\nexport default Vue.extend({\r\n functional: true,\r\n props,\r\n render(h, ctx) {\r\n if (ctx.props.vnode) {\r\n return ctx.props.vnode;\r\n }\r\n const children = ctx.scopedSlots.default && ctx.scopedSlots.default({});\r\n return children || h();\r\n },\r\n});\r\n","var render, staticRenderFns\nimport script from \"./AxVNode.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxVNode.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./AxInputGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxInputGroup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxInputGroup.vue?vue&type=style&index=0&id=7e623b74&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxVNode.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxVNode.vue?vue&type=script&lang=ts&\"","\r\nimport Vue from \"vue\";\r\n\r\nimport AxVNode from \"@/components/AxVNode.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxVNode,\r\n },\r\n props: {\r\n small: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n classes(): any {\r\n return {\r\n \"ax-panel\": true,\r\n \"ax-panel--small\": this.small,\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPanel.vue?vue&type=template&id=1d169d30&scoped=true&\"\nimport script from \"./AxPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxPanel.vue?vue&type=style&index=0&id=1d169d30&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d169d30\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Canceler } from \"axios\";\r\nimport Vue from \"vue\";\r\n\r\nimport { AnalyticsClickEvents } from \"@/common/axshare\";\r\nimport { enterpriseLicenseCheckFailed } from \"@/common/axshare/messages\";\r\nimport { ProjectCreateModelValidator } from \"@/common/fs\";\r\nimport { getFilenameWithoutExtension } from \"@/common/lib/string\";\r\nimport { RichText } from \"@/generated/models\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { ProjectCreateModel } from \"@/services/models/project\";\r\nimport { checkPrototypeNameValid, createEmptyProject, createProject } from \"@/services/project.service\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxCreateProjectCompact from \"@/components/AxCreateProjectCompact.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxPanel from \"@/components/AxPanel.vue\";\r\nimport AxProjectFilePicker from \"@/components/AxProjectFilePicker.vue\";\r\nimport { Progress } from \"@/components/AxProjectFileUploadIndicator.vue\";\r\nimport AxPublishNotes from \"@/components/AxPublishNotes.vue\";\r\nimport AxToggleButton from \"@/components/AxToggleButton.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxCreateProjectCompact,\r\n AxForm,\r\n AxButton,\r\n AxPanel,\r\n AxInput,\r\n AxIcon,\r\n AxProjectFilePicker,\r\n AxPublishNotes,\r\n AxToggleButton,\r\n },\r\n\r\n props: {\r\n parentFolder: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n compact: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n const model: ProjectCreateModel = {\r\n Name: \"\",\r\n Password: \"\",\r\n FolderId: this.parentFolder,\r\n currentFolderId: this.parentFolder,\r\n fileData: null,\r\n PublishNote: \"\",\r\n PublishNoteRichText: \"\",\r\n };\r\n return {\r\n AnalyticsClickEvents,\r\n model,\r\n projectNameUserChanged: false,\r\n file: null,\r\n uploading: false,\r\n uploadCanceled: false,\r\n errors: [] as string[],\r\n canceler: null as Canceler | null,\r\n progress: null as Progress | null,\r\n publishNote: null as RichText | null,\r\n passwordProtect: false,\r\n options: {\r\n url: \"\",\r\n autoProcessQueue: false,\r\n uploadMultiple: false,\r\n clickable: false,\r\n paramName: \"fileData\",\r\n maxFiles: 1,\r\n autoQueue: false,\r\n },\r\n\r\n validator: ProjectCreateModelValidator,\r\n loading: false,\r\n };\r\n },\r\n\r\n computed: {\r\n currentUserId(): string {\r\n const { user } = this.$store.state as AxShare;\r\n if (user.userInfo) {\r\n return user.userInfo.userId;\r\n }\r\n return \"\";\r\n },\r\n\r\n currentUserToken(): string {\r\n const { accountService } = this.$store.state;\r\n if (accountService) {\r\n return accountService().AuthToken;\r\n }\r\n return \"\";\r\n },\r\n\r\n currentWorkspaceId(): string {\r\n const { workspaceId } = this.$route.params;\r\n return workspaceId;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n },\r\n\r\n methods: {\r\n async submit({ values }: Submit) {\r\n // save reference to file in case if \"Cancel\" will be click while name check hasn't finished yet\r\n const file = this.file;\r\n await checkPrototypeNameValid(values.Name, values.FolderId);\r\n\r\n // selected file was removed, cancel submit completely\r\n if (file != null && this.file == null) return;\r\n\r\n let response;\r\n if (file == null) {\r\n response = await createEmptyProject(values);\r\n } else {\r\n if (this.$store.getters.enterpriseLicenseCheckFailed) {\r\n this.errors = [enterpriseLicenseCheckFailed];\r\n return;\r\n }\r\n\r\n // manually set fileData because AxForm doesn't preserve File\r\n // eslint-disable-next-line no-param-reassign\r\n values.fileData = file;\r\n this.uploading = true;\r\n this.uploadCanceled = false;\r\n this.progress = {\r\n current: 0,\r\n total: 0,\r\n lengthComputable: false,\r\n };\r\n\r\n if (this.publishNote) {\r\n // manually set PublishNoteRichText to be able to correctly send IFormCollection post parameter\r\n // eslint-disable-next-line no-param-reassign\r\n values.PublishNoteRichText = JSON.stringify(this.publishNote);\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n if (!this.passwordProtect) values.Password = \"\";\r\n\r\n response = await createProject(\r\n values,\r\n canceler => {\r\n this.canceler = canceler;\r\n },\r\n progress => {\r\n if (!this.uploadCanceled) {\r\n this.progress = {\r\n current: progress.loaded,\r\n total: progress.total ?? 0,\r\n lengthComputable: !!(progress.total),\r\n };\r\n }\r\n },\r\n );\r\n this.uploading = false;\r\n }\r\n\r\n if (response.Vars && response.Vars.shortcut) {\r\n const shortcut = response.Vars.shortcut.toLowerCase();\r\n this.loading = true;\r\n await this.$store.dispatch(new Fetch(this.$store.getters.getNodeByFolderId(this.parentFolder)));\r\n this.$router.push(\r\n {\r\n name: ROUTES[\"project.overview\"].name,\r\n params: {\r\n shortcut,\r\n },\r\n },\r\n () => {\r\n this.loading = false;\r\n },\r\n );\r\n } else {\r\n this.$emit(\"submit\");\r\n }\r\n },\r\n\r\n fileChanged(file: any) {\r\n if (file && typeof file.name === \"string\") {\r\n const fileName = getFilenameWithoutExtension(file.name);\r\n if (!this.model.Name || !this.projectNameUserChanged) {\r\n this.model.Name = fileName;\r\n }\r\n }\r\n },\r\n\r\n fileAccepted() {\r\n this.errors = [];\r\n },\r\n\r\n fileError(errors: string[]) {\r\n this.errors = errors;\r\n },\r\n\r\n cancelUpload() {\r\n if (this.uploading && this.canceler) {\r\n this.progress = null;\r\n this.uploading = false;\r\n this.uploadCanceled = true;\r\n this.canceler(\"Prototype file upload was canceled by user.\");\r\n }\r\n },\r\n\r\n passwordValid(password: string): boolean {\r\n if (!this.passwordProtect) return true;\r\n return !!password && password.length >= 4;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProjectRp.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProjectRp.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCreateProjectRp.vue?vue&type=template&id=e48bd9f2&scoped=true&\"\nimport script from \"./AxCreateProjectRp.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCreateProjectRp.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCreateProjectRp.vue?vue&type=style&index=0&id=e48bd9f2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e48bd9f2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxPanel',{staticClass:\"ax-create-project\",attrs:{\"small\":_vm.compact},scopedSlots:_vm._u([(_vm.compact)?{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"imageapp\"}})],1),_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"figmaapp\"}})],1),_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"xdapp\"}})],1),_c('div',{staticClass:\"h1 m-0\"},[_c('AxIcon',{attrs:{\"name\":\"sketchapp\"}})],1)]},proxy:true}:null,{key:\"body\",fn:function(){return [(_vm.compact)?_c('AxCreateProjectCompact',{scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Start a new Sketch, Adobe XD, Figma,\"),_c('br'),_vm._v(\" or image-based project \")]},proxy:true}],null,false,2420605554)},[_c('AxButton',{staticClass:\"ax-create-project__btn\",class:_vm.AnalyticsClickEvents.NewProjectArtboard.eventClass,attrs:{\"block\":\"\",\"large\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('modeChanged', false)}}},[_vm._v(\" New Basic Project \")])],1):_c('AxForm',{attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"errors\":_vm.errors,\"validator\":_vm.validator},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting, validationResult }){return [_c('form',[_c('div',{staticClass:\"row ax-create-project__main\"},[(_vm.compact)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h4',{staticClass:\"ax-create-project__header text-center\"},[_vm._v(\" Please enter your project details below \")])])])]):_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('AxInputGroup',{attrs:{\"condensed\":\"\"}},[_c('AxInput',{attrs:{\"autofocus\":\"\",\"placeholder\":\"Project Name\"},on:{\"input\":function($event){_vm.projectNameUserChanged = true}},model:{value:(values.Name),callback:function ($$v) {_vm.$set(values, \"Name\", $$v)},expression:\"values.Name\"}}),_c('AxSelectNative',{attrs:{\"options\":_vm.devices,\"default-value\":_vm.defaultDevice,\"option-value\":\"value\",\"placeholder\":\"Project Type\"},model:{value:(values.Platform),callback:function ($$v) {_vm.$set(values, \"Platform\", $$v)},expression:\"values.Platform\"}}),(_vm.customDimensions(values.Platform))?[_c('div',{staticClass:\"row dimensions\"},[_c('div',{staticClass:\"col-6\"},[_c('AxInput',{attrs:{\"placeholder\":\"Width\",\"type\":\"number\"},model:{value:(values.CustomDimensions[values.Platform].Width),callback:function ($$v) {_vm.$set(values.CustomDimensions[values.Platform], \"Width\", $$v)},expression:\"values.CustomDimensions[values.Platform].Width\"}})],1),(!_vm.isWebPlatform(values.Platform))?_c('div',{staticClass:\"col-6\"},[_c('AxInput',{attrs:{\"placeholder\":\"Height\",\"type\":\"number\"},model:{value:(values.CustomDimensions[values.Platform].Height),callback:function ($$v) {_vm.$set(values.CustomDimensions[values.Platform], \"Height\", $$v)},expression:\"values.CustomDimensions[values.Platform].Height\"}})],1):_vm._e()])]:(false)?[_c('AxChoice',{attrs:{\"horizontal\":\"\",\"items\":_vm.orientations},model:{value:(values.Orientation),callback:function ($$v) {_vm.$set(values, \"Orientation\", $$v)},expression:\"values.Orientation\"}})]:_vm._e()],2)],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('AxButton',{attrs:{\"block\":\"\",\"large\":\"\",\"color\":\"primary\",\"type\":\"submit\",\"disabled\":!validationResult.isValid || submitting || _vm.loading},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Create Project \")])],1)])])]}}])})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue, { VNodeData } from \"vue\";\r\nimport { mergeData } from \"vue-functional-data-merge\";\r\n\r\nexport default Vue.extend({\r\n functional: true,\r\n props: {\r\n condensed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n render(h, ctx) {\r\n const data: VNodeData = {\r\n staticClass: \"ax-input-group\",\r\n class: {\r\n \"ax-input-group--condensed\": ctx.props.condensed,\r\n },\r\n };\r\n return h(\"div\", mergeData(ctx.data, data), ctx.slots().default);\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInputGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxInputGroup.vue?vue&type=script&lang=ts&\"","\r\nimport Vue from \"vue\";\r\n\r\nimport * as expo from \"@shared/expo\";\r\n\r\nimport { AnalyticsClickEvents } from \"@/common/axshare\";\r\nimport { CreateExpoProjectModelValidator } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { checkExpoNameValid, createProject, getDeviceList } from \"@/services/expo.service\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\n\r\nimport { AxShare } from \"../store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxChoice from \"@/components/AxChoice.vue\";\r\nimport AxCreateProjectCompact from \"@/components/AxCreateProjectCompact.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxInputGroup from \"@/components/AxInputGroup.vue\";\r\nimport AxPanel from \"@/components/AxPanel.vue\";\r\nimport AxSelectNative from \"@/components/AxSelectNative.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ninterface DeviceOption {\r\n text: string;\r\n value: expo.DeviceType;\r\n}\r\n\r\ninterface ExpoNewProjectModel {\r\n Name: string;\r\n Password: string;\r\n FolderId: string;\r\n currentFolderId: string;\r\n Platform: expo.DeviceType;\r\n Width?: number;\r\n Height?: number;\r\n CustomDimensions: Record;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxButton,\r\n AxPanel,\r\n AxInput,\r\n AxInputGroup,\r\n AxIcon,\r\n AxCreateProjectCompact,\r\n AxChoice,\r\n AxSelectNative,\r\n },\r\n\r\n props: {\r\n parentFolder: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n compact: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n const orientations = [\r\n { value: expo.Orientation.Portrait, text: \"Portrait\" },\r\n { value: expo.Orientation.Landscape, text: \"Landscape\" },\r\n ];\r\n const defaultDimensions: Record = {\r\n [expo.DeviceType.Web]: { Width: 1024, Height: 800 },\r\n [expo.DeviceType.Custom]: { Width: 2000, Height: 2000 },\r\n };\r\n const model: ExpoNewProjectModel = {\r\n Name: \"\",\r\n Password: \"\",\r\n FolderId: this.parentFolder,\r\n currentFolderId: this.parentFolder,\r\n Platform: expo.DeviceType.iPhone8,\r\n CustomDimensions: defaultDimensions,\r\n };\r\n\r\n const devices = async () => (await getDeviceList()).map(deviceItem => {\r\n const { DeviceName, Dimensions, Device } = deviceItem;\r\n let deviceText = DeviceName;\r\n if (Dimensions) {\r\n deviceText = `${deviceText} (${Dimensions.Width} x ${Dimensions.Height})`;\r\n }\r\n return {\r\n text: deviceText,\r\n value: Device,\r\n };\r\n });\r\n\r\n return {\r\n AnalyticsClickEvents,\r\n orientations,\r\n defaultDimensions,\r\n model,\r\n validator: CreateExpoProjectModelValidator,\r\n devices,\r\n projectNameUserChanged: false,\r\n errors: [] as string[],\r\n loading: false,\r\n defaultDevice: expo.DeviceType.iPhone12Pro,\r\n };\r\n },\r\n\r\n methods: {\r\n async submit({ values }: Submit) {\r\n // save reference to file in case if \"Cancel\" will be click while name check hasn't finished yet\r\n await checkExpoNameValid(values.Name, values.FolderId);\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n values.Width = values.CustomDimensions[values.Platform] ? values.CustomDimensions[values.Platform].Width : 0;\r\n // eslint-disable-next-line no-param-reassign\r\n values.Height = values.CustomDimensions[values.Platform] ? values.CustomDimensions[values.Platform].Height : 0;\r\n const response = await createProject(values);\r\n if (response && response.Vars && response.Vars.shortcut) {\r\n const shortcut = response.Vars.shortcut.toLowerCase();\r\n this.loading = true;\r\n await this.$store.dispatch(new Fetch(this.$store.getters.getNodeByFolderId(this.parentFolder)));\r\n this.$router.push(\r\n {\r\n name: ROUTES[\"project.overview\"].name,\r\n params: {\r\n shortcut,\r\n },\r\n },\r\n () => {\r\n this.loading = false;\r\n },\r\n );\r\n } else {\r\n this.$emit(\"submit\");\r\n }\r\n },\r\n\r\n customDimensions(platform: expo.DeviceType) {\r\n if (platform) {\r\n return platform === expo.DeviceType.Custom || platform === expo.DeviceType.Web;\r\n }\r\n return false;\r\n },\r\n\r\n isWebPlatform(platform: expo.DeviceType) {\r\n if (platform) {\r\n return platform === expo.DeviceType.Web;\r\n }\r\n return false;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProjectSketch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProjectSketch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCreateProjectSketch.vue?vue&type=template&id=03b6129f&scoped=true&\"\nimport script from \"./AxCreateProjectSketch.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCreateProjectSketch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCreateProjectSketch.vue?vue&type=style&index=0&id=03b6129f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03b6129f\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport {\r\n FilesystemNodeType, FilesystemNodeTypes, ProjectType, ProjectTypes,\r\n} from \"@/common/fs\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxCreateProjectRp from \"@/components/AxCreateProjectRp.vue\";\r\nimport AxCreateProjectSketch from \"@/components/AxCreateProjectSketch.vue\";\r\n\r\nconst nodeProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxCreateProjectRp,\r\n AxCreateProjectSketch,\r\n },\r\n\r\n props: {\r\n node: nodeProp,\r\n },\r\n\r\n data() {\r\n const data = {\r\n compact: true,\r\n ProjectType,\r\n projectType: \"\",\r\n };\r\n\r\n return data;\r\n },\r\n\r\n computed: {\r\n folderId(): string {\r\n if (this.node.type === FilesystemNodeType.Workspace) return this.node.rootFolderId;\r\n return this.node.id;\r\n },\r\n },\r\n\r\n methods: {\r\n modeChanged(projectType: ProjectTypes, compact: boolean) {\r\n this.projectType = projectType;\r\n this.compact = compact;\r\n this.$emit(\"modeChanged\", { compact, projectType });\r\n },\r\n\r\n async submit() {\r\n this.cancel(true);\r\n },\r\n\r\n cancel(refresh: boolean = false) {\r\n this.$router.push(fsRouterLocation(this.folderId, { refresh: { contents: refresh } }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProject.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateProject.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCreateProject.vue?vue&type=template&id=0d6723ce&\"\nimport script from \"./AxCreateProject.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCreateProject.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeTypes, ProjectType, ProjectTypes } from \"@/common/fs\";\r\nimport CreateProject from \"@/layouts/CreateProject.vue\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxCreateProject from \"@/components/AxCreateProject.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxPanel from \"@/components/AxPanel.vue\";\r\n\r\ninterface CreateProjectOptions {\r\n compact: boolean,\r\n projectType: ProjectTypes\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDialog,\r\n AxCreateProject,\r\n CreateProject,\r\n AxPanel,\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n compact: true,\r\n ProjectType,\r\n projectType: \"\",\r\n show: true,\r\n };\r\n },\r\n\r\n computed: {\r\n node(): FilesystemNodeTypes {\r\n return this.$store.getters.getNodeByFolderId(this.id);\r\n },\r\n },\r\n\r\n methods: {\r\n modeChanged({ compact, projectType } : CreateProjectOptions) {\r\n this.projectType = projectType;\r\n this.compact = compact;\r\n },\r\n\r\n submit() {\r\n this.cancel(true);\r\n },\r\n\r\n cancel(refresh: boolean = false) {\r\n this.$router.push(fsRouterLocation(this.id, { refresh: { contents: refresh } }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemCreateProject.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemCreateProject.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemCreateProject.vue?vue&type=template&id=06c9e58c&scoped=true&\"\nimport script from \"./FilesystemCreateProject.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemCreateProject.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesystemCreateProject.vue?vue&type=style&index=0&id=06c9e58c&prod&lang=scss&scoped=true&\"\nimport style1 from \"./FilesystemCreateProject.vue?vue&type=style&index=1&id=06c9e58c&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06c9e58c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"filesystem-manage\"},[_c('div',{staticClass:\"outlet-viewer\"},[_c('Transition',{attrs:{\"appear\":\"\",\"name\":\"fade\",\"mode\":_vm.simultaneous ? '': 'out-in'}},[_c('RouterView')],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n\r\n beforeRouteUpdate(to, from, next) {\r\n // animation should be simultaneous if navigating between fs viewer routes\r\n this.simultaneous = !!to.meta?.fsViewer && !!from.meta?.fsViewer;\r\n next();\r\n },\r\n\r\n data() {\r\n return {\r\n simultaneous: false,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemManage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemManage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemManage.vue?vue&type=template&id=1b030ab2&scoped=true&\"\nimport script from \"./FilesystemManage.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemManage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesystemManage.vue?vue&type=style&index=0&id=1b030ab2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b030ab2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDialog',{attrs:{\"content-class\":\"ax-users-invite-content\"},on:{\"toggle\":_vm.toggled},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[(_vm.rights && _vm.rights.usersInvite)?_c('AxProjectInviteSettings',{attrs:{\"ws\":_vm.workspace,\"autofocus\":\"\"},on:{\"cancel\":_vm.cancel}}):_c('div',[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Invite users to this workspace \")]),_c('AxFormGroup',[_c('p',[_vm._v(\" You do not have permissions to invite users to this workspace. \")])]),_c('AxButton',{attrs:{\"block\":\"\",\"color\":\"primary\",\"large\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" Close \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeWorkspace, WorkspaceRights } from \"@/common/fs\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxProjectInviteSettings from \"@/components/AxProjectInviteSettings.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDialog,\r\n AxProjectInviteSettings,\r\n AxButton,\r\n AxFormGroup,\r\n },\r\n\r\n props: {\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n show: true,\r\n };\r\n },\r\n\r\n computed: {\r\n workspace(): FilesystemNodeWorkspace | undefined {\r\n return this.$store.getters.getFsNode(this.workspaceId);\r\n },\r\n\r\n rights(): WorkspaceRights | undefined {\r\n return this.workspace && this.$store.getters.workspaceRights(this.workspace);\r\n },\r\n },\r\n\r\n methods: {\r\n toggled(modalOpened: boolean) {\r\n if (!modalOpened) {\r\n this.cancel();\r\n }\r\n },\r\n\r\n cancel(refresh: boolean = false) {\r\n this.$router.push(fsRouterLocation(this.id, { refresh: { contents: refresh } }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemUsersInvite.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemUsersInvite.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemUsersInvite.vue?vue&type=template&id=7a9947b4&\"\nimport script from \"./FilesystemUsersInvite.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemUsersInvite.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesystemUsersInvite.vue?vue&type=style&index=0&id=7a9947b4&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDialog',{on:{\"after-leave\":_vm.cancel},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('AxManageUsersLeave',{attrs:{\"workspace\":_vm.workspace},on:{\"submit\":_vm.submit}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.isSubInstance && _vm.isOwner)?[_c('AxChangeOwner',{attrs:{\"workspace\":_vm.workspace,\"button-color\":\"danger\",\"button-value\":\"Leave\"},on:{\"owner-changed\":_vm.onOwnerChanged}},[_c('div',{staticClass:\"form-title\"},[_vm._v(\" Leave Your Workspace \")]),_c('p',[_vm._v(\" You are the owner of this workspace. Please select a new owner before leaving the workspace. If none are available, please remove all pending users and delete the workspace. \")])])]:[_c('AxForm',{attrs:{\"value\":_vm.model,\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',[_c('div',{staticClass:\"form-title\"},[(_vm.isOwner)?[_vm._v(\" Leave Your Workspace \")]:[_vm._v(\" Leave Workspace \")]],2),(_vm.isOwner)?_c('AxFormGroup',[_c('p',[_vm._v(\" You are the owner of this workspace. Please select a new owner before leaving the workspace. If none are available, please remove all pending users and delete the workspace. \")]),(_vm.newOwners.length > 0)?_c('label',[_c('div',[_vm._v(\" Select new owner \")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(values.NewOwner),expression:\"values.NewOwner\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(values, \"NewOwner\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.newOwners),function(item){return _c('option',{key:item.user.userId,domProps:{\"value\":item.user.userId}},[_vm._v(\" \"+_vm._s(item.user.userEmail)+\" \")])}),0)]):_vm._e()]):_c('AxFormGroup',[_vm._v(\" Please confirm that you would like to leave this workspace. \")]),_c('AxButton',{attrs:{\"type\":\"submit\",\"color\":\"danger\",\"large\":\"\",\"block\":\"\",\"loading\":submitting,\"disabled\":_vm.canLeave(values.NewOwner) === false},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Leave \")])],1)]}}])})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { PropOptions } from \"vue/types/options\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { unjoinShare } from \"@/services/fs.service\";\r\nimport { ManageUsersLeaveModel } from \"@/services/models/filesystem\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxChangeOwner from \"@/components/AxChangeOwner.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nconst workspaceProp: PropOptions = {\r\n type: Object,\r\n required: true,\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxChangeOwner,\r\n },\r\n\r\n props: {\r\n workspace: workspaceProp,\r\n },\r\n\r\n data() {\r\n const model: ManageUsersLeaveModel = {\r\n NewOwner: \"\",\r\n currentFolderId: this.workspace.rootFolderId,\r\n FilesystemId: this.workspace.id,\r\n };\r\n const newOwners = this.workspace.sharedWith.filter(item => !item.isViewer);\r\n if (this.workspace.isOwner && newOwners.length) {\r\n model.NewOwner = newOwners[0].user.userId;\r\n }\r\n return {\r\n model,\r\n newOwners,\r\n };\r\n },\r\n\r\n computed: {\r\n isOwner(): boolean {\r\n return this.workspace.isOwner;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n },\r\n\r\n methods: {\r\n canLeave(newOwner: string): boolean {\r\n return this.isOwner === false || this.newOwners.some(item => item.user.userId === newOwner);\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n await unjoinShare(values);\r\n this.$emit(\"submit\");\r\n },\r\n\r\n onOwnerChanged() {\r\n this.submit({ values: { ...this.model, NewOwner: \"\" } });\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersLeave.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxManageUsersLeave.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxManageUsersLeave.vue?vue&type=template&id=5b459e32&\"\nimport script from \"./AxManageUsersLeave.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxManageUsersLeave.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeWorkspace, WorkspaceRights } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxManageUsersLeave from \"@/components/AxManageUsers/AxManageUsersLeave.vue\";\r\n\r\ninterface ComponentData {\r\n show: boolean;\r\n workspace: FilesystemNodeWorkspace | undefined;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDialog,\r\n AxManageUsersLeave,\r\n },\r\n\r\n props: {\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data(): ComponentData {\r\n return {\r\n show: true,\r\n workspace: this.$store.getters.getFsNode(this.workspaceId),\r\n };\r\n },\r\n\r\n beforeRouteEnter(_to, _from, next) {\r\n return next(vm => {\r\n const workspace: FilesystemNodeWorkspace | undefined = ((vm as any) as ComponentData).workspace;\r\n const rights: WorkspaceRights | undefined = workspace && vm.$store.getters.workspaceRights(workspace);\r\n if (!rights || !rights.userLeave) {\r\n vm.$router.push(ROUTES.fs);\r\n }\r\n });\r\n },\r\n\r\n methods: {\r\n submit() {\r\n this.$router.push({\r\n name: ROUTES.fs.name,\r\n });\r\n },\r\n\r\n cancel() {\r\n this.$router.push(fsRouterLocation(this.id));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemUsersLeave.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemUsersLeave.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemUsersLeave.vue?vue&type=template&id=5b76be29&\"\nimport script from \"./FilesystemUsersLeave.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemUsersLeave.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"filesystem-workspace\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\nimport { Store } from \"vuex\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { Navigate, NavigationRestore } from \"@/store/fs/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n computed: {\r\n loading(): boolean {\r\n return this.$store.getters.navigating;\r\n },\r\n\r\n isRoot(): boolean {\r\n return this.$store.getters.isRoot;\r\n },\r\n },\r\n\r\n watch: {\r\n workspaceId() {\r\n this.loadWorkspace();\r\n },\r\n },\r\n\r\n mounted() {\r\n this.loadWorkspace();\r\n },\r\n\r\n methods: {\r\n async loadWorkspace() {\r\n const workspaceId = this.workspaceId;\r\n const store = this.$store as Store;\r\n let node: FilesystemNodeWorkspace = store.getters.getFsNode(workspaceId);\r\n\r\n if (!node) {\r\n await store.dispatch(new NavigationRestore(workspaceId, \"workspace\"));\r\n node = store.getters.getFsNode(workspaceId);\r\n }\r\n\r\n await this.navigateToWorkspace(node);\r\n },\r\n\r\n async navigateToWorkspace(node: FilesystemNodeWorkspace) {\r\n const store = this.$store as Store;\r\n const routeBeforeNavigate = this.$route;\r\n await store.dispatch(new Navigate(node));\r\n\r\n // check if still this route is selected\r\n if (routeBeforeNavigate === this.$route) {\r\n const workspaceNode: FilesystemNodeWorkspace | undefined = store.getters.getFsNode(node.id);\r\n if (workspaceNode) {\r\n const { id, rootFolderId } = workspaceNode;\r\n if (id) {\r\n let location: Location;\r\n if (rootFolderId) {\r\n location = {\r\n name: ROUTES[\"fs.node\"].name,\r\n params: { workspaceId: id, id: rootFolderId },\r\n };\r\n } else {\r\n location = {\r\n name: ROUTES[\"fs.workspace\"].name,\r\n params: { workspaceId: id },\r\n };\r\n }\r\n await this.$router.replace(location);\r\n }\r\n }\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemWorkspace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilesystemWorkspace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilesystemWorkspace.vue?vue&type=template&id=4329224e&scoped=true&\"\nimport script from \"./FilesystemWorkspace.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesystemWorkspace.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesystemWorkspace.vue?vue&type=style&index=0&id=4329224e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4329224e\",\n null\n \n)\n\nexport default component.exports","import { RouteConfig } from \"vue-router\";\r\n\r\nconst ManageAccount = () => import(\"@/pages/ManageAccount.vue\");\r\n\r\nexport type Keys =\r\n | \"manage.account\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n \"manage.account\": {\r\n path: \"/account/manage\",\r\n name: \"manage.account\",\r\n component: ManageAccount,\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes[\"manage.account\"],\r\n },\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nconst AxNotificationsActions = () => import(\"@/components/AxNotificationsActions.vue\");\r\nconst AxNotificationsChangeUrl = () => import(\"@/components/AxNotificationsChangeUrl.vue\");\r\nconst AxNotificationsRemoveGuestSubscription = () => import(\"@/components/AxNotificationsRemoveGuestSubscription.vue\");\r\nconst Notifications = () => import(\"@/pages/ProjectNotifications.vue\");\r\n\r\nexport type Keys =\r\n | \"notification\"\r\n | \"notification.add\"\r\n | \"notification.edit\"\r\n | \"notification.changeurl\"\r\n | \"notification.removeguest\"\r\n | \"notification.mute\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n notification: {\r\n path: \"/notification/manage\",\r\n alias: \"notification\",\r\n name: \"notification\",\r\n component: Notifications,\r\n },\r\n \"notification.add\": {\r\n path: \":type/add\",\r\n name: \"notification.add\",\r\n component: AxNotificationsActions,\r\n props: route => ({\r\n action: \"add\",\r\n type: route.params.type,\r\n }),\r\n },\r\n \"notification.edit\": {\r\n path: \":type/:id/edit\",\r\n name: \"notification.edit\",\r\n component: AxNotificationsActions,\r\n props: route => ({\r\n id: route.params.id,\r\n action: \"edit\",\r\n type: route.params.type,\r\n }),\r\n },\r\n \"notification.changeurl\": {\r\n path: \":type/:id/url\",\r\n name: \"notification.changeurl\",\r\n component: AxNotificationsChangeUrl,\r\n props: true,\r\n },\r\n \"notification.removeguest\": {\r\n path: \":type/:id/guest\",\r\n name: \"notification.removeguest\",\r\n component: AxNotificationsRemoveGuestSubscription,\r\n props: true,\r\n },\r\n \"notification.mute\": {\r\n path: \":type/mute\",\r\n name: \"notification.mute\",\r\n component: AxNotificationsActions,\r\n props: route => ({\r\n action: \"mute\",\r\n type: route.params.type,\r\n }),\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes.notification,\r\n children: [\r\n routes[\"notification.add\"],\r\n routes[\"notification.edit\"],\r\n routes[\"notification.changeurl\"],\r\n routes[\"notification.removeguest\"],\r\n routes[\"notification.mute\"],\r\n ],\r\n },\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-navigation\"},[_c('div',{staticClass:\"ax-filesystem-navigation__content d-flex flex-column h-100\"},[_c('div',{staticClass:\"flex-grow-1 scrollable\"},[_c('ul',{staticClass:\"navigation__block\"},[(_vm.defaultWorkspace)?_c('li',[_c('AxFilesystemNavigationWorkspace',{attrs:{\"workspace\":_vm.defaultWorkspace}})],1):_vm._e(),_c('li',[_c('RouterLink',{staticClass:\"nav-item\",class:{ 'router-link-active': _vm.isRecentActive },attrs:{\"to\":_vm.recentsRoute}},[_c('AxIcon',{staticClass:\"item-icon item-icon__recents\",attrs:{\"name\":\"recents\"}}),_vm._v(\"Recents \")],1)],1)]),_c('div',{staticClass:\"navigation-section\",class:{ 'first-nav-item': !!_vm.defaultWorkspace }},[_c('div',{staticClass:\"navigation-section__title navigation-section__title--workspaces\"},[_vm._v(\" Workspaces \"),(_vm.showCreateWorkspace)?_c('AxButton',{staticClass:\"add-workspace\",attrs:{\"title\":\"Create Workspace\",\"tiny\":\"\",\"icon\":\"\",\"color\":\"light\"},on:{\"click\":_vm.createWorkspace}},[_c('AxIcon',{attrs:{\"name\":\"add-workspace\"}})],1):_vm._e()],1)]),_c('ul',{staticClass:\"navigation__block\"},_vm._l((_vm.invitations),function(invitation){return _c('li',{key:invitation.id,ref:`workspaceNavigationItem_${invitation.id}`,refInFor:true},[_c('AxFilesystemNavigationWorkspace',{attrs:{\"invitation\":invitation}})],1)}),0),_c('TransitionGroup',{staticClass:\"navigation__block\",attrs:{\"name\":_vm.workspacesTransitionName,\"tag\":\"ul\"}},_vm._l((_vm.workspacesList),function(workspace){return _c('li',{key:workspace.id,ref:`workspaceNavigationItem_${workspace.id}`,refInFor:true},[_c('AxFilesystemNavigationWorkspace',{attrs:{\"workspace\":workspace,\"can-favorite\":\"\"},on:{\"favorite-started\":function($event){_vm.enableListAnimation = true},\"unfavorite-started\":function($event){_vm.enableListAnimation = false},\"favorite-finished\":_vm.disableAnimation,\"unfavorite-finished\":_vm.disableAnimation}})],1)}),0),(_vm.hasArchivedWorkspaces)?_c('ul',{staticClass:\"navigation__block\"},[_c('li',[_c('div',{staticClass:\"navigation-section first-nav-item\"},[_c('div',{staticClass:\"archived-activator row g-0\",on:{\"click\":_vm.setShowArchived}},[_c('AxIcon',{staticClass:\"archived-icon col-auto\",attrs:{\"size\":\"small\",\"name\":\"archive\"}}),_c('span',{staticClass:\"col\"},[_vm._v(\" Show Archived \")]),_c('AxIcon',{staticClass:\"caret-icon col-auto\",attrs:{\"size\":\"auto\",\"name\":\"caret\",\"rotate\":_vm.showArchived ? '0deg' : '-90deg'}})],1)])]),_vm._l((_vm.archivedWorkspacesList),function(workspace){return _c('li',{key:workspace.id},[_c('AxFilesystemNavigationWorkspace',{attrs:{\"workspace\":workspace}})],1)})],2):_vm._e()],1),(_vm.allowWorkspacesMigrate && _vm.workspacesMigrationSuggest)?_c('div',{staticClass:\"navigation-section\"},[_c('div',{staticClass:\"ax-suggest-workspaces-migration\"},[_vm._m(0),_c('AxButton',{attrs:{\"color\":\"primary\",\"small\":\"\",\"block\":\"\",\"blur-on-click\":\"\",\"wrap\":\"\"},on:{\"click\":_vm.beginMigration}},[_vm._v(\" Import Workspaces \")]),_c('AxButton',{staticClass:\"ax-suggest-workspaces-migration__btn-close\",attrs:{\"color\":\"link\"},on:{\"click\":_vm.workspacesMigrationAcknowledge}},[_c('AxIcon',{attrs:{\"size\":\"small\",\"name\":\"add\",\"rotate\":\"45deg\"}})],1)],1)]):_vm._e(),(_vm.isSubInstanceAdmin)?_c('div',{staticClass:\"navigation-section admin-nav first-nav-item\"},[_c('div',{staticClass:\"admin-nav-title\"},[_vm._v(\" Admin view \")]),_c('div',{staticClass:\"admin-nav-content\",on:{\"click\":_vm.setShowAllWorkspaces}},[_c('AxToggleButton',{attrs:{\"value\":_vm.showAllWorkspaces},on:{\"input\":_vm.setShowAllWorkspaces}}),_c('span',[_vm._v(\"Show All Workspaces\")])],1)]):_vm._e(),(_vm.roMsg != null)?_c('div',{style:({ 'margin-top': _vm.isSubInstanceAdmin ? '0' : '10px' }),attrs:{\"id\":\"roMsgContainer\"}},[_c('div',[_vm._v(\" \"+_vm._s(_vm.roMsg)+\" \")])]):_vm._e()]),(_vm.creatingWorkspace)?_c('AxCreateWorkspace',{on:{\"closed\":function($event){_vm.creatingWorkspace = false}}}):_vm._e()],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-suggest-workspaces-migration__text small\"},[_vm._v(\" Have workspaces in \"),_c('br'),_vm._v(\" Axure Cloud? \")])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDialog',{attrs:{\"fullscreen\":\"\"},on:{\"after-leave\":_vm.cancel},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('AxForm',{staticClass:\"create-workspace-form\",attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"validator\":_vm.validator},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting, validationResult }){return [_c('form',[_c('div',{staticClass:\"create-workspace-form__title\"},[_vm._v(\" Create a new workspace \")]),_c('div',{staticClass:\"create-workspace-form__subtitle\"},[_vm._v(\" Name your workspace and invite others to join \")]),_c('AxFormGroup',[_c('AxInput',{staticClass:\"create-workspace-form__workspace-name-input\",attrs:{\"autofocus\":\"\",\"placeholder\":\"Workspace Name\"},model:{value:(values.workspaceName),callback:function ($$v) {_vm.$set(values, \"workspaceName\", $$v)},expression:\"values.workspaceName\"}})],1),_c('AxFormGroup',{staticClass:\"form-info mb-0\"},[_c('AxManageUsersInvite',{staticClass:\"invite-users\",on:{\"change\":_vm.changed},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span')]},proxy:true},{key:\"sub-title\",fn:function(){return [_c('span')]},proxy:true},{key:\"input-message\",fn:function(){return [_c('span')]},proxy:true},{key:\"action\",fn:function(){return [_c('AxFormGroup',{staticClass:\"row\"},[_c('div',{staticClass:\"col col-auto\"},[_c('AxCheckbox',{attrs:{\"input-class\":\"input-checkbox\",\"text\":\"Invite as viewer only\"},model:{value:(_vm.usersInvite.viewerOnly),callback:function ($$v) {_vm.$set(_vm.usersInvite, \"viewerOnly\", $$v)},expression:\"usersInvite.viewerOnly\"}})],1),(_vm.isLimitAccessAvailable)?_c('div',{staticClass:\"col-auto ms-auto\"},[_c('div',{staticClass:\"limit-access\"},[_c('span',{staticClass:\"limit-access_label\"},[_vm._v(\" \"+_vm._s(`Limit Access ${values.userViewOnly ? \"On\" : \"Off\"}`)+\" \")]),_c('AxHelp',{attrs:{\"content\":\"When ON, only allow access to public link URLs for users that can access this workspace\"}}),_c('AxToggleButton',{staticClass:\"limit-access_toggle\",attrs:{\"disabled\":submitting},model:{value:(values.userViewOnly),callback:function ($$v) {_vm.$set(values, \"userViewOnly\", $$v)},expression:\"values.userViewOnly\"}})],1)]):_vm._e()])]},proxy:true},{key:\"configure\",fn:function(){return [_c('span')]},proxy:true}],null,true)})],1),_c('div',{staticClass:\"m-0 row justify-content-center\"},[_c('div',{staticClass:\"btn-create-workspace\"},[_c('AxButton',{attrs:{\"type\":\"submit\",\"color\":_vm.buttonColor,\"block\":\"\",\"large\":\"\",\"disabled\":!validationResult.isValid,\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Create Workspace \")])],1)])],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemFolderInfo } from \"@shared/models\";\r\n\r\nimport { CreateWorkspaceModel, CreateWorkspaceModelValidator, FilesystemNodeType } from \"@/common/fs\";\r\nimport { asError } from \"@/common/lib\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\nimport { shareFileSystem, workspaceCreate } from \"@/services/fs.service\";\r\nimport { ManageUsersInviteModel } from \"@/services/models/filesystem\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxCheckbox from \"@/components/AxCheckbox.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxHelp from \"@/components/AxHelp.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxManageUsersInvite from \"@/components/AxManageUsers/AxManageUsersInvite.vue\";\r\nimport AxToggleButton from \"@/components/AxToggleButton.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxForm,\r\n AxFormGroup,\r\n AxButton,\r\n AxDialog,\r\n AxInput,\r\n AxCheckbox,\r\n AxManageUsersInvite,\r\n AxToggleButton,\r\n AxHelp,\r\n },\r\n\r\n data() {\r\n const model: CreateWorkspaceModel = {\r\n workspaceName: \"\",\r\n userViewOnly: false,\r\n };\r\n\r\n const usersInvite: ManageUsersInviteModel = {\r\n userEmails: [],\r\n viewerOnly: false,\r\n };\r\n\r\n return {\r\n usersInvite,\r\n dialog: true,\r\n fSFolderInfo: undefined as FilesystemFolderInfo | undefined,\r\n model,\r\n validator: CreateWorkspaceModelValidator,\r\n buttonColor: \"primary\",\r\n };\r\n },\r\n\r\n computed: {\r\n isLimitAccessAvailable(): boolean {\r\n return this.isOnPrem || this.isSubInstance;\r\n },\r\n\r\n isOnPrem(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.AxShareOnPrem;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n },\r\n\r\n methods: {\r\n changed(usersInvite: ManageUsersInviteModel) {\r\n this.usersInvite = usersInvite;\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n const { usersInvite } = this;\r\n if (!this.fSFolderInfo) {\r\n this.fSFolderInfo = await workspaceCreate(values.workspaceName, values.userViewOnly);\r\n }\r\n\r\n if (this.fSFolderInfo) {\r\n const { FilesystemInfo, RootFolderId } = this.fSFolderInfo;\r\n if (usersInvite.userEmails && usersInvite.userEmails.length > 0) {\r\n const model: ManageUsersInviteModel = {\r\n userEmails: Array.isArray(usersInvite.userEmails)\r\n ? usersInvite.userEmails.join(\",\")\r\n : usersInvite.userEmails,\r\n inviteMessage: usersInvite.inviteMessage,\r\n viewerOnly: usersInvite.viewerOnly,\r\n currentFolderId: RootFolderId,\r\n filesystemId: FilesystemInfo.FilesystemId,\r\n };\r\n try {\r\n await shareFileSystem(model);\r\n } catch (error) {\r\n const message = asError(error).message;\r\n throw new Error(`Workspace has been created, but inviting users has failed: ${message}`);\r\n }\r\n }\r\n await this.$router.replace(\r\n fsRouterLocation({\r\n id: FilesystemInfo.FilesystemId,\r\n type: FilesystemNodeType.Workspace,\r\n }),\r\n );\r\n }\r\n this.dialog = false;\r\n },\r\n\r\n cancel() {\r\n this.$emit(\"closed\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateWorkspace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxCreateWorkspace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxCreateWorkspace.vue?vue&type=template&id=797881d9&scoped=true&\"\nimport script from \"./AxCreateWorkspace.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxCreateWorkspace.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxCreateWorkspace.vue?vue&type=style&index=0&id=797881d9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"797881d9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_vm.showTooltip ? 'AxTooltip' : 'div',_vm._b({tag:\"Component\"},'Component',_vm.showTooltip ? _vm.tooltipProps : {},false),[_c('AxNavigationLinkFs',{staticClass:\"d-block ax-filesystem-navigation-workspace\",attrs:{\"id\":_vm.node.id,\"title\":_vm.node.name}},[_c('div',{staticClass:\"row g-0\"},[_c('div',{staticClass:\"col-auto\"},[_vm._t(\"before\",function(){return [_c('AxWorkspaceIcon',{staticClass:\"item-icon\",attrs:{\"icon-name\":_vm.iconName,\"shared\":_vm.shared}})]})],2),_c('div',{staticClass:\"col\"},[_c('span',{class:_vm.workspaceClass},[_c('span',{staticClass:\"workspace-text\"},[_vm._v(\" \"+_vm._s(_vm.workspaceText)),(_vm.isInvitation || _vm.hasUnreadMentions)?_c('span',{staticClass:\"workspace-indicator ms-1\"},[_vm._v(\" \"),(_vm.isInvitation)?_c('AxIcon',{class:{\n 'invitation-indicator': _vm.isInvitation,\n },attrs:{\"name\":\"dot\"}}):(_vm.hasUnreadMentions)?_c('AxUnreadMentionsIndicator'):_vm._e()],1):_vm._e()])])]),(_vm.canFavorite)?_c('div',{staticClass:\"col-auto d-flex align-items-center ms-1\"},[_c('AxForm',{attrs:{\"submit\":_vm.setFavoriteWs},scopedSlots:_vm._u([{key:\"default\",fn:function({ submitting, handleSubmit }){return [_c('AxButton',{staticClass:\"btn-favorite no-border\",class:{ favorite: _vm.workspace.isFavorite },attrs:{\"blur-on-click\":\"\",\"color\":\"link\",\"disabled\":submitting,\"title\":_vm.favoriteTitle},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_c('AxStar',{attrs:{\"filled\":_vm.workspace.isFavorite,\"fill-color\":\"#ffae00\"}})],1)]}}],null,false,1255753314)})],1):_vm._e()])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxIcon',{staticClass:\"ax-star\"},[_c('svg',{attrs:{\"viewBox\":\"0 0 13 12\"}},[_c('g',{attrs:{\"fill-rule\":\"nonzero\",\"fill\":\"none\"}},[_c('path',{staticClass:\"star-outline\",attrs:{\"d\":\"M6.218.156c.104-.208.457-.208.564 0L8.62 3.761l4.109.578c.12.016.217.099.255.209a.3.3 0 01-.078.314l-2.974 2.81.7 3.97a.303.303 0 01-.126.3.32.32 0 01-.186.058.316.316 0 01-.148-.034l-3.673-1.874-3.674 1.875a.331.331 0 01-.331-.025.305.305 0 01-.126-.3l.7-3.966L.094 4.869a.302.302 0 01-.078-.315.312.312 0 01.255-.208l4.109-.582zm.28.826L4.869 4.18a.308.308 0 01-.236.168l-3.639.51 2.633 2.49c.076.07.11.174.092.272l-.622 3.516L6.347 9.48a.357.357 0 01.149-.034c.05 0 .1.01.148.034l3.254 1.66-.621-3.516a.305.305 0 01.091-.273l2.633-2.489-3.639-.513a.317.317 0 01-.236-.168L6.499.98z\",\"fill\":_vm.filled ? _vm.fillColor : '#718096'}}),_c('path',{attrs:{\"d\":\"M4.632 4.349a.308.308 0 00.237-.168l1.63-3.2 1.627 3.2a.317.317 0 00.236.168l3.639.513-2.633 2.49a.305.305 0 00-.091.272l.621 3.516-3.254-1.66a.316.316 0 00-.148-.034.357.357 0 00-.149.034l-3.25 1.657.62-3.516a.298.298 0 00-.091-.272L.993 4.859l3.64-.51z\",\"fill\":_vm.filled ? _vm.fillColor : 'currentColor'}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n filled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n fillColor: {\r\n type: String,\r\n default: \"#718096\",\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxStar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxStar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxStar.vue?vue&type=template&id=5784df2b&scoped=true&\"\nimport script from \"./AxStar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxStar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxStar.vue?vue&type=style&index=0&id=5784df2b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5784df2b\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { getUserName } from \"@/common/axshare\";\r\nimport { FilesystemNodeWorkspace, FilesystemNodeInvitation } from \"@/common/fs\";\r\n\r\nimport { FilesystemNotificationStateJs } from \"../generated/models\";\r\nimport { FavoriteWorkspace } from \"../store/fs/actionTypes\";\r\nimport { AxShare } from \"../store/state\";\r\n\r\nimport { prop } from \"./utils\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxNavigationLinkFs from \"@/components/AxNavigationLinkFs.vue\";\r\nimport AxTooltip from \"@/components/AxTooltip.vue\";\r\nimport AxUnreadMentionsIndicator from \"@/components/AxUnreadMentionsIndicator.vue\";\r\nimport AxWorkspaceIcon from \"@/components/AxWorkspaceIcon.vue\";\r\nimport AxStar from \"@/components/icons/AxStar.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxIcon,\r\n AxWorkspaceIcon,\r\n AxNavigationLinkFs,\r\n AxTooltip,\r\n AxUnreadMentionsIndicator,\r\n AxStar,\r\n },\r\n\r\n props: {\r\n workspace: prop({\r\n required: false,\r\n }),\r\n\r\n invitation: prop({\r\n required: false,\r\n }),\r\n\r\n canFavorite: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n isInvitation(): boolean {\r\n return !!this.invitation;\r\n },\r\n\r\n node(): FilesystemNodeWorkspace | FilesystemNodeInvitation {\r\n return this.invitation || this.workspace;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n isSubInstanceAdmin(): boolean {\r\n return this.$store.getters.isSubInstanceAdmin;\r\n },\r\n\r\n isAdminUser(): boolean {\r\n return this.$store.getters.isAdminUser;\r\n },\r\n\r\n isOnPrem(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.AxShareOnPrem;\r\n },\r\n\r\n notificationState(): FilesystemNotificationStateJs | undefined {\r\n const notificationState = this.workspace?.listingNode?.NotificationState;\r\n return notificationState;\r\n },\r\n\r\n hasNewComments(): boolean {\r\n return !!this.notificationState && this.notificationState.HasNewComments;\r\n },\r\n\r\n unreadMentions(): number {\r\n return this.notificationState ? this.notificationState.UnreadMentionsCount : 0;\r\n },\r\n\r\n hasUnreadMentions(): boolean {\r\n return this.unreadMentions > 0;\r\n },\r\n\r\n workspaceClass(): Record {\r\n return {\r\n \"nav-text\": true,\r\n \"new-comments\": this.hasNewComments || this.hasUnreadMentions,\r\n \"invitation-node\": this.isInvitation,\r\n };\r\n },\r\n\r\n iconName(): string {\r\n return this.workspace && this.workspace.isDefault ? \"lock\" : \"workspace\";\r\n },\r\n\r\n favoriteTitle(): string {\r\n return this.workspace.isFavorite ? \"Remove from favorites\" : \"Add to favorites\";\r\n },\r\n\r\n workspaceText(): string {\r\n const workspaceName = this.node.name;\r\n const maxTextLength = 33;\r\n if (workspaceName.length <= maxTextLength) return workspaceName;\r\n\r\n const truncatedText = `${workspaceName.substring(0, maxTextLength - 3)}...`;\r\n return truncatedText;\r\n },\r\n\r\n showTooltip(): boolean {\r\n if (this.isInvitation) return false;\r\n\r\n const isAdminOnSubinstance = this.isSubInstance && this.isSubInstanceAdmin;\r\n const isAdminOnPrem = this.isOnPrem && this.isAdminUser;\r\n\r\n if (isAdminOnSubinstance || isAdminOnPrem) {\r\n return !this.workspace.isOwner;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n tooltipProps(): any {\r\n return {\r\n tooltipPlacement: \"right\",\r\n arrow: true,\r\n title: `Owner: ${this.ownerName}`,\r\n };\r\n },\r\n\r\n ownerName(): string {\r\n if (!this.workspace.owner) {\r\n return this.workspace.ownerEmail;\r\n }\r\n\r\n return getUserName(this.workspace.owner) || this.workspace.ownerEmail || \"\";\r\n },\r\n\r\n shared(): boolean {\r\n return this.workspace && this.workspace.users && this.workspace.users.length > 0;\r\n },\r\n },\r\n\r\n methods: {\r\n async setFavoriteWs() {\r\n const eventNamesPrefix = this.workspace.isFavorite ? \"unfavorite\" : \"favorite\";\r\n this.$emit(`${eventNamesPrefix}-started`, this.workspace);\r\n await this.$store.dispatch(new FavoriteWorkspace(this.workspace.id, !this.workspace.isFavorite));\r\n this.$emit(`${eventNamesPrefix}-finished`, this.workspace);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNavigationWorkspace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNavigationWorkspace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNavigationWorkspace.vue?vue&type=template&id=721c6b4d&scoped=true&\"\nimport script from \"./AxFilesystemNavigationWorkspace.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNavigationWorkspace.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNavigationWorkspace.vue?vue&type=style&index=0&id=721c6b4d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"721c6b4d\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { persistentStorage } from \"@/common/axshare/persistent\";\r\nimport { filterWorkspacesUserIsMember } from \"@/common/axshare/workspaces\";\r\nimport { FilesystemNodeInvitation, FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { orderBy } from \"@/common/lib\";\r\nimport { ROUTES } from \"@/router\";\r\nimport adminRouter from \"@/router/admin\";\r\nimport { fsRouterLocation, RefreshOptionsQuery } from \"@/router/fs\";\r\nimport { ApiCall, ApiCallOptions } from \"@/store/actionTypes\";\r\nimport { WorkspacesRefresh } from \"@/store/fs/actionTypes\";\r\nimport { rootNode } from \"@/store/fs/state\";\r\nimport { MigrateWorkspaces } from \"@/store/migration/mutationTypes\";\r\nimport { SetShowAllWorkspaces, SetShowArchived } from \"@/store/settings/mutationTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxCreateWorkspace from \"@/components/AxCreateWorkspace.vue\";\r\nimport AxFilesystemNavigationWorkspace from \"@/components/AxFilesystemNavigationWorkspace.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxToggleButton from \"@/components/AxToggleButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxButton,\r\n AxCreateWorkspace,\r\n AxFilesystemNavigationWorkspace,\r\n AxToggleButton,\r\n },\r\n\r\n data() {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n const roMessage = axShareConfig != null ? axShareConfig.ManagePageMessage.trim() : \"\";\r\n\r\n return {\r\n workspacesMigrationAcknowledged: persistentStorage.WorkspacesMigrationAcknowledged,\r\n creatingWorkspace: false,\r\n workspacesLoading: false,\r\n workspacesLoaded: false,\r\n enableListAnimation: false,\r\n scrollExist: false,\r\n adminSettingsRoute: {\r\n name: adminRouter.routes.admin.name,\r\n path: adminRouter.routes.admin.path,\r\n },\r\n\r\n roMsg: roMessage === \"\" ? null : roMessage,\r\n };\r\n },\r\n\r\n computed: {\r\n isRecentActive(): boolean {\r\n return this.$route.name === ROUTES[\"fs.recents\"].name;\r\n },\r\n\r\n recentsRoute(): Location {\r\n const recentRouteName = ROUTES[\"fs.recents\"].name;\r\n return {\r\n name: recentRouteName,\r\n query: {\r\n refresh: this.isRecentActive ? \"true\" : \"\",\r\n },\r\n };\r\n },\r\n\r\n workspacesTransitionName(): string {\r\n return this.enableListAnimation ? \"workspaces-list\" : \"\";\r\n },\r\n\r\n workspacesList(): FilesystemNodeWorkspace[] {\r\n return this.allNonDefaultActualWorkspaces.filter(ws => !ws.isArchived);\r\n },\r\n\r\n archivedWorkspacesList(): FilesystemNodeWorkspace[] {\r\n if (!this.showArchived) return [];\r\n return this.allArchivedWorkspaces;\r\n },\r\n\r\n allArchivedWorkspaces(): FilesystemNodeWorkspace[] {\r\n return this.allNonDefaultActualWorkspaces.filter(ws => ws.isArchived);\r\n },\r\n\r\n allNonDefaultActualWorkspaces(): FilesystemNodeWorkspace[] {\r\n let items = this.workspaces.filter(ws => !ws.isDefault);\r\n\r\n if (this.isSubInstanceAdmin && !this.showAllWorkspaces) {\r\n items = filterWorkspacesUserIsMember(this.$store.state.user.userInfo, items);\r\n }\r\n\r\n return orderBy(\r\n items,\r\n item => ({ value: item.isFavorite, descending: true }),\r\n item => ({ value: item.created, descending: true }),\r\n );\r\n },\r\n\r\n hasArchivedWorkspaces(): boolean {\r\n return this.allArchivedWorkspaces.length > 0;\r\n },\r\n\r\n archivedWorkspacesButtonText(): string {\r\n return this.showArchived ? \"Hide Archived\" : \"Show Archived\";\r\n },\r\n\r\n workspaces(): FilesystemNodeWorkspace[] {\r\n return Object.values(this.$store.getters.workspaces);\r\n },\r\n\r\n invitations(): FilesystemNodeInvitation[] {\r\n return Object.values(this.$store.getters.invitations);\r\n },\r\n\r\n defaultWorkspace(): FilesystemNodeWorkspace | undefined {\r\n return this.$store.getters.defaultWorkspace;\r\n },\r\n\r\n shouldHandleRouteChange(): boolean {\r\n const currentRouteName = this.$route.name;\r\n const fsRouteName = ROUTES.fs.name;\r\n return !!(currentRouteName && fsRouteName && currentRouteName.startsWith(fsRouteName));\r\n },\r\n\r\n emptyParams(): boolean {\r\n const { id, workspaceId } = this.$route.params;\r\n return !id && !workspaceId;\r\n },\r\n\r\n isAdminPage(): boolean {\r\n const currentRoutePath = this.$route.path;\r\n return !!(\r\n currentRoutePath\r\n && this.adminSettingsRoute.path\r\n && currentRoutePath.startsWith(this.adminSettingsRoute.path)\r\n );\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n isSubInstanceReviewer(): boolean {\r\n return this.$store.getters.isSubInstanceReviewer;\r\n },\r\n\r\n isSubInstanceAdmin(): boolean {\r\n return this.$store.getters.isSubInstanceAdmin;\r\n },\r\n\r\n isSubInstanceTechnicalAdmin(): boolean {\r\n return this.$store.getters.isSubInstanceTechnicalAdmin;\r\n },\r\n\r\n showCreateWorkspace(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n if (axShareConfig !== null && (axShareConfig.IsSubInstance === false || this.$store.getters.hasAuthorRights)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n showAllWorkspaces(): boolean {\r\n const { settings } = this.$store.state as AxShare;\r\n return settings && settings.showAllWorkspaces;\r\n },\r\n\r\n showArchived(): boolean {\r\n const { settings } = this.$store.state as AxShare;\r\n return settings && settings.showArchived;\r\n },\r\n\r\n allowWorkspacesMigrate(): boolean {\r\n return this.$store.getters.allowWorkspacesMigrate;\r\n },\r\n\r\n workspacesMigrationSuggest(): boolean {\r\n if (this.workspacesMigrationAcknowledged) {\r\n return false;\r\n }\r\n if (this.workspacesLoading) return false;\r\n if (this.isSubInstance) {\r\n const totalWorkspaces = this.allNonDefaultActualWorkspaces.length;\r\n if (totalWorkspaces > 1) {\r\n this.workspacesMigrationAcknowledge();\r\n return false;\r\n }\r\n if (totalWorkspaces === 0) return true;\r\n if (totalWorkspaces === 1) {\r\n const { 0: singleWorkspace } = this.allNonDefaultActualWorkspaces;\r\n return singleWorkspace.name === \"First Workspace\";\r\n }\r\n }\r\n return this.isSubInstance && this.allNonDefaultActualWorkspaces.length > 1;\r\n },\r\n },\r\n\r\n watch: {\r\n \"$route.query\": async function _(query: any) {\r\n const { workspaces } = query as RefreshOptionsQuery;\r\n const refresh = workspaces === String(true);\r\n if (refresh) {\r\n const options: ApiCallOptions = {\r\n action: () => this.loadWorkspaces(),\r\n };\r\n await this.$store.dispatch(new ApiCall(options));\r\n }\r\n },\r\n\r\n \"$route.params\": {\r\n async handler() {\r\n if (this.shouldHandleRouteChange && this.emptyParams) {\r\n const options: ApiCallOptions = {\r\n action: async () => {\r\n await this.loadWorkspaces();\r\n await this.navigateToDefaultWorkspace();\r\n },\r\n };\r\n await this.$store.dispatch(new ApiCall(options));\r\n }\r\n },\r\n },\r\n },\r\n\r\n async mounted() {\r\n const fetchWorkspaces = async () => {\r\n await this.loadWorkspaces();\r\n if (this.shouldHandleRouteChange && this.emptyParams) {\r\n if (this.isSubInstanceTechnicalAdmin) {\r\n await this.navigateToAdminPage();\r\n } else {\r\n await this.navigateToWorkspace();\r\n }\r\n }\r\n this.scrollToCurrentWorkspace();\r\n };\r\n\r\n const options: ApiCallOptions = {\r\n action: fetchWorkspaces,\r\n };\r\n await this.$store.dispatch(new ApiCall(options));\r\n },\r\n\r\n methods: {\r\n async loadWorkspaces() {\r\n if (!this.workspacesLoading) {\r\n try {\r\n this.workspacesLoading = true;\r\n await this.$store.dispatch(new WorkspacesRefresh());\r\n this.workspacesLoading = false;\r\n } catch (error) {\r\n this.workspacesLoading = false;\r\n throw error;\r\n } finally {\r\n this.workspacesLoaded = true;\r\n }\r\n }\r\n },\r\n\r\n async navigateToAdminPage() {\r\n if (this.isAdminPage) return;\r\n await this.$router.replace(this.adminSettingsRoute);\r\n },\r\n\r\n async navigateToWorkspace() {\r\n if ((!this.workspaces || !this.workspaces.length) && (!this.invitations || !this.invitations.length)) {\r\n // drop in private workspace if empty workspaces\r\n await this.navigateToDefaultWorkspace();\r\n return;\r\n }\r\n\r\n const { settings } = this.$store.state as AxShare;\r\n if (settings && settings.savedWorkspaceId) {\r\n const { savedWorkspaceId } = settings;\r\n const workspace: FilesystemNodeWorkspace | undefined = this.$store.getters.findWorkspace(savedWorkspaceId);\r\n if (workspace) {\r\n // land on the workspace that has been\r\n await this.$router.replace(fsRouterLocation(workspace));\r\n return;\r\n }\r\n }\r\n\r\n await this.navigateToFirstAvailableWorkspace();\r\n },\r\n\r\n async navigateToDefaultWorkspace() {\r\n const { defaultWorkspace } = this;\r\n\r\n if (defaultWorkspace) {\r\n const { current } = this.$store.getters;\r\n if (current.node !== this.defaultWorkspace) {\r\n await this.$router.replace(fsRouterLocation(defaultWorkspace || rootNode));\r\n }\r\n } else {\r\n // if for some reason there is no default workspace, then navigate to the first available workspace,\r\n // or if there isn't one fallback to Recents page\r\n await this.navigateToFirstAvailableWorkspace();\r\n }\r\n },\r\n\r\n async navigateToFirstAvailableWorkspace() {\r\n const { workspacesList, invitations, recentsRoute } = this;\r\n let fallbackWorkspaceRoute: Location = recentsRoute as Location;\r\n if (invitations.length) {\r\n fallbackWorkspaceRoute = fsRouterLocation(invitations[0]);\r\n } else if (workspacesList.length) {\r\n fallbackWorkspaceRoute = fsRouterLocation(workspacesList[0]);\r\n }\r\n await this.$router.replace(fallbackWorkspaceRoute);\r\n },\r\n\r\n createWorkspace() {\r\n this.creatingWorkspace = true;\r\n },\r\n\r\n setShowAllWorkspaces() {\r\n this.$store.commit(new SetShowAllWorkspaces(!this.showAllWorkspaces));\r\n },\r\n\r\n setShowArchived() {\r\n this.$store.commit(new SetShowArchived(!this.showArchived));\r\n },\r\n\r\n getWorkspaceNavigationItemElement(id: string): Element | undefined {\r\n if (!id) {\r\n return undefined;\r\n }\r\n\r\n const workspaceNavigationItem: Element | undefined = this.$refs[`workspaceNavigationItem_${id}`] as any;\r\n if (Array.isArray(workspaceNavigationItem)) {\r\n return workspaceNavigationItem[0];\r\n }\r\n return workspaceNavigationItem;\r\n },\r\n\r\n scrollToCurrentWorkspace() {\r\n if (this.emptyParams) {\r\n return;\r\n }\r\n const { workspaceId } = this.$route.params;\r\n const currentWorkspaceNavigationItem = this.getWorkspaceNavigationItemElement(workspaceId);\r\n if (currentWorkspaceNavigationItem && currentWorkspaceNavigationItem.scrollIntoView) {\r\n currentWorkspaceNavigationItem.scrollIntoView({ block: \"center\" });\r\n }\r\n },\r\n\r\n disableAnimation() {\r\n setTimeout(() => {\r\n this.enableListAnimation = true;\r\n }, 500);\r\n },\r\n\r\n beginMigration() {\r\n this.$store.commit(new MigrateWorkspaces(true));\r\n },\r\n\r\n workspacesMigrationAcknowledge() {\r\n persistentStorage.WorkspacesMigrationAcknowledged = true;\r\n this.workspacesMigrationAcknowledged = true;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemNavigation.vue?vue&type=template&id=7b2bbce4&scoped=true&\"\nimport script from \"./AxFilesystemNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemNavigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemNavigation.vue?vue&type=style&index=0&id=7b2bbce4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b2bbce4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.loading)?_c('FilesystemViewer',{attrs:{\"content-divider\":\"\"},scopedSlots:_vm._u([{key:\"header-content\",fn:function(){return [_c('AxFilesystemViewerActionsBase',{scopedSlots:_vm._u([{key:\"node-icon\",fn:function(){return [_c('AxIcon',{attrs:{\"name\":\"recents\"}})]},proxy:true},{key:\"node-name\",fn:function(){return [_c('AxFilesystemViewerHeader',{attrs:{\"node\":_vm.recentsNode}})]},proxy:true}],null,false,422228399)})]},proxy:true},{key:\"content\",fn:function(){return [_c('AxFilesystemRecentsTable',{attrs:{\"items\":_vm.items,\"loading\":_vm.loading}})]},proxy:true}],null,false,2342508606)}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-recents-table\"},[_c('AxFilesystemTable',{attrs:{\"items\":_vm.items,\"loading\":_vm.loading,\"pagination\":_vm.pagination,\"item-navigation-disabled\":_vm.isItemDeleted,\"select-disabled\":\"\"},scopedSlots:_vm._u([{key:\"actionsHeader\",fn:function(){return [_c('div')]},proxy:true},{key:\"content\",fn:function({ item }){return [_c('td',[_c('AxFilesystemNodeLink',{attrs:{\"node\":_vm.project(item),\"disabled\":_vm.isItemDeleted(item)}})],1),_c('td',[_c('AxShortcutCommentsCount',{attrs:{\"project\":item,\"disabled\":_vm.isItemDeleted(item)}})],1),_c('td',[_c('div',{staticClass:\"non-navigatable\"},[(item.type === _vm.FilesystemNodeType.Shortcut)?_c('AxShortcutPublicLink',{attrs:{\"project\":_vm.project(item),\"disabled\":_vm.isItemDeleted(item)}}):_vm._e()],1)]),_c('td',[_c('div',{staticClass:\"non-navigatable\"},[(item.type === _vm.FilesystemNodeType.Shortcut)?_c('AxShortcutModified',{attrs:{\"project\":_vm.project(item)}}):_vm._e(),(_vm.hasUnreadPublishNotesMentions(item))?_c('AxUnreadMentionsIndicator',{staticClass:\"ms-1\"}):_vm._e()],1)]),_c('td',[_c('div',{staticClass:\"non-navigatable\"},[(_vm.showShortcutDropdown(item))?_c('AxShortcutDropdownButton',{attrs:{\"refresh-disabled\":\"\",\"project\":_vm.project(item)},on:{\"deleted\":_vm.itemDeleted}}):_vm._e()],1)])]}},{key:\"noData\",fn:function(){return [_c('AxDataTableNoData',{attrs:{\"title\":\"No projects found\",\"sub-title\":\"Your most recently viewed projects will appear here.\"}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport {\r\n FilesystemNodeShortcut,\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n getUnreadPublishNotesMentions,\r\n} from \"@/common/fs\";\r\n\r\nimport { Pagination } from \"@/components/AxDataTable.vue\";\r\nimport AxDataTableNoData from \"@/components/AxDataTableNoData.vue\";\r\nimport AxFilesystemNodeLink from \"@/components/AxFilesystemNodeLink.vue\";\r\nimport AxFilesystemTable from \"@/components/AxFilesystemTable.vue\";\r\nimport AxShortcutCommentsCount from \"@/components/AxShortcutCommentsCount.vue\";\r\nimport AxShortcutDropdownButton from \"@/components/AxShortcutDropdownButton.vue\";\r\nimport AxShortcutModified from \"@/components/AxShortcutModified.vue\";\r\nimport AxShortcutPublicLink from \"@/components/AxShortcutPublicLink.vue\";\r\nimport AxUnreadMentionsIndicator from \"@/components/AxUnreadMentionsIndicator.vue\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDataTableNoData,\r\n AxFilesystemTable,\r\n AxShortcutDropdownButton,\r\n AxShortcutModified,\r\n AxShortcutPublicLink,\r\n AxFilesystemNodeLink,\r\n AxShortcutCommentsCount,\r\n AxUnreadMentionsIndicator,\r\n },\r\n\r\n props: {\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n items: arrayProp({\r\n required: false,\r\n default: () => [],\r\n }),\r\n\r\n headerOffsetTop: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n\r\n data() {\r\n const pagination: Partial = {\r\n sortBy: undefined,\r\n descending: true,\r\n };\r\n return {\r\n pagination,\r\n FilesystemNodeType,\r\n deletedItems: {} as Record,\r\n };\r\n },\r\n\r\n methods: {\r\n project(item: FilesystemNodeShortcut) {\r\n return this.$store.getters.getFsNode(item.id) || item;\r\n },\r\n\r\n itemDeleted(item: FilesystemNodeShortcut) {\r\n this.$set(this.deletedItems, item.id, true);\r\n },\r\n\r\n isItemDeleted(item: FilesystemNodeShortcut) {\r\n return !!this.deletedItems[item.id];\r\n },\r\n\r\n showShortcutDropdown(item: FilesystemNodeTypes) {\r\n return item.type === FilesystemNodeType.Shortcut && item.viewOnly === false;\r\n },\r\n\r\n hasUnreadPublishNotesMentions(item: FilesystemNodeTypes) {\r\n if (!item.listingNode) return false;\r\n const mentionsCount = getUnreadPublishNotesMentions(item.listingNode.NotificationState);\r\n return mentionsCount > 0;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemRecentsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemRecentsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemRecentsTable.vue?vue&type=template&id=116c91a2&\"\nimport script from \"./AxFilesystemRecentsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemRecentsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { ListJs, RecentJs } from \"@shared/models\";\r\n\r\nimport {\r\n FilesystemNode, FilesystemNodeRecents, FilesystemNodeType, toShortcutNode,\r\n} from \"@/common/fs\";\r\nimport FilesystemViewer from \"@/layouts/FilesystemViewer.vue\";\r\nimport { getRecents } from \"@/services/fs.service\";\r\nimport { ApiCall, ApiCallOptions } from \"@/store/actionTypes\";\r\nimport { RecentsLoad } from \"@/store/fs/mutationTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxFilesystemRecentsTable from \"@/components/AxFilesystemRecentsTable.vue\";\r\nimport AxFilesystemViewerActionsBase from \"@/components/AxFilesystemViewerActionsBase.vue\";\r\nimport AxFilesystemViewerHeader from \"@/components/AxFilesystemViewerHeader.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n FilesystemViewer,\r\n AxIcon,\r\n AxFilesystemRecentsTable,\r\n AxFilesystemViewerHeader,\r\n AxFilesystemViewerActionsBase,\r\n },\r\n\r\n data() {\r\n const recentsNode: FilesystemNodeRecents = {\r\n id: \"recent\",\r\n name: \"Recents\",\r\n type: FilesystemNodeType.Recents,\r\n listingNode: undefined,\r\n parent: undefined,\r\n siblings: [],\r\n totalItems: 0,\r\n created: new Date(),\r\n };\r\n\r\n return {\r\n recentsNode,\r\n recents: undefined as ListJs | undefined,\r\n };\r\n },\r\n\r\n computed: {\r\n loading(): boolean {\r\n const { fs } = this.$store.state as AxShare;\r\n return fs.recentsLoad;\r\n },\r\n\r\n items(): FilesystemNode[] {\r\n if (!this.recents) return [];\r\n return this.recents.Items.map(recent => toShortcutNode(recent.Shortcut, this.recentsNode));\r\n },\r\n },\r\n\r\n watch: {\r\n \"$route.query\": function (query: any) {\r\n const { refresh } = query;\r\n if (this.recents && refresh === String(true)) {\r\n this.load();\r\n }\r\n },\r\n },\r\n\r\n created() {\r\n this.load();\r\n },\r\n\r\n methods: {\r\n async load() {\r\n const loadImpl = async () => {\r\n this.$store.commit(new RecentsLoad(true));\r\n try {\r\n this.recents = await getRecents();\r\n if (Object.keys(this.$route.query).length > 0) {\r\n this.$router.replace({ query: undefined });\r\n }\r\n this.$store.commit(new RecentsLoad(false));\r\n } catch (error) {\r\n console.warn(\"Error occurred when trying to load recents\");\r\n throw error;\r\n } finally {\r\n this.$store.commit(new RecentsLoad(false));\r\n }\r\n };\r\n\r\n const options: ApiCallOptions = {\r\n action: () => loadImpl(),\r\n };\r\n await this.$store.dispatch(new ApiCall(options));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemRecents.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemRecents.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemRecents.vue?vue&type=template&id=037779c5&\"\nimport script from \"./AxFilesystemRecents.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemRecents.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"h-100\"},[(!_vm.isRoot)?_c('FilesystemViewer',{attrs:{\"content-divider\":\"\"},scopedSlots:_vm._u([{key:\"header-top\",fn:function(){return [(_vm.canGoBack)?_c('div',{staticClass:\"ax-filesystem-viewer__go-back\"},[_c('AxNavigation',{staticClass:\"desktop-app-no-drag\"})],1):_vm._e()]},proxy:true},{key:\"header-content\",fn:function(){return [_c('AxFilesystemViewerHeader',{attrs:{\"node\":_vm.node}}),(_vm.viewOnly)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('p',[_vm._v(\"Your permissions on this workspace allow you to only view prototype URLs.\")])])]):_vm._e()]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticClass:\"row g-0 flex-nowrap flex-grow-1 flex-shrink-1 mh-0\"},[_c('div',{staticClass:\"col-auto column-filesystem-table position-relative\"},[_c('AxFilesystemTable',{class:{ 'empty-state': !_vm.items.length },attrs:{\"view-only\":_vm.viewOnly,\"items\":_vm.items,\"loading\":_vm.loading,\"header-offset-top\":0,\"custom-sort\":_vm.filesystemSort,\"hide-headers\":!_vm.items.length},on:{\"refresh\":_vm.refresh}})],1),(_vm.enableActivityFeed)?_c('div',{staticClass:\"col-2 column-filesystem-feed\"},[(_vm.workspace)?_c('AxFilesystemFeed',{key:_vm.workspace.id,attrs:{\"workspace\":_vm.workspace}}):_vm._e()],1):_vm._e()])]},proxy:true},{key:\"default\",fn:function(){return [_c('RouterView')]},proxy:true}],null,false,4052107104)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Store } from \"vuex\";\r\n\r\nimport {\r\n FilesystemNode, FilesystemNodeType, FilesystemNodeTypes, FilesystemNodeWorkspace, isWorkspaceNode,\r\n} from \"@/common/fs\";\r\nimport { getObjectValueByPath, orderBy } from \"@/common/lib\";\r\nimport FilesystemViewer from \"@/layouts/FilesystemViewer.vue\";\r\nimport { RefreshOptionsQuery } from \"@/router/fs\";\r\nimport { Fetch, Navigate, NavigationRestore } from \"@/store/fs/actionTypes\";\r\nimport { SetSavedWorkspaceId } from \"@/store/settings/mutationTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxNavigation from \"./AxNavigation.vue\";\r\n\r\nimport AxFilesystemTable from \"@/components/AxFilesystemTable.vue\";\r\nimport AxFilesystemViewerHeader from \"@/components/AxFilesystemViewerHeader.vue\";\r\nimport { CustomSort } from \"@/components/types/AxDataTable\";\r\n\r\nconst AxFilesystemFeed = () => import(\"@/components/AxFilesystemFeed.vue\");\r\n\r\nconst filesystemSort: CustomSort = (items, path, isDescending) => orderBy(\r\n items,\r\n // folders should be always on top\r\n item => ({ value: item.type === FilesystemNodeType.Folder, descending: true }),\r\n item => ({ value: getObjectValueByPath(item, path), descending: isDescending }),\r\n item => ({ value: item.name, descending: false }),\r\n);\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxFilesystemFeed,\r\n AxFilesystemTable,\r\n AxFilesystemViewerHeader,\r\n AxNavigation,\r\n FilesystemViewer,\r\n },\r\n\r\n beforeRouteEnter(to, _from, next) {\r\n next(vm => {\r\n const { workspaceId } = to.params;\r\n vm.$store.commit(new SetSavedWorkspaceId(workspaceId));\r\n });\r\n },\r\n\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n filesystemSort,\r\n };\r\n },\r\n\r\n computed: {\r\n loading(): boolean {\r\n return this.$store.getters.navigating;\r\n },\r\n\r\n isRoot(): boolean {\r\n return this.$store.getters.isRoot;\r\n },\r\n\r\n current(): {\r\n node: FilesystemNodeTypes;\r\n contents: FilesystemNode[];\r\n } {\r\n return this.$store.getters.current;\r\n },\r\n\r\n node(): FilesystemNodeTypes {\r\n return this.current.node;\r\n },\r\n\r\n workspace(): FilesystemNodeWorkspace | undefined {\r\n return isWorkspaceNode(this.node) ? this.node : this.$store.getters.findWorkspace(this.node.id);\r\n },\r\n\r\n items(): FilesystemNode[] {\r\n return this.current.contents;\r\n },\r\n\r\n canGoBack(): boolean {\r\n if (this.node.type === FilesystemNodeType.Workspace) return false;\r\n const parent = this.node.parent;\r\n return parent !== undefined && parent.type !== FilesystemNodeType.Root;\r\n },\r\n\r\n upperLevel(): FilesystemNode | undefined {\r\n return this.node.parent;\r\n },\r\n\r\n viewOnly(): boolean {\r\n const node = this.node;\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n return node.viewOnly;\r\n }\r\n if (node.type === FilesystemNodeType.Folder) {\r\n return node.viewOnly;\r\n }\r\n return false;\r\n },\r\n\r\n enableActivityFeed(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n if (axShareConfig) {\r\n return axShareConfig.EnableActivityFeedUI;\r\n }\r\n return false;\r\n },\r\n },\r\n\r\n watch: {\r\n id() {\r\n this.load();\r\n },\r\n\r\n \"$route.query\": function _() {\r\n const { contents } = this.$route.query as RefreshOptionsQuery;\r\n const refresh = contents === String(true);\r\n if (refresh) {\r\n this.refresh();\r\n }\r\n },\r\n },\r\n\r\n mounted() {\r\n this.load();\r\n },\r\n\r\n methods: {\r\n async load() {\r\n const store = this.$store as Store;\r\n const { id, workspaceId } = this;\r\n\r\n let node: FilesystemNodeTypes = store.getters.getFsNode(id);\r\n if (node) {\r\n return store.dispatch(new Navigate(node));\r\n }\r\n\r\n // There is a case when workspace navigation should be skipped.\r\n // In case when navigating to workspace's rootFolder, skip it\r\n // as it's handled on the upper level in FilesystemWorkspace component.\r\n if (store.getters.getFsNode(workspaceId)) {\r\n const workspaceRootFolder: FilesystemNodeWorkspace | undefined = store.getters.getWorkspaceByRootFolderId(id);\r\n if (workspaceRootFolder) return;\r\n }\r\n\r\n await store.dispatch(new NavigationRestore(id));\r\n node = store.getters.getFsNode(id) || store.getters.getFsNode(workspaceId);\r\n return store.dispatch(new Navigate(node));\r\n },\r\n\r\n async refresh() {\r\n const store = this.$store as Store;\r\n const { id, workspaceId } = this;\r\n\r\n const node: FilesystemNodeTypes = store.getters.getFsNode(id) || store.getters.getFsNode(workspaceId);\r\n if (node) {\r\n return store.dispatch(new Fetch(node));\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemViewer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemViewer.vue?vue&type=template&id=5e030eba&scoped=true&\"\nimport script from \"./AxFilesystemViewer.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemViewer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemViewer.vue?vue&type=style&index=0&id=5e030eba&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e030eba\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.loaded)?_c('AxDialog',{attrs:{\"dialog-class\":\"workspace-invitation-dialog\",\"content-class\":\"workspace-invitation-dialog__content\",\"attach\":\".viewer-pane\",\"persistent\":\"\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"invitation-instructions\"},[_c('h3',[_vm._v(\"You've been invited to a shared workspace\")]),_c('p',[_vm._v(\"Please accept or decline the invitation below\")]),(_vm.invitation.message)?_c('p',{staticClass:\"invitation-message\"},[_vm._v(\" “\"+_vm._s(_vm.invitation.message)+\"” \")]):_vm._e(),_c('p',[_c('span',[_vm._v(\"From: \")]),_vm._v(\" \"),(_vm.sender)?_c('AxUser',{attrs:{\"show-avatar\":false,\"user\":_vm.sender,\"profile\":_vm.senderProfile}}):_vm._e()],1)]),_c('AxForm',{attrs:{\"submit\":_vm.submit},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return [_c('form',[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-6\"},[_c('AxButton',{attrs:{\"color\":\"link\",\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return (() => { _vm.confirmed = false; handleSubmit() }).apply(null, arguments)}}},[_vm._v(\" Decline \")])],1),_c('div',{staticClass:\"col-6\"},[_c('AxButton',{attrs:{\"loading\":submitting,\"color\":\"primary\"},on:{\"click\":function($event){$event.preventDefault();return (() => { _vm.confirmed = true; handleSubmit() }).apply(null, arguments)}}},[_vm._v(\" Accept and View Workspace \")])],1)])])]}}],null,false,1655218979)})],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { SsoResponse } from \"@shared/models\";\r\n\r\nimport { FilesystemNodeInvitation, FilesystemNodeType } from \"@/common/fs\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\nimport { UserProfile } from \"@/services/models/account\";\r\nimport { InvitationRespond } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxUser from \"@/components/AxUser.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxDialog,\r\n AxUser,\r\n AxForm,\r\n },\r\n props: {\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n dialog: true,\r\n confirmed: true,\r\n };\r\n },\r\n\r\n computed: {\r\n loaded(): boolean {\r\n return this.invitation.type === FilesystemNodeType.Invitation;\r\n },\r\n\r\n invitation(): FilesystemNodeInvitation {\r\n return this.$store.getters.current.node;\r\n },\r\n\r\n sender(): SsoResponse {\r\n return this.invitation.sender;\r\n },\r\n\r\n senderProfile(): UserProfile {\r\n return {\r\n Name: this.sender.nickname,\r\n Bio: this.sender.bio,\r\n Img: this.sender.profileImageUrl,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n async submit() {\r\n if (this.confirmed) {\r\n await this.accept();\r\n } else {\r\n await this.decline();\r\n }\r\n },\r\n\r\n respond(accept: boolean) {\r\n return this.$store.dispatch(new InvitationRespond(this.invitation.id, accept));\r\n },\r\n\r\n async decline() {\r\n await this.respond(false);\r\n // redirect to root\r\n await this.$router.push(fsRouterLocation(this.$store.getters.defaultWorkspace));\r\n },\r\n\r\n async accept() {\r\n const workspaceId = this.invitation.id;\r\n await this.respond(true);\r\n\r\n // trick router that redirect is happening into workspace\r\n const workspace = {\r\n id: workspaceId,\r\n type: FilesystemNodeType.Workspace,\r\n };\r\n await this.$router.push(fsRouterLocation(workspace, { refresh: { workspaces: true } }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspaceInvitation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspaceInvitation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxWorkspaceInvitation.vue?vue&type=template&id=4db3477a&scoped=true&\"\nimport script from \"./AxWorkspaceInvitation.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxWorkspaceInvitation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxWorkspaceInvitation.vue?vue&type=style&index=0&id=4db3477a&prod&lang=scss&\"\nimport style1 from \"./AxWorkspaceInvitation.vue?vue&type=style&index=1&id=4db3477a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4db3477a\",\n null\n \n)\n\nexport default component.exports","import { Location, RouteConfig } from \"vue-router\";\r\nimport { Dictionary, Route } from \"vue-router/types/router\";\r\n\r\nimport { FilesystemNodeType, FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport Filesystem from \"@/pages/Filesystem.vue\";\r\nimport ConfigureSecurity from \"@/pages/FilesystemConfigureSecurity.vue\";\r\nimport CreateFolder from \"@/pages/FilesystemCreateFolder.vue\";\r\nimport CreateProject from \"@/pages/FilesystemCreateProject.vue\";\r\nimport FilesystemManage from \"@/pages/FilesystemManage.vue\";\r\nimport UsersInvite from \"@/pages/FilesystemUsersInvite.vue\";\r\nimport UsersLeave from \"@/pages/FilesystemUsersLeave.vue\";\r\nimport FilesystemWorkspace from \"@/pages/FilesystemWorkspace.vue\";\r\nimport adminRouter, { Keys as admin } from \"@/router/admin\";\r\nimport manageAccountRouter, { Keys as manageAccount } from \"@/router/manage-account\";\r\nimport notificationRouter, { Keys as notification } from \"@/router/notification\";\r\nimport { getWorkspaceInvitation } from \"@/services/fs.service\";\r\nimport store from \"@/store\";\r\nimport { ApiCallOptions, ApiCall } from \"@/store/actionTypes\";\r\nimport { NavigationRestore } from \"@/store/fs/actionTypes\";\r\nimport { NodeRemove } from \"@/store/fs/mutationTypes\";\r\n\r\nimport AxFilesystemNavigation from \"@/components/AxFilesystemNavigation.vue\";\r\nimport AxFilesystemRecents from \"@/components/AxFilesystemRecents.vue\";\r\nimport AxFilesystemViewer from \"@/components/AxFilesystemViewer.vue\";\r\nimport AxWorkspaceInvitation from \"@/components/AxWorkspaceInvitation.vue\";\r\n\r\nconst License = () => import(\"@/pages/License.vue\");\r\n\r\nexport type Keys =\r\n | \"fs\"\r\n | \"fs.manage\"\r\n | \"fs.workspace\"\r\n | \"fs.workspace.invited\"\r\n | \"fs.node\"\r\n | \"fs.node.createproject\"\r\n | \"fs.node.createfolder\"\r\n | \"fs.node.userinvite\"\r\n | \"fs.node.userleave\"\r\n | \"fs.node.configure\"\r\n | \"fs.recents\"\r\n | \"invite\"\r\n | notification\r\n | manageAccount;\r\n\r\nconst fsRecentsRoute: RouteConfig = {\r\n path: \"/fs/recents\",\r\n name: \"recents\",\r\n component: AxFilesystemRecents,\r\n meta: {\r\n fsViewer: true,\r\n },\r\n};\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n fs: {\r\n path: \"fs\",\r\n name: \"fs\",\r\n components: {\r\n default: Filesystem,\r\n license: License,\r\n },\r\n\r\n meta: {\r\n safeToApplySWUpdate: true,\r\n },\r\n },\r\n\r\n \"fs.manage\": {\r\n path: \"manage\",\r\n name: \"fs.manage\",\r\n components: {\r\n default: FilesystemManage,\r\n sidebar: AxFilesystemNavigation,\r\n },\r\n props: {\r\n sidebar: true,\r\n },\r\n meta: {\r\n safeToApplySWUpdate: true,\r\n },\r\n },\r\n\r\n \"fs.recents\": fsRecentsRoute,\r\n\r\n \"fs.workspace\": {\r\n path: \":workspaceId\",\r\n name: \"fs.workspace\",\r\n component: FilesystemWorkspace,\r\n props: true,\r\n meta: {\r\n fsViewer: true,\r\n },\r\n },\r\n \"fs.node\": {\r\n path: \":workspaceId/:id\",\r\n name: \"fs.node\",\r\n component: AxFilesystemViewer,\r\n props: true,\r\n meta: {\r\n safeToApplySWUpdate: true,\r\n fsViewer: true,\r\n },\r\n },\r\n \"fs.workspace.invited\": {\r\n path: \":workspaceId/invited\",\r\n name: \"fs.workspace.invited\",\r\n component: AxWorkspaceInvitation,\r\n props: true,\r\n async beforeEnter(to, _, next) {\r\n const checkInvitation = async () => {\r\n const { workspaceId } = to.params;\r\n let hasInvitation;\r\n try {\r\n const response = await getWorkspaceInvitation(workspaceId);\r\n hasInvitation = !!response.FilesystemId;\r\n } catch {\r\n hasInvitation = false;\r\n }\r\n if (hasInvitation) {\r\n next();\r\n } else {\r\n store.commit(new NodeRemove(workspaceId));\r\n\r\n // trick router that redirect is happening into workspace\r\n const workspace = {\r\n id: workspaceId,\r\n type: FilesystemNodeType.Workspace,\r\n };\r\n next(fsRouterLocation(workspace, { refresh: { workspaces: true } }));\r\n }\r\n };\r\n const options: ApiCallOptions = {\r\n action: checkInvitation,\r\n };\r\n\r\n await store.dispatch(new ApiCall(options));\r\n },\r\n },\r\n \"fs.node.createproject\": {\r\n path: \"projects/new\",\r\n name: \"fs.node.createproject\",\r\n component: CreateProject,\r\n props: true,\r\n },\r\n \"fs.node.createfolder\": {\r\n path: \"folders/new\",\r\n name: \"fs.node.createfolder\",\r\n component: CreateFolder,\r\n props: true,\r\n },\r\n \"fs.node.userinvite\": {\r\n path: \"users/invite\",\r\n name: \"fs.node.userinvite\",\r\n component: UsersInvite,\r\n props: true,\r\n },\r\n \"fs.node.userleave\": {\r\n path: \"users/leave\",\r\n name: \"fs.node.userleave\",\r\n component: UsersLeave,\r\n props: true,\r\n },\r\n \"fs.node.configure\": {\r\n path: \"configure\",\r\n name: \"fs.node.configure\",\r\n component: ConfigureSecurity,\r\n props: true,\r\n },\r\n invite: {\r\n // Linking directly to the the invite users to workspace dialog\r\n // be careful about changing this route path. it should always be present, because RP uses it\r\n path: \"/invite/:id\",\r\n name: \"invite\",\r\n async beforeEnter({ params: { id } }, _from, next) {\r\n const unresolved = routes.fs;\r\n if (!id) return next(unresolved);\r\n\r\n try {\r\n await store.dispatch(new NavigationRestore(id, \"shortcut\"));\r\n const workspace: FilesystemNodeWorkspace | undefined = store.getters.findWorkspace(id);\r\n if (!workspace) return next(unresolved);\r\n\r\n const closestFolderId = store.getters.getClosestFolderId(id);\r\n\r\n const params: Required> = {\r\n workspaceId: workspace.id,\r\n id: closestFolderId || workspace.rootFolderId,\r\n };\r\n return next({\r\n name: routes[\"fs.node.userinvite\"].name,\r\n params,\r\n });\r\n } catch {\r\n return next(unresolved);\r\n }\r\n },\r\n },\r\n ...notificationRouter.routes,\r\n ...manageAccountRouter.routes,\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes.fs,\r\n redirect: routes[\"fs.manage\"],\r\n children: [\r\n {\r\n ...routes[\"fs.manage\"],\r\n children: [\r\n ...notificationRouter.config,\r\n ...manageAccountRouter.config,\r\n routes[\"fs.recents\"],\r\n routes[\"fs.workspace.invited\"],\r\n routes[\"fs.workspace\"],\r\n {\r\n ...routes[\"fs.node\"],\r\n children: [\r\n routes[\"fs.node.createproject\"],\r\n routes[\"fs.node.createfolder\"],\r\n routes[\"fs.node.userinvite\"],\r\n routes[\"fs.node.userleave\"],\r\n routes[\"fs.node.configure\"],\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n routes.invite,\r\n];\r\n\r\nexport interface RefreshOptions {\r\n contents?: boolean;\r\n workspaces?: boolean;\r\n}\r\nexport interface FsLocationOptions {\r\n refresh?: RefreshOptions;\r\n workspaceId?: string;\r\n id?: string;\r\n}\r\nconst refreshDefault: Required = {\r\n contents: false,\r\n workspaces: false,\r\n};\r\nconst defaultOptions = {\r\n refresh: refreshDefault,\r\n};\r\nexport type RefreshOptionsQuery = Record;\r\n\r\nconst locationBuilders: Record<\r\nstring,\r\n(node: { id: string; type: FilesystemNodeType }, options: FsLocationOptions) => Location\r\n> = {\r\n [FilesystemNodeType.Root]() {\r\n return { name: routes.fs.name };\r\n },\r\n [FilesystemNodeType.Workspace]({ id }) {\r\n return { name: routes[\"fs.workspace\"].name, params: { workspaceId: id } };\r\n },\r\n [FilesystemNodeType.Folder]({ id }, { workspaceId }) {\r\n const params: Dictionary = workspaceId ? { workspaceId, id } : { id };\r\n return { name: routes[\"fs.node\"].name, params };\r\n },\r\n [FilesystemNodeType.Invitation]({ id }) {\r\n return { name: routes[\"fs.workspace.invited\"].name, params: { workspaceId: id } };\r\n },\r\n};\r\n\r\nexport function fsRouterLocation(\r\n node?: { id: string; type: FilesystemNodeType } | string,\r\n options: FsLocationOptions = defaultOptions,\r\n): Location {\r\n let location: Location = {};\r\n if (node) {\r\n if (typeof node === \"string\") {\r\n location = { name: routes[\"fs.node\"].name, params: { id: node } };\r\n } else {\r\n const { type, id } = node;\r\n const locationBuilder = locationBuilders[type];\r\n location = locationBuilder ? locationBuilder(node, options) : { name: routes[\"fs.node\"].name, params: { id } };\r\n }\r\n }\r\n\r\n if (options.refresh) {\r\n const { contents, workspaces } = options.refresh;\r\n const query: Dictionary = {};\r\n if (contents) {\r\n query.contents = String(contents);\r\n }\r\n if (workspaces) {\r\n query.workspaces = String(workspaces);\r\n }\r\n location.query = query;\r\n }\r\n\r\n return location;\r\n}\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FixedHeader',{scopedSlots:_vm._u([{key:\"header\",fn:function(){return [(_vm.isOutdatedBrowser)?_c('AxOutdatedBrowserBanner'):_vm._e(),_c('AxHeading'),_c('RouterView',{attrs:{\"name\":\"projectNavigation\"}})]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{staticClass:\"container-fluid flex-grow-1\"},[_c('div',{staticClass:\"row h-100\"},[_c('div',{staticClass:\"ax-home col-12 h-100\"},[_c('Transition',{attrs:{\"appear\":\"\",\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('RouterView')],1)],1)])]),_c('AxWorkspacesMigration'),_c('AxArtboardUploads'),_c('AxPushNotificationsGlobal'),_c('AxPushNotificationsMentioned'),_c('AxPushNotificationsAllWorkspaces'),(_vm.isElectron)?_c('AxInstallingSketchPluginNotification'):_vm._e(),(_vm.isElectron)?_c('AxBadgeNotifications'):_vm._e()]},proxy:true},{key:\"footer\",fn:function(){return [_c('RouterView',{attrs:{\"name\":\"license\"}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"wrapper\",class:{'full-screen': _vm.isFullScreen}},[_c('header',[_vm._t(\"header\")],2),_c('div',{staticClass:\"main\"},[_vm._t(\"default\")],2),_c('footer',[_vm._t(\"footer\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport default Vue.extend({\r\n computed: {\r\n isFullScreen(): boolean {\r\n const { desktop } = this.$store.state as AxShare;\r\n return desktop.desktopParams.isFullScreen;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FixedHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FixedHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FixedHeader.vue?vue&type=template&id=05b33419&scoped=true&\"\nimport script from \"./FixedHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FixedHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FixedHeader.vue?vue&type=style&index=0&id=05b33419&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05b33419\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.started)?_c('AxArtboardUploadsProgress',{key:_vm.batch.id,attrs:{\"batch\":_vm.batch},on:{\"close\":function($event){return _vm.dismissBatch(_vm.batch.id)}}}):_vm._e(),_c('AxArtboardUploadsPicker'),(_vm.isElectron)?_c('AxArtboardUploadsDesktopTracker'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('Portal',{attrs:{\"to\":\"asset-uploader\"},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return _c('div',{staticClass:\"asset-uploader-section\",class:{ 'has-files': _vm.hasFiles },attrs:{\"tabindex\":\"-1\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return props.deactivate.apply(null, arguments)}}},[(props.showClose)?_c('div',{staticClass:\"asset-uploader-close\"},[_c('AxButton',{attrs:{\"color\":\"link\"},on:{\"click\":props.deactivate}},[_c('AxIcon',{attrs:{\"name\":\"add\",\"size\":\"auto\",\"rotate\":\"45deg\"}})],1)],1):_vm._e(),(_vm.disableUpload)?_c('p',{staticClass:\"text-danger text-center align-self-center mt-auto mb-auto\"},[_vm._v(\" \"+_vm._s(_vm.disableUploadMessage)+\" \")]):[_c('AxDropzone',{staticClass:\"asset-uploader-zone\",on:{\"drop\":_vm.addFiles}},[(!_vm.hasFiles)?_c('div',[_c('h5',{staticClass:\"text-muted\"},[_vm._v(\" Drop images here or \")]),_c('AxButton',{attrs:{\"color\":\"secondary\",\"medium\":\"\"},on:{\"click\":() => _vm.triggerBrowse(props.deactivate)}},[_vm._v(\" Choose File \")]),_c('p',{staticClass:\"asset-uploader-label asset-uploader-label-extensions\"},[_vm._v(\" .png, .jpg, .gif, .svg and more \")])],1):_c('div',{staticClass:\"ax-asset-items\"},_vm._l((_vm.queuedFiles),function(item){return _c('div',{key:item.id,staticClass:\"ax-asset-item row g-0\"},[_c('AxIcon',{staticClass:\"col-auto ax-asset-icon\",attrs:{\"name\":\"images\"}}),_c('span',{staticClass:\"ax-file-name col\"},[_vm._v(\" \"+_vm._s(item.name)+\" \")]),_c('AxButton',{staticClass:\"col-auto ax-asset-close\",attrs:{\"color\":\"link\",\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.removeFile(item)}}},[_c('AxIcon',{attrs:{\"name\":\"close\"}})],1)],1)}),0)]),(_vm.hasFiles)?[(_vm.shortcut)?_c('div',{staticClass:\"uploader-info-row\"},[_c('span',{staticClass:\"uploader-notes-title\"},[_vm._v(\" Publish Notes \")]),_c('AxPublishNotes',{key:_vm.activatedKey,attrs:{\"shortcut\":_vm.shortcut,\"user-id\":_vm.currentUserId,\"user-token\":_vm.currentUserToken,\"autofocus\":\"\"},model:{value:(_vm.publishNote),callback:function ($$v) {_vm.publishNote=$$v},expression:\"publishNote\"}})],1):_vm._e(),_c('div',{staticClass:\"uploader-info-row\"},[_c('div',{staticClass:\"row justify-content-end\"},[_c('div',{staticClass:\"col col-auto\"},[_c('AxButton',{staticClass:\"add-files-button h-100\",attrs:{\"color\":\"link\",\"large\":\"\",\"block\":\"\"},on:{\"click\":() => _vm.triggerBrowse(props.deactivate)}},[_vm._v(\" Add Files \")])],1),_c('div',{staticClass:\"col col-auto\"},[_c('AxButton',{staticClass:\"upload-files-button\",attrs:{\"block\":\"\",\"type\":\"submit\",\"color\":\"upload\",\"loading\":!!_vm.currentProject && _vm.isUploading(_vm.currentProject.id)},on:{\"click\":function($event){$event.preventDefault();return _vm.uploadAssets.apply(null, arguments)}}},[_vm._v(\" Upload \")])],1)])])]:_vm._e()]],2)}}])}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},_vm._l((_vm.projects),function(project){return _c('AssetUploader',{key:project.shortcut,ref:`assetUploader_${project.shortcut}`,refInFor:true,attrs:{\"project\":project,\"marked-upload-area\":\"\"},on:{\"files-added\":function($event){return _vm.filesAdded(project.id)}}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{on:{\"dragstart\":_vm.handleDragStart,\"dragend\":_vm.handleDragEnd,\"dragenter\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.handleDragEnter.apply(null, arguments)},\"dragover\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.handleDragOver.apply(null, arguments)},\"dragleave\":_vm.handleDragLeave,\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.handleDrop.apply(null, arguments)}}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n data() {\r\n return {\r\n dragging: false,\r\n };\r\n },\r\n\r\n methods: {\r\n handleDragStart(e: DragEvent) {\r\n this.$emit(\"drag-start\", e);\r\n },\r\n handleDragEnd(e: DragEvent) {\r\n this.dragging = false;\r\n this.$emit(\"drag-end\", e);\r\n },\r\n handleDragEnter(e: DragEvent) {\r\n this.dragging = true;\r\n this.$emit(\"drag-enter\", e);\r\n },\r\n handleDragOver(e: DragEvent) {\r\n this.dragging = true;\r\n let effect;\r\n if (e.dataTransfer) {\r\n try {\r\n // Handle browser bug\r\n effect = e.dataTransfer.effectAllowed;\r\n } catch (error) {\r\n // ignore\r\n }\r\n e.dataTransfer.dropEffect = effect === \"move\" || effect === \"linkMove\" ? \"move\" : \"copy\";\r\n }\r\n\r\n this.$emit(\"drag-over\", e);\r\n },\r\n handleDragLeave(e: DragEvent) {\r\n this.dragging = false;\r\n this.$emit(\"drag-leave\", e);\r\n },\r\n handleDrop(e: DragEvent) {\r\n this.dragging = false;\r\n if (!e.dataTransfer) {\r\n return;\r\n }\r\n const files = Array.from(e.dataTransfer.files);\r\n this.$emit(\"drop\", files, e);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDropzone.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxDropzone.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxDropzone.vue?vue&type=template&id=6bb3a26b&\"\nimport script from \"./AxDropzone.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxDropzone.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"asset-uploader\"},[(_vm.disableUpload)?_c('p',{staticClass:\"text-danger text-center align-self-center\"},[_vm._v(\" \"+_vm._s(_vm.disableUploadMessage)+\" \")]):_c('VueTransmit',_vm._b({ref:\"uploader\",class:_vm.vueTransmitClasses,on:{\"accepted-file\":_vm.acceptedFile,\"removed-file\":_vm.onFileRemoved,\"success\":_vm.successSingle,\"queue-complete\":_vm.queueComplete,\"error\":_vm.error,\"upload-progress\":_vm.uploadProgress}},'VueTransmit',_vm.options,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { resolveApiBaseUrl } from \"@/common/axshare/api\";\r\nimport { enterpriseLicenseCheckFailed } from \"@/common/axshare/messages\";\r\nimport { FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport { uuid } from \"@/common/lib\";\r\nimport { read } from \"@/common/lib/cookies\";\r\nimport { UploadAsset } from \"@/services/expo.service\";\r\nimport { ResponseObjectOf } from \"@/services/models/responseObject\";\r\nimport { ArtboardAdd } from \"@/store/expo/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport {\r\n NewUpload,\r\n AddToBatch,\r\n RemoveFromBatch,\r\n UpdateProgress,\r\n UploadSuccess,\r\n UploadError,\r\n UploadCancel,\r\n DismissUpload,\r\n} from \"@/store/uploads/mutationTypes\";\r\nimport { ArtboardUploadBatchSource } from \"@/store/uploads/state\";\r\n\r\nimport { prop } from \"@/components/utils\";\r\n\r\nconst VTransmitFileStatuses = {\r\n ADDED: \"added\",\r\n QUEUED: \"queued\",\r\n ACCEPTED: \"queued\",\r\n UPLOADING: \"uploading\",\r\n PROCESSING: \"uploading\",\r\n CANCELED: \"canceled\",\r\n ERROR: \"error\",\r\n TIMEOUT: \"timeout\",\r\n SUCCESS: \"success\",\r\n};\r\n\r\ninterface VTransmitFile {\r\n id: string;\r\n accepted: boolean;\r\n lastModified: number;\r\n lastModifiedDate: Date;\r\n name: string;\r\n processing: boolean;\r\n size: number;\r\n status: string;\r\n type: string;\r\n upload: IUploadStats;\r\n webkitRelativePath: string;\r\n width: number;\r\n height: number;\r\n xhr: XMLHttpRequest;\r\n errorMessage: string;\r\n thumbnailLoaded: boolean;\r\n nativeFile: File;\r\n dataUrl: string;\r\n _nativeFile: any;\r\n _dataUrl: any;\r\n}\r\n\r\ninterface IUploadStats {\r\n bytesSent: number;\r\n progress: number;\r\n total: number;\r\n speed: ISpeedStats;\r\n start: number;\r\n end: number;\r\n time: number;\r\n}\r\n\r\ninterface ISpeedStats {\r\n kbps: number;\r\n mbps: number;\r\n}\r\n\r\nexport default Vue.extend({\r\n props: {\r\n project: prop({\r\n required: true,\r\n }),\r\n\r\n markedUploadArea: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n const state = this.$store.state as AxShare;\r\n const { axShareConfig } = state as AxShare;\r\n\r\n const files: Record = {};\r\n const filesInProgress: Record = {};\r\n return {\r\n files,\r\n filesInProgress,\r\n batchId: \"\",\r\n options: {\r\n uploadAreaClasses: `asset-uploader-upload-area ${\r\n this.markedUploadArea ? \"asset-uploader-upload-area-marked\" : \"\"\r\n }`,\r\n acceptedFileTypes: [\"image/*\"],\r\n url: `${resolveApiBaseUrl(axShareConfig)}/expo/addartboard/${this.project.shortcut}`,\r\n withCredentials: true,\r\n autoProcessQueue: false,\r\n uploadMultiple: true,\r\n clickable: false,\r\n disabledDraggable: true,\r\n paramName: \"fileData\",\r\n maxFileSize: 5,\r\n maxConcurrentUploads: 20,\r\n params: {\r\n skipPublishNote: true,\r\n },\r\n },\r\n };\r\n },\r\n\r\n computed: {\r\n hasFiles(): boolean {\r\n return Object.keys(this.files).length > 0 || Object.keys(this.filesInProgress).length > 0;\r\n },\r\n\r\n vueTransmitClasses(): string[] {\r\n const classes = [\"asset-uploader-v-transmit\"];\r\n return classes;\r\n },\r\n\r\n disableUpload(): boolean {\r\n return this.$store.getters.enterpriseLicenseCheckFailed;\r\n },\r\n\r\n disableUploadMessage(): string {\r\n return enterpriseLicenseCheckFailed;\r\n },\r\n },\r\n\r\n methods: {\r\n triggerBrowse() {\r\n const uploader = this.$refs.uploader as any;\r\n if (uploader) {\r\n uploader.triggerBrowseFiles();\r\n }\r\n },\r\n\r\n addFile(file: File) {\r\n const uploader = this.$refs.uploader as any;\r\n if (uploader) {\r\n uploader.addFile(file);\r\n }\r\n },\r\n\r\n acceptedFile(file: VTransmitFile): void {\r\n const artboardId = uuid();\r\n Vue.set(this.files, artboardId, file);\r\n this.$emit(\"files-added\");\r\n\r\n if (!this.batchId || this.$store.getters.batchUploadCompletedOrDismissed(this.batchId)) {\r\n this.batchId = uuid();\r\n this.$store.commit(\r\n new NewUpload({\r\n batchId: this.batchId,\r\n shortcut: this.project.shortcut,\r\n projectName: this.project.name,\r\n source: ArtboardUploadBatchSource.Web,\r\n })\r\n );\r\n }\r\n\r\n const cancelUpload = () =>\r\n new Promise(resolve => {\r\n this.cancelUpload(file);\r\n this.$store.commit(\r\n new UploadCancel({\r\n shortcut: this.project.shortcut,\r\n batchId: this.batchId,\r\n artboardId,\r\n })\r\n );\r\n resolve();\r\n });\r\n\r\n this.$store.commit(\r\n new AddToBatch({\r\n shortcut: this.project.shortcut,\r\n batchId: this.batchId,\r\n artboardId,\r\n artboardName: file.nativeFile.name,\r\n cancel: cancelUpload,\r\n })\r\n );\r\n },\r\n\r\n uploadProgress(file: VTransmitFile, progress: number): void {\r\n const artboardId = this.getArtboardId(file);\r\n if (!artboardId) {\r\n console.warn(\"Upload In Progress not found.\");\r\n return;\r\n }\r\n this.$store.commit(\r\n new UpdateProgress({\r\n shortcut: this.project.shortcut,\r\n batchId: this.batchId,\r\n artboardId,\r\n progress,\r\n })\r\n );\r\n },\r\n\r\n cancelUpload(file: VTransmitFile): void {\r\n const uploader = this.$refs.uploader as any;\r\n if (uploader) {\r\n uploader.cancelUpload(file);\r\n }\r\n },\r\n\r\n removeFileById(id: string): boolean {\r\n const file = this.files[id];\r\n if (file) {\r\n return this.removeFile(file);\r\n }\r\n return false;\r\n },\r\n\r\n removeFile(file: VTransmitFile): boolean {\r\n const uploadId = this.getArtboardId(file);\r\n if (uploadId) {\r\n const uploader = this.$refs.uploader as any;\r\n if (uploader) {\r\n uploader.cancelUpload(file);\r\n }\r\n Vue.delete(this.files, uploadId);\r\n Vue.delete(this.filesInProgress, uploadId);\r\n this.$store.commit(new RemoveFromBatch(this.batchId, uploadId));\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n onFileRemoved(file: VTransmitFile): void {\r\n if (this.removeFile(file)) {\r\n if (!this.hasFiles) {\r\n this.$emit(\"files-removed\");\r\n }\r\n }\r\n },\r\n\r\n async successSingle(file: VTransmitFile, response: ResponseObjectOf, __: ProgressEvent) {\r\n const artboardId = this.getArtboardId(file);\r\n if (!response.success) {\r\n this.error(file, response.message);\r\n return;\r\n }\r\n\r\n if (!artboardId) {\r\n console.warn(\"Upload In Progress not found.\");\r\n return;\r\n }\r\n const uploadAssetData = response.data;\r\n for (let i = 0; i < uploadAssetData.urls.length; i++) {\r\n const artboard = uploadAssetData.artboards[i];\r\n const asset = uploadAssetData.assets[i];\r\n const url = uploadAssetData.urls[i];\r\n await this.$store.dispatch(new ArtboardAdd(this.project.shortcut, artboard, asset, url));\r\n this.$store.commit(\r\n new UploadSuccess({\r\n shortcut: this.project.shortcut,\r\n batchId: this.batchId,\r\n artboardId,\r\n serverArtboardId: artboard.Id,\r\n })\r\n );\r\n }\r\n },\r\n\r\n queueComplete() {\r\n this.$emit(\"queue-complete\");\r\n },\r\n\r\n error(file: VTransmitFile, message: string) {\r\n // eslint-disable-next-line no-param-reassign\r\n file.status = VTransmitFileStatuses.ERROR;\r\n // eslint-disable-next-line no-param-reassign\r\n file.errorMessage = `Unable to upload file ${file.name}: ${message}`;\r\n\r\n const artboardId = this.getArtboardId(file);\r\n if (artboardId) {\r\n this.$store.commit(\r\n new UploadError({\r\n shortcut: this.project.shortcut,\r\n batchId: this.batchId,\r\n artboardId,\r\n errorMessage: message,\r\n })\r\n );\r\n }\r\n },\r\n\r\n getArtboardId(file: VTransmitFile) {\r\n const queuedFiles = Object.entries(this.files);\r\n const filesInProgress = Object.entries(this.filesInProgress);\r\n const allFiles = [...queuedFiles, ...filesInProgress];\r\n const existingFile = allFiles.find(([_, v]) => v === file);\r\n if (existingFile) {\r\n return existingFile[0];\r\n }\r\n return undefined;\r\n },\r\n\r\n processFiles(): void {\r\n const uploader = this.$refs.uploader as any;\r\n if (!uploader) return;\r\n // mark all files as In-Progress and cleanup queued files\r\n this.filesInProgress = this.files;\r\n this.files = {};\r\n const filesInProgress = Object.values(this.filesInProgress);\r\n for (const file of filesInProgress) {\r\n this.uploadProgress(file, 0);\r\n }\r\n uploader.processFiles(filesInProgress);\r\n },\r\n\r\n clear() {\r\n this.files = {};\r\n if (this.batchId) this.$store.commit(new DismissUpload(this.batchId));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AssetUploader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AssetUploader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AssetUploader.vue?vue&type=template&id=c120b878&scoped=true&\"\nimport script from \"./AssetUploader.vue?vue&type=script&lang=ts&\"\nexport * from \"./AssetUploader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AssetUploader.vue?vue&type=style&index=0&id=c120b878&prod&lang=scss&\"\nimport style1 from \"./AssetUploader.vue?vue&type=style&index=1&id=c120b878&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c120b878\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { AnalyticsClickEvents, isSketchProject } from \"@/common/axshare\";\r\nimport { enterpriseLicenseCheckFailed } from \"@/common/axshare/messages\";\r\nimport { FilesystemNodeWithContents, FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport { orderBy, noop } from \"@/common/lib\";\r\nimport { RichText } from \"@/generated/models\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ArtboardUploadBatch } from \"@/store/uploads/state\";\r\n\r\nimport { createPublishNote } from \"../services/project.service\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDropzone from \"@/components/AxDropzone.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxPublishNotes from \"@/components/AxPublishNotes.vue\";\r\nimport AssetUploader from \"@/components/expo/AssetUploader.vue\";\r\n\r\ninterface IUploaderFile {\r\n id: string;\r\n name: string;\r\n}\r\n\r\ntype AssetUploader = Vue & {\r\n files: Record;\r\n batchId: string;\r\n triggerBrowse(): void;\r\n addFile(file: File): void;\r\n processFiles(): void;\r\n clear(): void;\r\n removeFile(file: IUploaderFile): boolean;\r\n removeFileById(id: string): boolean;\r\n};\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDropzone,\r\n AxIcon,\r\n AssetUploader,\r\n AxButton,\r\n AxPublishNotes,\r\n },\r\n\r\n data() {\r\n return {\r\n activatedKey: 0,\r\n close: noop,\r\n AnalyticsClickEvents,\r\n publishNote: undefined as RichText | undefined,\r\n uploading: {} as Record,\r\n };\r\n },\r\n\r\n computed: {\r\n disableUpload(): boolean {\r\n return this.$store.getters.enterpriseLicenseCheckFailed;\r\n },\r\n\r\n disableUploadMessage(): string {\r\n return enterpriseLicenseCheckFailed;\r\n },\r\n\r\n batches(): ArtboardUploadBatch[] {\r\n const { uploads } = this.$store.state as AxShare;\r\n return Object.values(uploads.batches).filter(Boolean) as ArtboardUploadBatch[];\r\n },\r\n\r\n batchesInProgress(): ArtboardUploadBatch[] {\r\n const batchesInProgress = this.$store.getters.batchesInProgress as ArtboardUploadBatch[];\r\n return batchesInProgress;\r\n },\r\n\r\n currentProject(): FilesystemNodeShortcut | undefined {\r\n const { node }: FilesystemNodeWithContents = this.$store.getters.current;\r\n if (isSketchProject(node)) {\r\n return node;\r\n }\r\n return undefined;\r\n },\r\n\r\n projects(): FilesystemNodeShortcut[] {\r\n const { batchesInProgress, currentProject } = this;\r\n\r\n const projects: FilesystemNodeShortcut[] = [];\r\n if (currentProject) {\r\n projects.push(currentProject);\r\n }\r\n\r\n for (const batch of batchesInProgress) {\r\n // skip batch for current project, as it's covered above\r\n if (currentProject && batch.shortcut === currentProject.shortcut) {\r\n continue;\r\n }\r\n const node = this.$store.getters.getFsNode(batch.shortcut);\r\n if (isSketchProject(node)) {\r\n projects.push(node);\r\n }\r\n }\r\n\r\n return projects;\r\n },\r\n\r\n queuedFiles(): IUploaderFile[] {\r\n const assetUploader = this.getAssetUploader();\r\n if (assetUploader) {\r\n const batchId = assetUploader.batchId;\r\n return this.$store.getters.batchNotStartedArtboards(batchId);\r\n }\r\n return [];\r\n },\r\n\r\n hasFiles(): boolean {\r\n return this.queuedFiles.length > 0;\r\n },\r\n\r\n currentUserId(): string {\r\n const { user } = this.$store.state as AxShare;\r\n if (user.userInfo) {\r\n return user.userInfo.userId;\r\n }\r\n return \"\";\r\n },\r\n\r\n currentUserToken(): string {\r\n const { accountService } = this.$store.state;\r\n if (accountService) {\r\n return accountService().AuthToken;\r\n }\r\n return \"\";\r\n },\r\n\r\n shortcut(): string | undefined {\r\n if (this.currentProject) return this.currentProject.shortcut;\r\n return undefined;\r\n },\r\n },\r\n\r\n activated() {\r\n const assetUploader = this.getAssetUploader();\r\n if (assetUploader && typeof assetUploader.clear === \"function\") {\r\n assetUploader.clear();\r\n }\r\n },\r\n\r\n methods: {\r\n getAssetUploader(): AssetUploader | undefined {\r\n if (this.currentProject) {\r\n const assetUploader: AssetUploader | undefined = this.$refs[\r\n `assetUploader_${this.currentProject.shortcut}`\r\n ] as any;\r\n if (Array.isArray(assetUploader)) {\r\n return assetUploader[0];\r\n }\r\n }\r\n return undefined;\r\n },\r\n\r\n triggerBrowse(close?: () => void) {\r\n if (this.currentProject) {\r\n if (close) {\r\n this.close = close;\r\n }\r\n const assetUploader = this.getAssetUploader();\r\n if (assetUploader && typeof assetUploader.triggerBrowse === \"function\") {\r\n assetUploader.triggerBrowse();\r\n }\r\n }\r\n },\r\n\r\n addFiles(files: File[]) {\r\n const assetUploader = this.getAssetUploader();\r\n if (assetUploader && typeof assetUploader.addFile === \"function\") {\r\n orderBy(files, file => file.name).map(assetUploader.addFile);\r\n }\r\n },\r\n\r\n async uploadAssets() {\r\n if (!this.currentProject) {\r\n return;\r\n }\r\n const projectId = this.currentProject.id;\r\n try {\r\n Vue.set(this.uploading, projectId, true);\r\n await this.$nextTick();\r\n const assetUploader = this.getAssetUploader();\r\n if (assetUploader && typeof assetUploader.processFiles === \"function\") {\r\n await createPublishNote(projectId, this.publishNote ? JSON.stringify(this.publishNote) : \"\");\r\n this.publishNote = undefined;\r\n this.activatedKey++;\r\n\r\n assetUploader.processFiles();\r\n }\r\n if (this.close) {\r\n this.close();\r\n }\r\n } finally {\r\n Vue.set(this.uploading, projectId, false);\r\n }\r\n },\r\n\r\n removeFile(file: IUploaderFile) {\r\n const assetUploader = this.getAssetUploader();\r\n if (assetUploader && typeof assetUploader.removeFileById === \"function\") {\r\n assetUploader.removeFileById(file.id);\r\n }\r\n },\r\n\r\n filesAdded(id: string) {\r\n Vue.set(this.uploading, id, false);\r\n },\r\n\r\n isUploading(id: string) {\r\n return !!this.uploading[id];\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploadsPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploadsPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxArtboardUploadsPicker.vue?vue&type=template&id=5cb03464&\"\nimport script from \"./AxArtboardUploadsPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxArtboardUploadsPicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxArtboardUploadsPicker.vue?vue&type=style&index=0&id=5cb03464&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxPageNotification',{model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('div',{staticClass:\"ax-artboard-uploads\",attrs:{\"tabindex\":\"-1\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.close.apply(null, arguments)}}},[_c('div',{staticClass:\"ax-artboard-uploads-header\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col truncate-ellipsis\"},[_c('p',{staticClass:\"fw-semibold mb-4 truncate-ellipsis\"},[_c('Transition',{attrs:{\"name\":\"fade-fast\",\"mode\":\"out-in\"}},[(!_vm.complete)?_c('span',{key:\"in-progress\"},[_vm._v(\" Uploading Files \"+_vm._s(_vm.projectName)+\" \")]):_c('span',{key:\"complete\"},[_vm._v(\" Upload \"+_vm._s(_vm.projectName)+\" Complete \")])])],1)]),_c('div',{staticClass:\"col-auto\"},[_c('AxButton',{attrs:{\"color\":\"link\"},on:{\"click\":_vm.close}},[_c('AxIcon',{attrs:{\"name\":\"add\",\"rotate\":\"45deg\"}})],1)],1)])]),_c('div',{staticClass:\"ax-artboard-uploads-body mb-2\"},_vm._l((_vm.uploadItems),function(item){return _c('AxArtboardUploadsItem',{key:item.id,attrs:{\"item\":item}})}),1),_c('div',{staticClass:\"ax-artboard-uploads-footer\"},[_c('AxButton',{attrs:{\"to\":_vm.toProjectOverview,\"color\":\"primary\",\"block\":\"\",\"large\":\"\",\"blur-on-click\":\"\"}},[_vm._v(\" Go To Overview \")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hidden),expression:\"!hidden\"}],staticClass:\"row ax-artboards-upload-item\"},[_c('div',{staticClass:\"col\"},[_c(_vm.component,{tag:\"Component\",staticClass:\"no-border w-100 ax-artboards-upload-item__link\",attrs:{\"to\":_vm.linkToArtboardInspect,\"color\":\"link\"}},[_c('div',{staticClass:\"row g-0 align-items-center\"},[_c('div',{staticClass:\"col truncate-ellipsis\"},[_vm._v(\" \"+_vm._s(_vm.name)+\" \")]),_c('div',{staticClass:\"col-auto ms-3 text-end\"},[(_vm.exporting)?_c('div',[_vm._v(\" Exporting \"),(_vm.cancellable)?_c('AxButton',{staticClass:\"no-border\",attrs:{\"color\":\"link\",\"title\":\"Cancel\",\"disable\":_vm.canceled},on:{\"click\":_vm.cancelUpload}},[_c('AxIcon',{staticClass:\"ms-2\",attrs:{\"name\":\"uploading-cancel\"}})],1):_vm._e()],1):(_vm.cancellable)?_c('div',[_c('AxButton',{staticClass:\"no-border\",attrs:{\"color\":\"link\",\"title\":\"Cancel\",\"disable\":_vm.canceled},on:{\"click\":_vm.cancelUpload}},[_c('AxIcon',{staticClass:\"ms-2\",attrs:{\"name\":\"uploading-cancel\"}})],1)],1):(_vm.processing)?_c('div',[_c('span',[_vm._v(\" Processing \"),_c('AxIcon',{staticClass:\"ms-2 text-muted\",attrs:{\"name\":\"uploading-cancel\"}})],1)]):(_vm.error)?_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\" Failed \")]),_c('AxButton',{staticClass:\"text-danger no-border\",attrs:{\"color\":\"link\",\"title\":\"Remove\"},on:{\"click\":_vm.removeUpload}},[_c('AxIcon',{staticClass:\"ms-2\",attrs:{\"name\":\"uploading-cancel\"}})],1)],1):(_vm.success)?_c('div',[_c('span',[_vm._v(\" Complete \"),_c('AxIcon',{staticClass:\"ms-2\",attrs:{\"name\":\"uploading-completed\"}})],1)]):_vm._e()])]),_c('div',{staticClass:\"row g-0\"},[_c('AxProgressBar',_vm._b({staticClass:\"artboard-upload-progress-bar\"},'AxProgressBar',_vm.progressBarOptions,false))],1)])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { ROUTES } from \"@/router\";\r\nimport { ArtboardUploadStatus, ArtboardUploadInfo } from \"@/store/uploads/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxProgressBar from \"@/components/AxProgressBar.vue\";\r\nimport { prop } from \"@/components/utils\";\r\n\r\nconst itemProp = prop({\r\n required: true,\r\n});\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxIcon,\r\n AxProgressBar,\r\n },\r\n\r\n props: {\r\n item: itemProp,\r\n },\r\n\r\n data() {\r\n return {\r\n removed: false,\r\n };\r\n },\r\n\r\n computed: {\r\n hidden(): boolean {\r\n return this.canceled || this.removed;\r\n },\r\n\r\n progressBarOptions(): any {\r\n const options: Record = {\r\n height: \"3px\",\r\n indeterminate: this.indeterminate,\r\n progress: this.item.progress || 0,\r\n };\r\n if (this.item.status === ArtboardUploadStatus.Error) {\r\n options.spinnerColor = \"#f90078\";\r\n options.progress = 100;\r\n }\r\n return options;\r\n },\r\n\r\n name(): string {\r\n return this.item.name;\r\n },\r\n\r\n exporting(): boolean {\r\n return this.item.status === ArtboardUploadStatus.Exporting;\r\n },\r\n\r\n inProgress(): boolean {\r\n const status = this.item.status;\r\n return status === ArtboardUploadStatus.Exporting || status === ArtboardUploadStatus.InProgress;\r\n },\r\n\r\n success(): boolean {\r\n return this.item.status === ArtboardUploadStatus.Success;\r\n },\r\n\r\n error(): boolean {\r\n return this.item.status === ArtboardUploadStatus.Error;\r\n },\r\n\r\n canceled(): boolean {\r\n return this.item.status === ArtboardUploadStatus.Canceled;\r\n },\r\n\r\n completed(): boolean {\r\n return this.success || this.error;\r\n },\r\n\r\n processing(): boolean {\r\n return this.inProgress && this.item.progress === 100;\r\n },\r\n\r\n indeterminate(): boolean {\r\n return this.inProgress && (this.item.progress === 0 || this.item.progress === 100);\r\n },\r\n\r\n cancellable(): boolean {\r\n return !this.canceled && this.inProgress && this.item.progress < 100 && this.item.cancel !== undefined;\r\n },\r\n\r\n errorMessage(): string | undefined {\r\n return this.item.errorMessage;\r\n },\r\n\r\n linkToArtboardInspect(): Location | undefined {\r\n if (!this.item.serverArtboardId) return undefined;\r\n\r\n return {\r\n name: ROUTES[\"expo.inspect\"].name,\r\n params: {\r\n shortcut: this.item.shortcut,\r\n screen: this.item.serverArtboardId,\r\n },\r\n };\r\n },\r\n\r\n component(): string {\r\n return this.success && this.linkToArtboardInspect ? \"AxButton\" : \"div\";\r\n },\r\n },\r\n\r\n methods: {\r\n removeUpload() {\r\n this.removed = true;\r\n },\r\n\r\n async cancelUpload() {\r\n if (this.item.cancel) {\r\n await this.item.cancel();\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploadsItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploadsItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxArtboardUploadsItem.vue?vue&type=template&id=00ffabf7&scoped=true&\"\nimport script from \"./AxArtboardUploadsItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxArtboardUploadsItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxArtboardUploadsItem.vue?vue&type=style&index=0&id=00ffabf7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00ffabf7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.value)?_c('div',{staticClass:\"ax-page-notification\"},[_vm._t(\"default\")],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPageNotification.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPageNotification.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPageNotification.vue?vue&type=template&id=55204a04&scoped=true&\"\nimport script from \"./AxPageNotification.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPageNotification.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxPageNotification.vue?vue&type=style&index=0&id=55204a04&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55204a04\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { ROUTES } from \"@/router\";\r\nimport { ArtboardUploadInfo, ArtboardUploadBatch } from \"@/store/uploads/state\";\r\n\r\nimport { prop } from \"./utils\";\r\n\r\nimport AxArtboardUploadsItem from \"@/components/AxArtboardUploadsItem.vue\";\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxPageNotification from \"@/components/AxPageNotification.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxArtboardUploadsItem,\r\n AxButton,\r\n AxIcon,\r\n AxPageNotification,\r\n },\r\n\r\n props: {\r\n batch: prop({\r\n required: true,\r\n }),\r\n },\r\n\r\n data() {\r\n return {\r\n show: true,\r\n };\r\n },\r\n\r\n computed: {\r\n projectName(): string {\r\n if (this.batch && this.batch.projectName) {\r\n return `to \"${this.batch.projectName}\"`;\r\n }\r\n return \"\";\r\n },\r\n\r\n uploadItems(): Record {\r\n if (!this.batch) return {};\r\n return this.batch.contents;\r\n },\r\n\r\n toProjectOverview(): Location | undefined {\r\n if (!this.batch) return undefined;\r\n return { name: ROUTES[\"project.overview\"].name, params: { shortcut: this.batch.shortcut } };\r\n },\r\n\r\n complete(): boolean {\r\n if (this.batch) {\r\n return this.$store.getters.batchIsCompleted(this.batch.id);\r\n }\r\n return false;\r\n },\r\n },\r\n\r\n methods: {\r\n close() {\r\n this.$emit(\"close\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploadsProgress.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploadsProgress.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxArtboardUploadsProgress.vue?vue&type=template&id=e462bba2&scoped=true&\"\nimport script from \"./AxArtboardUploadsProgress.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxArtboardUploadsProgress.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxArtboardUploadsProgress.vue?vue&type=style&index=0&id=e462bba2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e462bba2\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { orderByDescending } from \"@/common/lib\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { DismissUpload } from \"@/store/uploads/mutationTypes\";\r\nimport { ArtboardUploadBatch, ArtboardUploadStatus } from \"@/store/uploads/state\";\r\n\r\nimport AxArtboardUploadsPicker from \"@/components/AxArtboardUploadsPicker.vue\";\r\nimport AxArtboardUploadsProgress from \"@/components/AxArtboardUploadsProgress.vue\";\r\n\r\nconst AxArtboardUploadsDesktopTracker = () => import(\"@/components/AxArtboardUploadsDesktopTracker.vue\");\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxArtboardUploadsDesktopTracker,\r\n AxArtboardUploadsPicker,\r\n AxArtboardUploadsProgress,\r\n },\r\n\r\n data() {\r\n return {\r\n isElectron,\r\n };\r\n },\r\n\r\n computed: {\r\n batch(): ArtboardUploadBatch | undefined {\r\n const { uploads } = this.$store.state as AxShare;\r\n const batches = Object.values(uploads.batches).filter(\r\n batch => batch && !batch.dismissed\r\n ) as ArtboardUploadBatch[];\r\n const lastBatch = orderByDescending(batches, batch => batch.created)[0];\r\n return lastBatch;\r\n },\r\n started(): boolean {\r\n if (this.batch) {\r\n const contents = Object.values(this.batch.contents);\r\n for (const item of contents) {\r\n if (item.status !== ArtboardUploadStatus.NotStarted) return true;\r\n }\r\n }\r\n return false;\r\n },\r\n },\r\n\r\n methods: {\r\n dismissBatch(id: string) {\r\n this.$store.commit(new DismissUpload(id));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploads.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxArtboardUploads.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxArtboardUploads.vue?vue&type=template&id=6d08b366&\"\nimport script from \"./AxArtboardUploads.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxArtboardUploads.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Transition',{attrs:{\"name\":\"heading-slide-up\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.minimized),expression:\"!minimized\"}],staticClass:\"ax-heading align-items-stretch\",class:{ 'desktop-app-drag': !_vm.isFullScreen }},[_c('div',{staticClass:\"container-fluid d-flex align-items-stretch\"},[_c('div',{staticClass:\"heading-container\"},[_c('div',{staticClass:\"spread logo-and-navigation\"},[_c('div',{staticClass:\"row flex-grow-1 flex-shrink-1\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"d-flex h-100 flex-column justify-content-around position-relative\"},[(!_vm.isElectron)?_c('AxHeadingLogo',{staticClass:\"heading-logo\"}):_vm._e()],1)])])]),_c('div',{staticClass:\"search\"},[_c('AxHeaderSearch')],1),_c('div',{staticClass:\"spread\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('RouterView',{attrs:{\"name\":\"headingControls\"}}),_c('div',{staticClass:\"ax-heading__end\"},[_c('AxAccountMenu',{attrs:{\"link-classes\":\"header-link desktop-app-no-drag\"}})],1)],1)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.loaded)?_c('div',[_c('AxDropdownButton',{staticClass:\"account-menu-list desktop-app-no-drag\",attrs:{\"arrow\":\"\",\"color\":\"link\",\"content-class\":\"account-menu-list-content\",\"drop-max-height\":true,\"distance\":10},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',{class:_vm.AnalyticsClickEvents.UserProfile.eventClass},[_c('AxUser',{attrs:{\"username-classes\":_vm.linkClasses,\"user\":_vm.userInfo,\"profile\":_vm.userProfile,\"show-notification-badge\":_vm.notifyAboutNewVersion,\"show-username\":false},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('AxIcon',{staticClass:\"icon-caret\",attrs:{\"name\":\"caret\"}})]},proxy:true}],null,false,2301379065)})],1)]},proxy:true}],null,false,752963218)},[_c('AxList',{staticClass:\"desktop-app-no-drag\"},[_c('AxListItemStatic',{staticClass:\"ax-account-menu__username\",attrs:{\"divider-bottom\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.userName)+\" \")]),(_vm.isSubInstanceAdmin || _vm.isSubInstanceTechnicalAdmin)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\",\"to\":_vm.adminSettingsRoute}},[_vm._v(\" Admin Settings \")])],1):_vm._e(),_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\",\"to\":_vm.notificationsRoute}},[_vm._v(\" Notifications \")])],1),_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\",\"to\":_vm.manageAccountRoute}},[_vm._v(\" Manage Account \")])],1),_c('AxListItem',[(_vm.allowWorkspacesMigrate)?_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.beginMigration}},[_vm._v(\" Import Workspaces \")]):_vm._e()],1),_c('AxListItem',{staticClass:\"item-with-notification\",attrs:{\"divider-top\":\"\"}},[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.openWhatsNewDialog}},[_vm._v(\" What’s New \")]),(_vm.notifyAboutNewVersion)?_c('AxIcon',{staticClass:\"notification-badge\",attrs:{\"name\":\"dot\"}}):_vm._e()],1),(_vm.productHelpUrl)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\",\"target\":\"_blank\",\"rel\":\"noopener\",\"href\":_vm.productHelpUrl}},[_vm._v(\" Help \")])],1):_vm._e(),(_vm.feedbackUrl)?_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\",\"target\":\"_blank\",\"rel\":\"noopener\",\"href\":_vm.feedbackUrl}},[_vm._v(\" Provide Feedback \")])],1):_vm._e(),_c('AxListItem',[_c('AxButton',{attrs:{\"medium\":\"\",\"color\":\"link\"},on:{\"click\":_vm.logout}},[_vm._v(\" Sign Out \")])],1),(_vm.showVersion)?_c('AxListItemStatic',[_c('div',{staticClass:\"ax-version-info\"},[_vm._v(\" Version (\"+_vm._s(_vm.version)+\") \")])]):_vm._e()],1)],1),(_vm.whatsNewDialog)?_c('AxWhatsNewDialog',{on:{\"cancel\":_vm.closeWhatsNewDialog}}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { compare } from \"compare-versions\";\r\nimport { add } from \"date-fns\";\r\n\r\nimport { persistentStorage } from \"@/common/axshare/persistent\";\r\n\r\nexport class VersionCheck {\r\n private clientVersion?: string;\r\n private acknowledgedAt?: number;\r\n\r\n constructor(\r\n private readonly serverVersion: string,\r\n private readonly serverReleaseDate: Date,\r\n private readonly outdatedAfter: Duration,\r\n ) {\r\n let storedVersion = persistentStorage.getLastVersion();\r\n\r\n if (storedVersion && !storedVersion.version) {\r\n // in previous implementation clientVersion could be empty,\r\n // so we keep backwards compatibility by setting it to server version and reloading state\r\n this.clientVersion = serverVersion;\r\n this.sync();\r\n storedVersion = persistentStorage.getLastVersion();\r\n }\r\n\r\n if (storedVersion) {\r\n this.clientVersion = storedVersion.version;\r\n if (compare(serverVersion, this.clientVersion, \">\")) {\r\n this.acknowledgedAt = undefined;\r\n this.sync();\r\n } else if (compare(serverVersion, this.clientVersion, \"<\")) {\r\n // version rollback occurred - rollback client version and set it as acknowledged\r\n this.acknowledgedAt = Date.now();\r\n this.sync();\r\n } else {\r\n this.acknowledgedAt = storedVersion.acknowledgedAt;\r\n this.serverReleaseDate = new Date(storedVersion.releaseDate);\r\n }\r\n } else {\r\n this.sync();\r\n }\r\n }\r\n\r\n private hasNewVersion(): boolean {\r\n return !this.clientVersion || compare(this.serverVersion, this.clientVersion, \">\");\r\n }\r\n\r\n private sync() {\r\n persistentStorage.setLastVersion({\r\n version: this.serverVersion,\r\n releaseDate: this.serverReleaseDate.getTime(),\r\n acknowledgedAt: this.acknowledgedAt,\r\n });\r\n }\r\n\r\n public notifyAboutNewVersion(now: Date): boolean {\r\n if (!this.hasNewVersion()) {\r\n if (this.acknowledgedAt) {\r\n return false;\r\n }\r\n }\r\n\r\n const serverReleased = new Date(this.serverReleaseDate);\r\n const outdatedDate = add(serverReleased, this.outdatedAfter);\r\n return outdatedDate > new Date(now);\r\n }\r\n\r\n public acknowledge(): void {\r\n this.clientVersion = this.serverVersion;\r\n this.acknowledgedAt = Date.now();\r\n this.sync();\r\n }\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{staticClass:\"ax-list-item-static\",class:{\n 'ax-list-item--divider-top': _vm.dividerTop,\n 'ax-list-item--divider-bottom': _vm.dividerBottom,\n }},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n dividerTop: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dividerBottom: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxListItemStatic.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxListItemStatic.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxListItemStatic.vue?vue&type=template&id=6f9137b8&scoped=true&\"\nimport script from \"./AxListItemStatic.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxListItemStatic.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxListItemStatic.vue?vue&type=style&index=0&id=6f9137b8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f9137b8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxDialog',{attrs:{\"content-class\":\"ax-whats-new-dialog__content\"},on:{\"toggle\":_vm.cancel},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('div',{staticClass:\"form-title\"},[_vm._v(\" What's new in Axure Cloud \")]),(_vm.isOnPrem)?_c('AxReleaseHistory'):_c('iframe',{attrs:{\"src\":\"https://www.axure.com/release-history/axure-cloud?embedto=app\",\"width\":\"100%\",\"height\":\"600px\",\"frameborder\":\"0\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"release-history\"},_vm._l((_vm.releases),function(release,index){return _c('div',{key:index},[(release.isSupertitle)?_c('h2',{domProps:{\"innerHTML\":_vm._s(release.title)}}):(release.isSubtitle)?_c('h4',{domProps:{\"innerHTML\":_vm._s(release.title)}}):_c('h3',{domProps:{\"innerHTML\":_vm._s(release.title)}}),(release.date)?_c('p',[_c('em',[_vm._v(\" \"+_vm._s(release.date))])]):_vm._e(),(release.points && release.points.length)?_c('ul',_vm._l((release.points),function(point){return _c('li',{key:point,domProps:{\"innerHTML\":_vm._s(point)}})}),0):_vm._e()])}),0)\n}]\n\nexport { render, staticRenderFns }","\r\n/* eslint-disable max-len */\r\nimport Vue from \"vue\";\r\n\r\ninterface Release {\r\n title: string;\r\n isSubtitle?: true;\r\n isSupertitle?: true,\r\n date?: string;\r\n points?: string[];\r\n}\r\n\r\nconst releases: Release[] = [\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.422\",\r\n date: \"December 1, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from November 29, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"November 29, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Implemented searchable list in dialogs when moving prototypes or when adding/muting notifications\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed daily notification emails not sending with own publish/comment activity\",\r\n \"Fixed member prototype link opening without current configuration\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Cleaned up emails when new instance/user is created and when migrating workspaces\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.421\",\r\n date: \"November 14, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from November 9, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Removed legacy notifications from On Premises setups\",\r\n \"Updated RP10 generator to 3887\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"November 9, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Updated Jira/Confluence integration to work with prototypes containing pretty URL settings\",\r\n \"Updated UX of Jira/Confluence integration\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed Microsoft Teams notifications not appearing if comments contained special characters\",\r\n \"Removed legacy notifications from Axure Cloud\",\r\n \"Further improvements for notification infrastructure\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.420\",\r\n date: \"October 31, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from October 26, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Updated RP10 generator to 3886\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"October 26, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Refreshed UI\",\r\n \"Search bar now persists across all pages\",\r\n \"Axure logo now redirects to Recents\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Improved notification timezone infrastructure\",\r\n \"Workspace members can now access member links in Axure Cloud via Jira/Confluence when an embedded prototype is made private\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.419\",\r\n date: \"October 21, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from October 12, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"October 12, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Disabled project URLs now redirect to member links\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Enabling team project link from Axure RP will update share dialog upon opening\",\r\n \"Infrastructure improvements\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.418\",\r\n date: \"September 26, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from September 22, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"September 22, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Comment filter popup will stay open after selecting filter options\",\r\n \"Updates to Create New Project screens\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed issue with clicking plugin button in the Chrome browser\",\r\n \"Fixed issue with Pretty URLs settings not working\",\r\n \"Security improvements\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.417\",\r\n date: \"September 9, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from September 6, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"September 6, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"The Project History page will show timestamps in full date and time format\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed comments being marked as unread after moving projects between workspaces\",\r\n \"Fixed issue with downloading assets from Inspect\",\r\n \"Increased font size in comments filter popup\",\r\n \"Removed the Post button while editing a comment\",\r\n \"Better handling of loading the Axure Handwriting Font when the page is set to Low Fidelity mode\",\r\n \"Improved performance when working with Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.416\",\r\n date: \"August 25, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from August 23, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"August 23, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Updated color scheme of Axure Cloud project icons to match Axure RP's file icons\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Improved performance when working in Axure Cloud\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.416\",\r\n date: \"August 25, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from August 23, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"August 23, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Updated color scheme of Axure Cloud project icons to match Axure RP's file icons\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Improved performance when working in Axure Cloud\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.415\",\r\n date: \"August 16, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from August 9, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Updated RP10 generator to 3882\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"August 9, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Renaming a project no longer changes its date modified\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed issue where comment dialog wouldn’t appear when moving it to the edge of the screen\",\r\n \"Security improvements\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.414\",\r\n date: \"July 26, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Incorporates changes from July 19, 2022 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed issue where generating a project with 0 pages selected would show an error in the public link\",\r\n \"Updated RP10 generator to 3879\",\r\n \"Updated RP9 generator to 3781\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update\",\r\n date: \"July 19, 2022\",\r\n },\r\n {\r\n title: \"Feature Updates\",\r\n isSubtitle: true,\r\n points: [\r\n \"Projects now automatically refresh when generation is finished\",\r\n \"Updated project generation page with new UI\",\r\n \"Updated Access Code page with new UI\",\r\n ],\r\n },\r\n {\r\n title: \"Bug Fixes & Performance Enhancements\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed issue where phishing banner links were not clickable on iOS devices\",\r\n \"Fixed issue with comment dialog appearing behind the comment pane\",\r\n \"Fixed issue with comment placement after resizing browser window\",\r\n \"Fixed issue with artboards appearing too large when exported from Adobe XD or Sketch\",\r\n \"Fixed issue with Inspect reporting incorrect font weights when widgets had overwritten styles for fonts\",\r\n \"Project generation should no longer fail when an RP 10 team project only contains empty folders\",\r\n \"Improved Recents workspace to only show projects within 60 days\",\r\n \"Security Improvements\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.413\",\r\n date: \"June 23, 2022\",\r\n points: [\r\n \"Incorporates changes from June 21, 2022 update to Axure Cloud\",\r\n \"Updated RP9 generator to 3780\",\r\n \"Updated RP10 generator to 3876\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: June 21, 2022\",\r\n points: [\r\n \"New ability to filter comments by unread, resolved, or comment color pin for RP 9 and RP 10 prototypes\",\r\n \"New ability to scroll while commenting on artboard projects\",\r\n \"Artboard projects now match the UI of the RP prototype player\",\r\n \"Fixed issue where scrolling within the comment would scroll the entire prototype\",\r\n \"Fixed issue where shadow properties were not appearing in Inspect for dynamic panels\",\r\n 'Fixed issue where clicking the \"@\" icon or emoji icon in the comment reply dialog would focus back on the text area',\r\n \"Fixed bug with taking snapshots in comments\",\r\n \"Optimization improvements\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.412\",\r\n date: \"May 31, 2022\",\r\n points: [\r\n \"Incorporates changes from May 25, 2022 update to Axure Cloud\",\r\n \"Fixed issue with generating projects containing a snapshot widget referencing a page with an SVG\",\r\n \"Updated RP10 generator to 3873\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: May 25, 2022\",\r\n points: [\r\n \"New commenting improvements for RP projects\",\r\n \"Updated text on project overview page to reflect the number of widgets in widget libraries\",\r\n \"Fixed issue with loading notification badges on public Cloud links\",\r\n \"Fixed issue with loading Cloud accounts containing a [space] at the end of the email\",\r\n \"Security improvements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Added endpoint for improved verification of Enterprise licenses\",\r\n ],\r\n },\r\n\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.411\",\r\n date: \"April 27, 2022\",\r\n points: [\r\n \"Incorporates changes from April 20, 2022 update to Axure Cloud\",\r\n \"Updated RP10 generator to 3870\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: April 20, 2022\",\r\n points: [\r\n \"Updated and refreshed UI style applied to the prototype player matching the latest RP 10 build\",\r\n 'New \"Share\" functionality in the prototype player allowing you to easily share prototypes links with others while still viewing the prototype',\r\n \"You can now mark comments as unread, making it easier to manage your comment workflows\",\r\n \"Added ability to copy links to individual comments, great for directing team members to a specific location on the prototype\",\r\n \"Publish dialogs now contain more concise Cloud URLs\",\r\n \"New hotkey - pressing [Esc] while adding a comment will allow you to quickly exit comment mode\",\r\n \"Added ability to downgrade RP 10 team projects back to RP 8 team projects in support of some new RP workflows\",\r\n \"Improved workflow when requesting to join a workspace\",\r\n \"Fixed issue with loading artboards in new browser tab/window\",\r\n \"Fixed issue with loading History tab for heavy projects\",\r\n 'Fixed issue where the \"Invite\" button in project overview was visible for reviewers in workspaces',\r\n \"Fixed issue with reopening pages panel for RP 8 projects\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n 'Fixed issue where \"Technical Admins\" could downgrade \"Super Admins\" to a lower access level',\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.409\",\r\n date: \"March 8, 2022\",\r\n points: [\r\n \"Incorporates changes from March 3, 2022 update to Axure Cloud\",\r\n \"Updated RP10 generator to 3860\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: March 3, 2022\",\r\n points: [\r\n \"Implemented additional caching to improve prototype performance\",\r\n \"Fixed issue with general lag around deleting plugins, guest subscriptions, and workspaces\",\r\n \"Fixed comment counts not appearing correctly on workspaces with folders containing projects with 0 comments\",\r\n \"Fixed issue with alignment when deleting access codes on RP8- projects\",\r\n \"Security improvements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed issue where instance can get into a state without a Super Admin\",\r\n \"Fixed issue with alignment on saving SAML settings\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.408\",\r\n date: \"February 7, 2022\",\r\n points: [\r\n \"Incorporates changes from sunsetting legacy Axure Share on November 30, 2021\",\r\n \"Incorporates changes from January 11, 2022 updates to Axure Cloud\",\r\n \"Fixed issue with widget notes in dynamic panels appearing out of alignment\",\r\n \"Updated RP9 generator to 3757 and RP10 generator to 3857\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: January 11, 2022\",\r\n points: [\r\n \"Improved upon the prototype sharing experience for public and member links. These improvements make it easier to customize the initial viewing experience for your stakeholders when clicking on the share link\",\r\n \"Fixed issue with pretty URLs redirecting to the default page when an Access Code is applied\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.407\",\r\n date: \"November 17, 2021\",\r\n points: [\r\n \"Incorporates changes from November 10, 2021 update to Axure Cloud\",\r\n \"Updated RP10 generator to 3851\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: November 10, 2021\",\r\n points: [\r\n \"Email notifications will now reflect your current time zone; this has been implemented for both regular as well as guest accounts\",\r\n \"You can now manually adjust your Cloud account's time zone via the Notification Center page\",\r\n \"Prototype share link URLs can now be copied directly from the project overview page\",\r\n \"Updates to the device list for artboard projects\",\r\n \"Fixed an issue with blank pages for locally downloaded projects in the mobile app\",\r\n \"Fixed an issue downloading projects locally on the mobile app when only some pages were set to generate\",\r\n \"Fixed an issue with Cloudfront URLs replacing image extensions in certain file setups\",\r\n \"Fixed Polish characters rending incorrectly when using Open Sans font\",\r\n \"Fixed font styles rending incorrectly between different adaptive views\",\r\n \"Fixed generation error when no pages were set to generate\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n 'Added \"Limit Access\" option when creating a new workspace',\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.406\",\r\n date: \"September 29, 2021\",\r\n points: [\r\n \"Incorporates changes from September 23, 2021 update to Axure Cloud\",\r\n \"Fixed issue with Chinese characters rendering incorrectly on publish\",\r\n \"Fixed issue with workspace not loading due to high comment count\",\r\n \"Updated RP10 generator to 3844\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: September 23, 2021\",\r\n points: [\r\n 'Pretty URLs and Redirect functionality is now supported for RP projects in Axure Cloud under the \"Advanced\" tab',\r\n \"Added ability to view prototype Access Codes\",\r\n \"Inspect now surfaces padding properties and image file types\",\r\n \"Fixed issue with maintaining image file types from projects created in Axure RP\",\r\n \"Fixed issue with border properties in Inspect\",\r\n \"Fixed issue with component changes missing in Team Project history for RP 10 projects\",\r\n \"Fixed issue with border highlight when renaming a workspace in Firefox and Safari \",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n 'Prototype Passwords are now referred to as \"Access Codes\"',\r\n \"Added ability to easily change the Super Admin of your instance\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.405\",\r\n date: \"August 24, 2021\",\r\n points: [\r\n \"Incorporated changes from August 18, 2021 update to Axure Cloud\",\r\n \"Updated RP10 generator to 3838\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: August 18, 2021\",\r\n points: [\r\n \"You can now download multiples images at once while inspecting\",\r\n \"Fixed pinning comments for large prototypes\",\r\n \"Fixed pinning comments when zooming in/out with custom device settings\",\r\n \"Fixed invitation icon placement in workspace list\",\r\n \"Fixed plugin placement with multiple pages or long page names\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Improved Cloud license setup and management\",\r\n \"Fixed total comment count to include unread @mentions\",\r\n \"Enhanced Axure Cloud security\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.404\",\r\n date: \"July 14, 2021\",\r\n points: [\r\n \"Incorporated changes from July 12, 2021 update to Axure Cloud\",\r\n \"Removed customsettings.readme file for manual installs of OnPrem\",\r\n \"Updated RP10 Generator to 3830\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: July 12, 2021\",\r\n points: [\r\n \"Improved formatting and organization of Team Project commit notes\",\r\n \"Updated @mention styling\",\r\n \"Improved organization and readability of comment metadata within the comment panel\",\r\n \"New crisp RP projects icons\",\r\n \"Improved product security\",\r\n \"Fixed issue opening comments on pages with a horizontal scroll\",\r\n \"Fixed issue scrolling a prototype while using Inspect with the Confluence Cloud integration\",\r\n \"Fixed issue triggering interactions in masters for artboard projects\",\r\n \"Fixed icons not appearing on Private/Recents workspaces\",\r\n 'Fixed \"Copy Code\" button not appearing in Firefox',\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Increased grace period length to 14 days for an expired Cloud license\",\r\n \"Expiration emails are now sent to all admins 30 days prior to an annual Cloud license expiring\",\r\n \"Fixed issue with lines disappearing on hover for project/user lists\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.403\",\r\n date: \"June 01, 2021\",\r\n points: [\r\n \"Incorporates changes from May 24, 2021 update to Axure Cloud\",\r\n \"Updated RP10 Generator to 3828\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: May 24, 2021\",\r\n points: [\r\n \"UI refresh!\",\r\n \"Backend framework update\",\r\n \"Fixed Artboard projects not zooming correctly on Firefox\",\r\n \"Fixed background image availability in Inspect\",\r\n \"Fixed trimmed leading quotes for fonts in Inspect\",\r\n \"Updated user prototype limit text\",\r\n \"Fixed intermittent errors with dormant tabs\",\r\n \"Fixed menu appearing in What's New dialog\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.402\",\r\n date: \"April 29, 2021\",\r\n points: [\r\n \"Incorporates changes from April 22, 2021 update to Axure Cloud\",\r\n \"Added support for RP10\",\r\n \"Fixed issue verifying Enterprise users\",\r\n \"Updated RP10 Generator to 3824\",\r\n \"Updated RP9 Generator to 3727\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: April 22, 2021\",\r\n points: [\r\n \"Inspect now available in public link (RP10 and Artboard projects)\",\r\n \"Pan & Zoom added to prototypes (RP10)\",\r\n \"Synching of prototype scroll and zoom settings for Preview/Inspect transitions (RP10)\",\r\n \"Updated zoom options for Artboard projects\",\r\n \"Updated RP10 icons\",\r\n \"Fixed comment bubble locations when not in scroll frame\",\r\n \"Fixed preview page sticking after new project generation\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.331\",\r\n date: \"April 12, 2021\",\r\n points: [\r\n \"Added support for SMTP anonymous authentication\",\r\n \"Fixed upgrade to secure SMTP connection\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.330\",\r\n date: \"April 5, 2021\",\r\n points: [\r\n \"Incorporates changes from April 2, 2021 update to Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: April 2, 2021\",\r\n points: [\r\n \"General updates for Axure RP10 support\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed some Reviewer level users having Team Projects access\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.328\",\r\n date: \"March 2, 2021\",\r\n points: [\r\n \"Incorporates changes from February 25th, 2021 update to Axure Cloud\",\r\n \"Updated RP9 Generator to 3723\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: February 25, 2021\",\r\n points: [\r\n \"Revamp to prototype discussions infrastructure and UI\",\r\n \"Discussion threads are now marked as read/unread individually\",\r\n \"Fixed comment post button obscuring below client’s visible window\",\r\n \"Fixed resizing of client window exiting comment pin mode\",\r\n \"Fixed inability to resolve user comments for RP8 projects\",\r\n \"Fixed problems logging in to mobile app when duplicate accounts exist\",\r\n \"Fixed Axure Cloud logo missing from notification emails\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed signing out via discussions for SSO users\",\r\n \"Fixed Technical Admins inability to sign in using standard authentication\",\r\n \"Admin Settings panel is set to Technical Admins’ default state\",\r\n \"Fixed Technical Admins inability to manage Super Admin and Admin accounts\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.327\",\r\n date: \"February 1, 2021\",\r\n points: [\r\n \"Incorporates changes from January 28th, 2021 update to Axure Cloud\",\r\n \"Fixed issue with resetting password through command prompt\",\r\n \"Fixed freeze on creating a workspace when email server has wrong port\",\r\n \"Fixed SSL/non-SSL settings for email servers\",\r\n \"Fixed issue with loading pages in IE\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: January 28, 2021\",\r\n points: [\r\n \"Added Workspace access requests for protected prototypes\",\r\n \"New Welcome to Axure Cloud email\",\r\n \"Added iPhone 12 models to artboard project size settings\",\r\n \"Allow muting notifications for Workspaces\",\r\n \"Added Workspace name change event to feed\",\r\n \"Fixed long Workspace names breaking Slack/MS Teams notifications\",\r\n \"Fixed encoding issues for user nick names\",\r\n \"Additional security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Addition of Technical Admin user type\",\r\n \"Non-Workspace members @mentioned in Publish notes are now given guest subscription\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.326\",\r\n date: \"December 21, 2020\",\r\n points: [\"Addressed password validation issue for Active Directory using LDAP authentication\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.325\",\r\n date: \"December 15, 2020\",\r\n points: [\r\n \"Incorporates changes from December 15, 2020 update to Axure Cloud\",\r\n \"Added increased flexibility for custom proxy settings\",\r\n \"Replaced “HostHttpOnly” setting with “MatchProtocolMode” setting\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: December 15, 2020\",\r\n points: [\r\n \"Added Workspace access requests for protected prototypes\",\r\n \"Added ability to post comments as a guest user\",\r\n \"Added ability to @mention guest commenters\",\r\n \"Removed the ability to leave anonymous comments\",\r\n \"Added ability to mark a comment resolved with a reply\",\r\n \"UI improvements to commenting flow\",\r\n \"Improvements to Workspace invitation emails\",\r\n \"Changes to how default avatars are assigned\",\r\n \"No longer exposing full email addresses in prototype comment pane\",\r\n \"Added 50 user limit for Workspace invitations\",\r\n \"Fixed inability to re-send Workspace invitations\",\r\n \"Fixed including existing Workspace members from blocking valid invitations\",\r\n \"Fixed loading Feedback comments when nickname contains special characters\",\r\n \"Fixed sending deleted comment notification when replies are deleted\",\r\n \"Fixed scroll line obscuring error message when Workspace invitation fails\",\r\n \"Additional security enhancements and bug fixes\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\"Clearer messaging when deactivated users attempt to sign in\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.324\",\r\n date: \"November 13, 2020\",\r\n points: [\"Fixed unresponsiveness during large Team Project operations\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.323\",\r\n date: \"October 22, 2020\",\r\n points: [\r\n \"Incorporates changes from October 21, 2020 update to Axure Cloud\",\r\n \"RP9 generator updated to 3717\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: October 21, 2020\",\r\n points: [\r\n \"Added Guest Subscriptions\",\r\n \"Added ability to @mention Guests\",\r\n \"Feedback thread participants now receive reply notifications\",\r\n \"Enhanced Notification Center UI\",\r\n \"Removed Daily Summary Notification checkbox\",\r\n \"Added unsubscribe links to email notifications\",\r\n \"Added default user avatar images\",\r\n \"Allowing Feedback pin numbers to exceed 99\",\r\n \"Fixed deleted projects breaking Workspace feed after 30 days\",\r\n \"Fixed linking to Feedback comment from email\",\r\n \"Fixed page refresh when showing/hiding Feedback pins\",\r\n \"Fixed page refresh when canceling Feedback comment delete\",\r\n \"Fixed Delete Comment notification referring to New Comment\",\r\n \"Fixed Marked Resolved notification referring to New Comment\",\r\n \"Fixed Workspace Feed hyperlink click behavior and hover style\",\r\n \"Fixed responsiveness of emails viewed on desktop devices\",\r\n \"Fixed issues including qq email addresses in Workspace invites\",\r\n \"Fixed receiving emails for project updates with “Some” notification setting\",\r\n \"Fixed performance/crashing issues for projects with many resolved comments\",\r\n \"Security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\"Fixed SSO Logout URL verification issues\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.322\",\r\n date: \"September 24, 2020\",\r\n points: [\r\n \"Incorporates changes from September 22, 2020 update to Axure Cloud\",\r\n \"Test email now uses full email pipeline\",\r\n \"Enhancements to Active Directory configuration screen\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: September 22, 2020\",\r\n points: [\r\n \"Allow links in Feedback comments\",\r\n \"Enhanced detection of Cloud version updates\",\r\n \"Fixed showing active tabs when visiting Cloud from Axure RP\",\r\n \"Fixed http redirect after entering prototype password for public urls\",\r\n \"Fixed redirect to prototype password page when opening http RP8 projects from Cloud UI\",\r\n \"Removed default Publish Note message\",\r\n \"Improved error handling for websockets\",\r\n \"Security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Allow setting SSO authentication for multiple users\",\r\n \"Allow SSO log in to create new Reviewer accounts\",\r\n \"Automatically selecting SSO authentication for new users when SSO configured\",\r\n \"Improved add user account flow\",\r\n \"Increased password scrutiny for System Admins on Axure Cloud for Business creation\",\r\n \"Fixed error signing in to Axure Cloud for Business using multiple accounts\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.321\",\r\n date: \"September 11, 2020\",\r\n points: [\r\n \"Incorporates changes from September 8, 2020 update to Axure Cloud\",\r\n \"Fixed resetting admin password via command prompt \",\r\n \"RP9 generator updated to 3715\",\r\n \"RP8 generator updated to 3392\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: September 8, 2020\",\r\n points: [\r\n \"Added Workspace Activity Feed\",\r\n \"Bug fixes\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.320\",\r\n date: \"August 28, 2020\",\r\n points: [\"Fixed accessing password protected prototypes for HTTP instances\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.319\",\r\n date: \"August 3, 2020\",\r\n points: [\r\n \"Improvements to email notifications\",\r\n \"Security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.318\",\r\n date: \"July 24, 2020\",\r\n points: [\r\n \"Incorporates changes from July 22, 2020 update to Axure Cloud\",\r\n \"Exposing OnPrem version to all users\",\r\n \"Added support for @mentioning and inviting “Administrator”\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: July 22, 2020\",\r\n points: [\r\n \"Email notifications revamp\",\r\n \"Added “What’s New” section to the menu\",\r\n \"Allow for adding comment text to clipboard\",\r\n \"Added support for shadows in Inspect\",\r\n \"Feedback pin number now tracked across entire project\",\r\n \"Other general Feedback enhancements\",\r\n \"Using desktop notifications to alert user of Workspace invitations\",\r\n \"Added modified date to folders\",\r\n \"Improved messaging for when @mentions isn’t available\",\r\n \"Updated device list for Artboard projects\",\r\n \"Fixed error renaming Masters in Artboard projects\",\r\n \"Allow for folders to have the same name as projects\",\r\n \"Preventing anonymous Feedback users from marking comments as resolved\",\r\n \"Workspace invites come from inviter not from Workspace owner\",\r\n \"Improvements to Slack/MS Teams notifications\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Added support for batch inviting users to Workspaces\",\r\n \"Including invite message when inviting to Workspace via @mention\",\r\n \"Fixed issues with First Workspace after downgrading authors to reviewers\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.317\",\r\n date: \"July 7, 2020\",\r\n points: [\r\n \"Incorporates changes from July 1, 2020 update to Axure Cloud (except for workspace migration)\",\r\n \"Better logging for generation errors\",\r\n \"RP9 generator updated to 3704\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: July 1, 2020\",\r\n points: [\r\n \"Added support for migrating Workspaces from Axure Cloud for Business\",\r\n \"Added last modified date column to folders\",\r\n \"Enabled download for Feedback screenshot tool for Edge browser in prototype player\",\r\n \"Default Cloud avatar changes with nickname\",\r\n \"Better detection when Workspace invitations accepted in other tabs\",\r\n \"Fixed desktop notifications not showing custom profile avatars\",\r\n \"Fixed comment replies updating user nicknames\",\r\n \"Fixed scrolling beyond bottom of artboard after flip animations\",\r\n \"Enabled multiple authentication methods for hubs\",\r\n \"Patched CSRF vulnerabilities\",\r\n \"Better enforcement of filetype restrictions for artboard uploads\",\r\n \"Better obscuring of user information in password reset tokens\",\r\n \"Added HttpOnly flag for cookies\",\r\n \"Various bug fixes and security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Added support for migrating Workspaces from Axure Cloud\",\r\n \"Surfacing total license and used license count on Admin Page\",\r\n \"Added support for activating/disabling multiple accounts at once\",\r\n \"Enhancements to user management on Admin Page\",\r\n \"Restricted @mention options available to Reviewers\",\r\n \"Various bug fixes and security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.316\",\r\n date: \"May 13, 2020\",\r\n points: [\r\n \"Incorporates changes from May 11, 2020 update to Axure Cloud\",\r\n \"Enhanced logging for project generation timeouts\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: May 11, 2020\",\r\n points: [\r\n \"Added support for emojis in discussion comments and publish notes\",\r\n \"Added desktop notifications for @mentions\",\r\n \"Added support for @mentioning in publish notes\",\r\n \"Added Help and Feedback menu options\",\r\n \"Added Figma elements to cloud UI\",\r\n 'Enabled \"Show Hotspots\" for artboard projects in mobile player',\r\n \"Exposed full discussion comments in mobile player\",\r\n \"Added fixes and enhancements to Leave Workspace flow\",\r\n \"Other bug fixes and enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.315\",\r\n date: \"April 14, 2020\",\r\n points: [\r\n \"Incorporates changes from April 9, 2020 update to Axure Cloud\",\r\n \"Fixed generator to handle gzip errors gracefully\",\r\n \"Added support for multiple Active Directories across different domains\",\r\n \"Added SkipAxShareHostCheck flag to support certain proxy configurations\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: April 9, 2020\",\r\n points: [\r\n \"Added publish notes for non-team-projects and artboard projects\",\r\n \"Updated project History page\",\r\n \"Updated prototype password UI for new Advanced projects\",\r\n \"Added project Overview refresh when stale data detected\",\r\n \"Fixed deleting multiple screens from Build page\",\r\n \"Fixed bugs moving projects out of folders\",\r\n \"Fixed bugs with long breadcrumb chains\",\r\n \"Fixed bugs with @mentions/badging feature\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Prevented sending emails to deactivated users\",\r\n \"Fixed bugs with @mentions/badging feature\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.314\",\r\n date: \"March 27, 2020\",\r\n points: [\r\n \"Incorporates changes from March 25, 2020 update to Axure Cloud\",\r\n \"Custom ports now allowed for MySql database installation\",\r\n 'Fixed issues with \"=\" character in database passwords',\r\n \"Fixed Axure Handwriting font not appearing correctly\",\r\n \"Database connection strings now hidden in logs\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: March 25, 2020\",\r\n points: [\r\n \"Added @Mentioning feature for Discussions\",\r\n \"Added Workspace member sharing links\",\r\n \"Added Auto (Web) platform option for Basic Projects\",\r\n \"Clearer active state for current Workspace\",\r\n \"Discussion comment counts surfaced on folders\",\r\n \"New responsive prototype password page\",\r\n \"Fixed Opacity CSS setting for Inspect of Basic Projects\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\"Fixed deactivated users still appearing as Workspace members\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.313\",\r\n date: \"February 28, 2020\",\r\n points: [\r\n \"Incorporates changes from February 26, 2020 update to Axure Cloud\",\r\n \"Improved formatting for OnPrem logs\",\r\n \"Fixed freezing issue with improperly entered email server credentials\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: February 26, 2020\",\r\n points: [\r\n \"Added ability to favorite Workspaces\",\r\n \"Added ability to archive Workspaces\",\r\n \"Added reCAPTCHA for inviting users to Workspaces with optional message\",\r\n \"Added email chipping to new Workspace creation flow\",\r\n \"Order of artboards is maintained better when uploading to Cloud\",\r\n \"Better differentiation between pending and accepted Workspace members\",\r\n \"Better differentiation between shared and unshared Workspaces\",\r\n \"Fixed screenshot plugin installation dialog opening behind other elements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Added email chipping to account creation for Sys-Admins/Admins\",\r\n \"Sys-Admins/Admins can toggle off non-member workspaces when moving, adding notifications, and exporting artboards\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.312\",\r\n date: \"February 7, 2020\",\r\n points: [\r\n \"Incorporates changes from February 5, 2020 update to Axure Cloud\",\r\n \"Added ability to disable Google fonts requests\",\r\n \"Fixed logging in to feedback with Active Directory/LDAP\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: February 5, 2020\",\r\n points: [\r\n 'Renamed \"My Projects\" to \"Private Workspace\"',\r\n \"Consolidated workspace overflow menu\",\r\n \"Standard workspace created for new users\",\r\n \"Workspace invitation emails link directly to pending workspaces\",\r\n \"Renaming workspaces will rename for all members\",\r\n \"Revamped workspace management workflow\",\r\n \"Further improvements to artboard upload status dialog\",\r\n \"Fixed bugs resulting in unnecessary comment badging\",\r\n \"Fixed issues logging in to Axure Cloud for long existing accounts\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Workspace invitations can now be accepted or declined\",\r\n \"Users can now leave workspaces from the workspace settings menu\",\r\n \"Admins and System Admins can see workspace owners by hovering over workspace names in the left sidebar\",\r\n \"Admins and System Admins can now join workspaces directly from the workspace settings menu\",\r\n \"Fixed sending notifications to Admins and System Admins for workspaces they haven't joined\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.310\",\r\n date: \"January 21, 2020\",\r\n points: [\r\n \"Incorporates changes from January 15, 2020 update to Axure Cloud\",\r\n \"Added support for LDAPS authentication\",\r\n \"Fixed authentication with Active Directory/LDAP via feedback\",\r\n \"Fixed domain field for Active Directory setup not working\",\r\n \"Fixed requiring password changes on login for Active Directory and LDAP environments\",\r\n \"Changes to SameSite Cookie settings to prepare for increased browser security updates\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: January 15, 2020\",\r\n points: [\r\n \"Added badge notifications for discussion comments\",\r\n \"Improved artboard upload status dialog\",\r\n \"Added ability to modify screen order from project Overview page\",\r\n \"Fixed browser freezing when inspecting artboards with large assets\",\r\n \"Added banner for Internet Explorer users suggesting use of other browsers\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.309\",\r\n date: \"December 20, 2019\",\r\n points: [\r\n \"Incorporates changes from December 11, 2019 update to Axure Cloud\",\r\n \"Fixed errors preventing service start up after updates\",\r\n \"Fixed redirecting to localhost when visiting Axure Cloud for Business externally when there are database issue\",\r\n \"Fixed issues deleting artboard projects\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: December 11, 2019\",\r\n points: [\r\n \"Enhancements to Discussions\",\r\n \"Enhancements to Cloud Project management menu\",\r\n \"Enhancements to Read Only mode behavior\",\r\n \"Fixed bug sending daily digest emails to former workspace members\",\r\n \"Fixed errors using Internet Explorer\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\"Fixed crowding and bugs in Workspace invite dialog\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.307\",\r\n date: \"November 6, 2019\",\r\n points: [\r\n \"Incorporates changes from October 29, 2019 update to Axure Cloud\",\r\n \"Enforcing strict passwords for system administrators\",\r\n \"Enhancements to manual install options\",\r\n \"Support for host header verification\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: October 29, 2019\",\r\n points: [\r\n \"Enhancements to artboard project previewing\",\r\n \"Fixed generation failures for RP projects with common special characters in name\",\r\n \"Optimizations to artboard project asset download from Inspect\",\r\n \"Fixed connection errors editing MS Teams notifications\",\r\n \"Enhanced security against script injection vulnerabilities\",\r\n \"Updates to workspace invitation emails\",\r\n \"Further bug fixes\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed missing SSO error pages\",\r\n \"Implemented remembering visible workspace setting between sessions\",\r\n \"Fixed redirect with alternate SSO login path\",\r\n \"Fix for unnecessary re-auths to SSO enabled instances\",\r\n \"Further bug fixes\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.306\",\r\n date: \"October 10, 2019\",\r\n points: [\"Fixed bug with differential generation for team projects\"],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.305\",\r\n date: \"September 24, 2019\",\r\n points: [\r\n \"Incorporates changes from September 18, 2019 update to Axure Cloud\",\r\n \"Better error messaging for database connection issues\",\r\n \"Added ability to block setup routes when ACB update requires database schema change\",\r\n \"Fixed bugs using Internet Explorer during ACB configuration\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: September 18, 2019\",\r\n points: [\r\n \"New configuration options for email notifications\",\r\n \"Fixed needing prototype password when clicking from Axure Cloud UI\",\r\n \"Fixed closing dialogs accidentally when selecting text\",\r\n \"Fixed loading team libraries as viewer only\",\r\n \"Bug fixes and security enhancements\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n \"Fixed redirect with SSO login\",\r\n \"Increased password requirements:\",\r\n \"Must be at least 8 characters long\",\r\n \"Must contain at least 1 number\",\r\n \"Must contain both upper and lowercase letters\",\r\n \"Must not contain 3 or more sequential or repeating characters (123, AAA)\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On Premises 2.0.0.304\",\r\n date: \"August 16, 2019\",\r\n points: [\r\n \"Incorporates changes from August 15, 2019 update to Axure Cloud\",\r\n `For servers that were upgraded from Axure Share Enterprise (Version 8), the following settings have been moved\r\n from the database into customsettings.json:`,\r\n \"Web app domain name/URL\",\r\n \"SSL\",\r\n \"Max file size for uploads\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud Update: August 15, 2019\",\r\n points: [\r\n \"Artboard project screens can now be deleted from the project's Overview page.\",\r\n \"Performance enhancements and bug fixes.\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business\",\r\n isSubtitle: true,\r\n points: [\r\n `Axure Cloud For Business now supports\r\n Slack Notifications.`,\r\n \"Author accounts can now create workspaces and invite other users to them.\",\r\n `Administrator accounts are no longer automatically added to every workspace. Instead, they can view every\r\n workspace and self-invite as needed.`,\r\n ],\r\n },\r\n {\r\n title: \"Axure Cloud for Business On-Premises 2.0.0.302\",\r\n date: \"July 15, 2019\",\r\n points: [\r\n `Incorporates changes from public Axure Cloud and adds support for Axure RP 9 files.
\r\n Contact your Axure account representative or\r\n complete this form to request more information.`,\r\n ],\r\n },\r\n {\r\n title: \"The New Axure Cloud is now available!\",\r\n date: \"April 25, 2019\",\r\n points: [\r\n \"Find out what's new in Axure Cloud\",\r\n ],\r\n },\r\n {\r\n title: \"Axure Share Enterprise (On-Premises 8)\",\r\n isSupertitle: true,\r\n },\r\n {\r\n title: \"Version 1.0.0.214\",\r\n date: \"January 24, 2020\",\r\n points: [\"Changes to SameSite Cookie settings to prepare for increased browser security updates\"],\r\n },\r\n {\r\n title: \"Version 1.0.0.207\",\r\n points: [\r\n \"Fixes to support MySQL 8.0\",\r\n \"TLS 1.2 Fixes\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.206\",\r\n points: [\r\n \"Fixes for FIPS Compliance\",\r\n \"Support for LDAP\",\r\n \"Improvements to simplify configuration\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.195\",\r\n points: [\r\n \"SAML Improvements\",\r\n \"Fixes for generation issues on low-memory machines\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.191\",\r\n points: [\r\n \"Incorporates AxShare redesign\",\r\n \"8.1 features\",\r\n \"Windows Server 2016 fixes\",\r\n \"non-ssl SMTP emailer\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.186\",\r\n points: [\r\n \"Update to support Axure RP 8.1 Team Project features\",\r\n \"Bug fixes\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.176\",\r\n points: [\r\n \"added support for AxShareApp\",\r\n \"Merge latest AxShare Cloud changes\",\r\n \"allowed changing max file size or generation timeout\",\r\n \"Generator 3321\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.171\",\r\n points: [\r\n \"Added ability to see the previous version of the prototype while the new team project commit is generating\",\r\n \"Merge AxShare Cloud codebase\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.168\",\r\n points: [\"Reset account lockout when Administrator sets a user password\"],\r\n },\r\n {\r\n title: \"Version 1.0.0.167\",\r\n points: [\r\n \"Added Notifications for:\",\r\n \"Versions (New, Edit)\",\r\n \"Projects (New, Edit)\",\r\n \"Fixed issue with subscribing to notifications from Admin accounts (Super Admins worked correctly)\",\r\n \"Changed the cleanup algorithm to recover space from deleted prototypes much more aggressively\",\r\n \"Fixed issues setting values with an @ symbol (particularly notification sender email address) on MySQL databases\",\r\n \"Added a custom error page to alert users when the application cannot connect to the database\",\r\n \"Fixed issue installing on machines with cultures where the Local Service account was localized\",\r\n \"Various UI enhancements in the Axure Share Manager\",\r\n \"Various usability fixes for Axure Share\",\r\n ],\r\n },\r\n {\r\n title: \"Version 1.0.0.159\",\r\n points: [\"Fixed errors when uploading larger files in memory constrained environments\"],\r\n },\r\n {\r\n title: \"Version 1.0.0.153\",\r\n points: [\"Fix for issues with Windows 2012 R2 not correctly installing IIS\"],\r\n },\r\n {\r\n title: \"Version 1.0.0.151\",\r\n points: [\"Initial RTM Release\"],\r\n },\r\n];\r\n\r\nexport default Vue.extend({\r\n data() {\r\n return {\r\n releases,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxReleaseHistory.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxReleaseHistory.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxReleaseHistory.vue?vue&type=template&id=fabe9158&scoped=true&\"\nimport script from \"./AxReleaseHistory.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxReleaseHistory.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxReleaseHistory.vue?vue&type=style&index=0&id=fabe9158&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fabe9158\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxDialog from \"@/components/AxDialog.vue\";\r\nimport AxReleaseHistory from \"@/components/AxReleaseHistory.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDialog,\r\n AxReleaseHistory,\r\n },\r\n\r\n data() {\r\n return {\r\n dialog: true,\r\n };\r\n },\r\n computed: {\r\n isOnPrem(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.AxShareOnPrem;\r\n },\r\n },\r\n\r\n methods: {\r\n cancel() {\r\n this.dialog = false;\r\n this.$emit(\"cancel\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWhatsNewDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWhatsNewDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxWhatsNewDialog.vue?vue&type=template&id=1bb3b008&\"\nimport script from \"./AxWhatsNewDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxWhatsNewDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxWhatsNewDialog.vue?vue&type=style&index=0&id=1bb3b008&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { parseISO, Duration } from \"date-fns\";\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { AxShareConfigModel } from \"@shared/models\";\r\n\r\nimport { resolveRedirect, AnalyticsClickEvents } from \"@/common/axshare\";\r\nimport { FEEDBACK_URL, HELP_PAGE_URL } from \"@/common/axshare/links\";\r\nimport { VersionCheck } from \"@/common/axshare/new-version\";\r\nimport { persistentStorage } from \"@/common/axshare/persistent\";\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { Main, Renderer } from \"@/desktop/events\";\r\nimport { ROUTES } from \"@/router\";\r\nimport adminRouter from \"@/router/admin\";\r\nimport store from \"@/store\";\r\nimport { Logout } from \"@/store/actionTypes\";\r\nimport { MigrateWorkspaces } from \"@/store/migration/mutationTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { GetUserInfo, GetUserProfile } from \"@/store/user/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxDropdownButton from \"@/components/AxDropdownButton.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxList from \"@/components/AxList.vue\";\r\nimport AxListItem from \"@/components/AxListItem.vue\";\r\nimport AxListItemStatic from \"@/components/AxListItemStatic.vue\";\r\nimport AxUser from \"@/components/AxUser.vue\";\r\nimport AxWhatsNewDialog from \"@/components/AxWhatsNewDialog.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxDropdownButton,\r\n AxIcon,\r\n AxList,\r\n AxListItem,\r\n AxListItemStatic,\r\n AxUser,\r\n AxWhatsNewDialog,\r\n },\r\n\r\n props: {\r\n linkClasses: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n data() {\r\n const feedbackUrl = FEEDBACK_URL;\r\n const productHelpUrl = HELP_PAGE_URL;\r\n const lastVersion = persistentStorage.getLastVersion();\r\n const outdatedAfter: Duration = { days: 4 };\r\n return {\r\n useTimer: undefined as NodeJS.Timeout | undefined,\r\n now: new Date(),\r\n outdatedAfter,\r\n lastVersion,\r\n feedbackUrl,\r\n productHelpUrl,\r\n AnalyticsClickEvents,\r\n whatsNewDialog: false,\r\n notificationsRoute: ROUTES.notification,\r\n manageAccountRoute: ROUTES[\"manage.account\"],\r\n versionCheck: undefined as VersionCheck | undefined,\r\n adminSettingsRoute: {\r\n name: adminRouter.routes.admin.name,\r\n path: adminRouter.routes.admin.path,\r\n },\r\n };\r\n },\r\n\r\n computed: {\r\n axShareConfig(): AxShareConfigModel | undefined {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig || undefined;\r\n },\r\n\r\n isSubInstanceAdmin(): boolean {\r\n return this.$store.getters.isSubInstanceAdmin;\r\n },\r\n\r\n isSubInstanceTechnicalAdmin(): boolean {\r\n return this.$store.getters.isSubInstanceTechnicalAdmin;\r\n },\r\n\r\n loaded(): boolean {\r\n return !!this.userInfo && !!this.userProfile;\r\n },\r\n\r\n userInfo() {\r\n const { user } = this.$store.state as AxShare;\r\n return user.userInfo;\r\n },\r\n\r\n userProfile() {\r\n const { user } = this.$store.state as AxShare;\r\n return user.profile;\r\n },\r\n\r\n userName(): string {\r\n return this.userInfo?.nickname || this.userInfo?.userEmail || \"\";\r\n },\r\n\r\n allowWorkspacesMigrate(): boolean {\r\n return this.$store.getters.allowWorkspacesMigrate;\r\n },\r\n\r\n isSuperAdminUser(): boolean {\r\n return this.$store.getters.isSuperAdminUser;\r\n },\r\n\r\n isOnPrem(): boolean {\r\n return !!this.axShareConfig && this.axShareConfig.AxShareOnPrem;\r\n },\r\n\r\n showVersion(): boolean {\r\n return !!this.axShareConfig && this.axShareConfig.AxShareOnPrem && !!this.axShareConfig.Version;\r\n },\r\n\r\n version(): string {\r\n if (!this.axShareConfig || !this.axShareConfig.Version) {\r\n return \"\";\r\n }\r\n return this.axShareConfig.Version;\r\n },\r\n\r\n serverVersion(): string {\r\n if (this.isOnPrem) {\r\n return this.version;\r\n }\r\n if (!this.axShareConfig || !this.axShareConfig.ReleaseDate) {\r\n return \"\";\r\n }\r\n return this.releaseDate.getTime().toString();\r\n },\r\n\r\n releaseDate(): Date {\r\n if (this.isOnPrem) {\r\n return new Date();\r\n }\r\n if (!this.axShareConfig || !this.axShareConfig.ReleaseDate) {\r\n return new Date();\r\n }\r\n try {\r\n const releaseDate = parseISO(this.axShareConfig.ReleaseDate);\r\n return releaseDate;\r\n } catch {\r\n return new Date();\r\n }\r\n },\r\n\r\n notifyAboutNewVersion(): boolean {\r\n if (this.versionCheck) {\r\n return this.versionCheck.notifyAboutNewVersion(this.now);\r\n }\r\n return false;\r\n },\r\n },\r\n\r\n async created() {\r\n const oneHourInMs = 60 * 60 * 1000;\r\n this.useTimer = setInterval(() => {\r\n this.now = new Date();\r\n }, oneHourInMs);\r\n\r\n const { user } = this.$store.state as AxShare;\r\n if (!user.userInfo) {\r\n this.$store.dispatch(new GetUserInfo());\r\n }\r\n if (!user.profile) {\r\n this.$store.dispatch(new GetUserProfile());\r\n }\r\n\r\n this.versionCheck = new VersionCheck(this.serverVersion, this.releaseDate, this.outdatedAfter);\r\n if (isElectron) {\r\n window.AxureCloudNative.ipc.on(Renderer.Logout, this.logout);\r\n }\r\n },\r\n\r\n beforeDestroy() {\r\n if (this.useTimer) {\r\n clearInterval(this.useTimer);\r\n }\r\n },\r\n\r\n methods: {\r\n moveNotificationRoute(): Location {\r\n return {\r\n name: ROUTES.notification.name,\r\n };\r\n },\r\n\r\n manageAccount(_open: boolean) {\r\n // this.manageAccountDialog = open;\r\n },\r\n\r\n openWhatsNewDialog() {\r\n if (this.versionCheck) {\r\n this.versionCheck.acknowledge();\r\n this.now = new Date();\r\n }\r\n this.whatsNewDialog = true;\r\n },\r\n\r\n closeWhatsNewDialog() {\r\n this.whatsNewDialog = false;\r\n },\r\n\r\n beginMigration() {\r\n this.$store.commit(new MigrateWorkspaces(true));\r\n },\r\n\r\n async logout() {\r\n const onSuccess = () => new Promise((resolve, reject) => {\r\n const afterLogoutRedirect = resolveRedirect({ name: ROUTES.login.name });\r\n if (afterLogoutRedirect) {\r\n this.$router.push(afterLogoutRedirect, () => resolve(), reject);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n\r\n if (isElectron) {\r\n window.AxureCloudNative.ipc.send(Main.LogoutPerformed);\r\n }\r\n\r\n await this.$store.dispatch(new Logout(onSuccess));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAccountMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxAccountMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxAccountMenu.vue?vue&type=template&id=20847d6f&scoped=true&\"\nimport script from \"./AxAccountMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxAccountMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxAccountMenu.vue?vue&type=style&index=0&id=20847d6f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20847d6f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RouterLink',{staticClass:\"ax-home-logo-link\",attrs:{\"to\":_vm.recentsRoute}},[_c('AxIcon',[_c('AxAxureLogo')],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxAxureLogo from \"@/components/icons/AxAxureLogo.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxAxureLogo,\r\n AxIcon,\r\n },\r\n\r\n computed: {\r\n isRecentActive(): boolean {\r\n return this.$route.name === ROUTES[\"fs.recents\"].name;\r\n },\r\n\r\n recentsRoute(): Location {\r\n const recentRouteName = ROUTES[\"fs.recents\"].name;\r\n return {\r\n name: recentRouteName,\r\n query: {\r\n refresh: this.isRecentActive ? \"true\" : \"\",\r\n },\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeadingLogo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeadingLogo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxHeadingLogo.vue?vue&type=template&id=f7113f56&scoped=true&\"\nimport script from \"./AxHeadingLogo.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxHeadingLogo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxHeadingLogo.vue?vue&type=style&index=0&id=f7113f56&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f7113f56\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.disabled)?_c('div',{staticClass:\"ax-header-search\",class:{ opened: _vm.opened || !!_vm.searchText }},[_c('AxMenu',{attrs:{\"value\":_vm.opened || !!_vm.searchText,\"color\":\"link\",\"strategy\":\"fixed\",\"skidding\":0,\"distance\":10,\"content-class\":\"ax-header-search-content\",\"control-manually\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('AxInputSearch',{staticClass:\"desktop-app-no-drag\",attrs:{\"keep-placeholder\":\"\",\"value\":_vm.searchText},on:{\"focus\":function($event){return _vm.toggleFocus(true)},\"blur\":function($event){return _vm.toggleFocus(false)},\"input\":_vm.searchQueryChanged,\"open\":function($event){_vm.opened = $event}}})]},proxy:true}],null,false,734236106)},[_c('KeepAlive',[(_vm.isSearching)?_c('AxFilesystemSearch',{attrs:{\"loading\":_vm.searchData.isLoading,\"query\":_vm.searchData.query,\"results\":_vm.searchData.results}}):_vm._e()],1)],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-search\"},[_c('div',[(!_vm.navigating)?_c('FilesystemViewer',{attrs:{\"content-divider\":\"\"},scopedSlots:_vm._u([{key:\"header-content\",fn:function(){return [_c('AxFilesystemViewerActionsBase',{scopedSlots:_vm._u([{key:\"node-icon\",fn:function(){return [_c('AxIcon',{attrs:{\"name\":\"search\"}})]},proxy:true},{key:\"node-name\",fn:function(){return [_c('AxFilesystemViewerHeader',{attrs:{\"node\":_vm.searchNode}})]},proxy:true}],null,false,3875194863)})]},proxy:true},{key:\"content\",fn:function(){return [_c('AxFilesystemSearchTable',{attrs:{\"results\":_vm.results,\"query\":_vm.query,\"loading\":_vm.loading},on:{\"modified\":_vm.onModified}})]},proxy:true}],null,false,2749699587)}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-filesystem-search-table\"},[_c('AxFilesystemTable',{attrs:{\"items\":_vm.items,\"headers\":_vm.headers,\"loading\":_vm.loading,\"header-offset-top\":_vm.headerOffsetTop,\"item-navigation-disabled\":_vm.isItemDeleted,\"select-disabled\":\"\",\"pagination-disabled\":\"\"},scopedSlots:_vm._u([{key:\"actionsHeader\",fn:function(){return [_c('div')]},proxy:true},{key:\"content\",fn:function({ item }){return [_c('td',{staticClass:\"ax-filesystem-node-link\"},[_c('AxHeaderSearchResultLink',{attrs:{\"result\":_vm.searchResult(item),\"query\":_vm.query,\"disabled\":_vm.isItemDeleted(item)}})],1),_c('td',[(_vm.isProject(item))?_c('div',[_c('AxShortcutPublicLink',{attrs:{\"project\":item,\"prototype-urls\":_vm.prototypeUrls(item),\"disabled\":_vm.isItemDeleted(item)}},_vm._l((_vm.idChunks(item)),function(chunk,index){return _c('span',{key:index,class:{ 'fw-semibold': chunk.isBold }},[_c('span',[_vm._v(_vm._s(chunk.text))])])}),0)],1):_vm._e()]),_c('td',[_c('AxSearchResultModified',{attrs:{\"item\":item}})],1),_c('td',[(_vm.showShortcutDropdown(item))?_c('AxShortcutDropdownButton',{attrs:{\"refresh-disabled\":\"\",\"project\":item},on:{\"deleted\":_vm.itemDeleted,\"cloned\":_vm.itemCloned,\"moved\":_vm.itemMoved,\"renamed\":_vm.itemRenamed,\"modified\":_vm.itemModified}}):_vm._e()],1)]}},{key:\"noData\",fn:function(){return [_c('AxDataTableNoData',{attrs:{\"title\":\"No results found\",\"sub-title\":\"Try different keywords.\"}})]},proxy:true}])}),_c('div',{staticClass:\"d-flex justify-content-center\"},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"alt\":\"Loading...\",\"src\":require(\"@/assets/ajaxload.gif\")}})])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-header-search-result-link\"},[(!_vm.disabled)?_c('RouterLink',{staticClass:\"search-result-link\",attrs:{\"to\":_vm.route}},[_c('AxHeaderSearchResult',{attrs:{\"result\":_vm.result,\"query\":_vm.query}})],1):_c('div',[_c('AxHeaderSearchResult',{attrs:{\"result\":_vm.result,\"query\":_vm.query}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"ax-search-result\"},[_c('span',{staticClass:\"ax-search-thumbnail\"},[(_vm.isProject)?_c('AxProjectThumbnail',{attrs:{\"state\":_vm.shortcutState,\"type\":_vm.projectType,\"version\":_vm.projectResourceDirVersion,\"small\":\"\"}}):(!_vm.isFolder)?_c('AxIcon',{staticClass:\"ax-search-thumbnail__icon\",attrs:{\"name\":_vm.icon}}):(_vm.isFolder)?_c('AxIcon',[_c('AxFolder')],1):_vm._e()],1),_c('span',{staticClass:\"ax-search-text\"},_vm._l((_vm.chunks),function(chunk,index){return _c('span',{key:index,class:{ 'fw-semibold': chunk.isBold }},[_vm._v(_vm._s(chunk.text))])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeType } from \"@/common/fs\";\r\nimport { SearchResult, StringChunk } from \"@/common/search/SearchResult\";\r\n\r\nimport { prop } from \"./utils\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxProjectThumbnail from \"@/components/AxProjectThumbnail.vue\";\r\nimport AxFolder from \"@/components/icons/AxFolder.vue\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxProjectThumbnail,\r\n AxFolder,\r\n },\r\n\r\n props: {\r\n result: prop>({\r\n required: true,\r\n default: null,\r\n }),\r\n query: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n computed: {\r\n chunks(): StringChunk[] {\r\n const result = this.result;\r\n const chunks = result.getStringChunks(\"name\");\r\n return chunks || [];\r\n },\r\n\r\n isProject(): boolean {\r\n return this.result.item.type === FilesystemNodeType.Shortcut;\r\n },\r\n\r\n projectType(): number {\r\n return this.result.item.subtype !== undefined ? this.result.item.subtype : NaN;\r\n },\r\n\r\n shortcutState(): string | undefined {\r\n return this.result.item.shortcutState;\r\n },\r\n\r\n projectResourceDirVersion(): number {\r\n return this.result.item.resourceDirVersion !== undefined ? this.result.item.resourceDirVersion : NaN;\r\n },\r\n\r\n isFolder(): boolean {\r\n return this.result.item.type === FilesystemNodeType.Folder;\r\n },\r\n\r\n icon(): string {\r\n switch (this.result.item.type) {\r\n case FilesystemNodeType.Workspace:\r\n return \"workspace\";\r\n case FilesystemNodeType.Folder:\r\n return \"folder\";\r\n default:\r\n return \"axure_page\";\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeaderSearchResult.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeaderSearchResult.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxHeaderSearchResult.vue?vue&type=template&id=72ee0300&scoped=true&\"\nimport script from \"./AxHeaderSearchResult.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxHeaderSearchResult.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxHeaderSearchResult.vue?vue&type=style&index=0&id=72ee0300&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72ee0300\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { FilesystemNodeType } from \"@/common/fs\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { fsRouterLocation } from \"@/router/fs\";\r\n\r\nimport AxHeaderSearchResult from \"@/components/AxHeaderSearchResult.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxHeaderSearchResult,\r\n },\r\n\r\n props: {\r\n result: {\r\n type: Object,\r\n default: null,\r\n },\r\n query: {\r\n type: String,\r\n default: \"\",\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n isViewOnly(): boolean {\r\n if (!this.isProject) {\r\n return false;\r\n }\r\n return !!this.result.item.viewOnly;\r\n },\r\n\r\n isProject(): boolean {\r\n return this.result.item.type === FilesystemNodeType.Shortcut;\r\n },\r\n\r\n route(): Location {\r\n const { result } = this;\r\n switch (result.item.type) {\r\n case FilesystemNodeType.Shortcut:\r\n return this.routeOverview;\r\n case FilesystemNodeType.Workspace:\r\n case FilesystemNodeType.Folder:\r\n return this.fsLocation;\r\n default:\r\n return this.fsLocation;\r\n }\r\n },\r\n\r\n routeOverview(): Location {\r\n const { result } = this;\r\n return {\r\n name: ROUTES[\"project.overview\"].name,\r\n params: { shortcut: result.item.id },\r\n };\r\n },\r\n\r\n fsLocation(): Location {\r\n const { result } = this;\r\n if (result.item.type === FilesystemNodeType.Folder && result.item.workspaceId) {\r\n return fsRouterLocation(result.item, { workspaceId: result.item.workspaceId });\r\n }\r\n return fsRouterLocation(result.item);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeaderSearchResultLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeaderSearchResultLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxHeaderSearchResultLink.vue?vue&type=template&id=6275fa74&scoped=true&\"\nimport script from \"./AxHeaderSearchResultLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxHeaderSearchResultLink.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxHeaderSearchResultLink.vue?vue&type=style&index=0&id=6275fa74&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6275fa74\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.canShowModifiedDate)?_c('AxShortcutModified',{attrs:{\"project-id\":_vm.item.lastUpdatedShortcut,\"project-modified\":_vm.item.updated,\"project-state\":_vm.item.shortcutState}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeShortcut, FilesystemNodeType } from \"@/common/fs\";\r\n\r\nimport AxShortcutModified from \"@/components/AxShortcutModified.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxShortcutModified,\r\n },\r\n\r\n props: {\r\n item: {\r\n type: Object,\r\n default: null,\r\n },\r\n },\r\n\r\n computed: {\r\n canShowModifiedDate(): boolean {\r\n return this.item.type === FilesystemNodeType.Shortcut || this.item.type === FilesystemNodeType.Folder;\r\n },\r\n\r\n project(): FilesystemNodeShortcut {\r\n return this.$store.getters.getFsNode(this.item.id);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSearchResultModified.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSearchResultModified.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSearchResultModified.vue?vue&type=template&id=0072ac52&\"\nimport script from \"./AxSearchResultModified.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSearchResultModified.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { prototypeUrls, PrototypeUrls } from \"@/common/axshare\";\r\nimport { FilesystemNodeType } from \"@/common/fs\";\r\nimport { arrayToMap } from \"@/common/lib\";\r\nimport { SearchResult, StringChunk } from \"@/common/search/SearchResult\";\r\nimport { ShortcutType } from \"@/services/models\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxDataTableNoData from \"@/components/AxDataTableNoData.vue\";\r\nimport AxFilesystemTable from \"@/components/AxFilesystemTable.vue\";\r\nimport AxHeaderSearchResultLink from \"@/components/AxHeaderSearchResultLink.vue\";\r\nimport AxSearchResultModified from \"@/components/AxSearchResultModified.vue\";\r\nimport AxShortcutDropdownButton from \"@/components/AxShortcutDropdownButton.vue\";\r\nimport AxShortcutPublicLink from \"@/components/AxShortcutPublicLink.vue\";\r\nimport { Header } from \"@/components/types/AxDataTable\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxDataTableNoData,\r\n AxFilesystemTable,\r\n AxHeaderSearchResultLink,\r\n AxShortcutDropdownButton,\r\n AxSearchResultModified,\r\n AxShortcutPublicLink,\r\n },\r\n\r\n props: {\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n results: arrayProp>({\r\n required: false,\r\n default: () => [],\r\n }),\r\n\r\n query: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n headerOffsetTop: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n deletedItems: {} as Record,\r\n clonedItems: {} as Record,\r\n movedItems: {} as Record,\r\n renamedItems: {} as Record,\r\n };\r\n },\r\n\r\n computed: {\r\n items(): (FilesystemSearchItem & { shortcutType?: ShortcutType })[] {\r\n return this.results.map(r => ({\r\n ...r.item,\r\n shortcutType: r.item.subtype,\r\n }));\r\n },\r\n\r\n searchResults() {\r\n return arrayToMap(this.results, searchResult => searchResult.item.id);\r\n },\r\n\r\n headers(): Header[] {\r\n return [\r\n {\r\n text: `${this.results.length.toString()} results for text \"${this.query}\"`,\r\n value: \"name\",\r\n },\r\n {\r\n text: \"ID\",\r\n value: \"id\",\r\n sortable: false,\r\n },\r\n {\r\n text: \"Modified\",\r\n value: \"updated\",\r\n width: \"15%\",\r\n },\r\n {\r\n // actions\r\n text: \"\",\r\n sortable: false,\r\n width: \"10%\",\r\n },\r\n ];\r\n },\r\n },\r\n\r\n methods: {\r\n isProject(item: FilesystemSearchItem): boolean {\r\n return item.type === FilesystemNodeType.Shortcut;\r\n },\r\n showShortcutDropdown(item: FilesystemSearchItem) {\r\n return item.type === FilesystemNodeType.Shortcut && item.viewOnly === false;\r\n },\r\n prototypeUrls(item: FilesystemSearchItem): PrototypeUrls {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return prototypeUrls(axShareConfig, item.prototypeUrl || \"\", item.id);\r\n },\r\n\r\n searchResult(item: FilesystemSearchItem): SearchResult | undefined {\r\n return this.searchResults[item.id];\r\n },\r\n\r\n idChunks(item: FilesystemSearchItem): StringChunk[] {\r\n const result = this.searchResult(item);\r\n if (!result) {\r\n return [];\r\n }\r\n return result.getStringChunks(\"id\") || [];\r\n },\r\n\r\n itemDeleted(item: FilesystemSearchItem) {\r\n this.$set(this.deletedItems, item.id, true);\r\n },\r\n\r\n isItemDeleted(item: FilesystemSearchItem) {\r\n return !!this.deletedItems[item.id];\r\n },\r\n\r\n itemCloned(item: FilesystemSearchItem) {\r\n this.$set(this.clonedItems, item.id, true);\r\n },\r\n\r\n itemMoved(item: FilesystemSearchItem) {\r\n this.$set(this.movedItems, item.id, true);\r\n },\r\n\r\n itemRenamed(item: FilesystemSearchItem) {\r\n this.$set(this.renamedItems, item.id, true);\r\n },\r\n\r\n itemModified() {\r\n this.$emit(\"modified\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemSearchTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemSearchTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemSearchTable.vue?vue&type=template&id=6963748e&\"\nimport script from \"./AxFilesystemSearchTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemSearchTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeSearch, FilesystemNodeType, FilesystemNodeTypes } from \"@/common/fs\";\r\nimport { SearchResult } from \"@/common/search/SearchResult\";\r\nimport FilesystemViewer from \"@/layouts/FilesystemViewer.vue\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxFilesystemSearchTable from \"@/components/AxFilesystemSearchTable.vue\";\r\nimport AxFilesystemViewerActionsBase from \"@/components/AxFilesystemViewerActionsBase.vue\";\r\nimport AxFilesystemViewerHeader from \"@/components/AxFilesystemViewerHeader.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\nimport { arrayProp } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n FilesystemViewer,\r\n AxFilesystemSearchTable,\r\n AxFilesystemViewerHeader,\r\n AxFilesystemViewerActionsBase,\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n query: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n results: arrayProp>({\r\n default: () => [],\r\n }),\r\n },\r\n\r\n data() {\r\n const searchNode: FilesystemNodeSearch = {\r\n id: \"search\",\r\n name: \"Search Results\",\r\n type: FilesystemNodeType.Search,\r\n listingNode: undefined,\r\n parent: undefined,\r\n siblings: [],\r\n totalItems: 0,\r\n created: new Date(),\r\n };\r\n\r\n return {\r\n searchNode,\r\n modified: false,\r\n node: undefined as FilesystemNodeTypes | undefined,\r\n };\r\n },\r\n\r\n computed: {\r\n navigating(): boolean {\r\n return this.$store.getters.navigating;\r\n },\r\n },\r\n\r\n activated() {\r\n this.reInitData();\r\n },\r\n\r\n created() {\r\n this.reInitData();\r\n },\r\n\r\n async deactivated() {\r\n await this.refreshNavigate();\r\n },\r\n\r\n async beforeDestroy() {\r\n await this.refreshNavigate();\r\n },\r\n\r\n methods: {\r\n onModified() {\r\n this.modified = true;\r\n },\r\n\r\n async refreshNavigate() {\r\n if (this.modified && this.node) {\r\n await this.$store.dispatch(new Fetch(this.node));\r\n }\r\n },\r\n\r\n reInitData() {\r\n this.modified = false;\r\n this.node = this.$store.getters.current.node;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxFilesystemSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxFilesystemSearch.vue?vue&type=template&id=693efd5a&scoped=true&\"\nimport script from \"./AxFilesystemSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxFilesystemSearch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxFilesystemSearch.vue?vue&type=style&index=0&id=693efd5a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"693efd5a\",\n null\n \n)\n\nexport default component.exports","\r\nimport debounce from \"lodash.debounce\";\r\nimport Vue from \"vue\";\r\n\r\nimport { FilesystemNodeType } from \"@/common/fs\";\r\nimport { Search } from \"@/common/search/Search\";\r\nimport { SearchResult } from \"@/common/search/SearchResult\";\r\nimport { getUserSearchData } from \"@/services/fs.service\";\r\nimport { ApiCall, ApiCallOptions } from \"@/store/actionTypes\";\r\nimport { SetSearchData } from \"@/store/fs/mutationTypes\";\r\nimport { AxSearchData } from \"@/store/fs/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxFilesystemSearch from \"@/components/AxFilesystemSearch.vue\";\r\nimport AxInputSearch from \"@/components/AxInputSearch.vue\";\r\nimport AxMenu from \"@/components/AxMenu.vue\";\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nconst debounceInput = debounce(\r\n (searchQuery: string, fn: (str: string) => void) => {\r\n fn(searchQuery);\r\n },\r\n 500,\r\n { maxWait: 1000 },\r\n);\r\n\r\ntype ItemField = keyof FilesystemSearchItem;\r\ntype SearchFunction = (item: FilesystemSearchItem) => boolean;\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxInputSearch,\r\n AxFilesystemSearch,\r\n AxMenu,\r\n },\r\n\r\n props: {\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n data() {\r\n const searchList: FilesystemSearchItem[] = [];\r\n const searchFields = new Map([\r\n [\"name\", () => true],\r\n [\"id\", (item: FilesystemSearchItem) => item.type === FilesystemNodeType.Shortcut],\r\n ]);\r\n const searchEngine: Search = new Search(searchList, searchFields);\r\n return {\r\n loading: false,\r\n searchSessionStarted: false,\r\n searchListOutdated: false,\r\n searchList,\r\n searchEngine,\r\n searchFields,\r\n opened: false,\r\n };\r\n },\r\n\r\n computed: {\r\n dataReloadRequired(): boolean {\r\n // reload search data required if list outdated and search query is not empty\r\n return !this.loading && this.searchListOutdated && this.searchText.length > 0;\r\n },\r\n\r\n searchResults(): Array> {\r\n const { searchText } = this;\r\n if (searchText && searchText.length > 0) {\r\n return this.searchEngine.doSearch(searchText);\r\n }\r\n return [];\r\n },\r\n\r\n searchText(): string {\r\n const { fs } = this.$store.state as AxShare;\r\n return fs.searchData.query;\r\n },\r\n\r\n searchData(): AxSearchData {\r\n const { fs } = this.$store.state as AxShare;\r\n return fs.searchData;\r\n },\r\n\r\n isSearching(): boolean {\r\n const { query } = this.searchData;\r\n return query.length > 0;\r\n },\r\n },\r\n\r\n watch: {\r\n dataReloadRequired(value) {\r\n if (value) {\r\n this.getSearchTree();\r\n }\r\n },\r\n\r\n searchResults(value) {\r\n this.$store.commit(new SetSearchData({ results: value }));\r\n },\r\n\r\n \"$route.query\": function (newQuery: Record, oldQuery: Record) {\r\n if (!newQuery.searchQuery && oldQuery.searchQuery) {\r\n this.$store.commit(new SetSearchData({ query: \"\" }));\r\n // close search session if route changed\r\n this.toggleSearchSessionStarted(false);\r\n }\r\n },\r\n },\r\n\r\n created() {\r\n this.$store.commit(new SetSearchData({ query: \"\" }));\r\n this.setSearchInRoute(\"\");\r\n },\r\n\r\n destroyed() {\r\n this.$store.commit(new SetSearchData({ query: \"\" }));\r\n this.setSearchInRoute(\"\");\r\n },\r\n\r\n methods: {\r\n searchQueryChanged(query: string) {\r\n debounceInput(query, debouncedQuery => {\r\n this.setSearchInRoute(debouncedQuery);\r\n this.$store.commit(new SetSearchData({ query: debouncedQuery }));\r\n });\r\n },\r\n\r\n setSearchInRoute(search: string) {\r\n let queryParams;\r\n let shouldNavigate = false;\r\n\r\n const { searchQuery: currentSearch } = this.$route.query;\r\n if (search === currentSearch || (!search && !currentSearch)) {\r\n // same or empty search query, do nothing\r\n return;\r\n }\r\n\r\n if (search) {\r\n shouldNavigate = true;\r\n queryParams = { ...this.$route.query, searchQuery: search };\r\n } else {\r\n // remove 'searchQuery' parameter\r\n const { searchQuery, ...rest } = this.$route.query;\r\n if (searchQuery) {\r\n shouldNavigate = true;\r\n }\r\n queryParams = rest;\r\n }\r\n if (shouldNavigate) {\r\n this.$router.replace({ query: queryParams });\r\n }\r\n },\r\n\r\n toggleFocus(value: boolean) {\r\n if (value) {\r\n // input focus\r\n if (!this.searchSessionStarted) {\r\n // start search session\r\n this.toggleSearchSessionStarted(true);\r\n }\r\n } else if (!this.searchText) {\r\n // input blur\r\n // if query empty then to end search session\r\n this.toggleSearchSessionStarted(false);\r\n }\r\n },\r\n\r\n toggleSearchSessionStarted(value: boolean) {\r\n // check if search session has just started\r\n if (value && value !== this.searchSessionStarted) {\r\n this.searchListOutdated = true;\r\n }\r\n this.searchSessionStarted = value;\r\n },\r\n\r\n async getSearchTree() {\r\n const getSearchTreeImpl = async () => {\r\n this.loading = true;\r\n this.$store.commit(new SetSearchData({ isLoading: true }));\r\n\r\n try {\r\n this.searchList = await getUserSearchData();\r\n this.searchEngine = new Search(this.searchList, this.searchFields);\r\n } finally {\r\n this.searchListOutdated = false;\r\n this.$store.commit(new SetSearchData({ isLoading: false }));\r\n this.loading = false;\r\n }\r\n };\r\n const options: ApiCallOptions = {\r\n action: getSearchTreeImpl,\r\n };\r\n this.$store.dispatch(new ApiCall(options));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeaderSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeaderSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxHeaderSearch.vue?vue&type=template&id=53292b3c&scoped=true&\"\nimport script from \"./AxHeaderSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxHeaderSearch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxHeaderSearch.vue?vue&type=style&index=0&id=53292b3c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53292b3c\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxAccountMenu from \"./AxAccountMenu.vue\";\r\nimport AxHeadingLogo from \"./AxHeadingLogo.vue\";\r\n\r\nimport AxHeaderSearch from \"@/components/AxHeaderSearch.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxHeadingLogo,\r\n AxAccountMenu,\r\n AxHeaderSearch,\r\n },\r\n\r\n computed: {\r\n minimized(): boolean {\r\n return this.$store.getters.headerMinimized;\r\n },\r\n\r\n isSubInstance(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance;\r\n },\r\n\r\n isElectron(): boolean {\r\n return isElectron;\r\n },\r\n\r\n isFullScreen(): boolean {\r\n const { desktop } = this.$store.state as AxShare;\r\n return desktop.desktopParams.isFullScreen;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeading.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxHeading.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxHeading.vue?vue&type=template&id=58e8db42&scoped=true&\"\nimport script from \"./AxHeading.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxHeading.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxHeading.vue?vue&type=style&index=0&id=58e8db42&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58e8db42\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"workspaces-push\"},_vm._l((_vm.workspaces),function(workspace){return _c('AxPushNotificationsWorkspace',{key:workspace.id,attrs:{\"workspace\":workspace},on:{\"comments-changed\":function($event){return _vm.workspaceCommentsChanged($event, workspace)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { CommentsChangedArgs } from \"@shared/models\";\r\n\r\nimport { FilesystemNodeWorkspace } from \"@/common/fs\";\r\nimport { equalsIgnoringCase } from \"@/common/lib\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\n\r\nimport AxPushNotificationsWorkspace from \"@/components/AxPushNotifications/AxPushNotificationsWorkspace.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxPushNotificationsWorkspace,\r\n },\r\n\r\n computed: {\r\n workspaces(): FilesystemNodeWorkspace[] {\r\n return Object.values(this.$store.getters.workspaces);\r\n },\r\n },\r\n\r\n methods: {\r\n async workspaceCommentsChanged(payload: CommentsChangedArgs, workspace: FilesystemNodeWorkspace) {\r\n if (equalsIgnoringCase(payload.FilesystemId, workspace.id)) {\r\n await this.$store.dispatch(new Fetch(workspace));\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsAllWorkspaces.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsAllWorkspaces.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPushNotificationsAllWorkspaces.vue?vue&type=template&id=e3ed6216&\"\nimport script from \"./AxPushNotificationsAllWorkspaces.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPushNotificationsAllWorkspaces.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxPushNotificationsBase',{attrs:{\"hub\":\"notifications\",\"listeners\":_vm.listeners}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { WorkspaceInvitationDeletedArgs, WorkspaceInvitedArgs } from \"@shared/models\";\r\n\r\nimport { AxMentionedNotificationOptions } from \"@/common/notifications/AxNotificationOptions\";\r\nimport { hasDesktopNotificationsPermission } from \"@/common/notifications/permissions\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { SignalRHubListeners } from \"@/services/push.notifications.service\";\r\nimport { WorkspacesRefresh } from \"@/store/fs/actionTypes\";\r\nimport { NodeRemove } from \"@/store/fs/mutationTypes\";\r\nimport { ShowWorkspaceInvitedDesktopNotification } from \"@/store/notifications/actionTypes\";\r\n\r\nimport AxPushNotificationsBase from \"@/components/AxPushNotifications/AxPushNotificationsBase\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxPushNotificationsBase,\r\n },\r\n\r\n computed: {\r\n listeners(): SignalRHubListeners {\r\n return {\r\n workspaceInvited: async (payload: WorkspaceInvitedArgs) => {\r\n await this.$store.dispatch(new WorkspacesRefresh());\r\n\r\n if (await hasDesktopNotificationsPermission()) {\r\n const notificationOptions: AxMentionedNotificationOptions = {\r\n authorEmail: payload.OwnerEmail,\r\n authorName: payload.OwnerName,\r\n body: payload.MentionComment,\r\n tag: payload.Id,\r\n authorProfileImage: payload.OwnerProfileImage,\r\n onclick: async (notification: Notification) => {\r\n // google chrome notifications are not closed by click on MacOS\r\n // so it should be closed manually\r\n if (notification) {\r\n notification.close();\r\n }\r\n\r\n await this.$router.push({\r\n name: ROUTES[\"fs.workspace.invited\"].name,\r\n params: { workspaceId: payload.FilesystemId },\r\n });\r\n },\r\n };\r\n\r\n await this.$store.dispatch(new ShowWorkspaceInvitedDesktopNotification(notificationOptions));\r\n }\r\n },\r\n workspaceInvitationDeleted: async (payload: WorkspaceInvitationDeletedArgs) => {\r\n this.$store.commit(new NodeRemove(payload.FilesystemId));\r\n\r\n if (this.$router.currentRoute.path.toLowerCase().indexOf(payload.FilesystemId.toLowerCase()) >= 0) {\r\n await this.$router.push({\r\n name: ROUTES.fs.name,\r\n });\r\n }\r\n },\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsGlobal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsGlobal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPushNotificationsGlobal.vue?vue&type=template&id=180b8dcb&\"\nimport script from \"./AxPushNotificationsGlobal.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPushNotificationsGlobal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxPushNotificationsBase',{attrs:{\"hub\":\"notifications\",\"listeners\":_vm.listeners}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport VueRouter from \"vue-router\";\r\n\r\nimport { AxShareConfigModel, UserMentionedArgs } from \"@shared/models\";\r\n\r\nimport { prototypeUrls } from \"@/common/axshare\";\r\nimport { MentionType, FilesystemNodeWorkspace, FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport { AxMentionedNotificationOptions } from \"@/common/notifications/AxNotificationOptions\";\r\nimport { hasDesktopNotificationsPermission } from \"@/common/notifications/permissions\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { getUserGuestSubscriptions } from \"@/services/notification.service\";\r\nimport { SignalRHubListeners } from \"@/services/push.notifications.service\";\r\nimport { Fetch } from \"@/store/fs/actionTypes\";\r\nimport { ShowMentionedDesktopNotification } from \"@/store/notifications/actionTypes\";\r\n\r\nimport AxPushNotificationsBase from \"@/components/AxPushNotifications/AxPushNotificationsBase\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxPushNotificationsBase,\r\n },\r\n computed: {\r\n listeners(): SignalRHubListeners {\r\n return {\r\n userMentioned: async (payload: UserMentionedArgs) => {\r\n const shortcut = payload.Shortcut.toLowerCase();\r\n\r\n if (payload.MentionType === MentionType.PublishNote) {\r\n // Refresh the whole workspace to be able to display actual mentions state immediately (including shortcut workspace and parent folders)\r\n const workspace: FilesystemNodeWorkspace | undefined = this.$store.getters.findWorkspace(shortcut);\r\n if (workspace) await this.$store.dispatch(new Fetch(workspace));\r\n }\r\n\r\n if (await hasDesktopNotificationsPermission()) {\r\n const notificationOptions: AxMentionedNotificationOptions = {\r\n authorName: payload.AuthorName,\r\n authorEmail: payload.AuthorEmail,\r\n body: payload.Message,\r\n tag: payload.Id,\r\n authorProfileImage: payload.AuthorProfileImage,\r\n onclick: async (notification: Notification) => {\r\n // google chrome notifications are not closed by click on MacOS\r\n // so it should be closed manually\r\n if (notification) {\r\n notification.close();\r\n }\r\n\r\n try {\r\n if (payload.MentionType === MentionType.Issue || payload.MentionType === MentionType.IssueComment) {\r\n // open the public link instead of the cloud preview page for shortcuts with guest subscription\r\n const subscriptions = await getUserGuestSubscriptions();\r\n if (subscriptions.Items.some(x => x.ShortcutKey.toLowerCase() === shortcut.toLowerCase())) {\r\n const axShareConfig: AxShareConfigModel | undefined = this.$store.state.axShareConfig;\r\n if (axShareConfig) {\r\n const urls = prototypeUrls(axShareConfig, { id: shortcut } as FilesystemNodeShortcut);\r\n window.location.href = `${urls.full}#issueCode=${payload.IssueCode}&type=issue`;\r\n }\r\n return;\r\n }\r\n await this.$router.push({\r\n name: ROUTES[\"expo.preview\"].name,\r\n params: { shortcut, screen: payload.PageId },\r\n query: { comment: payload.IssueCode },\r\n });\r\n } else if (payload.MentionType === MentionType.PublishNote) {\r\n await this.$router.push({\r\n name: ROUTES[\"project.history\"].name,\r\n params: { shortcut },\r\n });\r\n }\r\n } catch (error) {\r\n if (!VueRouter.isNavigationFailure(error)) {\r\n throw error;\r\n }\r\n }\r\n },\r\n };\r\n\r\n this.$store.dispatch(new ShowMentionedDesktopNotification(notificationOptions));\r\n }\r\n },\r\n };\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsMentioned.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxPushNotificationsMentioned.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxPushNotificationsMentioned.vue?vue&type=template&id=0cce3316&\"\nimport script from \"./AxPushNotificationsMentioned.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxPushNotificationsMentioned.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.allowWorkspacesMigrate && _vm.inProgress)?_c('AxWorkspacesMigrationDialog',{attrs:{\"migration-id\":_vm.migrationId}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst AxWorkspacesMigrationDialog = () => import(\"./AxWorkspacesMigrationDialog.vue\");\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxWorkspacesMigrationDialog,\r\n },\r\n\r\n computed: {\r\n allowWorkspacesMigrate(): boolean {\r\n return this.$store.getters.allowWorkspacesMigrate;\r\n },\r\n\r\n inProgress(): boolean {\r\n const { migration } = this.$store.state as AxShare;\r\n return migration.inProgress;\r\n },\r\n\r\n migrationId(): string {\r\n const { migration } = this.$store.state as AxShare;\r\n return migration.migrationId;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspacesMigration.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxWorkspacesMigration.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxWorkspacesMigration.vue?vue&type=template&id=0cbc91c7&\"\nimport script from \"./AxWorkspacesMigration.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxWorkspacesMigration.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { isIE } from \"@/common/lib\";\r\nimport FixedHeader from \"@/layouts/FixedHeader.vue\";\r\n\r\nimport AxArtboardUploads from \"@/components/AxArtboardUploads.vue\";\r\nimport AxHeading from \"@/components/AxHeading.vue\";\r\nimport AxPushNotificationsAllWorkspaces from \"@/components/AxPushNotifications/AxPushNotificationsAllWorkspaces.vue\";\r\nimport AxPushNotificationsGlobal from \"@/components/AxPushNotifications/AxPushNotificationsGlobal.vue\";\r\nimport AxPushNotificationsMentioned from \"@/components/AxPushNotifications/AxPushNotificationsMentioned.vue\";\r\nimport AxWorkspacesMigration from \"@/components/AxWorkspacesMigration.vue\";\r\n\r\nconst AxInstallingSketchPluginNotification = () => import(\"@/components/AxInstallingSketchPluginNotification.vue\");\r\nconst AxBadgeNotifications = () => import(\"@/components/AxBadgeNotifications.vue\");\r\nconst AxOutdatedBrowserBanner = () => import(\"@/components/AxOutdatedBrowserBanner.vue\");\r\n\r\nexport default Vue.extend({\r\n components: {\r\n FixedHeader,\r\n AxHeading,\r\n AxInstallingSketchPluginNotification,\r\n AxOutdatedBrowserBanner,\r\n AxArtboardUploads,\r\n AxBadgeNotifications,\r\n AxPushNotificationsGlobal,\r\n AxPushNotificationsMentioned,\r\n AxPushNotificationsAllWorkspaces,\r\n AxWorkspacesMigration,\r\n },\r\n\r\n data() {\r\n return {\r\n isElectron,\r\n isOutdatedBrowser: isIE,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=214d6080&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container-fluid\"},[_c('WelcomeLayout',[_c('div',{staticClass:\"not-found\"},[_c('h2',[_vm._v(\"This page doesn't exist.\")]),_c('div',{staticClass:\"not-found-instructions\"},[_c('p',[_vm._v(\" Please check the URL. If you need some help, email us at \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\". \")])]),_c('div',[_vm._v(\" You may also \"),_c('AxButton',{staticClass:\"text-underline\",attrs:{\"to\":_vm.isAuthed ? _vm.fsRoute : _vm.loginRoute,\"color\":\"link\"}},[_vm._v(\" \"+_vm._s(_vm.isAuthed ? 'go back to Workspaces' : 'go to Login page')+\" \")]),_vm._v(\". \")],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport WelcomeLayout from \"@/layouts/WelcomeLayout.vue\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n WelcomeLayout,\r\n },\r\n\r\n data() {\r\n return {\r\n fsRoute: { name: ROUTES.fs.name },\r\n loginRoute: { name: ROUTES.login.name },\r\n };\r\n },\r\n\r\n computed: {\r\n isAuthed(): boolean {\r\n let isAuthed = false;\r\n const { accountService } = this.$store.state as AxShare;\r\n if (accountService) {\r\n isAuthed = accountService().IsAuthed;\r\n }\r\n return isAuthed;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotFound.vue?vue&type=template&id=25e099cc&scoped=true&\"\nimport script from \"./NotFound.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotFound.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NotFound.vue?vue&type=style&index=0&id=25e099cc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25e099cc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container-fluid\"},[_c('WelcomeLayout',{scopedSlots:_vm._u([{key:\"logo\",fn:function(){return [_c('div',{staticClass:\"axure-cloud-logo-row\"},[_c('RouterLink',{staticClass:\"logo-link\",attrs:{\"to\":_vm.homeRoute}},[_c('AxIcon',{staticClass:\"logo-icon\"},[_c('AxAxureLogo',{attrs:{\"dark\":\"\"}})],1)],1)],1)]},proxy:true}])},[_c('div',{staticClass:\"project-not-shared\"},[_c('div',{staticClass:\"project-not-shared-title\"},[_vm._v(\" You do not have access to this project (yet) \")]),_c('div',{staticClass:\"project-not-shared-body\"},[_c('div',{staticClass:\"d-flex align-items-center flex-column\"},[_c('p',[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Please ask your co-worker to \"),_c('b',[_vm._v(\"invite you\")]),_vm._v(\" to the Workspace\"),_c('br')]),_vm._v(\" in order to \"),_c('b',[_vm._v(\"access this project\")]),_vm._v(\". \")])]),_c('img',{staticClass:\"mb-3\",attrs:{\"src\":require(\"@/assets/img/unlock.png\"),\"srcset\":require(\"@/assets/img/unlock.png\") + \", \" + require(\"@/assets/img/unlock@2x.png\") + \" 2x, \" + require(\"@/assets/img/unlock@3x.png\") + \" 3x\",\"alt\":\"Project Not Shared\"}}),_c('AxForm',{staticClass:\"mt-3\",attrs:{\"submit\":_vm.requestAccessToWorkspace},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return [_c('form',[_c('AxButton',{attrs:{\"large\":\"\",\"color\":\"primary\",\"type\":\"submit\",\"loading\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Request Access to Workspace \")])],1)]}}])})],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport WelcomeLayout from \"@/layouts/WelcomeLayout.vue\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { requestInvite } from \"@/services/fs.service\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxAxureLogo from \"@/components/icons/AxAxureLogo.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxAxureLogo,\r\n AxIcon,\r\n AxForm,\r\n AxButton,\r\n WelcomeLayout,\r\n },\r\n\r\n props: {\r\n workspaceId: {\r\n type: String,\r\n required: true,\r\n },\r\n\r\n shortcut: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n homeRoute: { name: ROUTES.home.name },\r\n };\r\n },\r\n\r\n mounted() {\r\n this.updateQueryParams();\r\n },\r\n\r\n methods: {\r\n async requestAccessToWorkspace() {\r\n try {\r\n const response = await requestInvite(this.workspaceId, this.shortcut);\r\n\r\n await this.$router.push({\r\n name: ROUTES.workspaceAccessRequested.name,\r\n params: {\r\n workspaceName: encodeURIComponent(response.WorkspaceName),\r\n },\r\n });\r\n } catch {\r\n await this.$router.push({\r\n name: ROUTES.somethingNotQuiteRight.name,\r\n });\r\n }\r\n },\r\n\r\n updateQueryParams() {\r\n const { retry } = this.$route.query;\r\n if (!retry) {\r\n const query = { ...this.$route.query, retry: String(true) };\r\n this.$router.replace({ query });\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProjectNotShared.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProjectNotShared.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectNotShared.vue?vue&type=template&id=79919517&scoped=true&\"\nimport script from \"./ProjectNotShared.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectNotShared.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProjectNotShared.vue?vue&type=style&index=0&id=79919517&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79919517\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container-fluid\"},[_c('WelcomeLayout',{scopedSlots:_vm._u([{key:\"logo\",fn:function(){return [_c('div',{staticClass:\"axure-cloud-logo\"},[_c('AxIcon',{attrs:{\"h\":\"30px\",\"name\":\"axure-logo\"}})],1)]},proxy:true}])},[_c('div',{staticClass:\"not-quite-right\"},[_c('div',{staticClass:\"not-quite-right-title\"},[_vm._v(\" Something's not quite right... \")]),_c('div',{staticClass:\"not-quite-right-body\"},[_c('p',[_vm._v(\" Please \"),_c('b',[_vm._v(\"try again later\")]),_vm._v(\" or reach out to \"),_c('b',[_vm._v(\"support@axure.com\")]),_c('br'),_vm._v(\" to resolve the issue. \")]),_c('img',{attrs:{\"src\":require(\"@/assets/img/teacher-illustration.png\"),\"srcset\":require(\"@/assets/img/teacher-illustration.png\") + \", \" + require(\"@/assets/img/teacher-illustration@2x.png\") + \" 2x, \" + require(\"@/assets/img/teacher-illustration@3x.png\") + \" 3x\",\"alt\":\"Something's not quite right...\"}})])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport WelcomeLayout from \"@/layouts/WelcomeLayout.vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n WelcomeLayout,\r\n AxIcon,\r\n\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SomethingNotQuiteRight.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SomethingNotQuiteRight.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SomethingNotQuiteRight.vue?vue&type=template&id=1d81be8a&scoped=true&\"\nimport script from \"./SomethingNotQuiteRight.vue?vue&type=script&lang=ts&\"\nexport * from \"./SomethingNotQuiteRight.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SomethingNotQuiteRight.vue?vue&type=style&index=0&id=1d81be8a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d81be8a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container-fluid\"},[_c('WelcomeLayout',{scopedSlots:_vm._u([{key:\"logo\",fn:function(){return [_c('div',{staticClass:\"axure-cloud-logo-row\"},[_c('RouterLink',{staticClass:\"logo-link\",attrs:{\"to\":_vm.homeRoute}},[_c('AxIcon',{staticClass:\"logo-icon\"},[_c('AxAxureLogo',{attrs:{\"dark\":\"\"}})],1)],1)],1)]},proxy:true}])},[_c('div',{staticClass:\"workspace-access-requested\"},[_c('div',{staticClass:\"workspace-access-requested-title\"},[_vm._v(\" Workspace access requested \"),(_vm.showWorkspaceName)?[_c('br'),_vm._v(\" for \"+_vm._s(_vm.decodedWorkspaceName)+\" \")]:_vm._e()],2),_c('div',{staticClass:\"workspace-access-requested-body\"},[_c('p',[_vm._v(\" The \"),_c('b',[_vm._v(\"workspace owner\")]),_vm._v(\" has been notified of your \"),_c('b',[_vm._v(\"request for access\")]),_vm._v(\". Once approved, you will \"),_c('b',[_vm._v(\"receive an email\")]),_vm._v(\" inviting you to join the workspace. \")]),_c('img',{attrs:{\"src\":require(\"@/assets/img/access-requested.png\"),\"srcset\":require(\"@/assets/img/access-requested.png\") + \", \" + require(\"@/assets/img/access-requested@2x.png\") + \" 2x, \" + require(\"@/assets/img/access-requested@3x.png\") + \" 3x\",\"alt\":\"Workspace Access Requested\"}})])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { DEFAULT_WORKSPACE_NAME } from \"@/common/axshare/constants\";\r\nimport { equalsIgnoringCase, tryDecodeURIComponent } from \"@/common/lib\";\r\nimport WelcomeLayout from \"@/layouts/WelcomeLayout.vue\";\r\nimport { ROUTES } from \"@/router\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxAxureLogo from \"@/components/icons/AxAxureLogo.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxAxureLogo,\r\n AxIcon,\r\n WelcomeLayout,\r\n },\r\n\r\n props: {\r\n workspaceName: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n homeRoute: { name: ROUTES.home.name },\r\n };\r\n },\r\n\r\n computed: {\r\n showWorkspaceName(): boolean {\r\n return !equalsIgnoringCase(this.decodedWorkspaceName, DEFAULT_WORKSPACE_NAME);\r\n },\r\n\r\n decodedWorkspaceName(): string {\r\n const workspaceName = this.workspaceName;\r\n return tryDecodeURIComponent(workspaceName);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WorkspaceAccessRequested.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WorkspaceAccessRequested.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WorkspaceAccessRequested.vue?vue&type=template&id=7b687108&scoped=true&\"\nimport script from \"./WorkspaceAccessRequested.vue?vue&type=script&lang=ts&\"\nexport * from \"./WorkspaceAccessRequested.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WorkspaceAccessRequested.vue?vue&type=style&index=0&id=7b687108&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b687108\",\n null\n \n)\n\nexport default component.exports","import { RouteConfig } from \"vue-router\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { wellKnownRoutes } from \"@/common/axshare\";\r\n\r\nconst AxUploadExportedBatch = () => import(\"@/components/AxUploadExportedBatch.vue\");\r\n\r\nexport type Keys = \"uploadfromsketch\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n uploadfromsketch: {\r\n ...wellKnownRoutes.uploadFromSketch,\r\n component: AxUploadExportedBatch,\r\n },\r\n};\r\n\r\nconst config = [];\r\nif (isElectron) {\r\n config.push(routes.uploadfromsketch);\r\n}\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nconst SsoCompleted = () => import(\"@/pages/SsoCompleted.vue\");\r\n\r\nexport type Keys = \"sso-popup.completed\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n \"sso-popup.completed\": {\r\n path: \"/sso-popup/completed\",\r\n name: \"sso-popup.completed\",\r\n component: SsoCompleted,\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes[\"sso-popup.completed\"],\r\n },\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nimport { ROUTES } from \"@/router\";\r\nimport store from \"@/store\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst AxSubInstanceFirstUse = () => import(\"@/components/AxSubInstanceFirstUse.vue\");\r\n\r\nexport type Keys = \"firstUse\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n firstUse: {\r\n path: \"/firstUse\",\r\n name: \"firstUse\",\r\n component: AxSubInstanceFirstUse,\r\n beforeEnter(_to, _from, next) {\r\n const { axShareConfig } = store.state as AxShare;\r\n if (axShareConfig !== null && axShareConfig.IsSubInstance) return next();\r\n\r\n // redirect to home page for non-subinstances\r\n return next({ name: ROUTES.home.name });\r\n },\r\n },\r\n};\r\n\r\nconst config = [routes.firstUse];\r\n\r\nexport default { routes, config };\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nimport { wellKnownRoutes } from \"@/common/axshare/routing\";\r\nimport Home from \"@/pages/Home.vue\";\r\nimport NotFound from \"@/pages/NotFound.vue\";\r\nimport ProjectNotShared from \"@/pages/ProjectNotShared.vue\";\r\nimport SomethingNotQuiteRight from \"@/pages/SomethingNotQuiteRight.vue\";\r\nimport WorkspaceAccessRequested from \"@/pages/WorkspaceAccessRequested.vue\";\r\nimport desktopPluginsRouter, { Keys as desktopPlugins } from \"@/router/desktop-plugins\";\r\nimport fsRouter from \"@/router/fs\";\r\nimport loginRouter, { Keys as login } from \"@/router/login\";\r\nimport projectRouter from \"@/router/project\";\r\nimport ssoRouter, { Keys as sso } from \"@/router/sso\";\r\nimport subinstanceRouter, { Keys as subinstance } from \"@/router/subinstance\";\r\n\r\nexport type Keys = \"home\"\r\n | \"notFound\"\r\n | \"projectNotShared\"\r\n | \"workspaceAccessRequested\"\r\n | \"somethingNotQuiteRight\"\r\n | login\r\n | subinstance\r\n | desktopPlugins\r\n | sso;\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n home: {\r\n ...wellKnownRoutes.home,\r\n component: Home,\r\n meta: {\r\n safeToApplySWUpdate: true,\r\n },\r\n },\r\n ...loginRouter.routes,\r\n ...subinstanceRouter.routes,\r\n ...desktopPluginsRouter.routes,\r\n ...ssoRouter.routes,\r\n projectNotShared: {\r\n path: \"/project-not-shared/:workspaceId/:shortcut\",\r\n name: \"projectNotShared\",\r\n component: ProjectNotShared,\r\n props: true,\r\n beforeEnter(to, _from, next) {\r\n const { redirect, retry } = to.query;\r\n if (retry && typeof redirect === \"string\") {\r\n window.location.href = redirect;\r\n return;\r\n }\r\n return next();\r\n },\r\n },\r\n workspaceAccessRequested: {\r\n path: \"/workspace-access-requested/:workspaceName\",\r\n name: \"workspaceAccessRequested\",\r\n component: WorkspaceAccessRequested,\r\n props: true,\r\n },\r\n somethingNotQuiteRight: {\r\n path: \"/something-not-quite-right\",\r\n name: \"somethingNotQuiteRight\",\r\n component: SomethingNotQuiteRight,\r\n },\r\n notFound: {\r\n path: \"*\",\r\n name: \"notFound\",\r\n component: NotFound,\r\n meta: {\r\n requiresAuth: false,\r\n },\r\n },\r\n};\r\n\r\nconst config: RouteConfig[] = [\r\n {\r\n ...routes.home,\r\n redirect: fsRouter.routes.fs,\r\n children: [...fsRouter.config, ...projectRouter.config, ...subinstanceRouter.config],\r\n },\r\n ...loginRouter.config,\r\n ...desktopPluginsRouter.config,\r\n ...ssoRouter.config,\r\n routes.projectNotShared,\r\n routes.workspaceAccessRequested,\r\n routes.somethingNotQuiteRight,\r\n routes.notFound,\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nimport { AxShareConfigModel } from \"@shared/models\";\r\n\r\nimport router from \"@/router\";\r\n\r\nexport enum RouteStatus {\r\n NotConfigured,\r\n Reconfigured,\r\n Ok,\r\n}\r\n\r\nexport let routesConfigured = false;\r\nexport let routeStatus: RouteStatus = RouteStatus.NotConfigured;\r\n\r\ninterface LazyRoute {\r\n fetch: () => Promise\r\n condition: () => boolean;\r\n parent: string;\r\n}\r\n\r\nexport async function configureRoutes(axShareConfig: AxShareConfigModel | null) {\r\n if (routesConfigured || !axShareConfig) return;\r\n\r\n const lazyRoutes: LazyRoute[] = [\r\n {\r\n fetch: () => import(\r\n /* webpackChunkName: \"admin\" */\r\n \"@/router/admin\"\r\n ).then(d => d.default.config),\r\n condition: () => axShareConfig.IsSubInstance,\r\n parent: \"fs.manage\",\r\n },\r\n {\r\n fetch: () => import(\r\n /* webpackChunkName: \"setup\" */\r\n \"@/router/setup\"\r\n ).then(d => d.default.config),\r\n condition: () => axShareConfig.AxShareOnPrem,\r\n parent: \"/\",\r\n },\r\n {\r\n fetch: () => import(\r\n /* webpackChunkName: \"enterprise\" */\r\n \"@/router/enterprise\"\r\n ).then(d => d.default.config),\r\n condition: () => axShareConfig.SubInstancesSupported,\r\n parent: \"/\",\r\n },\r\n ];\r\n\r\n const configs: Record = {};\r\n const lazyRouteTasks: Promise[] = [];\r\n for (const lazyRoute of lazyRoutes) {\r\n if (lazyRoute.condition()) {\r\n const task = lazyRoute.fetch().then(entries => {\r\n const newConfig = configs[lazyRoute.parent] || (configs[lazyRoute.parent] = []);\r\n newConfig.push(...entries);\r\n });\r\n lazyRouteTasks.push(task);\r\n }\r\n }\r\n\r\n if (lazyRouteTasks.length > 0) {\r\n await Promise.all(lazyRouteTasks);\r\n addToRouter(configs);\r\n routeStatus = RouteStatus.Reconfigured;\r\n }\r\n routesConfigured = true;\r\n}\r\n\r\nexport function setRouteStatus(status: RouteStatus) {\r\n routeStatus = status;\r\n}\r\n\r\nfunction addToRouter(routes: Record) {\r\n for (const routeName in routes) {\r\n if (Object.prototype.hasOwnProperty.call(routes, routeName)) {\r\n const routeConfigs = routes[routeName];\r\n for (const routeConfig of routeConfigs) {\r\n router.addRoute(routeName, routeConfig);\r\n }\r\n }\r\n }\r\n}\r\n","import Router, { NavigationGuard, Route, RouteMeta } from \"vue-router\";\r\n\r\nimport { resolveRedirect, redirectParamName, wellKnownRoutes } from \"@/common/axshare\";\r\nimport { ROUTES } from \"@/router\";\r\nimport {\r\n configureRoutes, RouteStatus, routeStatus, setRouteStatus,\r\n} from \"@/router/init\";\r\nimport setupRouter from \"@/router/setup\";\r\nimport store from \"@/store\";\r\nimport { Initialize, ApiCall, ApiCallOptions } from \"@/store/actionTypes\";\r\n\r\nexport const init = (router: Router) => {\r\n router.beforeEach(async (to, _from, next) => {\r\n const initImpl = async () => {\r\n // give a chance for routes to finish initialization\r\n if (routeStatus === RouteStatus.Ok && to.name === ROUTES.notFound.name) return next();\r\n\r\n await store.dispatch(new Initialize());\r\n await configureRoutes(store.state.axShareConfig);\r\n if (store.state.initializationStatus === \"failure\") {\r\n return next(false);\r\n }\r\n\r\n const { axShareConfig } = store.state;\r\n const isOnPrem = !!axShareConfig && axShareConfig.AxShareOnPrem === true;\r\n const appConfigured: boolean = store.getters.appConfigured;\r\n const toOnPremSetupRoute = to.name !== setupRouter.routes.setup.name && !appConfigured && isOnPrem;\r\n if (toOnPremSetupRoute) {\r\n return next(setupRouter.routes.setup);\r\n }\r\n\r\n if (routeStatus === RouteStatus.Reconfigured) {\r\n setRouteStatus(RouteStatus.Ok);\r\n\r\n // trying to re-resolve new next() if routes were changed\r\n const resolvedRoute = router.resolve({ path: to.path });\r\n return next({\r\n path: resolvedRoute.location.path,\r\n params: to.params,\r\n query: to.query,\r\n hash: to.hash,\r\n });\r\n }\r\n return next();\r\n };\r\n\r\n const onFailure = (error?: Error | unknown) => {\r\n if (store && store.state) {\r\n const { initializationStatus } = store.state;\r\n if (initializationStatus === \"failure\" || initializationStatus === null) {\r\n return next();\r\n }\r\n }\r\n return next(error as any);\r\n };\r\n\r\n const options: ApiCallOptions = {\r\n action: initImpl,\r\n onFailure,\r\n };\r\n await store.dispatch(new ApiCall(options));\r\n });\r\n};\r\n\r\nexport const auth = (router: Router) => {\r\n router.beforeEach(async (to, _from, next) => {\r\n try {\r\n if (!(await routeRequiresAuth(to))) {\r\n return next();\r\n }\r\n const { accountService } = store.state;\r\n if (!accountService) {\r\n if (store.state.initializationStatus === \"failure\") {\r\n return next();\r\n }\r\n return next(false);\r\n }\r\n\r\n const isAuthed = accountService().IsAuthed;\r\n if (isAuthed) {\r\n const redirect = resolveRedirect(to);\r\n if (!redirect) {\r\n // window.location.href change, don't call next() and let browser do navigation\r\n return;\r\n }\r\n if (to !== redirect) {\r\n return next(redirect);\r\n }\r\n return next();\r\n }\r\n return redirectToLoginPage(to, _from, next);\r\n } catch (error: any) {\r\n return next(error);\r\n }\r\n });\r\n};\r\n\r\ntype RouteRequiresAuth = (() => Promise | boolean) | boolean | undefined;\r\n\r\nfunction isRouteRequiresAuthMeta(meta: RouteMeta): meta is { requiresAuth: RouteRequiresAuth } {\r\n return meta.requiresAuth !== undefined;\r\n}\r\n\r\nconst redirectToLoginPage: NavigationGuard = (to, _from, next) => next({\r\n name: wellKnownRoutes.login.name,\r\n query: {\r\n [redirectParamName]: to.query[redirectParamName] || to.fullPath.split(\"#\")[0],\r\n },\r\n hash: to.hash,\r\n});\r\n\r\nasync function routeRequiresAuth(to: Route): Promise {\r\n if (!to.meta) return true;\r\n\r\n if (!isRouteRequiresAuthMeta(to.meta)) return true;\r\n\r\n const { requiresAuth }: { requiresAuth: RouteRequiresAuth } = to.meta;\r\n if (requiresAuth === undefined) return true;\r\n if (typeof requiresAuth === \"function\") return requiresAuth();\r\n return requiresAuth;\r\n}\r\n","import Vue from \"vue\";\r\nimport Router, { RouteConfig } from \"vue-router\";\r\n\r\nimport fsRouter, { Keys as fs } from \"@/router/fs\";\r\nimport homeRouter, { Keys as home } from \"@/router/home\";\r\nimport projectRouter, { Keys as project } from \"@/router/project\";\r\n\r\nimport { isDesktopLocal } from \"@/common/environment\";\r\nimport * as guards from \"./guards\";\r\nimport store from \"@/store\";\r\nimport { SetNavigationError } from \"@/store/mutationTypes\";\r\n\r\nVue.use(Router);\r\n\r\ntype Keys = home | fs | project;\r\n\r\nexport const ROUTES: { readonly [R in Keys]: RouteConfig } = {\r\n ...homeRouter.routes,\r\n ...fsRouter.routes,\r\n ...projectRouter.routes,\r\n};\r\n\r\nconst router = new Router({\r\n mode: isDesktopLocal ? \"hash\" : \"history\",\r\n base: process.env.VUE_APP_BASE_URL,\r\n routes: [...homeRouter.config],\r\n});\r\n\r\nguards.init(router);\r\nguards.auth(router);\r\n\r\nrouter.onError(error => {\r\n try {\r\n store.commit(new SetNavigationError(error));\r\n } catch {\r\n console.error(\"Error occurred when trying to handle router navigation error\");\r\n console.error(error);\r\n }\r\n});\r\n\r\nexport default router;\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('WelcomeLayout',{attrs:{\"logo-route\":_vm.homeRoute,\"copyright\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('div',{staticClass:\"login-signup d-flex flex-column flex-grow-1\"},[_c('RouterView'),_vm._t(\"default\")],2)]},proxy:true},{key:\"description\",fn:function(){return [_c('AxCloudInfoDescription',{attrs:{\"for-business\":_vm.forBusiness}}),_c('div',{staticClass:\"d-app\"},[_c('div',[_c('div',[_c('div',{staticClass:\"axure-desktop-app\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/assets/axure-desktop.png\"),\"alt\":\"Axure Desktop App\"}}),_c('p',{staticClass:\"small\"},[_vm._v(\" Get the Axure Cloud Desktop app \")]),_c('AxButton',{staticClass:\"get-desktop-app-button\",attrs:{\"rounded\":\"\",\"block\":\"\",\"color\":\"transparent\",\"href\":_vm.desktopUrl}},[_vm._v(\" Download \")])],1)])])])]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { DESKTOP_APP_DOWNLOAD_URL } from \"@/common/axshare/links\";\r\nimport { wellKnownRoutes } from \"@/common/axshare/routing\";\r\nimport { isElectron } from \"@/common/environment\";\r\nimport WelcomeLayout from \"@/layouts/WelcomeLayout.vue\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxCloudInfoDescription from \"@/components/AxCloudInfoDescription.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n WelcomeLayout,\r\n AxCloudInfoDescription,\r\n },\r\n\r\n data() {\r\n return {\r\n desktopUrl: DESKTOP_APP_DOWNLOAD_URL,\r\n homeRoute: !isElectron\r\n ? {\r\n name: wellKnownRoutes.home.name,\r\n }\r\n : undefined,\r\n };\r\n },\r\n\r\n computed: {\r\n forBusiness(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig !== null && axShareConfig.IsSubInstance && !axShareConfig.AxShareOnPrem;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoginSignup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoginSignup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginSignup.vue?vue&type=template&id=9546d9f8&scoped=true&\"\nimport script from \"./LoginSignup.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginSignup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginSignup.vue?vue&type=style&index=0&id=9546d9f8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9546d9f8\",\n null\n \n)\n\nexport default component.exports","import FormData from \"form-data\";\r\n\r\nconst toString = Object.prototype.toString;\r\n\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return toString.call(val) === \"[object ArrayBuffer]\";\r\n}\r\n\r\nexport function isFormData(val: any): val is FormData {\r\n return typeof FormData !== \"undefined\" && val instanceof FormData;\r\n}\r\n\r\nexport function isArrayBufferView(val: any): val is ArrayBufferView {\r\n let result: boolean;\r\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) {\r\n result = ArrayBuffer.isView(val);\r\n } else {\r\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\r\n }\r\n return result;\r\n}\r\n\r\nexport function isFile(val: any): val is File {\r\n return toString.call(val) === \"[object File]\";\r\n}\r\n\r\nexport function isBlob(val: any): val is Blob {\r\n return toString.call(val) === \"[object Blob]\";\r\n}\r\n\r\nexport function isFunction(val: any): val is Function {\r\n return toString.call(val) === \"[object Function]\";\r\n}\r\n\r\nexport function isString(val: any): val is string {\r\n return typeof val === \"string\";\r\n}\r\n\r\nexport function isObject(val: any) {\r\n return val !== null && typeof val === \"object\";\r\n}\r\n\r\nexport function isURLSearchParams(val: any): val is URLSearchParams {\r\n return typeof URLSearchParams !== \"undefined\" && val instanceof URLSearchParams;\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rp-auth-base\"},[_c('div',{staticClass:\"rp-auth\"},[_c('div',{staticClass:\"rp-auth__content\"},[_c('router-view',{staticClass:\"rp-auth__sidebar\",attrs:{\"name\":\"sidebar\"}}),_c('div',{staticClass:\"rp-auth__content-main\"},[_c('div',{staticClass:\"ax-logo\"},[_c('AxIcon',{staticClass:\"logo-icon\"},[_c('AxAxureLogo',{attrs:{\"dark\":\"\"}})],1)],1),_c('div',{staticClass:\"rp-auth__content-form\"},[_c('router-view')],1)])],1),_vm._m(0)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rp-auth__contacts\"},[_c('span',[_vm._v(\"If you need any help, email us at \"),_c('a',{attrs:{\"href\":\"mailto:support@axure.com\"}},[_vm._v(\"support@axure.com\")]),_vm._v(\".\")])])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxAxureLogo from \"@/components/icons/AxAxureLogo.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxIcon,\r\n AxAxureLogo,\r\n },\r\n created() {\r\n document.body.classList.add(\"body-fluid\");\r\n document.body.classList.add(\"rp-auth-bg\");\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpAuthBase.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpAuthBase.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpAuthBase.vue?vue&type=template&id=7e6f96b8&scoped=true&\"\nimport script from \"./RpAuthBase.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpAuthBase.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpAuthBase.vue?vue&type=style&index=0&id=7e6f96b8&prod&lang=css&\"\nimport style1 from \"./RpAuthBase.vue?vue&type=style&index=1&id=7e6f96b8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e6f96b8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sidebar\"},[_c('img',{staticClass:\"sidebar__img\",attrs:{\"src\":_vm.src}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({\r\n props: {\r\n signin: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n isRp10: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n computed: {\r\n src() {\r\n // eslint-disable-next-line global-require\r\n if (this.isRp10) return require(\"@/assets/img/login_left_banner-web-2x.png\");\r\n if (this.signin) {\r\n // eslint-disable-next-line global-require\r\n return require(\"@/assets/img/rp-signin-9.png\");\r\n }\r\n // eslint-disable-next-line global-require\r\n return require(\"@/assets/img/rp-signup-9.png\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpAuthSidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpAuthSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpAuthSidebar.vue?vue&type=template&id=2eca6762&scoped=true&\"\nimport script from \"./RpAuthSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpAuthSidebar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpAuthSidebar.vue?vue&type=style&index=0&id=2eca6762&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2eca6762\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"title\"},[_vm._v(\" This sign in request has expired. \")]),_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"Please open Axure RP and try again.\")])])])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nexport default Vue.extend({});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpError.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpError.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpError.vue?vue&type=template&id=82d3d5a6&scoped=true&\"\nimport script from \"./RpError.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpError.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpError.vue?vue&type=style&index=0&id=82d3d5a6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"82d3d5a6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rp-key\"},[(!_vm.showLicenseKey)?_c('div',{staticClass:\"title\"},[_vm._v(\" Enter your shared activation key below \")]):_vm._e(),(!_vm.showLicenseKey)?_c('AxForm',{staticClass:\"form-wrapper\",attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"hide-errors\":\"\"},on:{\"on-error\":_vm.addError},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return [_c('form',{staticClass:\"key-form\"},[_c('div',{staticClass:\"key-form-controls\"},[_c('AxFormGroup',[_c('AxInput',{staticClass:\"key-input\",attrs:{\"autofocus\":\"\",\"placeholder\":\"Shared Activation Key\",\"name\":\"redemptionKey\"},model:{value:(_vm.model.redemptionKey),callback:function ($$v) {_vm.$set(_vm.model, \"redemptionKey\", $$v)},expression:\"model.redemptionKey\"}})],1),_c('AxFormGroup',[_c('AxButton',{class:_vm.buttonClass,attrs:{\"block\":\"\",\"type\":\"submit\",\"large\":\"\",\"disabled\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Submit \")])],1)],1),_c('AxFormErrors',{attrs:{\"errors\":_vm.errors,\"color\":\"rgb(255, 0, 0)\"}}),_c('div',[_c('AxFormSuccess',{attrs:{\"messages\":_vm.successMessages}})],1)],1)]}}],null,false,3455072626)}):_vm._e(),(_vm.showLicenseKey)?_c('div',[_c('div',{staticClass:\"title\"},[_vm._v(\" Continue to Axure RP \")]),_c('a',{ref:\"link\",staticClass:\"rp-link\",attrs:{\"href\":_vm.desktopLink}},[_vm._v(\" Redirect to Axure RP \")]),_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"Your browser will redirect you to Axure RP in a moment.\")]),_c('p',[_vm._v(\" If RP is unable to connect to activate, please click Copy Code. In Axure RP, paste or click Paste Code in the dialog. \")]),_c('AxCopyToClipboard',{staticClass:\"copy-container\",attrs:{\"value\":_vm.licenseKey,\"button-text\":\"Copy Code\"}})],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios, { AxiosInstance } from \"axios\";\r\n\r\nimport { LicenseInfoResponse, RpErrorTypes } from \"@/generated/models\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nimport { addAuthorizationHeader, withNoCacheHeaders } from \"./utils/axios\";\r\n\r\nfunction createServer(host: string, token: () => string | undefined) {\r\n const server = axios.create({\r\n baseURL: host,\r\n withCredentials: true,\r\n transformRequest: [\r\n (data, headers) => {\r\n addAuthorizationHeader(headers, token());\r\n return data;\r\n },\r\n ],\r\n ...withNoCacheHeaders,\r\n });\r\n\r\n return server;\r\n}\r\n\r\n// we need this because the liensing/portal server has different capitalization rules from cloud.\r\nexport type CustomRpResponseObject = {\r\n success: Boolean,\r\n Payload: LicenseInfoResponse,\r\n ErrorType: RpErrorTypes,\r\n errorMessage: string\r\n}\r\n\r\nexport default class LicensingService {\r\n private licensingServer: AxiosInstance;\r\n\r\n constructor(private readonly licensingHost: string, authToken: string) {\r\n this.licensingServer = createServer(licensingHost, () => authToken);\r\n }\r\n\r\n public async getLicenseData(machineId: string, redemptionKey?: string, skipTrialCheck?: Boolean) {\r\n const formData = objectToFormData({\r\n code: machineId,\r\n redemptionKey,\r\n skipTrialCheck: skipTrialCheck ?? false,\r\n });\r\n const val = await this.licensingServer.post(\"/licensing/active\", formData);\r\n return val.data;\r\n }\r\n}\r\n","\r\n\r\nimport Vue from \"vue\";\r\n\r\nimport { RpErrorTypes } from \"@/generated/models\";\r\nimport LicensingService from \"@/services/licensing.service\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxCopyToClipboard from \"@/components/AxCopyToClipboard.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormErrors from \"@/components/AxFormErrors.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxFormSuccess from \"@/components/AxFormSuccess.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxInput,\r\n AxFormErrors,\r\n AxFormSuccess,\r\n AxCopyToClipboard,\r\n },\r\n props: {\r\n requestId: {\r\n type: String,\r\n required: true,\r\n },\r\n machineId: {\r\n type: String,\r\n required: true,\r\n },\r\n token: {\r\n type: String,\r\n default: \"\",\r\n },\r\n redemptionKey: {\r\n type: String,\r\n default: \"\",\r\n },\r\n rpVersion: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n data() {\r\n const protocol = this.rpVersion === \"10\" ? \"axurerp10\" : \"axurerp\";\r\n const desktopLink = `${protocol}://signin?requestId=${this.requestId}`;\r\n return {\r\n model: {\r\n redemptionKey: this.redemptionKey,\r\n },\r\n desktopLink,\r\n errors: [] as string[],\r\n successMessages: [] as string[],\r\n licenseKey: \"\",\r\n };\r\n },\r\n computed: {\r\n showLicenseKey(): Boolean { return Boolean(this.licenseKey); },\r\n buttonClass(): string {\r\n return this.machineId ? \"key-button-10 key-submit-button\" : \"key-button-9 key-submit-button\";\r\n },\r\n },\r\n methods: {\r\n setStatusMessages({ success = [], errors = [] }: { success?: string | string[]; errors?: string | string[] }) {\r\n const successMessages = Array.isArray(success) ? success : [success];\r\n const errorMessages = Array.isArray(errors) ? errors : [errors];\r\n this.successMessages = successMessages;\r\n this.errors = errorMessages;\r\n },\r\n\r\n addError(errorMessage: string) {\r\n this.errors.push(errorMessage);\r\n },\r\n\r\n clearStatusMessages() {\r\n this.setStatusMessages({ success: [], errors: [] });\r\n },\r\n\r\n async submit() {\r\n const { axShareConfig, accountService } = this.$store.state as AxShare;\r\n const licensingHost = axShareConfig?.LicensingServiceHost;\r\n if (licensingHost) {\r\n this.clearStatusMessages();\r\n const licensingService = new LicensingService(licensingHost, this.token);\r\n const licData = (await licensingService.getLicenseData(this.machineId, this.model.redemptionKey, true));\r\n\r\n if (licData.success) {\r\n this.licenseKey = licData.Payload.BestLicense.key;\r\n if (accountService) {\r\n await accountService().cacheLicenseResponse(this.requestId, JSON.stringify(licData));\r\n }\r\n (this.$refs.link as HTMLElement).click();\r\n } else if (!licData.success && licData.ErrorType === RpErrorTypes.RedemptionKeyNotFound) {\r\n this.addError(licData.errorMessage);\r\n }\r\n }\r\n },\r\n },\r\n});\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpKey.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpKey.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpKey.vue?vue&type=template&id=d60a7200&scoped=true&\"\nimport script from \"./RpKey.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpKey.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpKey.vue?vue&type=style&index=0&id=d60a7200&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d60a7200\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"title\"},[_vm._v(\" Signing in to Axure RP… \")]),_c('a',{ref:\"link\",staticClass:\"rp-link\",attrs:{\"href\":_vm.desktopLink}},[_vm._v(\" Redirect to Axure RP \")]),_c('div',{staticClass:\"text\"},[_c('p',[_vm._v(\"Your browser will redirect you to Axure RP in a moment.\")]),(_vm.rpVersion !== '10')?_c('p',[_vm._v(\" If it doesn’t, return to Axure RP and click “Help”. \")]):_vm._e()]),(_vm.fetchedLicense)?_c('div',{staticClass:\"text\"},[(_vm.keyData)?_c('div',[_c('p',[_vm._v(\" If RP is unable to connect and sign in, please click Copy Code. Then in Axure RP paste or click Paste Code in the dialog. \")]),(_vm.fetchedLicense && _vm.keyData)?_c('AxCopyToClipboard',{staticClass:\"copy-container\",attrs:{\"value\":_vm.keyData,\"button-text\":\"Copy Code\"}}):_vm._e()],1):_c('div',[_c('p',[_vm._v(\"Please purchase and assign a subscription to your account to continue using Axure RP.\")])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport LicensingService from \"@/services/licensing.service\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxCopyToClipboard from \"@/components/AxCopyToClipboard.vue\";\r\n\r\nexport default Vue.extend({\r\n components: { AxCopyToClipboard },\r\n props: {\r\n requestId: {\r\n type: String,\r\n required: true,\r\n },\r\n machineId: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n token: {\r\n type: String,\r\n required: true,\r\n },\r\n rpVersion: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n data() {\r\n const protocol = this.rpVersion === \"10\" ? \"axurerp10\" : \"axurerp\";\r\n const desktopLink = `${protocol}://signin?requestId=${this.requestId}&authToken=${this.token}`;\r\n\r\n return {\r\n desktopLink,\r\n keyData: \"\",\r\n fetchedLicense: false,\r\n keyTypeText: \"\",\r\n };\r\n },\r\n async mounted() {\r\n if (this.machineId) {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n const licensingHost = axShareConfig?.LicensingServiceHost;\r\n if (licensingHost) {\r\n try {\r\n const now = new Date();\r\n const licensingService = new LicensingService(licensingHost, this.token);\r\n const data = await licensingService.getLicenseData(this.machineId);\r\n const response = data.Payload;\r\n let keyData = response.BestLicense?.key;\r\n if (keyData) {\r\n const expireString = response.BestLicense.expireDate;\r\n const expire = expireString ? new Date(expireString) : now;\r\n\r\n if (expire > now) {\r\n // subscription\r\n this.keyTypeText = \"subscription\";\r\n this.keyData = keyData;\r\n }\r\n } else if (response.CurrentTrial) {\r\n keyData = response.CurrentTrial.TrialKey;\r\n const expireString = response.CurrentTrial.ExpireDate;\r\n const expire = new Date(expireString);\r\n\r\n if (keyData && expire > now) {\r\n this.keyTypeText = \"trial\";\r\n this.keyData = keyData;\r\n }\r\n }\r\n this.fetchedLicense = true;\r\n } catch (error) {\r\n console.error(error);\r\n // suppress licensing host errors.\r\n }\r\n }\r\n }\r\n\r\n // Firefox has a wierd issue, when clicking on element prevents some requests\r\n setTimeout(() => { (this.$refs.link as HTMLElement).click(); }, 1000);\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpRedirect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpRedirect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpRedirect.vue?vue&type=template&id=805ba59a&scoped=true&\"\nimport script from \"./RpRedirect.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpRedirect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpRedirect.vue?vue&type=style&index=0&id=805ba59a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"805ba59a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rp-signin\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Sign in to your Axure account \")]),_c('AxForm',{staticClass:\"form-wrapper\",attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"hide-errors\":\"\"},on:{\"on-error\":_vm.addError},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',{staticClass:\"login-form\"},[_c('div',{staticClass:\"login-form-controls\"},[_c('AxFormGroup',[_c('AxInput',{staticClass:\"login-input\",attrs:{\"autofocus\":\"\",\"input-class\":_vm.AnalyticsClickEvents.LogInEmailInput.eventClass,\"placeholder\":\"Email\",\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"username\"},model:{value:(values.email),callback:function ($$v) {_vm.$set(values, \"email\", $$v)},expression:\"values.email\"}})],1),_c('AxFormGroup',[_c('AxInput',{staticClass:\"login-input\",attrs:{\"placeholder\":\"Password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"current-password\"},model:{value:(values.password),callback:function ($$v) {_vm.$set(values, \"password\", $$v)},expression:\"values.password\"}})],1),_c('AxFormGroup',[_c('AxButton',{class:_vm.buttonClass,attrs:{\"block\":\"\",\"type\":\"submit\",\"large\":\"\",\"disabled\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Sign in \")])],1)],1),_c('AxFormErrors',{attrs:{\"errors\":_vm.errors,\"color\":\"rgb(255, 0, 0)\"}}),_c('div',[_c('AxFormSuccess',{attrs:{\"messages\":_vm.successMessages}})],1),_c('div',{staticClass:\"d-flex login-actions\"},[_c('AxForgotPassword',{attrs:{\"account-service\":_vm.accountService,\"email\":values.email},on:{\"submit\":_vm.clearStatusMessages,\"error\":_vm.forgotPasswordErrors,\"success\":_vm.forgotPasswordSuccess}}),_c('span',[_vm._v(\" | \")]),_c('div',{staticClass:\"text-center\"},[_c('span',[_vm._v(\" Don't have an account? \"),_c('RouterLink',{staticClass:\"text-underline\",attrs:{\"to\":_vm.signupRoute}},[_vm._v(\" Sign up \")])],1)])],1)],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const createCustomEvent = (eventName: string, eventDetail: any) => {\r\n let event;\r\n if (typeof CustomEvent === \"function\") {\r\n event = new CustomEvent(eventName, { detail: eventDetail });\r\n } else {\r\n // Deprecated fallback for IE\r\n event = document.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventName, true, true, eventDetail);\r\n }\r\n\r\n return event;\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxForm',{attrs:{\"submit\":_vm.submit},on:{\"on-error\":_vm.onError},scopedSlots:_vm._u([{key:\"default\",fn:function({ handleSubmit, submitting }){return [_vm._t(\"default\",function(){return [_c('form',[_c('div',{staticClass:\"row justify-content-end\"},[_c('div',{staticClass:\"col-auto\"},[_c('AxButton',{staticClass:\"text-underline forgot-password-button\",attrs:{\"color\":\"link\",\"type\":\"submit\",\"disabled\":submitting},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Forgot Password? \")])],1)])])]},{\"submit\":handleSubmit,\"submitting\":submitting})]}},{key:\"errors\",fn:function(){return [_c('div')]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { SsoId } from \"@shared/models\";\r\n\r\nimport { accountServiceUnavailable } from \"@/common/axshare/messages\";\r\nimport AccountService from \"@/services/account.service\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport { prop } from \"@/components/utils\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n },\r\n\r\n props: {\r\n email: {\r\n type: String,\r\n required: true,\r\n },\r\n accountService: prop({\r\n required: true,\r\n }),\r\n },\r\n\r\n data() {\r\n return {\r\n message: \"\",\r\n };\r\n },\r\n\r\n methods: {\r\n async submit() {\r\n const { accountService } = this;\r\n if (!accountService) {\r\n throw new Error(accountServiceUnavailable);\r\n }\r\n\r\n this.$emit(\"submit\");\r\n this.message = \"\";\r\n const response = await accountService.forgotPassword(this.email, SsoId.AxShare.toString());\r\n this.message = response.message;\r\n this.$emit(\"success\", this.message);\r\n },\r\n\r\n onError(error: string) {\r\n this.$emit(\"error\", error);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxForgotPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxForgotPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxForgotPassword.vue?vue&type=template&id=22e49742&scoped=true&\"\nimport script from \"./AxForgotPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxForgotPassword.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxForgotPassword.vue?vue&type=style&index=0&id=22e49742&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22e49742\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { AnalyticsClickEvents } from \"@/common/axshare\";\r\nimport { accountServiceUnavailable } from \"@/common/axshare/messages\";\r\nimport { createCustomEvent } from \"@/common/lib/events\";\r\nimport { hashPassword } from \"@/common/utils\";\r\nimport { ROUTES } from \"@/router\";\r\nimport AccountService from \"@/services/account.service\";\r\nimport { DoLoginModel } from \"@/services/models/account\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForgotPassword from \"@/components/AxForgotPassword.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormErrors from \"@/components/AxFormErrors.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxFormSuccess from \"@/components/AxFormSuccess.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ninterface Model {\r\n email: string;\r\n password: string;\r\n staySignedIn: boolean;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxForgotPassword,\r\n AxInput,\r\n AxFormErrors,\r\n AxFormSuccess,\r\n },\r\n\r\n props: {\r\n requestId: {\r\n type: String,\r\n required: true,\r\n },\r\n machineId: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n rpVersion: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n return {\r\n AnalyticsClickEvents,\r\n model: {\r\n email: \"\",\r\n password: \"\",\r\n staySignedIn: true,\r\n },\r\n errors: [] as string[],\r\n successMessages: [] as string[],\r\n };\r\n },\r\n\r\n computed: {\r\n accountService(): AccountService | undefined {\r\n const { accountService } = this.$store.state as AxShare;\r\n if (accountService) {\r\n return accountService();\r\n }\r\n return undefined;\r\n },\r\n\r\n signupRoute(): Location {\r\n return { name: ROUTES[\"rp.signup\"].name, query: this.$route.query };\r\n },\r\n\r\n buttonClass(): string {\r\n return (this.machineId ? \"login-button-10 login-submit-button \" : \"login-button-9 login-submit-button \")\r\n + AnalyticsClickEvents.LogInSubmitButton.eventClass;\r\n },\r\n },\r\n\r\n mounted() {\r\n const { user } = this.$store.state as AxShare;\r\n if (user && user.userInfo) {\r\n this.model.email = user.userInfo.userEmail;\r\n }\r\n },\r\n\r\n methods: {\r\n forgotPasswordErrors(errors: string) {\r\n this.setStatusMessages({ errors });\r\n },\r\n\r\n forgotPasswordSuccess(success: string) {\r\n this.setStatusMessages({ success });\r\n },\r\n\r\n setStatusMessages({ success = [], errors = [] }: { success?: string | string[]; errors?: string | string[] }) {\r\n const successMessages = Array.isArray(success) ? success : [success];\r\n const errorMessages = Array.isArray(errors) ? errors : [errors];\r\n this.successMessages = successMessages;\r\n this.errors = errorMessages;\r\n },\r\n\r\n addError(errorMessage: string) {\r\n this.errors.push(errorMessage);\r\n },\r\n\r\n clearStatusMessages() {\r\n this.setStatusMessages({ success: [], errors: [] });\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n this.clearStatusMessages();\r\n const { accountService } = this;\r\n if (!accountService) {\r\n throw new Error(accountServiceUnavailable);\r\n }\r\n const { email, password, staySignedIn } = values;\r\n const loginPassword = hashPassword(password);\r\n const passwordBlank = !password;\r\n const altPassword = loginPassword;\r\n\r\n const model: DoLoginModel = {\r\n loginEmail: email,\r\n loginPassword,\r\n altPassword,\r\n staySignedIn,\r\n clearPass: false,\r\n accountService: true,\r\n passwordBlank,\r\n rpRequestId: this.requestId,\r\n };\r\n\r\n const response = await accountService.doLoginRequest(model);\r\n if (response.success) {\r\n // dispatch custom event for tracking purposes\r\n const event = createCustomEvent(\"rp-signin-success\", { email });\r\n document.dispatchEvent(event);\r\n\r\n await this.$router.push({\r\n name: ROUTES[\"rp.redirect\"].name,\r\n params: {\r\n token: response.authToken,\r\n },\r\n query: {\r\n r: this.requestId,\r\n m: this.machineId,\r\n rp: this.rpVersion,\r\n },\r\n });\r\n } else {\r\n await this.$router.push({\r\n name: ROUTES[\"rp.error\"].name,\r\n });\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpSignin.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpSignin.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpSignin.vue?vue&type=template&id=1e07c9ec&scoped=true&\"\nimport script from \"./RpSignin.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpSignin.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpSignin.vue?vue&type=style&index=0&id=1e07c9ec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e07c9ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rp-signup\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Create your Axure account \")]),_c('AxForm',{staticClass:\"form-wrapper\",attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"hide-errors\":\"\"},on:{\"on-error\":_vm.addError},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',{staticClass:\"login-form\"},[_c('div',{staticClass:\"login-form-controls\"},[_c('AxFormGroup',[_c('AxInput',{staticClass:\"signup-input\",attrs:{\"autofocus\":\"\",\"placeholder\":\"Email\",\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"username\"},model:{value:(values.email),callback:function ($$v) {_vm.$set(values, \"email\", $$v)},expression:\"values.email\"}})],1),_c('AxFormGroup',[_c('AxInput',{staticClass:\"signup-input\",attrs:{\"placeholder\":\"Password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\"},on:{\"input\":function($event){return _vm.passwordValidator.validate($event)}},model:{value:(values.password),callback:function ($$v) {_vm.$set(values, \"password\", $$v)},expression:\"values.password\"}}),_c('div',{staticClass:\"password-help\"},[_vm._v(\" At least 8 characters \")])],1),_c('AxFormGroup',[_c('AxButton',{staticClass:\"signup-button\",attrs:{\"block\":\"\",\"type\":\"submit\",\"large\":\"\",\"disabled\":submitting || !_vm.passwordValidator.isValid || !values.email},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Create Account \")])],1)],1),_c('AxFormErrors',{attrs:{\"errors\":_vm.errors,\"color\":\"rgb(255, 0, 0)\"}}),_c('div',{staticClass:\"text-center\"},[_c('span',{staticClass:\"toc-and-policy\"},[_vm._v(\" By clicking \\\"Create Account\\\", you agree to Axure's \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"https://www.axure.com/terms\"}},[_vm._v(\"Terms of Service\")]),_vm._v(\" and \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"https://www.axure.com/privacy\"}},[_vm._v(\"Privacy Policy\")]),_vm._v(\". \")])])],1)]}}])}),_c('div',{staticClass:\"signup-actions\"},[_c('div',{staticClass:\"text-center\"},[_c('span',[_vm._v(\" Already have an account? \"),_c('RouterLink',{staticClass:\"text-underline\",attrs:{\"to\":_vm.signinRoute}},[_vm._v(\" Sign in \")])],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { accountServiceUnavailable } from \"@/common/axshare/messages\";\r\nimport { PasswordValidator } from \"@/common/axshare/user\";\r\nimport { createCustomEvent } from \"@/common/lib/events\";\r\nimport { ROUTES } from \"@/router\";\r\nimport AccountService from \"@/services/account.service\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormErrors from \"@/components/AxFormErrors.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ninterface Model {\r\n email: string;\r\n password: string;\r\n staySignedIn: boolean;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxInput,\r\n AxFormErrors,\r\n },\r\n\r\n props: {\r\n requestId: {\r\n type: String,\r\n required: true,\r\n },\r\n machineId: {\r\n type: String,\r\n required: false,\r\n default: \"\",\r\n },\r\n rpVersion: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n\r\n data() {\r\n const passwordValidator = new PasswordValidator(false);\r\n return {\r\n model: {\r\n email: \"\",\r\n password: \"\",\r\n staySignedIn: true,\r\n },\r\n errors: [] as string[],\r\n passwordValidator,\r\n };\r\n },\r\n\r\n computed: {\r\n accountService(): AccountService | undefined {\r\n const { accountService } = this.$store.state as AxShare;\r\n if (accountService) {\r\n return accountService();\r\n }\r\n return undefined;\r\n },\r\n\r\n signinRoute(): Location {\r\n return { name: ROUTES[\"rp.signin\"].name, query: this.$route.query };\r\n },\r\n },\r\n\r\n methods: {\r\n addError(errorMessage: string) {\r\n this.errors.push(errorMessage);\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n const { accountService } = this;\r\n if (!accountService) {\r\n throw new Error(accountServiceUnavailable);\r\n }\r\n\r\n const { email, password } = values;\r\n this.errors = [];\r\n\r\n if (!this.passwordValidator.isValid) {\r\n this.errors.push(this.passwordValidator.errorMessage());\r\n return;\r\n }\r\n\r\n const response = await accountService.rpSignUp(email, password, this.requestId);\r\n if (response) {\r\n // dispatch custom event for tracking purposes\r\n const event = createCustomEvent(\"rp-signup-success\", { email });\r\n document.dispatchEvent(event);\r\n\r\n await this.$router.push({\r\n name: ROUTES[\"rp.redirect\"].name,\r\n params: {\r\n token: response,\r\n },\r\n query: {\r\n r: this.requestId,\r\n m: this.machineId,\r\n rp: this.rpVersion,\r\n },\r\n });\r\n } else {\r\n await this.$router.push({\r\n name: ROUTES[\"rp.error\"].name,\r\n });\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpSignup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RpSignup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RpSignup.vue?vue&type=template&id=29a82ae5&scoped=true&\"\nimport script from \"./RpSignup.vue?vue&type=script&lang=ts&\"\nexport * from \"./RpSignup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RpSignup.vue?vue&type=style&index=0&id=29a82ae5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29a82ae5\",\n null\n \n)\n\nexport default component.exports","import { RouteConfig, Route } from \"vue-router\";\r\n\r\nimport prototypePasswordPageLocators from \"tests/e2e/utils/prototypePasswordPageLocators\";\r\n\r\nimport { isString } from \"@/common/lib/guards\";\r\nimport { validateRpRequestId } from \"@/services/user.service\";\r\n\r\nimport RpAuthBase from \"@/components/RpAuth/RpAuthBase.vue\";\r\nimport RpAuthSidebar from \"@/components/RpAuth/RpAuthSidebar.vue\";\r\nimport RpError from \"@/components/RpAuth/RpError.vue\";\r\nimport RpKey from \"@/components/RpAuth/RpKey.vue\";\r\nimport RpRedirect from \"@/components/RpAuth/RpRedirect.vue\";\r\nimport RpSignin from \"@/components/RpAuth/RpSignin.vue\";\r\nimport RpSignup from \"@/components/RpAuth/RpSignup.vue\";\r\n\r\nexport type Keys = \"rp\" | \"rp.signin\" | \"rp.signup\" | \"rp.key\" | \"rp.redirect\" | \"rp.error\";\r\n\r\n// a more elegant version of this function would take arguments like this:\r\n// queryToProps({requestId: [\"r\", \"requestId\"] }, machineId: \"m\"});\r\nconst rpQueryToProps = (route: Route) => {\r\n const props: Record = {};\r\n const requestId = route.query.r || route.query.requestId;\r\n props.requestId = requestId;\r\n props.machineId = route.query.m;\r\n props.rpVersion = route.query.rp;\r\n props.token = route.params?.token;\r\n props.redemptionKey = route.query.k;\r\n\r\n return props;\r\n};\r\n\r\nconst sidebarQueryToProps = (route: Route) => {\r\n const props: Record = {};\r\n props.signin = route.name === \"rp.signin\" || route.name === \"rp.redirect\";\r\n props.isRp10 = Boolean(route.query.rp === \"10\");\r\n return props;\r\n};\r\n\r\nasync function validateRequestIdParam(to: Route) {\r\n const requestId = to.query.r || to.query.requestId;\r\n const valid = !!requestId && isString(requestId) && (await validateRpRequestId(requestId)).IsValid;\r\n return valid;\r\n}\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n rp: {\r\n path: \"/rp\",\r\n name: \"rp\",\r\n component: RpAuthBase,\r\n meta: { requiresAuth: false },\r\n },\r\n \"rp.signin\": {\r\n path: \"signin\",\r\n name: \"rp.signin\",\r\n components: {\r\n default: RpSignin,\r\n sidebar: RpAuthSidebar,\r\n },\r\n props: {\r\n default: rpQueryToProps,\r\n sidebar: sidebarQueryToProps,\r\n },\r\n async beforeEnter(to, _from, next) {\r\n if (await validateRequestIdParam(to)) {\r\n return next();\r\n }\r\n return next({ name: \"rp.error\" });\r\n },\r\n meta: { requiresAuth: false },\r\n },\r\n \"rp.signup\": {\r\n path: \"signup\",\r\n name: \"rp.signup\",\r\n components: {\r\n default: RpSignup,\r\n sidebar: RpAuthSidebar,\r\n },\r\n props: {\r\n default: rpQueryToProps,\r\n sidebar: sidebarQueryToProps,\r\n },\r\n async beforeEnter(to, _from, next) {\r\n if (await validateRequestIdParam(to)) {\r\n return next();\r\n }\r\n return next({ name: \"rp.error\", query: to.query });\r\n },\r\n meta: { requiresAuth: false },\r\n },\r\n \"rp.key\": {\r\n path: \"key\",\r\n name: \"rp.key\",\r\n components: {\r\n default: RpKey,\r\n sidebar: RpAuthSidebar,\r\n },\r\n props: {\r\n default: rpQueryToProps,\r\n sidebar: sidebarQueryToProps,\r\n },\r\n async beforeEnter(to, _from, next) {\r\n if (await validateRequestIdParam(to)) {\r\n return next();\r\n }\r\n return next({ name: \"rp.error\" });\r\n },\r\n meta: { requiresAuth: false },\r\n },\r\n \"rp.redirect\": {\r\n path: \"back-to-rp\",\r\n name: \"rp.redirect\",\r\n components: {\r\n default: RpRedirect,\r\n sidebar: RpAuthSidebar,\r\n },\r\n props: {\r\n default: rpQueryToProps,\r\n sidebar: sidebarQueryToProps,\r\n },\r\n meta: { requiresAuth: false },\r\n beforeEnter(to, _from, next) {\r\n if ((to.query.r || to.query.requestId) && to.params.token) {\r\n return next();\r\n }\r\n return next({ name: \"rp.error\" });\r\n },\r\n },\r\n \"rp.error\": {\r\n path: \"error\",\r\n name: \"rp.error\",\r\n components: {\r\n default: RpError,\r\n sidebar: RpAuthSidebar,\r\n },\r\n props: {\r\n sidebar: { isRp10: true },\r\n },\r\n meta: { requiresAuth: false },\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes.rp,\r\n redirect: routes[\"rp.signin\"],\r\n children: [routes[\"rp.signin\"], routes[\"rp.signup\"], routes[\"rp.key\"], routes[\"rp.redirect\"], routes[\"rp.error\"]],\r\n },\r\n];\r\n\r\nexport default { routes, config };\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxLogin',{attrs:{\"signup-route\":_vm.signupRoute},on:{\"auth-success\":_vm.authSuccess}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"ax-login\"},[_c('AxForm',{staticClass:\"login-form\",attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"errors\":_vm.errors},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return [_c('form',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideHeader),expression:\"!hideHeader\"}],staticClass:\"form-title login-title\"},[_vm._v(\" Sign in to Axure Cloud \")]),_c('div',{staticClass:\"login-form-controls\"},[_c('AxFormGroup',[_c('AxInput',{staticClass:\"login-input\",attrs:{\"autofocus\":\"\",\"input-class\":_vm.AnalyticsClickEvents.LogInEmailInput.eventClass,\"placeholder\":_vm.userNamePlaceholder,\"type\":_vm.userNameInputType,\"name\":\"email\",\"autocomplete\":\"username\"},model:{value:(values.email),callback:function ($$v) {_vm.$set(values, \"email\", $$v)},expression:\"values.email\"}})],1),_c('AxFormGroup',[_c('AxInput',{staticClass:\"login-input login-password\",attrs:{\"placeholder\":\"Password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"current-password\"},model:{value:(values.password),callback:function ($$v) {_vm.$set(values, \"password\", $$v)},expression:\"values.password\"}})],1)],1),_c('AxFormGroup',[_c('AxButton',{staticClass:\"login-button login-submit-button\",class:_vm.AnalyticsClickEvents.LogInSubmitButton.eventClass,attrs:{\"block\":\"\",\"type\":\"submit\",\"color\":\"primary\",\"disabled\":submitting,\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Sign In \")])],1),(!_vm.ldapEnabled)?_c('div',{staticClass:\"d-flex login-actions\"},[(_vm.accountService)?_c('AxForgotPassword',{attrs:{\"account-service\":_vm.accountService,\"email\":values.email.trim()},on:{\"submit\":_vm.clearStatusMessages,\"error\":_vm.forgotPasswordErrors,\"success\":_vm.forgotPasswordSuccess}}):_vm._e(),(_vm.showSignup)?_c('span',[_vm._v(\" | \")]):_vm._e(),(_vm.showSignup)?_c('div',{staticClass:\"text-center\"},[_c('span',[_vm._v(\" Don't have an account? \"),_c('RouterLink',{staticClass:\"text-underline\",attrs:{\"to\":_vm.signupRoute}},[_vm._v(\" Sign up \")])],1)]):_vm._e()],1):_vm._e()],1)]}},{key:\"success\",fn:function(){return [_c('div',[_c('AxFormSuccess',{attrs:{\"messages\":_vm.successMessages}})],1)]},proxy:true}])}),_c('AxFormGroup',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSaml),expression:\"showSaml\"}]},[_c('div',{staticClass:\"login-saml\"},[_c('div',{staticClass:\"login-saml-or text-muted\"},[_vm._v(\" Or \")]),_c('AxSamlLogin')],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxButton',{staticClass:\"saml-login-btn\",attrs:{\"block\":\"\",\"type\":\"submit\",\"large\":\"\",\"color\":\"secondary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleSamlLogin.apply(null, arguments)}}},[_vm._v(\" Sign in using Single Sign-On \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { redirectParamName, wellKnownRoutes } from \"@/common/axshare\";\r\nimport { openExternal } from \"@/common/desktop/links\";\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { updateQueryStringParam } from \"@/common/lib\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n },\r\n\r\n props: {\r\n cssClass: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n\r\n methods: {\r\n async handleSamlLogin() {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n if (axShareConfig) {\r\n let samlUrl = axShareConfig.SamlUrl;\r\n if (samlUrl) {\r\n const redirectParam = this.$route.query[redirectParamName];\r\n const redirect = Array.isArray(redirectParam) ? redirectParam[0] : redirectParam;\r\n if (redirect) {\r\n const resolved = this.$router.resolve({\r\n name: wellKnownRoutes.login.name,\r\n query: this.$route.query,\r\n });\r\n samlUrl = updateQueryStringParam(samlUrl, \"redirect\", encodeURIComponent(resolved.href));\r\n }\r\n if (isElectron) {\r\n samlUrl = updateQueryStringParam(samlUrl, \"redirectToDesktop\", \"true\");\r\n openExternal(samlUrl);\r\n } else {\r\n window.location.href = samlUrl;\r\n }\r\n }\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSamlLogin.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSamlLogin.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSamlLogin.vue?vue&type=template&id=010004a4&scoped=true&\"\nimport script from \"./AxSamlLogin.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSamlLogin.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"010004a4\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport VueRouter from \"vue-router\";\r\n\r\nimport { AxShareConfigModel } from \"@shared/models\";\r\n\r\nimport {\r\n AnalyticsClickEvents, resolveAfterAuthRedirect, redirectParamName, wellKnownRoutes,\r\n} from \"@/common/axshare\";\r\nimport { accountServiceUnavailable } from \"@/common/axshare/messages\";\r\nimport { hashPassword } from \"@/common/utils\";\r\nimport AccountService from \"@/services/account.service\";\r\nimport { DoLoginModel } from \"@/services/models/account\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport { Authenticate } from \"../store/actionTypes\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForgotPassword from \"@/components/AxForgotPassword.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxFormSuccess from \"@/components/AxFormSuccess.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport AxSamlLogin from \"@/components/AxSamlLogin.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\nconst { isNavigationFailure, NavigationFailureType } = VueRouter;\r\n\r\ninterface Model {\r\n email: string;\r\n password: string;\r\n staySignedIn: boolean;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxFormSuccess,\r\n AxForgotPassword,\r\n AxInput,\r\n AxSamlLogin,\r\n },\r\n\r\n props: {\r\n signupRoute: {\r\n type: Object,\r\n required: true,\r\n },\r\n\r\n hideHeader: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n metaInfo: {\r\n titleTemplate: \"Sign in - %s\",\r\n },\r\n\r\n data() {\r\n return {\r\n AnalyticsClickEvents,\r\n model: {\r\n email: \"\",\r\n password: \"\",\r\n staySignedIn: true,\r\n },\r\n\r\n errors: [] as string[],\r\n successMessages: [] as string[],\r\n };\r\n },\r\n\r\n computed: {\r\n accountService(): AccountService | undefined {\r\n const { accountService } = this.$store.state as AxShare;\r\n if (accountService) {\r\n return accountService();\r\n }\r\n return undefined;\r\n },\r\n\r\n showSaml(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return !!axShareConfig && !!axShareConfig.SamlUrl && axShareConfig.LdapAuthenticationEnabled !== true;\r\n },\r\n\r\n showSignup(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n if (axShareConfig !== null && axShareConfig.IsSubInstance === false) return true;\r\n return false;\r\n },\r\n\r\n axShareConfig(): AxShareConfigModel | null {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig;\r\n },\r\n\r\n ldapEnabled(): boolean {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return !!axShareConfig && axShareConfig.LdapAuthenticationEnabled === true;\r\n },\r\n\r\n userNamePlaceholder(): string {\r\n return this.ldapEnabled ? \"Username or Email\" : \"Email\";\r\n },\r\n\r\n userNameInputType(): string {\r\n return this.ldapEnabled ? \"text\" : \"email\";\r\n },\r\n },\r\n\r\n methods: {\r\n forgotPasswordErrors(errors: string) {\r\n this.setStatusMessages({ errors });\r\n },\r\n\r\n forgotPasswordSuccess(success: string) {\r\n this.setStatusMessages({ success });\r\n },\r\n\r\n setStatusMessages({ success = [], errors = [] }: { success?: string | string[]; errors?: string | string[] }) {\r\n const successMessages = Array.isArray(success) ? success : [success];\r\n const errorMessages = Array.isArray(errors) ? errors : [errors];\r\n this.successMessages = successMessages;\r\n this.errors = errorMessages;\r\n },\r\n\r\n clearStatusMessages() {\r\n this.setStatusMessages({ success: [], errors: [] });\r\n },\r\n\r\n async submit({ values }: Submit) {\r\n this.clearStatusMessages();\r\n const { axShareConfig, accountService } = this;\r\n if (!accountService) {\r\n throw new Error(accountServiceUnavailable);\r\n }\r\n const { email, password, staySignedIn } = values;\r\n\r\n const onPremMode = !!axShareConfig && axShareConfig.AxShareOnPrem === true;\r\n const onPremLdapAuthentication = !!axShareConfig && axShareConfig.LdapAuthenticationEnabled === true;\r\n const useClearPassword = onPremLdapAuthentication;\r\n const loginPassword = onPremMode && useClearPassword ? password : hashPassword(password);\r\n const passwordBlank = !password;\r\n const altPassword = onPremLdapAuthentication ? password : \"\";\r\n\r\n const model: DoLoginModel = {\r\n loginEmail: email.trim(), // trim input value, according html standard, related to FF bug\r\n loginPassword,\r\n altPassword,\r\n staySignedIn,\r\n clearPass: useClearPassword,\r\n accountService: true,\r\n passwordBlank,\r\n };\r\n\r\n const redirectParam = this.$route.query[redirectParamName];\r\n const redirect = Array.isArray(redirectParam) ? redirectParam[0] : redirectParam;\r\n if (redirect) {\r\n const resolved = this.$router.resolve({\r\n name: wellKnownRoutes.login.name,\r\n query: this.$route.query,\r\n });\r\n model.redirect = encodeURIComponent(resolved.href);\r\n }\r\n\r\n await accountService.login(model);\r\n await this.$store.dispatch(new Authenticate());\r\n\r\n this.$emit(\"auth-success\");\r\n\r\n const to = resolveAfterAuthRedirect(this.$route, axShareConfig?.AxShareHost);\r\n try {\r\n if (to) await this.$router.push(to);\r\n } catch (error) {\r\n if (!isNavigationFailure(error, NavigationFailureType.redirected)) {\r\n throw error;\r\n }\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxLogin.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxLogin.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxLogin.vue?vue&type=template&id=7b316aca&scoped=true&\"\nimport script from \"./AxLogin.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxLogin.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxLogin.vue?vue&type=style&index=0&id=7b316aca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b316aca\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport AxLogin from \"@/components/AxLogin.vue\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { GetAdminInfo } from \"@/store/admin/actionTypes\";\r\n\r\nexport default Vue.extend({\r\n components: { AxLogin },\r\n\r\n computed: {\r\n signupRoute(): Location {\r\n return {\r\n name: ROUTES.signup.name,\r\n query: this.$route.query,\r\n };\r\n },\r\n },\r\n\r\n methods: {\r\n async authSuccess() {\r\n await this.$store.dispatch(new GetAdminInfo());\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxLoginWeb.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxLoginWeb.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxLoginWeb.vue?vue&type=template&id=52f1533a&\"\nimport script from \"./AxLoginWeb.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxLoginWeb.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('AxSignup',{attrs:{\"login-route\":_vm.loginRoute},on:{\"auth-success\":_vm.authSuccess}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('AxForm',{staticClass:\"login-form\",attrs:{\"value\":_vm.model,\"submit\":_vm.submit,\"errors\":_vm.errors},scopedSlots:_vm._u([{key:\"default\",fn:function({ values, handleSubmit, submitting }){return _c('form',{},[(!_vm.hideHeading)?_c('div',{staticClass:\"form-title login-title signup-title\"},[_vm._v(\" Sign up for Axure Cloud \")]):_vm._e(),_c('AxFormGroup',[_c('div',{staticClass:\"signup-info\"},[_c('span',[_vm._v(\"Axure Cloud is the product design platform for collaborative teams. Share prototypes, discuss changes on-screen and hand-off directly to developers.\")])])]),_c('div',{staticClass:\"login-form-controls\"},[_c('AxFormGroup',[_c('AxInput',{staticClass:\"login-input\",attrs:{\"autofocus\":\"\",\"input-class\":_vm.AnalyticsClickEvents.SignUpEmailInput.eventClass,\"placeholder\":\"Email\",\"type\":\"email\",\"name\":\"email\",\"autocomplete\":\"username\"},model:{value:(values.email),callback:function ($$v) {_vm.$set(values, \"email\", $$v)},expression:\"values.email\"}})],1),_c('AxFormGroup',[_c('AxInput',{staticClass:\"login-input signup-password\",attrs:{\"placeholder\":\"Password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\"},on:{\"input\":function($event){return _vm.passwordValidator.validate($event)}},model:{value:(values.password),callback:function ($$v) {_vm.$set(values, \"password\", $$v)},expression:\"values.password\"}}),(_vm.passwordValidator.useExtraRules)?_c('div',{staticClass:\"validation-rules\"},_vm._l((_vm.passwordValidator.rules),function(rule,index){return _c('div',{key:index,staticClass:\"validation-rule\"},[_c('div',{staticClass:\"mark-icon\"},[_c('AxIcon',{staticClass:\"mark-icon\",class:rule.state ? 'valid-icon' : 'invalid-icon',attrs:{\"name\":rule.state ? 'checkmark-circle' : 'dot'}})],1),_c('span',[_vm._v(_vm._s(rule.message))])])}),0):_c('div',{staticClass:\"password-help\"},[_vm._v(\" At least 8 characters \")])],1)],1),_c('AxFormGroup',[_c('AxButton',{staticClass:\"login-button signup-button\",class:_vm.AnalyticsClickEvents.SignUpSubmitButton.eventClass,attrs:{\"block\":\"\",\"type\":\"submit\",\"color\":\"primary\",\"disabled\":submitting || !_vm.passwordValidator.isValid || !values.email,\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return handleSubmit.apply(null, arguments)}}},[_vm._v(\" Sign Up \")])],1),_c('div',{staticClass:\"text-center\"},[_c('span',{staticClass:\"toc-and-policy\"},[_vm._v(\" By clicking \\\"Sign Up\\\", you agree to Axure's \"),_c('br'),_vm._v(\" \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"https://www.axure.com/terms\"}},[_vm._v(\"Terms of Service\")]),_vm._v(\" and \"),_c('a',{staticClass:\"text-underline\",attrs:{\"href\":\"https://www.axure.com/privacy\"}},[_vm._v(\"Privacy Policy\")]),_vm._v(\". \")])])],1)}}])}),_c('div',{staticClass:\"signup-actions\"},[_c('div',{staticClass:\"text-center\"},[_c('span',[_vm._v(\" Already have an account? \"),_c('RouterLink',{staticClass:\"text-underline\",attrs:{\"to\":_vm.loginRoute}},[_vm._v(\" Sign in \")])],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\n\r\nimport { SsoId } from \"@shared/models\";\r\n\r\nimport { AnalyticsClickEvents, trackEvent } from \"@/common/axshare\";\r\nimport { accountServiceUnavailable } from \"@/common/axshare/messages\";\r\nimport { PasswordValidator } from \"@/common/axshare/user\";\r\nimport AccountService from \"@/services/account.service\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxButton from \"@/components/AxButton.vue\";\r\nimport AxForm from \"@/components/AxForm.vue\";\r\nimport AxFormGroup from \"@/components/AxFormGroup.vue\";\r\nimport AxIcon from \"@/components/AxIcon.vue\";\r\nimport AxInput from \"@/components/AxInput.vue\";\r\nimport { Submit } from \"@/components/types/AxForm\";\r\n\r\ninterface Model {\r\n email: string;\r\n password: string;\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n AxButton,\r\n AxForm,\r\n AxFormGroup,\r\n AxInput,\r\n AxIcon,\r\n },\r\n\r\n props: {\r\n loginRoute: {\r\n type: Object,\r\n required: true,\r\n },\r\n\r\n hideHeading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n metaInfo: {\r\n titleTemplate: \"Sign up - %s\",\r\n },\r\n\r\n data() {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n const passwordUseExtraRules = !!axShareConfig && axShareConfig.PasswordUseExtraRules;\r\n const errors: string[] = [];\r\n const passwordValidator = new PasswordValidator(passwordUseExtraRules);\r\n const model: Model = {\r\n email: \"\",\r\n password: \"\",\r\n };\r\n return {\r\n AnalyticsClickEvents,\r\n model,\r\n errors,\r\n passwordValidator,\r\n };\r\n },\r\n\r\n computed: {\r\n accountService(): AccountService | undefined {\r\n const { accountService } = this.$store.state as AxShare;\r\n if (accountService) {\r\n return accountService();\r\n }\r\n return undefined;\r\n },\r\n },\r\n\r\n methods: {\r\n async submit({ values }: Submit) {\r\n const { accountService } = this;\r\n if (!accountService) {\r\n throw new Error(accountServiceUnavailable);\r\n }\r\n\r\n const { email, password } = values;\r\n this.errors = [];\r\n\r\n if (!this.passwordValidator.isValid) {\r\n this.errors.push(this.passwordValidator.errorMessage());\r\n return;\r\n }\r\n\r\n await accountService.signUp(email, password, SsoId.AxShare.toString());\r\n await accountService.auth();\r\n\r\n trackEvent({ category: \"Sign up Form\", action: \"Success\" });\r\n this.$emit(\"auth-success\");\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSignup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSignup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSignup.vue?vue&type=template&id=191107b6&scoped=true&\"\nimport script from \"./AxSignup.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSignup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AxSignup.vue?vue&type=style&index=0&id=191107b6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"191107b6\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from \"vue\";\r\nimport { Location } from \"vue-router\";\r\n\r\nimport { resolveAfterAuthRedirect } from \"@/common/axshare\";\r\nimport { AxShareConfigModel } from \"@/generated/models\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { GetAdminInfo } from \"@/store/admin/actionTypes\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxSignup from \"@/components/AxSignup.vue\";\r\n\r\nexport default Vue.extend({\r\n components: { AxSignup },\r\n\r\n computed: {\r\n loginRoute(): Location {\r\n return {\r\n name: ROUTES.login.name,\r\n query: this.$route.query,\r\n };\r\n },\r\n\r\n axShareConfig(): AxShareConfigModel | null {\r\n const { axShareConfig } = this.$store.state as AxShare;\r\n return axShareConfig;\r\n },\r\n },\r\n\r\n methods: {\r\n async authSuccess() {\r\n await this.$store.dispatch(new GetAdminInfo());\r\n const to = resolveAfterAuthRedirect(this.$route, this.axShareConfig?.AxShareHost);\r\n if (to) await this.$router.push(to);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSignupWeb.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AxSignupWeb.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AxSignupWeb.vue?vue&type=template&id=597d9b00&\"\nimport script from \"./AxSignupWeb.vue?vue&type=script&lang=ts&\"\nexport * from \"./AxSignupWeb.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { RouteConfig, Route } from \"vue-router\";\r\n\r\nimport { resolveAfterAuthRedirect, wellKnownRoutes } from \"@/common/axshare\";\r\nimport LoginSignup from \"@/pages/LoginSignup.vue\";\r\nimport { ROUTES } from \"@/router\";\r\nimport rpRouter, { Keys as rp } from \"@/router/rp\";\r\nimport store from \"@/store\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport AxLogin from \"@/components/AxLoginWeb.vue\";\r\nimport AxSignup from \"@/components/AxSignupWeb.vue\";\r\n\r\nconst AxResetPassword = () => import(\"@/components/AxResetPassword.vue\");\r\n\r\nexport type Keys = \"entry\" | \"login\" | \"signup\" | \"resetpassword\" | rp;\r\n\r\nconst loggedInRedirect = (to: Route) => {\r\n const {\r\n state: { accountService, axShareConfig },\r\n } = store;\r\n if (accountService && accountService().IsAuthed) {\r\n return resolveAfterAuthRedirect(to, axShareConfig?.AxShareHost);\r\n }\r\n};\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n ...rpRouter.routes,\r\n entry: {\r\n path: wellKnownRoutes.login.path,\r\n name: \"entry\",\r\n component: LoginSignup,\r\n meta: { requiresAuth: false },\r\n },\r\n login: {\r\n ...wellKnownRoutes.login,\r\n component: AxLogin,\r\n meta: { requiresAuth: false },\r\n beforeEnter(to, _from, next) {\r\n const loggedIn = loggedInRedirect(to);\r\n return loggedIn ? next(loggedIn) : next();\r\n },\r\n },\r\n signup: {\r\n path: \"/signup\",\r\n name: \"signup\",\r\n component: AxSignup,\r\n meta: { requiresAuth: false },\r\n beforeEnter(to, __, next) {\r\n const loggedIn = loggedInRedirect(to);\r\n if (loggedIn) return next(loggedIn);\r\n const { axShareConfig } = store.state as AxShare;\r\n if (axShareConfig && axShareConfig.IsSubInstance) {\r\n // signup should not be available for subinstances,\r\n // so redirect to home page in that case\r\n return next({ name: ROUTES.home.name });\r\n }\r\n return next();\r\n },\r\n },\r\n resetpassword: {\r\n path: \"/resetpassword\",\r\n name: \"resetpassword\",\r\n component: AxResetPassword,\r\n beforeEnter(to, _, next) {\r\n // token should be present to access password reset\r\n const { token } = to.query;\r\n if (token) return next();\r\n return next({ name: ROUTES.home.name });\r\n },\r\n meta: { requiresAuth: false },\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes.entry,\r\n children: [routes.login, routes.signup, routes.resetpassword],\r\n },\r\n ...rpRouter.config,\r\n];\r\n\r\nexport default { routes, config };\r\n","import { param } from \"jquery\";\r\nimport { RouteConfig } from \"vue-router\";\r\n\r\nimport { FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport plugins from \"@/common/inspect/plugins\";\r\nimport { getHashVarString } from \"@/common/lib\";\r\nimport { ROUTES } from \"@/router\";\r\nimport { getFirstPage } from \"@/services/project.service\";\r\nimport store from \"@/store\";\r\n\r\nconst Expo = () => import(/* webpackChunkName: \"expo\" */ \"@/pages/Expo.vue\");\r\nconst PageDeleted = () => import(/* webpackChunkName: \"expo\" */ \"@/pages/ProjectPageDeleted.vue\");\r\n\r\n// prettier-ignore\r\nexport type Keys =\r\n | \"expo.show\"\r\n | \"expo.preview\"\r\n | \"expo.inspect\"\r\n | \"expo.build\"\r\n | \"expo.pageDeleted\"\r\n | \"expo.build.all\";\r\n\r\nconst resolveProps = () => ({\r\n project: store.getters.current.node,\r\n});\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n \"expo.show\": {\r\n path: \"show\",\r\n name: \"expo.show\",\r\n props: resolveProps,\r\n async beforeEnter(to, __, next) {\r\n // Used to redirect to member link if Share Link is disabled.\r\n // Here, using parameters from hash, we determine which page in the cloud to redirect to,\r\n // Also if there is no page id in the link parameters, then we try to get the id from the store,\r\n // If there is no page id in the store, we make a request to the server.\r\n // If there is no page Id, then we redirect to the overview page.\r\n const { shortcut } = to.params;\r\n const gids = getHashVarString(window.location.href, \"g\");\r\n\r\n const name = gids.includes(plugins.handoff.gid.toString())\r\n ? ROUTES[\"expo.inspect\"].name : ROUTES[\"expo.preview\"].name;\r\n\r\n const screen = getHashVarString(window.location.href, \"id\");\r\n const page = getHashVarString(window.location.href, \"p\");\r\n let startPage = screen || page;\r\n\r\n if (!startPage) {\r\n const shortcuts = store.getters.shortcuts;\r\n const project = shortcuts[shortcut] as FilesystemNodeShortcut;\r\n if (project) {\r\n if (project.isExpoProject) {\r\n const { artboardsOrder } = store.state.expo.projects[shortcut.toLowerCase()];\r\n if (artboardsOrder.length > 0) startPage = artboardsOrder[0];\r\n } else {\r\n const { fs } = store.state;\r\n const firstPageId = fs.firstPagesMap[project.id]?.Id;\r\n if (firstPageId) {\r\n startPage = firstPageId;\r\n } else {\r\n const firstPage = await getFirstPage(shortcut);\r\n if (firstPage && firstPage.Id) startPage = firstPage.Id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!startPage || getHashVarString(window.location.href, \"open-share-dialog\") === \"true\") {\r\n return next({ name: ROUTES[\"project.overview\"].name, params: { shortcut }, hash: to.hash });\r\n }\r\n return next({ name, params: { screen: startPage, shortcut }, hash: to.hash });\r\n },\r\n },\r\n \"expo.preview\": {\r\n path: \"preview/:screen\",\r\n name: \"expo.preview\",\r\n component: Expo,\r\n props: resolveProps,\r\n meta: {\r\n headerMinimized: true,\r\n },\r\n },\r\n \"expo.build\": {\r\n path: \"build/:screen\",\r\n name: \"expo.build\",\r\n component: Expo,\r\n props: resolveProps,\r\n meta: {\r\n headerMinimized: true,\r\n },\r\n beforeEnter(to, __, next) {\r\n if (disableBuild()) {\r\n return next({\r\n name: ROUTES[\"project.overview\"].name,\r\n params: {\r\n shortcut: to.params.shortcut,\r\n },\r\n });\r\n }\r\n\r\n return next();\r\n },\r\n },\r\n \"expo.build.all\": {\r\n path: \"build\",\r\n name: \"expo.build.all\",\r\n component: Expo,\r\n props: resolveProps,\r\n meta: {\r\n headerMinimized: true,\r\n },\r\n beforeEnter(to, __, next) {\r\n if (disableBuild()) {\r\n return next({\r\n name: ROUTES[\"project.overview\"].name,\r\n params: {\r\n shortcut: to.params.shortcut,\r\n },\r\n });\r\n }\r\n\r\n const location = resolveBuildLocation(to.params.shortcut);\r\n if (location) {\r\n next(location);\r\n } else {\r\n next();\r\n }\r\n },\r\n },\r\n \"expo.inspect\": {\r\n path: \"inspect/:screen\",\r\n name: \"expo.inspect\",\r\n component: Expo,\r\n props: resolveProps,\r\n meta: {\r\n headerMinimized: true,\r\n },\r\n },\r\n \"expo.pageDeleted\": {\r\n path: \"pageDeleted\",\r\n name: \"expo.pageDeleted\",\r\n component: PageDeleted,\r\n props: resolveProps,\r\n },\r\n};\r\n\r\nfunction disableBuild(): boolean {\r\n return store.getters.enterpriseLicenseCheckFailed;\r\n}\r\n\r\nexport function resolveBuildLocation(shortcut: string) {\r\n const { artboardsOrder } = store.state.expo.projects[shortcut.toLowerCase()];\r\n const first = artboardsOrder[0];\r\n if (first) {\r\n return {\r\n name: routes[\"expo.build\"].name,\r\n params: { screen: first },\r\n };\r\n }\r\n}\r\n\r\nconst config = [\r\n routes[\"expo.show\"],\r\n routes[\"expo.preview\"],\r\n routes[\"expo.build\"],\r\n routes[\"expo.build.all\"],\r\n routes[\"expo.inspect\"],\r\n routes[\"expo.pageDeleted\"],\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nimport store from \"@/store\";\r\n\r\nconst Configure = () => import(/* webpackChunkName: \"project-configure\" */ \"@/pages/ProjectConfigure.vue\");\r\nconst Plugins = () => import(/* webpackChunkName: \"project-configure-plugins\" */ \"@/pages/ProjectConfigurePlugins.vue\");\r\nconst PluginsAdd = () => import(/* webpackChunkName: \"project-configure-plugins\" */ \"@/pages/ProjectConfigurePluginsAdd.vue\");\r\nconst PluginsEdit = () => import(/* webpackChunkName: \"project-configure-plugins\" */ \"@/pages/ProjectConfigurePluginsEdit.vue\");\r\nconst PluginsPages = () => import(/* webpackChunkName: \"project-configure-plugins\" */ \"@/pages/ProjectConfigurePluginsPages.vue\");\r\nconst PrettyUrls = () => import(/* webpackChunkName: \"project-configure-pretty-urls\" */ \"@/pages/ProjectConfigurePrettyUrls.vue\");\r\nconst PrettyUrlsAssign = () => import(/* webpackChunkName: \"project-configure-pretty-urls\" */ \"@/pages/ProjectConfigurePrettyUrlsAssign.vue\");\r\nconst PrettyUrlsEdit = () => import(/* webpackChunkName: \"project-configure-pretty-urls\" */ \"@/pages/ProjectConfigurePrettyUrlsEdit.vue\");\r\nconst Redirects = () => import(/* webpackChunkName: \"project-configure-redirects\" */ \"@/pages/ProjectConfigureRedirects.vue\");\r\nconst RedirectsAdd = () => import(/* webpackChunkName: \"project-configure-redirects\" */ \"@/pages/ProjectConfigureRedirectsAdd.vue\");\r\nconst RedirectsEdit = () => import(/* webpackChunkName: \"project-configure-redirects\" */ \"@/pages/ProjectConfigureRedirectsEdit.vue\");\r\n\r\n// prettier-ignore\r\nexport type Keys =\r\n | \"project.configure\"\r\n | \"project.configure.plugins\"\r\n | \"project.configure.plugins.add\"\r\n | \"project.configure.plugins.edit\"\r\n | \"project.configure.plugins.pages\"\r\n | \"project.configure.seo\"\r\n | \"project.configure.seo.set\"\r\n | \"project.configure.seo.edit\"\r\n | \"project.configure.redirects\"\r\n | \"project.configure.redirects.add\"\r\n | \"project.configure.redirects.edit\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n \"project.configure\": {\r\n path: \"configure\",\r\n name: \"project.configure\",\r\n component: Configure,\r\n props: true,\r\n },\r\n \"project.configure.plugins\": {\r\n path: \"plugins\",\r\n name: \"project.configure.plugins\",\r\n meta: {\r\n matchNameAlias: \"project.configure\",\r\n },\r\n component: Plugins,\r\n props: true,\r\n },\r\n \"project.configure.plugins.add\": {\r\n path: \"add\",\r\n name: \"project.configure.plugins.add\",\r\n component: PluginsAdd,\r\n props: true,\r\n },\r\n \"project.configure.plugins.edit\": {\r\n path: \":pluginId/edit\",\r\n name: \"project.configure.plugins.edit\",\r\n component: PluginsEdit,\r\n props: true,\r\n },\r\n \"project.configure.plugins.pages\": {\r\n path: \":pluginId/pages\",\r\n name: \"project.configure.plugins.pages\",\r\n component: PluginsPages,\r\n props: true,\r\n },\r\n \"project.configure.seo\": {\r\n path: \"seo\",\r\n name: \"project.configure.seo\",\r\n meta: {\r\n matchNameAlias: \"project.configure\",\r\n },\r\n component: PrettyUrls,\r\n props: true,\r\n },\r\n \"project.configure.seo.set\": {\r\n path: \"set/:mode\",\r\n name: \"project.configure.seo.set\",\r\n component: PrettyUrlsAssign,\r\n props: true,\r\n },\r\n \"project.configure.seo.edit\": {\r\n path: \":seoId/edit\",\r\n name: \"project.configure.seo.edit\",\r\n component: PrettyUrlsEdit,\r\n props: true,\r\n },\r\n \"project.configure.redirects\": {\r\n path: \"redirects\",\r\n name: \"project.configure.redirects\",\r\n meta: {\r\n matchNameAlias: \"project.configure\",\r\n },\r\n component: Redirects,\r\n props: true,\r\n },\r\n \"project.configure.redirects.add\": {\r\n path: \"add\",\r\n name: \"project.configure.redirects.add\",\r\n component: RedirectsAdd,\r\n props: true,\r\n },\r\n \"project.configure.redirects.edit\": {\r\n path: \":redirectId/edit\",\r\n name: \"project.configure.redirects.edit\",\r\n component: RedirectsEdit,\r\n props: true,\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes[\"project.configure\"],\r\n redirect: () => {\r\n const { axShareConfig } = store.state;\r\n if (axShareConfig?.EnablePlugins) {\r\n return routes[\"project.configure.plugins\"];\r\n }\r\n return routes[\"project.configure.seo\"];\r\n },\r\n children: [\r\n {\r\n ...routes[\"project.configure.plugins\"],\r\n children: [\r\n routes[\"project.configure.plugins.add\"],\r\n routes[\"project.configure.plugins.edit\"],\r\n routes[\"project.configure.plugins.pages\"],\r\n ],\r\n },\r\n {\r\n ...routes[\"project.configure.seo\"],\r\n children: [routes[\"project.configure.seo.set\"], routes[\"project.configure.seo.edit\"]],\r\n },\r\n {\r\n ...routes[\"project.configure.redirects\"],\r\n children: [routes[\"project.configure.redirects.add\"], routes[\"project.configure.redirects.edit\"]],\r\n },\r\n ],\r\n },\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\nimport { RoutePropsFunction } from \"vue-router/types/router\";\r\n\r\nimport { isSketchProject, RouterNavigationLink } from \"@/common/axshare\";\r\nimport { FilesystemNodeShortcut, ShortcutState } from \"@/common/fs\";\r\nimport fsRouter from \"@/router/fs\";\r\nimport homeRouter from \"@/router/home\";\r\nimport { getPrototypeRedirectCommentInfo } from \"@/services/project.service\";\r\nimport store from \"@/store\";\r\nimport { ApiCall, ApiCallOptions } from \"@/store/actionTypes\";\r\nimport { ProjectLoad } from \"@/store/fs/actionTypes\";\r\n\r\nimport configureRouter, { Keys as configure } from \"./configure\";\r\nimport expoRouter, { Keys as expo } from \"./expo\";\r\n\r\nconst Project = () => import(/* webpackChunkName: \"project\" */ \"@/pages/Project.vue\");\r\nconst License = () => import(/* webpackChunkName: \"project\" */ \"@/pages/License.vue\");\r\nconst Overview = () => import(/* webpackChunkName: \"project\" */ \"@/pages/ProjectOverview.vue\");\r\nconst Discussions = () => import(/* webpackChunkName: \"project\" */ \"@/pages/ProjectDiscussions.vue\");\r\nconst DiscussionsOverview = () => import(/* webpackChunkName: \"project\" */ \"@/pages/ProjectDiscussionsOverview.vue\");\r\nconst ProjectNavigation = () => import(/* webpackChunkName: \"project\" */ \"@/components/AxProjectNavigation.vue\");\r\nconst History = () => import(/* webpackChunkName: \"project\" */ \"@/pages/ProjectHistory.vue\");\r\n\r\n// prettier-ignore\r\nexport type Keys =\r\n | \"project\"\r\n | \"project.overview\"\r\n | \"project.comments\"\r\n | \"project.discussions\"\r\n | \"project.discussions.overview\"\r\n | \"project.history\"\r\n | configure\r\n | expo;\r\n\r\nconst props: RoutePropsFunction = route => ({\r\n project: store.getters.current.node,\r\n ...route.params,\r\n});\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n \"project.comments\": {\r\n path: \"project/:shortcut/comments\",\r\n name: \"project.comments\",\r\n async beforeEnter(to, _, next) {\r\n const { shortcut } = to.params;\r\n const projectOverview = { name: routes[\"project.overview\"].name, params: { shortcut } };\r\n try {\r\n const commentInfo = await getPrototypeRedirectCommentInfo(shortcut);\r\n\r\n if (!commentInfo || !commentInfo.IssueCode || !commentInfo.ShortPageId) {\r\n return next(projectOverview);\r\n }\r\n\r\n return next({\r\n name: routes[\"expo.preview\"].name,\r\n params: { shortcut, screen: commentInfo.ShortPageId },\r\n query: { comment: commentInfo.IssueCode },\r\n });\r\n } catch {\r\n return next(projectOverview);\r\n }\r\n },\r\n },\r\n project: {\r\n path: \"project/:shortcut\",\r\n name: \"project\",\r\n components: {\r\n default: Project,\r\n projectNavigation: ProjectNavigation,\r\n license: License,\r\n },\r\n props: {\r\n default: props,\r\n projectNavigation: props,\r\n },\r\n async beforeEnter(to, from, next) {\r\n const fetchProject = async () => {\r\n const { shortcut } = to.params;\r\n\r\n // rewrite to lowercase shortcut parameter\r\n if (to.name && shortcut !== shortcut.toLowerCase()) {\r\n // eslint-disable-next-line no-param-reassign\r\n to.params.shortcut = shortcut.toLowerCase();\r\n return next({\r\n ...to,\r\n name: to.name,\r\n });\r\n }\r\n\r\n await store.dispatch(new ProjectLoad(shortcut));\r\n\r\n const project: FilesystemNodeShortcut | undefined = store.getters.getFsNode(shortcut);\r\n if (!project) {\r\n return next(fsRouter.routes.fs);\r\n }\r\n\r\n if (project.shortcutState === \"Deleted\") {\r\n if (from.path === homeRouter.routes.home.path) {\r\n return next(homeRouter.routes.home.path);\r\n }\r\n\r\n return next(false);\r\n }\r\n\r\n // Block access to configure specific routes\r\n const { axShareConfig } = store.state;\r\n if (axShareConfig) {\r\n const routeName = (to.name || \"\").toLowerCase();\r\n if (routeName.indexOf(\".configure\") >= 0) {\r\n // Block access to all configure routes if advanced tab is not available\r\n if (!isProjectAdvancedTabAvailable(project)) {\r\n const navigateToOverview = { name: routes[\"project.overview\"].name, params: { shortcut } };\r\n return next(navigateToOverview);\r\n }\r\n\r\n // Block access to plugins specific routes if plugins feature is turned off\r\n if (routeName.indexOf(\".plugins\") >= 0\r\n && !axShareConfig.EnablePlugins) {\r\n const navigateToConfigure = { name: routes[\"project.configure\"].name, params: { shortcut } };\r\n return next(navigateToConfigure);\r\n }\r\n }\r\n }\r\n\r\n next();\r\n };\r\n\r\n const onFailure = (_error?: Error | unknown) => {\r\n if (store.state.initializationStatus === \"failure\") {\r\n return next();\r\n }\r\n if (from.path === homeRouter.routes.home.path) {\r\n return next(homeRouter.routes.home.path);\r\n }\r\n\r\n return next(false);\r\n };\r\n const options: ApiCallOptions = {\r\n action: fetchProject,\r\n onFailure,\r\n };\r\n await store.dispatch(new ApiCall(options));\r\n },\r\n },\r\n \"project.overview\": {\r\n path: \"overview\",\r\n name: \"project.overview\",\r\n component: Overview,\r\n props,\r\n },\r\n \"project.discussions\": {\r\n path: \"discussions\",\r\n name: \"project.discussions\",\r\n component: Discussions,\r\n props,\r\n },\r\n \"project.discussions.overview\": {\r\n path: \":issueCode/overview\",\r\n name: \"project.discussions.overview\",\r\n component: DiscussionsOverview,\r\n props,\r\n },\r\n \"project.history\": {\r\n path: \"history\",\r\n name: \"project.history\",\r\n component: History,\r\n props,\r\n },\r\n ...configureRouter.routes,\r\n ...expoRouter.routes,\r\n};\r\n\r\nconst config = [\r\n routes[\"project.comments\"],\r\n {\r\n ...routes.project,\r\n redirect: routes[\"project.overview\"],\r\n children: [\r\n routes[\"project.overview\"],\r\n {\r\n ...routes[\"project.discussions\"],\r\n children: [routes[\"project.discussions.overview\"]],\r\n },\r\n routes[\"project.history\"],\r\n ...configureRouter.config,\r\n ...expoRouter.config,\r\n ],\r\n },\r\n];\r\n\r\nexport const projectLinks = (project: FilesystemNodeShortcut) => {\r\n const { id: shortcut } = project;\r\n const links: RouterNavigationLink[] = [\r\n { title: \"Overview\", to: { name: routes[\"project.overview\"].name, params: { shortcut } } },\r\n { title: \"Discussions\", to: { name: routes[\"project.discussions\"].name, params: { shortcut } } },\r\n { title: \"History\", to: { name: routes[\"project.history\"].name, params: { shortcut } } },\r\n ];\r\n\r\n if (isProjectAdvancedTabAvailable(project)) {\r\n links.push({ title: \"Advanced\", to: { name: routes[\"project.configure\"].name, params: { shortcut } } });\r\n }\r\n\r\n return links;\r\n};\r\n\r\nexport const isProjectAdvancedTabAvailable = (project: FilesystemNodeShortcut) => {\r\n const { axShareConfig } = store.state;\r\n return axShareConfig\r\n && project.shortcutState === ShortcutState.Ok\r\n && !project.viewOnly\r\n && !isSketchProject(project);\r\n};\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import { RouteConfig } from \"vue-router\";\r\n\r\nimport { ROUTES } from \"@/router\";\r\nimport store from \"@/store\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst Configure = () => import(/* webpackChunkName: \"setup\" */ \"@/pages/Setup.vue\");\r\n\r\nexport type Keys = \"setup\";\r\n\r\nconst routes: { readonly [R in Keys]: RouteConfig } = {\r\n setup: {\r\n path: \"/setup\",\r\n name: \"setup\",\r\n component: Configure,\r\n beforeEnter(_, __, next) {\r\n const { axShareConfig } = store.state as AxShare;\r\n const appConfigured: boolean = store.getters.appConfigured;\r\n\r\n if (!!axShareConfig && axShareConfig.AxShareOnPrem && !appConfigured) {\r\n next();\r\n } else {\r\n next(ROUTES.home);\r\n }\r\n },\r\n meta: {\r\n requiresAuth(): boolean {\r\n const appConfigured: boolean = store.getters.appConfigured;\r\n return appConfigured;\r\n },\r\n },\r\n },\r\n};\r\n\r\nconst config = [\r\n {\r\n ...routes.setup,\r\n },\r\n];\r\n\r\nexport default {\r\n routes,\r\n config,\r\n};\r\n","import {\r\n AxShareCurrentUserInfo,\r\n AxShareIdentityProvider,\r\n AxShareSubInstanceInfo,\r\n EmailSettings,\r\n IdentityProviderResponse,\r\n LdapSettings,\r\n ResponseObject,\r\n} from \"@shared/models\";\r\n\r\nimport { exec } from \"@/services/api\";\r\nimport { server } from \"@/services/server\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nexport function setPassword(accountId: string, newPassword: string, pending: boolean) {\r\n const request = {\r\n targetUserId: accountId,\r\n password: newPassword,\r\n pending,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/setpassword\", formData));\r\n}\r\n\r\nexport function setEmail(accountId: string, email: string) {\r\n const request = {\r\n targetUserId: accountId,\r\n email,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/setemail\", formData));\r\n}\r\n\r\nexport function addToSaml(accountIds: string) {\r\n const request = {\r\n userIds: accountIds,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/addtosaml\", formData));\r\n}\r\n\r\nexport function setAccessLevel(accountIds: string, accessLevel: number) {\r\n const request = {\r\n userIds: accountIds,\r\n accessLevel,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/setaccesslevel\", formData));\r\n}\r\n\r\nexport function addAccounts(\r\n userEmails: string,\r\n useSaml: boolean,\r\n password: string,\r\n accessLevel: number,\r\n pending: boolean,\r\n isRpEnterprise: boolean,\r\n) {\r\n const request = {\r\n userEmails,\r\n useSaml,\r\n password,\r\n accessLevel,\r\n pending,\r\n isRpEnterprise,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/addaccounts\", formData));\r\n}\r\n\r\nexport function getUserInfo() {\r\n return exec(server.get(\"/admin/getcurrentuserinfo\"));\r\n}\r\n\r\nexport function removeFromSaml(userIds: string) {\r\n const request = {\r\n userIds,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/removefromsaml\", formData));\r\n}\r\n\r\nexport function changeUserState(userIds: string, active: boolean, isRpEnterprise?: boolean) {\r\n const request = {\r\n userIds,\r\n active,\r\n isRpEnterprise,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/changeuserstate\", formData));\r\n}\r\n\r\nexport function getEmailSettings() {\r\n return exec(server.get(\"/admin/getemailsettings\"));\r\n}\r\n\r\nexport function saveEmailSettings(settings: EmailSettings) {\r\n const request = {\r\n settings,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/submitemail\", formData));\r\n}\r\n\r\nexport function sendTestEmail(settings: EmailSettings, recepient: string) {\r\n const request = {\r\n settings,\r\n recepient,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/sendtestemail\", formData));\r\n}\r\n\r\nexport function getSamlSettings() {\r\n return exec(server.get(\"/admin/getsamlsettings\"));\r\n}\r\n\r\nexport function saveSamlSettings(settings: AxShareIdentityProvider, certFile: any) {\r\n const request = {\r\n provider: settings,\r\n loginFile: certFile,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/identity/savesamlsettings\", formData));\r\n}\r\n\r\nexport function clearSaml() {\r\n return exec(server.post(\"/admin/clearsaml\"));\r\n}\r\n\r\nexport function getLdapSettings() {\r\n return exec(server.get(\"/admin/getldapsettings\"));\r\n}\r\n\r\nexport function testLdapAuthentication(settings: LdapSettings, login: string, password: string, certFile: any) {\r\n const request = {\r\n settings,\r\n login,\r\n password,\r\n certFile,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/testldapauthentication\", formData));\r\n}\r\n\r\nexport function saveLdapSettings(settings: LdapSettings, certFile: any) {\r\n const request = {\r\n settings,\r\n certFile,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/submitldap\", formData));\r\n}\r\n\r\nexport function getSubInstanceInfo() {\r\n return exec(server.get(\"/admin/getsubinstanceinfo\"));\r\n}\r\n\r\nexport function getLicenseKey() {\r\n return exec(server.get(\"/admin/getlicensekey\"));\r\n}\r\n\r\nexport function setLicenseKey(licenseKey: string) {\r\n const request = {\r\n licenseKey,\r\n };\r\n const formData = objectToFormData(request);\r\n return exec(server.post(\"/admin/setlicensekey\", formData));\r\n}\r\n","import axios, { AxiosError, AxiosResponse, Cancel } from \"axios\";\r\n\r\nimport { ApiResponseObject, ResponseObjectOf, RawResponse } from \"@/services/models/responseObject\";\r\n\r\nexport function mapResponse(o: any): ApiResponseObject {\r\n if (axios.isCancel(o)) return fromAxiosCancel(o);\r\n if (axios.isAxiosError(o)) return fromAxiosError(o);\r\n if (o instanceof Error) return fromError(o);\r\n if (isAxiosResponse(o)) return fromAxiosResponse(o);\r\n if (isResponse(o)) return fromResponse(o, \"\");\r\n return {\r\n data: {} as T,\r\n success: false,\r\n message: \"\",\r\n errorMessage: \"Couldn't map response payload.\",\r\n redirecturl: \"\",\r\n requestUrl: \"\",\r\n };\r\n}\r\n\r\nfunction fromError(o: Error): ApiResponseObject {\r\n return {\r\n data: {},\r\n errorMessage: o.message,\r\n message: o.message,\r\n success: false,\r\n redirecturl: \"\",\r\n requestUrl: \"\",\r\n };\r\n}\r\n\r\nfunction fromAxiosCancel({ message }: Cancel): ApiResponseObject {\r\n return {\r\n data: {},\r\n message: message ?? \"Operation cancelled\",\r\n errorMessage: message ?? \"Operation cancelled\",\r\n success: false,\r\n requestCancelled: true,\r\n redirecturl: \"\",\r\n requestUrl: \"\",\r\n };\r\n}\r\n\r\nfunction fromAxiosError(o: AxiosError): ApiResponseObject {\r\n const value: ApiResponseObject = {\r\n data: {},\r\n errorMessage: o.message,\r\n message: o.message,\r\n success: false,\r\n redirecturl: \"\",\r\n requestUrl: o.config?.url || o.request.responseURL,\r\n };\r\n\r\n if (o.response && isAxiosResponse(o.response)) {\r\n value.data = fromAxiosResponse(o.response).data;\r\n value.response = rawResponse(o.response);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction fromAxiosResponse(o: AxiosResponse): ApiResponseObject {\r\n const requestUrl = o.config.url || o.request.responseURL;\r\n if (isResponse(o.data)) {\r\n return fromResponse(o.data, requestUrl, o);\r\n }\r\n return {\r\n requestUrl,\r\n success: true,\r\n data: o.data,\r\n message: o.data.message,\r\n errorMessage: o.data.errorMessage,\r\n redirecturl: o.data.redirecturl,\r\n response: rawResponse(o),\r\n };\r\n}\r\n\r\nfunction fromResponse(\r\n response: ResponseObjectOf,\r\n requestUrl: string,\r\n axiosResponse?: AxiosResponse,\r\n): ApiResponseObject {\r\n return {\r\n ...response,\r\n requestUrl,\r\n response: axiosResponse ? rawResponse(axiosResponse) : undefined,\r\n };\r\n}\r\n\r\nfunction rawResponse({ status, statusText, headers }: AxiosResponse): RawResponse {\r\n return { status, statusText, headers };\r\n}\r\n\r\nfunction isAxiosResponse(o: any): o is AxiosResponse {\r\n return o instanceof Object && \"data\" in o && \"config\" in o && \"status\" in o && \"statusText\" in o && \"headers\" in o;\r\n}\r\n\r\nfunction isResponse(o: any): o is ResponseObjectOf {\r\n return (\r\n o instanceof Object && \"success\" in o\r\n // &&\r\n // \"message\" in o &&\r\n // \"errorMessage\" in o &&\r\n // \"redirecturl\" in o\r\n );\r\n}\r\n","import {\r\n DbConnectionError,\r\n ApiExceptionError,\r\n ReadOnlyError,\r\n SignInReadOnlyError,\r\n JsonSettingsLoadError,\r\n} from \"@/common/axshare/errors\";\r\nimport { isRelativeUrl } from \"@/common/lib/string\";\r\nimport { ApiErrorData, ApiErrorTypes } from \"@/generated/models\";\r\nimport { ApiResponseObject, RawResponse } from \"@/services/models/responseObject\";\r\nimport { mapResponse } from \"@/services/utils/responseMapper\";\r\n\r\nexport interface Options {\r\n noRedirect?: boolean;\r\n ignoreResponseRedirectUrl?: boolean;\r\n}\r\n\r\nconst defaultOptions: Options = {\r\n noRedirect: false,\r\n ignoreResponseRedirectUrl: false,\r\n};\r\n\r\nexport async function exec(\r\n request: Promise<{}>,\r\n extractorOrOptions: ((payload: ApiResponseObject) => T) | Options = dataExtractor,\r\n options: Options = defaultOptions,\r\n) {\r\n let payload: ApiResponseObject | null = null;\r\n let response;\r\n try {\r\n response = await request;\r\n } catch (reason) {\r\n payload = mapResponse(reason);\r\n }\r\n if (!payload) {\r\n payload = mapResponse(response);\r\n }\r\n if (typeof extractorOrOptions === \"function\") {\r\n return processPayload(payload, extractorOrOptions, options);\r\n }\r\n return processPayload(payload, dataExtractor, extractorOrOptions);\r\n}\r\n\r\nfunction dataExtractor(payload: ApiResponseObject) {\r\n const hasData = payload.data !== undefined && payload.data !== null;\r\n if (hasData) {\r\n return payload.data;\r\n }\r\n return (payload as any) as T;\r\n}\r\n\r\nfunction processPayload(\r\n payload: ApiResponseObject,\r\n extractor: (payload: ApiResponseObject) => T,\r\n options: Options,\r\n): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!options.noRedirect) {\r\n if (payload.forceRedirect && payload.redirecturl) {\r\n redirect(payload.redirecturl);\r\n return;\r\n }\r\n\r\n if (!options.ignoreResponseRedirectUrl && payload.redirecturl) {\r\n redirect(payload.redirecturl);\r\n return;\r\n }\r\n }\r\n\r\n const { success } = payload;\r\n if (!success) {\r\n const reason = payload.errorMessage || payload.message || \"API returned { success: false } and message is missing.\";\r\n if (process.env.NODE_ENV === \"development\") {\r\n logError(payload, reason);\r\n }\r\n\r\n const data: any = payload.data;\r\n if (isDbConnectionPayload(data) && data.dbConnectionFailed) {\r\n reject(new DbConnectionError(reason));\r\n }\r\n if (isJsonSettingsExceptionPayload(data) && data.jsonLoadException) {\r\n reject(new JsonSettingsLoadError(reason));\r\n }\r\n if (isApiErrorPayload(data)) {\r\n switch (data.ApiErrorType) {\r\n case ApiErrorTypes.SignInReadOnlyError:\r\n reject(new SignInReadOnlyError(reason));\r\n break;\r\n case ApiErrorTypes.ReadOnlyError:\r\n reject(new ReadOnlyError(reason));\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (isExceptionResponse(payload)) {\r\n const exceptionId = getExceptionId(payload.response);\r\n reject(new ApiExceptionError(payload.data, exceptionId));\r\n }\r\n\r\n if (payload.message === \"Network Error\") {\r\n reject(new Error(\"We're having trouble connecting. Please, check your connection and try again.\"));\r\n }\r\n reject(new Error(reason));\r\n } else {\r\n resolve(extractor(payload));\r\n }\r\n });\r\n}\r\n\r\nfunction isDbConnectionPayload(data: any): data is { dbConnectionFailed: boolean } {\r\n return !!data && typeof data.dbConnectionFailed === \"boolean\";\r\n}\r\n\r\nfunction isJsonSettingsExceptionPayload(data: any): data is { jsonLoadException: boolean } {\r\n return !!data && typeof data.jsonLoadException === \"boolean\";\r\n}\r\n\r\nfunction isExceptionResponse(\r\n payload: ApiResponseObject,\r\n): payload is ApiResponseObject & { response: RawResponse } {\r\n return !!payload.response && !!getExceptionId(payload.response);\r\n}\r\n\r\nfunction getExceptionId(response: RawResponse) {\r\n return response.headers[\"x-exception-id\"];\r\n}\r\n\r\nfunction isApiErrorPayload(data: any): data is ApiErrorData {\r\n return !!data && typeof data.ApiErrorType === \"number\";\r\n}\r\n\r\nfunction redirect(target: string) {\r\n if (isRelativeUrl(target)) {\r\n const baseURL = \"\"; // getBaseUrl();\r\n if (baseURL !== undefined && isRelativeUrl(baseURL)) {\r\n window.location.href = target;\r\n return;\r\n }\r\n window.location.href = `${baseURL}${target}`;\r\n return;\r\n }\r\n window.location.href = target;\r\n}\r\n\r\nfunction logError(payload: ApiResponseObject, reason?: string) {\r\n const error = {\r\n requestUrl: payload.requestUrl,\r\n reason,\r\n };\r\n console.error(`Error occurred during API request: ${prettify(error)}`);\r\n console.warn(payload);\r\n}\r\n\r\nfunction prettify(value: unknown) {\r\n return JSON.stringify(value, null, 2).replace(/\\n\\r?/g, \"\\n\\t\");\r\n}\r\n","import {\r\n Action,\r\n AddHotspotRequest,\r\n ArchiveArtboardRequest,\r\n Artboard,\r\n Asset,\r\n CreateMasterRequest,\r\n DeleteArtboardRequest,\r\n DeleteArtboardsRequest,\r\n DeleteHotspotRequest,\r\n DeviceDropDownOption,\r\n EditHotspotRequest,\r\n Master,\r\n ModifyMasterRequest,\r\n Platform,\r\n Project,\r\n ReorderArtboardRequest,\r\n SetHeaderFooterHeightRequest,\r\n SetZoomRequest,\r\n UpdatePlatformRequest,\r\n WebPlatform,\r\n ExpoStaticContent,\r\n} from \"@shared/expo\";\r\nimport { VarsJs, CreateMasterJs } from \"@shared/models\";\r\n\r\nimport { exec } from \"@/services/api\";\r\nimport { CreateExpoProjectModel } from \"@/services/models/expo\";\r\nimport { ResponseObject } from \"@/services/models/responseObject\";\r\nimport { server } from \"@/services/server\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nexport interface ArtboardBundle {\r\n artboard: Artboard;\r\n assets: { [key: string]: Asset };\r\n imgUrls: { [key: string]: string };\r\n thumbnails: { [key: string]: string };\r\n}\r\n\r\ninterface HotspotAddResponse {\r\n artboardId: string;\r\n action: Action;\r\n tagVal: string;\r\n}\r\n\r\ninterface HotspotEditResponse {\r\n artboardId: string;\r\n action: Action;\r\n tagVal: string;\r\n}\r\n\r\ninterface HotspotDeleteResponse {\r\n artboardId: string;\r\n actionId: string;\r\n}\r\n\r\nexport interface UploadAsset {\r\n artboards: Artboard[];\r\n urls: string[];\r\n assets: Asset[];\r\n}\r\n\r\nexport interface UploadBgImg {\r\n platform: WebPlatform;\r\n url: string;\r\n}\r\n\r\nexport async function getStaticContent(shortcut: string, archivedOnly: boolean) {\r\n return exec(server.get(`/expo/getstaticcontent/${shortcut}?archivedOnly=${archivedOnly}`));\r\n}\r\n\r\nexport async function getProject(shortcut: string, getFullResponse: boolean = false) {\r\n const result = await exec(server.get(`/expo/getproject/${shortcut}`));\r\n return getFullResponse ? result : (result.project as Project);\r\n}\r\n\r\nexport async function updatePlatform(shortcut: string, platform: Platform) {\r\n const data: UpdatePlatformRequest = { platform };\r\n return exec(server.post(`/expo/updateplatform/${shortcut}`, data));\r\n}\r\n\r\nexport async function uploadBackgroundImage(shortcut: string, img: FormData) {\r\n const formData = objectToFormData({}, undefined, img);\r\n return exec(server.post(`/expo/uploadbackgroundimg/${shortcut}`, formData));\r\n}\r\n\r\nexport async function deleteBackgroundImage(shortcut: string) {\r\n return exec(server.post(`/expo/deletebackgroundimg/${shortcut}`));\r\n}\r\n\r\nexport async function getArtboard(shortcut: string, artboardId: string) {\r\n const response = await exec(server.get(`/expo/getartboard/${shortcut}?artboardId=${artboardId}`));\r\n return {\r\n artboard: response.artboard,\r\n artboardAsset: response.assets[response.artboard.AssetId],\r\n artboardAssetSrc: response.imgUrls[response.artboard.AssetId],\r\n artboardThumbnailSrc: response.thumbnails[response.artboard.AssetId],\r\n assets: response.assets,\r\n assetsUrls: response.imgUrls,\r\n thumbnails: response.thumbnails,\r\n };\r\n}\r\n\r\nexport function artboardDelete(shortcut: string, artboardId: string) {\r\n const data: DeleteArtboardRequest = { artboardId };\r\n return exec(server.post(`/expo/deleteartboard/${shortcut}`, data));\r\n}\r\n\r\nexport function artboardsDelete(shortcut: string, artboardIds: string[]) {\r\n const data: DeleteArtboardsRequest = { artboardIds };\r\n return exec(server.post(`/expo/deleteartboards/${shortcut}`, data));\r\n}\r\n\r\nexport function artboardArchive(shortcut: string, artboardId: string) {\r\n const data: ArchiveArtboardRequest = { artboardId };\r\n return exec(server.post(`/expo/archiveartboard/${shortcut}`, data));\r\n}\r\n\r\nexport function artboardUnarchive(shortcut: string, artboardId: string) {\r\n const data: ArchiveArtboardRequest = { artboardId };\r\n return exec(server.post(`/expo/unarchiveartboard/${shortcut}`, data));\r\n}\r\n\r\nexport function artboardReorder(\r\n shortcut: string,\r\n artboardId: string,\r\n tailArtboardId: string = \"\",\r\n fullResequence: boolean = false\r\n) {\r\n const data: ReorderArtboardRequest = {\r\n targetAbId: artboardId,\r\n tailAbId: tailArtboardId,\r\n fullResequence,\r\n };\r\n return exec(server.post(`/expo/reorderartboard/${shortcut}`, data));\r\n}\r\n\r\nexport function addArtboard(shortcut: string, artboard: File) {\r\n const data = new FormData();\r\n data.append(\"fileData\", artboard);\r\n return exec(server.post(`/expo/addartboard/${shortcut}`, data));\r\n}\r\n\r\nexport function addRemoveArtboardMaster(\r\n shortcut: string,\r\n artboardId: string,\r\n masterId: string,\r\n isAdd: boolean = false\r\n) {\r\n const data: ModifyMasterRequest = {\r\n artboardId,\r\n masterId,\r\n name: \"\",\r\n };\r\n\r\n return exec(server.post(`/expo/${isAdd ? \"addmaster\" : \"removemaster\"}/${shortcut}`, data));\r\n}\r\n\r\nexport function hotspotAdd(shortcut: string, artboard: Artboard, action: Action) {\r\n const data: AddHotspotRequest = {\r\n tag: \"\",\r\n hotspot: action.Hotspot,\r\n setting: action.Setting,\r\n type: action.Type,\r\n artboardId: action.IsMaster ? undefined : artboard.Id,\r\n masterId: action.IsMaster ? action.ParentId : undefined,\r\n relativeToBottom: action.RelativeToBottom,\r\n };\r\n return exec(server.post(`/expo/addhotspot/${shortcut}`, data));\r\n}\r\n\r\nexport function hotspotEdit(shortcut: string, originalAction: Action, action: Action) {\r\n const data: EditHotspotRequest = {\r\n sourceId: originalAction.ParentId,\r\n targetId: action.ParentId,\r\n actionId: action.Id,\r\n hotspot: action.Hotspot,\r\n setting: action.Setting,\r\n type: action.Type,\r\n relativeToBottom: action.RelativeToBottom,\r\n isSourceMaster: originalAction.IsMaster,\r\n isTargetMaster: action.IsMaster,\r\n };\r\n\r\n return exec(server.post(`/expo/edithotspot/${shortcut}`, data));\r\n}\r\n\r\nexport function hotspotDelete(shortcut: string, isMaster: boolean, sourceId: string, actionId: string) {\r\n const data: DeleteHotspotRequest = {\r\n isMaster,\r\n sourceId,\r\n actionId,\r\n };\r\n return exec(server.post(`/expo/deletehotspot/${shortcut}`, data));\r\n}\r\n\r\nexport function masterCreate(shortcut: string, name: string, artboardId: string) {\r\n const data: CreateMasterRequest = {\r\n name,\r\n artboardId,\r\n };\r\n return exec(server.post(`/expo/createmaster/${shortcut}`, data));\r\n}\r\n\r\nexport function masterRename(shortcut: string, masterId: string, name: string) {\r\n const data: ModifyMasterRequest = {\r\n artboardId: \"\",\r\n masterId,\r\n name,\r\n };\r\n return exec(server.post(`/expo/renamemaster/${shortcut}`, data));\r\n}\r\n\r\nexport function masterCopy(shortcut: string, artboardId: string, masterId: string) {\r\n const data: ModifyMasterRequest = {\r\n artboardId,\r\n masterId,\r\n name: \"\",\r\n };\r\n return exec(server.post(`/expo/copymaster/${shortcut}`, data));\r\n}\r\n\r\nexport function masterDelete(shortcut: string, masterId: string) {\r\n const data: ModifyMasterRequest = {\r\n artboardId: \"\",\r\n masterId,\r\n name: \"\",\r\n };\r\n return exec(server.post(`/expo/deletemaster/${shortcut}`, data));\r\n}\r\n\r\nexport async function saveProjectZoom(shortcut: string, zoom: number) {\r\n const data: SetZoomRequest = { zoom };\r\n return exec(server.post(`/expo/setzoom/${shortcut}`, data));\r\n}\r\n\r\nexport async function setHeaderFooterHeight(shortcut: string, artboard: Artboard, height: number, isHeader: boolean) {\r\n const data: SetHeaderFooterHeightRequest = {\r\n artboardId: artboard.Id,\r\n height,\r\n isHeader,\r\n };\r\n return exec(server.post(`/expo/setheaderfooterheight/${shortcut}`, data));\r\n}\r\n\r\nexport function createProject(model: CreateExpoProjectModel) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/expo/create\", formData));\r\n}\r\n\r\nexport function checkExpoNameValid(name: string, folderId: string) {\r\n const formData = objectToFormData({ name, folderId });\r\n return exec(server.post(\"/expo/checklimitexponamevalid\", formData));\r\n}\r\n\r\nlet deviceList: DeviceDropDownOption[] | undefined;\r\nexport async function getDeviceList() {\r\n // let's cache device list forever in memory because it changes extremely rarely\r\n if (deviceList) return deviceList;\r\n const deviceListResponse = await exec(server.get(\"/expo/getDeviceList\"));\r\n deviceList = deviceListResponse;\r\n return deviceList;\r\n}\r\n","import {\r\n FilesystemFolderInfo,\r\n FilesystemRootListingJs,\r\n ListingJs,\r\n ListJs,\r\n RecentJs,\r\n VarsJs,\r\n FilesystemSearchItemJs,\r\n InvitationJs,\r\n RequestInviteResponse,\r\n AccountRowJs,\r\n FolderRowJs,\r\n} from \"@shared/models\";\r\n\r\nimport { FilesystemNodeDeletable, FilesystemNodeMovable, FilesystemNodeType } from \"@/common/fs\";\r\nimport { jsDateFromAspDateString } from \"@/common/lib\";\r\nimport { exec } from \"@/services/api\";\r\nimport { ShortcutType, UserFilesystemResponse } from \"@/services/models\";\r\nimport {\r\n ConfigureSecurityModel,\r\n DeleteItemsModel,\r\n DirectoryTree,\r\n FolderCreateModel,\r\n FolderNav,\r\n ManageUsersInviteModel,\r\n ManageUsersLeaveModel,\r\n ManageUsersRemoveModel,\r\n MoveItemsModel,\r\n RenameFolderInfo,\r\n RenameWorkspaceInfo,\r\n} from \"@/services/models/filesystem\";\r\nimport { ResponseObject } from \"@/services/models/responseObject\";\r\nimport { server } from \"@/services/server\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nexport function createFolder(model: FolderCreateModel) {\r\n const formData = objectToFormData({ ...model });\r\n return exec(server.post(\"/fs/createfolder\", formData));\r\n}\r\n\r\nexport function moveItems(nodes: FilesystemNodeMovable[], from: string, to: string) {\r\n const items = nodes.map(item => {\r\n if (item.type === FilesystemNodeType.Folder) {\r\n return `folder:${item.id}`;\r\n }\r\n if (item.shortcut) {\r\n return `prototype:${item.shortcut}`;\r\n }\r\n return `prototype:${item.id}`;\r\n });\r\n const model: MoveItemsModel = {\r\n currentFolderId: from,\r\n destination: to,\r\n items,\r\n };\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/moveitems\", formData));\r\n}\r\n\r\nexport async function deleteItems(nodes: FilesystemNodeDeletable[], from: string) {\r\n const filesystemDelete = nodes.every(node => node.type === FilesystemNodeType.Workspace);\r\n\r\n const items = nodes.map(node => {\r\n const { type, id } = node;\r\n switch (type) {\r\n case FilesystemNodeType.Folder:\r\n return `folder:${id}`;\r\n case FilesystemNodeType.Shortcut:\r\n return `prototype:${id}`;\r\n case FilesystemNodeType.Workspace:\r\n return `filesystem:${id}`;\r\n default: {\r\n throw new Error(`Incorrect type passed trying to delete nodes, ${type}`);\r\n }\r\n }\r\n });\r\n\r\n const model: DeleteItemsModel = {\r\n items,\r\n };\r\n\r\n if (filesystemDelete) {\r\n model.filesystemDelete = true;\r\n } else {\r\n model.currentFolderId = from;\r\n }\r\n\r\n const formData = objectToFormData(model);\r\n const result = await exec(server.post(\"/fs/deleteitems\", formData));\r\n return result;\r\n}\r\n\r\nexport function archiveWorkspace(filesystemId: string, archive: boolean) {\r\n const formData = objectToFormData({ filesystemId, archive });\r\n return exec(server.post(\"/fs/archiveworkspace\", formData));\r\n}\r\n\r\nexport function favoriteWorkspace(filesystemId: string, favorite: boolean) {\r\n const formData = objectToFormData({ filesystemId, favorite });\r\n return exec(server.post(\"/fs/favoriteworkspace\", formData));\r\n}\r\n\r\nexport function getUserDirectoryTree() {\r\n return exec(server.get(\"/fs/getuserdirectorytree\"));\r\n}\r\n\r\nexport async function getUserSearchData() {\r\n const searchItems = await exec(server.get(\"/fs/getusersearchdata\"));\r\n const searchData: FilesystemSearchItem[] = searchItems.map(item => {\r\n const searchItem: FilesystemSearchItem = {\r\n isSearchResult: true,\r\n id: item.id,\r\n name: item.name,\r\n type: item.type as FilesystemNodeType,\r\n subtype: item.subtype,\r\n updated: jsDateFromAspDateString(item.updated),\r\n lastUpdatedShortcut: item.lastUpdatedShortcut,\r\n folderId: item.folderId,\r\n workspaceId: item.workspaceId,\r\n viewOnly: item.viewOnly,\r\n isUserOnly: item.isUserOnly,\r\n prototypeUrl: item.prototypeUrl,\r\n shortcutState: item.shortcutState,\r\n hasPassword: item.hasPassword,\r\n isUserOnlyWorkspace: item.IsUserOnlyWorkspace,\r\n resourceDirVersion: item.ResourceDirVersion,\r\n };\r\n return searchItem;\r\n });\r\n return searchData;\r\n}\r\n\r\nexport async function getUserDefaultFs() {\r\n const workspaces = await getUserWorkspaces();\r\n return workspaces.Filesystems.find(fs => fs.IsDefaultFs);\r\n}\r\n\r\nexport function getUserWorkspaces() {\r\n return exec(\r\n server.get(\"/fs/getuserworkspaces\", {\r\n params: {\r\n skipEntryCount: true,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getWorkspaceInvitation(filesystemId: string) {\r\n return exec(\r\n server.get(\"/fs/getworkspaceinvitation\", {\r\n params: {\r\n fsId: filesystemId,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getFilesystemRootFolderContents(filesystemId: string) {\r\n return exec(\r\n server.get(\"/fs/getfilesystemrootfoldercontents\", {\r\n params: {\r\n filesystemId,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getfolderContents(folderId: string) {\r\n return exec(\r\n server.get(\"/fs/getfoldercontents\", {\r\n params: {\r\n folderId,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getRecents() {\r\n return exec>(server.get(\"/fs/getrecents\"));\r\n}\r\n\r\nexport function createRecent(shortcut: string) {\r\n const formData = objectToFormData({ shortcut });\r\n return exec(server.post(\"/fs/createrecent\", formData));\r\n}\r\n\r\nexport function getFolderNavById(folderId: string) {\r\n return exec(\r\n server.get(\"/fs/getfoldernavbyid\", {\r\n params: {\r\n folderId,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getFolderNavByFilesystemId(filesystemId: string) {\r\n return exec(\r\n server.get(\"/fs/getfoldernavbyfilesystemid\", {\r\n params: {\r\n filesystemId,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getFolderNavByShortcutId(shortcut: string) {\r\n return exec(\r\n server.get(\"/fs/getfoldernavbyshortcutid\", {\r\n params: {\r\n shortcut,\r\n },\r\n }),\r\n );\r\n}\r\n\r\nexport function getNextWorkspaceName() {\r\n return exec(server.get(\"/fs/getNextWorkspaceName\"));\r\n}\r\n\r\nexport function renameFolder(folderInfo: RenameFolderInfo) {\r\n const formData = objectToFormData({\r\n ...folderInfo,\r\n });\r\n return exec(server.post(\"/fs/renamefolder\", formData));\r\n}\r\n\r\nexport function workspaceCreate(Name: string, userViewOnly?: boolean) {\r\n const formData = objectToFormData({ Name, userViewOnly });\r\n return exec(server.post(\"/fs/createfilesystem\", formData));\r\n}\r\n\r\nexport function renameWorkspace(model: RenameWorkspaceInfo) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/renamefilesystem\", formData));\r\n}\r\n\r\nexport function shareFileSystem(model: ManageUsersInviteModel) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/sharefilesystem\", formData));\r\n}\r\n\r\nexport function inviteUsersToFileSystem(model: ManageUsersInviteModel, recaptchaToken: string | undefined) {\r\n const formData = objectToFormData({ ...model, recaptchaToken });\r\n return exec(server.post(\"/fs/inviteuserstofilesystem\", formData));\r\n}\r\n\r\nexport function shareOrInviteToFileSystem(model: ManageUsersInviteModel, recaptchaToken: string | undefined) {\r\n if (model.inviteMessage) {\r\n return inviteUsersToFileSystem(model, recaptchaToken);\r\n }\r\n return shareFileSystem(model);\r\n}\r\n\r\nexport function unshareFileSystem(model: Partial) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/unsharefilesystem\", formData));\r\n}\r\n\r\nexport function unjoinShare(model: ManageUsersLeaveModel) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/unjoinshare\", formData));\r\n}\r\n\r\nexport function updateFilesystemOwner(filesystemId: string, email: string) {\r\n const formData = objectToFormData({\r\n filesystemId,\r\n email,\r\n });\r\n return exec(server.post(\"/fs/updateFilesystemOwner\", formData));\r\n}\r\n\r\nexport function setSecurityPrefs(model: Partial) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/setsecurityprefs\", formData));\r\n}\r\n\r\nexport function setSecurityPrefsDefault(model: ConfigureSecurityModel) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/fs/setsecurityprefsdefault\", formData));\r\n}\r\n\r\nexport function workspaceInvitationRespond(workspaceId: string, accept: boolean) {\r\n const formData = objectToFormData({\r\n filesystemId: workspaceId,\r\n accept,\r\n });\r\n return exec(server.post(\"/fs/inviterespond\", formData));\r\n}\r\n\r\nexport function getUserProjectsByType(getViewerFolder = false, shortcutTypes?: ShortcutType[]) {\r\n const formData = objectToFormData({\r\n getViewerFolder,\r\n types: shortcutTypes,\r\n });\r\n\r\n return exec(server.post(\"/fs/GetUserTreeByType\", formData));\r\n}\r\n\r\n// Only used for subinstance\r\nexport function setUserOnly(filesystemId: string, userOnly: boolean) {\r\n const formData = objectToFormData({\r\n filesystemId,\r\n userOnly,\r\n });\r\n return exec(server.post(\"/fs/setUserOnly\", formData));\r\n}\r\n\r\nexport function setReviewersOnly(filesystemId: string, viewerUsers: string[]) {\r\n const formData = objectToFormData({\r\n filesystemId,\r\n viewerUsers,\r\n });\r\n return exec(server.post(\"/fs/setReviewersOnly\", formData));\r\n}\r\n\r\nexport function setReviewerOnly(filesystemId: string, userToChange: string, isReviewOnly: boolean) {\r\n const formData = objectToFormData({\r\n filesystemId,\r\n userToChange,\r\n isReviewOnly,\r\n });\r\n return exec(server.post(\"/fs/setReviewerOnly\", formData));\r\n}\r\n\r\nexport function requestInvite(workspaceId: string, shortcut: string) {\r\n const formData = objectToFormData({ workspaceId, shortcut });\r\n return exec(server.post(\"/fs/requestInvite\", formData));\r\n}\r\n\r\nexport function getSubinstanceAccounts() {\r\n return exec>(server.get(\"/fs/getaccounts\"));\r\n}\r\n","import { SsoResponse } from \"@shared/models\";\r\n\r\nimport { ManageUsersInviteModel } from \"@/services/models/filesystem\";\r\n\r\nexport interface ChangeAccountInfoModel {\r\n currentEmail?: string;\r\n currentPassword: string;\r\n newEmail?: string;\r\n newPassword?: string;\r\n}\r\n\r\nexport interface UserProfile {\r\n Name: string;\r\n Bio: string;\r\n Img: string;\r\n}\r\n\r\nexport interface DoLoginModel {\r\n loginEmail: string;\r\n loginPassword: string;\r\n altPassword: string;\r\n staySignedIn: boolean;\r\n clearPass: boolean;\r\n passwordBlank: boolean;\r\n accountService: boolean;\r\n redirect?: string;\r\n rpRequestId?: string;\r\n}\r\n\r\nexport interface ManageUserModel {\r\n user: SsoResponse;\r\n profile: UserProfile;\r\n isViewer: boolean;\r\n isViewerAccount?: boolean;\r\n Level?: number;\r\n isOwner?: boolean;\r\n invitationAccepted?: boolean;\r\n}\r\n\r\nexport interface ManageUsersModel {\r\n users: ManageUserModel[];\r\n usersInvite?: ManageUsersInviteModel;\r\n userOnly: boolean;\r\n httpsOnly: boolean;\r\n}\r\n\r\nexport const enum AccessLevels {\r\n Regular = 0,\r\n SuperAdmin = 1,\r\n Admin = 2,\r\n Author = 3,\r\n Reviewer = 4,\r\n TechnicalAdmin = 5,\r\n}\r\n","import { SharedFilesystemMappingJs, SsoResponse } from \"@shared/models\";\r\n\r\nexport interface DeleteItemsModel {\r\n currentFolderId?: string;\r\n items: Array;\r\n filesystemDelete?: boolean;\r\n}\r\n\r\nexport interface MoveItemsModel {\r\n currentFolderId: string;\r\n destination: string;\r\n items: Array;\r\n}\r\n\r\nexport const enum ShortcutType {\r\n Rp = 0,\r\n TeamRp = 1,\r\n Lib = 2,\r\n TeamLib = 3,\r\n Expo = 4,\r\n Handoff = 5,\r\n}\r\n\r\nexport interface BreadcrumbJson {\r\n name: string;\r\n isFilesystem: boolean;\r\n isDefaultFs: boolean;\r\n id: string;\r\n fsRootFolderId: string;\r\n}\r\n\r\nexport interface FolderNav {\r\n breadcrumbJson: BreadcrumbJson[];\r\n}\r\n\r\nexport interface FolderCreateModel {\r\n Name: string;\r\n FolderId: string;\r\n currentFolderId: string;\r\n}\r\n\r\nexport interface RenameFolderInfo {\r\n Name: string;\r\n FolderId: string;\r\n currentFolderId: string;\r\n}\r\n\r\nexport interface RenameWorkspaceInfo {\r\n Name: string;\r\n FilesystemId: string;\r\n}\r\n\r\nexport interface ManageUsersInviteModel {\r\n userEmails?: string | string[];\r\n viewerOnly?: boolean | string;\r\n currentFolderId?: string;\r\n filesystemId?: string;\r\n inviteMessage?: string;\r\n ignoreAccepted?: boolean;\r\n ignorePending?: boolean;\r\n}\r\n\r\nexport interface ManageUsersRemoveModel {\r\n usersToRemove: string[];\r\n removeAllUsers: boolean;\r\n filesystemId: string;\r\n currentFolderId: string;\r\n sharedWith: SharedFilesystemMappingJs[];\r\n}\r\n\r\nexport interface ManageUsersLeaveModel {\r\n NewOwner: string;\r\n FilesystemId: string;\r\n currentFolderId: string;\r\n}\r\n\r\nexport interface ConfigureSecurityModel {\r\n FilesystemId: string;\r\n currentFolderId: string;\r\n viewerUsers: string[];\r\n httpsOnly?: boolean;\r\n userOnly?: boolean;\r\n isDefaultFs: boolean;\r\n}\r\n\r\nexport interface DirectoryTree {\r\n workspacesRoot: DirectoryTreeNode;\r\n}\r\n\r\nexport interface DirectoryTreeNode {\r\n id: string;\r\n name: string;\r\n defaultWorkspace: boolean;\r\n isFavorite: boolean;\r\n isFolder: boolean;\r\n children: DirectoryTreeNode[];\r\n owner: SsoResponse;\r\n explicitlyJoined: boolean;\r\n}\r\n\r\nexport type FilesystemEntryTree = FilesystemEntryTreeNode[];\r\nexport interface FilesystemEntryTreeNode {\r\n entries: FilesystemEntry[];\r\n folderId: string;\r\n folderName: string;\r\n owner: SsoResponse;\r\n explicitlyJoined: boolean;\r\n}\r\n\r\nexport interface FilesystemEntry {\r\n Name: string;\r\n Shortcut: string;\r\n shortcutId: string;\r\n}\r\n\r\nexport interface UserFilesystemResponse {\r\n rootFolder: UserFilesystemRootFolder;\r\n}\r\n\r\nexport interface UserFilesystemRootFolder {\r\n children: UserFilesystemEntryTreeNode[];\r\n}\r\n\r\nexport interface UserFilesystemEntryTreeNode {\r\n children: UserFilesystemEntryTreeNode[];\r\n name: string;\r\n id: string;\r\n filetype: string;\r\n defaultWorkspace?: boolean;\r\n owner: SsoResponse;\r\n explicitlyJoined: boolean;\r\n}\r\n","import { NotificationJs } from \"@shared/models\";\r\n\r\nexport enum NotificationMethod {\r\n Email = 0,\r\n Slack = 1,\r\n MsTeams = 3,\r\n}\r\n\r\nexport enum NotificationSubRate {\r\n Instant,\r\n Daily,\r\n}\r\n\r\nexport enum EntryType {\r\n All,\r\n Filesystem,\r\n Shortcut,\r\n Folder,\r\n}\r\n\r\n// Hipchat no longer supported, was 2\r\nexport enum NotificationTypes {\r\n Email = 0,\r\n Slack = 1,\r\n MsTeams = 3,\r\n}\r\n\r\nexport interface AddNotificationModel {\r\n subscriptionRate: string;\r\n targetId?: string;\r\n targetType: string;\r\n isSlack: boolean;\r\n msTeamsUrl?: string;\r\n isMsTeams?: boolean;\r\n}\r\n\r\nexport interface EditNotificationModel {\r\n NotificationId: string;\r\n newTargetId?: string;\r\n newTargetType: string;\r\n newSubRate: string;\r\n newMsTeamsUrl?: string;\r\n}\r\n\r\nexport interface NotificationJsActions {\r\n notification: NotificationJs;\r\n activeItem?: any;\r\n}\r\n\r\nexport enum NotificationErrorType {\r\n InvalidData,\r\n InvalidDataTeams,\r\n ExpiredToken,\r\n ExpiredTokenTeams,\r\n SlackIssue,\r\n SlackAlreadyExist,\r\n Unknown,\r\n}\r\n\r\nexport enum ProjectCommentsTypes {\r\n All,\r\n Some,\r\n None,\r\n}\r\n\r\nexport interface NotificationSettingModel {\r\n notificationType?: NotificationTypes;\r\n projectCommentsType?: ProjectCommentsTypes;\r\n}\r\n\r\nexport enum NotificationMuteItemTypes {\r\n Workspace,\r\n Project,\r\n}\r\n\r\nexport interface NotificationMuteItemModel {\r\n notificationType?: NotificationTypes;\r\n targetId?: string;\r\n targetType?: NotificationMuteItemTypes;\r\n}\r\n","import {\r\n ListJs, NotificationJs, ResponseObject, NotificationSettingJs, NotificationMuteItemJs,\r\n} from \"@shared/models\";\r\n\r\nimport { exec } from \"@/services/api\";\r\nimport {\r\n AddNotificationModel,\r\n EditNotificationModel,\r\n NotificationSettingModel,\r\n NotificationMuteItemModel,\r\n} from \"@/services/models/notification\";\r\nimport { server } from \"@/services/server\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nimport { FilesystemEntryTree } from \"./models\";\r\n\r\nexport function getUserFsEntryTree() {\r\n return exec(server.get(\"/notification/getuserfsentrytree\"));\r\n}\r\n\r\nexport function getUserSubscriptions() {\r\n return exec>(server.get(\"/notification/getusersubscriptions\"));\r\n}\r\n\r\nexport function getUserGuestSubscriptions() {\r\n return exec>(server.get(\"/notification/getuserguestsubscriptions\"));\r\n}\r\n\r\nexport async function deleteSubscription(NotificationId: string) {\r\n const formData = objectToFormData({ NotificationId });\r\n const result = await exec(server.post(\"/notification/deletesubscription\", formData));\r\n return result;\r\n}\r\n\r\nexport async function deleteLegacyEmailSubscriptions() {\r\n const result = await exec(server.post(\"/notification/deletelegacyemailsubscriptions\"));\r\n return result;\r\n}\r\n\r\nexport async function addNotification(model: AddNotificationModel) {\r\n const formData = objectToFormData({ ...model });\r\n const result = await exec(\r\n server.post(\"/notification/addsubscription\", formData),\r\n );\r\n return result;\r\n}\r\n\r\nexport async function editNotification(model: EditNotificationModel) {\r\n const formData = objectToFormData({ ...model });\r\n const result = await exec(server.post(\"/notification/editsubscription\", formData));\r\n return result;\r\n}\r\n\r\nexport async function changeSlackUrlNotification(NotificationId: string) {\r\n const formData = objectToFormData({ NotificationId });\r\n const result = await exec(server.post(\"/notification/changeslackchannel\", formData));\r\n return result;\r\n}\r\n\r\nexport function getNotificationSettings() {\r\n return exec>(server.get(\"/notification/getnotificationsettings\"));\r\n}\r\n\r\nexport async function saveNotificationSettings(model: NotificationSettingModel) {\r\n const formData = objectToFormData({ ...model });\r\n const result = await exec(server.post(\"/notification/savenotificationsettings\", formData));\r\n return result;\r\n}\r\n\r\nexport function getNotificationMuteItems() {\r\n return exec>(server.get(\"/notification/getnotificationmuteitems\"));\r\n}\r\n\r\nexport async function addNotificationMuteItem(model: NotificationMuteItemModel) {\r\n const formData = objectToFormData({ ...model });\r\n const result = await exec(server.post(\"/notification/addnotificationmuteitem\", formData));\r\n return result;\r\n}\r\n\r\nexport async function deleteNotificationMuteItem(notificationMuteItemId: string) {\r\n const formData = objectToFormData({ notificationMuteItemId });\r\n const result = await exec(server.post(\"/notification/deletenotificationmuteitem\", formData));\r\n return result;\r\n}\r\n","import axios, { AxiosProgressEvent, Canceler } from \"axios\";\r\n\r\nimport {\r\n ShortcutPagesResponse,\r\n PrototypeViewerParams,\r\n ShortcutJs,\r\n VarsJs,\r\n ShortcutNotificationStateJs,\r\n ShortcutRedirectCommentInfoJs,\r\n ExtendedProjectPage,\r\n} from \"@shared/models\";\r\n\r\nimport { exec } from \"@/services/api\";\r\nimport { ChangeProjectInfo, ProjectCreateModel } from \"@/services/models/project\";\r\nimport { ResponseObject } from \"@/services/models/responseObject\";\r\nimport { server } from \"@/services/server\";\r\nimport { withNoCacheHeaders } from \"@/services/utils/axios\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\n// eslint-disable-next-line no-empty-function\r\nconst noop = (..._: any[]) => { };\r\n\r\nexport function getProjectPages(shortcut: string) {\r\n return exec(server.get(`/prototype/pages/${shortcut}`));\r\n}\r\n\r\nexport function getFullCommentsState(shortcut: string) {\r\n return exec(server.get(`/prototype/getfullcommentsstate/${shortcut}`));\r\n}\r\n\r\nexport function getProjectInfo(shortcut: string) {\r\n return exec(server.get(`/prototype/getprototypeinfo/${shortcut}`));\r\n}\r\n\r\nexport function getPrototypeRedirectCommentInfo(shortcut: string) {\r\n return exec(server.get(`/prototype/getprototyperedirectcommentinfo/${shortcut}`));\r\n}\r\n\r\nexport function getPassword(shortcut: string) {\r\n return exec(server.post(`/prototype/getpassword/${shortcut}`));\r\n}\r\n\r\nexport function changeProjectInfo(\r\n shortcut: string,\r\n changedProjectInfo: Partial,\r\n executor: (cancel: Canceler) => void = noop,\r\n onUploadProgress?: (progressEvent: AxiosProgressEvent) => void,\r\n) {\r\n const formData = objectToFormData(changedProjectInfo);\r\n return exec(\r\n server.post(`/prototype/changeprototypeinfo/${shortcut}`, formData, {\r\n cancelToken: new axios.CancelToken(executor),\r\n onUploadProgress,\r\n }),\r\n );\r\n}\r\n\r\nexport function checkPrototypeNameValid(name: string, folderId: string) {\r\n const formData = objectToFormData({ name, folderId });\r\n return exec(server.post(\"/prototype/checklimitprototypenamevalid\", formData));\r\n}\r\n\r\nexport function createProject(\r\n model: ProjectCreateModel,\r\n executor: (cancel: Canceler) => void = noop,\r\n onUploadProgress?: (progressEvent: AxiosProgressEvent) => void,\r\n) {\r\n const formData = objectToFormData(model);\r\n return exec(\r\n server.post(\"/prototype/create\", formData, {\r\n cancelToken: new axios.CancelToken(executor),\r\n onUploadProgress,\r\n }),\r\n );\r\n}\r\n\r\nexport function createEmptyProject(model: ProjectCreateModel) {\r\n const formData = objectToFormData(model);\r\n return exec(server.post(\"/prototype/createempty\", formData));\r\n}\r\n\r\nexport function cloneShortcut(shortcut: string, currentFolderId: string) {\r\n const formData = objectToFormData({ shortcut, currentFolderId });\r\n return exec(server.post(\"/prototype/cloneshortcut\", formData));\r\n}\r\n\r\nexport function toggleDiscussions(shortcut: string, feedbackEnabled: boolean) {\r\n const formData = objectToFormData({ feedbackEnabled });\r\n return exec(server.post(`/prototype/setfeedback/${shortcut}`, formData));\r\n}\r\n\r\nexport function getViewerParams() {\r\n return exec(server.get(\"/prototype/getviewerparams\", withNoCacheHeaders));\r\n}\r\n\r\nexport function canUpload(folderId: string, isCreate: boolean) {\r\n return exec(\r\n server.get(\"/prototype/canupload\", {\r\n params: {\r\n isCreate,\r\n folderId,\r\n },\r\n }),\r\n { ignoreResponseRedirectUrl: true },\r\n );\r\n}\r\n\r\nexport function createPublishNote(shortcut: string, publishNote: string) {\r\n const formData = objectToFormData({ PublishNoteRichText: publishNote });\r\n return exec(server.post(`/prototype/createpublishnote/${shortcut}`, formData));\r\n}\r\n\r\nexport function createPublishNotePlainText(shortcut: string, publishNote: string) {\r\n const formData = objectToFormData({ PublishNote: publishNote });\r\n return exec(server.post(`/prototype/createpublishnote/${shortcut}`, formData));\r\n}\r\n\r\nexport function resetUnreadPublishNotesMentions(shortcut: string) {\r\n const formData = objectToFormData({ shortcut });\r\n return exec(server.post(\"/prototype/resetunreadpublishnotesmentions\", formData));\r\n}\r\n\r\nexport function getFirstPage(shortcut: string) {\r\n return exec(server.get(`/prototype/getfirstpage/${shortcut}`));\r\n}\r\n","import {\r\n HubConnectionBuilder, HubConnection, HubConnectionState, LogLevel, IRetryPolicy,\r\n} from \"@microsoft/signalr\";\r\n\r\nimport { isDevelopment } from \"@/common/environment\";\r\nimport { retryUntilTruthy, randomIntegerBetween } from \"@/common/lib\";\r\nimport store from \"@/store\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport type SignalRHubListener = (...args: any[]) => void;\r\nexport type SignalRHubListenerOf = (data: T) => void;\r\nexport type SignalRHubListeners = Record;\r\n\r\nexport type HubName = \"notifications\" | \"workspaces\" | \"projects\";\r\n\r\nconst retryPolicyFactory = (): IRetryPolicy => {\r\n const intervals = [\r\n [0, 10],\r\n [20, 40],\r\n [60, 90],\r\n [120, 180],\r\n ].map(([from, to]) => randomIntegerBetween(from * 1000, to * 1000));\r\n const retryIntervals = [...intervals, null];\r\n\r\n return {\r\n nextRetryDelayInMilliseconds(retryContext): number | null {\r\n return retryIntervals[retryContext.previousRetryCount];\r\n },\r\n };\r\n};\r\n\r\ninterface HubConnectionMetadata {\r\n hasOnReconnectedHandler: boolean;\r\n}\r\n\r\nclass PushNotificationsService {\r\n private readonly hubConnections: Record = {};\r\n private readonly hubConnectionMetadata: WeakMap = new WeakMap();\r\n private readonly activeHubListeners: Record = {};\r\n private readonly groupsMembership: Map> = new Map();\r\n\r\n private get ApiUrl(): string {\r\n return store.getters.apiUrl;\r\n }\r\n\r\n private get Enabled(): boolean {\r\n const { axShareConfig } = store.state as AxShare;\r\n const enablePushNotifications = !!axShareConfig && axShareConfig.EnablePushNotifications === true;\r\n return enablePushNotifications;\r\n }\r\n\r\n public async disconnect() {\r\n const disconnectFromHubTasks = Object.keys(this.hubConnections).map(this.disconnectFromHub);\r\n await Promise.all(disconnectFromHubTasks);\r\n }\r\n\r\n public async addHubListeners(hubName: HubName, listeners: SignalRHubListeners) {\r\n const connection = await this.ensureHubStarted(hubName);\r\n if (connection) {\r\n for (const methodName in listeners) {\r\n if (Object.prototype.hasOwnProperty.call(listeners, methodName)) {\r\n const listener = listeners[methodName];\r\n connection.on(methodName, listener);\r\n this.activeHubListeners[hubName]++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async removeHubListeners(hubName: HubName, listeners: SignalRHubListeners) {\r\n const connection = this.hubConnections[hubName];\r\n if (connection) {\r\n for (const methodName in listeners) {\r\n if (Object.prototype.hasOwnProperty.call(listeners, methodName)) {\r\n const listener = listeners[methodName];\r\n connection.off(methodName, listener);\r\n this.activeHubListeners[hubName]--;\r\n }\r\n }\r\n\r\n if (this.activeHubListeners[hubName] <= 0) {\r\n await this.disconnectFromHub(hubName);\r\n }\r\n }\r\n }\r\n\r\n public async addToGroup(hubName: HubName, groupName: string) {\r\n const groupNameNormalized = groupName.toLowerCase();\r\n const connection = await this.ensureHubStarted(hubName);\r\n if (connection) {\r\n await connection.send(\"AddToGroup\", groupNameNormalized);\r\n\r\n let groups = this.groupsMembership.get(hubName);\r\n if (!groups) {\r\n groups = new Set();\r\n this.groupsMembership.set(hubName, groups);\r\n }\r\n groups.add(groupNameNormalized);\r\n }\r\n }\r\n\r\n public async removeFromGroup(hubName: HubName, groupName: string) {\r\n const groupNameNormalized = groupName.toLowerCase();\r\n // don't have to ensure that hub's connected\r\n // when client disconnects its group membership will be revoked\r\n const connection = this.hubConnections[hubName];\r\n\r\n if (connection && connection.state === HubConnectionState.Connected) {\r\n await connection.send(\"RemoveFromGroup\", groupNameNormalized);\r\n\r\n const groups = this.groupsMembership.get(hubName);\r\n if (groups) {\r\n groups.delete(groupNameNormalized);\r\n }\r\n }\r\n }\r\n\r\n private async ensureHubStarted(hubName: HubName): Promise {\r\n if (!this.Enabled) return undefined;\r\n\r\n let connection = this.hubConnections[hubName];\r\n\r\n if (!connection) {\r\n // Use access token to be able to identify user\r\n connection = new HubConnectionBuilder()\r\n .withUrl(`${this.ApiUrl}/hubs/${hubName}`, {\r\n withCredentials: true,\r\n })\r\n .withAutomaticReconnect(retryPolicyFactory())\r\n .configureLogging(isDevelopment ? LogLevel.Information : LogLevel.Warning)\r\n .build();\r\n this.hubConnections[hubName] = connection;\r\n this.activeHubListeners[hubName] = 0;\r\n }\r\n\r\n if (connection.state === HubConnectionState.Disconnected) {\r\n try {\r\n await connection.start();\r\n } catch (error) {\r\n // failed to connect to SignalR hub\r\n // it's possible that server is actively refusing new connections\r\n // in that case we're handling this gracefully, as if push notifications are disabled completely\r\n return;\r\n }\r\n }\r\n\r\n const connected = await this.connected(connection);\r\n if (connected) {\r\n const metadata = this.getConnectionMetadata(connected);\r\n if (!metadata.hasOnReconnectedHandler) {\r\n connected.onreconnected(connectionId => this.restoreGroupsMembership(hubName, connectionId, connected));\r\n metadata.hasOnReconnectedHandler = true;\r\n }\r\n return connected;\r\n }\r\n }\r\n\r\n private getConnectionMetadata(connection: HubConnection) {\r\n let metadata = this.hubConnectionMetadata.get(connection);\r\n if (metadata) return metadata;\r\n\r\n metadata = {\r\n hasOnReconnectedHandler: false,\r\n };\r\n this.hubConnectionMetadata.set(connection, metadata);\r\n return metadata;\r\n }\r\n\r\n private async restoreGroupsMembership(\r\n hubName: HubName,\r\n connectionId: string | undefined,\r\n connection: HubConnection,\r\n ): Promise {\r\n if (connectionId && connection.state === HubConnectionState.Connected) {\r\n const groups = this.groupsMembership.get(hubName);\r\n if (groups) {\r\n for (const group of groups) {\r\n // eslint-disable-next-line no-await-in-loop\r\n await this.addToGroup(hubName, group);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private async disconnectFromHub(hubName: string) {\r\n const connection = this.hubConnections[hubName];\r\n if (connection) {\r\n if (connection.state === HubConnectionState.Connecting) {\r\n // tried to immediately close connection\r\n // give it little timeout to finish connecting and then close connection\r\n await this.connected(connection);\r\n }\r\n if (connection.state === HubConnectionState.Connected) {\r\n await connection.stop();\r\n }\r\n this.hubConnections[hubName] = undefined;\r\n delete this.hubConnections[hubName];\r\n }\r\n }\r\n\r\n private async connected(connection: HubConnection | undefined): Promise {\r\n // giving some time until connection is fully ready\r\n const retries = 50;\r\n const timeout = 50;\r\n return retryUntilTruthy(\r\n () => {\r\n if (connection && connection.state === HubConnectionState.Connected) {\r\n return connection;\r\n }\r\n return undefined;\r\n },\r\n retries,\r\n timeout,\r\n );\r\n }\r\n}\r\n\r\nexport const pushNotificationsService = new PushNotificationsService();\r\n","import axios from \"axios\";\r\nimport qs from \"qs\";\r\n\r\nimport { resolveApiBaseUrl } from \"@/common/axshare/api\";\r\nimport { isIE } from \"@/common/lib\";\r\n\r\nimport {\r\n addAuthorizationHeader,\r\n transformRequestDefaults,\r\n withNoCacheHeaders,\r\n timestampInterceptor,\r\n} from \"./utils/axios\";\r\n\r\nlet getAuthToken: () => string | undefined = () => \"\";\r\n\r\nexport const server = axios.create({\r\n baseURL: resolveApiBaseUrl(),\r\n withCredentials: true,\r\n paramsSerializer: {\r\n serialize: params => qs.stringify(params, { arrayFormat: \"repeat\" }),\r\n },\r\n transformRequest: [\r\n ...transformRequestDefaults,\r\n (data, headers) => {\r\n addAuthorizationHeader(headers, getAuthToken());\r\n return data;\r\n },\r\n ],\r\n ...(isIE ? withNoCacheHeaders : undefined),\r\n});\r\n\r\nif (isIE) {\r\n // add cache-breaking timestamp for each and every request made in IE\r\n server.interceptors.request.use(timestampInterceptor());\r\n}\r\n\r\nexport function setAuthTokenAccessor(tokenAccessor: () => string | undefined) {\r\n getAuthToken = tokenAccessor;\r\n}\r\n\r\nexport function reconfigure(url: string) {\r\n server.defaults.baseURL = url;\r\n}\r\n\r\nexport default {\r\n server,\r\n};\r\n","import {\r\n AxShareConfigModel,\r\n ExtendedSsoResponse,\r\n VersionInfoResponse,\r\n ValidateRequestJs,\r\n} from \"@shared/models\";\r\n\r\nimport { exec } from \"@/services/api\";\r\nimport { server } from \"@/services/server\";\r\nimport { withNoCacheHeaders } from \"@/services/utils/axios\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nexport function getConfig() {\r\n return exec(server.get(\"/user/getconfig\", withNoCacheHeaders));\r\n}\r\n\r\nexport function getConfigFromDomain(domain: string) {\r\n return exec(\r\n server.get(\"/user/getconfig\", {\r\n ...withNoCacheHeaders,\r\n baseURL: domain,\r\n }),\r\n );\r\n}\r\n\r\nexport function getUserInfo(followRedirect = true) {\r\n return exec(server.get(\"/user/getuserinfo\"), {\r\n ignoreResponseRedirectUrl: !followRedirect,\r\n });\r\n}\r\n\r\nexport function getVersion() {\r\n return exec(server.get(\"/user/getversion\"));\r\n}\r\n\r\nexport function validateRpRequestId(requestId: string) {\r\n return exec(server.get(\"/user/validaterequestid\", { params: { requestId } }));\r\n}\r\n\r\nexport function refreshAuth(token: string) {\r\n const formData = objectToFormData({\r\n token,\r\n });\r\n return exec(server.post(\"/user/refreshAuth\", formData));\r\n}\r\n","import axios, { AxiosRequestTransformer, AxiosRequestConfig } from \"axios\";\r\n\r\nimport { makeId } from \"@/common/lib\";\r\n\r\nconst { transformRequest } = axios.defaults;\r\n// eslint-disable-next-line no-nested-ternary\r\nexport const transformDefaults: AxiosRequestTransformer[] = !transformRequest\r\n ? []\r\n : Array.isArray(transformRequest)\r\n ? transformRequest\r\n : [transformRequest];\r\n\r\nexport const addAuthorizationHeader = (headers: any, token: string | null | undefined) => {\r\n if (token) {\r\n headers.set(\"Authorization\", token, true);\r\n }\r\n};\r\n\r\nexport const transformRequestDefaults = transformDefaults;\r\n\r\nexport const withNoCacheHeaders: AxiosRequestConfig = {\r\n headers: {\r\n \"Cache-Control\": \"private, no-cache, no-store\",\r\n Pragma: \"no-cache\",\r\n },\r\n};\r\n\r\nexport const timestampInterceptor = (timestampParam = \"t\") => (config: AxiosRequestConfig) => {\r\n try {\r\n while (config.params[timestampParam] !== undefined) {\r\n // eslint-disable-next-line no-param-reassign\r\n timestampParam = makeId(6);\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n config.params[timestampParam] = Date.now().toString();\r\n return config;\r\n } catch {\r\n return config;\r\n }\r\n};\r\n","function isObject(value: any): value is { [key: string]: any } {\r\n return value === Object(value);\r\n}\r\n\r\nfunction isArray(value: any): value is any[] {\r\n return Array.isArray(value);\r\n}\r\n\r\nfunction isDate(value: any): value is Date {\r\n return value instanceof Date;\r\n}\r\n\r\nfunction isBlob(value: any) {\r\n return value && typeof value.size === \"number\" && typeof value.type === \"string\" && typeof value.slice === \"function\";\r\n}\r\n\r\nfunction isFile(value: any): value is File {\r\n return (\r\n isBlob(value) &&\r\n (typeof value.lastModifiedDate === \"object\" || typeof value.lastModified === \"number\") &&\r\n typeof value.name === \"string\"\r\n );\r\n}\r\n\r\ninterface Options {\r\n indices?: boolean;\r\n}\r\n\r\nexport function objectToFormData(\r\n object: any,\r\n options: Options = { indices: true },\r\n formData: FormData = new FormData(),\r\n keyPrefix?: string\r\n) {\r\n if (object === undefined || object === null) {\r\n return formData;\r\n }\r\n\r\n if (isArray(object)) {\r\n object.forEach((value, index) => {\r\n const currentIndex = options.indices ? index : \"\";\r\n const key = `${keyPrefix}[${currentIndex}]`;\r\n objectToFormData(value, options, formData, key);\r\n });\r\n } else if (isDate(object)) {\r\n if (!keyPrefix) return formData;\r\n formData.append(keyPrefix, object.toISOString());\r\n } else if (isObject(object) && !isFile(object) && !isBlob(object)) {\r\n Object.keys(object).forEach(prop => {\r\n const value = object[prop];\r\n\r\n if (isArray(value)) {\r\n while (prop.length > 2 && prop.lastIndexOf(\"[]\") === prop.length - 2) {\r\n // eslint-disable-next-line no-param-reassign\r\n prop = prop.substring(0, prop.length - 2);\r\n }\r\n }\r\n\r\n const key = keyPrefix ? `${keyPrefix}[${prop}]` : prop;\r\n\r\n objectToFormData(value, options, formData, key);\r\n });\r\n } else {\r\n if (!keyPrefix) return formData;\r\n formData.append(keyPrefix, object);\r\n }\r\n\r\n return formData;\r\n}\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { PayloadMap } from \"./typed\";\r\n\r\nexport enum ActionTypes {\r\n Initialize = \"Initialize\",\r\n LoadConfig = \"Load Config\",\r\n SetupAccountService = \"Setup Account Service\",\r\n Authenticate = \"Authenticate\",\r\n Logout = \"Logout\",\r\n ApiCall = \"[API Call] Api Call\",\r\n ApiCallRetry = \"[API Call] Retry\",\r\n ApiCallClear = \"[API Call] Clear\",\r\n LoadApiVersionInfo = \"Load Api Version Info\",\r\n}\r\n\r\nexport interface ApiCallOptions {\r\n id?: string;\r\n action: () => any;\r\n onFailure?: (error?: Error | unknown) => any;\r\n}\r\n\r\nexport class LoadConfig implements Payload {\r\n public readonly type = ActionTypes.LoadConfig;\r\n constructor(public readonly force: boolean = false) { }\r\n}\r\n\r\nexport class ApiCall implements Payload {\r\n public readonly type = ActionTypes.ApiCall;\r\n constructor(public readonly options: ApiCallOptions) { }\r\n}\r\n\r\nexport class ApiCallRetry implements Payload {\r\n public readonly type = ActionTypes.ApiCallRetry;\r\n constructor(public readonly apiCallId: string) { }\r\n}\r\n\r\nexport class ApiCallClear implements Payload {\r\n public readonly type = ActionTypes.ApiCallClear;\r\n}\r\n\r\nexport class SetupAccountService implements Payload {\r\n public readonly type = ActionTypes.SetupAccountService;\r\n constructor(\r\n public readonly force: boolean = false,\r\n public readonly authToken = \"\",\r\n public readonly useGet = false,\r\n ) { }\r\n}\r\n\r\nexport class Initialize implements Payload {\r\n public readonly type = ActionTypes.Initialize;\r\n constructor(\r\n public readonly force: boolean = false,\r\n public readonly apiUrl = \"\",\r\n public readonly authToken = \"\",\r\n public readonly useGet = false,\r\n ) { }\r\n}\r\n\r\nexport class Authenticate implements Payload {\r\n public readonly type = ActionTypes.Authenticate;\r\n}\r\n\r\nexport class Logout implements Payload {\r\n public readonly type = ActionTypes.Logout;\r\n constructor(public readonly onSuccess?: () => Promise, public readonly onFailure?: () => Promise) { }\r\n}\r\n\r\nexport class LoadApiVersionInfo implements Payload {\r\n public readonly type = ActionTypes.LoadApiVersionInfo;\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.LoadConfig]: LoadConfig;\r\n [ActionTypes.ApiCall]: ApiCall;\r\n [ActionTypes.ApiCallRetry]: ApiCallRetry;\r\n [ActionTypes.SetupAccountService]: SetupAccountService;\r\n [ActionTypes.Initialize]: Initialize;\r\n [ActionTypes.Authenticate]: Authenticate;\r\n [ActionTypes.Logout]: Logout;\r\n [ActionTypes.LoadApiVersionInfo]: LoadApiVersionInfo;\r\n}\r\n","import { AxShareCurrentUserInfo } from \"@shared/models\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum ActionTypes {\r\n GetAdminInfo = \"[Admin] Get Admin Info\",\r\n GetAdminUserInfo = \"[Admin] Get Admin User Info\",\r\n SetAdminUserInfo = \"[Admin] Set Admin User Info\",\r\n GetAdminSubInstanceInfo = \"[Admin] Get Subinstance Info\",\r\n}\r\n\r\nexport class GetAdminInfo implements Payload {\r\n public static readonly type = ActionTypes.GetAdminInfo;\r\n public readonly type = GetAdminInfo.type;\r\n}\r\n\r\nexport class GetAdminUserInfo implements Payload {\r\n public static readonly type = ActionTypes.GetAdminUserInfo;\r\n public readonly type = GetAdminUserInfo.type;\r\n}\r\n\r\nexport class SetAdminUserInfo implements Payload {\r\n public readonly type = ActionTypes.SetAdminUserInfo;\r\n constructor(public userInfo: AxShareCurrentUserInfo | undefined) {}\r\n}\r\n\r\nexport class GetAdminSubInstanceInfo implements Payload {\r\n public static readonly type = ActionTypes.GetAdminSubInstanceInfo;\r\n public readonly type = GetAdminSubInstanceInfo.type;\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.GetAdminInfo]: GetAdminInfo;\r\n [ActionTypes.SetAdminUserInfo]: SetAdminUserInfo;\r\n [ActionTypes.GetAdminUserInfo]: GetAdminUserInfo;\r\n [ActionTypes.GetAdminSubInstanceInfo]: GetAdminSubInstanceInfo;\r\n}\r\n","import { AccountRowJs, AxShareCurrentUserInfo, AxShareSubInstanceInfo } from \"@shared/models\";\r\nimport { Payload } from \"vuex\";\r\nimport { PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n SetAdminUserInfo = \"[Admin] Set User Info\",\r\n SetAdminSubInstanceInfo = \"[Admin] Set SubInstance Info\",\r\n SetAdminSubInstanceAccounts = \"[Admin] Set SubInstance Accounts\",\r\n}\r\n\r\nexport class SetAdminUserInfo implements Payload {\r\n public readonly type = MutationTypes.SetAdminUserInfo;\r\n constructor(public userInfo: AxShareCurrentUserInfo | undefined) {}\r\n}\r\n\r\nexport class SetAdminSubInstanceInfo implements Payload {\r\n public readonly type = MutationTypes.SetAdminSubInstanceInfo;\r\n constructor(public subInstanceInfo: AxShareSubInstanceInfo | undefined) {}\r\n}\r\n\r\nexport class SetAdminSubInstanceAccounts implements Payload {\r\n public readonly type = MutationTypes.SetAdminSubInstanceAccounts;\r\n constructor(public accounts: AccountRowJs[] | undefined) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.SetAdminUserInfo]: SetAdminUserInfo;\r\n [MutationTypes.SetAdminSubInstanceInfo]: SetAdminSubInstanceInfo;\r\n [MutationTypes.SetAdminSubInstanceAccounts]: SetAdminSubInstanceAccounts;\r\n}\r\n","import { ActionContext, Payload } from \"vuex\";\r\nimport { Failure as SetFailure, Fetching as SetFetching, Success as SetSuccess } from \"@/store/mutationTypes\";\r\n\r\nexport const enum AsyncActionState {\r\n NotStarted = \"notstarted\",\r\n Fetching = \"fetching\",\r\n Success = \"success\",\r\n Failure = \"failure\",\r\n}\r\n\r\nexport async function asyncAction(\r\n { commit }: ActionContext,\r\n actionType: string,\r\n action: () => Promise,\r\n onSuccess?: (result: TResponse) => TSuccess | undefined,\r\n onFailure?: (error: any) => TError | undefined\r\n) {\r\n try {\r\n commit(new SetFailure(actionType));\r\n const result = await action();\r\n commit(new SetFetching(actionType));\r\n if (onSuccess !== undefined) {\r\n const mutation = onSuccess(result);\r\n if (mutation) {\r\n commit(mutation);\r\n }\r\n }\r\n } catch (error) {\r\n commit(new SetSuccess(actionType));\r\n if (onFailure) {\r\n const mutation = onFailure(error);\r\n if (mutation) {\r\n commit(mutation);\r\n }\r\n } else {\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { Action, Artboard, Asset, Master, Platform } from \"@shared/expo\";\r\nimport { UploadBgImg } from \"@/services/expo.service\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum ActionTypes {\r\n SetupProject = \"[Expo] Setup Project\",\r\n\r\n ProjectFetchExpo = \"[Expo][Project] Fetch Expo\",\r\n ProjectContentFetch = \"[Expo][Project] Content Fetch\",\r\n ProjectZoomSave = \"[Expo][Project] Zoom Save\",\r\n ProjectPlatformUpdate = \"[Expo][Project] Platform Update\",\r\n ProjectPlatformBackgroundImageUpload = \"[Expo][Project] Platform Background Image Upload\",\r\n ProjectPlatformBackgroundImageDelete = \"[Expo][Project] Platform Background Image Delete\",\r\n\r\n ArtboardAdd = \"[Expo] Artboard Add\",\r\n ArtboardRemove = \"[Expo] Artboard Remove\",\r\n ArtboardRemoveSelection = \"[Expo] Artboard Remove Selection\",\r\n\r\n ArtboardArchive = \"[Expo] Artboard Archive\",\r\n ArtboardArchiveSelection = \"[Expo] Artboard Archive Selection\",\r\n ArtboardUnarchive = \"[Expo] Artboard Archive\",\r\n ArtboardUnarchiveSelection = \"[Expo] Artboard Archive Selection\",\r\n ArtboardReorder = \"[Expo] Artboard Reorder\",\r\n ArtboardAddMaster = \"[Expo] Artboard Add Master\",\r\n ArtboardRemoveMaster = \"[Expo] Artboard Remove Master\",\r\n\r\n ArtboardActionRemove = \"[Expo] Artboard Action Remove\",\r\n ArtboardActionSave = \"[Expo] Artboard Action Save\",\r\n\r\n MasterActionRemove = \"[Expo] Master Action Remove\",\r\n MasterActionSave = \"[Expo] Master Action Save\",\r\n\r\n ProjectMasterCreate = \"[Expo] Project Master Create\",\r\n ProjectMasterRename = \"[Expo] Project Master Rename\",\r\n ProjectMasterCopy = \"[Expo] Project Master Copy\",\r\n ProjectMasterDelete = \"[Expo] Project Master Delete\",\r\n\r\n ArtboardSetHeaderFooterHeight = \"[Expo] Artboard Set Header Footer Height\",\r\n}\r\n\r\nexport class SetupProject implements Payload {\r\n public readonly type = ActionTypes.SetupProject;\r\n constructor(\r\n public readonly options: {\r\n mode: string;\r\n shortcut: string;\r\n archiveMode: boolean;\r\n resourceFolder: string;\r\n resourceAxureFolder: string;\r\n platform: Platform | undefined;\r\n bgImgUrl: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class ProjectFetchExpo implements Payload {\r\n public readonly type = ActionTypes.ProjectFetchExpo;\r\n constructor(public readonly shortcutId: string) {}\r\n}\r\n\r\nexport class ProjectContentFetch implements Payload {\r\n public readonly type = ActionTypes.ProjectContentFetch;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ProjectZoomSave implements Payload {\r\n public readonly type = ActionTypes.ProjectZoomSave;\r\n constructor(public readonly shortcut: string, public readonly zoom: number) {}\r\n}\r\n\r\nexport class ProjectPlatformUpdate implements Payload {\r\n public readonly type = ActionTypes.ProjectPlatformUpdate;\r\n constructor(public readonly shortcut: string, public readonly platform: Platform | undefined) {}\r\n}\r\n\r\nexport class ProjectPlatformBackgroundImageUpload implements Payload {\r\n public readonly type = ActionTypes.ProjectPlatformBackgroundImageUpload;\r\n constructor(public readonly shortcut: string, public readonly response: UploadBgImg) {}\r\n}\r\n\r\nexport class ProjectPlatformBackgroundImageDelete implements Payload {\r\n public readonly type = ActionTypes.ProjectPlatformBackgroundImageDelete;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardAdd implements Payload {\r\n public readonly type = ActionTypes.ArtboardAdd;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboard: Artboard,\r\n public readonly asset: Asset,\r\n public readonly url: string\r\n ) {}\r\n}\r\n\r\nexport class ArtboardRemove implements Payload {\r\n public readonly type = ActionTypes.ArtboardRemove;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardArchive implements Payload {\r\n public readonly type = ActionTypes.ArtboardArchive;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardUnarchive implements Payload {\r\n public readonly type = ActionTypes.ArtboardUnarchive;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardRemoveSelection implements Payload {\r\n public readonly type = ActionTypes.ArtboardRemoveSelection;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardArchiveSelection implements Payload {\r\n public readonly type = ActionTypes.ArtboardArchiveSelection;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardUnarchiveSelection implements Payload {\r\n public readonly type = ActionTypes.ArtboardUnarchiveSelection;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardReorder implements Payload {\r\n public readonly type = ActionTypes.ArtboardReorder;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboardId: string,\r\n public readonly tailArtboardId: string,\r\n public readonly fullResequence: boolean\r\n ) {}\r\n}\r\n\r\nexport class ArtboardAddMasterAction implements Payload {\r\n public readonly type = ActionTypes.ArtboardAddMaster;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string, public readonly masterId: string) {}\r\n}\r\n\r\nexport class ArtboardRemoveMasterAction implements Payload {\r\n public readonly type = ActionTypes.ArtboardRemoveMaster;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string, public readonly masterId: string) {}\r\n}\r\n\r\nexport class ArtboardActionSave implements Payload {\r\n public readonly type = ActionTypes.ArtboardActionSave;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboard: Artboard,\r\n public readonly originalAction: Action,\r\n public readonly action: Action\r\n ) {}\r\n}\r\n\r\nexport class ArtboardActionRemove implements Payload {\r\n public readonly type = ActionTypes.ArtboardActionRemove;\r\n constructor(public readonly shortcut: string, public readonly artboard: Artboard, public readonly action: Action) {}\r\n}\r\n\r\nexport class MasterActionSave implements Payload {\r\n public readonly type = ActionTypes.MasterActionSave;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboard: Artboard,\r\n public readonly master: Master,\r\n public readonly originalAction: Action,\r\n public readonly action: Action\r\n ) {}\r\n}\r\n\r\nexport class MasterActionRemove implements Payload {\r\n public readonly type = ActionTypes.MasterActionRemove;\r\n constructor(public readonly shortcut: string, public readonly master: Master, public readonly action: Action) {}\r\n}\r\n\r\nexport class ProjectMasterCreate implements Payload {\r\n public readonly type = ActionTypes.ProjectMasterCreate;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly bundle: { name: string; artboard: Artboard; callback: (master: Master) => void }\r\n ) {}\r\n}\r\n\r\nexport class ProjectMasterRename implements Payload {\r\n public readonly type = ActionTypes.ProjectMasterRename;\r\n constructor(public readonly shortcut: string, public readonly master: Master, public readonly name: string) {}\r\n}\r\n\r\nexport class ProjectMasterCopy implements Payload {\r\n public readonly type = ActionTypes.ProjectMasterCopy;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly master: Master,\r\n public readonly artboard: Artboard,\r\n public readonly callback: (master: Master) => void\r\n ) {}\r\n}\r\n\r\nexport class ProjectMasterDelete implements Payload {\r\n public readonly type = ActionTypes.ProjectMasterDelete;\r\n constructor(public readonly shortcut: string, public readonly master: Master) {}\r\n}\r\n\r\nexport class ArtboardSetHeaderFooterHeight implements Payload {\r\n public readonly type = ActionTypes.ArtboardSetHeaderFooterHeight;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboard: Artboard,\r\n public readonly height: number,\r\n public readonly isHeader: boolean\r\n ) {}\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.SetupProject]: SetupProject;\r\n [ActionTypes.ProjectFetchExpo]: ProjectFetchExpo;\r\n [ActionTypes.ProjectContentFetch]: ProjectContentFetch;\r\n [ActionTypes.ProjectZoomSave]: ProjectZoomSave;\r\n [ActionTypes.ProjectPlatformUpdate]: ProjectPlatformUpdate;\r\n [ActionTypes.ProjectPlatformBackgroundImageUpload]: ProjectPlatformBackgroundImageUpload;\r\n [ActionTypes.ProjectPlatformBackgroundImageDelete]: ProjectPlatformBackgroundImageDelete;\r\n [ActionTypes.ArtboardAdd]: ArtboardAdd;\r\n [ActionTypes.ArtboardRemove]: ArtboardRemove;\r\n [ActionTypes.ArtboardRemoveSelection]: ArtboardRemoveSelection;\r\n [ActionTypes.ArtboardArchive]: ArtboardArchive;\r\n [ActionTypes.ArtboardArchiveSelection]: ArtboardArchiveSelection;\r\n [ActionTypes.ArtboardUnarchive]: ArtboardUnarchive;\r\n [ActionTypes.ArtboardUnarchiveSelection]: ArtboardUnarchiveSelection;\r\n [ActionTypes.ArtboardReorder]: ArtboardReorder;\r\n [ActionTypes.ArtboardAddMaster]: ArtboardAddMasterAction;\r\n [ActionTypes.ArtboardRemoveMaster]: ArtboardRemoveMasterAction;\r\n [ActionTypes.ArtboardActionRemove]: ArtboardActionRemove;\r\n [ActionTypes.ArtboardActionSave]: ArtboardActionSave;\r\n [ActionTypes.MasterActionRemove]: MasterActionRemove;\r\n [ActionTypes.MasterActionSave]: MasterActionSave;\r\n [ActionTypes.ProjectMasterCreate]: ProjectMasterCreate;\r\n [ActionTypes.ProjectMasterRename]: ProjectMasterRename;\r\n [ActionTypes.ProjectMasterCopy]: ProjectMasterCopy;\r\n [ActionTypes.ProjectMasterDelete]: ProjectMasterDelete;\r\n [ActionTypes.ArtboardSetHeaderFooterHeight]: ArtboardSetHeaderFooterHeight;\r\n}\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { Action, Artboard, Asset, Master, Platform, ExpoStaticContent } from \"@shared/expo\";\r\n\r\nimport { ProjectConfig } from \"@/common/expo/interfaces\";\r\nimport { UploadBgImg } from \"@/services/expo.service\";\r\n\r\nimport { PayloadMap } from \"../typed\";\r\n\r\nexport enum MutationTypes {\r\n ProjectSetup = \"[Expo] Project Setup\",\r\n ProjectIsLoadingSet = \"[Expo] Project Is Loading Set\",\r\n ProjectContentSet = \"[Expo] Project Content Set\",\r\n ProjectContentClear = \"[Expo] Project Content Clear\",\r\n ProjectZoomSet = \"[Expo] Project Zoom Set\",\r\n ProjectPlatformUpdate = \"[Expo] Project Platform Update\",\r\n ProjectPlatformBgImgUpload = \"[Expo] Project Platform Background Image Upload\",\r\n ProjectPlatformBgImgDelete = \"[Expo] Project Platform Background Image Delete\",\r\n ProjectUpdateLastModifiedDate = \"[Expo] Project Update Last Modified Date\",\r\n ProjectUpdateLastSavedDate = \"[Expo] Project Update Last Saved Date\",\r\n\r\n ArtboardSelect = \"[Expo] Artboard Select\",\r\n ArtboardSelectAll = \"[Expo] Artboard Select All\",\r\n ArtboardSelectToggle = \"[Expo] Artboard Select Toggle\",\r\n ArtboardSelectSpan = \"[Expo] Artboard Select Span\",\r\n ArtboardDeselect = \"[Expo] Artboard Deselect\",\r\n ArtboardDeselectAll = \"[Expo} Artboard Deselect All\",\r\n ArtboardSelectSingle = \"[Expo] Artboard Select Single\",\r\n ArtboardOrderUpdated = \"[Expo] Artboard Order Updated\",\r\n\r\n ArtboardActionMenuToggle = \"[Expo] Artboard Action Menu Toggle\",\r\n ArtboardAddMaster = \"[Expo] Artboard Add Master\",\r\n ArtboardRemoveMaster = \"[Expo] Artboard Remove Master\",\r\n\r\n ArtboardAdd = \"[Expo] Artboard Add\",\r\n ArtboardRemove = \"[Expo] Artboard Remove\",\r\n ArtboardActionAdd = \"[Expo] Artboard Action Add\",\r\n ArtboardActionUpdate = \"[Expo] Artboard Action Update\",\r\n ArtboardActionRemove = \"[Expo] Artboard Action Remove\",\r\n // MasterActionAdd = \"[Expo] Master Action Add\",\r\n MasterActionUpdate = \"[Expo] Master Action Update\",\r\n MasterActionRemove = \"[Expo] Master Action Remove\",\r\n\r\n ArtboardActionHotspotPositionSet = \"[Expo] Artboard Action Hotspot Position Set\",\r\n MasterActionHotspotPositionSet = \"[Expo] Master Action Hotspot Position Set\",\r\n\r\n ProjectMasterCreate = \"[Expo] Project Master Create\",\r\n ProjectMasterRename = \"[Expo] Project Master Rename\",\r\n ProjectMasterCopy = \"[Expo] Project Master Copy\",\r\n ProjectMasterDelete = \"[Expo] Project Master Delete\",\r\n\r\n ArtboardSetHeaderFooterHeight = \"[Expo] Artboard Set Header Footer Height\",\r\n}\r\n\r\nexport class ProjectSetup implements Payload {\r\n public readonly type = MutationTypes.ProjectSetup;\r\n constructor(public setup: ProjectConfig) {}\r\n}\r\n\r\nexport class ProjectIsLoadingSet implements Payload {\r\n public readonly type = MutationTypes.ProjectIsLoadingSet;\r\n constructor(public shortcut: string, public value: boolean) {}\r\n}\r\n\r\nexport class ProjectContentSet implements Payload {\r\n public readonly type = MutationTypes.ProjectContentSet;\r\n constructor(public shortcut: string, public content: ExpoStaticContent) {}\r\n}\r\n\r\nexport class ProjectContentClear implements Payload {\r\n public readonly type = MutationTypes.ProjectContentClear;\r\n constructor(public shortcut: string) {}\r\n}\r\n\r\nexport class ProjectZoomSet implements Payload {\r\n public readonly type = MutationTypes.ProjectZoomSet;\r\n constructor(public shortcut: string, public zoom: number) {}\r\n}\r\n\r\nexport class ProjectPlatformUpdate implements Payload {\r\n public readonly type = MutationTypes.ProjectPlatformUpdate;\r\n constructor(public shortcut: string, public platform: Platform) {}\r\n}\r\n\r\nexport class ProjectPlatformBgImgUpload implements Payload {\r\n public readonly type = MutationTypes.ProjectPlatformBgImgUpload;\r\n constructor(public shortcut: string, public response: UploadBgImg) {}\r\n}\r\n\r\nexport class ProjectPlatformBgImgDelete implements Payload {\r\n public readonly type = MutationTypes.ProjectPlatformBgImgDelete;\r\n constructor(public shortcut: string, public response: UploadBgImg) {}\r\n}\r\n\r\nexport class ProjectUpdateLastModifiedDate implements Payload {\r\n public readonly type = MutationTypes.ProjectUpdateLastModifiedDate;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ProjectUpdateLastSavedDate implements Payload {\r\n public readonly type = MutationTypes.ProjectUpdateLastSavedDate;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardSelect implements Payload {\r\n public readonly type = MutationTypes.ArtboardSelect;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardSelectAll implements Payload {\r\n public readonly type = MutationTypes.ArtboardSelectAll;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardDeselect implements Payload {\r\n public readonly type = MutationTypes.ArtboardDeselect;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardDeselectAll implements Payload {\r\n public readonly type = MutationTypes.ArtboardDeselectAll;\r\n constructor(public readonly shortcut: string) {}\r\n}\r\n\r\nexport class ArtboardSelectToggle implements Payload {\r\n public readonly type = MutationTypes.ArtboardSelectToggle;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardSelectSingle implements Payload {\r\n public readonly type = MutationTypes.ArtboardSelectSingle;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardSelectSpan implements Payload {\r\n public readonly type = MutationTypes.ArtboardSelectSpan;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string, public readonly extend: boolean) {}\r\n}\r\n\r\nexport class ArtboardOrderUpdated implements Payload {\r\n public readonly type = MutationTypes.ArtboardOrderUpdated;\r\n constructor(public readonly shortcut: string, public readonly artboardIds: string[]) {}\r\n}\r\n\r\nexport class ArtboardActionMenuToggle implements Payload {\r\n public readonly type = MutationTypes.ArtboardActionMenuToggle;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboardId: string,\r\n public readonly actionId: string,\r\n public readonly isOpened: boolean\r\n ) {}\r\n}\r\n\r\nexport class ArtboardAddMaster implements Payload {\r\n public readonly type = MutationTypes.ArtboardAddMaster;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string, public readonly masterId: string) {}\r\n}\r\n\r\nexport class ArtboardRemoveMaster implements Payload {\r\n public readonly type = MutationTypes.ArtboardRemoveMaster;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string, public readonly masterId: string) {}\r\n}\r\n\r\nexport class ArtboardAdd implements Payload {\r\n public readonly type = MutationTypes.ArtboardAdd;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboard: Artboard,\r\n public readonly asset: Asset,\r\n public readonly url: string\r\n ) {}\r\n}\r\n\r\nexport class ArtboardRemove implements Payload {\r\n public readonly type = MutationTypes.ArtboardRemove;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string) {}\r\n}\r\n\r\nexport class ArtboardActionAdd implements Payload {\r\n public readonly type = MutationTypes.ArtboardActionAdd;\r\n constructor(public readonly shortcut: string, public readonly artboardId: string, public readonly action: Action) {}\r\n}\r\n\r\nexport class ArtboardActionUpdate implements Payload {\r\n public readonly type = MutationTypes.ArtboardActionUpdate;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboardId: string,\r\n public readonly actionId: string,\r\n public readonly originalAction: Action,\r\n public readonly action: Action\r\n ) {}\r\n}\r\n\r\nexport class ArtboardActionRemove implements Payload {\r\n public readonly type = MutationTypes.ArtboardActionRemove;\r\n constructor(public readonly shortcut: string, public readonly artboard: Artboard, public readonly action: Action) {}\r\n}\r\n\r\nexport class ArtboardActionHotspotPositionSet implements Payload {\r\n public readonly type = MutationTypes.ArtboardActionHotspotPositionSet;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboardId: string,\r\n public readonly actionId: string,\r\n public readonly position: {\r\n x: number;\r\n y: number;\r\n height: number;\r\n width: number;\r\n }\r\n ) {}\r\n}\r\n\r\n// export class MasterActionAdd implements Payload {\r\n// public readonly type = MutationTypes.MasterActionAdd;\r\n// constructor(public readonly masterId: string, public readonly action: Action) {}\r\n// }\r\n\r\nexport class MasterActionUpdate implements Payload {\r\n public readonly type = MutationTypes.MasterActionUpdate;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboardId: string,\r\n public readonly masterId: string,\r\n public readonly actionId: string,\r\n public readonly originalAction: Action,\r\n public readonly action: Action\r\n ) {}\r\n}\r\n\r\nexport class MasterActionRemove implements Payload {\r\n public readonly type = MutationTypes.MasterActionRemove;\r\n constructor(public readonly shortcut: string, public readonly master: Master, public readonly action: Action) {}\r\n}\r\n\r\nexport class MasterActionHotspotPositionSet implements Payload {\r\n public readonly type = MutationTypes.MasterActionHotspotPositionSet;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly masterId: string,\r\n public readonly actionId: string,\r\n public readonly position: {\r\n x: number;\r\n y: number;\r\n height: number;\r\n width: number;\r\n },\r\n public readonly relativeToBottom: number | undefined\r\n ) {}\r\n}\r\n\r\nexport class ProjectMasterCreate implements Payload {\r\n public readonly type = MutationTypes.ProjectMasterCreate;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly master: Master,\r\n public readonly artboard: Artboard,\r\n public readonly callback: (master: Master) => void\r\n ) {}\r\n}\r\n\r\nexport class ProjectMasterRename implements Payload {\r\n public readonly type = MutationTypes.ProjectMasterRename;\r\n constructor(public readonly shortcut: string, public readonly master: Master, public readonly name: string) {}\r\n}\r\n\r\nexport class ProjectMasterCopy implements Payload {\r\n public readonly type = MutationTypes.ProjectMasterCopy;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly master: Master,\r\n public readonly artboard: Artboard,\r\n public readonly callback: (master: Master) => void\r\n ) {}\r\n}\r\n\r\nexport class ProjectMasterDelete implements Payload {\r\n public readonly type = MutationTypes.ProjectMasterDelete;\r\n constructor(public readonly shortcut: string, public readonly master: Master) {}\r\n}\r\n\r\nexport class ArtboardSetHeaderFooterHeight implements Payload {\r\n public readonly type = MutationTypes.ArtboardSetHeaderFooterHeight;\r\n constructor(\r\n public readonly shortcut: string,\r\n public readonly artboard: Artboard,\r\n public readonly height: number,\r\n public readonly isHeader: boolean\r\n ) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.ProjectSetup]: ProjectSetup;\r\n [MutationTypes.ProjectIsLoadingSet]: ProjectIsLoadingSet;\r\n [MutationTypes.ProjectContentSet]: ProjectContentSet;\r\n [MutationTypes.ProjectContentClear]: ProjectContentClear;\r\n [MutationTypes.ProjectZoomSet]: ProjectZoomSet;\r\n [MutationTypes.ProjectPlatformUpdate]: ProjectPlatformUpdate;\r\n [MutationTypes.ProjectPlatformBgImgUpload]: ProjectPlatformBgImgUpload;\r\n [MutationTypes.ProjectPlatformBgImgDelete]: ProjectPlatformBgImgDelete;\r\n [MutationTypes.ProjectUpdateLastModifiedDate]: ProjectUpdateLastModifiedDate;\r\n [MutationTypes.ProjectUpdateLastSavedDate]: ProjectUpdateLastSavedDate;\r\n [MutationTypes.ArtboardSelect]: ArtboardSelect;\r\n [MutationTypes.ArtboardSelectToggle]: ArtboardSelectToggle;\r\n [MutationTypes.ArtboardSelectSpan]: ArtboardSelectSpan;\r\n [MutationTypes.ArtboardSelectAll]: ArtboardSelectAll;\r\n [MutationTypes.ArtboardDeselect]: ArtboardDeselect;\r\n [MutationTypes.ArtboardDeselectAll]: ArtboardDeselectAll;\r\n [MutationTypes.ArtboardSelectSingle]: ArtboardSelectSingle;\r\n [MutationTypes.ArtboardOrderUpdated]: ArtboardOrderUpdated;\r\n [MutationTypes.ArtboardActionMenuToggle]: ArtboardActionMenuToggle;\r\n [MutationTypes.ArtboardAddMaster]: ArtboardAddMaster;\r\n [MutationTypes.ArtboardRemoveMaster]: ArtboardRemoveMaster;\r\n [MutationTypes.ArtboardAdd]: ArtboardAdd;\r\n [MutationTypes.ArtboardRemove]: ArtboardRemove;\r\n [MutationTypes.ArtboardActionAdd]: ArtboardActionAdd;\r\n [MutationTypes.ArtboardActionUpdate]: ArtboardActionUpdate;\r\n [MutationTypes.ArtboardActionRemove]: ArtboardActionRemove;\r\n [MutationTypes.ArtboardActionHotspotPositionSet]: ArtboardActionHotspotPositionSet;\r\n // [MutationTypes.MasterActionAdd]: MasterActionAdd;\r\n [MutationTypes.MasterActionUpdate]: MasterActionUpdate;\r\n [MutationTypes.MasterActionRemove]: MasterActionRemove;\r\n [MutationTypes.MasterActionHotspotPositionSet]: MasterActionHotspotPositionSet;\r\n [MutationTypes.ProjectMasterCreate]: ProjectMasterCreate;\r\n [MutationTypes.ProjectMasterRename]: ProjectMasterRename;\r\n [MutationTypes.ProjectMasterCopy]: ProjectMasterCopy;\r\n [MutationTypes.ProjectMasterDelete]: ProjectMasterDelete;\r\n [MutationTypes.ArtboardSetHeaderFooterHeight]: ArtboardSetHeaderFooterHeight;\r\n}\r\n","import {\r\n FilesystemNodeDeletable,\r\n FilesystemNodeTypes,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeWorkspace,\r\n} from \"@/common/fs\";\r\nimport { RenameWorkspaceInfo, ManageUsersInviteModel, FolderCreateModel } from \"@/services/models/filesystem\";\r\nimport { ChangeProjectInfo } from \"@/services/models/project\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum ActionTypes {\r\n Navigate = \"[Filesystem] Navigate\",\r\n Fetch = \"[Filesystem] Fetch\",\r\n NavigationRestore = \"[Filesystem] Navigation Restore\",\r\n FolderCreate = \"[Filesystem] Create Folder\",\r\n FolderRename = \"[Filesystem] Rename Folder\",\r\n WorkspacesLoad = \"[Filesystem] Workspaces Load\",\r\n WorkspacesRefresh = \"[Filesystem] Workspaces Refresh\",\r\n ProjectLoad = \"[Filesystem] Project Load\",\r\n ProjectRename = \"[Filesystem] Project Rename\",\r\n ProjectUpdate = \"[Filesystem] Project Update\",\r\n ProjectToggleFeedback = \"[Filesystem] Project Toggle Feedback\",\r\n ProjectToggleUserOnly = \"[Filesystem] Project Toggle UserOnly\",\r\n ProjectShare = \"[Filesystem] Project Share\",\r\n WorkspaceRename = \"[Filesystem] Workspace Rename\",\r\n WorkspaceArchive = \"[Filesystem] Workspace Archive\",\r\n FavoriteWorkspace = \"[Filesystem] Favorite Workspace\",\r\n InvitationRespond = \"[Filesystem] Invitation Respond\",\r\n NodeRemove = \"[Filesystem] Nodes Delete\",\r\n UpdateFilesystemOwner = \"[Filesystem] Update Filesystem Owner\",\r\n FetchCurrent = \"[Filesystem] FetchCurrent\",\r\n FirstPageLoad = \"[Filesystem] First Page Load\",\r\n}\r\n\r\nexport class Navigate implements Payload {\r\n public readonly type = ActionTypes.Navigate;\r\n constructor(public node: FilesystemNodeTypes) { }\r\n}\r\n\r\nexport class Fetch implements Payload {\r\n public readonly type = ActionTypes.Fetch;\r\n constructor(public node: FilesystemNodeTypes) { }\r\n}\r\n\r\nexport class FetchCurrent implements Payload {\r\n public readonly type = ActionTypes.FetchCurrent;\r\n}\r\n\r\nexport class NavigationRestore implements Payload {\r\n public readonly type = ActionTypes.NavigationRestore;\r\n constructor(\r\n public id: string,\r\n public idType: \"folder\" | \"shortcut\" | \"workspace\" = \"folder\",\r\n public silent: boolean = false,\r\n ) { }\r\n}\r\n\r\nexport class ProjectLoad implements Payload {\r\n public readonly type = ActionTypes.ProjectLoad;\r\n constructor(public shortcut: string) { }\r\n}\r\n\r\nexport class ProjectUpdate implements Payload {\r\n public readonly type = ActionTypes.ProjectUpdate;\r\n constructor(public shortcut: string, public projectInfo: Partial) { }\r\n}\r\n\r\nexport class ProjectRename implements Payload {\r\n public readonly type = ActionTypes.ProjectRename;\r\n constructor(public shortcut: string, public name: string) { }\r\n}\r\n\r\nexport class ProjectToggleFeedback implements Payload {\r\n public readonly type = ActionTypes.ProjectToggleFeedback;\r\n constructor(public shortcut: string, public enabled: boolean) { }\r\n}\r\n\r\nexport class ProjectToggleUserOnly implements Payload {\r\n public readonly type = ActionTypes.ProjectToggleUserOnly;\r\n constructor(public shortcut: string, public isUserOnly: boolean) { }\r\n}\r\n\r\nexport class ProjectShare implements Payload {\r\n public readonly type = ActionTypes.ProjectShare;\r\n constructor(\r\n public workspace: FilesystemNodeWorkspace,\r\n public node: FilesystemNodeShortcut,\r\n public usersInvite: ManageUsersInviteModel,\r\n public recaptchaToken: string | undefined,\r\n ) { }\r\n}\r\n\r\nexport class FolderCreate implements Payload {\r\n public static readonly type = ActionTypes.FolderCreate;\r\n public readonly type = FolderCreate.type;\r\n constructor(public folderCreateModel: FolderCreateModel) { }\r\n}\r\n\r\nexport class FolderRename implements Payload {\r\n public static readonly type = ActionTypes.FolderRename;\r\n public readonly type = FolderRename.type;\r\n constructor(public folderId: string, public name: string) { }\r\n}\r\n\r\nexport class WorkspacesLoad implements Payload {\r\n public static readonly type = ActionTypes.WorkspacesLoad;\r\n public readonly type = WorkspacesLoad.type;\r\n}\r\n\r\nexport class WorkspacesRefresh implements Payload {\r\n public static readonly type = ActionTypes.WorkspacesRefresh;\r\n public readonly type = WorkspacesRefresh.type;\r\n}\r\n\r\nexport class WorkspaceRename implements Payload {\r\n public static readonly type = ActionTypes.WorkspaceRename;\r\n public readonly type = WorkspaceRename.type;\r\n constructor(public model: RenameWorkspaceInfo) { }\r\n}\r\n\r\nexport class WorkspaceArchive implements Payload {\r\n public static readonly type = ActionTypes.WorkspaceArchive;\r\n public readonly type = WorkspaceArchive.type;\r\n constructor(public id: string, public archive: boolean) { }\r\n}\r\n\r\nexport class FavoriteWorkspace implements Payload {\r\n public static readonly type = ActionTypes.FavoriteWorkspace;\r\n public readonly type = FavoriteWorkspace.type;\r\n constructor(public id: string, public favorite: boolean) { }\r\n}\r\n\r\nexport class InvitationRespond implements Payload {\r\n public static readonly type = ActionTypes.InvitationRespond;\r\n public readonly type = InvitationRespond.type;\r\n constructor(public id: string, public accept: boolean) { }\r\n}\r\n\r\nexport class NodeRemove implements Payload {\r\n public static readonly type = ActionTypes.NodeRemove;\r\n public readonly type = NodeRemove.type;\r\n constructor(public nodes: FilesystemNodeDeletable[], public parentFolder: string) { }\r\n}\r\n\r\nexport class UpdateFilesystemOwner implements Payload {\r\n public static readonly type = ActionTypes.UpdateFilesystemOwner;\r\n public readonly type = UpdateFilesystemOwner.type;\r\n constructor(public filesystemId: string, public email: string) { }\r\n}\r\n\r\nexport class FirstPageLoad implements Payload {\r\n public readonly type = ActionTypes.FirstPageLoad;\r\n constructor(public shortcut: string) { }\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.Navigate]: Navigate;\r\n [ActionTypes.Fetch]: Fetch;\r\n [ActionTypes.NavigationRestore]: NavigationRestore;\r\n [ActionTypes.ProjectLoad]: ProjectLoad;\r\n [ActionTypes.ProjectUpdate]: ProjectUpdate;\r\n [ActionTypes.ProjectRename]: ProjectRename;\r\n [ActionTypes.ProjectToggleFeedback]: ProjectToggleFeedback;\r\n [ActionTypes.ProjectToggleUserOnly]: ProjectToggleUserOnly;\r\n [ActionTypes.ProjectShare]: ProjectShare;\r\n [ActionTypes.FolderCreate]: FolderCreate;\r\n [ActionTypes.FolderRename]: FolderRename;\r\n [ActionTypes.WorkspacesLoad]: WorkspacesLoad;\r\n [ActionTypes.WorkspacesRefresh]: WorkspacesRefresh;\r\n [ActionTypes.WorkspaceRename]: WorkspaceRename;\r\n [ActionTypes.WorkspaceArchive]: WorkspaceArchive;\r\n [ActionTypes.FavoriteWorkspace]: FavoriteWorkspace;\r\n [ActionTypes.InvitationRespond]: InvitationRespond;\r\n [ActionTypes.NodeRemove]: NodeRemove;\r\n [ActionTypes.UpdateFilesystemOwner]: UpdateFilesystemOwner;\r\n [ActionTypes.FetchCurrent]: FetchCurrent;\r\n [ActionTypes.FirstPageLoad]: FirstPageLoad;\r\n}\r\n","import {\r\n ListingJs, ShortcutNotificationStateJs, ExtendedProjectPage, FolderRowJs,\r\n} from \"@shared/models\";\r\n\r\nimport { FilesystemNodeTypes } from \"@/common/fs\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nimport { AxSearchData } from \"./state\";\r\n\r\nexport enum MutationTypes {\r\n Fetching = \"[Filesystem] Fetching\",\r\n Navigating = \"[Filesystem] Navigating\",\r\n SetContents = \"[Filesystem] Set Contents\",\r\n SetParentNode = \"[Filesystem] Set Parent Node\",\r\n Clear = \"[Filesystem] Clear\",\r\n NodeRemember = \"[Filesystem] Remember Node\",\r\n NodeRemove = \"[Filesystem] Remove Node\",\r\n NodeRemoveContents = \"[Filesystem] Remove Node Contents\",\r\n SetListingNode = \"[Filesystem] Set Listing Node\",\r\n SetViewOnly = \"[Filesystem] Set View Only\",\r\n ProjectRename = \"[Filesystem] Project Rename\",\r\n ProjectToggleFeedback = \"[Filesystem] Project Toggle Feedback\",\r\n ProjectToggleUserOnly = \"[Filesystem] Project Toggle UserOnly\",\r\n WorkspaceRename = \"[Filesystem] Workspace Rename\",\r\n FolderAdd = \"[Filesystem] Folder Add\",\r\n FolderRename = \"[Filesystem] Folder Rename\",\r\n SetSearchData = \"[Filesystem] Set Search Data\",\r\n RecentsLoad = \"[Filesystem] Recents Load\",\r\n SetProjectNotificationState = \"[Filesystem] Set Project Notification State\",\r\n WorkspaceArchive = \"[Filesystem] Workspace Archive\",\r\n FavoriteWorkspace = \"[Filesystem] Favorite Workspace\",\r\n SetFirstPage = \"[Filesystem] Set First Page\"\r\n}\r\n\r\nexport class Fetching implements Payload {\r\n public readonly type = MutationTypes.Fetching;\r\n constructor(public id: string, public inProgress: boolean) { }\r\n}\r\n\r\nexport class Navigating implements Payload {\r\n public readonly type = MutationTypes.Navigating;\r\n constructor(\r\n public id: string,\r\n public status: {\r\n inProgress: boolean;\r\n isError?: boolean;\r\n error?: Error | unknown;\r\n },\r\n ) { }\r\n}\r\n\r\nexport class SetContents implements Payload {\r\n public readonly type = MutationTypes.SetContents;\r\n constructor(public node: FilesystemNodeTypes, public contents: ListingJs) { }\r\n}\r\n\r\nexport class SetViewOnly implements Payload {\r\n public readonly type = MutationTypes.SetViewOnly;\r\n constructor(public node: FilesystemNodeTypes, public viewOnly: boolean) { }\r\n}\r\n\r\nexport class Clear implements Payload {\r\n public readonly type = MutationTypes.Clear;\r\n constructor(public id: string) { }\r\n}\r\n\r\nexport class NodeRemember implements Payload {\r\n public readonly type = MutationTypes.NodeRemember;\r\n constructor(public node: FilesystemNodeTypes) { }\r\n}\r\n\r\nexport class SetParentNode implements Payload {\r\n public readonly type = MutationTypes.SetParentNode;\r\n constructor(public id: string, public parent: FilesystemNodeTypes | undefined) { }\r\n}\r\n\r\nexport class NodeRemove implements Payload {\r\n public readonly type = MutationTypes.NodeRemove;\r\n constructor(public id: string) { }\r\n}\r\n\r\nexport class NodeRemoveContents implements Payload {\r\n public readonly type = MutationTypes.NodeRemoveContents;\r\n constructor(public parentFolder: string, public id: string) { }\r\n}\r\n\r\nexport class SetListingNode implements Payload {\r\n public readonly type = MutationTypes.SetListingNode;\r\n constructor(public id: string, public listingNode: any) { }\r\n}\r\n\r\nexport class ProjectRename implements Payload {\r\n public readonly type = MutationTypes.ProjectRename;\r\n constructor(public id: string, public name: string) { }\r\n}\r\n\r\nexport class ProjectToggleFeedback implements Payload {\r\n public readonly type = MutationTypes.ProjectToggleFeedback;\r\n constructor(public id: string, public enabled: boolean) { }\r\n}\r\n\r\nexport class ProjectToggleUserOnly implements Payload {\r\n public readonly type = MutationTypes.ProjectToggleUserOnly;\r\n constructor(public id: string, public isUserOnly: boolean) { }\r\n}\r\n\r\nexport class WorkspaceRename implements Payload {\r\n public readonly type = MutationTypes.WorkspaceRename;\r\n constructor(public id: string, public name: string) { }\r\n}\r\n\r\nexport class WorkspaceArchive implements Payload {\r\n public readonly type = MutationTypes.WorkspaceArchive;\r\n constructor(public id: string, public archive: boolean) { }\r\n}\r\n\r\nexport class FavoriteWorkspace implements Payload {\r\n public readonly type = MutationTypes.FavoriteWorkspace;\r\n constructor(public id: string, public favorite: boolean) { }\r\n}\r\n\r\nexport class FolderAdd implements Payload {\r\n public readonly type = MutationTypes.FolderAdd;\r\n constructor(public node: FilesystemNodeTypes, public folderRowJs: FolderRowJs) { }\r\n}\r\n\r\nexport class FolderRename implements Payload {\r\n public readonly type = MutationTypes.FolderRename;\r\n constructor(public id: string, public name: string) { }\r\n}\r\n\r\nexport class SetSearchData implements Payload {\r\n public readonly type = MutationTypes.SetSearchData;\r\n constructor(public data: Partial) { }\r\n}\r\n\r\nexport class RecentsLoad implements Payload {\r\n public readonly type = MutationTypes.RecentsLoad;\r\n constructor(public inProgress: boolean) { }\r\n}\r\n\r\nexport class SetProjectNotificationState implements Payload {\r\n public readonly type = MutationTypes.SetProjectNotificationState;\r\n constructor(public id: string, public notificationState: Partial) { }\r\n}\r\n\r\nexport class SetFirstPage implements Payload {\r\n public readonly type = MutationTypes.SetFirstPage;\r\n constructor(public nodeId: string, public page: ExtendedProjectPage) { }\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.Fetching]: Fetching;\r\n [MutationTypes.Navigating]: Navigating;\r\n [MutationTypes.SetContents]: SetContents;\r\n [MutationTypes.SetViewOnly]: SetViewOnly;\r\n [MutationTypes.Clear]: Clear;\r\n [MutationTypes.NodeRemember]: NodeRemember;\r\n [MutationTypes.SetParentNode]: SetParentNode;\r\n [MutationTypes.NodeRemove]: NodeRemove;\r\n [MutationTypes.NodeRemoveContents]: NodeRemoveContents;\r\n [MutationTypes.SetListingNode]: SetListingNode;\r\n [MutationTypes.ProjectRename]: ProjectRename;\r\n [MutationTypes.ProjectToggleFeedback]: ProjectToggleFeedback;\r\n [MutationTypes.ProjectToggleUserOnly]: ProjectToggleUserOnly;\r\n [MutationTypes.WorkspaceRename]: WorkspaceRename;\r\n [MutationTypes.FolderAdd]: FolderAdd;\r\n [MutationTypes.FolderRename]: FolderRename;\r\n [MutationTypes.SetSearchData]: SetSearchData;\r\n [MutationTypes.RecentsLoad]: RecentsLoad;\r\n [MutationTypes.SetProjectNotificationState]: SetProjectNotificationState;\r\n [MutationTypes.WorkspaceArchive]: WorkspaceArchive;\r\n [MutationTypes.FavoriteWorkspace]: FavoriteWorkspace;\r\n [MutationTypes.SetFirstPage]: SetFirstPage;\r\n}\r\n","import { ExtendedProjectPage } from \"@shared/models\";\r\n\r\nimport { FilesystemNodeRoot, FilesystemNodeType, FilesystemNodeTypes } from \"@/common/fs\";\r\nimport { SearchResult } from \"@/common/search/SearchResult\";\r\n\r\nimport { FilesystemSearchItem } from \"@/components/types/AxSearch\";\r\n\r\nexport interface AxSearchData {\r\n isLoading: boolean;\r\n query: string;\r\n results: SearchResult[];\r\n}\r\n\r\nexport interface AxShareFilesystem {\r\n firstLoad: boolean;\r\n recentsLoad: boolean;\r\n fetching: Record;\r\n navigating: Record;\r\n navigatingError: Record;\r\n nodes: Record;\r\n contents: Record;\r\n searchData: AxSearchData;\r\n firstPagesMap: Record;\r\n}\r\n\r\nexport const rootNode: FilesystemNodeRoot = {\r\n id: \"root\",\r\n name: \"Workspaces\",\r\n type: FilesystemNodeType.Root,\r\n listingNode: undefined,\r\n parent: undefined,\r\n siblings: [],\r\n totalItems: 0,\r\n created: new Date(),\r\n};\r\n\r\nconst state = (): AxShareFilesystem => ({\r\n firstLoad: true,\r\n recentsLoad: false,\r\n fetching: {},\r\n navigating: {},\r\n navigatingError: {},\r\n nodes: {\r\n [rootNode.id]: rootNode,\r\n },\r\n contents: {\r\n [rootNode.id]: [],\r\n },\r\n searchData: {\r\n isLoading: false,\r\n query: \"\",\r\n results: [],\r\n },\r\n firstPagesMap: {},\r\n});\r\n\r\nexport default state;\r\n","import {\r\n resolveAccountServiceHost, resolveApiBaseUrl, setApiBaseUrl, getApiCallId,\r\n} from \"@/common/axshare/api\";\r\nimport { persistentStorage } from \"@/common/axshare/persistent\";\r\nimport { equalsIgnoringCase } from \"@/common/lib\";\r\nimport { reconfigure } from \"@/services/server\";\r\nimport { getConfig, getVersion } from \"@/services/user.service\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { GetUserInfo, GetUserProfile } from \"@/store/user/actionTypes\";\r\n\r\nimport {\r\n ActionPayloadMap,\r\n ActionTypes,\r\n Authenticate,\r\n Initialize,\r\n LoadConfig,\r\n SetupAccountService,\r\n ApiCall,\r\n ApiCallOptions,\r\n Logout,\r\n} from \"./actionTypes\";\r\nimport { GetAdminInfo } from \"./admin/actionTypes\";\r\nimport { asyncAction, AsyncActionState } from \"./async-action\";\r\nimport * as mutations from \"./mutationTypes\";\r\nimport { ActionTree } from \"./typed\";\r\n\r\nconst actions: ActionTree = {\r\n async [ActionTypes.Initialize]({ state, dispatch, commit }, {\r\n force, apiUrl, authToken, useGet,\r\n }) {\r\n if (force) {\r\n commit(new mutations.Reset());\r\n }\r\n\r\n const canInitialize = force || state.initializationStatus !== \"success\";\r\n if (canInitialize) {\r\n setApiBaseUrl(apiUrl);\r\n reconfigure(resolveApiBaseUrl(state.axShareConfig));\r\n try {\r\n await dispatch(new LoadConfig(force));\r\n await dispatch(new SetupAccountService(force, authToken, useGet));\r\n commit(new mutations.InitializationStatus(\"success\"));\r\n return state.axShareConfig;\r\n } catch (error) {\r\n commit(new mutations.InitializationStatus(\"failure\", error));\r\n throw error;\r\n }\r\n }\r\n },\r\n\r\n async [ActionTypes.ApiCall]({ state, commit }, { options }) {\r\n const { action, id, onFailure } = options;\r\n let apiCallId = id;\r\n if (!apiCallId) {\r\n apiCallId = getApiCallId();\r\n commit(new mutations.ApiCallAdd(apiCallId, action, onFailure));\r\n }\r\n\r\n let result;\r\n try {\r\n commit(new mutations.ApiCallSetStatus(apiCallId, AsyncActionState.Fetching));\r\n result = await action();\r\n commit(new mutations.ApiCallSetStatus(apiCallId, AsyncActionState.Success));\r\n } catch (error) {\r\n commit(new mutations.ApiCallSetStatus(apiCallId, AsyncActionState.Failure));\r\n if (onFailure) {\r\n await onFailure(error);\r\n } else {\r\n throw error;\r\n }\r\n } finally {\r\n const apiCall = state.apiCalls[apiCallId];\r\n if (apiCall && apiCall.status === AsyncActionState.Success) {\r\n commit(new mutations.ApiCallRemove(apiCallId));\r\n }\r\n }\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ApiCallRetry]({ state, commit, dispatch }, { apiCallId }) {\r\n const apiCall = state.apiCalls[apiCallId];\r\n if (!apiCall) return;\r\n const { action, onFailure } = apiCall;\r\n commit(new mutations.ApiCallRetry(apiCallId));\r\n const options: ApiCallOptions = {\r\n id: apiCallId,\r\n action,\r\n onFailure,\r\n };\r\n await dispatch(new ApiCall(options));\r\n },\r\n\r\n async [ActionTypes.ApiCallClear]({ commit }) {\r\n commit(new mutations.ApiCallClear());\r\n },\r\n\r\n async [ActionTypes.LoadConfig](context, { force }) {\r\n const { state } = context;\r\n if (state.axShareConfig != null && !force) return;\r\n return asyncAction(\r\n context,\r\n ActionTypes.LoadConfig,\r\n () => getConfig(),\r\n response => new mutations.ConfigSet(response),\r\n );\r\n },\r\n\r\n async [ActionTypes.SetupAccountService]({\r\n state, getters, commit, dispatch,\r\n }, { force, authToken, useGet }) {\r\n if (state.axShareConfig == null) return;\r\n if (state.accountService != null && !force) return;\r\n if (!getters.appConfigured) return;\r\n const accountServiceHost = resolveAccountServiceHost(state.axShareConfig);\r\n const axshareHost = resolveApiBaseUrl(state.axShareConfig);\r\n commit(new mutations.SetupAccountService(accountServiceHost, axshareHost, authToken, useGet));\r\n await dispatch(new Authenticate());\r\n },\r\n\r\n async [ActionTypes.Authenticate]({ state, dispatch }) {\r\n if (state.axShareConfig == null) return;\r\n if (state.accountService == null) return;\r\n\r\n if (state.accountService) {\r\n try {\r\n const accountService = state.accountService();\r\n const isAuthed = await accountService.auth();\r\n const afterAuthActions = [];\r\n afterAuthActions.push(dispatch(new GetAdminInfo()));\r\n\r\n if (isAuthed) {\r\n afterAuthActions.push(dispatch(new GetUserInfo()));\r\n afterAuthActions.push(dispatch(new GetUserProfile()));\r\n }\r\n\r\n await Promise.all(afterAuthActions);\r\n\r\n if (isAuthed) {\r\n // assert that userId match in userInfo and accountService\r\n // ensure that the same user is signed in to Accounts and Cloud\r\n // see A9-2850 for more\r\n const userInfoUserId = state.user?.userInfo?.userId;\r\n const accountServiceUserId = accountService.UserId;\r\n if (!equalsIgnoringCase(userInfoUserId, accountServiceUserId)) {\r\n await dispatch(new Logout());\r\n throw new Error(\"Incorrect login status. User mismatch between Cloud and Accounts occurred.\");\r\n }\r\n }\r\n } catch (error) {\r\n console.warn(`Authentication against account service has failed: ${error}`);\r\n // uncomment logout redirect after clarifying Safari behavior\r\n // const logoutUrl = `${AxShareHostSecureUrl}/user/logout`;\r\n // window.location.href = logoutUrl;\r\n }\r\n }\r\n },\r\n\r\n async [ActionTypes.Logout]({ state, commit, dispatch }, { onSuccess, onFailure }) {\r\n const { accountService } = state;\r\n if (accountService) {\r\n try {\r\n await accountService().logout();\r\n if (onSuccess) {\r\n await onSuccess();\r\n }\r\n await dispatch(new Initialize(true));\r\n } catch (error) {\r\n if (onFailure) {\r\n await onFailure();\r\n }\r\n throw error;\r\n }\r\n } else {\r\n commit(new mutations.Reset());\r\n }\r\n },\r\n\r\n async [ActionTypes.LoadApiVersionInfo]({ commit }) {\r\n const version = await getVersion();\r\n commit(new mutations.ApiVersionSet(version));\r\n persistentStorage.setApiVersionInfo(version);\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { getSubInstanceInfo, getUserInfo } from \"@/services/admin.service\";\r\nimport store from \"@/store\";\r\nimport { ActionPayloadMap, ActionTypes, GetAdminSubInstanceInfo, GetAdminUserInfo } from \"@/store/admin/actionTypes\";\r\nimport { SetAdminSubInstanceInfo, SetAdminUserInfo } from \"@/store/admin/mutationTypes\";\r\nimport { AxShareAdmin } from \"@/store/admin/state\";\r\nimport { asyncAction } from \"@/store/async-action\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ActionTree } from \"@/store/typed\";\r\n\r\nconst actions: ActionTree = {\r\n async [ActionTypes.GetAdminInfo](context) {\r\n const { accountService, axShareConfig } = store.state as AxShare;\r\n\r\n const isAuthed = !!accountService && accountService().IsAuthed;\r\n // No need to request admin user info for non-auther users or non-subinstance app\r\n if (!isAuthed || !axShareConfig || !axShareConfig.IsSubInstance) {\r\n context.commit(new SetAdminUserInfo(undefined));\r\n return;\r\n }\r\n const getInfo = [context.dispatch(new GetAdminUserInfo()), context.dispatch(new GetAdminSubInstanceInfo())];\r\n await Promise.all(getInfo);\r\n },\r\n\r\n async [ActionTypes.GetAdminUserInfo](context) {\r\n await asyncAction(\r\n context,\r\n ActionTypes.GetAdminUserInfo,\r\n async () => getUserInfo(),\r\n response => new SetAdminUserInfo(response)\r\n );\r\n },\r\n\r\n async [ActionTypes.GetAdminSubInstanceInfo](context) {\r\n await asyncAction(\r\n context,\r\n ActionTypes.GetAdminSubInstanceInfo,\r\n async () => getSubInstanceInfo(),\r\n response => new SetAdminSubInstanceInfo(response)\r\n );\r\n },\r\n\r\n [ActionTypes.SetAdminUserInfo](context, { userInfo }) {\r\n context.commit(new SetAdminUserInfo(userInfo));\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { AxShareCurrentUserInfo } from \"@shared/models\";\r\n\r\nimport { AccessLevels } from \"@/services/models/account\";\r\nimport { AxShareAdmin } from \"@/store/admin/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n currentAdminUser(state): AxShareCurrentUserInfo | undefined {\r\n return state.userInfo;\r\n },\r\n\r\n isAdminUser(_state, getters): boolean {\r\n const currentUser: AxShareCurrentUserInfo | undefined = getters.currentAdminUser;\r\n return (\r\n currentUser !== undefined\r\n && (currentUser.AccessLevel === AccessLevels.SuperAdmin || currentUser.AccessLevel === AccessLevels.Admin)\r\n );\r\n },\r\n\r\n isSuperAdminUser(_state, getters): boolean {\r\n const currentUser: AxShareCurrentUserInfo | undefined = getters.currentAdminUser;\r\n return currentUser !== undefined && currentUser.AccessLevel === AccessLevels.SuperAdmin;\r\n },\r\n\r\n isReviewerUser(_state, getters): boolean {\r\n const currentUser: AxShareCurrentUserInfo | undefined = getters.currentAdminUser;\r\n return currentUser !== undefined && currentUser.AccessLevel === AccessLevels.Reviewer;\r\n },\r\n\r\n isAuthorUser(_state, getters): boolean {\r\n const currentUser: AxShareCurrentUserInfo | undefined = getters.currentAdminUser;\r\n return currentUser !== undefined && currentUser.AccessLevel === AccessLevels.Author;\r\n },\r\n\r\n isTechnicalAdminUser(_state, getters): boolean {\r\n const currentUser: AxShareCurrentUserInfo | undefined = getters.currentAdminUser;\r\n return currentUser !== undefined && currentUser.AccessLevel === AccessLevels.TechnicalAdmin;\r\n },\r\n\r\n isSubInstanceAdmin(_state, getters, rootState): boolean {\r\n return rootState.axShareConfig && rootState.axShareConfig.IsSubInstance && getters.isAdminUser;\r\n },\r\n\r\n isSubInstanceTechnicalAdmin(_state, getters, rootState): boolean {\r\n return rootState.axShareConfig && rootState.axShareConfig.IsSubInstance && getters.isTechnicalAdminUser;\r\n },\r\n\r\n isSubInstanceReviewer(_state, getters, rootState): boolean {\r\n return rootState.axShareConfig && rootState.axShareConfig.IsSubInstance && getters.isReviewerUser;\r\n },\r\n\r\n isSubInstanceAuthor(_state, getters, rootState): boolean {\r\n return rootState.axShareConfig && rootState.axShareConfig.IsSubInstance && getters.isAuthorUser;\r\n },\r\n\r\n hasAuthorRights(_state, getters): boolean {\r\n const currentUser: AxShareCurrentUserInfo | undefined = getters.currentAdminUser;\r\n return currentUser !== undefined && currentUser.AccessLevel <= AccessLevels.Author;\r\n },\r\n};\r\n\r\nexport default getterTree;\r\n","import { MutationPayloadMap, MutationTypes } from \"@/store/admin/mutationTypes\";\r\nimport { AxShareAdmin } from \"@/store/admin/state\";\r\nimport { MutationTree } from \"../typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.SetAdminUserInfo](state, { userInfo }) {\r\n state.userInfo = userInfo;\r\n },\r\n\r\n [MutationTypes.SetAdminSubInstanceInfo](state, { subInstanceInfo }) {\r\n state.subInstanceInfo = subInstanceInfo;\r\n },\r\n\r\n [MutationTypes.SetAdminSubInstanceAccounts](state, { accounts }) {\r\n state.subInstanceAccounts = accounts;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { AccountRowJs, AxShareCurrentUserInfo, AxShareSubInstanceInfo } from \"@shared/models\";\r\n\r\nexport interface AxShareAdmin {\r\n userInfo?: AxShareCurrentUserInfo;\r\n subInstanceInfo?: AxShareSubInstanceInfo;\r\n subInstanceAccounts?: AccountRowJs[];\r\n}\r\n\r\nconst state = (): AxShareAdmin => ({\r\n userInfo: undefined,\r\n subInstanceInfo: undefined,\r\n subInstanceAccounts: undefined,\r\n});\r\n\r\nexport default state;\r\n","import actions from \"@/store/admin/actions\";\r\nimport getters from \"@/store/admin/getters\";\r\nimport mutations from \"@/store/admin/mutations\";\r\nimport state from \"@/store/admin/state\";\r\n\r\nexport default {\r\n state,\r\n actions,\r\n mutations,\r\n getters,\r\n};\r\n","import { DrawBadgeParams } from \"@/desktop/types\";\r\n\r\nexport class BadgeDrawer {\r\n private readonly defaultOptions: Required = {\r\n radius: 8,\r\n backgroundColor: \"#ff0000\",\r\n textColor: \"#fff\",\r\n text: \"\",\r\n strokeWidth: 0,\r\n strokeColor: \"\",\r\n font: \"12px Arial\",\r\n textOffsetTop: 1,\r\n };\r\n\r\n public drawBadgeAsBase64(drawerOptions: DrawBadgeParams): string {\r\n const options: Required = { ...this.defaultOptions, ...drawerOptions };\r\n\r\n // reduce radius by 1px, so it will fit into our canvas\r\n const radius = options.radius;\r\n const size = radius * 2;\r\n const img: HTMLCanvasElement = document.createElement(\"canvas\");\r\n img.width = size;\r\n img.height = size;\r\n const context = img.getContext(\"2d\");\r\n\r\n if (!context) {\r\n return \"\";\r\n }\r\n\r\n context.clearRect(0, 0, size, size);\r\n context.fillStyle = options.backgroundColor;\r\n context.beginPath();\r\n context.arc(radius, radius, radius, 0, Math.PI * 2);\r\n context.fill();\r\n if (options.strokeWidth) {\r\n context.lineWidth = options.strokeWidth;\r\n context.strokeStyle = options.strokeColor;\r\n context.stroke();\r\n }\r\n context.font = options.font;\r\n context.textAlign = \"center\";\r\n context.textBaseline = \"middle\";\r\n context.fillStyle = options.textColor;\r\n context.fillText(options.text, radius, radius + options.textOffsetTop);\r\n\r\n const base64imageURL = img.toDataURL();\r\n return base64imageURL;\r\n }\r\n}\r\n\r\nexport const badgeDrawer = new BadgeDrawer();\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { DrawBadgeParams } from \"@/desktop/types\";\r\n\r\nimport { PayloadMap } from \"../typed\";\r\n\r\nexport enum ActionTypes {\r\n NewProjectMenuAction = \"NewProjectMenuAction\",\r\n DrawBadge = \"AxDrawBadge\",\r\n}\r\n\r\nexport class NewProjectMenuAction implements Payload {\r\n public readonly type = ActionTypes.NewProjectMenuAction;\r\n}\r\n\r\nexport class DrawBadge implements Payload {\r\n public readonly type = ActionTypes.DrawBadge;\r\n constructor(public readonly options: DrawBadgeParams) {}\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.NewProjectMenuAction]: NewProjectMenuAction;\r\n [ActionTypes.DrawBadge]: DrawBadge;\r\n}\r\n","import { badgeDrawer } from \"@/common/notifications/BadgeDrawer\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport { ActionTree } from \"../typed\";\r\n\r\nimport { ActionPayloadMap, ActionTypes } from \"./actionTypes\";\r\n\r\nconst actions: ActionTree = {\r\n async [ActionTypes.NewProjectMenuAction](_context) {\r\n // perform your action here\r\n },\r\n\r\n async [ActionTypes.DrawBadge](_context, { options }): Promise {\r\n const base64imageURL = badgeDrawer.drawBadgeAsBase64(options);\r\n\r\n return base64imageURL;\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { Payload } from \"vuex\";\r\nimport { DesktopParams } from \"@/desktop/types\";\r\nimport { PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n SetDesktopParams = \"[Desktop] Set Desktop Params\",\r\n}\r\n\r\nexport class SetDesktopParams implements Payload {\r\n public readonly type = MutationTypes.SetDesktopParams;\r\n constructor(public desktopParams: Partial | undefined) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.SetDesktopParams]: SetDesktopParams;\r\n}\r\n","import { MutationPayloadMap, MutationTypes } from \"@/store/desktop/mutationTypes\";\r\nimport { MutationTree } from \"../typed\";\r\nimport { DesktopStore } from \"./state\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.SetDesktopParams](state, { desktopParams }) {\r\n if (desktopParams) {\r\n if (desktopParams.isMaximized !== undefined) {\r\n state.desktopParams.isMaximized = desktopParams.isMaximized;\r\n }\r\n if (desktopParams.isFullScreen !== undefined) {\r\n state.desktopParams.isFullScreen = desktopParams.isFullScreen;\r\n }\r\n }\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { DesktopParams } from \"@/desktop/types\";\r\n\r\nexport interface DesktopStore {\r\n desktopParams: DesktopParams;\r\n}\r\n\r\nconst state = (): DesktopStore => ({\r\n desktopParams: {\r\n isMaximized: false,\r\n isFullScreen: false,\r\n },\r\n});\r\n\r\nexport default state;\r\n","import actions from \"@/store/desktop/actions\";\r\nimport mutations from \"@/store/desktop/mutations\";\r\nimport state from \"@/store/desktop/state\";\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n state,\r\n};\r\n","import {\r\n Action, ActionType, Artboard, ScrollPositionAction,\r\n} from \"@shared/expo\";\r\n\r\nimport { isSavedAction } from \"@/common/expo/actions\";\r\nimport { ProjectConfig } from \"@/common/expo/interfaces\";\r\nimport { FilesystemNodeShortcut } from \"@/common/fs\";\r\nimport * as api from \"@/services/expo.service\";\r\nimport * as mutations from \"@/store/expo/mutationTypes\";\r\nimport { ExpoStore } from \"@/store/expo/state\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ActionTree } from \"@/store/typed\";\r\n\r\nimport { ActionPayloadMap, ActionTypes, ProjectContentFetch } from \"./actionTypes\";\r\n\r\n// Helper function to perform request to add/edit hotspot\r\nasync function saveAction(shortcut: string, artboard: Artboard, originalAction: Action, action: Action) {\r\n const saved = isSavedAction(action);\r\n\r\n // Fix for point on screen action when users delete an input and immediately saves\r\n if (action.Type === ActionType.PointOnScreen) {\r\n const ptOnScreenAction = action.Setting as ScrollPositionAction;\r\n const x = typeof ptOnScreenAction.Location.X;\r\n const y = typeof ptOnScreenAction.Location.Y;\r\n let tempStr = \"\";\r\n let tempVal = 0;\r\n\r\n if (x !== \"number\") {\r\n tempStr = `${ptOnScreenAction.Location.X}`;\r\n tempVal = parseInt(tempStr, 10);\r\n ptOnScreenAction.Location.X = Number.isNaN(tempVal) ? 0 : tempVal;\r\n }\r\n if (y !== \"number\") {\r\n tempStr = `${ptOnScreenAction.Location.Y}`;\r\n tempVal = parseInt(tempStr, 10);\r\n ptOnScreenAction.Location.Y = Number.isNaN(tempVal) ? 0 : tempVal;\r\n }\r\n }\r\n\r\n const result = saved\r\n ? await api.hotspotEdit(shortcut, originalAction, action)\r\n : await api.hotspotAdd(shortcut, artboard, action);\r\n\r\n return result;\r\n}\r\n\r\nconst actionsTree: ActionTree = {\r\n async [ActionTypes.SetupProject]({\r\n state, commit, dispatch, rootGetters,\r\n }, { options }) {\r\n const {\r\n mode, shortcut, archiveMode, resourceFolder, resourceAxureFolder, platform, bgImgUrl,\r\n } = options;\r\n // TODO: Optimize\r\n // Trigger call to load and setup project.\r\n // NOTE: As of now, the state shortcut is correct but the project objects (artboards, assets, ...) are wrong.\r\n // We need to find a better way to catch this discrepancy between states, loading between two different projects\r\n // and force a new content fetch and set.\r\n const currentProject = state.projects[shortcut.toLowerCase()];\r\n if (\r\n !currentProject.isProjectLoading\r\n && !currentProject.isProjectLoaded\r\n // || (route as any).from.name === \"project.overview\"\r\n ) {\r\n // Mark project is loading\r\n commit(new mutations.ProjectIsLoadingSet(shortcut, true));\r\n\r\n // Store general project details.\r\n commit(\r\n new mutations.ProjectSetup({\r\n lastModified: getLastModified(rootGetters, shortcut),\r\n mode,\r\n shortcut,\r\n archiveMode,\r\n resourceFolder,\r\n resourceAxureFolder,\r\n platform,\r\n bgImgUrl,\r\n artboardsOrder: currentProject.artboardsOrder,\r\n hasArtboards: currentProject.hasArtboards,\r\n }),\r\n );\r\n\r\n // Retrieve all expo content and store into vuex\r\n await dispatch(new ProjectContentFetch(shortcut));\r\n }\r\n },\r\n\r\n async [ActionTypes.ProjectFetchExpo]({\r\n state, dispatch, commit, rootGetters,\r\n }, { shortcutId }) {\r\n // eslint-disable-next-line no-param-reassign\r\n shortcutId = shortcutId.toLowerCase();\r\n const content = await api.getProject(shortcutId, true);\r\n if (content) {\r\n const currentProject = state.projects[shortcutId];\r\n const lastModified = getLastModified(rootGetters, shortcutId);\r\n if (currentProject) {\r\n if (currentProject.lastModifiedDate < lastModified) {\r\n await dispatch(new ProjectContentFetch(shortcutId));\r\n }\r\n }\r\n const config: ProjectConfig = {\r\n mode: \"expo\",\r\n shortcut: shortcutId,\r\n resourceFolder: \"\",\r\n resourceAxureFolder: \"\",\r\n platform: content.project.Platform,\r\n archiveMode: false,\r\n bgImgUrl: content.bgImgUrl,\r\n artboardsOrder: content.project.ArtboardIds,\r\n hasArtboards: content.project.ArtboardIds.length > 0,\r\n lastModified: getLastModified(rootGetters, shortcutId),\r\n };\r\n commit(new mutations.ProjectSetup(config));\r\n }\r\n },\r\n\r\n async [ActionTypes.ProjectContentFetch]({ state, commit }, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n let archiveMode = false;\r\n if (project) {\r\n archiveMode = project.archiveMode;\r\n }\r\n const content = await api.getStaticContent(shortcut, archiveMode);\r\n commit(new mutations.ProjectContentSet(shortcut, content));\r\n commit(new mutations.ProjectZoomSet(shortcut, content.project.Zoom));\r\n },\r\n\r\n async [ActionTypes.ProjectZoomSave]({ state }, { shortcut, zoom }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n return api.saveProjectZoom(project.shortcut, zoom);\r\n },\r\n\r\n async [ActionTypes.ProjectPlatformUpdate]({ state, dispatch, commit }, { shortcut, platform }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n if (platform !== undefined) {\r\n const result = await api.updatePlatform(project.shortcut, platform);\r\n await dispatch(new ProjectContentFetch(shortcut));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n }\r\n },\r\n\r\n async [ActionTypes.ProjectPlatformBackgroundImageUpload]({ commit }, { shortcut, response }) {\r\n // const result = api.uploadBackgroundImage(state.shortcut, form);\r\n commit(new mutations.ProjectPlatformBgImgUpload(shortcut, response));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ProjectPlatformBackgroundImageDelete]({ commit }, { shortcut }) {\r\n const result = await api.deleteBackgroundImage(shortcut);\r\n commit(new mutations.ProjectPlatformBgImgDelete(shortcut, result));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ArtboardRemove]({ commit }, { shortcut, artboardId }) {\r\n commit(new mutations.ArtboardRemove(shortcut, artboardId));\r\n const result = await api.artboardDelete(shortcut, artboardId);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ArtboardArchive]({ commit }, { shortcut, artboardId }) {\r\n commit(new mutations.ArtboardRemove(shortcut, artboardId));\r\n const result = await api.artboardArchive(shortcut, artboardId);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ArtboardUnarchive]({ commit }, { shortcut, artboardId }) {\r\n commit(new mutations.ArtboardRemove(shortcut, artboardId));\r\n const result = await api.artboardUnarchive(shortcut, artboardId);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ArtboardRemoveSelection]({ state, commit }, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const selectedArtboards = Object.keys(project.selectedArtboards);\r\n\r\n for (const artboardId of selectedArtboards) {\r\n commit(new mutations.ArtboardRemove(shortcut, artboardId));\r\n }\r\n\r\n await api.artboardsDelete(project.shortcut, selectedArtboards);\r\n\r\n commit(new mutations.ProjectUpdateLastModifiedDate(shortcut));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ArtboardArchiveSelection]({ state, commit }, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const selectedArtboards = Object.keys(project.selectedArtboards);\r\n for (const artboardId of selectedArtboards) {\r\n commit(new mutations.ArtboardRemove(shortcut, artboardId));\r\n }\r\n\r\n for (const artboardId of selectedArtboards) {\r\n // eslint-disable-next-line no-await-in-loop\r\n await api.artboardArchive(project.shortcut, artboardId);\r\n }\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ArtboardUnarchiveSelection]({ state, commit }, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const selectedArtboards = Object.keys(project.selectedArtboards);\r\n for (const artboardId of selectedArtboards) {\r\n commit(new mutations.ArtboardRemove(shortcut, artboardId));\r\n }\r\n\r\n for (const artboardId of selectedArtboards) {\r\n // eslint-disable-next-line no-await-in-loop\r\n await api.artboardUnarchive(project.shortcut, artboardId);\r\n }\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ArtboardReorder]({ commit }, { shortcut, artboardId, tailArtboardId }) {\r\n const result = await api.artboardReorder(shortcut, artboardId, tailArtboardId);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ArtboardAdd]({ commit }, {\r\n shortcut, artboard, asset, url,\r\n }) {\r\n commit(new mutations.ArtboardAdd(shortcut, artboard, asset, url));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ArtboardAddMaster]({ commit }, { shortcut, artboardId, masterId }) {\r\n const result = await api.addRemoveArtboardMaster(shortcut, artboardId, masterId, true);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ArtboardRemoveMaster]({ commit }, { shortcut, artboardId, masterId }) {\r\n const result = await api.addRemoveArtboardMaster(shortcut, artboardId, masterId);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n return result;\r\n },\r\n\r\n async [ActionTypes.ArtboardActionSave]({ commit }, {\r\n shortcut, artboard, originalAction, action,\r\n }) {\r\n // store temporary id if action wasn't saved before\r\n const actionId = action.Id;\r\n const response = await saveAction(shortcut, artboard, originalAction, action);\r\n\r\n if (response.action.IsMaster) {\r\n commit(\r\n new mutations.MasterActionUpdate(\r\n shortcut,\r\n artboard.Id,\r\n response.action.ParentId,\r\n actionId,\r\n originalAction,\r\n response.action,\r\n ),\r\n );\r\n } else {\r\n commit(new mutations.ArtboardActionUpdate(shortcut, artboard.Id, actionId, originalAction, response.action));\r\n }\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ArtboardActionRemove]({ commit }, { shortcut, artboard, action }) {\r\n commit(new mutations.ArtboardActionRemove(shortcut, artboard, action));\r\n\r\n const saved = isSavedAction(action);\r\n if (saved) {\r\n await api.hotspotDelete(shortcut, action.IsMaster, action.ParentId, action.Id);\r\n }\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.MasterActionSave]({ commit }, {\r\n shortcut, artboard, master, originalAction, action,\r\n }) {\r\n // store temporary id if action wasn't saved before\r\n const actionId = action.Id;\r\n const response = await saveAction(shortcut, artboard, originalAction, action);\r\n\r\n commit(\r\n new mutations.MasterActionUpdate(shortcut, artboard.Id, master.Id, actionId, originalAction, response.action),\r\n );\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.MasterActionRemove]({ commit }, { shortcut, master, action }) {\r\n commit(new mutations.MasterActionRemove(shortcut, master, action));\r\n\r\n const saved = isSavedAction(action);\r\n if (saved) {\r\n await api.hotspotDelete(shortcut, action.IsMaster, action.ParentId, action.Id);\r\n }\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ProjectMasterCreate]({ commit }, { shortcut, bundle }) {\r\n const result = await api.masterCreate(shortcut, bundle.name, bundle.artboard.Id);\r\n commit(new mutations.ProjectMasterCreate(shortcut, result.Master, bundle.artboard, bundle.callback));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ProjectMasterRename]({ commit }, { shortcut, master, name }) {\r\n commit(new mutations.ProjectMasterRename(shortcut, master, name));\r\n await api.masterRename(shortcut, master.Id, name);\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n\r\n async [ActionTypes.ProjectMasterCopy]({ commit }, {\r\n shortcut, master, artboard, callback,\r\n }) {\r\n const result = await api.masterCopy(shortcut, artboard.Id, master.Id);\r\n commit(new mutations.ProjectMasterCopy(shortcut, result.Master, artboard, callback));\r\n },\r\n\r\n async [ActionTypes.ProjectMasterDelete]({ commit }, { shortcut, master }) {\r\n commit(new mutations.ProjectMasterDelete(shortcut, master));\r\n await api.masterDelete(shortcut, master.Id);\r\n },\r\n\r\n async [ActionTypes.ArtboardSetHeaderFooterHeight]({ commit }, {\r\n shortcut, artboard, height, isHeader,\r\n }) {\r\n await api.setHeaderFooterHeight(shortcut, artboard, height, isHeader);\r\n commit(new mutations.ArtboardSetHeaderFooterHeight(shortcut, artboard, height, isHeader));\r\n commit(new mutations.ProjectUpdateLastSavedDate(shortcut));\r\n },\r\n};\r\n\r\nfunction getLastModified(rootGetters: any, shortcutId: string) {\r\n let lastModified = 0;\r\n const fsNode: FilesystemNodeShortcut = rootGetters.getFsNode(shortcutId);\r\n if (fsNode && fsNode.updated) {\r\n lastModified = fsNode.updated.getTime();\r\n }\r\n return lastModified;\r\n}\r\n\r\nexport default actionsTree;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { ExpoProjectNode, ExpoStore } from \"@/store/expo/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getters: GetterTree = {\r\n currentProject(state, _, rootState): ExpoProjectNode | undefined {\r\n const { route } = rootState;\r\n if (route && route.params) {\r\n const { shortcut } = route.params;\r\n if (shortcut) {\r\n return state.projects[shortcut.toLowerCase()];\r\n }\r\n }\r\n },\r\n\r\n nextArtboard: (_, g) => (artboardId: string) => {\r\n const currentProject: ExpoProjectNode = g.currentProject;\r\n const orderedArtboardIndex = currentProject.artboardsOrder.findIndex(id => artboardId === id);\r\n if (orderedArtboardIndex >= 0) {\r\n const nextArtboardId = currentProject.artboardsOrder[orderedArtboardIndex + 1];\r\n return currentProject.artboards[nextArtboardId];\r\n }\r\n },\r\n\r\n previousArtboard: (_, g) => (artboardId: string) => {\r\n const currentProject: ExpoProjectNode = g.currentProject;\r\n const orderedArtboardIndex = currentProject.artboardsOrder.findIndex(id => artboardId === id);\r\n if (orderedArtboardIndex >= 0) {\r\n const prevArtboardId = currentProject.artboardsOrder[orderedArtboardIndex - 1];\r\n return currentProject.artboards[prevArtboardId];\r\n }\r\n },\r\n};\r\n\r\nexport default getters;\r\n","import { Artboard, Asset, Master, Platform, Project, ExpoStaticContent } from \"@shared/expo\";\r\n\r\nimport { AssetDimensions } from \"@/common/expo/interfaces\";\r\n\r\nexport interface ExpoStore {\r\n projects: { [shortcutKey: string]: ExpoProjectNode };\r\n}\r\n\r\nexport interface ExpoProjectNode {\r\n mode: \"expo\" | \"handoff\" | string;\r\n isProjectLoading: boolean;\r\n isProjectLoaded: boolean;\r\n\r\n // indicates date after each update in expo project is made\r\n lastModifiedDate: number;\r\n\r\n // indicates date when last server update was made\r\n lastSavedDate: number;\r\n\r\n shortcut: string;\r\n resourceFolder: string;\r\n resourceAxureFolder: string;\r\n archiveMode: boolean;\r\n platform: Platform | undefined;\r\n projectDimensions: AssetDimensions;\r\n projectZoom: number;\r\n assets: {\r\n [assetId: string]: Asset;\r\n };\r\n assetsImages: {\r\n [assetId: string]: string;\r\n };\r\n assetsImagesThumbnails: {\r\n [assetId: string]: string;\r\n };\r\n artboards: {\r\n [artboardId: string]: Artboard;\r\n };\r\n artboardsOrder: string[];\r\n selectedArtboards: {\r\n [artboardId: string]: string;\r\n };\r\n lastSelectedArtboard: string;\r\n artboardHotspotOpenedMenu: {\r\n artboardId: string;\r\n actionId: string;\r\n };\r\n masters: { [key: string]: Master };\r\n bgImgUrl: string;\r\n hasArtboards: boolean;\r\n id: string;\r\n name: string;\r\n modifiedOn?: string;\r\n}\r\n\r\nexport function NewExpoProjectStore(): ExpoProjectNode {\r\n return {\r\n mode: \"expo\",\r\n isProjectLoading: false,\r\n isProjectLoaded: false,\r\n lastModifiedDate: 0,\r\n lastSavedDate: 0,\r\n shortcut: \"\",\r\n resourceFolder: \"\",\r\n resourceAxureFolder: \"\",\r\n archiveMode: false,\r\n platform: undefined,\r\n projectZoom: 33,\r\n projectDimensions: {\r\n width: 0,\r\n height: 0,\r\n },\r\n assets: {},\r\n assetsImages: {},\r\n assetsImagesThumbnails: {},\r\n artboards: {},\r\n artboardsOrder: [],\r\n selectedArtboards: {},\r\n lastSelectedArtboard: \"\",\r\n artboardHotspotOpenedMenu: {\r\n artboardId: \"\",\r\n actionId: \"\",\r\n },\r\n masters: {},\r\n bgImgUrl: \"\",\r\n hasArtboards: false,\r\n id: \"\",\r\n name: \"\",\r\n modifiedOn: undefined,\r\n };\r\n}\r\n\r\nexport function ConvertProjectToPartialExpoProjectNode(project: Project): ExpoProjectNode {\r\n const projectNode = NewExpoProjectStore();\r\n\r\n projectNode.isProjectLoading = false;\r\n projectNode.isProjectLoaded = true;\r\n projectNode.shortcut = project.ShortcutKey;\r\n\r\n projectNode.platform = project.Platform;\r\n\r\n projectNode.projectDimensions = {\r\n height: project.Platform.Settings.Dimensions.Height,\r\n width: project.Platform.Settings.Dimensions.Width,\r\n };\r\n\r\n // for (const artboardId in project.ArtboardIds) {\r\n\r\n // }\r\n\r\n projectNode.artboardsOrder = project.ArtboardIds;\r\n\r\n // projectNode.bgImgUrl = project\r\n // projectNode.hasArtboards =\r\n projectNode.id = project.Id;\r\n projectNode.name = project.ProjectName;\r\n projectNode.modifiedOn = project.ModifiedOn;\r\n\r\n return projectNode;\r\n}\r\n\r\nexport function ConvertFullProjectToExpoProjectNode(content: ExpoStaticContent) {\r\n const projectNode = NewExpoProjectStore();\r\n\r\n projectNode.isProjectLoading = false;\r\n projectNode.isProjectLoaded = true;\r\n projectNode.shortcut = content.project.ShortcutKey;\r\n\r\n projectNode.platform = content.project.Platform;\r\n projectNode.projectDimensions = {\r\n height: content.project.Platform.Settings.Dimensions.Height,\r\n width: content.project.Platform.Settings.Dimensions.Width,\r\n };\r\n projectNode.assets = content.assets;\r\n projectNode.assetsImages = content.images;\r\n projectNode.assetsImagesThumbnails = content.thumbnails;\r\n projectNode.artboards = content.artboards;\r\n projectNode.artboardsOrder = Object.keys(content.artboards);\r\n\r\n projectNode.masters = content.masters;\r\n projectNode.bgImgUrl = content.bgImgLink;\r\n projectNode.hasArtboards = projectNode.artboardsOrder.length > 0;\r\n projectNode.id = content.project.Id;\r\n projectNode.name = content.project.ProjectName;\r\n\r\n return projectNode;\r\n}\r\n\r\nconst state = (): ExpoStore => ({\r\n projects: {},\r\n});\r\n\r\nexport default state;\r\n","import Vue from \"vue\";\r\n\r\nimport { Artboard, Asset } from \"@shared/expo\";\r\n\r\nimport { EmptyGuid, sort } from \"@/common/lib\";\r\nimport { normalizeHotspotMeasurements } from \"@/common/utils\";\r\nimport { ExpoProjectNode, ExpoStore, NewExpoProjectStore } from \"@/store/expo/state\";\r\nimport { MutationTree } from \"@/store/typed\";\r\n\r\nimport { MutationPayloadMap, MutationTypes } from \"./mutationTypes\";\r\n\r\nconst mutationsTree: MutationTree = {\r\n [MutationTypes.ProjectSetup](state, { setup }) {\r\n const shortcut = setup.shortcut.toLowerCase();\r\n\r\n let project = state.projects[shortcut];\r\n if (!project) {\r\n project = NewExpoProjectStore();\r\n }\r\n\r\n project = {\r\n ...project,\r\n shortcut,\r\n mode: setup.mode,\r\n platform: setup.platform,\r\n bgImgUrl: setup.bgImgUrl,\r\n archiveMode: setup.archiveMode,\r\n resourceFolder: setup.resourceFolder,\r\n resourceAxureFolder: setup.resourceAxureFolder,\r\n artboardsOrder: setup.artboardsOrder,\r\n hasArtboards: setup.hasArtboards,\r\n lastModifiedDate: setup.lastModified,\r\n lastSavedDate: setup.lastModified,\r\n };\r\n\r\n if (setup.platform) {\r\n project.projectDimensions = {\r\n height: setup.platform.Settings.Dimensions.Height,\r\n width: setup.platform.Settings.Dimensions.Width,\r\n };\r\n }\r\n\r\n Vue.set(state.projects, shortcut, project);\r\n },\r\n\r\n [MutationTypes.ProjectIsLoadingSet](state, { shortcut, value }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.isProjectLoaded = false;\r\n project.isProjectLoading = value;\r\n },\r\n\r\n [MutationTypes.ProjectContentClear](state, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n for (const artboardId in project.artboards) {\r\n if (Object.prototype.hasOwnProperty.call(project.artboards, artboardId)) {\r\n deleteArtboard(project, artboardId);\r\n\r\n project.lastModifiedDate = Date.now();\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectContentSet](state, { shortcut, content }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n for (const artboardId in content.artboards) {\r\n if (Object.prototype.hasOwnProperty.call(content.artboards, artboardId)) {\r\n const artboard = content.artboards[artboardId];\r\n\r\n if (artboard.IsDeleted) {\r\n continue;\r\n }\r\n\r\n const assetImgUrl = content.images[artboard.AssetId];\r\n const assetImgThumbnailUrl = content.thumbnails[artboard.AssetId];\r\n addArtboard(project, artboard, content.assets[artboard.AssetId], assetImgUrl, assetImgThumbnailUrl);\r\n\r\n const subAssets = artboard.SubAssets;\r\n\r\n for (const subAssetId in subAssets) {\r\n if (Object.prototype.hasOwnProperty.call(subAssets, subAssetId)) {\r\n const subAsset = subAssets[subAssetId];\r\n const subAssetImgUrl = content.images[subAssetId];\r\n const subAssetImgThumbnailUrl = content.thumbnails[subAssetId];\r\n\r\n addArtboardAsset(project, subAsset, subAssetImgUrl, subAssetImgThumbnailUrl);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const addedArtboards = project.artboards;\r\n const artboardAdded = (artboardId: string) => addedArtboards[artboardId] !== undefined;\r\n project.artboardsOrder = content.project.ArtboardIds.filter(artboardAdded);\r\n project.projectDimensions = {\r\n height: content.project.Platform.Settings.Dimensions.Height,\r\n width: content.project.Platform.Settings.Dimensions.Width,\r\n };\r\n project.masters = content.masters;\r\n project.bgImgUrl = content.bgImgLink;\r\n project.platform = content.project.Platform;\r\n project.name = content.project.ProjectName;\r\n project.id = content.project.Id;\r\n project.modifiedOn = content.project.ModifiedOn;\r\n\r\n // Set state that project has loaded\r\n project.isProjectLoading = false;\r\n project.isProjectLoaded = true;\r\n },\r\n\r\n [MutationTypes.ProjectZoomSet](state, { shortcut, zoom }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.projectZoom = zoom;\r\n },\r\n\r\n [MutationTypes.ProjectPlatformUpdate](state, { shortcut, platform }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.platform = platform;\r\n project.projectDimensions = {\r\n height: platform.Settings.Dimensions.Height,\r\n width: platform.Settings.Dimensions.Width,\r\n };\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ProjectPlatformBgImgUpload](state, { shortcut, response }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.platform = response.platform;\r\n project.bgImgUrl = response.url;\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ProjectPlatformBgImgDelete](state, { shortcut, response }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.platform = response.platform;\r\n project.bgImgUrl = \"\";\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ArtboardAdd](state, { shortcut, artboard, asset, url }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n addArtboard(project, artboard, asset, url);\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ArtboardRemove](state, { shortcut, artboardId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n deleteArtboard(project, artboardId);\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ArtboardActionAdd](state, { shortcut, artboardId, action }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const artboard = project.artboards[artboardId];\r\n if (artboard) {\r\n Vue.set(artboard.ActionPool.Actions, action.Id, action);\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ArtboardActionUpdate](state, { shortcut, artboardId, actionId, originalAction, action }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const artboard = project.artboards[artboardId];\r\n if (artboard) {\r\n // master -> ab\r\n if (originalAction.ParentId !== action.ParentId && originalAction.IsMaster) {\r\n const master = project.masters[originalAction.ParentId];\r\n if (master) {\r\n Vue.delete(master.Actions, actionId);\r\n }\r\n } else {\r\n // ab -> SAME ab\r\n Vue.delete(artboard.ActionPool.Actions, actionId);\r\n }\r\n\r\n // Add new action back into artboard\r\n Vue.set(artboard.ActionPool.Actions, action.Id, action);\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ArtboardActionRemove](state, { shortcut, artboard, action }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const stateArtboard = project.artboards[artboard.Id];\r\n if (stateArtboard) {\r\n Vue.delete(artboard.ActionPool.Actions, action.Id);\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ArtboardActionHotspotPositionSet](state, { shortcut, artboardId, actionId, position }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const artboard = project.artboards[artboardId];\r\n if (artboard) {\r\n const action = artboard.ActionPool.Actions[actionId];\r\n if (action) {\r\n action.Hotspot.Dimensions.Height = position.height;\r\n action.Hotspot.Dimensions.Width = position.width;\r\n action.Hotspot.Start.X = position.x;\r\n action.Hotspot.Start.Y = position.y;\r\n action.Hotspot = normalizeHotspotMeasurements(action.Hotspot);\r\n\r\n project.lastModifiedDate = Date.now();\r\n }\r\n }\r\n },\r\n\r\n // [MutationTypes.MasterActionAdd](state, { masterId, action }) {\r\n // const master = state.masters[masterId];\r\n // if (master) {\r\n // Vue.set(master.Actions, action.Id, action);\r\n // }\r\n // },\r\n\r\n [MutationTypes.MasterActionUpdate](state, { shortcut, artboardId, masterId, actionId, originalAction, action }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const master = project.masters[masterId];\r\n if (master) {\r\n // For new action -> Remove the temporary action from the artboard\r\n if (artboardId) {\r\n const artboard = project.artboards[artboardId];\r\n if (artboard) {\r\n Vue.delete(artboard.ActionPool.Actions, actionId);\r\n }\r\n }\r\n\r\n if (originalAction.ParentId !== action.ParentId) {\r\n if (originalAction.IsMaster) {\r\n // master -> diff master\r\n const originalMaster = project.masters[originalAction.ParentId];\r\n\r\n if (originalMaster) {\r\n Vue.delete(originalMaster.Actions, actionId);\r\n }\r\n } else {\r\n // artboard -> master\r\n const originalAb = project.artboards[originalAction.ParentId];\r\n\r\n if (originalAb) {\r\n Vue.delete(originalAb.ActionPool.Actions, actionId);\r\n }\r\n }\r\n } else {\r\n // master -> SAME master\r\n Vue.delete(master.Actions, actionId);\r\n }\r\n\r\n // Add new action back into master\r\n Vue.set(master.Actions, action.Id, action);\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.MasterActionRemove](state, { shortcut, master, action }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const stateMaster = project.masters[master.Id];\r\n if (stateMaster) {\r\n Vue.delete(master.Actions, action.Id);\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.MasterActionHotspotPositionSet](state, { shortcut, masterId, actionId, position, relativeToBottom }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const master = project.masters[masterId];\r\n if (master) {\r\n const action = master.Actions[actionId];\r\n if (action) {\r\n action.Hotspot.Dimensions.Height = position.height;\r\n action.Hotspot.Dimensions.Width = position.width;\r\n action.Hotspot.Start.X = position.x;\r\n action.Hotspot.Start.Y = position.y;\r\n\r\n action.Hotspot = normalizeHotspotMeasurements(action.Hotspot);\r\n let relativeToBottomResolved;\r\n if (relativeToBottom === undefined) {\r\n relativeToBottomResolved = undefined;\r\n } else if (relativeToBottom % 1 < 0.5) {\r\n relativeToBottomResolved = Math.floor(relativeToBottom);\r\n } else {\r\n relativeToBottomResolved = Math.round(relativeToBottom);\r\n }\r\n action.RelativeToBottom = relativeToBottomResolved;\r\n\r\n project.lastModifiedDate = Date.now();\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectMasterCreate](state, { shortcut, master, artboard, callback }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const masters = project.masters;\r\n if (masters && master) {\r\n // Add new master to state and append id to ab's master list\r\n Vue.set(masters, master.Id, master);\r\n project.artboards[artboard.Id].MasterIds.push(master.Id);\r\n\r\n // if (window.$axExpo) {\r\n // window.$axExpo.masterMap[master.Id] = master;\r\n // }\r\n\r\n callback(master);\r\n // state.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectMasterRename](state, { shortcut, master, name }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const masters = project.masters;\r\n if (masters && master) {\r\n Vue.set(masters[master.Id], \"Name\", name);\r\n\r\n // if (window.$axExpo) {\r\n // window.$axExpo.masterMap[master.Id].Name = name;\r\n // }\r\n\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectMasterCopy](state, { shortcut, master, artboard, callback }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const masters = project.masters;\r\n if (masters && master) {\r\n Vue.set(masters, master.Id, master);\r\n project.artboards[artboard.Id].MasterIds.push(master.Id);\r\n\r\n // if (window.$axExpo) {\r\n // window.$axExpo.masterMap[master.Id] = master;\r\n // }\r\n\r\n callback(master);\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectMasterDelete](state, { shortcut, master }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const masters = project.masters;\r\n const artboards = project.artboards;\r\n if (masters && master) {\r\n Vue.delete(masters, master.Id);\r\n\r\n // if (window.$axExpo) {\r\n // delete window.$axExpo.masterMap[master.Id];\r\n // }\r\n\r\n for (const abId in artboards) {\r\n if (Object.prototype.hasOwnProperty.call(artboards, abId)) {\r\n // Remove master id from ab's master list\r\n artboards[abId].MasterIds = project.artboards[abId].MasterIds.filter(value => {\r\n return value !== master.Id;\r\n });\r\n }\r\n }\r\n\r\n project.lastModifiedDate = Date.now();\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectUpdateLastModifiedDate](state, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ProjectUpdateLastSavedDate](state, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.lastSavedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ArtboardSelect](state, { shortcut, artboardId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n selectArtboard(project, artboardId);\r\n },\r\n\r\n [MutationTypes.ArtboardSelectAll](state, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n selectAllArtboards(project);\r\n },\r\n\r\n [MutationTypes.ArtboardDeselect](state, { shortcut, artboardId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n deselectArtboard(project, artboardId);\r\n },\r\n\r\n [MutationTypes.ArtboardDeselectAll](state, { shortcut }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n deselectAllArtboards(project);\r\n },\r\n\r\n [MutationTypes.ArtboardSelectToggle](state, { shortcut, artboardId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n toggleArtboardSelection(project, artboardId);\r\n },\r\n\r\n [MutationTypes.ArtboardSelectSingle](state, { shortcut, artboardId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.selectedArtboards = {};\r\n selectArtboard(project, artboardId);\r\n },\r\n\r\n [MutationTypes.ArtboardSelectSpan](state, { shortcut, artboardId, extend }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n const lastSelected = project.lastSelectedArtboard;\r\n if (!lastSelected) {\r\n selectArtboard(project, artboardId);\r\n return;\r\n }\r\n const indexOfCurrentSelected = project.artboardsOrder.findIndex(abOrdered => abOrdered === artboardId);\r\n const indexOfLastSelected = project.artboardsOrder.findIndex(abOrdered => abOrdered === lastSelected);\r\n\r\n if (indexOfLastSelected >= 0 && indexOfCurrentSelected >= 0) {\r\n if (!extend) {\r\n project.selectedArtboards = {};\r\n }\r\n\r\n const [start, end] = sort([indexOfCurrentSelected, indexOfLastSelected]);\r\n const artboardsToToggle = project.artboardsOrder.slice(start, end + 1);\r\n for (const artboardToToggle of artboardsToToggle) {\r\n selectArtboard(project, artboardToToggle, false);\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.ArtboardOrderUpdated](state, { shortcut, artboardIds }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n artboardIds.forEach((id, index) => {\r\n const artboard = project.artboards[id];\r\n // it might happen that full artboard state hasn't been loaded yet\r\n // so we just skip those artboards\r\n if (artboard) {\r\n artboard.NextArtboardId = index + 1 < artboardIds.length ? artboardIds[index + 1] : EmptyGuid;\r\n }\r\n });\r\n\r\n project.artboardsOrder = artboardIds;\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n // Verify that this shouldn't mess with other hotspots\r\n [MutationTypes.ArtboardActionMenuToggle](state, { shortcut, artboardId, actionId, isOpened }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.artboardHotspotOpenedMenu = isOpened\r\n ? {\r\n artboardId,\r\n actionId,\r\n }\r\n : {\r\n artboardId: \"\",\r\n actionId: \"\",\r\n };\r\n },\r\n\r\n [MutationTypes.ArtboardSetHeaderFooterHeight](state, { shortcut, artboard, height, isHeader }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n if (isHeader) {\r\n project.artboards[artboard.Id].HeaderHeight = height;\r\n project.artboards[artboard.Id].HasHeader = height !== 0;\r\n } else {\r\n project.artboards[artboard.Id].FooterHeight = height;\r\n project.artboards[artboard.Id].HasFooter = height !== 0;\r\n }\r\n\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ArtboardAddMaster](state, { shortcut, artboardId, masterId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n project.artboards[artboardId].MasterIds.push(masterId);\r\n project.lastModifiedDate = Date.now();\r\n },\r\n\r\n [MutationTypes.ArtboardRemoveMaster](state, { shortcut, artboardId, masterId }) {\r\n const project = state.projects[shortcut];\r\n if (!project) return;\r\n\r\n // if (window.$axExpo) {\r\n // delete window.$axExpo.masterMap[masterId];\r\n // }\r\n\r\n // Remove master id from ab's master list\r\n project.artboards[artboardId].MasterIds = project.artboards[artboardId].MasterIds.filter(value => {\r\n return value !== masterId;\r\n });\r\n project.lastModifiedDate = Date.now();\r\n },\r\n};\r\n\r\nfunction toggleArtboardSelection(state: ExpoProjectNode, artboardId: string, rememberLastSelected = true) {\r\n if (state.selectedArtboards[artboardId]) {\r\n deselectArtboard(state, artboardId, rememberLastSelected);\r\n } else {\r\n selectArtboard(state, artboardId, rememberLastSelected);\r\n }\r\n}\r\n\r\nfunction deselectAllArtboards(state: ExpoProjectNode) {\r\n state.selectedArtboards = {};\r\n}\r\n\r\nfunction deselectArtboard(state: ExpoProjectNode, artboardId: string, rememberLastSelected = true) {\r\n Vue.delete(state.selectedArtboards, artboardId);\r\n if (rememberLastSelected) {\r\n state.lastSelectedArtboard = artboardId;\r\n }\r\n}\r\n\r\nfunction selectAllArtboards(state: ExpoProjectNode) {\r\n const currAbs = Object.keys(state.selectedArtboards);\r\n const missingAbs = Object.keys(state.artboards).filter(e => {\r\n return currAbs.indexOf(e) < 0;\r\n });\r\n\r\n missingAbs.forEach(element => {\r\n Vue.set(state.selectedArtboards, element, element);\r\n });\r\n}\r\n\r\nfunction selectArtboard(state: ExpoProjectNode, artboardId: string, rememberLastSelected = true) {\r\n Vue.set(state.selectedArtboards, artboardId, artboardId);\r\n if (rememberLastSelected) {\r\n state.lastSelectedArtboard = artboardId;\r\n }\r\n}\r\n\r\nfunction addArtboard(\r\n project: ExpoProjectNode,\r\n artboard: Artboard,\r\n asset: Asset,\r\n assetImageUrl: string,\r\n assetImgThumbnailUrl?: string\r\n) {\r\n Vue.set(project.artboards, artboard.Id, artboard);\r\n Vue.set(project.assets, asset.Id, asset);\r\n addArtboardAsset(project, asset, assetImageUrl, assetImgThumbnailUrl);\r\n project.artboardsOrder.push(artboard.Id);\r\n // eslint-disable-next-line no-param-reassign\r\n project.hasArtboards = project.artboardsOrder.length > 0;\r\n}\r\n\r\nfunction addArtboardAsset(\r\n project: ExpoProjectNode,\r\n asset: Asset,\r\n assetImageUrl: string,\r\n assetImgThumbnailUrl?: string\r\n) {\r\n Vue.set(project.assetsImages, asset.Id, assetImageUrl);\r\n Vue.set(project.assetsImagesThumbnails, asset.Id, assetImgThumbnailUrl);\r\n}\r\n\r\n// TODO: Do we want to use an Artboard? Keep track even after delete\r\nfunction deleteArtboard(state: ExpoProjectNode, artboardId: string) {\r\n const artboard = state.artboards[artboardId];\r\n Vue.delete(state.artboards, artboardId);\r\n Vue.delete(state.selectedArtboards, artboardId);\r\n if (artboard && artboard.AssetId) {\r\n Vue.delete(state.assetsImages, artboard.AssetId);\r\n }\r\n\r\n state.artboardsOrder = state.artboardsOrder.filter(abOrderId => abOrderId !== artboardId);\r\n state.hasArtboards = state.artboardsOrder.length > 0;\r\n}\r\n\r\nexport default mutationsTree;\r\n","import actions from \"@/store/expo/actions\";\r\nimport getters from \"@/store/expo/getters\";\r\nimport mutations from \"@/store/expo/mutations\";\r\nimport state from \"@/store/expo/state\";\r\n\r\nexport default {\r\n state,\r\n actions,\r\n mutations,\r\n getters,\r\n};\r\n","import { ActionContext } from \"vuex\";\r\n\r\nimport { isSketchProject } from \"@/common/axshare\";\r\nimport { isDevelopment } from \"@/common/environment\";\r\nimport {\r\n breadcrumbToFolderNode,\r\n breadcrumbToWorkspaceNode,\r\n FilesystemNodeFolder,\r\n FilesystemNodeInvitation,\r\n FilesystemNodeRoot,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n FilesystemNodeWorkspace,\r\n toInvitationNode,\r\n toShortcutNode,\r\n toWorkspaceNode,\r\n} from \"@/common/fs\";\r\nimport { asError } from \"@/common/lib\";\r\nimport { FilesystemFolderInfo } from \"@/generated/models\";\r\nimport {\r\n archiveWorkspace,\r\n getFilesystemRootFolderContents,\r\n getfolderContents,\r\n getFolderNavByFilesystemId,\r\n getFolderNavById,\r\n getFolderNavByShortcutId,\r\n getUserWorkspaces,\r\n getNextWorkspaceName,\r\n renameFolder,\r\n renameWorkspace,\r\n workspaceInvitationRespond,\r\n workspaceCreate,\r\n moveItems,\r\n favoriteWorkspace,\r\n shareOrInviteToFileSystem,\r\n updateFilesystemOwner,\r\n createFolder,\r\n} from \"@/services/fs.service\";\r\nimport { BreadcrumbJson } from \"@/services/models/filesystem\";\r\nimport { ChangeProjectInfo } from \"@/services/models/project\";\r\nimport {\r\n changeProjectInfo, getFirstPage, getProjectInfo, toggleDiscussions,\r\n} from \"@/services/project.service\";\r\nimport { asyncAction } from \"@/store/async-action\";\r\nimport { ProjectFetchExpo } from \"@/store/expo/actionTypes\";\r\nimport {\r\n ActionPayloadMap,\r\n ActionTypes,\r\n Fetch,\r\n Navigate,\r\n ProjectLoad,\r\n WorkspacesRefresh,\r\n NavigationRestore,\r\n FirstPageLoad,\r\n} from \"@/store/fs/actionTypes\";\r\nimport { AxShareFilesystem, rootNode } from \"@/store/fs/state\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ActionTree } from \"@/store/typed\";\r\n\r\nimport * as mutations from \"./mutationTypes\";\r\n\r\ntype WorkspaceNode = FilesystemNodeRoot | FilesystemNodeWorkspace | FilesystemNodeInvitation;\r\n\r\nconst actions: ActionTree = {\r\n async [ActionTypes.WorkspacesLoad]({ commit, getters }) {\r\n const workspaceNodes = await getWorkspaceNodes();\r\n\r\n // bad pattern, consider removing\r\n const { workspaces } = getters;\r\n preserveState(workspaceNodes, workspaces);\r\n\r\n workspaceNodes.forEach(ws => commit(new mutations.NodeRemember(ws)));\r\n },\r\n\r\n async [ActionTypes.WorkspacesRefresh]({ commit, getters }) {\r\n const workspaceNodes = await getWorkspaceNodes();\r\n\r\n // bad pattern, consider removing\r\n const { workspaces } = getters;\r\n preserveState(workspaceNodes, workspaces);\r\n\r\n Object.keys(workspaces).forEach(id => commit(new mutations.NodeRemove(id)));\r\n workspaceNodes.forEach(ws => commit(new mutations.NodeRemember(ws)));\r\n },\r\n\r\n async [ActionTypes.ProjectLoad](context, { shortcut }) {\r\n const projectLoadActions = [];\r\n let node: FilesystemNodeShortcut | undefined = context.getters.getFsNode(shortcut);\r\n // missing node's parent means that it's not yet attached to the fs tree,\r\n // possibly node was loaded separately before\r\n // so we restore tree now\r\n if (!node || !node.parent) {\r\n projectLoadActions.push(context.dispatch(new NavigationRestore(shortcut, \"shortcut\")));\r\n }\r\n\r\n projectLoadActions.push(\r\n asyncAction(\r\n context,\r\n ActionTypes.ProjectLoad,\r\n () => getProjectInfo(shortcut),\r\n project => new mutations.NodeRemember(\r\n toShortcutNode(project, context.getters.tryFindParent(project.Shortcut.toLowerCase())),\r\n ),\r\n ),\r\n );\r\n\r\n await Promise.all(projectLoadActions);\r\n\r\n node = context.getters.getFsNode(shortcut);\r\n if (node && isSketchProject(node)) {\r\n await context.dispatch(new ProjectFetchExpo(shortcut));\r\n }\r\n\r\n context.dispatch(new FirstPageLoad(shortcut));\r\n },\r\n\r\n async [ActionTypes.ProjectUpdate](context, { shortcut, projectInfo }) {\r\n await asyncAction(context, ActionTypes.ProjectUpdate, () => changeProjectInfo(shortcut, projectInfo));\r\n await context.dispatch(new ProjectLoad(shortcut));\r\n },\r\n\r\n async [ActionTypes.ProjectRename](context, { shortcut, name }) {\r\n await asyncAction(context, ActionTypes.ProjectRename, () => changeProjectInfo(shortcut, { Name: name }));\r\n context.commit(new mutations.ProjectRename(shortcut, name));\r\n },\r\n\r\n async [ActionTypes.ProjectToggleFeedback](context, { shortcut, enabled }) {\r\n await asyncAction(context, ActionTypes.ProjectToggleFeedback, () => toggleDiscussions(shortcut, enabled));\r\n context.commit(new mutations.ProjectToggleFeedback(shortcut, enabled));\r\n },\r\n\r\n async [ActionTypes.ProjectToggleUserOnly](context, { shortcut, isUserOnly }) {\r\n const model: Partial = {\r\n IsUserOnly: isUserOnly,\r\n };\r\n\r\n await asyncAction(context, ActionTypes.ProjectUpdate, () => changeProjectInfo(shortcut, model));\r\n context.commit(new mutations.ProjectToggleUserOnly(shortcut, isUserOnly));\r\n },\r\n\r\n async [ActionTypes.ProjectShare]({ getters }, { node, usersInvite, recaptchaToken }): Promise {\r\n const closestFolderId: string | undefined = getters.getClosestFolderId(node.id);\r\n if (!closestFolderId) throw new Error(\"Couldn't determine project's containing folder\");\r\n const { workspaceName } = (await getNextWorkspaceName()).Vars;\r\n\r\n const newWorkspace = await workspaceCreate(workspaceName);\r\n if (newWorkspace) {\r\n const { RootFolderId, FilesystemInfo } = newWorkspace;\r\n try {\r\n await moveItems([node], closestFolderId, RootFolderId);\r\n } catch (error) {\r\n const message = asError(error).message;\r\n throw new Error(`Workspace has been created, but move project and invited users has failed: ${message}`);\r\n }\r\n\r\n try {\r\n const shouldInvite = !!usersInvite.userEmails && Array.isArray(usersInvite.userEmails)\r\n ? usersInvite.userEmails.length > 0\r\n : !!usersInvite.userEmails;\r\n if (shouldInvite) {\r\n const model = {\r\n ...usersInvite,\r\n filesystemId: FilesystemInfo.FilesystemId,\r\n };\r\n\r\n await shareOrInviteToFileSystem(model, recaptchaToken);\r\n }\r\n } catch (error) {\r\n const message = error instanceof Error ? error.message : error as any;\r\n throw new Error(`Project has been moved to a new workspace, but inviting users has failed: ${message}`);\r\n }\r\n\r\n return newWorkspace;\r\n }\r\n },\r\n\r\n async [ActionTypes.Navigate](store, { node }) {\r\n const { commit } = store;\r\n\r\n commit(new mutations.NodeRemember(node));\r\n commit(new mutations.Navigating(node.id, { inProgress: true }));\r\n try {\r\n await store.dispatch(new Fetch(node));\r\n commit(new mutations.Navigating(node.id, { inProgress: false }));\r\n } catch (error) {\r\n if (isDevelopment) {\r\n console.error(`Error occurred during filesystem navigation, ${error}`);\r\n }\r\n commit(new mutations.Navigating(node.id, { inProgress: false, isError: true, error }));\r\n }\r\n },\r\n\r\n async [ActionTypes.FetchCurrent]({ getters, dispatch }) {\r\n const node = getters.current.node;\r\n if (node) {\r\n await dispatch(new Fetch(node));\r\n }\r\n },\r\n\r\n async [ActionTypes.Fetch](store, { node }: Fetch) {\r\n if (node.id === rootNode.id) return;\r\n\r\n const { commit } = store;\r\n commit(new mutations.NodeRemember(node));\r\n commit(new mutations.Fetching(node.id, true));\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n await workspaceNavigate(node.id, store);\r\n } else {\r\n const contents = await getContents(node.id, node.type);\r\n if (contents) {\r\n if (node.type === FilesystemNodeType.Folder) {\r\n const viewOnly = contents.AdditionalVars.isFsViewer === \"true\";\r\n commit(new mutations.SetViewOnly(node, viewOnly));\r\n }\r\n commit(new mutations.SetContents(node, contents));\r\n }\r\n }\r\n commit(new mutations.Fetching(node.id, false));\r\n },\r\n\r\n async [ActionTypes.NavigationRestore](store, { id, idType, silent }) {\r\n const { dispatch, commit } = store;\r\n\r\n if (!silent) {\r\n commit(new mutations.Navigating(id, { inProgress: true }));\r\n }\r\n\r\n try {\r\n const navigationFn =\r\n // eslint-disable-next-line no-nested-ternary\r\n idType === \"shortcut\"\r\n ? getFolderNavByShortcutId(id)\r\n : idType === \"folder\"\r\n ? getFolderNavById(id)\r\n : getFolderNavByFilesystemId(id);\r\n const navigation = await navigationFn;\r\n const nodes = [\r\n rootNode,\r\n ...navigation.breadcrumbJson.map(breadcrumb => breadcrumbToFilesystemNode(breadcrumb, store.state)),\r\n ];\r\n\r\n // set parent and remember in store\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n commit(new mutations.NodeRemember(node));\r\n commit(new mutations.SetParentNode(node.id, nodes[i - 1]));\r\n }\r\n\r\n if (!silent) {\r\n commit(new mutations.Navigating(id, { inProgress: false }));\r\n }\r\n\r\n if (idType === \"shortcut\") {\r\n // and navigate to last\r\n const lastNode = nodes[nodes.length - 1];\r\n await dispatch(new Navigate(lastNode));\r\n }\r\n } catch (error) {\r\n if (isDevelopment) {\r\n console.error(`Error occurred during filesystem navigation restore, ${error}`);\r\n }\r\n if (!silent) {\r\n commit(\r\n new mutations.Navigating(id, {\r\n inProgress: false,\r\n isError: true,\r\n error,\r\n }),\r\n );\r\n }\r\n }\r\n },\r\n\r\n async [ActionTypes.FolderCreate](context, { folderCreateModel }) {\r\n const folderRowJs = await createFolder(folderCreateModel);\r\n if (folderRowJs) {\r\n const { node } = context.getters.current;\r\n context.commit(new mutations.FolderAdd(node, folderRowJs));\r\n }\r\n },\r\n\r\n async [ActionTypes.FolderRename](context, { folderId, name }) {\r\n const folder: FilesystemNodeFolder = context.getters.getFsNode(folderId);\r\n const { parent } = folder;\r\n let currentFolderId = \"\";\r\n if (parent) {\r\n if (parent.type === FilesystemNodeType.Folder) {\r\n currentFolderId = parent.id;\r\n } else if (parent.type === FilesystemNodeType.Workspace) {\r\n currentFolderId = parent.rootFolderId;\r\n }\r\n await asyncAction(\r\n context,\r\n ActionTypes.FolderRename,\r\n () => renameFolder({\r\n FolderId: folderId,\r\n Name: name,\r\n currentFolderId,\r\n }),\r\n () => new mutations.FolderRename(folderId, name),\r\n );\r\n }\r\n },\r\n\r\n async [ActionTypes.WorkspaceRename](context, { model }) {\r\n return asyncAction(\r\n context,\r\n ActionTypes.WorkspaceRename,\r\n () => renameWorkspace(model),\r\n () => new mutations.WorkspaceRename(model.FilesystemId, model.Name),\r\n );\r\n },\r\n\r\n async [ActionTypes.WorkspaceArchive](context, { id, archive }) {\r\n return asyncAction(\r\n context,\r\n ActionTypes.WorkspaceArchive,\r\n () => archiveWorkspace(id, archive),\r\n () => new mutations.WorkspaceArchive(id, archive),\r\n );\r\n },\r\n\r\n async [ActionTypes.FavoriteWorkspace](context, { id, favorite }) {\r\n return asyncAction(\r\n context,\r\n ActionTypes.FavoriteWorkspace,\r\n () => favoriteWorkspace(id, favorite),\r\n () => new mutations.FavoriteWorkspace(id, favorite),\r\n );\r\n },\r\n\r\n [ActionTypes.InvitationRespond](context, { id, accept }) {\r\n return asyncAction(\r\n context,\r\n ActionTypes.InvitationRespond,\r\n () => workspaceInvitationRespond(id, accept),\r\n () => new mutations.NodeRemove(id),\r\n );\r\n },\r\n\r\n async [ActionTypes.NodeRemove]({ commit, getters }, { nodes, parentFolder }) {\r\n const parentNode: FilesystemNodeTypes = getters.getNodeByFolderId(parentFolder);\r\n nodes.forEach(node => {\r\n commit(new mutations.NodeRemoveContents(parentNode.id, node.id));\r\n commit(new mutations.NodeRemove(node.id));\r\n });\r\n },\r\n\r\n async [ActionTypes.UpdateFilesystemOwner](context, { filesystemId, email }) {\r\n await asyncAction(context, ActionTypes.UpdateFilesystemOwner, () => updateFilesystemOwner(filesystemId, email));\r\n await context.dispatch(new WorkspacesRefresh());\r\n },\r\n\r\n async [ActionTypes.FirstPageLoad]({ commit }, { shortcut }) {\r\n const firstPage = await getFirstPage(shortcut);\r\n commit(new mutations.SetFirstPage(shortcut, firstPage));\r\n },\r\n};\r\n\r\nasync function getWorkspaceNodes(): Promise {\r\n const listingJs = await getUserWorkspaces();\r\n const workspaceNodes = [\r\n rootNode,\r\n ...listingJs.Filesystems.map(fs => toWorkspaceNode(fs, rootNode)),\r\n ...listingJs.Invitations.map(fs => toInvitationNode(fs, rootNode)),\r\n ];\r\n return workspaceNodes;\r\n}\r\n\r\nasync function workspaceNavigate(id: string, store: ActionContext) {\r\n const { commit } = store;\r\n const { Listing, FilesystemInfo } = await getFilesystemRootFolderContents(id);\r\n const node = toWorkspaceNode(FilesystemInfo, rootNode);\r\n // explicitly set rootFolderId for Workspace type\r\n const rootFolderId = Listing.AdditionalVars.fsRootFolderId;\r\n if (rootFolderId) {\r\n node.rootFolderId = rootFolderId;\r\n }\r\n commit(new mutations.SetContents(node, Listing));\r\n commit(new mutations.SetListingNode(id, FilesystemInfo));\r\n}\r\n\r\nfunction preserveState(workspaceNodes: WorkspaceNode[], workspacesInStore: Record) {\r\n for (const workspace of workspaceNodes) {\r\n if (workspace.type === FilesystemNodeType.Workspace) {\r\n trySet(\r\n workspace,\r\n workspacesInStore,\r\n w => w.rootFolderId,\r\n (ws, rootFolderId) => {\r\n // eslint-disable-next-line no-param-reassign\r\n ws.rootFolderId = rootFolderId;\r\n },\r\n );\r\n trySet(\r\n workspace,\r\n workspacesInStore,\r\n w => w.owner,\r\n (ws, owner) => {\r\n // eslint-disable-next-line no-param-reassign\r\n ws.owner = owner;\r\n },\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction trySet(\r\n item: T,\r\n itemsInStore: Record,\r\n getter: (t: T) => V | undefined,\r\n setter: (t: T, v: V) => void,\r\n) {\r\n if (getter(item)) return;\r\n const inStore = itemsInStore[item.id];\r\n if (!inStore) return;\r\n const val = getter(inStore);\r\n if (val) {\r\n setter(item, val);\r\n }\r\n}\r\n\r\nasync function getContents(id: string, type: FilesystemNodeType) {\r\n switch (type) {\r\n case FilesystemNodeType.Folder:\r\n return getfolderContents(id);\r\n case FilesystemNodeType.Root:\r\n return getUserWorkspaces();\r\n default:\r\n throw new Error(`Unexpected type ${type} for fetching filesystem contents.`);\r\n }\r\n}\r\n\r\nfunction breadcrumbToFilesystemNode(\r\n breadcrumb: BreadcrumbJson,\r\n state: AxShareFilesystem,\r\n): FilesystemNodeWorkspace | FilesystemNodeFolder {\r\n const existing = state.nodes[breadcrumb.id];\r\n if (breadcrumb.isFilesystem) {\r\n return breadcrumbToWorkspaceNode(breadcrumb, existing);\r\n }\r\n return breadcrumbToFolderNode(breadcrumb, existing);\r\n}\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { ShortcutJs } from \"@shared/models\";\r\n\r\nimport { prototypeUrls, PrototypeUrls } from \"@/common/axshare\";\r\nimport {\r\n FilesystemNode,\r\n FilesystemNodeShortcut,\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n FilesystemNodeWithContents,\r\n FilesystemNodeWorkspace,\r\n isShortcutNode,\r\n isShortcutSearchNode,\r\n WorkspaceRights,\r\n computeWorkspaceRights,\r\n} from \"@/common/fs\";\r\nimport { find } from \"@/common/lib\";\r\nimport { AxShareFilesystem, rootNode } from \"@/store/fs/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n current(_, getters, rootState): FilesystemNodeWithContents {\r\n const { route } = rootState;\r\n if (route && route.params) {\r\n const { id, workspaceId, shortcut } = route.params;\r\n const node: FilesystemNodeTypes =\r\n getters.getFsNode(id) || getters.getFsNode(workspaceId) || getters.getFsNode(shortcut);\r\n if (node) {\r\n const contents: FilesystemNodeTypes[] = getters.nodeContents(node.id);\r\n return {\r\n node,\r\n contents,\r\n };\r\n }\r\n }\r\n return {\r\n node: rootNode,\r\n contents: [],\r\n };\r\n },\r\n\r\n navigating(state: AxShareFilesystem, _, rootState): boolean {\r\n const { route } = rootState;\r\n if (!route) return false;\r\n const { id, workspaceId } = route.params;\r\n return state.navigating[id] === true || state.navigating[workspaceId] === true;\r\n },\r\n\r\n navigatingError(state: AxShareFilesystem, _, rootState): boolean {\r\n const { route } = rootState;\r\n if (!route) return false;\r\n const { id, workspaceId } = route.params;\r\n return !!state.navigatingError[id] || !!state.navigatingError[workspaceId];\r\n },\r\n\r\n isRoot(_, getters): boolean {\r\n const current: FilesystemNodeWithContents = getters.current;\r\n return current.node.id === rootNode.id;\r\n },\r\n\r\n prototypeUrls(state, _, rootState) {\r\n return (shortcut: FilesystemNodeShortcut | ShortcutJs | string) => {\r\n if (typeof shortcut === \"string\") {\r\n const project = state.nodes[shortcut];\r\n if (project && project.type === FilesystemNodeType.Shortcut) {\r\n return prototypeUrls(rootState.axShareConfig, project);\r\n }\r\n } else if (isShortcutNode(shortcut) || isShortcutSearchNode(shortcut)) {\r\n return prototypeUrls(rootState.axShareConfig, shortcut);\r\n } else {\r\n return prototypeUrls(rootState.axShareConfig, shortcut.PrototypeUrl, shortcut.Shortcut);\r\n }\r\n };\r\n },\r\n\r\n currentPrototypeUrls(_, getters): PrototypeUrls | undefined {\r\n const current: FilesystemNodeTypes = getters.current.node;\r\n if (current.type === FilesystemNodeType.Shortcut) {\r\n return getters.prototypeUrls(current);\r\n }\r\n },\r\n\r\n getFsNode(state) {\r\n return (id: string | undefined) => id && state.nodes[id.toLowerCase()];\r\n },\r\n\r\n getNodeByFolderId(_, getters) {\r\n return (id: string) => getters.getFsNode(id) || getters.getWorkspaceByRootFolderId(id);\r\n },\r\n\r\n nodeContents(state) {\r\n return (id: string) => {\r\n if (!id) return [];\r\n const contentNodes = state.contents[id.toLowerCase()];\r\n if (!contentNodes) return [];\r\n return Object.values(state.nodes).filter(node => node && contentNodes.some(content => node.id === content));\r\n };\r\n },\r\n\r\n filesystemPath(_, getters) {\r\n const maxDepth = 100;\r\n const path: FilesystemNode[] = [];\r\n const current: FilesystemNodeWithContents = getters.current;\r\n let node: FilesystemNode | undefined = current.node;\r\n if (!node) return path;\r\n let depth = 0;\r\n while (node !== undefined && depth < maxDepth) {\r\n path.push(node);\r\n node = node.parent;\r\n depth++;\r\n }\r\n return path.reverse();\r\n },\r\n\r\n currentFolderId(_, getters) {\r\n const currentNode: FilesystemNodeWithContents = getters.current;\r\n if (!currentNode) return undefined;\r\n const { node } = currentNode;\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n return node.rootFolderId;\r\n }\r\n if (node.type === FilesystemNodeType.Folder) {\r\n return node.id;\r\n }\r\n },\r\n\r\n workspaces(state) {\r\n return getNodesOfType(state, FilesystemNodeType.Workspace);\r\n },\r\n\r\n invitations(state) {\r\n return getNodesOfType(state, FilesystemNodeType.Invitation);\r\n },\r\n\r\n shortcuts(state) {\r\n return getNodesOfType(state, FilesystemNodeType.Shortcut);\r\n },\r\n\r\n folders(state) {\r\n return getNodesOfType(state, FilesystemNodeType.Folder);\r\n },\r\n\r\n defaultWorkspace(_, getters) {\r\n return find(getters.workspaces, (ws: FilesystemNodeWorkspace) => ws.isDefault);\r\n },\r\n\r\n getWorkspaceByRootFolderId(state) {\r\n return (folderId: string) => {\r\n for (const nodeId in state.nodes) {\r\n if (Object.prototype.hasOwnProperty.call(state.nodes, nodeId)) {\r\n const node = state.nodes[nodeId];\r\n if (node && node.type === FilesystemNodeType.Workspace && node.rootFolderId === folderId) {\r\n return node;\r\n }\r\n }\r\n }\r\n };\r\n },\r\n\r\n tryFindParent(state) {\r\n return (id: string) => {\r\n const node = state.nodes[id.toLowerCase()];\r\n if (node) return node.parent;\r\n };\r\n },\r\n\r\n findWorkspace(state, getters) {\r\n return (id: string) => {\r\n const node = state.nodes[id.toLowerCase()];\r\n if (!node) return undefined;\r\n if (node.type === FilesystemNodeType.Workspace) return node;\r\n if (node.parent) return getters.findWorkspace(node.parent.id);\r\n };\r\n },\r\n\r\n getClosestFolderId(state, getters) {\r\n return (id: string) => {\r\n const node = state.nodes[id.toLowerCase()];\r\n if (!node) return undefined;\r\n if (node.type === FilesystemNodeType.Folder) return node.id;\r\n if (node.type === FilesystemNodeType.Workspace) return node.rootFolderId;\r\n if (node.parent) return getters.getClosestFolderId(node.parent.id);\r\n };\r\n },\r\n\r\n workspaceRights(_state, _getters, rootState, rootGetters) {\r\n return (workspace: FilesystemNodeWorkspace): WorkspaceRights => {\r\n const userInfo = rootState.user.userInfo;\r\n if (!userInfo) throw new Error(\"Can't compute workspace rights when user profile isn't available.\");\r\n const { isSubInstance, hasAuthorRights, isAdminUser } = rootGetters;\r\n\r\n return computeWorkspaceRights(workspace, {\r\n userInfo,\r\n hasAuthorRights,\r\n isAdminUser,\r\n isSubInstance,\r\n });\r\n };\r\n },\r\n};\r\n\r\nconst getNodesOfType = (state: AxShareFilesystem, type: FilesystemNodeType) => {\r\n const initial: { [id: string]: FilesystemNodeTypes } = {};\r\n return Object.values(state.nodes).reduce((acc, node) => {\r\n if (node && node.type === type) {\r\n acc[node.id] = node;\r\n }\r\n return acc;\r\n }, initial);\r\n};\r\n\r\nexport default getterTree;\r\n","import Vue from \"vue\";\r\n\r\nimport { ListingJs } from \"@shared/models\";\r\n\r\nimport {\r\n FilesystemNodeType,\r\n FilesystemNodeTypes,\r\n FilesystemNodeWorkspace,\r\n toFolderNode,\r\n toShortcutNode,\r\n toWorkspaceNode,\r\n} from \"@/common/fs\";\r\nimport { removeFirst } from \"@/common/lib\";\r\nimport { MutationPayloadMap, MutationTypes } from \"@/store/fs/mutationTypes\";\r\nimport { AxShareFilesystem } from \"@/store/fs/state\";\r\nimport { MutationTree } from \"@/store/typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.Fetching](state, { id, inProgress }) {\r\n Vue.set(state.fetching, id, inProgress);\r\n },\r\n\r\n [MutationTypes.Navigating](state, { id, status: { inProgress, error } }) {\r\n Vue.set(state.navigatingError, id, error);\r\n Vue.set(state.navigating, id, inProgress);\r\n },\r\n\r\n [MutationTypes.Clear](state, { id }) {\r\n Vue.set(state.contents, id, []);\r\n },\r\n\r\n [MutationTypes.SetContents](state, { node, contents }) {\r\n const nodes = nodesFromContents(node, contents);\r\n rememberNodes(state, [node, ...nodes]);\r\n Vue.set(state.contents, node.id, nodes.map(n => n.id));\r\n state.firstLoad = false;\r\n },\r\n\r\n [MutationTypes.NodeRemember](state, { node }) {\r\n rememberNode(state, node);\r\n },\r\n\r\n [MutationTypes.NodeRemove](state, { id }) {\r\n Vue.delete(state.nodes, id);\r\n },\r\n\r\n [MutationTypes.NodeRemoveContents](state, { parentFolder, id }) {\r\n const contents = state.contents[parentFolder];\r\n if (contents) {\r\n removeFirst(contents, content => content === id);\r\n }\r\n },\r\n\r\n [MutationTypes.SetParentNode](state, { id, parent }) {\r\n const node = state.nodes[id];\r\n if (node) {\r\n node.parent = parent;\r\n }\r\n },\r\n\r\n [MutationTypes.SetListingNode](state, { id, listingNode }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Workspace) {\r\n node.listingNode = listingNode;\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectRename](state, { id, name }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Shortcut) {\r\n node.name = name;\r\n if (node.listingNode) {\r\n node.listingNode.Name = name;\r\n }\r\n }\r\n const searchItem = state.searchData.results.find(r => r.item.id === id);\r\n if (searchItem) {\r\n searchItem.item.name = name;\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectToggleFeedback](state, { id, enabled }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Shortcut) {\r\n node.feedbackEnabled = enabled;\r\n if (node.listingNode) {\r\n node.listingNode.FeedbackEnabled = enabled;\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.ProjectToggleUserOnly](state, { id, isUserOnly }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Shortcut) {\r\n node.isUserOnly = isUserOnly;\r\n if (node.listingNode) {\r\n node.listingNode.IsUserOnly = isUserOnly;\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.WorkspaceRename](state, { id, name }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Workspace) {\r\n node.name = name;\r\n if (node.listingNode) {\r\n node.listingNode.DisplayName = name;\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.WorkspaceArchive](state, { id, archive }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Workspace) {\r\n node.isArchived = archive;\r\n }\r\n },\r\n\r\n [MutationTypes.FavoriteWorkspace](state, { id, favorite }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Workspace) {\r\n node.isFavorite = favorite;\r\n }\r\n },\r\n\r\n [MutationTypes.FolderAdd](state, { node, folderRowJs }) {\r\n const folderNode = toFolderNode(folderRowJs, node);\r\n rememberNode(state, folderNode);\r\n const contents = state.contents[node.id];\r\n contents.push(folderNode.id);\r\n Vue.set(state.contents, node.id, contents);\r\n },\r\n\r\n [MutationTypes.FolderRename](state, { id, name }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Folder) {\r\n node.name = name;\r\n if (node.listingNode) {\r\n node.listingNode.FolderName = name;\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.SetViewOnly](state, payload) {\r\n const node = state.nodes[payload.node.id];\r\n if (node && node.type === FilesystemNodeType.Folder) {\r\n node.viewOnly = payload.viewOnly;\r\n }\r\n },\r\n\r\n [MutationTypes.SetSearchData](state, { data }) {\r\n if (data.isLoading !== undefined) {\r\n state.searchData.isLoading = data.isLoading;\r\n }\r\n if (data.query !== undefined) {\r\n state.searchData.query = data.query;\r\n }\r\n if (data.results !== undefined) {\r\n state.searchData.results = data.results;\r\n }\r\n },\r\n\r\n [MutationTypes.RecentsLoad](state, { inProgress }) {\r\n state.recentsLoad = inProgress;\r\n },\r\n\r\n [MutationTypes.SetProjectNotificationState](state, { id, notificationState }) {\r\n const node = state.nodes[id];\r\n if (node && node.type === FilesystemNodeType.Shortcut) {\r\n const mergedState = { ...node.notificationState, ...notificationState };\r\n node.notificationState = mergedState;\r\n if (node.listingNode) {\r\n node.listingNode.NotificationState = mergedState;\r\n }\r\n }\r\n },\r\n\r\n [MutationTypes.SetFirstPage](state, { nodeId, page }) {\r\n state.firstPagesMap[nodeId] = page;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n\r\nfunction rememberNodes(state: AxShareFilesystem, nodes: FilesystemNodeTypes[]) {\r\n for (const node of nodes) {\r\n rememberNode(state, node);\r\n }\r\n}\r\n\r\nfunction rememberNode(state: AxShareFilesystem, node: FilesystemNodeTypes) {\r\n if (node.type === FilesystemNodeType.Workspace) {\r\n preserveWorkspaceRootFolder(node, state);\r\n\r\n // because admins see all workspaces don't let it to override existing workspace invitation\r\n const existing = state.nodes[node.id];\r\n if (existing && existing.type === FilesystemNodeType.Invitation) {\r\n return;\r\n }\r\n }\r\n Vue.set(state.nodes, node.id, node);\r\n}\r\n\r\nfunction preserveWorkspaceRootFolder(node: FilesystemNodeWorkspace, state: AxShareFilesystem) {\r\n if (!node.rootFolderId) {\r\n const savedNode = state.nodes[node.id];\r\n if (savedNode && savedNode.type === FilesystemNodeType.Workspace) {\r\n // eslint-disable-next-line no-param-reassign\r\n node.rootFolderId = savedNode.rootFolderId;\r\n }\r\n }\r\n}\r\n\r\nfunction nodesFromContents(parent: FilesystemNodeTypes, contents: ListingJs): FilesystemNodeTypes[] {\r\n const nodes = [\r\n ...contents.Filesystems.map(fs => toWorkspaceNode(fs, parent)),\r\n ...contents.Folders.map(folder => toFolderNode(folder, parent)),\r\n ...contents.Shortcuts.map(shortcut => toShortcutNode(shortcut, parent)),\r\n ];\r\n\r\n // fill siblings\r\n for (const node of nodes) {\r\n node.siblings = nodes.filter(sibling => sibling.id !== node.id);\r\n }\r\n\r\n return nodes;\r\n}\r\n","import actions from \"@/store/fs/actions\";\r\nimport getters from \"@/store/fs/getters\";\r\nimport mutations from \"@/store/fs/mutations\";\r\nimport state from \"@/store/fs/state\";\r\n\r\nexport default {\r\n state,\r\n actions,\r\n mutations,\r\n getters,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { resolveApiBaseUrl } from \"@/common/axshare/api\";\r\nimport { fileSize } from \"@/common/lib\";\r\nimport { AsyncActionState } from \"@/store/async-action\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n actionState(state) {\r\n return (actionType: string) => state.actions[actionType] || AsyncActionState.NotStarted;\r\n },\r\n actionStateFetching(_, getters) {\r\n return (actionType: string) => getters.actionState(actionType) === AsyncActionState.Fetching;\r\n },\r\n\r\n maxFileSizeHumanized(state) {\r\n if (state.axShareConfig) {\r\n const { MaxFileSize } = state.axShareConfig;\r\n return fileSize(MaxFileSize);\r\n }\r\n return \"unknown\";\r\n },\r\n\r\n headerMinimized(state) {\r\n return state && state.route && state.route.meta && !!state.route.meta.headerMinimized;\r\n },\r\n\r\n isSubInstance(state) {\r\n return !!state.axShareConfig && state.axShareConfig.IsSubInstance;\r\n },\r\n\r\n failuredApiCallsIds(state) {\r\n const { apiCalls } = state;\r\n return Object.keys(apiCalls).filter(key => {\r\n const apiCall = apiCalls[key];\r\n return !!apiCall && apiCall.status === AsyncActionState.Failure;\r\n });\r\n },\r\n\r\n appConfigured(state) {\r\n const { axShareConfig } = state;\r\n\r\n // note that '===' check is required here\r\n return !!axShareConfig && axShareConfig.NeedsSetup === false && axShareConfig.NeedsDbUpgrade === false;\r\n },\r\n\r\n onPremAppConfigured(state, getters) {\r\n const { axShareConfig } = state;\r\n\r\n // note that '===' check is required here\r\n return !!axShareConfig && axShareConfig.AxShareOnPrem === true && getters.appConfigured;\r\n },\r\n\r\n apiUrl(state) {\r\n return resolveApiBaseUrl(state.axShareConfig);\r\n },\r\n\r\n isOnPrem({ axShareConfig }) {\r\n return !!axShareConfig && axShareConfig.AxShareOnPrem === true;\r\n },\r\n};\r\n\r\nexport default getterTree;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { isElectron } from \"@/common/environment\";\r\nimport { AxShareMigration } from \"@/store/migration/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n allowWorkspacesMigrate(_state, getters, _rootState) {\r\n if (isElectron) return false;\r\n if (getters.isOnPrem) return false;\r\n if (getters.isSubInstanceReviewer) return false;\r\n if (getters.isSubInstanceTechnicalAdmin) return false;\r\n return !!_rootState.axShareConfig && _rootState.axShareConfig.EnableWorkspacesMigration;\r\n },\r\n};\r\n\r\nexport default getterTree;\r\n","import { MutationTree } from \"@/store/typed\";\r\n\r\nimport { MutationPayloadMap, MutationTypes } from \"./mutationTypes\";\r\nimport { AxShareMigration, MigrationSteps } from \"./state\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.MigrateWorkspaces](state, { migrate }) {\r\n if (!migrate) {\r\n state.step = MigrationSteps.Idle;\r\n state.inProgress = false;\r\n clearState(state);\r\n return;\r\n }\r\n state.step = MigrationSteps.GetStarted;\r\n state.inProgress = migrate;\r\n },\r\n\r\n [MutationTypes.Restart](state) {\r\n clearState(state);\r\n state.step = MigrationSteps.GetStarted;\r\n },\r\n\r\n [MutationTypes.SetStep](state, { step }) {\r\n setStep(state, step);\r\n },\r\n\r\n [MutationTypes.SetFailedStep](state, { step }) {\r\n state.failedStep = state.step;\r\n setStep(state, step);\r\n },\r\n\r\n [MutationTypes.SelectSubInstance](state, { domainPrefix }) {\r\n state.domainPrefix = domainPrefix;\r\n },\r\n\r\n [MutationTypes.SetMigrationResult](state, { result }) {\r\n state.userActivationRequired = result.UserActivationRequired;\r\n const superAdmin = result.SystemAdmins[0];\r\n if (superAdmin) {\r\n state.superAdmin = superAdmin;\r\n }\r\n },\r\n\r\n [MutationTypes.GoBack](state) {\r\n setStep(state, state.step - 1);\r\n },\r\n\r\n [MutationTypes.GoForward](state) {\r\n setStep(state, state.step + 1);\r\n },\r\n\r\n [MutationTypes.SetSessionToken](state, { migrationId, token }) {\r\n state.migrationId = migrationId;\r\n state.sessionToken = token;\r\n },\r\n\r\n [MutationTypes.SelectWorkspaces](state, { workspaces }) {\r\n state.workspacesToMigrate = [...workspaces];\r\n },\r\n\r\n [MutationTypes.SelectUsers](state, { users }) {\r\n state.usersToMigrate = [...users];\r\n },\r\n\r\n [MutationTypes.ConfirmMigration](state) {\r\n state.step = MigrationSteps.Confirmation;\r\n },\r\n};\r\n\r\nfunction setStep(state: AxShareMigration, step: MigrationSteps) {\r\n state.step = step;\r\n if (state.step === MigrationSteps.GetStarted) {\r\n clearState(state);\r\n }\r\n}\r\n\r\nfunction clearState(state: AxShareMigration) {\r\n state.migrationId = \"\";\r\n state.sessionToken = \"\";\r\n state.domainPrefix = \"\";\r\n state.usersToMigrate = [];\r\n state.workspacesToMigrate = [];\r\n state.failedStep = undefined;\r\n}\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport mutations from \"./mutations\";\r\nimport state from \"./state\";\r\n\r\nexport default {\r\n getters,\r\n state,\r\n mutations,\r\n};\r\n","import { BrowserStorage, Storage } from \"@/common/axshare/storage\";\r\n\r\nexport class AuthStorage {\r\n private authTokenKey = \"authToken\";\r\n private store: Storage;\r\n\r\n constructor(store: Storage) {\r\n this.store = store;\r\n }\r\n\r\n get Token() {\r\n return this.store.get(this.authTokenKey);\r\n }\r\n\r\n set Token(token: string | undefined) {\r\n if (token) {\r\n this.store.set(this.authTokenKey, token);\r\n } else {\r\n this.clearToken();\r\n }\r\n }\r\n\r\n public clearToken() {\r\n this.store.delete(this.authTokenKey);\r\n }\r\n}\r\n\r\nconst storage =\r\n process.env.VUE_APP_IS_ELECTRON_MAIN === \"true\" ? new (require(\"@/desktop/storage\")).default() : new BrowserStorage();\r\n\r\nexport const authStorage = new AuthStorage(storage);\r\n","import axios, { AxiosInstance } from \"axios\";\r\nimport { stringify } from \"qs\";\r\n\r\nimport {\r\n ListJs, ResponseObject, SsoResponse, ResetPasswordValidateJs, TimeZoneJs,\r\n} from \"@shared/models\";\r\n\r\nimport { authStorage } from \"@/common/axshare/auth\";\r\nimport { isElectronRenderer, isElectronMain, isDesktopLocal } from \"@/common/environment\";\r\nimport {\r\n delay, isIE, testSameOrigin, isIframe,\r\n} from \"@/common/lib\";\r\nimport { Main, Renderer } from \"@/desktop/events\";\r\nimport { AxShareHostsConfig } from \"@/services/models/config\";\r\nimport { objectToFormData } from \"@/services/utils/formData\";\r\n\r\nimport { exec, Options } from \"./api\";\r\nimport { ChangeAccountInfoModel, DoLoginModel, UserProfile } from \"./models/account\";\r\nimport { ApiResponseObject } from \"./models/responseObject\";\r\nimport {\r\n addAuthorizationHeader,\r\n transformRequestDefaults,\r\n withNoCacheHeaders,\r\n timestampInterceptor,\r\n} from \"./utils/axios\";\r\n\r\ninterface ChangeAccountInfoResponse extends ApiResponseObject {\r\n authToken: string;\r\n}\r\n\r\nfunction createServer(host: string, token: () => string | undefined) {\r\n const server = axios.create({\r\n baseURL: host,\r\n withCredentials: true,\r\n transformRequest: [\r\n ...transformRequestDefaults,\r\n (data, headers) => {\r\n addAuthorizationHeader(headers, token());\r\n return data;\r\n },\r\n ],\r\n ...withNoCacheHeaders,\r\n });\r\n\r\n if (isIE) {\r\n server.interceptors.request.use(timestampInterceptor());\r\n }\r\n\r\n return server;\r\n}\r\n\r\nexport default class AccountService {\r\n private isAuthed = false;\r\n private isGuest = false;\r\n private userId?: string;\r\n private useHttpGet;\r\n private accountServer: AxiosInstance;\r\n private appServer: AxiosInstance;\r\n\r\n public get IsAuthed() {\r\n return this.isAuthed;\r\n }\r\n\r\n public get AuthToken() {\r\n return authStorage.Token;\r\n }\r\n\r\n public get UserId() {\r\n if (!this.IsAuthed) return undefined;\r\n return this.userId;\r\n }\r\n\r\n private get getOrPost() {\r\n // keep backwards compatibility with previous version of OnPrem servers\r\n // those servers may not support POST requests for account operations\r\n return this.useHttpGet ? this.get : this.post;\r\n }\r\n\r\n constructor(\r\n private readonly accountServiceHost: string,\r\n private readonly axShareHost: string,\r\n authToken?: string,\r\n useGet?: boolean,\r\n ) {\r\n this.useHttpGet = useGet;\r\n this.accountServer = createServer(accountServiceHost, () => this.AuthToken);\r\n this.appServer = createServer(axShareHost, () => this.AuthToken);\r\n if (authToken) {\r\n authStorage.Token = authToken;\r\n }\r\n }\r\n\r\n public async authGetSso() {\r\n let authSuccess = false;\r\n let sso;\r\n try {\r\n sso = await this.getOrPost(\"/user/auth\");\r\n\r\n if (sso.authToken) {\r\n await this.setAuth(sso.authToken, sso.userId);\r\n authSuccess = true;\r\n }\r\n } catch (err) {\r\n authSuccess = false;\r\n if (isElectronRenderer && !isDesktopLocal) {\r\n await mainProcessLogout();\r\n }\r\n if (isElectronMain) {\r\n // throw further up, so this can be logged in main process\r\n throw err;\r\n }\r\n } finally {\r\n this.isAuthed = authSuccess;\r\n }\r\n return sso;\r\n }\r\n\r\n public async auth() {\r\n await this.authGetSso();\r\n return this.isAuthed;\r\n }\r\n\r\n public async guestAuth() {\r\n const sso = await this.postAppServer(\"/user/guestAuth\");\r\n await this.setAuth(sso.authToken, sso.userId);\r\n this.isGuest = true;\r\n this.isAuthed = true;\r\n return sso;\r\n }\r\n\r\n public async login(model: DoLoginModel, opts?: Options) {\r\n const loginResponse = await this.doLoginRequest(model, opts);\r\n await this.setAuth(loginResponse.authToken, loginResponse.userId);\r\n return loginResponse;\r\n }\r\n\r\n public async guestLogin(email: string) {\r\n const formData = objectToFormData({ email });\r\n const sso = await this.postAppServer(\"/user/guestLogin\", formData);\r\n await this.setAuth(sso.authToken, sso.userId);\r\n this.isGuest = true;\r\n this.isAuthed = true;\r\n return sso;\r\n }\r\n\r\n public async doLoginRequest(model: DoLoginModel, opts?: Options) {\r\n const formData = objectToFormData(model);\r\n const loginResponse = await this.getOrPost(\"/user/dologin\", formData, opts);\r\n return loginResponse;\r\n }\r\n\r\n public async forgotPassword(email: string, target: string) {\r\n const formData = objectToFormData({ email, target });\r\n return this.getOrPost(\"/user/forgotpassword\", formData);\r\n }\r\n\r\n public async resetPassword(email: string, token: string, newPassword: string, target: string) {\r\n const formData = objectToFormData({\r\n email,\r\n token,\r\n newPassword,\r\n target,\r\n });\r\n return this.getOrPost(\"/user/resetpasswordspa\", formData);\r\n }\r\n\r\n public async resetPasswordValidateToken(token: string) {\r\n const formData = objectToFormData({\r\n token,\r\n });\r\n return this.post(\"/user/resetPasswordValidateToken\", formData);\r\n }\r\n\r\n public async signUp(email: string, password: string, callerId?: string) {\r\n const formData = objectToFormData({ email, password, callerId });\r\n return this.getOrPost(\"/user/create\", formData, {\r\n ignoreResponseRedirectUrl: true,\r\n });\r\n }\r\n\r\n public async rpSignUp(email: string, password: string, rpRequestId: string, callerId?: string) {\r\n const formData = objectToFormData({\r\n email,\r\n password,\r\n callerId,\r\n rpRequestId,\r\n });\r\n return this.getOrPost(\"/user/create\", formData, {\r\n ignoreResponseRedirectUrl: true,\r\n });\r\n }\r\n\r\n public async logout() {\r\n try {\r\n try {\r\n const logoutPath = \"/user/logout?isAjax=true\";\r\n const logoutOptions = {\r\n ignoreResponseRedirectUrl: true,\r\n };\r\n const logoutTasks = [];\r\n const logoutAtAccounts = this.getOrPost(logoutPath, logoutOptions);\r\n logoutTasks.push(logoutAtAccounts);\r\n\r\n // also make request to logout from AxShareHost, as cookie is HttpOnly and can't be cleared via JS\r\n if (!testSameOrigin(this.accountServiceHost, this.axShareHost)) {\r\n const logoutAtApp = this.getOrPost(`${this.axShareHost}${logoutPath}`, logoutOptions);\r\n logoutTasks.push(logoutAtApp);\r\n }\r\n\r\n if (this.isGuest) {\r\n const logoutAtAppGuest = this.postAppServer(\"/user/guestLogout\");\r\n logoutTasks.push(logoutAtAppGuest);\r\n }\r\n\r\n await Promise.all(logoutTasks);\r\n } catch (e) {\r\n // silently skip\r\n console.warn(e);\r\n }\r\n\r\n authStorage.clearToken();\r\n this.userId = undefined;\r\n this.isGuest = false;\r\n this.isAuthed = false;\r\n\r\n if (isElectronRenderer) {\r\n await mainProcessLogout();\r\n }\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n }\r\n\r\n public getUserProfile() {\r\n return this.get(\"/user/getUserProfile\");\r\n }\r\n\r\n public async changeAccountInfo(model: ChangeAccountInfoModel) {\r\n const userId = this.UserId;\r\n if (userId) {\r\n const formData = objectToFormData(model);\r\n const response = await this.getOrPost(\"/user/changeAccountInfo\", formData);\r\n\r\n if (response.authToken) {\r\n await this.setAuth(response.authToken, userId);\r\n return response.authToken;\r\n }\r\n }\r\n }\r\n\r\n public async updateUserProfileName(name: string) {\r\n const formData = objectToFormData({ name });\r\n return this.getOrPost(\"/user/updateUserProfileName\", formData);\r\n }\r\n\r\n public async getTimeZones() {\r\n return this.get>(\"/user/getTimeZones\");\r\n }\r\n\r\n public async setUserTimeZone(timeZoneId?: string) {\r\n const formData: FormData = this.getTimeZoneFormData(timeZoneId);\r\n\r\n return this.post(\"/user/setLocalTimeZone\", formData);\r\n }\r\n\r\n public async setGuestUserTimeZone(timeZoneId?: string) {\r\n const formData = this.getTimeZoneFormData(timeZoneId);\r\n return this.postAppServer(\"/user/setGuestLocalTimeZone\", formData);\r\n }\r\n\r\n public async updateUserProfileBio(bio: string) {\r\n const params = stringify({ bio });\r\n const url = `/user/updateUserProfileBio?${params}`;\r\n return this.getOrPost(url, { ignoreResponseRedirectUrl: true });\r\n }\r\n\r\n public async uploadUserProfileImg(fileToUpload: File) {\r\n const formData = objectToFormData({ fileToUpload });\r\n const url = \"/user/uploadUserProfileImg\";\r\n return this.post(url, formData);\r\n }\r\n\r\n public async deleteUserProfileImg() {\r\n const url = \"/user/deleteUserProfileImg\";\r\n return this.getOrPost(url, { ignoreResponseRedirectUrl: true });\r\n }\r\n\r\n public async cacheLicenseResponse(requestId: string, response: string) {\r\n const url = \"/user/cacheLicenseResponse\";\r\n return this.post(url, objectToFormData({\r\n requestId, response,\r\n }));\r\n }\r\n\r\n private get(url: string, optsOrFormData?: FormData | Options, opts?: Options): Promise {\r\n const { formData, options } = this.unwrapArgs(optsOrFormData, opts);\r\n\r\n if (formData) {\r\n // eslint-disable-next-line no-param-reassign\r\n url = this.appendFormDataToQueryString(url, formData);\r\n }\r\n\r\n return exec(this.accountServer.get(url), options);\r\n }\r\n\r\n private post(url: string, optsOrFormData?: FormData | Options, opts?: Options): Promise {\r\n const { formData, options } = this.unwrapArgs(optsOrFormData, opts);\r\n return exec(this.accountServer.post(url, formData), options);\r\n }\r\n\r\n private postAppServer(url: string, optsOrFormData?: FormData | Options, opts?: Options): Promise {\r\n const { formData, options } = this.unwrapArgs(optsOrFormData, opts);\r\n return exec(this.appServer.post(url, formData), options);\r\n }\r\n\r\n private async setAuth(authToken: string, userId: string) {\r\n authStorage.Token = authToken;\r\n this.userId = userId;\r\n await this.setDesktopAuth(authToken);\r\n }\r\n\r\n private getTimeZoneFormData(timeZoneId?: string): FormData {\r\n const timeZone = timeZoneId || Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n const baseUtcOffsetMinutes = -(new Date().getTimezoneOffset());\r\n\r\n return objectToFormData({ timeZone, baseUtcOffsetMinutes });\r\n }\r\n\r\n private async setDesktopAuth(token: string) {\r\n if (isElectronRenderer) {\r\n try {\r\n const config: AxShareHostsConfig = {\r\n AccountServiceSecureUrl: this.accountServiceHost,\r\n AxShareHostSecureUrl: this.axShareHost,\r\n authToken: token,\r\n };\r\n\r\n await mainProcessLogin(config);\r\n } catch (e) {\r\n // passing auth into to main process may fail if inside iframe, like in-app prototype\r\n // in this case swallow error if inside iframe,\r\n // otherwise rethrow\r\n if (!isIframe()) {\r\n throw e;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private unwrapArgs(\r\n optsOrFormData: FormData | Options | undefined,\r\n opts: Options | undefined,\r\n ): { formData?: FormData; options?: Options; } {\r\n // eslint-disable-next-line no-nested-ternary\r\n return optsOrFormData\r\n ? optsOrFormData instanceof FormData\r\n ? { formData: optsOrFormData, options: opts }\r\n : { formData: undefined, options: optsOrFormData }\r\n : { formData: undefined, options: undefined };\r\n }\r\n\r\n private appendFormDataToQueryString(url: string, formData: FormData) {\r\n // eslint-disable-next-line prefer-const\r\n let [path, query] = url.split(\"?\");\r\n\r\n const formObject: Record = {};\r\n formData.forEach((value, key) => { formObject[key] = value; });\r\n const params = stringify(formObject);\r\n query = query ? query + params : params;\r\n\r\n return `${path}?${query}`;\r\n }\r\n}\r\n\r\nfunction mainProcessLogin(config: AxShareHostsConfig) {\r\n return new Promise(resolve => {\r\n if (!isElectronRenderer) resolve();\r\n\r\n window.AxureCloudNative.ipc.once(Renderer.LoginHandled, resolve);\r\n window.AxureCloudNative.ipc.send(Main.Login, config);\r\n\r\n // for backwards compatibility when main process won't send Renderer.LoginHandled\r\n // give a moment to logout to complete, and then resolve promise\r\n delay(2000).then(() => resolve());\r\n });\r\n}\r\n\r\nfunction mainProcessLogout() {\r\n return new Promise(resolve => {\r\n if (!isElectronRenderer) resolve();\r\n\r\n window.AxureCloudNative.ipc.once(Renderer.LogoutHandled, resolve);\r\n window.AxureCloudNative.ipc.send(Main.Logout);\r\n\r\n // for backwards compatibility when main process won't send Renderer.LogoutHandled\r\n // give a moment to logout to complete, and then resolve promise\r\n delay(2000).then(() => resolve());\r\n });\r\n}\r\n","import { NotificationJs, NotificationMuteItemJs } from \"@/generated/models\";\r\n\r\nexport interface NotificationStore {\r\n notifications: { [key: string]: NotificationJs };\r\n guestSubscriptions: { [key: string]: NotificationJs };\r\n notificationMuteItems: { [key: string]: NotificationMuteItemJs };\r\n }\r\n\r\nconst state = (): NotificationStore => ({\r\n notifications: {},\r\n guestSubscriptions: {},\r\n notificationMuteItems: {},\r\n});\r\n\r\nexport default state;\r\n","import { ExtendedSsoResponse } from \"@shared/models\";\r\nimport { UserProfile } from \"@/services/models/account\";\r\n\r\nexport interface AxShareUser {\r\n userInfo?: ExtendedSsoResponse;\r\n profile?: UserProfile;\r\n}\r\n\r\nconst state = (): AxShareUser => ({\r\n userInfo: undefined,\r\n profile: undefined,\r\n});\r\n\r\nexport default state;\r\n","import { Route } from \"vue-router\";\r\n\r\nimport { AxShareConfigModel, VersionInfoResponse } from \"@shared/models\";\r\n\r\nimport AccountService from \"@/services/account.service\";\r\nimport admin, { AxShareAdmin } from \"@/store/admin/state\";\r\nimport { AsyncActionState } from \"@/store/async-action\";\r\nimport expo, { ExpoStore } from \"@/store/expo/state\";\r\nimport fs, { AxShareFilesystem } from \"@/store/fs/state\";\r\nimport migration, { AxShareMigration } from \"@/store/migration/state\";\r\nimport notifications, { NotificationStore } from \"@/store/notifications/state\";\r\nimport project, { AxShareProject } from \"@/store/project/state\";\r\nimport { AxShareSettings } from \"@/store/settings/state\";\r\nimport uploads, { AxShareUploads } from \"@/store/uploads/state\";\r\nimport user, { AxShareUser } from \"@/store/user/state\";\r\n\r\nimport desktop, { DesktopStore } from \"./desktop/state\";\r\n\r\nexport interface ApiCall {\r\n action: () => any;\r\n onFailure?: (error?: Error | unknown) => any;\r\n status: string;\r\n retry: number;\r\n}\r\n\r\ninterface AxShareBase {\r\n initializationStatus: \"success\" | \"failure\" | null;\r\n initializationError?: Error | unknown;\r\n navigationError?: Error | unknown;\r\n accountService: (() => AccountService) | null;\r\n axShareHostUrl: string;\r\n axShareConfig: AxShareConfigModel | null;\r\n actions: { [action: string]: AsyncActionState | undefined };\r\n apiCalls: { [apiCallId: string]: ApiCall | undefined };\r\n apiVersionInfo: VersionInfoResponse | null;\r\n}\r\n\r\ninterface RouteSyncedStore {\r\n route?: Route;\r\n}\r\n\r\ninterface Modules {\r\n fs: AxShareFilesystem;\r\n project: AxShareProject;\r\n expo: ExpoStore;\r\n user: AxShareUser;\r\n admin: AxShareAdmin;\r\n settings: AxShareSettings;\r\n desktop: DesktopStore;\r\n uploads: AxShareUploads;\r\n migration: AxShareMigration;\r\n notifications: NotificationStore;\r\n}\r\n\r\ntype PropsToAvoidReset = keyof RouteSyncedStore | \"settings\";\r\nexport interface AxShare extends AxShareBase, Modules, RouteSyncedStore { }\r\ntype AxShareInitial = Omit;\r\n\r\n// Removing 'route' property from initial state, it will be initialized by 'vuex-router-sync'\r\n// By doing this we're preserving 'route' state when resetting to initial.\r\nconst state = (): AxShareBase => ({\r\n initializationStatus: null,\r\n initializationError: undefined,\r\n navigationError: undefined,\r\n axShareConfig: null,\r\n apiVersionInfo: null,\r\n accountService: null,\r\n axShareHostUrl: process.env.VUE_APP_AXSHARE_API_URL || \"\",\r\n actions: {},\r\n apiCalls: {},\r\n});\r\n\r\nexport const initialState: () => AxShareInitial = () => ({\r\n ...state(),\r\n fs: fs(),\r\n project: project(),\r\n expo: expo(),\r\n user: user(),\r\n admin: admin(),\r\n desktop: desktop(),\r\n uploads: uploads(),\r\n migration: migration(),\r\n notifications: notifications(),\r\n});\r\n\r\nexport default state as (() => AxShare);\r\n","import Vue from \"vue\";\r\n\r\nimport { resolveApiBaseUrl } from \"@/common/axshare/api\";\r\nimport AccountService from \"@/services/account.service\";\r\nimport { reconfigure, setAuthTokenAccessor } from \"@/services/server\";\r\nimport { AsyncActionState } from \"@/store/async-action\";\r\nimport { MutationPayloadMap, MutationTypes } from \"@/store/mutationTypes\";\r\nimport { AxShare, ApiCall, initialState } from \"@/store/state\";\r\n\r\nimport { MutationTree } from \"./typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.Reset](state) {\r\n const current = state as Record;\r\n const initial = initialState() as Record;\r\n Object.keys(initial).forEach(key => {\r\n Vue.set(current, key, initial[key]);\r\n });\r\n reconfigure(resolveApiBaseUrl(state.axShareConfig));\r\n },\r\n\r\n [MutationTypes.QueryAction](state, { action, state: actionState }) {\r\n Vue.set(state.actions, action, actionState);\r\n },\r\n\r\n [MutationTypes.ConfigSet](state, { config }) {\r\n state.axShareConfig = config;\r\n reconfigure(resolveApiBaseUrl(state.axShareConfig));\r\n },\r\n\r\n [MutationTypes.SetupAccountService](state, {\r\n accountServiceHost, axShareHost, authToken, useGet,\r\n }) {\r\n const accountService = new AccountService(accountServiceHost, axShareHost, authToken, useGet);\r\n state.accountService = () => accountService;\r\n setAuthTokenAccessor(() => accountService.AuthToken);\r\n },\r\n\r\n [MutationTypes.InitializationStatus](state, { status, error }) {\r\n state.initializationStatus = status;\r\n state.initializationError = error;\r\n },\r\n\r\n [MutationTypes.SetNavigationError](state, { error }) {\r\n state.navigationError = error;\r\n },\r\n\r\n [MutationTypes.ApiCallAdd](state, { apiCallId, action, onFailure }) {\r\n const apiCall: ApiCall = {\r\n action,\r\n onFailure,\r\n status: AsyncActionState.NotStarted,\r\n retry: 0,\r\n };\r\n Vue.set(state.apiCalls, apiCallId, apiCall);\r\n },\r\n\r\n [MutationTypes.ApiCallRemove](state, { apiCallId }) {\r\n Vue.delete(state.apiCalls, apiCallId);\r\n },\r\n\r\n [MutationTypes.ApiCallClear](state) {\r\n Object.keys(state.apiCalls).forEach(key => {\r\n Vue.delete(state.apiCalls, key);\r\n });\r\n },\r\n\r\n [MutationTypes.ApiCallSetStatus](state, { apiCallId, status }) {\r\n const apiCall = state.apiCalls[apiCallId];\r\n if (apiCall) {\r\n apiCall.status = status;\r\n }\r\n },\r\n\r\n [MutationTypes.ApiCallRetry](state, { apiCallId }) {\r\n const apiCall = state.apiCalls[apiCallId];\r\n if (apiCall) {\r\n apiCall.retry++;\r\n }\r\n },\r\n\r\n [MutationTypes.ApiVersionSet](state, { apiVersionInfo }) {\r\n state.apiVersionInfo = apiVersionInfo;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { NotificationJs, NotificationMuteItemJs } from \"@/generated/models\";\r\nimport { PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n AddNotification = \"[Notifications] Add Notification\",\r\n AddNotificationMuteItem = \"[Notifications] Add Notification Mute Item\",\r\n EditNotification = \"[Notifications] Edit Notification\",\r\n SetUserSubscriptions = \"[Notifications] Set User Subscriptions\",\r\n SetUserGuestSubscriptions = \"[Notifications] Set User Guest Subscriptions\",\r\n SetNotificationMuteItems = \"[Notifications] Set Notification Mute Items\",\r\n DeleteUserSubscription = \"[Notifications] Delete User Subscription\",\r\n DeleteUserGuestSubscription = \"[Notifications] Delete User Guest Subscription\",\r\n DeleteNotificationMuteItem = \"[Notifications] Delete Notification Mute Item\",\r\n}\r\n\r\nexport class AddNotification implements Payload {\r\n public readonly type = MutationTypes.AddNotification;\r\n constructor(public notification: NotificationJs) {}\r\n}\r\n\r\nexport class AddNotificationMuteItem implements Payload {\r\n public readonly type = MutationTypes.AddNotificationMuteItem;\r\n constructor(public notification: NotificationMuteItemJs) {}\r\n}\r\n\r\nexport class EditNotification implements Payload {\r\n public readonly type = MutationTypes.EditNotification;\r\n constructor(public notification: NotificationJs) {}\r\n}\r\n\r\nexport class SetUserSubscriptions implements Payload {\r\n public readonly type = MutationTypes.SetUserSubscriptions;\r\n constructor(public notifications: NotificationJs[]) {}\r\n}\r\n\r\nexport class SetUserGuestSubscriptions implements Payload {\r\n public readonly type = MutationTypes.SetUserGuestSubscriptions;\r\n constructor(public notifications: NotificationJs[]) {}\r\n}\r\n\r\nexport class SetNotificationMuteItems implements Payload {\r\n public readonly type = MutationTypes.SetNotificationMuteItems;\r\n constructor(public notifications: NotificationMuteItemJs[]) {}\r\n}\r\n\r\nexport class DeleteUserSubscription implements Payload {\r\n public readonly type = MutationTypes.DeleteUserSubscription;\r\n constructor(public notificationId: string) {}\r\n}\r\n\r\nexport class DeleteUserGuestSubscription implements Payload {\r\n public readonly type = MutationTypes.DeleteUserGuestSubscription;\r\n constructor(public notificationId: string) {}\r\n}\r\n\r\nexport class DeleteNotificationMuteItem implements Payload {\r\n public readonly type = MutationTypes.DeleteNotificationMuteItem;\r\n constructor(public notificationId: string) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.AddNotification]: AddNotification;\r\n [MutationTypes.AddNotificationMuteItem]: AddNotificationMuteItem;\r\n [MutationTypes.EditNotification]: EditNotification;\r\n [MutationTypes.SetUserSubscriptions]: SetUserSubscriptions;\r\n [MutationTypes.SetUserGuestSubscriptions]: SetUserGuestSubscriptions;\r\n [MutationTypes.SetNotificationMuteItems]: SetNotificationMuteItems;\r\n [MutationTypes.DeleteUserSubscription]: DeleteUserSubscription;\r\n [MutationTypes.DeleteUserGuestSubscription]: DeleteUserGuestSubscription;\r\n [MutationTypes.DeleteNotificationMuteItem]: DeleteNotificationMuteItem;\r\n}\r\n","import { AxNotificationOptions, AxMentionedNotificationOptions } from \"@/common/notifications/AxNotificationOptions\";\r\nimport { badgeDrawer } from \"@/common/notifications/BadgeDrawer\";\r\nimport { hasDesktopNotificationsPermission } from \"@/common/notifications/permissions\";\r\nimport {\r\n addNotification,\r\n addNotificationMuteItem,\r\n deleteLegacyEmailSubscriptions,\r\n deleteNotificationMuteItem,\r\n deleteSubscription, editNotification, getNotificationMuteItems, getUserGuestSubscriptions, getUserSubscriptions,\r\n} from \"@/services/notification.service\";\r\nimport { NotificationStore } from \"@/store/notifications/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nimport { ActionTree } from \"../typed\";\r\n\r\nimport {\r\n ActionPayloadMap, ActionTypes, ShowDesktopNotification,\r\n} from \"./actionTypes\";\r\nimport * as mutations from \"./mutationTypes\";\r\n\r\nconst actions: ActionTree = {\r\n\r\n async [ActionTypes.AddNotification](context, { model }) {\r\n const notification = await addNotification(model);\r\n context.commit(new mutations.AddNotification(notification));\r\n },\r\n\r\n async [ActionTypes.AddNotificationMuteItem](context, { model }) {\r\n const notificationMuteItem = await addNotificationMuteItem(model);\r\n context.commit(new mutations.AddNotificationMuteItem(notificationMuteItem));\r\n },\r\n\r\n async [ActionTypes.EditNotification](context, { model }) {\r\n const notification = await editNotification(model);\r\n context.commit(new mutations.EditNotification(notification));\r\n },\r\n\r\n async [ActionTypes.GetUserSubscriptions](context) {\r\n const userSubscriptions = await getUserSubscriptions();\r\n if (userSubscriptions) {\r\n context.commit(new mutations.SetUserSubscriptions(userSubscriptions.Items));\r\n }\r\n },\r\n\r\n async [ActionTypes.GetUserGuestSubscriptions](context) {\r\n const userGuestSubscriptions = await getUserGuestSubscriptions();\r\n if (userGuestSubscriptions) {\r\n context.commit(new mutations.SetUserGuestSubscriptions(userGuestSubscriptions.Items));\r\n }\r\n },\r\n\r\n async [ActionTypes.GetNotificationMuteItems](context) {\r\n const notificationMuteItemsJs = await getNotificationMuteItems();\r\n if (notificationMuteItemsJs) {\r\n context.commit(new mutations.SetNotificationMuteItems(notificationMuteItemsJs.Items));\r\n }\r\n },\r\n\r\n async [ActionTypes.DeleteUserSubscription](context, { notificationId }) {\r\n const response = await deleteSubscription(notificationId);\r\n if (response && response.success) {\r\n context.commit(new mutations.DeleteUserSubscription(notificationId));\r\n }\r\n },\r\n\r\n async [ActionTypes.DeleteUserGuestSubscription](context, { notificationId }) {\r\n const response = await deleteSubscription(notificationId);\r\n if (response && response.success) {\r\n context.commit(new mutations.DeleteUserGuestSubscription(notificationId));\r\n }\r\n },\r\n\r\n async [ActionTypes.DeleteNotificationMuteItem](context, { notificationId }) {\r\n const response = await deleteNotificationMuteItem(notificationId);\r\n if (response && response.success) {\r\n context.commit(new mutations.DeleteNotificationMuteItem(notificationId));\r\n }\r\n },\r\n\r\n async [ActionTypes.DeleteLegacyEmailSubscriptions](context) {\r\n const response = await deleteLegacyEmailSubscriptions();\r\n if (response && response.success) {\r\n const { notifications } = context.state;\r\n context.commit(new mutations.SetUserSubscriptions(Object.values(notifications)\r\n .filter(x => x.SlackChannel || x.MsTeamsUrl)));\r\n }\r\n },\r\n\r\n async [ActionTypes.ShowDesktopNotification](_context, { options }) {\r\n let iconUrl: string | undefined;\r\n\r\n const title = options.title ? options.title : \"Axure\";\r\n\r\n if (options.iconUrl) {\r\n iconUrl = options.iconUrl;\r\n }\r\n\r\n if (!(await hasDesktopNotificationsPermission())) {\r\n return;\r\n }\r\n\r\n try {\r\n const notification = new Notification(title, {\r\n body: options.body,\r\n icon: iconUrl,\r\n tag: options.tag,\r\n renotify: true,\r\n });\r\n\r\n if (options.onclick) {\r\n notification.onclick = () => {\r\n if (options.onclick) {\r\n options.onclick(notification);\r\n }\r\n };\r\n }\r\n } catch (e) {\r\n console.error(\"Failed to display desktop notification\", e);\r\n }\r\n },\r\n async [ActionTypes.ShowMentionedDesktopNotification](context, { options }) {\r\n const title = `New message from ${options.authorName || options.authorEmail}`;\r\n const notificationOptions: AxNotificationOptions = getNotificationOptions(title, options);\r\n\r\n await context.dispatch(new ShowDesktopNotification(notificationOptions));\r\n },\r\n\r\n async [ActionTypes.ShowWorkspaceInvitedDesktopNotification](context, { options }) {\r\n const title = `New workspace invitation from ${options.authorName || options.authorEmail}`;\r\n const notificationOptions: AxNotificationOptions = getNotificationOptions(title, options);\r\n\r\n await context.dispatch(new ShowDesktopNotification(notificationOptions));\r\n },\r\n};\r\n\r\nfunction getNotificationOptions(title: string, options: AxMentionedNotificationOptions): AxNotificationOptions {\r\n const notificationOptions: AxNotificationOptions = {\r\n title,\r\n body: options.body || \"\",\r\n tag: options.tag,\r\n onclick: options.onclick,\r\n };\r\n\r\n if (options.authorProfileImage) {\r\n notificationOptions.iconUrl = options.authorProfileImage;\r\n } else {\r\n const iconText = options.authorName ? options.authorName[0].toUpperCase() : options.authorEmail[0].toUpperCase();\r\n const base64Data = badgeDrawer.drawBadgeAsBase64({\r\n text: iconText,\r\n backgroundColor: \"#00a2d8\",\r\n font: \"40px Source Sans Pro,sans-serif\",\r\n radius: 40,\r\n textOffsetTop: 5,\r\n });\r\n\r\n notificationOptions.iconUrl = base64Data;\r\n }\r\n\r\n return notificationOptions;\r\n}\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { NotificationJs, NotificationMuteItemJs } from \"@shared/models\";\r\n\r\nimport { NotificationStore } from \"@/store/notifications/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n notifications(state): NotificationJs[] {\r\n return Object.values(state.notifications);\r\n },\r\n\r\n guestSubscriptions(state): NotificationJs[] {\r\n return Object.values(state.guestSubscriptions);\r\n },\r\n\r\n notificationMuteItems(state): NotificationMuteItemJs[] {\r\n return Object.values(state.notificationMuteItems);\r\n },\r\n};\r\n\r\nexport default getterTree;\r\n","import Vue from \"vue\";\r\n\r\nimport { MutationPayloadMap, MutationTypes } from \"@/store/notifications/mutationTypes\";\r\nimport { NotificationStore } from \"@/store/notifications/state\";\r\nimport { MutationTree } from \"@/store/typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.AddNotification](state, { notification }) {\r\n Vue.set(state.notifications, notification.Id, notification);\r\n },\r\n\r\n [MutationTypes.AddNotificationMuteItem](state, { notification }) {\r\n Vue.set(state.notificationMuteItems, notification.Id, notification);\r\n },\r\n\r\n [MutationTypes.EditNotification](state, { notification }) {\r\n Vue.set(state.notifications, notification.Id, notification);\r\n },\r\n\r\n [MutationTypes.SetUserSubscriptions](state, { notifications }) {\r\n for (const notification of notifications) {\r\n Vue.set(state.notifications, notification.Id, notification);\r\n }\r\n },\r\n\r\n [MutationTypes.SetUserGuestSubscriptions](state, { notifications }) {\r\n for (const notification of notifications) {\r\n Vue.set(state.guestSubscriptions, notification.Id, notification);\r\n }\r\n },\r\n\r\n [MutationTypes.SetNotificationMuteItems](state, { notifications }) {\r\n for (const notification of notifications) {\r\n Vue.set(state.notificationMuteItems, notification.Id, notification);\r\n }\r\n },\r\n\r\n [MutationTypes.DeleteUserSubscription](state, { notificationId }) {\r\n Vue.delete(state.notifications, notificationId);\r\n },\r\n\r\n [MutationTypes.DeleteUserGuestSubscription](state, { notificationId }) {\r\n Vue.delete(state.guestSubscriptions, notificationId);\r\n },\r\n\r\n [MutationTypes.DeleteNotificationMuteItem](state, { notificationId }) {\r\n Vue.delete(state.notificationMuteItems, notificationId);\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import actions from \"./actions\";\r\nimport getters from \"./getters\";\r\nimport mutations from \"./mutations\";\r\nimport state from \"./state\";\r\n\r\nexport default {\r\n actions,\r\n getters,\r\n mutations,\r\n state,\r\n};\r\n","import { ActionPayloadMap, ActionTypes } from \"@/store/project/actionTypes\";\r\nimport { AxShareProject } from \"@/store/project/state\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ActionTree } from \"@/store/typed\";\r\n\r\nconst actions: ActionTree = {\r\n [ActionTypes.PostToIframe]({ state }, { key, data, iframeBridgeTarget }) {\r\n const iframeBridgeProps = state.iframeBridgeProps;\r\n\r\n for (const iframeTarget in iframeBridgeProps) {\r\n if (Object.prototype.hasOwnProperty.call(iframeBridgeProps, iframeTarget)) {\r\n const iframeProps = iframeBridgeProps[iframeTarget];\r\n\r\n if (iframeProps && (iframeTarget === iframeBridgeTarget || iframeBridgeTarget === undefined)) {\r\n const { iframe, iframeTargetOrigin, iframeBridgeReady } = iframeProps;\r\n if (iframe && iframeTargetOrigin && iframeBridgeReady) {\r\n postMessageToIframe(iframe, iframeTargetOrigin, key, data);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n};\r\n\r\nconst postMessageToIframe = (iframe: HTMLIFrameElement, targetOrigin: string, key: string, data?: any) => {\r\n if (iframe.contentWindow) {\r\n const message = JSON.stringify({\r\n key,\r\n data,\r\n });\r\n iframe.contentWindow.postMessage(message, targetOrigin);\r\n }\r\n};\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\nimport { AxShareProject, IframeBridgeProps, IframeBridgeTarget } from \"@/store/project/state\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n iframeBridgeProps(state) {\r\n return (target: IframeBridgeTarget): IframeBridgeProps | undefined => {\r\n return state.iframeBridgeProps[target];\r\n };\r\n },\r\n\r\n otherIframeBridgeTargets(state) {\r\n return (target: IframeBridgeTarget): string[] => {\r\n return Object.keys(state.iframeBridgeProps).filter(prop => prop !== target);\r\n };\r\n },\r\n\r\n totalIframeBridgesReady(state) {\r\n return Object.values(state.iframeBridgeProps).filter(target => !!target && target.iframeBridgeReady).length;\r\n },\r\n};\r\n\r\nexport default getterTree;\r\n","import Vue from \"vue\";\r\n\r\nimport { MutationPayloadMap, MutationTypes } from \"@/store/project/mutationTypes\";\r\nimport { AxShareProject, EmptyIframeBridgeProp } from \"@/store/project/state\";\r\nimport { MutationTree } from \"@/store/typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.SetIframeBridge](state, { iframeBridgeTarget, iframe, target }) {\r\n let iframeBridgeProps = state.iframeBridgeProps[iframeBridgeTarget];\r\n\r\n if (!iframeBridgeProps) {\r\n iframeBridgeProps = EmptyIframeBridgeProp();\r\n }\r\n\r\n iframeBridgeProps.iframe = iframe;\r\n iframeBridgeProps.iframeTargetOrigin = target;\r\n iframeBridgeProps.iframeBridgeReady = false;\r\n iframeBridgeProps.iframeReady = false;\r\n\r\n Vue.set(state.iframeBridgeProps, iframeBridgeTarget, iframeBridgeProps);\r\n },\r\n\r\n [MutationTypes.SetIframeBridgeReady](state, { iframeBridgeTarget }) {\r\n const iframeBridgeProps = state.iframeBridgeProps[iframeBridgeTarget];\r\n\r\n if (iframeBridgeProps) {\r\n iframeBridgeProps.iframeBridgeReady = true;\r\n }\r\n },\r\n\r\n [MutationTypes.SetIframeReady](state, { iframeBridgeTarget }) {\r\n const iframeBridgeProps = state.iframeBridgeProps[iframeBridgeTarget];\r\n\r\n if (iframeBridgeProps) {\r\n iframeBridgeProps.iframeReady = true;\r\n }\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import actions from \"@/store/project/actions\";\r\nimport getters from \"@/store/project/getters\";\r\nimport mutations from \"@/store/project/mutations\";\r\nimport state from \"@/store/project/state\";\r\n\r\nexport default {\r\n state,\r\n actions,\r\n mutations,\r\n getters,\r\n};\r\n","import { MutationPayloadMap, MutationTypes } from \"@/store/settings/mutationTypes\";\r\nimport { AxShareSettings } from \"@/store/settings/state\";\r\nimport { MutationTree } from \"@/store/typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.SetShowAllWorkspaces](state, { show }) {\r\n state.showAllWorkspaces = show;\r\n },\r\n [MutationTypes.SetSavedWorkspaceId](state, { id }) {\r\n state.savedWorkspaceId = id;\r\n },\r\n\r\n [MutationTypes.SetShowArchived](state, { show }) {\r\n state.showArchived = show;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","export interface AxShareSettings {\r\n showAllWorkspaces: boolean;\r\n savedWorkspaceId?: string;\r\n showArchived: boolean;\r\n}\r\n\r\nconst state = (): AxShareSettings => ({\r\n showAllWorkspaces: false,\r\n savedWorkspaceId: undefined,\r\n showArchived: false,\r\n});\r\n\r\nexport default state;\r\n","import mutations from \"@/store/settings/mutations\";\r\nimport state from \"@/store/settings/state\";\r\n\r\nexport default {\r\n state,\r\n mutations,\r\n};\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\nimport {\r\n AxShareUploads,\r\n ArtboardUploadInfo,\r\n ArtboardUploadStatusCompleted,\r\n ArtboardUploadBatch,\r\n ArtboardUploadStatus,\r\n} from \"@/store/uploads/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n batchIsCompleted(state) {\r\n return (batchId: string): boolean => {\r\n const batch = state.batches[batchId];\r\n if (!batch) return true;\r\n const artboards = Object.values(batch.contents).filter(Boolean) as ArtboardUploadInfo[];\r\n const allCompleted = artboards.every(batchArtboardIsCompleted);\r\n return allCompleted;\r\n };\r\n },\r\n\r\n batchUploadCompletedOrDismissed(state, getters) {\r\n return (batchId: string): boolean => {\r\n const batch = state.batches[batchId];\r\n if (!batch) return true;\r\n if (batch.dismissed) return true;\r\n return getters.batchIsCompleted(batchId);\r\n };\r\n },\r\n\r\n batchNotStartedArtboards(state) {\r\n return (batchId: string): ArtboardUploadInfo[] => {\r\n const batch = state.batches[batchId];\r\n if (!batch) return [];\r\n const artboards = Object.values(batch.contents).filter(Boolean) as ArtboardUploadInfo[];\r\n return artboards.filter(batchArtboardNotStarted);\r\n };\r\n },\r\n\r\n batchesInProgress(state) {\r\n const batches = Object.values(state.batches).filter(Boolean) as ArtboardUploadBatch[];\r\n const batchesInProgress = batches.filter(batch => !batchIsCompleted(batch));\r\n return batchesInProgress;\r\n },\r\n};\r\n\r\nexport function batchIsCompleted(batch: ArtboardUploadBatch) {\r\n return Object.values(batch.contents).every(artboard => !artboard || batchArtboardIsCompleted(artboard));\r\n}\r\n\r\nexport function batchArtboardIsCompleted({ status }: ArtboardUploadInfo) {\r\n return ArtboardUploadStatusCompleted.includes(status);\r\n}\r\n\r\nexport function batchArtboardNotStarted({ status }: ArtboardUploadInfo) {\r\n return status === ArtboardUploadStatus.NotStarted;\r\n}\r\n\r\nexport default getterTree;\r\n","import Vue from \"vue\";\r\n\r\nimport { MutationTree } from \"@/store/typed\";\r\nimport { batchIsCompleted } from \"@/store/uploads/getters\";\r\nimport { MutationPayloadMap, MutationTypes } from \"@/store/uploads/mutationTypes\";\r\nimport { AxShareUploads, ArtboardUploadBatch, ArtboardUploadInfo, ArtboardUploadStatus } from \"@/store/uploads/state\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.NewUpload](state, { uploadData: { source, batchId, shortcut, projectName } }) {\r\n // remove all existing batches\r\n state.batches = {};\r\n\r\n const batch: ArtboardUploadBatch = {\r\n source,\r\n id: batchId,\r\n shortcut,\r\n projectName,\r\n contents: {},\r\n created: new Date(),\r\n dismissed: false,\r\n };\r\n Vue.set(state.batches, batchId, batch);\r\n },\r\n\r\n [MutationTypes.DismissUpload](state, { batchId }) {\r\n const batch = state.batches[batchId];\r\n if (!batch) return;\r\n batch.dismissed = true;\r\n cleanupBatch(state, batch);\r\n },\r\n\r\n [MutationTypes.AddToBatch](state, { uploadData: { batchId, artboardId, artboardName, shortcut, cancel } }) {\r\n const batch = state.batches[batchId];\r\n if (batch) {\r\n const artboard: ArtboardUploadInfo = {\r\n id: artboardId,\r\n name: artboardName,\r\n shortcut,\r\n cancel,\r\n serverArtboardId: \"\",\r\n status: ArtboardUploadStatus.NotStarted,\r\n progress: 0,\r\n };\r\n Vue.set(batch.contents, artboardId, artboard);\r\n }\r\n },\r\n\r\n [MutationTypes.RemoveFromBatch](state, { batchId, artboardId }) {\r\n const batch = state.batches[batchId];\r\n if (!batch) return;\r\n const artboard = batch.contents[artboardId];\r\n if (!artboard) return;\r\n Vue.delete(batch.contents, artboardId);\r\n },\r\n\r\n [MutationTypes.UpdateProgress](state, { uploadData: { batchId, artboardId, progress, status, cancel } }) {\r\n const batch = state.batches[batchId];\r\n if (!batch) return;\r\n const artboard = batch.contents[artboardId];\r\n if (artboard) {\r\n artboard.status = status !== undefined ? status : ArtboardUploadStatus.InProgress;\r\n artboard.progress = progress;\r\n artboard.cancel = cancel || artboard.cancel;\r\n }\r\n },\r\n\r\n [MutationTypes.UploadSuccess](state, { uploadData: { batchId, artboardId, serverArtboardId } }) {\r\n const batch = state.batches[batchId];\r\n if (!batch) return;\r\n const artboard = batch.contents[artboardId];\r\n if (artboard) {\r\n artboard.progress = 100;\r\n artboard.status = ArtboardUploadStatus.Success;\r\n artboard.serverArtboardId = serverArtboardId;\r\n }\r\n cleanupBatch(state, batch);\r\n },\r\n\r\n [MutationTypes.UploadError](state, { uploadData: { batchId, artboardId, errorMessage } }) {\r\n const batch = state.batches[batchId];\r\n if (!batch) return;\r\n const artboard = batch.contents[artboardId];\r\n if (artboard) {\r\n artboard.status = ArtboardUploadStatus.Error;\r\n artboard.errorMessage = errorMessage;\r\n }\r\n cleanupBatch(state, batch);\r\n },\r\n\r\n [MutationTypes.UploadCancel](state, { uploadData: { batchId, artboardId } }) {\r\n const batch = state.batches[batchId];\r\n if (!batch) return;\r\n const artboard = batch.contents[artboardId];\r\n if (artboard) {\r\n artboard.status = ArtboardUploadStatus.Canceled;\r\n }\r\n cleanupBatch(state, batch);\r\n },\r\n};\r\n\r\nfunction cleanupBatch(state: AxShareUploads, batch: ArtboardUploadBatch) {\r\n if (batch.dismissed && batchIsCompleted(batch)) {\r\n Vue.delete(state.batches, batch.id);\r\n }\r\n}\r\n\r\nexport default mutations;\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { ExtendedSsoResponse } from \"@shared/models\";\r\nimport { UserProfile } from \"@/services/models/account\";\r\nimport { PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n SetInfo = \"[User] Set Info\",\r\n SetProfile = \"[User] Set Profile\",\r\n}\r\n\r\nexport class SetInfo implements Payload {\r\n public readonly type = MutationTypes.SetInfo;\r\n constructor(public info: ExtendedSsoResponse) {}\r\n}\r\n\r\nexport class SetProfile implements Payload {\r\n public readonly type = MutationTypes.SetProfile;\r\n constructor(public profile: UserProfile) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.SetInfo]: SetInfo;\r\n [MutationTypes.SetProfile]: SetProfile;\r\n}\r\n","import getters from \"./getters\";\r\nimport mutations from \"./mutations\";\r\nimport state from \"./state\";\r\n\r\nexport default {\r\n state,\r\n mutations,\r\n getters,\r\n};\r\n","import { isProduction } from \"@/common/environment\";\r\nimport { getUserInfo, refreshAuth } from \"@/services/user.service\";\r\nimport { asyncAction } from \"@/store/async-action\";\r\nimport { AxShare } from \"@/store/state\";\r\nimport { ActionTree } from \"@/store/typed\";\r\nimport { ActionPayloadMap, ActionTypes, SetUserTimeZone } from \"@/store/user/actionTypes\";\r\nimport { SetInfo, SetProfile } from \"@/store/user/mutationsTypes\";\r\nimport { AxShareUser } from \"@/store/user/state\";\r\n\r\nconst actions: ActionTree = {\r\n [ActionTypes.GetUserInfo](context) {\r\n const appConfigured: boolean = context.rootGetters.appConfigured;\r\n\r\n const { dispatch } = context;\r\n\r\n if (appConfigured) {\r\n return asyncAction(\r\n context,\r\n ActionTypes.GetUserInfo,\r\n async () => {\r\n let userInfoResponse = await getUserInfo();\r\n\r\n if (userInfoResponse) {\r\n if (!userInfoResponse.localTimeZone) {\r\n try {\r\n await dispatch(new SetUserTimeZone());\r\n userInfoResponse = await getUserInfo();\r\n } catch (e) {\r\n console.error(\"Error setting time zone\");\r\n console.error(e);\r\n }\r\n }\r\n\r\n context.commit(new SetInfo(userInfoResponse));\r\n }\r\n },\r\n );\r\n }\r\n },\r\n\r\n [ActionTypes.GetUserProfile](context) {\r\n if (context.rootState.accountService) {\r\n const appConfigured: boolean = context.rootGetters.appConfigured;\r\n\r\n if (appConfigured) {\r\n const accountService = context.rootState.accountService;\r\n\r\n return asyncAction(\r\n context,\r\n ActionTypes.GetUserProfile,\r\n async () => accountService().getUserProfile(),\r\n response => new SetProfile(response),\r\n );\r\n }\r\n }\r\n },\r\n\r\n [ActionTypes.ChangeAccountInfo](context, { model }) {\r\n if (context.rootState.accountService) {\r\n const accountService = context.rootState.accountService;\r\n return asyncAction(context, ActionTypes.ChangeAccountInfo, async () => {\r\n const authToken = await accountService().changeAccountInfo(model);\r\n\r\n // update cookies with app server\r\n if (authToken) {\r\n await refreshAuth(authToken);\r\n }\r\n\r\n // temporarily follow redirect only in production mode\r\n const followRedirect = isProduction;\r\n await getUserInfo(followRedirect);\r\n });\r\n }\r\n },\r\n\r\n async [ActionTypes.SetUserTimeZone](context, { timeZone }) {\r\n if (context.rootState.accountService) {\r\n await context.rootState.accountService().setUserTimeZone(timeZone);\r\n }\r\n },\r\n};\r\n\r\nexport default actions;\r\n","import { GetterTree } from \"vuex\";\r\n\r\nimport { AxShare } from \"@/store/state\";\r\nimport { AxShareUser } from \"@/store/user/state\";\r\n\r\nconst getterTree: GetterTree = {\r\n enterpriseLicenseCheckFailed(state, _, rootState) {\r\n const { axShareConfig } = rootState;\r\n const { userInfo } = state;\r\n if (!axShareConfig || !userInfo) return false;\r\n\r\n const { IsSubInstance: isSubInstance } = axShareConfig;\r\n return isSubInstance && userInfo.isRpEnterprise && !userInfo.isWhitelisted;\r\n },\r\n};\r\n\r\nexport default getterTree;\r\n","import { MutationPayloadMap, MutationTypes } from \"@/store/user/mutationsTypes\";\r\nimport { AxShareUser } from \"@/store/user/state\";\r\nimport { MutationTree } from \"../typed\";\r\n\r\nconst mutations: MutationTree = {\r\n [MutationTypes.SetInfo](state, { info }) {\r\n state.userInfo = info;\r\n },\r\n\r\n [MutationTypes.SetProfile](state, { profile }) {\r\n state.profile = profile;\r\n },\r\n};\r\n\r\nexport default mutations;\r\n","import actions from \"@/store/user/actions\";\r\nimport getters from \"@/store/user/getters\";\r\nimport mutations from \"@/store/user/mutations\";\r\nimport state from \"@/store/user/state\";\r\n\r\nexport default {\r\n state,\r\n actions,\r\n mutations,\r\n getters,\r\n};\r\n","import { CommitOptions, DispatchOptions, Payload, Store } from \"vuex\";\r\nimport VuexPersistence from \"vuex-persist\";\r\n\r\nimport { isElectronRenderer } from \"@/common/environment\";\r\nimport { Main, Renderer } from \"@/desktop/events\";\r\nimport { DispatchResult } from \"@/desktop/main-process/bridge/store\";\r\nimport { AxShare } from \"@/store/state\";\r\n\r\nexport const desktopBridge = (store: Store) => {\r\n if (isElectronRenderer) {\r\n if (!window.AxureCloudNative) return;\r\n const { ipc } = window.AxureCloudNative;\r\n\r\n ipc.on(Main.VuexCommit, (_event: any, data: Payload, options?: CommitOptions) => {\r\n store.commit(data, options);\r\n });\r\n\r\n ipc.on(\r\n Main.VuexDispatch,\r\n async (_event: any, correlationParam: string, data: Payload, options?: DispatchOptions) => {\r\n ipc.send(Renderer.VuexDispatchAck + correlationParam);\r\n let dispatchResult: DispatchResult;\r\n try {\r\n const result = await store.dispatch(data, options);\r\n dispatchResult = { data: result, success: true };\r\n } catch (err) {\r\n dispatchResult = { data: err, success: false };\r\n }\r\n ipc.send(Renderer.VuexDispatchComplete + correlationParam, dispatchResult);\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport const vuexPersist = new VuexPersistence({\r\n key: \"axure-cloud-state\",\r\n reducer: state => ({ settings: state.settings }),\r\n});\r\n","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\n\r\nimport actions from \"@/store/actions\";\r\nimport admin from \"@/store/admin\";\r\nimport desktop from \"@/store/desktop\";\r\nimport expo from \"@/store/expo\";\r\nimport fs from \"@/store/fs\";\r\nimport getters from \"@/store/getters\";\r\nimport migration from \"@/store/migration\";\r\nimport mutations from \"@/store/mutations\";\r\nimport notifications from \"@/store/notifications\";\r\nimport project from \"@/store/project\";\r\nimport settings from \"@/store/settings\";\r\nimport state from \"@/store/state\";\r\nimport uploads from \"@/store/uploads\";\r\nimport user from \"@/store/user\";\r\n\r\nimport { desktopBridge, vuexPersist } from \"./plugins\";\r\n\r\nVue.use(Vuex);\r\n\r\nexport default new Vuex.Store({\r\n state: state(),\r\n actions,\r\n mutations,\r\n getters,\r\n modules: {\r\n fs,\r\n project,\r\n expo,\r\n user,\r\n admin,\r\n desktop,\r\n settings,\r\n uploads,\r\n notifications,\r\n migration,\r\n },\r\n strict: process.env.NODE_ENV !== \"production\",\r\n plugins: [desktopBridge, vuexPersist.plugin],\r\n});\r\n","import { FilesystemJs, SsoResponse, MigrateToAcbResult } from \"@/generated/models\";\r\nimport { MigrationSteps } from \"@/store/migration/state\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n MigrateWorkspaces = \"[Migration] Migrate Workspaces\",\r\n Restart = \"[Migration] Restart\",\r\n SetStep = \"[Migration] Set Step\",\r\n SetFailedStep = \"[Migration] Set Failed Step\",\r\n SetSessionToken = \"[Migration] Set Session Token\",\r\n SelectSubInstance = \"[Migration] Select Sub Instance\",\r\n GoBack = \"[Migration] Go Back\",\r\n GoForward = \"[Migration] Go Forward\",\r\n SelectWorkspaces = \"[Migration] Select Workspaces\",\r\n SelectUsers = \"[Migration] Select Users\",\r\n ConfirmMigration = \"[Migration] Confirm Migration\",\r\n SetMigrationResult = \"[Migration] Set Migration Result\",\r\n}\r\n\r\nexport class MigrateWorkspaces implements Payload {\r\n public readonly type = MutationTypes.MigrateWorkspaces;\r\n constructor(public migrate: boolean) {}\r\n}\r\n\r\nexport class SetStep implements Payload {\r\n public readonly type = MutationTypes.SetStep;\r\n constructor(public step: MigrationSteps) {}\r\n}\r\n\r\nexport class SetFailedStep implements Payload {\r\n public readonly type = MutationTypes.SetFailedStep;\r\n constructor(public step: MigrationSteps) {}\r\n}\r\n\r\nexport class SelectSubInstance implements Payload {\r\n public readonly type = MutationTypes.SelectSubInstance;\r\n constructor(public domainPrefix: string) {}\r\n}\r\n\r\nexport class SetSessionToken implements Payload {\r\n public readonly type = MutationTypes.SetSessionToken;\r\n constructor(public migrationId: string, public token: string) {}\r\n}\r\n\r\nexport class GoBack implements Payload {\r\n public readonly type = MutationTypes.GoBack;\r\n}\r\n\r\nexport class GoForward implements Payload {\r\n public readonly type = MutationTypes.GoForward;\r\n}\r\n\r\nexport class SelectWorkspaces implements Payload {\r\n public readonly type = MutationTypes.SelectWorkspaces;\r\n constructor(public workspaces: FilesystemJs[]) {}\r\n}\r\n\r\nexport class SelectUsers implements Payload {\r\n public readonly type = MutationTypes.SelectUsers;\r\n constructor(public users: SsoResponse[]) {}\r\n}\r\n\r\nexport class ConfirmMigration implements Payload {\r\n public readonly type = MutationTypes.ConfirmMigration;\r\n constructor() {}\r\n}\r\n\r\nexport class SetMigrationResult implements Payload {\r\n public readonly type = MutationTypes.SetMigrationResult;\r\n constructor(public result: MigrateToAcbResult) {}\r\n}\r\n\r\nexport class Restart implements Payload {\r\n public readonly type = MutationTypes.Restart;\r\n constructor() {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.MigrateWorkspaces]: MigrateWorkspaces;\r\n [MutationTypes.SetStep]: SetStep;\r\n [MutationTypes.SetFailedStep]: SetFailedStep;\r\n [MutationTypes.SetSessionToken]: SetSessionToken;\r\n [MutationTypes.GoBack]: GoBack;\r\n [MutationTypes.GoForward]: GoForward;\r\n [MutationTypes.SelectWorkspaces]: SelectWorkspaces;\r\n [MutationTypes.SelectUsers]: SelectUsers;\r\n [MutationTypes.ConfirmMigration]: ConfirmMigration;\r\n [MutationTypes.SelectSubInstance]: SelectSubInstance;\r\n [MutationTypes.SetMigrationResult]: SetMigrationResult;\r\n [MutationTypes.Restart]: Restart;\r\n}\r\n","import { FilesystemJs, SsoResponse } from \"@/generated/models\";\r\n\r\nexport enum MigrationSteps {\r\n Idle,\r\n GetStarted,\r\n SelectSubInstance,\r\n PickWorkspaces,\r\n PickUsers,\r\n Confirmation,\r\n TransferInProgress,\r\n Completed,\r\n AuthExpired,\r\n}\r\n\r\nexport interface AxShareMigration {\r\n inProgress: boolean;\r\n migrationId: string;\r\n sessionToken: string;\r\n domainPrefix: string;\r\n step: MigrationSteps;\r\n failedStep?: MigrationSteps;\r\n workspacesToMigrate: FilesystemJs[];\r\n usersToMigrate: SsoResponse[];\r\n userActivationRequired: boolean;\r\n superAdmin?: SsoResponse;\r\n}\r\n\r\nconst state = (): AxShareMigration => ({\r\n inProgress: false,\r\n migrationId: \"\",\r\n domainPrefix: \"\",\r\n sessionToken: \"\",\r\n step: MigrationSteps.Idle,\r\n workspacesToMigrate: [],\r\n usersToMigrate: [],\r\n userActivationRequired: false,\r\n superAdmin: undefined,\r\n});\r\n\r\nexport default state;\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { AxShareConfigModel, VersionInfoResponse } from \"@shared/models\";\r\n\r\nimport { AsyncActionState } from \"@/store/async-action\";\r\n\r\nimport { PayloadMap } from \"./typed\";\r\n\r\nexport enum MutationTypes {\r\n Reset = \"Reset\",\r\n QueryAction = \"Query Action\",\r\n ConfigSet = \"Config Set\",\r\n SetupAccountService = \"Setup Account Service\",\r\n InitializationStatus = \"Set Initialization Status\",\r\n SetNavigationError = \"SetNavigationError\",\r\n ApiCallAdd = \"Api Call Add\",\r\n ApiCallRemove = \"Api Call Remove\",\r\n ApiCallSetStatus = \"Api Call Set Status\",\r\n ApiCallRetry = \"Api Call Retry\",\r\n ApiVersionSet = \"Api Version Set\",\r\n ApiCallClear = \"Api Call Clear\",\r\n}\r\n\r\nexport class Reset implements Payload {\r\n public readonly type = MutationTypes.Reset;\r\n}\r\n\r\nexport class QueryAction implements Payload {\r\n public readonly type = MutationTypes.QueryAction;\r\n constructor(public readonly state: AsyncActionState, public action: string) { }\r\n}\r\n\r\nexport class Fetching extends QueryAction {\r\n constructor(public action: string) {\r\n super(AsyncActionState.Fetching, action);\r\n }\r\n}\r\n\r\nexport class Success extends QueryAction {\r\n constructor(public action: string) {\r\n super(AsyncActionState.Success, action);\r\n }\r\n}\r\n\r\nexport class Failure extends QueryAction {\r\n constructor(public action: string) {\r\n super(AsyncActionState.Failure, action);\r\n }\r\n}\r\n\r\nexport class ConfigSet implements Payload {\r\n public readonly type = MutationTypes.ConfigSet;\r\n constructor(public config: AxShareConfigModel) { }\r\n}\r\n\r\nexport class SetupAccountService implements Payload {\r\n public readonly type = MutationTypes.SetupAccountService;\r\n constructor(\r\n public readonly accountServiceHost: string,\r\n public readonly axShareHost: string,\r\n public readonly authToken = \"\",\r\n public readonly useGet = false,\r\n ) { }\r\n}\r\n\r\nexport class InitializationStatus implements Payload {\r\n public readonly type = MutationTypes.InitializationStatus;\r\n constructor(public status: \"success\" | \"failure\", public error?: Error | unknown) { }\r\n}\r\n\r\nexport class SetNavigationError implements Payload {\r\n public readonly type = MutationTypes.SetNavigationError;\r\n constructor(public error?: Error | unknown) { }\r\n}\r\n\r\nexport class ApiCallAdd implements Payload {\r\n public readonly type = MutationTypes.ApiCallAdd;\r\n constructor(\r\n public readonly apiCallId: string,\r\n public readonly action: () => any,\r\n public readonly onFailure?: (error?: Error | unknown) => any,\r\n ) { }\r\n}\r\n\r\nexport class ApiCallRemove implements Payload {\r\n public readonly type = MutationTypes.ApiCallRemove;\r\n constructor(public apiCallId: string) { }\r\n}\r\n\r\nexport class ApiCallClear implements Payload {\r\n public readonly type = MutationTypes.ApiCallClear;\r\n}\r\n\r\nexport class ApiCallSetStatus implements Payload {\r\n public readonly type = MutationTypes.ApiCallSetStatus;\r\n constructor(public apiCallId: string, public status: AsyncActionState) { }\r\n}\r\n\r\nexport class ApiCallRetry implements Payload {\r\n public readonly type = MutationTypes.ApiCallRetry;\r\n constructor(public apiCallId: string) { }\r\n}\r\n\r\nexport class ApiVersionSet implements Payload {\r\n public readonly type = MutationTypes.ApiVersionSet;\r\n constructor(public apiVersionInfo: VersionInfoResponse) { }\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.Reset]: Reset;\r\n [MutationTypes.QueryAction]: QueryAction;\r\n [MutationTypes.ConfigSet]: ConfigSet;\r\n [MutationTypes.SetupAccountService]: SetupAccountService;\r\n [MutationTypes.InitializationStatus]: InitializationStatus;\r\n [MutationTypes.SetNavigationError]: SetNavigationError;\r\n [MutationTypes.ApiCallAdd]: ApiCallAdd;\r\n [MutationTypes.ApiCallRemove]: ApiCallRemove;\r\n [MutationTypes.ApiCallClear]: ApiCallClear;\r\n [MutationTypes.ApiCallSetStatus]: ApiCallSetStatus;\r\n [MutationTypes.ApiCallRetry]: ApiCallRetry;\r\n [MutationTypes.ApiVersionSet]: ApiVersionSet;\r\n}\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { AxNotificationOptions, AxMentionedNotificationOptions } from \"@/common/notifications/AxNotificationOptions\";\r\nimport { AddNotificationModel, EditNotificationModel, NotificationMuteItemModel } from \"@/services/models/notification\";\r\n\r\nimport { PayloadMap } from \"../typed\";\r\n\r\nexport enum ActionTypes {\r\n AddNotification = \"Add Notification\",\r\n AddNotificationMuteItem = \"Add Notification Mute Item\",\r\n EditNotification = \"Edit Notification\",\r\n GetUserSubscriptions = \"Get User Subscriptions\",\r\n GetUserGuestSubscriptions = \"Get User Guest Subscriptions\",\r\n GetNotificationMuteItems = \"Get Notification Mute Items\",\r\n DeleteUserSubscription = \"Delete User Subscription\",\r\n DeleteUserGuestSubscription = \"Delete User Guest Subscription\",\r\n DeleteNotificationMuteItem = \"Delete Notification Mute Item\",\r\n DeleteLegacyEmailSubscriptions = \"Delete Legacy Email Subscriptions\",\r\n ShowDesktopNotification = \"Show Desktop Notification\",\r\n ShowMentionedDesktopNotification = \"Show Mentioned Desktop Notification\",\r\n ShowWorkspaceInvitedDesktopNotification = \"Show Workspace Invited Desktop Notification\",\r\n}\r\n\r\nexport class AddNotification implements Payload {\r\n public readonly type = ActionTypes.AddNotification;\r\n constructor(public readonly model: AddNotificationModel) {}\r\n}\r\n\r\nexport class AddNotificationMuteItem implements Payload {\r\n public readonly type = ActionTypes.AddNotificationMuteItem;\r\n constructor(public readonly model: NotificationMuteItemModel) {}\r\n}\r\n\r\nexport class EditNotification implements Payload {\r\n public readonly type = ActionTypes.EditNotification;\r\n constructor(public readonly model: EditNotificationModel) {}\r\n}\r\n\r\nexport class GetUserSubscriptions implements Payload {\r\n public readonly type = ActionTypes.GetUserSubscriptions;\r\n}\r\n\r\nexport class GetUserGuestSubscriptions implements Payload {\r\n public readonly type = ActionTypes.GetUserGuestSubscriptions;\r\n}\r\n\r\nexport class GetNotificationMuteItems implements Payload {\r\n public readonly type = ActionTypes.GetNotificationMuteItems;\r\n}\r\n\r\nexport class DeleteUserSubscription implements Payload {\r\n public readonly type = ActionTypes.DeleteUserSubscription;\r\n constructor(public readonly notificationId: string) {}\r\n}\r\n\r\nexport class DeleteUserGuestSubscription implements Payload {\r\n public readonly type = ActionTypes.DeleteUserGuestSubscription;\r\n constructor(public readonly notificationId: string) {}\r\n}\r\n\r\nexport class DeleteNotificationMuteItem implements Payload {\r\n public readonly type = ActionTypes.DeleteNotificationMuteItem;\r\n constructor(public readonly notificationId: string) {}\r\n}\r\n\r\nexport class DeleteLegacyEmailSubscriptions implements Payload {\r\n public readonly type = ActionTypes.DeleteLegacyEmailSubscriptions;\r\n}\r\n\r\nexport class ShowDesktopNotification implements Payload {\r\n public readonly type = ActionTypes.ShowDesktopNotification;\r\n constructor(public readonly options: AxNotificationOptions) {}\r\n}\r\n\r\nexport class ShowMentionedDesktopNotification implements Payload {\r\n public readonly type = ActionTypes.ShowMentionedDesktopNotification;\r\n constructor(public readonly options: AxMentionedNotificationOptions) {}\r\n}\r\n\r\nexport class ShowWorkspaceInvitedDesktopNotification implements Payload {\r\n public readonly type = ActionTypes.ShowWorkspaceInvitedDesktopNotification;\r\n constructor(public readonly options: AxMentionedNotificationOptions) {}\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.AddNotification]: AddNotification;\r\n [ActionTypes.AddNotificationMuteItem]: AddNotificationMuteItem;\r\n [ActionTypes.EditNotification]: EditNotification;\r\n [ActionTypes.GetUserSubscriptions]: GetUserSubscriptions;\r\n [ActionTypes.GetUserGuestSubscriptions]: GetUserGuestSubscriptions;\r\n [ActionTypes.GetNotificationMuteItems]: GetNotificationMuteItems;\r\n [ActionTypes.DeleteUserSubscription]: DeleteUserSubscription;\r\n [ActionTypes.DeleteUserGuestSubscription]: DeleteUserGuestSubscription;\r\n [ActionTypes.DeleteNotificationMuteItem]: DeleteNotificationMuteItem;\r\n [ActionTypes.DeleteLegacyEmailSubscriptions]: DeleteLegacyEmailSubscriptions;\r\n [ActionTypes.ShowDesktopNotification]: ShowDesktopNotification;\r\n [ActionTypes.ShowMentionedDesktopNotification]: ShowMentionedDesktopNotification;\r\n [ActionTypes.ShowWorkspaceInvitedDesktopNotification]: ShowWorkspaceInvitedDesktopNotification;\r\n}\r\n","import { IframeBridgeTarget } from \"@/store/project/state\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum ActionTypes {\r\n PostToIframe = \"[Project] Post To Current Iframe Bridge\",\r\n}\r\n\r\nexport class PostToIframe implements Payload {\r\n public readonly type = ActionTypes.PostToIframe;\r\n constructor(public key: string, public data?: any, public iframeBridgeTarget?: IframeBridgeTarget) {}\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.PostToIframe]: PostToIframe;\r\n}\r\n","import { IframeBridgeTarget } from \"@/store/project/state\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n SetIframeBridge = \"[Project] Set Iframe Bridge HTML Element\",\r\n SetIframeReady = \"[Project] Set Iframe Element Ready\",\r\n SetIframeBridgeReady = \"[Project] Set Iframe Bridge Ready\",\r\n}\r\n\r\nexport class SetIframeBridge implements Payload {\r\n public readonly type = MutationTypes.SetIframeBridge;\r\n constructor(\r\n public iframeBridgeTarget: IframeBridgeTarget,\r\n public iframe?: HTMLIFrameElement,\r\n public target?: string\r\n ) {}\r\n}\r\n\r\nexport class SetIframeReady implements Payload {\r\n public readonly type = MutationTypes.SetIframeReady;\r\n constructor(public iframeBridgeTarget: IframeBridgeTarget) {}\r\n}\r\n\r\nexport class SetIframeBridgeReady implements Payload {\r\n public readonly type = MutationTypes.SetIframeBridgeReady;\r\n constructor(public iframeBridgeTarget: IframeBridgeTarget) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.SetIframeBridge]: SetIframeBridge;\r\n [MutationTypes.SetIframeReady]: SetIframeReady;\r\n [MutationTypes.SetIframeBridgeReady]: SetIframeBridgeReady;\r\n}\r\n","export interface AxShareProject {\r\n iframeBridgeProps: Partial>;\r\n}\r\n\r\nexport interface IframeBridgeProps {\r\n iframe?: HTMLIFrameElement;\r\n iframeTargetOrigin?: string;\r\n iframeReady: boolean;\r\n iframeBridgeReady: boolean;\r\n}\r\n\r\nexport const enum IframeBridgeTarget {\r\n Inspect = \"inspect\",\r\n Preview = \"preview\",\r\n}\r\n\r\nexport function EmptyIframeBridgeProp(): IframeBridgeProps {\r\n return {\r\n iframe: undefined,\r\n iframeTargetOrigin: undefined,\r\n iframeReady: false,\r\n iframeBridgeReady: false,\r\n };\r\n}\r\n\r\nconst state = (): AxShareProject => ({\r\n iframeBridgeProps: {},\r\n});\r\n\r\nexport default state;\r\n","import { Payload } from \"vuex\";\r\n\r\nimport { PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum MutationTypes {\r\n SetShowAllWorkspaces = \"[Admin] Set Show All Workspaces\",\r\n SetSavedWorkspaceId = \"[Settings] Set Saved Workspace Id\",\r\n SetShowArchived = \"[Admin] Set Show Archived\",\r\n}\r\n\r\nexport class SetShowAllWorkspaces implements Payload {\r\n public readonly type = MutationTypes.SetShowAllWorkspaces;\r\n constructor(public show: boolean = false) {}\r\n}\r\n\r\nexport class SetSavedWorkspaceId implements Payload {\r\n public readonly type = MutationTypes.SetSavedWorkspaceId;\r\n constructor(public id?: string) {}\r\n}\r\n\r\nexport class SetShowArchived implements Payload {\r\n public readonly type = MutationTypes.SetShowArchived;\r\n constructor(public show: boolean = false) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.SetShowAllWorkspaces]: SetShowAllWorkspaces;\r\n [MutationTypes.SetSavedWorkspaceId]: SetSavedWorkspaceId;\r\n [MutationTypes.SetShowArchived]: SetShowArchived;\r\n}\r\n","import { Payload, PayloadMap } from \"@/store/typed\";\r\nimport { ArtboardUploadBatchSource, ArtboardUploadStatus } from \"@/store/uploads/state\";\r\n\r\nexport enum MutationTypes {\r\n NewUpload = \"[Artboard Uploads] New Upload\",\r\n DismissUpload = \"[Artboard Uploads] Dismiss Upload\",\r\n AddToBatch = \"[Artboard Uploads] Add To Batch\",\r\n RemoveFromBatch = \"[Artboard Uploads] Remove From Batch\",\r\n UpdateProgress = \"[Artboard Uploads] Update Upload\",\r\n UploadSuccess = \"[Artboard Uploads] Upload Success\",\r\n UploadCancel = \"[Artboard Uploads] Upload Cancel\",\r\n UploadError = \"[Artboard Uploads] Upload Error\",\r\n}\r\n\r\nexport class NewUpload implements Payload {\r\n public readonly type = MutationTypes.NewUpload;\r\n constructor(\r\n public uploadData: {\r\n source: ArtboardUploadBatchSource;\r\n batchId: string;\r\n shortcut: string;\r\n projectName: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class DismissUpload implements Payload {\r\n public readonly type = MutationTypes.DismissUpload;\r\n constructor(public batchId: string) {}\r\n}\r\n\r\nexport class AddToBatch implements Payload {\r\n public readonly type = MutationTypes.AddToBatch;\r\n constructor(\r\n public uploadData: {\r\n batchId: string;\r\n shortcut: string;\r\n artboardId: string;\r\n artboardName: string;\r\n cancel?(): Promise;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class RemoveFromBatch implements Payload {\r\n public readonly type = MutationTypes.RemoveFromBatch;\r\n constructor(public batchId: string, public artboardId: string) {}\r\n}\r\n\r\nexport class UpdateProgress implements Payload {\r\n public readonly type = MutationTypes.UpdateProgress;\r\n constructor(\r\n public uploadData: {\r\n batchId: string;\r\n shortcut: string;\r\n artboardId: string;\r\n progress: number;\r\n status?: ArtboardUploadStatus;\r\n cancel?(): Promise;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class UploadSuccess implements Payload {\r\n public readonly type = MutationTypes.UploadSuccess;\r\n constructor(\r\n public uploadData: {\r\n batchId: string;\r\n shortcut: string;\r\n artboardId: string;\r\n serverArtboardId: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class UploadCancel implements Payload {\r\n public readonly type = MutationTypes.UploadCancel;\r\n constructor(\r\n public uploadData: {\r\n batchId: string;\r\n shortcut: string;\r\n artboardId: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class UploadError implements Payload {\r\n public readonly type = MutationTypes.UploadError;\r\n constructor(\r\n public uploadData: {\r\n batchId: string;\r\n shortcut: string;\r\n artboardId: string;\r\n errorMessage: string;\r\n }\r\n ) {}\r\n}\r\n\r\nexport interface MutationPayloadMap extends PayloadMap {\r\n [MutationTypes.NewUpload]: NewUpload;\r\n [MutationTypes.DismissUpload]: DismissUpload;\r\n [MutationTypes.AddToBatch]: AddToBatch;\r\n [MutationTypes.UpdateProgress]: UpdateProgress;\r\n [MutationTypes.UploadCancel]: UploadCancel;\r\n [MutationTypes.UploadError]: UploadError;\r\n [MutationTypes.UploadSuccess]: UploadSuccess;\r\n [MutationTypes.RemoveFromBatch]: RemoveFromBatch;\r\n}\r\n","export interface ArtboardUploadBatch {\r\n id: string;\r\n shortcut: string;\r\n projectName: string;\r\n created: Date;\r\n contents: Record;\r\n dismissed: boolean;\r\n source: ArtboardUploadBatchSource;\r\n}\r\n\r\nexport enum ArtboardUploadBatchSource {\r\n Web,\r\n Desktop,\r\n}\r\n\r\nexport enum ArtboardUploadStatus {\r\n NotStarted,\r\n Exporting,\r\n InProgress,\r\n Success,\r\n Error,\r\n Canceled,\r\n}\r\n\r\nexport const ArtboardUploadStatusCompleted = [\r\n ArtboardUploadStatus.Success,\r\n ArtboardUploadStatus.Error,\r\n ArtboardUploadStatus.Canceled,\r\n];\r\n\r\nexport interface ArtboardUploadInfo {\r\n id: string;\r\n shortcut: string;\r\n name: string;\r\n status: ArtboardUploadStatus;\r\n progress: number;\r\n serverArtboardId: string;\r\n cancel?(): Promise;\r\n errorMessage?: string;\r\n}\r\n\r\nexport interface AxShareUploads {\r\n batches: Record;\r\n}\r\n\r\nconst state = (): AxShareUploads => ({\r\n batches: {},\r\n});\r\n\r\nexport default state;\r\n","import { ChangeAccountInfoModel } from \"@/services/models/account\";\r\nimport { Payload, PayloadMap } from \"@/store/typed\";\r\n\r\nexport enum ActionTypes {\r\n GetUserInfo = \"[User] Get Info\",\r\n GetUserProfile = \"[User] Get Profile\",\r\n ChangeAccountInfo = \"[User] Change Account Info\",\r\n SetUserTimeZone = \"[User] Set Time Zone\",\r\n}\r\n\r\nexport class GetUserInfo implements Payload {\r\n public static readonly type = ActionTypes.GetUserInfo;\r\n public readonly type = GetUserInfo.type;\r\n}\r\n\r\nexport class GetUserProfile implements Payload {\r\n public static readonly type = ActionTypes.GetUserProfile;\r\n public readonly type = GetUserProfile.type;\r\n}\r\n\r\nexport class ChangeAccountInfo implements Payload {\r\n public static readonly type = ActionTypes.ChangeAccountInfo;\r\n public readonly type = ChangeAccountInfo.type;\r\n constructor(public model: ChangeAccountInfoModel) { }\r\n}\r\n\r\nexport class SetUserTimeZone implements Payload {\r\n public static readonly type = ActionTypes.SetUserTimeZone;\r\n public readonly type = SetUserTimeZone.type;\r\n constructor(public timeZone?: string) { }\r\n}\r\n\r\nexport interface ActionPayloadMap extends PayloadMap {\r\n [ActionTypes.GetUserInfo]: GetUserInfo;\r\n [ActionTypes.GetUserProfile]: GetUserProfile;\r\n [ActionTypes.ChangeAccountInfo]: ChangeAccountInfo;\r\n [ActionTypes.SetUserTimeZone]: SetUserTimeZone;\r\n}\r\n","var map = {\n\t\"./add-screens-active.svg\": 12570,\n\t\"./add-screens.svg\": 89940,\n\t\"./add-user.svg\": 53101,\n\t\"./add-workspace.svg\": 18184,\n\t\"./add.svg\": 74567,\n\t\"./archive.svg\": 56384,\n\t\"./arrow.svg\": 967,\n\t\"./artboard.svg\": 82130,\n\t\"./asc.svg\": 27351,\n\t\"./avatars/bear.svg\": 49057,\n\t\"./avatars/fox.svg\": 75632,\n\t\"./avatars/kangaroo.svg\": 35065,\n\t\"./avatars/lion.svg\": 47079,\n\t\"./avatars/octopus.svg\": 78723,\n\t\"./avatars/rabbit.svg\": 25509,\n\t\"./avatars/ram.svg\": 94006,\n\t\"./avatars/seahorse.svg\": 27285,\n\t\"./avatars/swan.svg\": 71534,\n\t\"./avatars/toucan.svg\": 67359,\n\t\"./axure-cloud-logo.svg\": 24606,\n\t\"./axure-logo.svg\": 87103,\n\t\"./axure-rp-logo.svg\": 19357,\n\t\"./axure_page.svg\": 71955,\n\t\"./axure_page_overview.svg\": 22979,\n\t\"./baloon.svg\": 83863,\n\t\"./bell.svg\": 80024,\n\t\"./business.svg\": 83917,\n\t\"./cactus.svg\": 51184,\n\t\"./camera.svg\": 69382,\n\t\"./caret.svg\": 50466,\n\t\"./checkmark-circle.svg\": 15323,\n\t\"./checkmark.svg\": 48133,\n\t\"./chrome-close.svg\": 82370,\n\t\"./chrome-maximize.svg\": 95462,\n\t\"./chrome-minimize.svg\": 57538,\n\t\"./chrome-restore.svg\": 59898,\n\t\"./close.svg\": 26847,\n\t\"./cloud.svg\": 2093,\n\t\"./collapse.svg\": 57846,\n\t\"./compass.svg\": 72988,\n\t\"./copy-link-flipped.svg\": 7421,\n\t\"./copy-link.svg\": 53217,\n\t\"./copy.svg\": 18104,\n\t\"./delete.svg\": 12166,\n\t\"./discussion.svg\": 58347,\n\t\"./document.svg\": 8545,\n\t\"./dot.svg\": 96212,\n\t\"./download.svg\": 55398,\n\t\"./dsc.svg\": 53395,\n\t\"./edit.svg\": 47589,\n\t\"./emojis-activity.svg\": 78863,\n\t\"./emojis-flags.svg\": 86772,\n\t\"./emojis-foods.svg\": 22107,\n\t\"./emojis-frequent.svg\": 25949,\n\t\"./emojis-nature.svg\": 30178,\n\t\"./emojis-objects.svg\": 31930,\n\t\"./emojis-people.svg\": 32491,\n\t\"./emojis-places.svg\": 27733,\n\t\"./emojis-symbols.svg\": 81433,\n\t\"./exclamation-circle.svg\": 45084,\n\t\"./expo-empty-state.svg\": 91621,\n\t\"./eye.svg\": 9911,\n\t\"./figmaapp.svg\": 33252,\n\t\"./filter.svg\": 55722,\n\t\"./filter_off.svg\": 43659,\n\t\"./filter_on.svg\": 79990,\n\t\"./folder.svg\": 11351,\n\t\"./gear.svg\": 16127,\n\t\"./grid.svg\": 30829,\n\t\"./help.svg\": 5612,\n\t\"./home.svg\": 39555,\n\t\"./imageapp.svg\": 43996,\n\t\"./images.svg\": 27516,\n\t\"./info.svg\": 91203,\n\t\"./interaction.svg\": 24430,\n\t\"./jira-close.svg\": 38483,\n\t\"./jira-edit.svg\": 78399,\n\t\"./jira-expand.svg\": 67877,\n\t\"./jira-open.svg\": 63725,\n\t\"./list.svg\": 95040,\n\t\"./lock.svg\": 90570,\n\t\"./masters-empty-state.svg\": 17698,\n\t\"./mention.svg\": 1972,\n\t\"./menu.svg\": 67230,\n\t\"./my-projects.svg\": 83845,\n\t\"./not-shared.svg\": 47509,\n\t\"./notes.svg\": 96039,\n\t\"./overflow-vertical.svg\": 44924,\n\t\"./overflow.svg\": 73387,\n\t\"./plus.svg\": 59156,\n\t\"./pointer.svg\": 77657,\n\t\"./project-error.svg\": 29959,\n\t\"./project-library-10-lg.svg\": 38442,\n\t\"./project-library-10-sm.svg\": 33765,\n\t\"./project-library-6-lg.svg\": 87517,\n\t\"./project-library-6-sm.svg\": 5979,\n\t\"./project-library-7-lg.svg\": 38374,\n\t\"./project-library-7-sm.svg\": 58660,\n\t\"./project-library-8-lg.svg\": 32167,\n\t\"./project-library-8-sm.svg\": 22058,\n\t\"./project-library-9-lg.svg\": 64477,\n\t\"./project-library-9-sm.svg\": 76683,\n\t\"./project-library-lg.svg\": 16753,\n\t\"./project-library-sm.svg\": 48523,\n\t\"./project-rp-10-lg.svg\": 83555,\n\t\"./project-rp-10-sm.svg\": 73134,\n\t\"./project-rp-6-lg.svg\": 87314,\n\t\"./project-rp-6-sm.svg\": 74178,\n\t\"./project-rp-7-lg.svg\": 65484,\n\t\"./project-rp-7-sm.svg\": 54582,\n\t\"./project-rp-8-lg.svg\": 85187,\n\t\"./project-rp-8-sm.svg\": 33494,\n\t\"./project-rp-9-lg.svg\": 63856,\n\t\"./project-rp-9-sm.svg\": 12194,\n\t\"./project-rp-lg.svg\": 43262,\n\t\"./project-rp-sm.svg\": 883,\n\t\"./project-rp8.svg\": 63502,\n\t\"./project-teamlib-10-lg.svg\": 62739,\n\t\"./project-teamlib-10-sm.svg\": 51633,\n\t\"./project-teamlib-6-lg.svg\": 26520,\n\t\"./project-teamlib-6-sm.svg\": 49220,\n\t\"./project-teamlib-7-lg.svg\": 12822,\n\t\"./project-teamlib-7-sm.svg\": 31292,\n\t\"./project-teamlib-8-lg.svg\": 36049,\n\t\"./project-teamlib-8-sm.svg\": 93243,\n\t\"./project-teamlib-9-lg.svg\": 50605,\n\t\"./project-teamlib-9-sm.svg\": 60271,\n\t\"./project-teamlib-lg.svg\": 40775,\n\t\"./project-teamlib-sm.svg\": 42176,\n\t\"./project-teamrp-10-lg.svg\": 66620,\n\t\"./project-teamrp-10-sm.svg\": 81678,\n\t\"./project-teamrp-6-lg.svg\": 35350,\n\t\"./project-teamrp-6-sm.svg\": 34186,\n\t\"./project-teamrp-7-lg.svg\": 21055,\n\t\"./project-teamrp-7-sm.svg\": 76340,\n\t\"./project-teamrp-8-lg.svg\": 41334,\n\t\"./project-teamrp-8-sm.svg\": 41799,\n\t\"./project-teamrp-9-lg.svg\": 41570,\n\t\"./project-teamrp-9-sm.svg\": 70510,\n\t\"./project-teamrp-lg.svg\": 7931,\n\t\"./project-teamrp-sm.svg\": 99832,\n\t\"./recents.svg\": 96452,\n\t\"./remove.svg\": 78028,\n\t\"./rulers.svg\": 86458,\n\t\"./scrubber-active.svg\": 86900,\n\t\"./scrubber.svg\": 97265,\n\t\"./search.svg\": 39045,\n\t\"./settings-lg.svg\": 85919,\n\t\"./settings-sm.svg\": 27921,\n\t\"./settings.svg\": 50791,\n\t\"./share-logo.svg\": 12776,\n\t\"./share.svg\": 641,\n\t\"./shield.svg\": 82209,\n\t\"./sitemap-panel.svg\": 67083,\n\t\"./sketch-project-logo.svg\": 51529,\n\t\"./sketchapp-square.svg\": 71541,\n\t\"./sketchapp.svg\": 54393,\n\t\"./smiley-face.svg\": 63464,\n\t\"./star-outlined.svg\": 38033,\n\t\"./star.svg\": 7579,\n\t\"./trashcan.svg\": 71768,\n\t\"./uncollapse.svg\": 55274,\n\t\"./unsorted.svg\": 95466,\n\t\"./uploading-cancel.svg\": 40880,\n\t\"./uploading-completed.svg\": 49360,\n\t\"./users.svg\": 6187,\n\t\"./woman-with-binoculars.svg\": 65075,\n\t\"./workspace.svg\": 53713,\n\t\"./wrench.svg\": 18677,\n\t\"./xdapp.svg\": 78301\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 92498;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + ({\"220\":\"expo\",\"242\":\"project\",\"328\":\"admin\",\"350\":\"setup\",\"368\":\"expo-editor\",\"529\":\"project-configure-redirects\",\"537\":\"project-configure-plugins\",\"578\":\"project-configure-pretty-urls\",\"859\":\"project-configure\",\"880\":\"enterprise\"}[chunkId] || chunkId) + \".\" + {\"14\":\"eedb5750\",\"19\":\"95e9105f\",\"35\":\"a215094b\",\"113\":\"824b8d4f\",\"142\":\"6058cd2e\",\"220\":\"87ff7533\",\"229\":\"330ba6ff\",\"242\":\"f8161e78\",\"328\":\"76525fa4\",\"350\":\"55f2147d\",\"368\":\"dbd599b7\",\"382\":\"2070f2b6\",\"399\":\"df013b74\",\"434\":\"c9adb417\",\"441\":\"279e5733\",\"458\":\"e743b3a5\",\"473\":\"5178d1bc\",\"478\":\"0860e0cc\",\"522\":\"4e3d59d0\",\"529\":\"e6ec7376\",\"537\":\"5dd9bee8\",\"578\":\"d29f4683\",\"605\":\"c81bf7fa\",\"607\":\"3c5562cc\",\"645\":\"f05c266c\",\"758\":\"98b9399e\",\"794\":\"aee97cb5\",\"859\":\"6ee7367b\",\"865\":\"8875fd4d\",\"880\":\"e613d082\",\"917\":\"aa0a582f\",\"922\":\"8dce014f\",\"934\":\"9f978530\",\"955\":\"716f011c\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + ({\"220\":\"expo\",\"242\":\"project\",\"328\":\"admin\",\"350\":\"setup\",\"368\":\"expo-editor\",\"529\":\"project-configure-redirects\",\"537\":\"project-configure-plugins\",\"578\":\"project-configure-pretty-urls\",\"859\":\"project-configure\",\"880\":\"enterprise\"}[chunkId] || chunkId) + \".\" + {\"220\":\"afc2d814\",\"229\":\"d3548c09\",\"242\":\"2d3dc60c\",\"328\":\"dd3e71dd\",\"350\":\"8396bda8\",\"368\":\"958a2f76\",\"399\":\"67a39289\",\"434\":\"af162e97\",\"441\":\"dbf967d0\",\"458\":\"3f2caf8e\",\"473\":\"573f7e99\",\"478\":\"9df9b07a\",\"529\":\"7abc267b\",\"537\":\"40bcc23f\",\"578\":\"6beae4e5\",\"605\":\"82e7a6ff\",\"607\":\"5d37c109\",\"645\":\"44608b6d\",\"758\":\"7fe6717c\",\"794\":\"abc9a8ce\",\"859\":\"467c0a0e\",\"865\":\"37bb5559\",\"880\":\"6b04b2c7\",\"922\":\"d8611711\",\"934\":\"cda9a914\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"axure-cloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/app/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"220\":1,\"229\":1,\"242\":1,\"328\":1,\"350\":1,\"368\":1,\"399\":1,\"434\":1,\"441\":1,\"458\":1,\"473\":1,\"478\":1,\"529\":1,\"537\":1,\"578\":1,\"605\":1,\"607\":1,\"645\":1,\"758\":1,\"794\":1,\"859\":1,\"865\":1,\"880\":1,\"922\":1,\"934\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(478|605)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkaxure_cloud\"] = self[\"webpackChunkaxure_cloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(56606); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","_setupProxy","staticClass","logoRoute","attrs","_t","staticRenderFns","Vue","components","AxIcon","AxAxureLogo","props","type","Object","String","required","default","undefined","component","OTHER_SIZES","SIZE_PROPS","large","Boolean","medium","small","tiny","tag","circle","disabled","loading","color","to","exactActiveClass","activeClass","noActiveClass","blurOnClick","append","replace","exact","href","target","block","uppercase","wrap","rounded","lifted","highlighted","icon","computed","classes","otherSizeIsSet","some","size","methods","click","e","$emit","blur","button","getButton","focus","$refs","HTMLElement","$el","h","data","ref","class","$listeners","path","assign","children","$scopedSlots","functional","stacked","noWrap","ctx","mergeData","slots","submit","model","scopedSlots","_u","key","fn","values","handleSubmit","submitting","_v","isSubInstance","placeholder","on","select","value","owner","callback","$$v","expression","buttonColor","$event","preventDefault","apply","arguments","_s","buttonValue","workspaceProp","workspace","AxButton","AxForm","AxFormGroup","AxManageUsersSelect","AxInput","users","axShareConfig","$store","state","IsSubInstance","currentUser","user","isSubInstanceAuthor","getters","async","init","isOwner","ownerEmail","userInfo","filteredUsers","accounts","getSubinstanceAccounts","Items","filter","item","IsDeactivated","Email","userEmail","Level","AccessLevels","map","getUser","account","userId","Id","nickname","Nickname","dispatch","UpdateFilesystemOwner","id","Fetch","deactivate","text","inputClass","indeterminate","readonly","isDisabled","createInputElement","domProps","checked","change","event","$createElement","createLabelElement","label","cssClass","createProps","genItem","node","inputTypes","checkbox","radio","items","arrayProp","itemValueProp","itemTextProp","itemDisabledProp","horizontal","multiple","Number","Array","name","inputName","createUniqueTag","itemClass","selected","getObjectValueByPath","itemValue","isSelected","toggle","push","removeAll","s","includes","index","itemText","genItems","forBusiness","errors","existingMembersInWorkspace","editMode","remove","changeAccessLevel","proxy","headers","usersList","profile","hasPendingInvitations","invitationAccepted","_e","canChangeAccessLevel","isViewerAccount","accessLevelName","isViewer","stopPropagation","usersProp","AxDataTable","AxDropdownButton","AxList","AxListItem","AxUser","AxTooltip","width","splice","length","currentUserInfo","u","isAdmin","getAccessLevelName","ordered","orderBy","descending","viewOnly","AxManageUsersTable","mixins","workspaceMembersMixin","persistent","dialog","subInstanceAccounts","workspaceMembers","sharedWith","userOnly","httpsOnly","invited","invitedUserIds","getProfile","getLevel","$router","fsRouterLocation","$route","params","Name","Bio","bio","Img","profileImageUrl","find","usersRemove","usersToRemove","filesystemId","removeAllUsers","unshareFileSystem","error","asError","message","findIndex","setReviewerOnly","viewerUsers","configureSecurity","FilesystemId","setSecurityPrefs","isUserOnlyModified","setUserOnly","cancel","cancelHandler","submitHandler","title","submitText","AxDialog","AxButtonGroup","Function","noop","_b","copy","buttonOptions","copyButtonText","delay","buttonText","buttonTextCopied","wrapper","copyToClipboard","copyTextToClipboard","sorting","rowsPerPageItems","itemKey","headerText","selectColumn","selectAll","customSort","objectsSort","fixedHeader","fixedActionsHeader","fixedHeaderStyles","pagination","totalItems","disableInitialSort","hideActionsFooter","hideHeaders","responsive","transitionItems","defaultPagination","page","rowsPerPage","sortBy","computedPagination","hasPagination","keys","filteredItems","filteredItemsImpl","headerColumns","hasSelectAll","hasSelectColumn","tableClasses","everyItem","every","i","someItems","itemsLength","getPage","pageStart","pageStop","created","firstSortable","sortable","initPagination","sort","updatePagination","rowsDefault","console","warn","val","updatedPagination","slice","genTHead","row","o","genHeader","AxDataTableCellCheckbox","input","unshift","genTR","style","genTProgress","col","colspan","genProgress","progress","genProgressDefault","progressBar","header","array","headerCell","genHeaderData","scope","genHeaderStyles","genHeaderSortingData","styles","headerWidthStyles","flexBasis","flexGrow","tabIndex","keydown","spaceKeyCode","keyCode","isSorted","sorter","genSorter","AxSorter","genTBody","genTFoot","footer","hasTag","genActionsHeader","actionsHeader","genActionsFooter","genPagination","genPrevBtn","genNextBtn","stop","pageText","noData","genEmptyItems","genFilteredItems","rows","len","setTdStyles","getKey","setRowTdStyles","isArray","r","totalHeaders","cellOffset","cell","headerStyles","keyProp","defineProperty","get","set","content","elements","filteredItem","table","AxCactus","subTitle","border","pot","defaults","dateFormat","dateTimeFormat","timeAfterDateFormat","tooltipFormat","componentProps","Date","format","time","timeAfterDate","relative","distance","strict","addSuffix","context","date","normalize","formatters","determineFormatters","tooltip","formatRelative","formatDistanceFn","formatDistanceStrict","formatDistance","nodeData","innerHTML","convertToDate","isValid","jsDateFromAspDateString","AxDialogManager","modals","baseZIndex","watch","newVal","_oldVal","updateModals","registerModal","modal","indexOf","$once","unregisterModal","_isBeingDestroyed","_isDestroyed","resetModal","getBaseZIndex","forEach","zIndex","isTop","validateAttachTarget","nodeType","Node","ELEMENT_NODE","getZIndex","el","window","getComputedStyle","getPropertyValue","isNaN","parentNode","directives","clickAway","attach","validator","lazy","hideOverlay","fullscreen","transition","disableClickAway","dialogClass","contentClass","wrapperClass","hidden","isActive","isBooted","hasDetached","stackMinZIndex","stackClass","overlay","overlayTimeout","overlayTransitionDuration","dialogManager","return_focus","ignoreClickAway","activeZIndex","getMaxZIndex","hasContent","absolute","trim","contentClasses","wrapperClasses","show","removeOverlay","focusDialog","mounted","initDetach","deactivated","beforeDestroy","setEnforceFocus","removeChild","log","document","activeElement","genOverlay","onDialogMousedown","onceModalMouseup","evt","removeEventListener","contains","addEventListener","closeConditional","close","showLazyContent","genCloseButton","closeIcon","rotate","closeHint","clearTimeout","classList","add","createElement","className","parent","querySelector","insertBefore","firstChild","clientHeight","requestAnimationFrame","display","afterOverlayTransitioned","setTimeout","genDialog","mousedown","lazyContent","exclude","base","zis","activeElements","getElementsByClassName","Math","max","genContent","handler","enabled","focusHandler","returnFocusTo","onAfterEnter","onAfterLeave","appear","enter","afterEnter","afterLeave","right","left","top","bottom","middle","skidding","closeOnContentClick","controlManually","scrollToIndex","nativeStyled","itemHeight","activatorRef","useActivatorWidth","strategy","arrow","dropMaxHeight","menuToggled","activate","activator","active","untabbable","onActivatorClicked","dropdownActive","AxMenu","toggleCallback","prop","menuOpened","submitForm","editableStyles","submitOnBlur","_k","$set","form","AxFormErrors","original","editableHeight","editableWidth","height","newValue","saveDimensions","$nextTick","editableElement","editable","getBoundingClientRect","uploaderClasses","acceptedFile","addedFile","_l","acceptedFiles","file","vTransmitOptions","triggerBrowse","scopeProps","defaultOptions","paramName","url","autoProcessQueue","uploadMultiple","clickable","maxFiles","autoQueue","options","maxFilesReached","removeFile","uploader","triggerBrowseFiles","rawName","workspaces","workspaceItem","folders","folderItem","shortcuts","shortcut","itemsProp","AxConfirmDialog","folder","FilesystemNodeType","onlyWorkspaces","result","deleteItems","success","NodeRemove","Folder","Shortcut","AxFolder","AxProjectThumbnail","AxNavigationLinkFs","isSelectCheckboxEnabled","dataTablePagination","selectionChanged","emptyState","itemNavigationDisabled","navigateToItem","getFolderModifiedDate","getFolderModifiedOnShortcut","hasUnreadPublishNotesMentions","showShortcutDropdown","clearSelection","isViewOnly","createFolderRoute","createProjectRoute","dataTableParams","canMove","moving","canDelete","deleting","shortcutActionsOptions","canCreate","AnalyticsClickEvents","NewProject","eventClass","NewFolder","ROUTES","AxFilesystemNodeCreate","AxShortcutFilesystemActions","getNodeOptions","current","move","moveSubmit","moveCancel","delete","deleteSubmit","deleteCancel","clone","rename","upload","folderId","refresh","AxDataTableNoData","AxFilesystemNodeLink","AxShortcutCommentsCount","AxShortcutDropdownButton","AxShortcutModified","AxShortcutPublicLink","AxUnreadMentionsIndicator","AxFilesystemNodesActions","selectDisabled","headerOffsetTop","paginationDisabled","selection","deleted","isNavigatableTarget","validNavigationTargets","validTarget","equalsIgnoringCase","nodeName","listingNode","mentionsCount","getUnreadPublishNotesMentions","NotificationState","navigateToShortcutOverview","isShortcutSearchNode","getFsNode","isFilesystemFolderNode","toJsDate","ModifiedOn","Value","isExpanded","inputFilter","tree","isWorkspace","isFolder","isProject","State","Type","ResourceDirVersion","getOwnerDescription","itemProp","AxTreeNodeProps","activatable","selectable","openOnClick","inject","treeview","isOpen","isIndeterminate","genChild","$options","genNode","genCheckbox","genToggle","tabindex","open","genLabel","slot","genChildrenWrapper","updateOpen","emitOpen","updateActive","emitActive","updateSelected","emitSelected","activeItems","selectedItems","openItems","AxTreeNode","provide","openAll","multipleActive","nodes","selectedCache","activeCache","openedCache","indeterminateItems","initTree","refreshOpen","buildTree","oldNode","hasOwnProperty","calculateState","counts","reduce","acc","child","changed","descendants","getDescendants","descendant","parents","getParents","entries","kv","k","v","allProjects","AxTree","AxWorkspaceIcon","showAll","renderDefaultAllItem","workspacesOnly","fsEntries","workspacesRoot","selectedName","generateWorkspaceNode","n","userIsOwner","explicitlyJoined","generate","filterItems","targetType","EntryType","getUserDirectoryTree","getUserFsEntryTree","hasChildren","shortcutId","folderName","sortDirectoryTree","getUserName","itemName","treeItems","itemsToDelete","visible","toLowerCase","delItem","delIndex","actions","actionsComponent","AxFilesystemViewerActionsBase","rights","folderRename","renameSubmit","AxEditable","FolderRename","isDefaultWorkspace","shared","workspaceRename","rootFolderId","usersInvite","userInviteRoute","anyManageUserAction","onClickAway","toggleMenuBtn","closeMenu","workspaceJoin","joining","securityConfigure","changeOwner","userLeave","workspaceLeave","workspaceArchive","archiving","archiveText","workspaceDelete","isLimitAccessAvailable","limitAccessChanged","deletingWorkspace","changingOwnerWorkspace","onOwnerChanged","joiningWorkspace","joinCancel","archivingWorkspace","archiveSubmit","archiveCancel","isArchived","isWorkspaceNode","_","WorkspaceArchive","usersJoin","userEmails","viewerOnly","shareFileSystem","AxFilesystemNodeDelete","AxSharedWithWorkspace","AxChangeOwner","AxManageUsersJoin","AxHelp","AxToggleButton","AxFilesystemArchive","inputClasses","isDefault","workspaceRights","isOnPrem","AxShareOnPrem","WorkspacesRefresh","_openedMenu","defaultWorkspace","WorkspaceRename","AxFilesystemViewerActions","AxFilesystemViewerActionsFolder","AxFilesystemViewerActionsWorkspace","errorsInner","validationResult","hideErrors","errorsOptions","submitValues","DefaultValidator","Validator","defaultValidator","validatorProp","clearErrorsOnSumbit","errorsColor","deepCopy","validate","newForm","deep","errorMessage","DbConnectionError","JsonSettingsLoadError","errorStyle","messages","w","listeners","translateY","rotation","transform","innerIcon","classBinding","isIE","require","autocomplete","disableLabel","keepPlaceholder","autofocus","preventPasswordManager","cursor","textarea","resize","cols","classAppend","classPrepend","alignRight","blurOnEsc","empty","onFocus","onInput","currentTarget","onBlur","genAttrs","$attrs","genTextAreaAttrs","genNameAttrs","genStyles","genTextAreaStyles","textAreaAttrs","nameAttrs","textAreaStyles","genInputTextareaTag","genAddon","addon","addonClass","addonSlot","addonData","addonContent","dataLabel","dataInput","keyup","isKeyboardKey","prepend","dataSpanLabel","validators","submitKeys","separators","disableAddOnBlur","onValidationError","selectLast","onAdd","onBeforePaste","onAfterPaste","tags","emails","removeTag","inputAttrs","inputEvents","clearNewTag","focusInput","email","removeViaKeyboard","nativeOn","selectPrevious","selectNext","onRemove","_g","onInputStarted","innerValue","validationSuccess","UniqueValidator","PropertyValidator","constructor","super","withCollection","obj","collectionAccessor","instance","propertyValue","getErrorMessage","TagsValidator","allowDuplicates","newTagValidators","ruleFor","x","newTag","setValidator","innerValidator","freeze","firstTag","lastTag","addTag","clearValidation","t","updateValueFromEvent","HTMLInputElement","tryHandleAdd","shouldPrevent","submitKey","tryHandleRemove","clipboardData","pastedText","getData","multiSplit","selectionStart","isApple","metaKey","ctrlKey","handled","paste","handleClipboardEvent","finally","emailRegex","EmailValidator","test","AxChip","AxTags","inputStarted","extraValidators","emailIndex","inner","previous","next","last","collapsible","invisible","dividerTop","dividerBottom","validationErrors","usersLoaded","em","usersSelect","inputEmails","clearErrors","onError","forceAction","inviteMessage","onMessageInput","formLoading","updateUsers","existingMembersCount","existingUsersTitle","sitekey","isMessageEmpty","onCaptchaReadyChanging","submitAction","showBadge","captchaLoaded","recaptchaScriptId","appendRecaptchaScript","oldScript","getElementById","head","script","src","defer","appendChild","removeRecaptchaScripts","grecaptcha","recaptcha","querySelectorAll","a","parentElement","gAssignedId","beforeMount","execute","reset","recaptchaToken","checkInterval","setInterval","prototype","call","clearInterval","StringListValidator","list","invert","createListValidator","AxConfigureWorkspaceSecurity","AxInputEmails","AxReCaptcha","customSubmit","inviteModel","ManageUsersInviteModelValidator","captchaReady","pasting","GoogleReCaptchaSiteKey","useReCaptcha","filteredAccounts","canBeInvitedUsers","sharedUsers","allUsers","concat","userProfile","join","ignoreAccepted","ignorePending","shareOrInviteToFileSystem","ready","pointerForward","pointerBackward","addPointerElement","searchQuery","filteredOptions","option","optionHighlight","isInvited","pointerSet","searchFields","Map","searchEngine","Search","pointer","optionHeight","initSearch","doSearch","pointerPosition","pointerAdjust","listElement","scrollTop","highlight","pointerReset","inputElement","search","lastSelected","toString","include","onClickAwayInclude","contentClassComputed","contentStyleComputed","contentClick","sameWidth","popper","rects","reference","effect","rect","phase","requires","contentMaxHeight","maxHeight","placement","itemPosition","oldScrollPosition","offset","destroy","detach","Element","modifiers","preventOverflow","flip","createPopper","getAttribute","isElectron","breadcrumbs","shouldCollapse","Recents","recentsRoute","fsRootLocation","noRootItems","recentRouteName","query","AxNavigationBreadcrumbs","filesystemPath","isRecents","recentsNode","linkReady","fsLocation","urls","project","prototypeUrls","AxNavigationLinkPrototype","navigationNode","workspaceComputed","findWorkspace","workspaceId","backgroundColor","spinnerClasses","spinnerStyles","spinnerColor","short","randomAnimationDelay","random","animationDelay","fileAvailable","download","linkText","filename","isShortcutNode","TargetPrototypeFileName","fileOptions","uploadMessage","cancelUpload","accepted","getTypeFromFilename","uploadProgress","progressComputable","percentage","_f","total","progressProp","filters","fileSize","bytes","lengthComputable","completed","bytesInMegabyte","fileTypesToShortcutType","ShortcutType","imgFileTypes","AxFileUpload","AxProjectFileUploadIndicator","AxProjectIcon","isRpUploader","maxFileSize","MaxFileSize","acceptedFileTypes","acceptedFileTypeFormatted","formatArray","fileTooLargeMessage","fileIncorrectTypeMessage","fileSizeBase","uploadAreaClasses","dictFileTooBig","dictInvalidFileType","filesProps","fallback","extension","getFileExtension","reason","chooseBtn","uploading","uploadDestroy","uploadDestroyed","fileAccepted","fileError","currentUserId","currentUserToken","publishNote","AxProjectFilePicker","AxPublishNotes","uploadCanceled","canceler","accountService","AuthToken","clearUpload","enterpriseLicenseCheckFailed","prototypeInfo","fileData","PublishNoteRichText","JSON","stringify","changeProjectInfo","loaded","iconClasses","projectTypeIcons","projectProp","version","isRp6AndBelow","isRp7","isRp8","isRp9","isRp10","isRp9WithThumbnails","isRp6ProjectAndBelow","resourceDirVersion","shortcutState","isRp7Project","isRp8Project","isRp9Project","isRp9ProjectWithThumbnails","isRp10Project","canInviteUsers","shareDefaultWorkspaceProject","inviteUsersTitle","AxManageUsersInvite","ws","inviteUsers","newWorkspace","ProjectShare","FilesystemInfo","showDefaults","notGenerated","generating","generationFailed","generated","fetchUpdates","interval","pollingInterval","isDestroyed","ProjectLoad","_m","projectIdProp","projectStateProp","ShortcutStates","projectId","projectState","AxProjectLoader","AxProjectStateEmpty","AxProjectStateGenerating","AxProjectStateGenerationFailed","ShortcutState","isRp","shortcutType","projectResourceDirVersion","isSketch","typeProp","stretch","isRpProject","isRpProjectType","isSketchProject","isSketchProjectType","$props","AxReply","userToken","hubName","AxPushNotificationsBase","commentsChanged","payload","activityEvent","pushNotificationsService","compact","blurHandler","keyHandler","$$selectedVal","_value","optionsLoading","defaultOptionText","optionItems","getOptionKey","isOptionDisabled","getOptionValue","getOptionText","labelText","optionsProp","defaultValue","optionKey","optionValue","optionText","optionDisabled","resolveOptions","immediate","enterKeyCode","escKeyCode","stackInversed","stackExpandable","inversed","avatarSize","notStackedLength","stackLength","canInvite","inviteOthers","userInvite","notStacked","getUserNameOrEmail","avatarProps","remaining","inviteUsersButtonStyle","remainingItem","ps","$isServer","container","PerfectScrollbar","updated","update","$slots","AxUserAvatar","expandable","AxPerfectScrollbar","AxUserAvatarStack","from","sliced","reverse","fontSize","displayName","hideTitle","AxSharedWith","navigationDisabled","viewCommentsRoute","commentsClasses","commentsCountMessage","hasUnreadCommentsMentions","feedbackEnabled","NewCommentShortcutFeedbackEnabled","hasNewComments","HasNewComments","commentsMentionsCount","getUnreadCommentMentions","totalCount","TotalCommentsCount","NewCommentsCount","NewCommentShortcut","lazyLoadNode","canRename","renaming","canClone","cloning","canUpload","canDownload","AxProjectFileDownload","refreshDisabled","isUploadable","uploadableTypes","projectType","subtype","isDownloadable","downloadableTypes","isCloneable","cloneableTypes","cloneSubmit","cloneCancel","renameCancel","uploadSubmit","uploadCancel","NavigationRestore","FetchCurrent","cloneShortcut","selectedObj","AxFilesystemTreeProjects","AxWorkspacesToggleAll","moveItems","then","tasks","Promise","all","RenameFormValidator","notEmpty","withMessage","renameFormValidator","ProjectRename","AxFilesystemNodeClone","AxFilesystemNodeMove","AxFilesystemNodeRename","AxProjectFileUpload","full","openPrototypeLink","shortcutLinkMixin","historyTabRoute","modified","projectModifiedProp","AxProjectState","AxDate","projectModified","linkDisabled","urlFull","copyButton","prototypeUrlsProp","AxCopyToClipboard","AxShortcutLink","urlDisplay","isUserOnly","toggled","toggleColor","colorChecked","colorUnchecked","srcEvent","axTooltipIsShown","axTooltipUseTimeout","popperJsInstance","timeoutBeforeShowing","timeoutBeforeHiding","timeout","tooltipPlacement","tooltipClasses","persistOnHover","preventHiding","leaveTimeout","hideTooltip","targetFromReference","initShowTooltip","targetElement","onMouseLeave","initHideTooltip","showTooltip","fadein","Wormhole","passengers","tooltipElement","tooltipMessage","getPopupPlacementFromString","genTooltip","mouseenter","mouseleave","tooltipFromTitle","tooltipContent","arrowElement","assignTooltipEvents","tooltipEvents","oldData","onMouseEnter","showAvatar","profileImg","usernameClasses","showUsername","userName","showNotificationBadge","userProp","profileProp","isDefaultAvatar","emailName","profileImgResolved","iconName","iconsToLetter","octopus","rabbit","seahorse","fox","lion","swan","kangaroo","bear","ram","toucan","lettersToIcon","letters","letter","getIconName","memoizer","hash","simpleHash","fromCharCode","abs","firstLetter","charAt","isAnonymous","defaultIcon","AxUserAvatarDefault","forceDefault","isSsoResponse","trimEmailDomain","isSubInstanceAdmin","showAllWorkspaces","setShowAllWorkspaces","persist","local","settings","commit","SetShowAllWorkspaces","colorValue","dark","light","divider","contentDivider","description","isFullScreen","noLogo","copyright","getFullYear","AxAxureLogoRow","desktop","desktopParams","body","destroyed","trackEvent","NewProjectArtboard","NewProjectRP","Preview","Inspect","Build","UserProfile","AddAsset","AddHotspotConfirm","LogInEmailInput","LogInSubmitButton","SignUpEmailInput","SignUpSubmitButton","apiBaseUrl","accountServiceUrl","apiCallsCounter","dualDbDelay","ms","setApiBaseUrl","resolveApiBaseUrl","config","MatchProtocolMode","AxShareHostUrl","AxShareHostSecureUrl","isDesktopLocal","process","resolveAccountServiceHost","AccountServiceUrl","AccountServiceSecureUrl","getApiCallId","DEFAULT_WORKSPACE_NAME","PRETTY_URL_NOT_FOUND_PAGE_TEXT","PRETTY_URL_NOT_FOUND_PAGE","PRETTY_URL_ROOT_PAGE_TEXT","PRETTY_URL_ROOT_PAGE","Error","SignInReadOnlyError","ReadOnlyError","ApiExceptionError","exceptionId","sketchProjectTypes","rpProjectTypes","teamProjectTypes","revNumber","MinRP7Build","MinRP8Build","MinRP9Build","MinRP10Build","MinRP9BuildWithThumbnails","MinRP9HgRevWithThumbnails","MinRP10HgRev","isThumbnailSupportedProject","isPublicInspectSupportedProject","isTeamProject","isTeamProjectType","sketchType","rpType","prototypeUrl","baseUrl","frame","useFramedDomain","withPort","port","protocol","AxSitesFramedPrototypeDomain","stripProtocol","linkHandler","endpoint","isRelativeUrl","defaultPrevented","encodeURIComponent","prototypeLinkHandler","prototypeLinkHandlerNoAuth","preprocessNotificationName","workspaceName","projectName","notificationName","maxTextLength","halfTextLength","truncateText","truncatedText","substring","DESKTOP_APP_DOWNLOAD_MAC","DESKTOP_APP_DOWNLOAD_WINDOWS","DESKTOP_APP_DOWNLOAD_URL","SKETCH_PLUGIN_DOWNLOAD_URL","XD_PLUGIN_DOWNLOAD_URL","FIGMA_PLUGIN_DOWNLOAD_URL","FEEDBACK_URL","HELP_PAGE_URL","accountServiceUnavailable","NotificationErrorMessages","NotificationErrorType","PersistentStorage","store","getJson","parse","setJson","getLastVersion","lastVersionKey","setLastVersion","getApiVersionInfo","apiVersionInfoKey","setApiVersionInfo","getContinueWithOldBrowser","getBoolean","continueWithOldBrowserKey","setContinueWithOldBrowser","setBoolean","getDesktopNotificationsEnabled","desktopNotificationsEnabled","setDesktopNotificationsEnabled","WorkspacesMigrationAcknowledged","workspacesMigrationAcknowledged","storage","LocalStorage","persistentStorage","redirectParamName","wellKnownRoutes","home","uploadFromSketch","downloadingUpdatesProgress","proxylogin","login","isRoute","fullPath","makeUrl","bundleSuffix","removeDuplicateForwardSlashes","makeWebUrl","webSuffix","resolveRedirect","desktopUrl","location","decodeURIComponent","resolveAfterAuthRedirect","axShareHost","redirect","isAbsoluteUrl","isSameOrigin","testSameOrigin","resolved","InMemoryStorage","localStorage","getItem","setItem","removeItem","BrowserStorage","isSafari","hasName","hasUsername","username","hasEmail","PasswordValidationRule","password","PasswordValidator","useExtraRules","minLength","upperRegex","lowerRegex","numberRegex","errorMessages","rules","rule","filterWorkspacesUserIsMember","openExternal","ipc","AxureCloudNative","send","Main","isDevelopment","isProduction","serviceWorkerEnabled","commitHash","VUE_APP_COMMIT_HASH","isElectronRendererFn","navigator","userAgent","isElectronMainFn","versions","electron","isElectronRenderer","isElectronMain","isSavedAction","action","CreatedOn","isMasterAction","IsMaster","ShortcutStateEnum","Empty","GenerationFailed","Generating","Deleted","Ok","MentionSourceTypeEnum","MentionType","Issue","IssueComment","PublishNote","ProjectType","rp","sketch","image","getSharedUsers","fs","SharedUsers2","getInvitedUsers","InvitedUsers2","toWorkspaceNode","common","DisplayName","Workspace","IsDefaultFs","ViewerFs","Owner","OwnerSso","UserViewOnly","HttpsOnly","IsArchived","isFavorite","IsFavorite","toInvitationNode","FilesystemName","Invitation","Owner2","sender","Sender","Message","toFolderNode","FolderId","FolderName","toShortcutNode","PrototypeUrl","isExpoProject","IsExpoProject","InFsViewerFolder","FeedbackEnabled","IsUserOnly","hasPassword","HasPassword","TargetPrototypeGenerationTimestamp","isUserOnlyWorkspace","IsUserOnlyWorkspace","notificationState","siblings","breadcrumbToWorkspaceNode","breadcrumb","existing","mapped","fsRootFolderId","isDefaultFs","fromBreadcrumb","breadcrumbToFolderNode","isRootNode","Root","isSearchResult","computeWorkspaceRights","env","hasAuthorRights","isAdminUser","joinedWorkspace","canLeave","usersManage","canBeShared","getUnreadMentions","mentionTypes","unreadMentionsCount","UnreadMentionsCount","unreadMentions","types","mentionType","FolderCreateModelValidatorInner","FolderCreateModelValidator","CreateWorkspaceModelValidatorInner","CreateWorkspaceModelValidator","ManageUsersInviteModelValidatorInner","must","ProjectCreateModelValidatorInner","ProjectCreateModelValidator","CreateExpoProjectModelValidatorInner","CreateExpoProjectModelValidator","PluginModelValidatorInner","PluginName","Content","PluginModelValidator","CommentModelValidatorInner","commentText","CommentModelValidator","BridgeEvents","bridgeReady","playerMessageCenterEvent","inspectorToggled","documentConfiguration","previewGenerationComplete","pluginCreated","updateIsPanZoomEnabled","AppEvents","starting","commands","addHandoff","getPageData","getDocumentConfiguration","inspectorEnable","inspectorDisable","inspectorShow","inspectorHide","keyboardEvent","selectAdaptiveView","setZoom","pluginToggle","hidePlayerControls","hidePinsOverlay","selectPage","resizePlayerContent","selectScaleOption","selectOverlayOption","triggerUpdateIsPanZoomEnabled","generateLocalExpoPreview","reload","refreshViewPort","navigateToIssue","updateNotificationState","exitCommentMode","KeyboardEvents","ctrlOrCmdPlus","ctrlOrCmdMinus","ctrlOrCmdZero","spaceBarUp","spaceBarDown","comma","period","esc","comment","ScaleValues","sitemap","gid","notes","discussions","handoff","func","isDescending","orderByDescending","funcs","b","value1","value2","normalizeSortingArgument","order","first","second","isSortingObject","arg","toLocaleLowerCase","removeFirst","indexesToRemove","findIndexes","removed","indexToRemove","initial","indexes","splitArray","chunkLength","chunks","chunk","l","arrayToMap","keyField","keyValue","distinct","self","inBrowser","hasIntersectionObserver","hasMutationObserver","hasServiceWorker","hasNotifications","Notification","textContent","position","setAttribute","execCommand","ex","hostname","KeyCodes","tab","space","up","down","backspace","colon","Keys","code","KeyboardEvent","browser","detect","isEdge","os","browserVersion","isIframe","sizeSymbols","toFixed","aspDateString","sortA","sortB","getNestedValue","split","fun","cache","isError","err","round","precision","multiplier","pow","randomIntegerBetween","min","rMin","ceil","rMax","floor","resolve","retryUntilTruthy","maxRetries","retryTimeout","infinite","shouldCancel","cancelTimeout","retryForever","canceled","updateQueryStringParam","urlQueryString","newParam","updateRegex","RegExp","removeRegex","match","fileName","pop","getFilenameWithoutExtension","lastIndexOf","s1","s2","useLocale","localeCompare","sensitivity","str","isHttp","startsWith","EmptyGuid","lut","removeParameterFromHash","parameter","prms","frmElements","fragment","getHashVarString","qstring","getParameter","frmelements","querystr","frmelement","uuid","s4","makeId","characters","charactersLength","removeEmptyEntries","tempChar","pluralize","singular","plural","count","atSymbolIndex","tryDecodeURIComponent","hasDesktopNotificationsPermission","versionWithCorrectPermissions","compareVersion","hasDesktopNotificationsPermissionForOldSafari","permission","permissionFromStorage","requestNotificationsPermission","reject","requestPermission","browserPermission","correctPermission","v1","v2","v1Values","v2Values","v1Value","parseInt","v2Value","SearchResult","matches","matched","getStringChunks","keyMatches","mergeMatches","keyMatch","isBold","m","lastIndex","sortedMatches","hit","hitIndex","searchHit","newHit","stringSearch","startIndex","getWordsOfString","wordStarted","word","char","matchedItems","toSearchResult","nameMatch","Infinity","_map","getKeyMatches","trimedQuery","getMultiwordSearchHits","getStringSearchHits","getWordSearchHits","queryWord","sourceWords","findWords","words","Set","wordSearchHits","normalizeHotspotMeasurements","hs","floorRound","integer","decimal","normalized","Dimensions","Height","Width","Start","X","Y","End","hashPassword","toHash","salt","sha512","digest","charCodeAt","addParamsToFragment","separatedParams","uniqueParams","hub","overrides","typeOrOverrides","resolvedType","resolvedOverrides","Renderer","FileType","ActionType","InteractionType","AnimationType","EasingType","DeviceType","ForegroundColor","PlatformType","Orientation","PageAlign","HorizontalAlign","VerticalAlign","ImageRepeat","OperationType","PackageType","SsoId","RpErrorTypes","ApiErrorTypes","DiscussionAction","DiscussionType","ShortcutAction","WorkspaceAction","FolderAction","PortalVue","gtmTrackingId","VueGTM","vueRouter","router","VueLazyload","observer","dispatchEvent","refreshOnceOnNavigation","VueMeta","VueTransmit","transmit","lazyload","gtm","meta","portalVue","installer","navigationError","appConfigured","appStatus","initializationStatus","status","appStatusInitialized","appStatusFailure","appStatusSuccess","desktopClasses","isWindowsPlatform","platform","isMacPlatform","desktopExternalLinks","handleClick","link","findLink","isExternal","HTMLAnchorElement","onlineStatusChanged","initializationError","componentMatched","hasError","isDesktopWindows","isOnline","isSignInRoError","acknowledge","isDbError","dbError","isJsonSettingsLoadError","jsonSettingsLoadError","isRoError","isApiExceptionError","apiExceptionError","isAuthed","fsRoute","clearApiCalls","canRetry","retry","canReload","onDetailsClicked","detailsMessage","showError","composing","readOnlyErrorMessage","ReadOnlyMessage","AxAppFailureRetry","logout","onSuccess","afterLogoutRedirect","Logout","EVENTS","supportsStatusCheck","onLine","updateStatus","statusChanged","before","AxAppFailureApiException","AxAppFailureDb","AxAppFailureJsonSettingsLoad","AxAppFailureFallback","AxAppFailureReadOnly","AxAppFailureReadOnlySignIn","AxAppFailureReload","AxOnline","forceError","acknowledged","originalFocus","vueError","promiseRejection","errorInfo","originalVueHandler","originalWindowErrorHandler","IsAuthed","failuredApiCallsIds","unwrapError","signInReadOnlyError","readOnlyError","onerror","handleVueError","handleWindowError","handleUnhandledRejection","Ctor","args","info","tryLogError","VueRouter","source","lineno","colno","rejection","HttpError","ApiCallRetry","ApiCallClear","extras","cancelled","fulfilled","AxAppFailure","AxAppSplashScreen","AxDelayed","Initialize","repoUrl","commitOnRemote","shortHash","pollApiVersionInfo","retryInterval","runHandler","AxRetry","willReloadOnNextNavigation","reloading","versionInfo","apiVersionInfo","BuildVersion","newVersion","oldVersion","reloadOnNextRouteNavigation","EnterpriseVersion","lastPolling","dateDiff","now","getTime","loadApiVersionInfo","ApiVersionSet","LoadApiVersionInfo","beforeEach","_from","safeToApplySWUpdate","AxTitleBar","SWEvents","AppView","AxVersionTracker","metaInfo","SWUpdateEvent","registration","skipWaiting","worker","waiting","channel","MessageChannel","port1","onmessage","postMessage","port2","updateEvent","app","serviceWorker","getRegistrations","registrations","unregister","catch","_err","applyPendingSWUpdate","register","Ready","registered","Registered","oneHourMs","cached","Cached","updatefound","UpdateFound","Updated","offline","Offline","currentRoute","messageData","installVendors","sync","App","$mount","registerServiceWorker","overlayClass","HANDLER","closeConditionalDefault","binding","getOptions","bind","_element","_vnode","unbind","element","bindedHandler","capture","inserted","vnode","vm","initialMacrotaskEnded","ev","composedPath","includeNodes","curr","getElementsByTagName","clickedInEls","resolveTarget","passive","directive","oldValue","createOverlay","$root","documentElement","elm","yourself","iAmTheOwner","didJoinWorkspace","me","d","AdminAccounts","AdminAccountsAdd","AdminAccountsSetAccess","AdminAccountsDeactivate","AdminAccountsActivate","AdminAccountsActivateMulti","AdminAccountsSamlRemove","AdminAccountsSamlAdd","AdminAccountsChangeEmail","AdminAccountsChangePassword","AxAdminAccountsSuperAdminChange","AdminEmail","AdminLicense","AdminInfo","AdminLdap","AdminSaml","AdminBase","routes","admin","beforeEnter","__","profileLoaded","navigatingError","retryNavigation","AxConnectionTrouble","navigateToWorkspace","Navigate","retriedNode","routeBeforeNavigate","workspaceNode","AxFilesystemNavigationError","setPersistent","contents","parentFolder","currentFolderId","FolderCreate","AxCreateFolder","getNodeByFolderId","modeChanged","fileChanged","projectNameUserChanged","passwordProtect","revealed","Password","currentWorkspaceId","passwordValid","vNodeProp","AxVNode","AxCreateProjectCompact","AxPanel","checkPrototypeNameValid","response","createEmptyProject","createProject","Vars","devices","defaultDevice","Platform","customDimensions","CustomDimensions","isWebPlatform","condensed","AxInputGroup","AxChoice","AxSelectNative","orientations","expo","defaultDimensions","getDeviceList","deviceItem","DeviceName","Device","deviceText","checkExpoNameValid","nodeProp","AxCreateProjectRp","AxCreateProjectSketch","AxCreateProject","CreateProject","simultaneous","beforeRouteUpdate","fsViewer","AxProjectInviteSettings","modalOpened","newOwners","NewOwner","newOwner","unjoinShare","AxManageUsersLeave","beforeRouteEnter","_to","navigating","isRoot","loadWorkspace","ManageAccount","AxNotificationsActions","AxNotificationsChangeUrl","AxNotificationsRemoveGuestSubscription","Notifications","notification","alias","route","isRecentActive","showCreateWorkspace","createWorkspace","invitations","invitation","refInFor","workspacesTransitionName","workspacesList","enableListAnimation","disableAnimation","hasArchivedWorkspaces","setShowArchived","showArchived","archivedWorkspacesList","allowWorkspacesMigrate","workspacesMigrationSuggest","beginMigration","workspacesMigrationAcknowledge","roMsg","creatingWorkspace","userViewOnly","AxCheckbox","fSFolderInfo","workspaceCreate","RootFolderId","tooltipProps","workspaceClass","workspaceText","isInvitation","hasUnreadMentions","canFavorite","setFavoriteWs","favorite","favoriteTitle","filled","fillColor","AxStar","isAdminOnSubinstance","isAdminOnPrem","ownerName","eventNamesPrefix","FavoriteWorkspace","AxCreateWorkspace","AxFilesystemNavigationWorkspace","roMessage","ManagePageMessage","workspacesLoading","workspacesLoaded","scrollExist","adminSettingsRoute","adminRouter","allNonDefaultActualWorkspaces","allArchivedWorkspaces","archivedWorkspacesButtonText","shouldHandleRouteChange","currentRouteName","fsRouteName","emptyParams","isAdminPage","currentRoutePath","isSubInstanceReviewer","isSubInstanceTechnicalAdmin","totalWorkspaces","singleWorkspace","loadWorkspaces","ApiCall","navigateToDefaultWorkspace","fetchWorkspaces","navigateToAdminPage","scrollToCurrentWorkspace","savedWorkspaceId","navigateToFirstAvailableWorkspace","rootNode","fallbackWorkspaceRoute","SetShowArchived","getWorkspaceNavigationItemElement","workspaceNavigationItem","currentWorkspaceNavigationItem","scrollIntoView","MigrateWorkspaces","isItemDeleted","itemDeleted","AxFilesystemTable","deletedItems","FilesystemViewer","AxFilesystemRecentsTable","AxFilesystemViewerHeader","recents","recentsLoad","recent","load","loadImpl","RecentsLoad","getRecents","canGoBack","filesystemSort","enableActivityFeed","AxFilesystemFeed","AxNavigation","SetSavedWorkspaceId","upperLevel","EnableActivityFeedUI","workspaceRootFolder","getWorkspaceByRootFolderId","senderProfile","confirmed","accept","decline","respond","InvitationRespond","License","fsRecentsRoute","AxFilesystemRecents","Filesystem","license","FilesystemManage","sidebar","AxFilesystemNavigation","FilesystemWorkspace","AxFilesystemViewer","AxWorkspaceInvitation","checkInvitation","hasInvitation","getWorkspaceInvitation","CreateFolder","UsersInvite","UsersLeave","ConfigureSecurity","invite","unresolved","closestFolderId","notificationRouter","manageAccountRouter","refreshDefault","locationBuilders","locationBuilder","isOutdatedBrowser","started","batch","dismissBatch","hasFiles","showClose","disableUpload","disableUploadMessage","addFiles","queuedFiles","activatedKey","currentProject","isUploading","uploadAssets","projects","filesAdded","handleDragStart","handleDragEnd","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","dragging","dataTransfer","effectAllowed","dropEffect","files","vueTransmitClasses","onFileRemoved","successSingle","queueComplete","VTransmitFileStatuses","ADDED","QUEUED","ACCEPTED","UPLOADING","PROCESSING","CANCELED","ERROR","TIMEOUT","SUCCESS","markedUploadArea","filesInProgress","batchId","withCredentials","disabledDraggable","maxConcurrentUploads","skipPublishNote","addFile","artboardId","batchUploadCompletedOrDismissed","NewUpload","ArtboardUploadBatchSource","UploadCancel","AddToBatch","artboardName","nativeFile","getArtboardId","UpdateProgress","removeFileById","uploadId","RemoveFromBatch","uploadAssetData","artboard","artboards","asset","assets","ArtboardAdd","UploadSuccess","serverArtboardId","UploadError","allFiles","existingFile","processFiles","clear","DismissUpload","AxDropzone","AssetUploader","batches","uploads","batchesInProgress","assetUploader","getAssetUploader","batchNotStartedArtboards","activated","createPublishNote","complete","uploadItems","toProjectOverview","linkToArtboardInspect","exporting","cancellable","processing","removeUpload","progressBarOptions","AxProgressBar","ArtboardUploadStatus","inProgress","screen","AxArtboardUploadsItem","AxPageNotification","batchIsCompleted","AxArtboardUploadsDesktopTracker","AxArtboardUploadsPicker","AxArtboardUploadsProgress","dismissed","lastBatch","minimized","linkClasses","notifyAboutNewVersion","notificationsRoute","manageAccountRoute","openWhatsNewDialog","productHelpUrl","feedbackUrl","showVersion","whatsNewDialog","closeWhatsNewDialog","VersionCheck","serverVersion","serverReleaseDate","outdatedAfter","storedVersion","clientVersion","compare","acknowledgedAt","releaseDate","hasNewVersion","serverReleased","outdatedDate","releases","release","isSupertitle","isSubtitle","points","point","AxReleaseHistory","AxListItemStatic","AxWhatsNewDialog","lastVersion","days","useTimer","versionCheck","isSuperAdminUser","Version","ReleaseDate","parseISO","oneHourInMs","GetUserInfo","GetUserProfile","moveNotificationRoute","manageAccount","_open","opened","searchText","toggleFocus","searchQueryChanged","isSearching","searchData","isLoading","results","searchNode","onModified","searchResult","idChunks","itemCloned","itemMoved","itemRenamed","itemModified","NaN","AxHeaderSearchResult","routeOverview","canShowModifiedDate","lastUpdatedShortcut","AxHeaderSearchResultLink","AxSearchResultModified","clonedItems","movedItems","renamedItems","searchResults","AxFilesystemSearchTable","reInitData","refreshNavigate","debounceInput","debounce","maxWait","AxInputSearch","AxFilesystemSearch","searchList","searchSessionStarted","searchListOutdated","dataReloadRequired","getSearchTree","SetSearchData","newQuery","oldQuery","toggleSearchSessionStarted","setSearchInRoute","debouncedQuery","queryParams","shouldNavigate","currentSearch","rest","getSearchTreeImpl","getUserSearchData","AxHeadingLogo","AxAccountMenu","AxHeaderSearch","headerMinimized","workspaceCommentsChanged","AxPushNotificationsWorkspace","workspaceInvited","notificationOptions","authorEmail","OwnerEmail","authorName","OwnerName","MentionComment","authorProfileImage","OwnerProfileImage","onclick","ShowWorkspaceInvitedDesktopNotification","workspaceInvitationDeleted","userMentioned","AuthorName","AuthorEmail","AuthorProfileImage","subscriptions","getUserGuestSubscriptions","ShortcutKey","IssueCode","PageId","ShowMentionedDesktopNotification","migrationId","AxWorkspacesMigrationDialog","migration","AxInstallingSketchPluginNotification","AxBadgeNotifications","AxOutdatedBrowserBanner","FixedHeader","AxHeading","AxArtboardUploads","AxPushNotificationsGlobal","AxPushNotificationsMentioned","AxPushNotificationsAllWorkspaces","AxWorkspacesMigration","loginRoute","WelcomeLayout","homeRoute","requestAccessToWorkspace","updateQueryParams","requestInvite","WorkspaceName","showWorkspaceName","decodedWorkspaceName","AxUploadExportedBatch","uploadfromsketch","SsoCompleted","AxSubInstanceFirstUse","firstUse","Home","loginRouter","subinstanceRouter","desktopPluginsRouter","ssoRouter","projectNotShared","ProjectNotShared","workspaceAccessRequested","WorkspaceAccessRequested","somethingNotQuiteRight","SomethingNotQuiteRight","notFound","NotFound","requiresAuth","fsRouter","projectRouter","RouteStatus","routesConfigured","routeStatus","NotConfigured","configureRoutes","lazyRoutes","fetch","condition","SubInstancesSupported","configs","lazyRouteTasks","lazyRoute","task","newConfig","addToRouter","Reconfigured","setRouteStatus","routeName","routeConfigs","routeConfig","initImpl","toOnPremSetupRoute","setupRouter","resolvedRoute","onFailure","auth","routeRequiresAuth","redirectToLoginPage","isRouteRequiresAuthMeta","Router","homeRouter","mode","guards","SetNavigationError","AxCloudInfoDescription","isString","signin","showLicenseKey","addError","redemptionKey","buttonClass","successMessages","desktopLink","licenseKey","createServer","host","token","server","axios","baseURL","transformRequest","addAuthorizationHeader","withNoCacheHeaders","LicensingService","licensingHost","authToken","licensingServer","machineId","skipTrialCheck","formData","objectToFormData","post","AxFormSuccess","requestId","rpVersion","setStatusMessages","clearStatusMessages","LicensingServiceHost","licensingService","licData","getLicenseData","Payload","BestLicense","cacheLicenseResponse","ErrorType","fetchedLicense","keyData","keyTypeText","expireString","expireDate","expire","CurrentTrial","TrialKey","ExpireDate","forgotPasswordErrors","forgotPasswordSuccess","signupRoute","createCustomEvent","eventName","eventDetail","CustomEvent","detail","createEvent","initCustomEvent","forgotPassword","AxForgotPassword","staySignedIn","loginPassword","passwordBlank","altPassword","loginEmail","clearPass","rpRequestId","doLoginRequest","passwordValidator","signinRoute","rpSignUp","rpQueryToProps","sidebarQueryToProps","validateRequestIdParam","valid","validateRpRequestId","IsValid","RpAuthBase","RpSignin","RpAuthSidebar","RpSignup","RpKey","RpRedirect","RpError","authSuccess","hideHeader","userNamePlaceholder","userNameInputType","ldapEnabled","showSignup","showSaml","handleSamlLogin","samlUrl","SamlUrl","redirectParam","isNavigationFailure","NavigationFailureType","AxSamlLogin","titleTemplate","LdapAuthenticationEnabled","onPremMode","onPremLdapAuthentication","useClearPassword","Authenticate","AxShareHost","redirected","AxLogin","GetAdminInfo","hideHeading","passwordUseExtraRules","PasswordUseExtraRules","signUp","category","AxSignup","AxResetPassword","loggedInRedirect","rpRouter","entry","LoginSignup","loggedIn","signup","resetpassword","Expo","PageDeleted","resolveProps","gids","plugins","startPage","artboardsOrder","firstPageId","firstPagesMap","firstPage","getFirstPage","disableBuild","resolveBuildLocation","Configure","Plugins","PluginsAdd","PluginsEdit","PluginsPages","PrettyUrls","PrettyUrlsAssign","PrettyUrlsEdit","Redirects","RedirectsAdd","RedirectsEdit","matchNameAlias","EnablePlugins","Project","Overview","Discussions","DiscussionsOverview","ProjectNavigation","History","projectOverview","commentInfo","getPrototypeRedirectCommentInfo","ShortPageId","projectNavigation","fetchProject","isProjectAdvancedTabAvailable","navigateToOverview","navigateToConfigure","_error","configureRouter","expoRouter","projectLinks","links","setup","setPassword","accountId","newPassword","pending","request","targetUserId","exec","setEmail","addToSaml","accountIds","userIds","setAccessLevel","accessLevel","addAccounts","useSaml","isRpEnterprise","getUserInfo","removeFromSaml","changeUserState","getEmailSettings","saveEmailSettings","sendTestEmail","recepient","getSamlSettings","saveSamlSettings","certFile","provider","loginFile","clearSaml","getLdapSettings","testLdapAuthentication","saveLdapSettings","getSubInstanceInfo","getLicenseKey","setLicenseKey","mapResponse","fromAxiosCancel","fromAxiosError","fromError","isAxiosResponse","fromAxiosResponse","isResponse","fromResponse","redirecturl","requestUrl","requestCancelled","responseURL","rawResponse","axiosResponse","statusText","noRedirect","ignoreResponseRedirectUrl","extractorOrOptions","dataExtractor","processPayload","hasData","extractor","forceRedirect","isDbConnectionPayload","dbConnectionFailed","isJsonSettingsExceptionPayload","jsonLoadException","isApiErrorPayload","ApiErrorType","isExceptionResponse","getExceptionId","getStaticContent","archivedOnly","getProject","getFullResponse","updatePlatform","deleteBackgroundImage","artboardDelete","artboardsDelete","artboardIds","artboardArchive","artboardUnarchive","artboardReorder","tailArtboardId","fullResequence","targetAbId","tailAbId","addRemoveArtboardMaster","masterId","isAdd","hotspotAdd","hotspot","Hotspot","setting","Setting","ParentId","relativeToBottom","RelativeToBottom","hotspotEdit","originalAction","sourceId","targetId","actionId","isSourceMaster","isTargetMaster","hotspotDelete","isMaster","masterCreate","masterRename","masterCopy","masterDelete","saveProjectZoom","zoom","setHeaderFooterHeight","isHeader","deviceList","deviceListResponse","createFolder","destination","filesystemDelete","archiveWorkspace","archive","favoriteWorkspace","searchItems","searchItem","getUserWorkspaces","skipEntryCount","fsId","getFilesystemRootFolderContents","getfolderContents","createRecent","getFolderNavById","getFolderNavByFilesystemId","getFolderNavByShortcutId","getNextWorkspaceName","renameFolder","folderInfo","renameWorkspace","inviteUsersToFileSystem","updateFilesystemOwner","workspaceInvitationRespond","getUserProjectsByType","getViewerFolder","shortcutTypes","userToChange","isReviewOnly","NotificationMethod","NotificationSubRate","NotificationTypes","ProjectCommentsTypes","NotificationMuteItemTypes","getUserSubscriptions","deleteSubscription","NotificationId","deleteLegacyEmailSubscriptions","addNotification","editNotification","changeSlackUrlNotification","getNotificationSettings","saveNotificationSettings","getNotificationMuteItems","addNotificationMuteItem","deleteNotificationMuteItem","notificationMuteItemId","getProjectPages","getFullCommentsState","getProjectInfo","getPassword","changedProjectInfo","executor","onUploadProgress","cancelToken","toggleDiscussions","getViewerParams","isCreate","resetUnreadPublishNotesMentions","retryPolicyFactory","intervals","retryIntervals","nextRetryDelayInMilliseconds","retryContext","previousRetryCount","PushNotificationsService","WeakMap","ApiUrl","Enabled","enablePushNotifications","EnablePushNotifications","disconnectFromHubTasks","hubConnections","disconnectFromHub","connection","ensureHubStarted","methodName","listener","activeHubListeners","off","groupName","groupNameNormalized","groups","groupsMembership","HubConnectionState","HubConnectionBuilder","withUrl","withAutomaticReconnect","configureLogging","LogLevel","build","start","connected","metadata","getConnectionMetadata","hasOnReconnectedHandler","onreconnected","connectionId","restoreGroupsMembership","hubConnectionMetadata","group","addToGroup","retries","getAuthToken","paramsSerializer","serialize","qs","arrayFormat","transformRequestDefaults","setAuthTokenAccessor","tokenAccessor","reconfigure","interceptors","use","timestampInterceptor","getConfig","getConfigFromDomain","domain","followRedirect","getVersion","refreshAuth","transformDefaults","Pragma","timestampParam","isObject","isDate","isBlob","isFile","lastModifiedDate","lastModified","object","indices","FormData","keyPrefix","currentIndex","toISOString","ActionTypes","LoadConfig","force","apiCallId","SetupAccountService","useGet","apiUrl","GetAdminUserInfo","SetAdminUserInfo","GetAdminSubInstanceInfo","MutationTypes","SetAdminSubInstanceInfo","subInstanceInfo","SetAdminSubInstanceAccounts","AsyncActionState","asyncAction","actionType","SetFailure","SetFetching","mutation","SetSuccess","SetupProject","ProjectFetchExpo","ProjectContentFetch","ProjectZoomSave","ProjectPlatformUpdate","ProjectPlatformBackgroundImageUpload","ProjectPlatformBackgroundImageDelete","ArtboardRemove","ArtboardArchive","ArtboardUnarchive","ArtboardRemoveSelection","ArtboardArchiveSelection","ArtboardReorder","ArtboardAddMasterAction","ArtboardAddMaster","ArtboardRemoveMasterAction","ArtboardRemoveMaster","ArtboardActionSave","ArtboardActionRemove","MasterActionSave","master","MasterActionRemove","ProjectMasterCreate","bundle","ProjectMasterRename","ProjectMasterCopy","ProjectMasterDelete","ArtboardSetHeaderFooterHeight","ProjectSetup","ProjectIsLoadingSet","ProjectContentSet","ProjectContentClear","ProjectZoomSet","ProjectPlatformBgImgUpload","ProjectPlatformBgImgDelete","ProjectUpdateLastModifiedDate","ProjectUpdateLastSavedDate","ArtboardSelect","ArtboardSelectAll","ArtboardDeselectAll","ArtboardSelectToggle","ArtboardSelectSingle","ArtboardSelectSpan","extend","ArtboardOrderUpdated","ArtboardActionMenuToggle","isOpened","ArtboardActionAdd","ArtboardActionUpdate","ArtboardActionHotspotPositionSet","MasterActionUpdate","MasterActionHotspotPositionSet","idType","silent","ProjectUpdate","projectInfo","ProjectToggleFeedback","ProjectToggleUserOnly","folderCreateModel","WorkspacesLoad","FirstPageLoad","Fetching","Navigating","SetContents","SetViewOnly","NodeRemember","SetParentNode","NodeRemoveContents","SetListingNode","FolderAdd","folderRowJs","SetProjectNotificationState","SetFirstPage","nodeId","firstLoad","fetching","mutations","canInitialize","apiCall","apiCalls","accountServiceHost","axshareHost","afterAuthActions","userInfoUserId","accountServiceUserId","UserId","getInfo","getterTree","currentAdminUser","_state","AccessLevel","isReviewerUser","isAuthorUser","isTechnicalAdminUser","rootState","BadgeDrawer","radius","textColor","strokeWidth","strokeColor","font","textOffsetTop","drawBadgeAsBase64","drawerOptions","img","getContext","clearRect","fillStyle","beginPath","arc","PI","fill","lineWidth","strokeStyle","stroke","textAlign","textBaseline","fillText","base64imageURL","toDataURL","badgeDrawer","NewProjectMenuAction","_context","DrawBadge","SetDesktopParams","isMaximized","saveAction","saved","ptOnScreenAction","Location","y","tempStr","tempVal","api","actionsTree","rootGetters","archiveMode","resourceFolder","resourceAxureFolder","bgImgUrl","isProjectLoading","isProjectLoaded","getLastModified","hasArtboards","ArtboardIds","Zoom","selectedArtboards","Master","fsNode","nextArtboard","g","orderedArtboardIndex","nextArtboardId","previousArtboard","prevArtboardId","NewExpoProjectStore","lastSavedDate","projectZoom","projectDimensions","assetsImages","assetsImagesThumbnails","lastSelectedArtboard","artboardHotspotOpenedMenu","masters","modifiedOn","mutationsTree","Settings","deleteArtboard","IsDeleted","assetImgUrl","images","AssetId","assetImgThumbnailUrl","thumbnails","addArtboard","subAssets","SubAssets","subAssetId","subAsset","subAssetImgUrl","subAssetImgThumbnailUrl","addArtboardAsset","addedArtboards","artboardAdded","bgImgLink","ProjectName","ActionPool","Actions","stateArtboard","originalMaster","originalAb","stateMaster","relativeToBottomResolved","MasterIds","abId","selectArtboard","selectAllArtboards","deselectArtboard","deselectAllArtboards","toggleArtboardSelection","indexOfCurrentSelected","abOrdered","indexOfLastSelected","end","artboardsToToggle","artboardToToggle","NextArtboardId","HeaderHeight","HasHeader","FooterHeight","HasFooter","rememberLastSelected","currAbs","missingAbs","assetImageUrl","abOrderId","workspaceNodes","getWorkspaceNodes","preserveState","projectLoadActions","tryFindParent","getClosestFolderId","shouldInvite","workspaceNavigate","getContents","AdditionalVars","isFsViewer","navigationFn","navigation","breadcrumbJson","breadcrumbToFilesystemNode","lastNode","listingJs","Filesystems","Invitations","Listing","workspacesInStore","trySet","itemsInStore","getter","setter","inStore","isFilesystem","nodeContents","currentPrototypeUrls","contentNodes","maxDepth","depth","currentNode","getNodesOfType","_getters","nodesFromContents","rememberNodes","rememberNode","folderNode","mergedState","preserveWorkspaceRootFolder","savedNode","Folders","Shortcuts","sibling","actionState","actionStateFetching","maxFileSizeHumanized","NeedsSetup","NeedsDbUpgrade","onPremAppConfigured","_rootState","EnableWorkspacesMigration","migrate","step","MigrationSteps","clearState","setStep","failedStep","domainPrefix","userActivationRequired","UserActivationRequired","superAdmin","SystemAdmins","sessionToken","workspacesToMigrate","usersToMigrate","AuthStorage","Token","authTokenKey","clearToken","authStorage","AccountService","getOrPost","useHttpGet","accountServer","appServer","sso","setAuth","mainProcessLogout","authGetSso","postAppServer","isGuest","opts","loginResponse","callerId","logoutPath","logoutOptions","logoutTasks","logoutAtAccounts","logoutAtApp","logoutAtAppGuest","getUserProfile","timeZoneId","getTimeZoneFormData","fileToUpload","optsOrFormData","unwrapArgs","appendFormDataToQueryString","setDesktopAuth","timeZone","Intl","DateTimeFormat","resolvedOptions","baseUtcOffsetMinutes","getTimezoneOffset","mainProcessLogin","formObject","once","notifications","guestSubscriptions","notificationMuteItems","axShareHostUrl","initialState","AddNotification","AddNotificationMuteItem","EditNotification","SetUserSubscriptions","SetUserGuestSubscriptions","SetNotificationMuteItems","DeleteUserSubscription","notificationId","DeleteUserGuestSubscription","DeleteNotificationMuteItem","notificationMuteItem","userSubscriptions","userGuestSubscriptions","notificationMuteItemsJs","SlackChannel","MsTeamsUrl","iconUrl","renotify","getNotificationOptions","ShowDesktopNotification","iconText","toUpperCase","base64Data","iframeBridgeTarget","iframeBridgeProps","iframeTarget","iframeProps","iframe","iframeTargetOrigin","iframeBridgeReady","postMessageToIframe","targetOrigin","contentWindow","otherIframeBridgeTargets","totalIframeBridgesReady","EmptyIframeBridgeProp","iframeReady","allCompleted","batchArtboardIsCompleted","batchArtboardNotStarted","ArtboardUploadStatusCompleted","uploadData","cleanupBatch","SetInfo","SetProfile","userInfoResponse","localTimeZone","SetUserTimeZone","changeAccountInfo","setUserTimeZone","isWhitelisted","desktopBridge","_event","correlationParam","dispatchResult","vuexPersist","VuexPersistence","reducer","Vuex","modules","plugin","SetStep","SetFailedStep","SelectSubInstance","SetSessionToken","SelectWorkspaces","SelectUsers","SetMigrationResult","Restart","Idle","Reset","QueryAction","Success","Failure","ConfigSet","InitializationStatus","ApiCallAdd","ApiCallRemove","ApiCallSetStatus","GetUserSubscriptions","GetUserGuestSubscriptions","GetNotificationMuteItems","PostToIframe","SetIframeBridge","SetIframeReady","SetIframeBridgeReady","IframeBridgeTarget","Canceled","ChangeAccountInfo","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","deferred","O","chunkIds","priority","notFulfilled","j","__esModule","definition","enumerable","f","chunkId","promises","miniCssF","globalThis","dataWebpackPrefix","done","needAttach","scripts","charset","nc","onScriptComplete","prev","onload","doneFns","Symbol","toStringTag","p","createStylesheet","fullhref","linkTag","rel","onLinkComplete","errorType","realHref","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}