box-ui-elements 18.0.0-beta.3 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/content-picker/ContentPicker.js"],"names":["React","Component","classNames","debounce","uniqueid","noop","Header","SubHeader","UploadDialog","CreateFolderDialog","Internationalize","makeResponsive","OffsetBasedPagination","isFocusableElement","isInputElement","focus","API","Content","Footer","CLIENT_NAME_CONTENT_PICKER","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","DEFAULT_ROOT","DEFAULT_SEARCH_DEBOUNCE","DEFAULT_VIEW_FILES","DEFAULT_VIEW_RECENTS","ERROR_CODE_ITEM_NAME_IN_USE","ERROR_CODE_ITEM_NAME_INVALID","ERROR_CODE_ITEM_NAME_TOO_LONG","FIELD_NAME","FIELD_SHARED_LINK","SORT_ASC","TYPE_FILE","TYPE_FOLDER","TYPE_WEBLINK","TYPED_ID_FOLDER_PREFIX","VIEW_ERROR","VIEW_FOLDER","VIEW_RECENTS","VIEW_SEARCH","VIEW_SELECTED","FILE_SHARED_LINK_FIELDS_TO_FETCH","defaultType","ContentPicker","props","selected","state","Object","keys","map","key","clone","onChoose","results","getSelectedItems","forEach","onCancel","deleteSelectedKeys","setState","id","currentCollection","view","searchQuery","fetchFolder","showRecents","search","showSelected","Error","error","code","console","item","type","triggerNavigationEvent","rootFolderId","currentId","currentOffset","limit","currentPageSize","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","api","getFolderAPI","getFolder","collection","fetchFolderSuccessCallback","errorCallback","forceFetch","percentLoaded","items","getCache","get","finishNavigation","query","getSearchAPI","searchSuccessCallback","trimmedQuery","debouncedSearch","cancel","permissions","canUpload","canUploadPermission","can_upload","isUploadModalOpen","createFolderCallback","name","isCreateFolderModalOpen","canCreateNewFolder","errorCode","isLoading","create","status","response","forceSharedLink","canSetShareAccess","selectableType","maxSelectable","indexOf","selectedKeys","selectedCount","hasHitSelectionLimit","isSingleFileSelection","cacheKey","getAPI","getCacheKey","existing","existingFromCache","existInSelected","prior","fetchSharedLinkInfo","focusedRow","findIndex","i","getFolderFields","handleSharedLinkSuccess","fields","getFileAPI","getFile","getWebLinkAPI","getWeblink","changeShareAccess","undefined","updateItemInCollection","select","access","can_set_share_access","share","updatedItem","newState","collectionItem","refreshCollection","table","event","target","toLowerCase","preventDefault","globalModifier","choose","upload","createFolder","newOffset","apiHost","clientName","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","rootName","destroy","clearCache","defaultView","currentFolderId","document","getElementById","appElement","firstElementChild","prevState","prevFolderId","autoFocus","activeElement","clearSelectedItemsOnNavigation","commonState","closeModals","getRecentsAPI","recents","recentsSuccessCallback","messages","logoUrl","contentUploaderProps","extensions","isHeaderLogoVisible","isPaginationVisible","isSmall","className","measureRef","chooseButtonLabel","cancelButtonLabel","renderCustomActionButtons","showSelectedButton","totalCount","isSingleSelect","allowUpload","allowCreate","styleClassName","onKeyDown","sort","tableRef","onItemClick","onFocusChange","paginate","uploadSuccessHandler","Infinity","ContentPickerComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAMA,OAAO,6BAAP;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AAEA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AACA,OAAOC,MAAP,MAAmB,kBAAnB;AACA,OAAOC,SAAP,MAAsB,gCAAtB;AACA,OAAOC,YAAP,MAAyB,yBAAzB;AACA,OAAOC,kBAAP,MAA+B,gCAA/B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,cAAP,MAA2B,0BAA3B;AACA,OAAOC,qBAAP,MAAkC,iDAAlC;AACA,SAASC,kBAAT,EAA6BC,cAA7B,EAA6CC,KAA7C,QAA0D,iBAA1D;AACA,OAAOC,GAAP,MAAgB,WAAhB;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,SACIC,0BADJ,EAEIC,oBAFJ,EAGIC,uBAHJ,EAIIC,mBAJJ,EAKIC,iBALJ,EAMIC,YANJ,EAOIC,uBAPJ,EAQIC,kBARJ,EASIC,oBATJ,EAUIC,2BAVJ,EAWIC,4BAXJ,EAYIC,6BAZJ,EAaIC,UAbJ,EAcIC,iBAdJ,EAeIC,QAfJ,EAgBIC,SAhBJ,EAiBIC,WAjBJ,EAkBIC,YAlBJ,EAmBIC,sBAnBJ,EAoBIC,UApBJ,EAqBIC,WArBJ,EAsBIC,YAtBJ,EAuBIC,WAvBJ,EAwBIC,aAxBJ,QAyBO,iBAzBP;AA0BA,SAASC,gCAAT,QAAiD,oBAAjD;AAgBA,OAAO,sBAAP;AACA,OAAO,qBAAP;AACA,OAAO,sBAAP;AACA,OAAO,sBAAP;AAmEA,IAAMC,WAAW,aAAMV,SAAN,cAAmBE,YAAnB,CAAjB;;IAEMS,a;;;;;AAiByB;;AA6B3B;;;;;;AAMA,yBAAYC,KAAZ,EAA0B;AAAA;;AAAA;;AACtB,uFAAMA,KAAN;;AADsB,gEAnCL,IAmCK;;AAAA,uEA8HP,YAAiB;AAAA,UACxBC,QADwB,GACJ,MAAKC,KADD,CACxBD,QADwB;AAEhC,aAAOE,MAAM,CAACC,IAAP,CAAYH,QAAZ,EAAsBI,GAAtB,CAA0B,UAAAC,GAAG,EAAI;AACpC,YAAMC,KAAc,qBAAQN,QAAQ,CAACK,GAAD,CAAhB,CAApB;;AACA,eAAOC,KAAK,CAACN,QAAb;AACA,eAAOM,KAAP;AACH,OAJM,CAAP;AAKH,KArIyB;;AAAA,6DA8IjB,YAAY;AAAA,UACTC,QADS,GACW,MAAKR,KADhB,CACTQ,QADS;;AAEjB,UAAMC,OAAO,GAAG,MAAKC,gBAAL,EAAhB;;AACAF,MAAAA,QAAQ,CAACC,OAAD,CAAR;AACH,KAlJyB;;AAAA,yEA0JL,YAAY;AAAA,UACrBR,QADqB,GACD,MAAKC,KADJ,CACrBD,QADqB,EAG7B;;AACAE,MAAAA,MAAM,CAACC,IAAP,CAAYH,QAAZ,EAAsBU,OAAtB,CAA8B,UAAAL,GAAG;AAAA,eAAI,OAAOL,QAAQ,CAACK,GAAD,CAAR,CAAcL,QAAzB;AAAA,OAAjC;AACH,KA/JyB;;AAAA,6DAwKjB,YAAY;AAAA,UACTW,QADS,GACW,MAAKZ,KADhB,CACTY,QADS;;AAGjB,YAAKC,kBAAL,GAHiB,CAKjB;;;AACA,YAAKC,QAAL,CAAc;AAAEb,QAAAA,QAAQ,EAAE;AAAZ,OAAd,EAAgC;AAAA,eAAMW,QAAQ,EAAd;AAAA,OAAhC;AACH,KA/KyB;;AAAA,wEAuMN,YAAY;AAAA,wBAKjB,MAAKV,KALY;AAAA,UAEHa,EAFG,eAExBC,iBAFwB,CAEHD,EAFG;AAAA,UAGxBE,IAHwB,eAGxBA,IAHwB;AAAA,UAIxBC,WAJwB,eAIxBA,WAJwB;;AAM5B,UAAID,IAAI,KAAKxB,WAAT,IAAwBsB,EAA5B,EAAgC;AAC5B,cAAKI,WAAL,CAAiBJ,EAAjB,EAAqB,KAArB;AACH,OAFD,MAEO,IAAIE,IAAI,KAAKvB,YAAb,EAA2B;AAC9B,cAAK0B,WAAL,CAAiB,KAAjB;AACH,OAFM,MAEA,IAAIH,IAAI,KAAKtB,WAAT,IAAwBuB,WAA5B,EAAyC;AAC5C,cAAKG,MAAL,CAAYH,WAAZ;AACH,OAFM,MAEA,IAAID,IAAI,KAAKrB,aAAb,EAA4B;AAC/B,cAAK0B,YAAL;AACH,OAFM,MAEA;AACH,cAAM,IAAIC,KAAJ,CAAU,mCAAV,CAAN;AACH;AACJ,KAxNyB;;AAAA,oEAiOV,UAACC,KAAD,EAA0BC,IAA1B,EAAiD;AAC7D,YAAKX,QAAL,CAAc;AAAEG,QAAAA,IAAI,EAAEzB;AAAR,OAAd;AACA;;;AACAkC,MAAAA,OAAO,CAACF,KAAR,CAAcA,KAAd,EAAqBC,IAArB;AACA;AACH,KAtOyB;;AAAA,kEA+OZ,UAACE,IAAD,EAAkC;AAC5C;AACA,UAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC1B,cAAKR,WAAL,CAAiBQ,IAAjB;;AACA;AACH,OAL2C,CAO5C;;;AAP4C,UAQpCZ,EARoC,GAQdY,IARc,CAQpCZ,EARoC;AAAA,UAQhCa,IARgC,GAQdD,IARc,CAQhCC,IARgC;;AAS5C,UAAIA,IAAI,KAAKvC,WAAb,EAA0B;AACtB,cAAK8B,WAAL,CAAiBJ,EAAjB;AACH;AACJ,KA3PyB;;AAAA,kEAoUZ,UAACA,EAAD,EAAgE;AAAA,UAAlDc,sBAAkD,uEAAf,IAAe;AAAA,UAClEC,YADkE,GAC1C,MAAK9B,KADqC,CAClE8B,YADkE;AAAA,yBAS/D,MAAK5B,KAT0D;AAAA,UAG7C6B,SAH6C,gBAGtEf,iBAHsE,CAGjDD,EAHiD;AAAA,UAItEiB,aAJsE,gBAItEA,aAJsE;AAAA,UAKrDC,KALqD,gBAKtEC,eALsE;AAAA,+CAMtEhB,WANsE;AAAA,UAMtEA,WANsE,sCAMxD,EANwD;AAAA,UAOtEiB,MAPsE,gBAOtEA,MAPsE;AAAA,UAQtEC,aARsE,gBAQtEA,aARsE;AAU1E,UAAMC,QAAgB,GAAG,OAAOtB,EAAP,KAAc,QAAd,GAAyBA,EAAzB,GAA8Be,YAAvD;AACA,UAAMQ,gBAAgB,GAAGP,SAAS,IAAIA,SAAS,KAAKM,QAApD;AACA,UAAME,cAAc,GAAG,CAAC,CAACrB,WAAW,CAACsB,IAAZ,GAAmBC,MAA5C;AACA,UAAMC,MAAM,GAAGJ,gBAAgB,IAAIC,cAApB,GAAqC,CAArC,GAAyCP,aAAxD,CAb0E,CAaH;AAEvE;AACA;AACA;AACA;;AACA,UAAI,CAAC,MAAKW,SAAV,EAAqB;AACjB,cAAKC,WAAL,CAAiB3E,KAAjB;AACH,OArByE,CAuB1E;;;AACA,YAAK6C,QAAL,CAAc;AACVI,QAAAA,WAAW,EAAE,EADH;AAEVD,QAAAA,IAAI,EAAExB,WAFI;AAGVuB,QAAAA,iBAAiB,EAAE,MAAK6B,yBAAL,EAHT;AAIVb,QAAAA,aAAa,EAAEU;AAJL,OAAd,EAxB0E,CA+B1E;;;AACA,YAAKI,GAAL,CAASC,YAAT,GAAwBC,SAAxB,CACIX,QADJ,EAEIJ,KAFJ,EAGIS,MAHJ,EAIIP,MAJJ,EAKIC,aALJ,EAMI,UAACa,UAAD,EAA4B;AACxB,cAAKC,0BAAL,CAAgCD,UAAhC,EAA4CpB,sBAA5C;AACH,OARL,EASI,MAAKsB,aATT,EAUI;AAAEC,QAAAA,UAAU,EAAE;AAAd,OAVJ;AAYH,KAhXyB;;AAAA,mEAwaX,YAAY;AAAA,yBAC4B,MAAKlD,KADjC;AAAA,UACfD,QADe,gBACfA,QADe;AAAA,UACLkC,MADK,gBACLA,MADK;AAAA,UACGC,aADH,gBACGA,aADH;;AAEvB,YAAKtB,QAAL,CACI;AACII,QAAAA,WAAW,EAAE,EADjB;AAEID,QAAAA,IAAI,EAAErB,aAFV;AAGIoB,QAAAA,iBAAiB,EAAE;AACfmB,UAAAA,MAAM,EAANA,MADe;AAEfC,UAAAA,aAAa,EAAbA,aAFe;AAGfiB,UAAAA,aAAa,EAAE,GAHA;AAIfC,UAAAA,KAAK,EAAEnD,MAAM,CAACC,IAAP,CAAYH,QAAZ,EAAsBI,GAAtB,CAA0B,UAAAC,GAAG;AAAA,mBAAI,MAAKwC,GAAL,CAASS,QAAT,GAAoBC,GAApB,CAAwBlD,GAAxB,CAAJ;AAAA,WAA7B;AAJQ;AAHvB,OADJ,EAWI,MAAKmD,gBAXT;AAaH,KAvbyB;;AAAA,4EAgcF,UAACR,UAAD,EAAkC;AAAA,UAC9CjC,iBAD8C,GACjB,MAAKd,KADY,CAC9Cc,iBAD8C;;AAEtD,YAAKF,QAAL,CAAc;AACVE,QAAAA,iBAAiB,EAAE,SAAcA,iBAAd,EAAiCiC,UAAjC;AADT,OAAd;AAGH,KArcyB;;AAAA,sEAgdE5F,QAAQ,CAAC,UAAC0D,EAAD,EAAa2C,KAAb,EAAqC;AAAA,yBACpB,MAAKxD,KADe;AAAA,UAC9D8B,aAD8D,gBAC9DA,aAD8D;AAAA,UAC/CE,eAD+C,gBAC/CA,eAD+C;;AAGtE,YAAKY,GAAL,CACKa,YADL,GAEKtC,MAFL,CAEYN,EAFZ,EAEgB2C,KAFhB,EAEuBxB,eAFvB,EAEwCF,aAFxC,EAEuD,MAAK4B,qBAF5D,EAEmF,MAAKT,aAFxF,EAEuG;AAC/FC,QAAAA,UAAU,EAAE;AADmF,OAFvG;AAKH,KARmC,EAQjCzE,uBARiC,CAhdV;;AAAA,6DAiejB,UAAC+E,KAAD,EAAyB;AAAA,UACtB5B,YADsB,GACE,MAAK9B,KADP,CACtB8B,YADsB;AAAA,yBAMnB,MAAK5B,KANc;AAAA,UAGLa,EAHK,gBAG1BC,iBAH0B,CAGLD,EAHK;AAAA,UAI1BiB,aAJ0B,gBAI1BA,aAJ0B;AAAA,UAK1Bd,WAL0B,gBAK1BA,WAL0B;AAO9B,UAAMmB,QAAQ,GAAG,OAAOtB,EAAP,KAAc,QAAd,GAAyBA,EAAzB,GAA8Be,YAA/C;AACA,UAAM+B,YAAoB,GAAGH,KAAK,CAAClB,IAAN,EAA7B;;AAEA,UAAI,CAACkB,KAAL,EAAY;AACR;AACA,cAAKI,eAAL,CAAqBC,MAArB,GAFQ,CAIR;AACA;;;AACA,cAAKjD,QAAL,CAAc;AAAEkB,UAAAA,aAAa,EAAE;AAAjB,SAAd,EAAoC,YAAM;AACtC,gBAAKb,WAAL,CAAiBkB,QAAjB,EAA2B,KAA3B;AACH,SAFD;;AAIA;AACH;;AAED,UAAI,CAACwB,YAAL,EAAmB;AACf;AACA;AACA,cAAK/C,QAAL,CAAc;AACVI,UAAAA,WAAW,EAAEwC;AADH,SAAd;;AAGA;AACH;;AAED,YAAK5C,QAAL,CAAc;AACVI,QAAAA,WAAW,EAAEwC,KADH;AAEVzC,QAAAA,IAAI,EAAEtB,WAFI;AAGVqB,QAAAA,iBAAiB,EAAE,MAAK6B,yBAAL,EAHT;AAIVb,QAAAA,aAAa,EAAE6B,YAAY,KAAK3C,WAAjB,GAA+Bc,aAA/B,GAA+C;AAJpD,OAAd;;AAOA,YAAK8B,eAAL,CAAqBzB,QAArB,EAA+BqB,KAA/B;AACH,KAzgByB;;AAAA,6DAkhBjB,YAAY;AAAA,kCAGN,MAAKxD,KAHC,CAEbc,iBAFa;AAAA,UAEQD,EAFR,yBAEQA,EAFR;AAAA,UAEYiD,WAFZ,yBAEYA,WAFZ;AAAA,UAITC,SAJS,GAIY,MAAKjE,KAJjB,CAITiE,SAJS;;AAKjB,UAAI,CAAClD,EAAD,IAAO,CAACiD,WAAZ,EAAyB;AACrB;AACH;;AAPgB,UASGE,mBATH,GAS8CF,WAT9C,CASTG,UATS;;AAUjB,UAAI,CAACF,SAAD,IAAc,CAACC,mBAAnB,EAAwC;AACpC;AACH;;AAED,YAAKpD,QAAL,CAAc;AAAEsD,QAAAA,iBAAiB,EAAE;AAArB,OAAd;AACH,KAjiByB;;AAAA,2EA0iBH,YAAY;AAAA,UAENrD,EAFM,GAGpB,MAAKb,KAHe,CAE3Bc,iBAF2B,CAEND,EAFM;;AAI/B,YAAKI,WAAL,CAAiBJ,EAAjB,EAAqB,KAArB;AACH,KA/iByB;;AAAA,mEAujBX,YAAY;AACvB,YAAKsD,oBAAL;AACH,KAzjByB;;AAAA,2EAkkBH,UAACC,IAAD,EAAyB;AAAA,yBACkB,MAAKpE,KADvB;AAAA,UACpCqE,uBADoC,gBACpCA,uBADoC;AAAA,UACXvD,iBADW,gBACXA,iBADW;AAAA,UAEpCwD,kBAFoC,GAEN,MAAKxE,KAFC,CAEpCwE,kBAFoC;;AAG5C,UAAI,CAACA,kBAAL,EAAyB;AACrB;AACH;;AAL2C,UAOpCzD,EAPoC,GAOJC,iBAPI,CAOpCD,EAPoC;AAAA,UAOhCiD,WAPgC,GAOJhD,iBAPI,CAOhCgD,WAPgC;;AAQ5C,UAAI,CAACjD,EAAD,IAAO,CAACiD,WAAZ,EAAyB;AACrB;AACH;;AAV2C,UAYpCG,UAZoC,GAYFH,WAZE,CAYpCG,UAZoC;;AAa5C,UAAI,CAACA,UAAL,EAAiB;AACb;AACH;;AAED,UAAI,CAACI,uBAAD,IAA4B,CAACD,IAAjC,EAAuC;AACnC,cAAKxD,QAAL,CAAc;AAAEyD,UAAAA,uBAAuB,EAAE,IAA3B;AAAiCE,UAAAA,SAAS,EAAE;AAA5C,SAAd;;AACA;AACH;;AAED,UAAI,CAACH,IAAL,EAAW;AACP,cAAKxD,QAAL,CAAc;AACV2D,UAAAA,SAAS,EAAE1F,4BADD;AAEV2F,UAAAA,SAAS,EAAE;AAFD,SAAd;;AAIA;AACH;;AAED,UAAIJ,IAAI,CAAC7B,MAAL,GAAc,GAAlB,EAAuB;AACnB,cAAK3B,QAAL,CAAc;AACV2D,UAAAA,SAAS,EAAEzF,6BADD;AAEV0F,UAAAA,SAAS,EAAE;AAFD,SAAd;;AAIA;AACH;;AAED,YAAK5D,QAAL,CAAc;AAAE4D,QAAAA,SAAS,EAAE;AAAb,OAAd;;AACA,YAAK5B,GAAL,CAASC,YAAT,GAAwB4B,MAAxB,CACI5D,EADJ,EAEIuD,IAFJ,EAGI,YAAM;AACF,cAAKnD,WAAL,CAAiBJ,EAAjB;AACH,OALL,EAMI,gBAA8B;AAAA,YAAf6D,MAAe,QAA3BC,QAA2B,CAAfD,MAAe;;AAC1B,cAAK9D,QAAL,CAAc;AACV2D,UAAAA,SAAS,EAAEG,MAAM,KAAK,GAAX,GAAiB9F,2BAAjB,GAA+CC,4BADhD;AAEV2F,UAAAA,SAAS,EAAE;AAFD,SAAd;AAIH,OAXL;AAaH,KAtnByB;;AAAA,6DAgoBjB,UAAC/C,IAAD,EAAwE;AAAA,sFAAb,EAAa;AAAA,wCAAtDmD,eAAsD;AAAA,UAAtDA,eAAsD,sCAApC,IAAoC;;AAAA,wBACH,MAAK9E,KADF;AAAA,UACrE+E,iBADqE,eACrEA,iBADqE;AAAA,UAC5CC,cAD4C,eAClDpD,IADkD;AAAA,UAC5BqD,aAD4B,eAC5BA,aAD4B;AAAA,yBAMlE,MAAK/E,KAN6D;AAAA,UAGzEe,IAHyE,gBAGzEA,IAHyE;AAAA,UAIzEhB,QAJyE,gBAIzEA,QAJyE;AAAA,+CAKzEe,iBALyE,CAKpDsC,KALoD;AAAA,UAKpDA,KALoD,sCAK5C,EAL4C;AAAA,UAOrEvC,EAPqE,GAO/CY,IAP+C,CAOrEZ,EAPqE;AAAA,UAOjEa,IAPiE,GAO/CD,IAP+C,CAOjEC,IAPiE;;AAS7E,UAAI,CAACb,EAAD,IAAO,CAACa,IAAR,IAAgBoD,cAAc,CAACE,OAAf,CAAuBtD,IAAvB,MAAiC,CAAC,CAAtD,EAAyD;AACrD;AACH;;AAED,UAAMuD,YAA2B,GAAGhF,MAAM,CAACC,IAAP,CAAYH,QAAZ,CAApC;AACA,UAAMmF,aAAqB,GAAGD,YAAY,CAAC1C,MAA3C;AACA,UAAM4C,oBAA6B,GAAGD,aAAa,KAAKH,aAAxD;AACA,UAAMK,qBAA8B,GAAGL,aAAa,KAAK,CAAzD;;AACA,UAAMM,QAAgB,GAAG,MAAKzC,GAAL,CAAS0C,MAAT,CAAgB5D,IAAhB,EAAsB6D,WAAtB,CAAkC1E,EAAlC,CAAzB;;AACA,UAAM2E,QAAiB,GAAGzF,QAAQ,CAACsF,QAAD,CAAlC;;AACA,UAAMI,iBAA0B,GAAG,MAAK7C,GAAL,CAASS,QAAT,GAAoBC,GAApB,CAAwB+B,QAAxB,CAAnC;;AACA,UAAMK,eAAe,GAAGT,YAAY,CAACD,OAAb,CAAqBK,QAArB,MAAmC,CAAC,CAA5D,CApB6E,CAsB7E;AACA;;AACA,UAAIG,QAAQ,IAAIA,QAAQ,KAAKC,iBAA7B,EAAgD;AAC5C;AACA;AACA,eAAOD,QAAQ,CAACzF,QAAhB;AACA,eAAOA,QAAQ,CAACsF,QAAD,CAAf;AACH,OALD,MAKO;AACH;AACA;AACA;AACA;AAEA;AACA;AACA;AACA,YAAIF,oBAAoB,IAAI,CAACC,qBAAzB,IAAkD,CAACM,eAAvD,EAAwE;AACpE;AACH,SAXE,CAaH;;;AACA,YAAIR,aAAa,GAAG,CAAhB,IAAqBE,qBAAzB,EAAgD;AAC5C,cAAMO,KAAK,GAAGV,YAAY,CAAC,CAAD,CAA1B,CAD4C,CACb;;AAC/B,iBAAOlF,QAAQ,CAAC4F,KAAD,CAAR,CAAgB5F,QAAvB;AACA,iBAAOA,QAAQ,CAAC4F,KAAD,CAAf;AACH,SAlBE,CAoBH;;;AACAlE,QAAAA,IAAI,CAAC1B,QAAL,GAAgB,IAAhB;AACAA,QAAAA,QAAQ,CAACsF,QAAD,CAAR,GAAqB5D,IAArB,CAtBG,CAwBH;AACA;AACA;;AACA,YAAIoD,iBAAiB,IAAID,eAAzB,EAA0C;AACtC,gBAAKgB,mBAAL,CAAyBnE,IAAzB;AACH;AACJ;;AAED,UAAMoE,UAAU,GAAGzC,KAAK,CAAC0C,SAAN,CAAgB,UAACC,CAAD;AAAA,eAAgBA,CAAC,CAAClF,EAAF,KAASY,IAAI,CAACZ,EAA9B;AAAA,OAAhB,CAAnB;;AACA,YAAKD,QAAL,CAAc;AAAEb,QAAAA,QAAQ,EAARA,QAAF;AAAY8F,QAAAA,UAAU,EAAVA;AAAZ,OAAd,EAAwC,YAAM;AAC1C,YAAI9E,IAAI,KAAKrB,aAAb,EAA4B;AACxB;AACA,gBAAK0B,YAAL;AACH;AACJ,OALD;AAMH,KApsByB;;AAAA,0EA2sBJ,UAACK,IAAD,EAAyB;AAAA,UACnCZ,EADmC,GACbY,IADa,CACnCZ,EADmC;AAAA,UAC/Ba,IAD+B,GACbD,IADa,CAC/BC,IAD+B;;AAG3C,cAAQA,IAAR;AACI,aAAKvC,WAAL;AACI,gBAAKyD,GAAL,CAASC,YAAT,GAAwBmD,eAAxB,CAAwCnF,EAAxC,EAA4C,MAAKoF,uBAAjD,EAA0E5I,IAA1E,EAAgF;AAC5E6I,YAAAA,MAAM,EAAEvG;AADoE,WAAhF;;AAGA;;AACJ,aAAKT,SAAL;AACI,gBAAK0D,GAAL,CACKuD,UADL,GAEKC,OAFL,CAEavF,EAFb,EAEiB,MAAKoF,uBAFtB,EAE+C5I,IAF/C,EAEqD;AAAE6I,YAAAA,MAAM,EAAEvG;AAAV,WAFrD;;AAGA;;AACJ,aAAKP,YAAL;AACI,gBAAKwD,GAAL,CACKyD,aADL,GAEKC,UAFL,CAEgBzF,EAFhB,EAEoB,MAAKoF,uBAFzB,EAEkD5I,IAFlD,EAEwD;AAAE6I,YAAAA,MAAM,EAAEvG;AAAV,WAFxD;;AAGA;;AACJ;AACI,gBAAM,IAAI0B,KAAJ,CAAU,cAAV,CAAN;AAjBR;AAmBH,KAjuByB;;AAAA,8EA0uBA,UAACI,IAAD,EAAmB;AACzC;AACA,UAAI,CAACA,IAAI,CAACzC,iBAAD,CAAT,EAA8B;AAC1B,cAAKuH,iBAAL,CAAuBC,SAAvB,EAAkC/E,IAAlC;AACH,OAFD,MAEO;AAAA,YACK1B,QADL,GACkB,MAAKC,KADvB,CACKD,QADL;AAAA,YAEKc,EAFL,GAEkBY,IAFlB,CAEKZ,EAFL;AAAA,YAESa,IAFT,GAEkBD,IAFlB,CAESC,IAFT,EAGH;;AACA,YAAM2D,QAAQ,GAAG,MAAKzC,GAAL,CAAS0C,MAAT,CAAgB5D,IAAhB,EAAsB6D,WAAtB,CAAkC1E,EAAlC,CAAjB,CAJG,CAKH;;;AACA,cAAK4F,sBAAL,CAA4BhF,IAA5B;;AACA,YAAIA,IAAI,CAAC1B,QAAL,IAAiB0B,IAAI,KAAK1B,QAAQ,CAACsF,QAAD,CAAtC,EAAkD;AAC9C,gBAAKqB,MAAL,CAAYjF,IAAZ,EAAkB;AAAEmD,YAAAA,eAAe,EAAE;AAAnB,WAAlB;AACH;AACJ;AACJ,KAzvByB;;AAAA,wEAmwBN,UAAC+B,MAAD,EAAkBlF,IAAlB,EAA0C;AAAA,UAClDoD,iBADkD,GACrB,MAAK/E,KADgB,CAClD+E,iBADkD;;AAE1D,UAAI,CAACpD,IAAD,IAAS,CAACoD,iBAAd,EAAiC;AAC7B;AACH;;AAJyD,UAMlDf,WANkD,GAMnBrC,IANmB,CAMlDqC,WANkD;AAAA,UAMrCpC,IANqC,GAMnBD,IANmB,CAMrCC,IANqC;;AAO1D,UAAI,CAACoC,WAAD,IAAgB,CAACpC,IAArB,EAA2B;AACvB;AACH;;AATyD,UAWlDkF,oBAXkD,GAWN9C,WAXM,CAWlD8C,oBAXkD;;AAY1D,UAAID,MAAM,KAAKH,SAAX,IAAwB,CAACI,oBAA7B,EAAmD;AAC/C;AACH;;AAED,YAAKhE,GAAL,CAAS0C,MAAT,CAAgB5D,IAAhB,EAAsBmF,KAAtB,CAA4BpF,IAA5B,EAAkCkF,MAAlC,EAA0C,UAACG,WAAD,EAA0B;AAChE,cAAKL,sBAAL,CAA4BK,WAA5B;;AACA,YAAIrF,IAAI,CAAC1B,QAAT,EAAmB;AACf,gBAAK2G,MAAL,CAAYI,WAAZ,EAAyB;AAAElC,YAAAA,eAAe,EAAE;AAAnB,WAAzB;AACH;AACJ,OALD;AAMH,KAzxByB;;AAAA,6EAiyBD,UAACnD,IAAD,EAAmB;AAAA,UAChCX,iBADgC,GACV,MAAKd,KADK,CAChCc,iBADgC;AAAA,kCAEjBA,iBAFiB,CAEhCsC,KAFgC;AAAA,UAEhCA,KAFgC,sCAExB,EAFwB;AAGxC,UAAM2D,QAAQ,GAAG;AACbjG,QAAAA,iBAAiB,oBACVA,iBADU;AAEbsC,UAAAA,KAAK,EAAEA,KAAK,CAACjD,GAAN,CAAU,UAAA6G,cAAc;AAAA,mBAAKA,cAAc,CAACnG,EAAf,KAAsBY,IAAI,CAACZ,EAA3B,GAAgCY,IAAhC,GAAuCuF,cAA5C;AAAA,WAAxB;AAFM;AADJ,OAAjB;;AAMA,YAAKpG,QAAL,CAAcmG,QAAd;AACH,KA3yByB;;AAAA,2DAqzBnB,UAAC9E,MAAD,EAAiBC,aAAjB,EAAkD;AAAA,UAE5BrB,EAF4B,GAG1C,MAAKb,KAHqC,CAEjDc,iBAFiD,CAE5BD,EAF4B;;AAIrD,UAAIA,EAAJ,EAAQ;AACJ,cAAKD,QAAL,CAAc;AAAEqB,UAAAA,MAAM,EAANA,MAAF;AAAUC,UAAAA,aAAa,EAAbA;AAAV,SAAd,EAAyC,MAAK+E,iBAA9C;AACH;AACJ,KA5zByB;;AAAA,+DAq0Bf,UAACC,KAAD,EAAkC;AACzC,YAAKA,KAAL,GAAaA,KAAb;AACH,KAv0ByB;;AAAA,kEA+0BZ,YAAY;AAAA,UACdrB,UADc,GACQ,MAAK7F,KADb,CACd6F,UADc;;AAGtB,YAAKjF,QAAL,CAAc;AACV4D,QAAAA,SAAS,EAAE,KADD;AAEVH,QAAAA,uBAAuB,EAAE,KAFf;AAGVH,QAAAA,iBAAiB,EAAE;AAHT,OAAd;;AAHsB,yBAYX,MAAKlE,KAZM;AAAA,UAUlBD,QAVkB,gBAUlBA,QAVkB;AAAA,+CAWlBe,iBAXkB,CAWGsC,KAXH;AAAA,UAWGA,KAXH,sCAWW,EAXX;;AAatB,UAAIrD,QAAQ,IAAIqD,KAAK,CAACb,MAAN,GAAe,CAA/B,EAAkC;AAC9BxE,QAAAA,KAAK,CAAC,MAAK2E,WAAN,0BAAoCmD,UAApC,EAAL;AACH;AACJ,KA/1ByB;;AAAA,gEAw2Bd,UAACsB,KAAD,EAAgD;AACxD,UAAIrJ,cAAc,CAACqJ,KAAK,CAACC,MAAP,CAAlB,EAAkC;AAC9B;AACH;;AAHuD,UAKhDxF,YALgD,GAKxB,MAAK9B,KALmB,CAKhD8B,YALgD;AAMxD,UAAMxB,GAAG,GAAG+G,KAAK,CAAC/G,GAAN,CAAUiH,WAAV,EAAZ;;AAEA,cAAQjH,GAAR;AACI,aAAK,GAAL;AACIrC,UAAAA,KAAK,CAAC,MAAK2E,WAAN,EAAmB,iCAAnB,EAAsD,KAAtD,CAAL;AACAyE,UAAAA,KAAK,CAACG,cAAN;AACA;;AACJ,aAAK,WAAL;AACIvJ,UAAAA,KAAK,CAAC,MAAK2E,WAAN,EAAmB,eAAnB,EAAoC,KAApC,CAAL;;AACA,gBAAK9B,QAAL,CAAc;AAAEiF,YAAAA,UAAU,EAAE;AAAd,WAAd;;AACAsB,UAAAA,KAAK,CAACG,cAAN;AACA;;AACJ,aAAK,GAAL;AACI;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrBxJ,YAAAA,KAAK,CAAC,MAAK2E,WAAN,EAAmB,uBAAnB,EAA4C,KAA5C,CAAL;AACAyE,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAKtG,WAAL,CAAiBW,YAAjB;;AACAuF,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAKC,MAAL;;AACAL,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAK1D,MAAL;;AACAsD,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAKnG,YAAL;;AACA+F,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAKE,MAAL;;AACAN,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAKrG,WAAL;;AACAiG,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ,aAAK,GAAL;AACI,cAAI,MAAKC,cAAT,EAAyB;AACrB,kBAAKG,YAAL;;AACAP,YAAAA,KAAK,CAACG,cAAN;AACH;;AAED;;AACJ;AACI,gBAAKC,cAAL,GAAsB,KAAtB;AACA;AAtER;;AAyEA,YAAKA,cAAL,GAAsBnH,GAAG,KAAK,GAA9B;AACH,KA17ByB;;AAAA,oEAm8BV,UAACyF,UAAD,EAAwB;AACpC,YAAKjF,QAAL,CAAc;AAAEiF,QAAAA,UAAU,EAAVA;AAAF,OAAd;AACH,KAr8ByB;;AAAA,+DA48Bf,UAAC8B,SAAD,EAAuB;AAC9B,YAAK/G,QAAL,CAAc;AAAEkB,QAAAA,aAAa,EAAE6F;AAAjB,OAAd,EAA4C,MAAKV,iBAAjD;AACH,KA98ByB;;AAAA,QAIlBW,OAJkB,GAkBlB9H,KAlBkB,CAIlB8H,OAJkB;AAAA,QAKlBC,UALkB,GAkBlB/H,KAlBkB,CAKlB+H,UALkB;AAAA,QAMlBC,WANkB,GAkBlBhI,KAlBkB,CAMlBgI,WANkB;AAAA,QAOlBC,eAPkB,GAkBlBjI,KAlBkB,CAOlBiI,eAPkB;AAAA,QAQlBC,QARkB,GAkBlBlI,KAlBkB,CAQlBkI,QARkB;AAAA,QASlBC,kBATkB,GAkBlBnI,KAlBkB,CASlBmI,kBATkB;AAAA,QAUlBC,mBAVkB,GAkBlBpI,KAlBkB,CAUlBoI,mBAVkB;AAAA,QAWlBtG,aAXkB,GAkBlB9B,KAlBkB,CAWlB8B,YAXkB;AAAA,QAYlBuG,UAZkB,GAkBlBrI,KAlBkB,CAYlBqI,UAZkB;AAAA,QAalBC,kBAbkB,GAkBlBtI,KAlBkB,CAalBsI,kBAbkB;AAAA,QAclBnG,OAdkB,GAkBlBnC,KAlBkB,CAclBmC,MAdkB;AAAA,QAelBC,cAfkB,GAkBlBpC,KAlBkB,CAelBoC,aAfkB;AAAA,QAgBlBmG,KAhBkB,GAkBlBvI,KAlBkB,CAgBlBuI,KAhBkB;AAAA,QAiBlBC,UAjBkB,GAkBlBxI,KAlBkB,CAiBlBwI,UAjBkB;AAoBtB,UAAK1F,GAAL,GAAW,IAAI5E,GAAJ,CAAQ;AACf4J,MAAAA,OAAO,EAAPA,OADe;AAEfC,MAAAA,UAAU,EAAVA,UAFe;AAGfhH,MAAAA,EAAE,YAAKxB,sBAAL,SAA8BuC,aAA9B,CAHa;AAIfoG,MAAAA,QAAQ,EAARA,QAJe;AAKfC,MAAAA,kBAAkB,EAAlBA,kBALe;AAMfC,MAAAA,mBAAmB,EAAnBA,mBANe;AAOfC,MAAAA,UAAU,EAAVA,UAPe;AAQfC,MAAAA,kBAAkB,EAAlBA,kBARe;AASfC,MAAAA,KAAK,EAALA,KATe;AAUfC,MAAAA,UAAU,EAAVA;AAVe,KAAR,CAAX;AAaA,UAAKzH,EAAL,GAAUzD,QAAQ,CAAC,MAAD,CAAlB;AAEA,UAAK4C,KAAL,GAAa;AACTiC,MAAAA,MAAM,EAANA,OADS;AAETC,MAAAA,aAAa,EAAbA,cAFS;AAGTqG,MAAAA,QAAQ,EAAE,EAHD;AAITzH,MAAAA,iBAAiB,EAAE,EAJV;AAKTgB,MAAAA,aAAa,EAAEiG,eAAe,IAAID,WAAW,GAAG,CAAlB,CALrB;AAMT9F,MAAAA,eAAe,EAAE+F,eANR;AAOThI,MAAAA,QAAQ,EAAE,EAPD;AAQTiB,MAAAA,WAAW,EAAE,EARJ;AASTD,MAAAA,IAAI,EAAExB,WATG;AAUT8E,MAAAA,uBAAuB,EAAE,KAVhB;AAWTH,MAAAA,iBAAiB,EAAE,KAXV;AAYT2B,MAAAA,UAAU,EAAE,CAZH;AAaTrB,MAAAA,SAAS,EAAE,KAbF;AAcTD,MAAAA,SAAS,EAAE;AAdF,KAAb;AAnCsB;AAmDzB;AAED;;;;;;;;;;iCAMmB;AACf,WAAK3B,GAAL,CAAS4F,OAAT,CAAiB,IAAjB;AACH;AAED;;;;;;;;;;2CAOuB;AACnB,WAAKC,UAAL;AACH;AAED;;;;;;;;;;wCAOoB;AAAA,yBACgC,KAAK3I,KADrC;AAAA,UACR4I,WADQ,gBACRA,WADQ;AAAA,UACKC,eADL,gBACKA,eADL;AAEhB,WAAKjG,WAAL,GAAqBkG,QAAQ,CAACC,cAAT,CAAwB,KAAKhI,EAA7B,CAArB;AACA,WAAKiI,UAAL,GAAoB,KAAKpG,WAAL,CAAiBqG,iBAArC;;AAEA,UAAIL,WAAW,KAAK/J,oBAApB,EAA0C;AACtC,aAAKuC,WAAL;AACH,OAFD,MAEO;AACH,aAAKD,WAAL,CAAiB0H,eAAjB;AACH;AACJ;AAED;;;;;;;;;;;8CAQ6DK,S,EAAwB;AAAA,UAA/CC,YAA+C,SAAhEN,eAAgE;AAAA,UACzEA,eADyE,GAC9C,KAAK7I,KADyC,CACzE6I,eADyE;AAAA,UAGxD9H,EAHwD,GAItEmI,SAJsE,CAG7ElI,iBAH6E,CAGxDD,EAHwD;;AAMjF,UAAIoI,YAAY,KAAKN,eAArB,EAAsC;AAClC;AACH;;AAED,UAAI,OAAOA,eAAP,KAA2B,QAA3B,IAAuC9H,EAAE,KAAK8H,eAAlD,EAAmE;AAC/D,aAAK1H,WAAL,CAAiB0H,eAAjB;AACH;AACJ;AAED;;;;;;;;;;;;;;AA6DA;;;;;;;gDAOwC;AAAA,UAC5B7H,iBAD4B,GACC,KAAKd,KADN,CAC5Bc,iBAD4B;AAEpC,aAAO,SAAcA,iBAAd,EAAiC;AACpCqC,QAAAA,aAAa,EAAE;AADqB,OAAjC,CAAP;AAGH;AAED;;;;;;;;;;;;AA8DA;;;;;;uCAMyB;AAAA,UACb+F,SADa,GACQ,KAAKpJ,KADb,CACboJ,SADa;AAAA,UAGI/F,aAHJ,GAIV,KAAKnD,KAJK,CAGjBc,iBAHiB,CAGIqC,aAHJ,EAMrB;;AACA,UAAI,KAAKV,SAAL,IAAkB,CAACyG,SAAvB,EAAkC;AAC9B,aAAKzG,SAAL,GAAiB,KAAjB;AACA;AACH,OAVoB,CAYrB;;;AACA,UAAIU,aAAa,KAAK,GAAlB,IAAyB,CAACtF,kBAAkB,CAAC+K,QAAQ,CAACO,aAAV,CAAhD,EAA0E;AACtEpL,QAAAA,KAAK,CAAC,KAAK2E,WAAN,EAAmB,eAAnB,CAAL;AACA,aAAK9B,QAAL,CAAc;AAAEiF,UAAAA,UAAU,EAAE;AAAd,SAAd;AACH;;AAED,WAAKpD,SAAL,GAAiB,KAAjB;AACH;AAED;;;;;;;;;;;+CAQ2BM,U,EAAwBpB,sB,EAAuC;AAAA,yBACtB,KAAK7B,KADiB;AAAA,UAC9EsJ,8BAD8E,gBAC9EA,8BAD8E;AAAA,UAC9CxH,YAD8C,gBAC9CA,YAD8C;AAAA,UAE9Ef,EAF8E,GAErDkC,UAFqD,CAE9ElC,EAF8E;AAAA,UAE1EuD,IAF0E,GAErDrB,UAFqD,CAE1EqB,IAF0E;AAItF,UAAMiF,WAAW,GAAG;AAChBvI,QAAAA,iBAAiB,EAAEiC,UADH;AAEhBwF,QAAAA,QAAQ,EAAE1H,EAAE,KAAKe,YAAP,GAAsBwC,IAAtB,GAA6B;AAFvB,OAApB,CAJsF,CAStF;;AACA,UAAM2C,QAAQ,GAAGqC,8BAA8B,qBAAQC,WAAR;AAAqBtJ,QAAAA,QAAQ,EAAE;AAA/B,WAAsCsJ,WAArF,CAVsF,CAYtF;;AACA,WAAKC,WAAL,GAbsF,CAetF;;AACA,UAAIF,8BAAJ,EAAoC;AAChC,aAAKzI,kBAAL;AACH;;AAED,UAAIgB,sBAAJ,EAA4B;AACxB;AACA,aAAKf,QAAL,CAAcmG,QAAd,EAAwB,KAAKxD,gBAA7B;AACH,OAHD,MAGO;AACH,aAAK3C,QAAL,CAAcmG,QAAd;AACH;AACJ;AAED;;;;;;;;;;;;AAsDA;;;;;;;;2CAQuBhE,U,EAAwBpB,sB,EAAuC;AAClF,UAAMoF,QAAQ,GAAG;AAAEjG,QAAAA,iBAAiB,EAAEiC;AAArB,OAAjB;;AACA,UAAIpB,sBAAJ,EAA4B;AACxB,aAAKf,QAAL,CAAcmG,QAAd,EAAwB,KAAKxD,gBAA7B;AACH,OAFD,MAEO;AACH,aAAK3C,QAAL,CAAcmG,QAAd;AACH;AACJ;AAED;;;;;;;;;;;;kCAS0D;AAAA;;AAAA,UAA9CpF,sBAA8C,uEAAZ,IAAY;AAAA,UAC9CC,YAD8C,GACtB,KAAK9B,KADiB,CAC9C8B,YAD8C,EAGtD;;AACA,WAAKhB,QAAL,CAAc;AACVI,QAAAA,WAAW,EAAE,EADH;AAEVD,QAAAA,IAAI,EAAEvB,YAFI;AAGVsB,QAAAA,iBAAiB,EAAE,KAAK6B,yBAAL,EAHT;AAIVb,QAAAA,aAAa,EAAE;AAJL,OAAd,EAJsD,CAWtD;;AACA,WAAKc,GAAL,CAAS2G,aAAT,GAAyBC,OAAzB,CACI5H,YADJ,EAEI,UAACmB,UAAD,EAA4B;AACxB,QAAA,MAAI,CAAC0G,sBAAL,CAA4B1G,UAA5B,EAAwCpB,sBAAxC;AACH,OAJL,EAKI,KAAKsB,aALT,EAMI;AAAEC,QAAAA,UAAU,EAAE;AAAd,OANJ;AAQH;AAED;;;;;;;;;;AA8iBA;;;;;;;6BAOS;AAAA,yBA6BM,KAAKpD,KA7BX;AAAA,UAEDkI,QAFC,gBAEDA,QAFC;AAAA,UAGD0B,QAHC,gBAGDA,QAHC;AAAA,UAID9H,YAJC,gBAIDA,YAJC;AAAA,UAKD+H,OALC,gBAKDA,OALC;AAAA,UAMD5F,SANC,gBAMDA,SANC;AAAA,UAODc,iBAPC,gBAODA,iBAPC;AAAA,UAQDP,kBARC,gBAQDA,kBARC;AAAA,UASDsF,oBATC,gBASDA,oBATC;AAAA,UAUDC,UAVC,gBAUDA,UAVC;AAAA,UAWD9E,aAXC,gBAWDA,aAXC;AAAA,UAYDrD,IAZC,gBAYDA,IAZC;AAAA,UAaD2G,KAbC,gBAaDA,KAbC;AAAA,UAcDF,UAdC,gBAcDA,UAdC;AAAA,UAeDC,kBAfC,gBAeDA,kBAfC;AAAA,UAgBDR,OAhBC,gBAgBDA,OAhBC;AAAA,UAiBDU,UAjBC,gBAiBDA,UAjBC;AAAA,UAkBDwB,mBAlBC,gBAkBDA,mBAlBC;AAAA,UAmBDC,mBAnBC,gBAmBDA,mBAnBC;AAAA,UAoBDC,OApBC,gBAoBDA,OApBC;AAAA,UAqBDC,SArBC,gBAqBDA,SArBC;AAAA,UAsBDC,UAtBC,gBAsBDA,UAtBC;AAAA,UAuBDC,iBAvBC,gBAuBDA,iBAvBC;AAAA,UAwBDC,iBAxBC,gBAwBDA,iBAxBC;AAAA,UAyBDnC,kBAzBC,gBAyBDA,kBAzBC;AAAA,UA0BDC,mBA1BC,gBA0BDA,mBA1BC;AAAA,UA2BDmC,yBA3BC,gBA2BDA,yBA3BC;AAAA,UA4BDC,kBA5BC,gBA4BDA,kBA5BC;AAAA,yBA0CM,KAAKtK,KA1CX;AAAA,UA+BDe,IA/BC,gBA+BDA,IA/BC;AAAA,UAgCDwH,QAhCC,gBAgCDA,QAhCC;AAAA,UAiCDxI,QAjCC,gBAiCDA,QAjCC;AAAA,UAkCDe,iBAlCC,gBAkCDA,iBAlCC;AAAA,UAmCDkB,eAnCC,gBAmCDA,eAnCC;AAAA,UAoCDhB,WApCC,gBAoCDA,WApCC;AAAA,UAqCDqD,uBArCC,gBAqCDA,uBArCC;AAAA,UAsCDH,iBAtCC,gBAsCDA,iBAtCC;AAAA,UAuCDM,SAvCC,gBAuCDA,SAvCC;AAAA,UAwCDD,SAxCC,gBAwCDA,SAxCC;AAAA,UAyCDsB,UAzCC,gBAyCDA,UAzCC;AAAA,UA2CGhF,EA3CH,GA2CuDC,iBA3CvD,CA2CGD,EA3CH;AAAA,UA2CO2B,MA3CP,GA2CuD1B,iBA3CvD,CA2CO0B,MA3CP;AAAA,UA2CesB,WA3Cf,GA2CuDhD,iBA3CvD,CA2CegD,WA3Cf;AAAA,UA2C4ByG,UA3C5B,GA2CuDzJ,iBA3CvD,CA2C4ByJ,UA3C5B;;AAAA,kBA4CqCzG,WAAW,IAAI,EA5CpD;AAAA,UA4CGG,UA5CH,SA4CGA,UA5CH;;AA6CL,UAAMiB,aAAqB,GAAGjF,MAAM,CAACC,IAAP,CAAYH,QAAZ,EAAsBwC,MAApD;AACA,UAAMiI,cAAc,GAAGzF,aAAa,KAAK,CAAzC;AACA,UAAMI,oBAA6B,GAAGD,aAAa,KAAKH,aAAlB,IAAmC,CAACyF,cAA1E;AACA,UAAMC,WAAoB,GAAG1G,SAAS,IAAI,CAAC,CAACE,UAA5C;AACA,UAAMyG,WAAoB,GAAGpG,kBAAkB,IAAI,CAAC,CAACL,UAArD;AACA,UAAM0G,cAAc,GAAGzN,UAAU,CAAC,QAAD,EAAW+M,SAAX,CAAjC;AAEA;;AACA;;AACA,aACI,oBAAC,gBAAD;AAAkB,QAAA,QAAQ,EAAEjC,QAA5B;AAAsC,QAAA,QAAQ,EAAE0B;AAAhD,SACI;AAAK,QAAA,EAAE,EAAE,KAAK7I,EAAd;AAAkB,QAAA,SAAS,EAAE8J,cAA7B;AAA6C,QAAA,GAAG,EAAET,UAAlD;AAA8D,uBAAY;AAA1E,SACI;AAAK,QAAA,SAAS,EAAC,gBAAf;AAAgC,QAAA,SAAS,EAAE,KAAKU,SAAhD;AAA2D,QAAA,QAAQ,EAAE;AAArE,SACI,oBAAC,MAAD;AACI,QAAA,IAAI,EAAE7J,IADV;AAEI,QAAA,mBAAmB,EAAE+I,mBAFzB;AAGI,QAAA,OAAO,EAAEE,OAHb;AAII,QAAA,WAAW,EAAEhJ,WAJjB;AAKI,QAAA,OAAO,EAAE2I,OALb;AAMI,QAAA,QAAQ,EAAE,KAAKxI;AANnB,QADJ,EASI,oBAAC,SAAD;AACI,QAAA,IAAI,EAAEJ,IADV;AAEI,QAAA,MAAM,EAAEa,YAFZ;AAGI,QAAA,OAAO,EAAEoI,OAHb;AAII,QAAA,QAAQ,EAAEzB,QAJd;AAKI,QAAA,iBAAiB,EAAEzH,iBALvB;AAMI,QAAA,SAAS,EAAE2J,WANf;AAOI,QAAA,kBAAkB,EAAEC,WAPxB;AAQI,QAAA,QAAQ,EAAE,KAAKjD,MARnB;AASI,QAAA,QAAQ,EAAE,KAAKC,YATnB;AAUI,QAAA,WAAW,EAAE,KAAKzG,WAVtB;AAWI,QAAA,YAAY,EAAE,KAAK4J;AAXvB,QATJ,EAsBI,oBAAC,OAAD;AACI,QAAA,IAAI,EAAE9J,IADV;AAEI,QAAA,OAAO,EAAEiJ,OAFb;AAGI,QAAA,MAAM,EAAEpI,YAHZ;AAII,QAAA,WAAW,EAAE,KAAKc,WAJtB;AAKI,QAAA,UAAU,EAAEmD,UALhB;AAMI,QAAA,cAAc,EAAEnE,IANpB;AAOI,QAAA,iBAAiB,EAAEmD,iBAPvB;AAQI,QAAA,mBAAmB,EAAEgF,UARzB;AASI,QAAA,oBAAoB,EAAE1E,oBAT1B;AAUI,QAAA,iBAAiB,EAAErE,iBAVvB;AAWI,QAAA,cAAc,EAAE0J,cAXpB;AAYI,QAAA,QAAQ,EAAE,KAAKM,QAZnB;AAaI,QAAA,YAAY,EAAE,KAAKpE,MAbvB;AAcI,QAAA,WAAW,EAAE,KAAKqE,WAdtB;AAeI,QAAA,aAAa,EAAE,KAAKC,aAfxB;AAgBI,QAAA,mBAAmB,EAAE,KAAKzE;AAhB9B,QAtBJ,EAwCI,oBAAC,MAAD;AACI,QAAA,iBAAiB,EAAEzF,iBADvB;AAEI,QAAA,aAAa,EAAEoE,aAFnB;AAGI,QAAA,aAAa,EAAE,KAAK1E,gBAAL,EAHnB;AAII,QAAA,kBAAkB,EAAE8J,kBAJxB;AAKI,QAAA,oBAAoB,EAAEnF,oBAL1B;AAMI,QAAA,cAAc,EAAEqF,cANpB;AAOI,QAAA,eAAe,EAAE,KAAKpJ,YAP1B;AAQI,QAAA,QAAQ,EAAE,KAAKoG,MARnB;AASI,QAAA,QAAQ,EAAE,KAAK3D,MATnB;AAUI,QAAA,iBAAiB,EAAEsG,iBAVvB;AAWI,QAAA,iBAAiB,EAAEC,iBAXvB;AAYI,QAAA,yBAAyB,EAAEC;AAZ/B,SAcKN,mBAAmB,GAChB,oBAAC,qBAAD;AACI,QAAA,MAAM,EAAEvH,MADZ;AAEI,QAAA,cAAc,EAAE,KAAKyI,QAFzB;AAGI,QAAA,QAAQ,EAAEjJ,eAHd;AAII,QAAA,UAAU,EAAEuI;AAJhB,QADgB,GAOhB,IArBR,CAxCJ,CADJ,EAiEKE,WAAW,IAAI,CAAC,CAAC,KAAK3B,UAAtB,GACG,oBAAC,YAAD;AACI,QAAA,MAAM,EAAE5E,iBADZ;AAEI,QAAA,eAAe,EAAErD,EAFrB;AAGI,QAAA,KAAK,EAAEwH,KAHX;AAII,QAAA,UAAU,EAAEF,UAJhB;AAKI,QAAA,kBAAkB,EAAEC,kBALxB;AAMI,QAAA,OAAO,EAAER,OANb;AAOI,QAAA,UAAU,EAAEU,UAPhB;AAQI,QAAA,OAAO,EAAE,KAAK4C,oBARlB;AASI,QAAA,aAAa,EAAE,KAAKxI,WATxB;AAUI,QAAA,UAAU,EAAE,KAAKoG,UAVrB;AAWI,QAAA,oBAAoB,EAAEc,oBAX1B;AAYI,QAAA,kBAAkB,EAAE3B,kBAZxB;AAaI,QAAA,mBAAmB,EAAEC;AAbzB,QADH,GAgBG,IAjFR,EAkFKwC,WAAW,IAAI,CAAC,CAAC,KAAK5B,UAAtB,GACG,oBAAC,kBAAD;AACI,QAAA,MAAM,EAAEzE,uBADZ;AAEI,QAAA,QAAQ,EAAE,KAAKF,oBAFnB;AAGI,QAAA,QAAQ,EAAE,KAAKmF,WAHnB;AAII,QAAA,SAAS,EAAE9E,SAJf;AAKI,QAAA,SAAS,EAAED,SALf;AAMI,QAAA,aAAa,EAAE,KAAK7B,WANxB;AAOI,QAAA,UAAU,EAAE,KAAKoG;AAPrB,QADH,GAUG,IA5FR,CADJ,CADJ;AAkGA;;AACA;AACH;;;;EArqCuB7L,S;;gBAAtB4C,a,kBAmBoB;AAClB6B,EAAAA,IAAI,EAAE9B,WADY;AAElBgC,EAAAA,YAAY,EAAEpD,YAFI;AAGlB8B,EAAAA,QAAQ,EAAEjD,IAHQ;AAIlBqD,EAAAA,QAAQ,EAAErD,IAJQ;AAKlByK,EAAAA,WAAW,EAAExJ,mBALK;AAMlByJ,EAAAA,eAAe,EAAExJ,iBANC;AAOlB0D,EAAAA,MAAM,EAAElD,UAPU;AAQlBmD,EAAAA,aAAa,EAAEjD,QARG;AASlB4K,EAAAA,UAAU,EAAE,EATM;AAUlB9E,EAAAA,aAAa,EAAEoG,QAVG;AAWlBpH,EAAAA,SAAS,EAAE,IAXO;AAYlBc,EAAAA,iBAAiB,EAAE,IAZD;AAalBP,EAAAA,kBAAkB,EAAE,IAbF;AAclB4E,EAAAA,SAAS,EAAE,KAdO;AAelBe,EAAAA,SAAS,EAAE,EAfO;AAgBlBrC,EAAAA,OAAO,EAAExJ,oBAhBS;AAiBlBkK,EAAAA,UAAU,EAAEjK,uBAjBM;AAkBlBwJ,EAAAA,UAAU,EAAE1J,0BAlBM;AAmBlBuK,EAAAA,WAAW,EAAEhK,kBAnBK;AAoBlBkL,EAAAA,oBAAoB,EAAE,EApBJ;AAqBlBU,EAAAA,kBAAkB,EAAE,IArBF;AAsBlBlB,EAAAA,8BAA8B,EAAE,KAtBd;AAuBlBU,EAAAA,mBAAmB,EAAE,IAvBH;AAwBlBC,EAAAA,mBAAmB,EAAE;AAxBH,C;;AAqpC1B,SAASlK,aAAa,IAAIuL,sBAA1B;AACA,eAAezN,cAAc,CAACkC,aAAD,CAA7B","sourcesContent":["/**\n * @flow\n * @file Content Picker Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport type { Node } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport uniqueid from 'lodash/uniqueId';\nimport noop from 'lodash/noop';\nimport Header from '../common/header';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport UploadDialog from '../common/upload-dialog';\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport Internationalize from '../common/Internationalize';\nimport makeResponsive from '../common/makeResponsive';\nimport OffsetBasedPagination from '../../features/pagination/OffsetBasedPagination';\nimport { isFocusableElement, isInputElement, focus } from '../../utils/dom';\nimport API from '../../api';\nimport Content from './Content';\nimport Footer from './Footer';\nimport {\n CLIENT_NAME_CONTENT_PICKER,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_PAGE_NUMBER,\n DEFAULT_PAGE_SIZE,\n DEFAULT_ROOT,\n DEFAULT_SEARCH_DEBOUNCE,\n DEFAULT_VIEW_FILES,\n DEFAULT_VIEW_RECENTS,\n ERROR_CODE_ITEM_NAME_IN_USE,\n ERROR_CODE_ITEM_NAME_INVALID,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n FIELD_NAME,\n FIELD_SHARED_LINK,\n SORT_ASC,\n TYPE_FILE,\n TYPE_FOLDER,\n TYPE_WEBLINK,\n TYPED_ID_FOLDER_PREFIX,\n VIEW_ERROR,\n VIEW_FOLDER,\n VIEW_RECENTS,\n VIEW_SEARCH,\n VIEW_SELECTED,\n} from '../../constants';\nimport { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';\nimport type { ElementsXhrError } from '../../common/types/api';\nimport type {\n View,\n DefaultView,\n StringAnyMap,\n StringMap,\n SortBy,\n SortDirection,\n Token,\n Access,\n BoxItemPermission,\n BoxItem,\n Collection,\n} from '../../common/types/core';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentPicker.scss';\n\ntype Props = {\n apiHost: string,\n autoFocus: boolean,\n canCreateNewFolder: boolean,\n canSetShareAccess: boolean,\n canUpload: boolean,\n cancelButtonLabel?: string,\n chooseButtonLabel?: string,\n className: string,\n clearSelectedItemsOnNavigation: boolean,\n clientName: string,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId?: string,\n defaultView: DefaultView,\n extensions: string[],\n initialPage: number,\n initialPageSize: number,\n isHeaderLogoVisible?: boolean,\n isLarge: boolean,\n isPaginationVisible?: boolean,\n isSmall: boolean,\n isTouch: boolean,\n language?: string,\n logoUrl?: string,\n maxSelectable: number,\n measureRef?: Function,\n messages?: StringMap,\n onCancel: Function,\n onChoose: Function,\n renderCustomActionButtons?: ({\n onCancel: Function,\n onChoose: Function,\n selectedCount: number,\n selectedItems: BoxItem[],\n }) => Node,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showSelectedButton: boolean,\n sortBy: SortBy,\n sortDirection: SortDirection,\n token: Token,\n type: string,\n uploadHost: string,\n};\n\ntype State = {\n currentCollection: Collection,\n currentOffset: number,\n currentPageSize: number,\n errorCode: string,\n focusedRow: number,\n isCreateFolderModalOpen: boolean,\n isLoading: boolean,\n isUploadModalOpen: boolean,\n rootName: string,\n searchQuery: string,\n selected: { [string]: BoxItem },\n sortBy: SortBy,\n sortDirection: SortDirection,\n view: View,\n};\n\nconst defaultType = `${TYPE_FILE},${TYPE_WEBLINK}`;\n\nclass ContentPicker extends Component<Props, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: Props;\n\n table: any;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n globalModifier: boolean;\n\n firstLoad: boolean = true; // Keeps track of very 1st load\n\n static defaultProps = {\n type: defaultType,\n rootFolderId: DEFAULT_ROOT,\n onChoose: noop,\n onCancel: noop,\n initialPage: DEFAULT_PAGE_NUMBER,\n initialPageSize: DEFAULT_PAGE_SIZE,\n sortBy: FIELD_NAME,\n sortDirection: SORT_ASC,\n extensions: [],\n maxSelectable: Infinity,\n canUpload: true,\n canSetShareAccess: true,\n canCreateNewFolder: true,\n autoFocus: false,\n className: '',\n apiHost: DEFAULT_HOSTNAME_API,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n clientName: CLIENT_NAME_CONTENT_PICKER,\n defaultView: DEFAULT_VIEW_FILES,\n contentUploaderProps: {},\n showSelectedButton: true,\n clearSelectedItemsOnNavigation: false,\n isHeaderLogoVisible: true,\n isPaginationVisible: true,\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentPicker}\n */\n constructor(props: Props) {\n super(props);\n\n const {\n apiHost,\n clientName,\n initialPage,\n initialPageSize,\n language,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n sortBy,\n sortDirection,\n token,\n uploadHost,\n } = props;\n\n this.api = new API({\n apiHost,\n clientName,\n id: `${TYPED_ID_FOLDER_PREFIX}${rootFolderId}`,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n });\n\n this.id = uniqueid('bcp_');\n\n this.state = {\n sortBy,\n sortDirection,\n rootName: '',\n currentCollection: {},\n currentOffset: initialPageSize * (initialPage - 1),\n currentPageSize: initialPageSize,\n selected: {},\n searchQuery: '',\n view: VIEW_FOLDER,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n focusedRow: 0,\n isLoading: false,\n errorCode: '',\n };\n }\n\n /**\n * Destroys api instances\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.clearCache();\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n const { defaultView, currentFolderId }: Props = this.props;\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = ((this.rootElement.firstElementChild: any): HTMLElement);\n\n if (defaultView === DEFAULT_VIEW_RECENTS) {\n this.showRecents();\n } else {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Fetches the current folder if different\n * from what was already fetched before.\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate({ currentFolderId: prevFolderId }: Props, prevState: State): void {\n const { currentFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n }: State = prevState;\n\n if (prevFolderId === currentFolderId) {\n return;\n }\n\n if (typeof currentFolderId === 'string' && id !== currentFolderId) {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Gets selected items from state.\n * Clones values before returning so that\n * object references are broken. Also cleans\n * up the selected attribute since it was\n * added by the file picker.\n *\n * @private\n * @return {BoxItem[]}\n */\n getSelectedItems = (): BoxItem[] => {\n const { selected }: State = this.state;\n return Object.keys(selected).map(key => {\n const clone: BoxItem = { ...selected[key] };\n delete clone.selected;\n return clone;\n });\n };\n\n /**\n * Choose button action.\n *\n * @private\n * @fires choose\n * @return {void}\n */\n choose = (): void => {\n const { onChoose }: Props = this.props;\n const results = this.getSelectedItems();\n onChoose(results);\n };\n\n /**\n * Deletes selected keys off of selected items in state.\n *\n * @private\n * @return {void}\n */\n deleteSelectedKeys = (): void => {\n const { selected }: State = this.state;\n\n // Clear out the selected field\n Object.keys(selected).forEach(key => delete selected[key].selected);\n };\n\n /**\n * Cancel button action\n *\n * @private\n * @fires cancel\n * @return {void}\n */\n cancel = (): void => {\n const { onCancel }: Props = this.props;\n\n this.deleteSelectedKeys();\n\n // Reset the selected state\n this.setState({ selected: {} }, () => onCancel());\n };\n\n /**\n * Resets the percentLoaded in the collection\n * so that the loading bar starts showing\n *\n * @private\n * @return {Collection}\n */\n currentUnloadedCollection(): Collection {\n const { currentCollection }: State = this.state;\n return Object.assign(currentCollection, {\n percentLoaded: 0,\n });\n }\n\n /**\n * Refreshing the item collection depending\n * upon the view. Collection is gotten from cache.\n * Navigation event is prevented.\n *\n * @private\n * @return {void}\n */\n refreshCollection = (): void => {\n const {\n currentCollection: { id },\n view,\n searchQuery,\n }: State = this.state;\n if (view === VIEW_FOLDER && id) {\n this.fetchFolder(id, false);\n } else if (view === VIEW_RECENTS) {\n this.showRecents(false);\n } else if (view === VIEW_SEARCH && searchQuery) {\n this.search(searchQuery);\n } else if (view === VIEW_SELECTED) {\n this.showSelected();\n } else {\n throw new Error('Cannot refresh incompatible view!');\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error error object\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n this.setState({ view: VIEW_ERROR });\n /* eslint-disable no-console */\n console.error(error, code);\n /* eslint-enable no-console */\n };\n\n /**\n * Action performed when clicking on an item\n *\n * @private\n * @param {Object|string} item - the clicked box item\n * @return {void}\n */\n onItemClick = (item: BoxItem | string): void => {\n // If the id was passed in, just use that\n if (typeof item === 'string') {\n this.fetchFolder(item);\n return;\n }\n\n // If the item was passed in\n const { id, type }: BoxItem = item;\n if (type === TYPE_FOLDER) {\n this.fetchFolder(id);\n }\n };\n\n /**\n * Focuses the grid\n *\n * @private\n * @return {void}\n */\n finishNavigation(): void {\n const { autoFocus }: Props = this.props;\n const {\n currentCollection: { percentLoaded },\n }: State = this.state;\n\n // If loading for the very first time, only allow focus if autoFocus is true\n if (this.firstLoad && !autoFocus) {\n this.firstLoad = false;\n return;\n }\n\n // Don't focus the grid until its loaded and user is not already on an interactable element\n if (percentLoaded === 100 && !isFocusableElement(document.activeElement)) {\n focus(this.rootElement, '.bcp-item-row');\n this.setState({ focusedRow: 0 });\n }\n\n this.firstLoad = false;\n }\n\n /**\n * Folder fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} triggerNavigationEvent - To focus the grid\n * @return {void}\n */\n fetchFolderSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const { clearSelectedItemsOnNavigation, rootFolderId }: Props = this.props;\n const { id, name }: Collection = collection;\n\n const commonState = {\n currentCollection: collection,\n rootName: id === rootFolderId ? name : '',\n };\n\n // New folder state\n const newState = clearSelectedItemsOnNavigation ? { ...commonState, selected: {} } : commonState;\n\n // Close any open modals\n this.closeModals();\n\n // Deletes selected keys\n if (clearSelectedItemsOnNavigation) {\n this.deleteSelectedKeys();\n }\n\n if (triggerNavigationEvent) {\n // Fire folder navigation event\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Fetches a folder, defaults to fetching root folder\n *\n * @private\n * @param {string|void} [id] folder id\n * @param {Boolean|void} [triggerNavigationEvent] - To focus the grid\n * @return {void}\n */\n fetchFolder = (id?: string, triggerNavigationEvent?: boolean = true): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id: currentId },\n currentOffset,\n currentPageSize: limit,\n searchQuery = '',\n sortBy,\n sortDirection,\n }: State = this.state;\n const folderId: string = typeof id === 'string' ? id : rootFolderId;\n const hasFolderChanged = currentId && currentId !== folderId;\n const hasSearchQuery = !!searchQuery.trim().length;\n const offset = hasFolderChanged || hasSearchQuery ? 0 : currentOffset; // Reset offset on folder or mode change\n\n // If we are navigating around, aka not first load\n // then reset the focus to the root so that after\n // the collection loads the activeElement is not the\n // button that was clicked to fetch the folder\n if (!this.firstLoad) {\n this.rootElement.focus();\n }\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_FOLDER,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: offset,\n });\n\n // Fetch the folder using folder API\n this.api.getFolderAPI().getFolder(\n folderId,\n limit,\n offset,\n sortBy,\n sortDirection,\n (collection: Collection) => {\n this.fetchFolderSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n };\n\n /**\n * Recents fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n recentsSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const newState = { currentCollection: collection };\n if (triggerNavigationEvent) {\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Shows recents.\n * We always try to force fetch recents.\n *\n * @private\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n showRecents(triggerNavigationEvent: boolean = true): void {\n const { rootFolderId }: Props = this.props;\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_RECENTS,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: 0,\n });\n\n // Fetch the folder using folder API\n this.api.getRecentsAPI().recents(\n rootFolderId,\n (collection: Collection) => {\n this.recentsSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n }\n\n /**\n * Shows the selected items\n *\n * @private\n * @return {void}\n */\n showSelected = (): void => {\n const { selected, sortBy, sortDirection }: State = this.state;\n this.setState(\n {\n searchQuery: '',\n view: VIEW_SELECTED,\n currentCollection: {\n sortBy,\n sortDirection,\n percentLoaded: 100,\n items: Object.keys(selected).map(key => this.api.getCache().get(key)),\n },\n },\n this.finishNavigation,\n );\n };\n\n /**\n * Search success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @return {void}\n */\n searchSuccessCallback = (collection: Collection): void => {\n const { currentCollection }: State = this.state;\n this.setState({\n currentCollection: Object.assign(currentCollection, collection),\n });\n };\n\n /**\n * Debounced searching\n *\n * @private\n * @param {string} id folder id\n * @param {string} query search string\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n debouncedSearch: Function = debounce((id: string, query: string): void => {\n const { currentOffset, currentPageSize }: State = this.state;\n\n this.api\n .getSearchAPI()\n .search(id, query, currentPageSize, currentOffset, this.searchSuccessCallback, this.errorCallback, {\n forceFetch: true,\n });\n }, DEFAULT_SEARCH_DEBOUNCE);\n\n /**\n * Searches\n *\n * @private\n * @param {string} query search string\n * @return {void}\n */\n search = (query: string): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n currentOffset,\n searchQuery,\n }: State = this.state;\n const folderId = typeof id === 'string' ? id : rootFolderId;\n const trimmedQuery: string = query.trim();\n\n if (!query) {\n // Cancel the debounce so we don't search on a previous query\n this.debouncedSearch.cancel();\n\n // Query was cleared out, load the prior folder\n // The prior folder is always the parent folder for search\n this.setState({ currentOffset: 0 }, () => {\n this.fetchFolder(folderId, false);\n });\n\n return;\n }\n\n if (!trimmedQuery) {\n // Query now only has bunch of spaces\n // do nothing and but update prior state\n this.setState({\n searchQuery: query,\n });\n return;\n }\n\n this.setState({\n searchQuery: query,\n view: VIEW_SEARCH,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: trimmedQuery === searchQuery ? currentOffset : 0,\n });\n\n this.debouncedSearch(folderId, query);\n };\n\n /**\n * Uploads\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n upload = (): void => {\n const {\n currentCollection: { id, permissions },\n }: State = this.state;\n const { canUpload }: Props = this.props;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload: canUploadPermission }: BoxItemPermission = permissions;\n if (!canUpload || !canUploadPermission) {\n return;\n }\n\n this.setState({ isUploadModalOpen: true });\n };\n\n /**\n * Upload success handler\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n uploadSuccessHandler = (): void => {\n const {\n currentCollection: { id },\n }: State = this.state;\n this.fetchFolder(id, false);\n };\n\n /**\n * Creates a new folder\n *\n * @private\n * @return {void}\n */\n createFolder = (): void => {\n this.createFolderCallback();\n };\n\n /**\n * New folder callback\n *\n * @private\n * @param {string} name - folder name\n * @return {void}\n */\n createFolderCallback = (name?: string): void => {\n const { isCreateFolderModalOpen, currentCollection }: State = this.state;\n const { canCreateNewFolder }: Props = this.props;\n if (!canCreateNewFolder) {\n return;\n }\n\n const { id, permissions }: Collection = currentCollection;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n if (!isCreateFolderModalOpen || !name) {\n this.setState({ isCreateFolderModalOpen: true, errorCode: '' });\n return;\n }\n\n if (!name) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n if (name.length > 255) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_TOO_LONG,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getFolderAPI().create(\n id,\n name,\n () => {\n this.fetchFolder(id);\n },\n ({ response: { status } }) => {\n this.setState({\n errorCode: status === 409 ? ERROR_CODE_ITEM_NAME_IN_USE : ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n },\n );\n };\n\n /**\n * Selects or unselects an item\n *\n * @private\n * @param {Object} item file or folder object\n * @param {boolean} options.forceSharedLink Force a shared link if no link exists\n * @return {void}\n */\n select = (item: BoxItem, { forceSharedLink = true }: StringAnyMap = {}): void => {\n const { canSetShareAccess, type: selectableType, maxSelectable }: Props = this.props;\n const {\n view,\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n const { id, type }: BoxItem = item;\n\n if (!id || !type || selectableType.indexOf(type) === -1) {\n return;\n }\n\n const selectedKeys: Array<string> = Object.keys(selected);\n const selectedCount: number = selectedKeys.length;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable;\n const isSingleFileSelection: boolean = maxSelectable === 1;\n const cacheKey: string = this.api.getAPI(type).getCacheKey(id);\n const existing: BoxItem = selected[cacheKey];\n const existingFromCache: BoxItem = this.api.getCache().get(cacheKey);\n const existInSelected = selectedKeys.indexOf(cacheKey) !== -1;\n\n // Existing object could have mutated and we just need to update the\n // reference in the selected map. In that case treat it like a new selection.\n if (existing && existing === existingFromCache) {\n // We are selecting the same item that was already\n // selected. Unselect it in this case. Toggle case.\n delete existing.selected;\n delete selected[cacheKey];\n } else {\n // We are selecting a new item that was never\n // selected before. However if we are in a single\n // item selection mode, we should also unselect any\n // prior item that was selected.\n\n // Check if we hit the selection limit and if selection\n // is not already currently in the selected data structure.\n // Ignore when in single file selection mode.\n if (hasHitSelectionLimit && !isSingleFileSelection && !existInSelected) {\n return;\n }\n\n // Clear out the prior item for single file selection mode\n if (selectedCount > 0 && isSingleFileSelection) {\n const prior = selectedKeys[0]; // only one item\n delete selected[prior].selected;\n delete selected[prior];\n }\n\n // Select the new item\n item.selected = true;\n selected[cacheKey] = item;\n\n // If can set share access, fetch the shared link properties of the item\n // In the case where another item is selected, any in flight XHR will get\n // cancelled\n if (canSetShareAccess && forceSharedLink) {\n this.fetchSharedLinkInfo(item);\n }\n }\n\n const focusedRow = items.findIndex((i: BoxItem) => i.id === item.id);\n this.setState({ selected, focusedRow }, () => {\n if (view === VIEW_SELECTED) {\n // Need to refresh the selected view\n this.showSelected();\n }\n });\n };\n\n /**\n * Fetch the shared link info\n * @param {BoxItem} item - The item (folder, file, weblink)\n * @returns {void}\n */\n fetchSharedLinkInfo = (item: BoxItem): void => {\n const { id, type }: BoxItem = item;\n\n switch (type) {\n case TYPE_FOLDER:\n this.api.getFolderAPI().getFolderFields(id, this.handleSharedLinkSuccess, noop, {\n fields: FILE_SHARED_LINK_FIELDS_TO_FETCH,\n });\n break;\n case TYPE_FILE:\n this.api\n .getFileAPI()\n .getFile(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n case TYPE_WEBLINK:\n this.api\n .getWebLinkAPI()\n .getWeblink(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n default:\n throw new Error('Unknown Type');\n }\n };\n\n /**\n * Handles the shared link info by either creating a share link using enterprise defaults if\n * it does not already exist, otherwise update the item in the state currentCollection.\n *\n * @param {Object} item file or folder\n * @returns {void}\n */\n handleSharedLinkSuccess = (item: BoxItem) => {\n // if no shared link currently exists, create a shared link with enterprise default\n if (!item[FIELD_SHARED_LINK]) {\n this.changeShareAccess(undefined, item);\n } else {\n const { selected } = this.state;\n const { id, type } = item;\n // $FlowFixMe\n const cacheKey = this.api.getAPI(type).getCacheKey(id);\n // if shared link already exists, update the collection in state\n this.updateItemInCollection(item);\n if (item.selected && item !== selected[cacheKey]) {\n this.select(item, { forceSharedLink: false });\n }\n }\n };\n\n /**\n * Changes the share access of an item\n *\n * @private\n * @param {string} access share access\n * @param {Object} item file or folder object\n * @return {void}\n */\n changeShareAccess = (access?: Access, item: BoxItem): void => {\n const { canSetShareAccess }: Props = this.props;\n if (!item || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type }: BoxItem = item;\n if (!permissions || !type) {\n return;\n }\n\n const { can_set_share_access }: BoxItemPermission = permissions;\n if (access !== undefined && !can_set_share_access) {\n return;\n }\n\n this.api.getAPI(type).share(item, access, (updatedItem: BoxItem) => {\n this.updateItemInCollection(updatedItem);\n if (item.selected) {\n this.select(updatedItem, { forceSharedLink: false });\n }\n });\n };\n\n /**\n * Updates the BoxItem in the state's currentCollection\n *\n * @param {Object} item file or folder object\n * @returns {void}\n */\n updateItemInCollection = (item: BoxItem) => {\n const { currentCollection } = this.state;\n const { items = [] } = currentCollection;\n const newState = {\n currentCollection: {\n ...currentCollection,\n items: items.map(collectionItem => (collectionItem.id === item.id ? item : collectionItem)),\n },\n };\n this.setState(newState);\n };\n\n /**\n * Changes the sort by and sort direction\n *\n * @private\n * @param {string} sortBy - field to sorty by\n * @param {string} sortDirection - sort direction\n * @return {void}\n */\n sort = (sortBy: SortBy, sortDirection: SortDirection) => {\n const {\n currentCollection: { id },\n }: State = this.state;\n if (id) {\n this.setState({ sortBy, sortDirection }, this.refreshCollection);\n }\n };\n\n /**\n * Saves reference to table component\n *\n * @private\n * @param {Component} react component\n * @return {void}\n */\n tableRef = (table: React$Component<*, *>) => {\n this.table = table;\n };\n\n /**\n * Closes the modal dialogs that may be open\n *\n * @private\n * @return {void}\n */\n closeModals = (): void => {\n const { focusedRow }: State = this.state;\n\n this.setState({\n isLoading: false,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n });\n\n const {\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n if (selected && items.length > 0) {\n focus(this.rootElement, `.bcp-item-row-${focusedRow}`);\n }\n };\n\n /**\n * Keyboard events\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: Props = this.props;\n const key = event.key.toLowerCase();\n\n switch (key) {\n case '/':\n focus(this.rootElement, '.be-search input[type=\"search\"]', false);\n event.preventDefault();\n break;\n case 'arrowdown':\n focus(this.rootElement, '.bcp-item-row', false);\n this.setState({ focusedRow: 0 });\n event.preventDefault();\n break;\n case 'g':\n break;\n case 'b':\n if (this.globalModifier) {\n focus(this.rootElement, '.be-breadcrumb button', false);\n event.preventDefault();\n }\n\n break;\n case 'f':\n if (this.globalModifier) {\n this.fetchFolder(rootFolderId);\n event.preventDefault();\n }\n\n break;\n case 'c':\n if (this.globalModifier) {\n this.choose();\n event.preventDefault();\n }\n\n break;\n case 'x':\n if (this.globalModifier) {\n this.cancel();\n event.preventDefault();\n }\n\n break;\n case 's':\n if (this.globalModifier) {\n this.showSelected();\n event.preventDefault();\n }\n\n break;\n case 'u':\n if (this.globalModifier) {\n this.upload();\n event.preventDefault();\n }\n\n break;\n case 'r':\n if (this.globalModifier) {\n this.showRecents();\n event.preventDefault();\n }\n\n break;\n case 'n':\n if (this.globalModifier) {\n this.createFolder();\n event.preventDefault();\n }\n\n break;\n default:\n this.globalModifier = false;\n return;\n }\n\n this.globalModifier = key === 'g';\n };\n\n /**\n * Updates the focused row based on key binder\n *\n * @private\n * @param {number} focusedRow - the row index thats focused\n * @return {void}\n */\n onFocusChange = (focusedRow: number) => {\n this.setState({ focusedRow });\n };\n\n /**\n * Handle pagination changes\n *\n * @param {number} newOffset - the new page offset value\n */\n paginate = (newOffset: number) => {\n this.setState({ currentOffset: newOffset }, this.refreshCollection);\n };\n\n /**\n * Renders the file picker\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n language,\n messages,\n rootFolderId,\n logoUrl,\n canUpload,\n canSetShareAccess,\n canCreateNewFolder,\n contentUploaderProps,\n extensions,\n maxSelectable,\n type,\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n isHeaderLogoVisible,\n isPaginationVisible,\n isSmall,\n className,\n measureRef,\n chooseButtonLabel,\n cancelButtonLabel,\n requestInterceptor,\n responseInterceptor,\n renderCustomActionButtons,\n showSelectedButton,\n }: Props = this.props;\n const {\n view,\n rootName,\n selected,\n currentCollection,\n currentPageSize,\n searchQuery,\n isCreateFolderModalOpen,\n isUploadModalOpen,\n isLoading,\n errorCode,\n focusedRow,\n }: State = this.state;\n const { id, offset, permissions, totalCount }: Collection = currentCollection;\n const { can_upload }: BoxItemPermission = permissions || {};\n const selectedCount: number = Object.keys(selected).length;\n const isSingleSelect = maxSelectable === 1;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable && !isSingleSelect;\n const allowUpload: boolean = canUpload && !!can_upload;\n const allowCreate: boolean = canCreateNewFolder && !!can_upload;\n const styleClassName = classNames('be bcp', className);\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <div id={this.id} className={styleClassName} ref={measureRef} data-testid=\"content-picker\">\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n <Header\n view={view}\n isHeaderLogoVisible={isHeaderLogoVisible}\n isSmall={isSmall}\n searchQuery={searchQuery}\n logoUrl={logoUrl}\n onSearch={this.search}\n />\n <SubHeader\n view={view}\n rootId={rootFolderId}\n isSmall={isSmall}\n rootName={rootName}\n currentCollection={currentCollection}\n canUpload={allowUpload}\n canCreateNewFolder={allowCreate}\n onUpload={this.upload}\n onCreate={this.createFolder}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n />\n <Content\n view={view}\n isSmall={isSmall}\n rootId={rootFolderId}\n rootElement={this.rootElement}\n focusedRow={focusedRow}\n selectableType={type}\n canSetShareAccess={canSetShareAccess}\n extensionsWhitelist={extensions}\n hasHitSelectionLimit={hasHitSelectionLimit}\n currentCollection={currentCollection}\n isSingleSelect={isSingleSelect}\n tableRef={this.tableRef}\n onItemSelect={this.select}\n onItemClick={this.onItemClick}\n onFocusChange={this.onFocusChange}\n onShareAccessChange={this.changeShareAccess}\n />\n <Footer\n currentCollection={currentCollection}\n selectedCount={selectedCount}\n selectedItems={this.getSelectedItems()}\n showSelectedButton={showSelectedButton}\n hasHitSelectionLimit={hasHitSelectionLimit}\n isSingleSelect={isSingleSelect}\n onSelectedClick={this.showSelected}\n onChoose={this.choose}\n onCancel={this.cancel}\n chooseButtonLabel={chooseButtonLabel}\n cancelButtonLabel={cancelButtonLabel}\n renderCustomActionButtons={renderCustomActionButtons}\n >\n {isPaginationVisible ? (\n <OffsetBasedPagination\n offset={offset}\n onOffsetChange={this.paginate}\n pageSize={currentPageSize}\n totalCount={totalCount}\n />\n ) : null}\n </Footer>\n </div>\n {allowUpload && !!this.appElement ? (\n <UploadDialog\n isOpen={isUploadModalOpen}\n currentFolderId={id}\n token={token}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n apiHost={apiHost}\n uploadHost={uploadHost}\n onClose={this.uploadSuccessHandler}\n parentElement={this.rootElement}\n appElement={this.appElement}\n contentUploaderProps={contentUploaderProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\n {allowCreate && !!this.appElement ? (\n <CreateFolderDialog\n isOpen={isCreateFolderModalOpen}\n onCreate={this.createFolderCallback}\n onCancel={this.closeModals}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n </div>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport { ContentPicker as ContentPickerComponent };\nexport default makeResponsive(ContentPicker);\n"],"file":"ContentPicker.js"}
1
+ {"version":3,"sources":["../../../src/elements/content-picker/ContentPicker.js"],"names":["React","Component","classNames","debounce","uniqueid","noop","Header","SubHeader","UploadDialog","CreateFolderDialog","Internationalize","makeResponsive","OffsetBasedPagination","isFocusableElement","isInputElement","focus","API","Content","Footer","CLIENT_NAME_CONTENT_PICKER","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","DEFAULT_ROOT","DEFAULT_SEARCH_DEBOUNCE","DEFAULT_VIEW_FILES","DEFAULT_VIEW_RECENTS","ERROR_CODE_ITEM_NAME_IN_USE","ERROR_CODE_ITEM_NAME_INVALID","ERROR_CODE_ITEM_NAME_TOO_LONG","FIELD_NAME","FIELD_SHARED_LINK","SORT_ASC","TYPE_FILE","TYPE_FOLDER","TYPE_WEBLINK","TYPED_ID_FOLDER_PREFIX","VIEW_ERROR","VIEW_FOLDER","VIEW_RECENTS","VIEW_SEARCH","VIEW_SELECTED","FILE_SHARED_LINK_FIELDS_TO_FETCH","defaultType","ContentPicker","props","selected","state","Object","keys","map","key","clone","onChoose","results","getSelectedItems","forEach","onCancel","deleteSelectedKeys","setState","id","currentCollection","view","searchQuery","fetchFolder","showRecents","search","showSelected","Error","error","code","console","item","type","triggerNavigationEvent","rootFolderId","currentId","currentOffset","limit","currentPageSize","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","api","getFolderAPI","getFolder","collection","fetchFolderSuccessCallback","errorCallback","forceFetch","percentLoaded","items","getCache","get","finishNavigation","query","getSearchAPI","searchSuccessCallback","trimmedQuery","debouncedSearch","cancel","permissions","canUpload","canUploadPermission","can_upload","isUploadModalOpen","createFolderCallback","name","isCreateFolderModalOpen","canCreateNewFolder","errorCode","isLoading","create","status","response","forceSharedLink","canSetShareAccess","selectableType","maxSelectable","indexOf","selectedKeys","selectedCount","hasHitSelectionLimit","isSingleFileSelection","cacheKey","getAPI","getCacheKey","existing","existingFromCache","existInSelected","prior","fetchSharedLinkInfo","focusedRow","findIndex","i","getFolderFields","handleSharedLinkSuccess","fields","getFileAPI","getFile","getWebLinkAPI","getWeblink","changeShareAccess","undefined","updateItemInCollection","select","access","can_set_share_access","share","updatedItem","newState","collectionItem","refreshCollection","table","event","target","toLowerCase","preventDefault","globalModifier","choose","upload","createFolder","newOffset","apiHost","clientName","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","rootName","destroy","clearCache","defaultView","currentFolderId","document","getElementById","appElement","firstElementChild","prevState","prevFolderId","autoFocus","activeElement","clearSelectedItemsOnNavigation","commonState","closeModals","getRecentsAPI","recents","recentsSuccessCallback","messages","logoUrl","contentUploaderProps","extensions","isHeaderLogoVisible","isPaginationVisible","isSmall","className","measureRef","chooseButtonLabel","cancelButtonLabel","renderCustomActionButtons","showSelectedButton","totalCount","isSingleSelect","allowUpload","allowCreate","styleClassName","onKeyDown","sort","tableRef","onItemClick","onFocusChange","paginate","uploadSuccessHandler","Infinity","ContentPickerComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Picker Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport type { Node } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport uniqueid from 'lodash/uniqueId';\nimport noop from 'lodash/noop';\nimport Header from '../common/header';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport UploadDialog from '../common/upload-dialog';\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport Internationalize from '../common/Internationalize';\nimport makeResponsive from '../common/makeResponsive';\nimport OffsetBasedPagination from '../../features/pagination/OffsetBasedPagination';\nimport { isFocusableElement, isInputElement, focus } from '../../utils/dom';\nimport API from '../../api';\nimport Content from './Content';\nimport Footer from './Footer';\nimport {\n CLIENT_NAME_CONTENT_PICKER,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_PAGE_NUMBER,\n DEFAULT_PAGE_SIZE,\n DEFAULT_ROOT,\n DEFAULT_SEARCH_DEBOUNCE,\n DEFAULT_VIEW_FILES,\n DEFAULT_VIEW_RECENTS,\n ERROR_CODE_ITEM_NAME_IN_USE,\n ERROR_CODE_ITEM_NAME_INVALID,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n FIELD_NAME,\n FIELD_SHARED_LINK,\n SORT_ASC,\n TYPE_FILE,\n TYPE_FOLDER,\n TYPE_WEBLINK,\n TYPED_ID_FOLDER_PREFIX,\n VIEW_ERROR,\n VIEW_FOLDER,\n VIEW_RECENTS,\n VIEW_SEARCH,\n VIEW_SELECTED,\n} from '../../constants';\nimport { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';\nimport type { ElementsXhrError } from '../../common/types/api';\nimport type {\n View,\n DefaultView,\n StringAnyMap,\n StringMap,\n SortBy,\n SortDirection,\n Token,\n Access,\n BoxItemPermission,\n BoxItem,\n Collection,\n} from '../../common/types/core';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentPicker.scss';\n\ntype Props = {\n apiHost: string,\n autoFocus: boolean,\n canCreateNewFolder: boolean,\n canSetShareAccess: boolean,\n canUpload: boolean,\n cancelButtonLabel?: string,\n chooseButtonLabel?: string,\n className: string,\n clearSelectedItemsOnNavigation: boolean,\n clientName: string,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId?: string,\n defaultView: DefaultView,\n extensions: string[],\n initialPage: number,\n initialPageSize: number,\n isHeaderLogoVisible?: boolean,\n isLarge: boolean,\n isPaginationVisible?: boolean,\n isSmall: boolean,\n isTouch: boolean,\n language?: string,\n logoUrl?: string,\n maxSelectable: number,\n measureRef?: Function,\n messages?: StringMap,\n onCancel: Function,\n onChoose: Function,\n renderCustomActionButtons?: ({\n onCancel: Function,\n onChoose: Function,\n selectedCount: number,\n selectedItems: BoxItem[],\n }) => Node,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showSelectedButton: boolean,\n sortBy: SortBy,\n sortDirection: SortDirection,\n token: Token,\n type: string,\n uploadHost: string,\n};\n\ntype State = {\n currentCollection: Collection,\n currentOffset: number,\n currentPageSize: number,\n errorCode: string,\n focusedRow: number,\n isCreateFolderModalOpen: boolean,\n isLoading: boolean,\n isUploadModalOpen: boolean,\n rootName: string,\n searchQuery: string,\n selected: { [string]: BoxItem },\n sortBy: SortBy,\n sortDirection: SortDirection,\n view: View,\n};\n\nconst defaultType = `${TYPE_FILE},${TYPE_WEBLINK}`;\n\nclass ContentPicker extends Component<Props, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: Props;\n\n table: any;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n globalModifier: boolean;\n\n firstLoad: boolean = true; // Keeps track of very 1st load\n\n static defaultProps = {\n type: defaultType,\n rootFolderId: DEFAULT_ROOT,\n onChoose: noop,\n onCancel: noop,\n initialPage: DEFAULT_PAGE_NUMBER,\n initialPageSize: DEFAULT_PAGE_SIZE,\n sortBy: FIELD_NAME,\n sortDirection: SORT_ASC,\n extensions: [],\n maxSelectable: Infinity,\n canUpload: true,\n canSetShareAccess: true,\n canCreateNewFolder: true,\n autoFocus: false,\n className: '',\n apiHost: DEFAULT_HOSTNAME_API,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n clientName: CLIENT_NAME_CONTENT_PICKER,\n defaultView: DEFAULT_VIEW_FILES,\n contentUploaderProps: {},\n showSelectedButton: true,\n clearSelectedItemsOnNavigation: false,\n isHeaderLogoVisible: true,\n isPaginationVisible: true,\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentPicker}\n */\n constructor(props: Props) {\n super(props);\n\n const {\n apiHost,\n clientName,\n initialPage,\n initialPageSize,\n language,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n sortBy,\n sortDirection,\n token,\n uploadHost,\n } = props;\n\n this.api = new API({\n apiHost,\n clientName,\n id: `${TYPED_ID_FOLDER_PREFIX}${rootFolderId}`,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n });\n\n this.id = uniqueid('bcp_');\n\n this.state = {\n sortBy,\n sortDirection,\n rootName: '',\n currentCollection: {},\n currentOffset: initialPageSize * (initialPage - 1),\n currentPageSize: initialPageSize,\n selected: {},\n searchQuery: '',\n view: VIEW_FOLDER,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n focusedRow: 0,\n isLoading: false,\n errorCode: '',\n };\n }\n\n /**\n * Destroys api instances\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.clearCache();\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n const { defaultView, currentFolderId }: Props = this.props;\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = ((this.rootElement.firstElementChild: any): HTMLElement);\n\n if (defaultView === DEFAULT_VIEW_RECENTS) {\n this.showRecents();\n } else {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Fetches the current folder if different\n * from what was already fetched before.\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate({ currentFolderId: prevFolderId }: Props, prevState: State): void {\n const { currentFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n }: State = prevState;\n\n if (prevFolderId === currentFolderId) {\n return;\n }\n\n if (typeof currentFolderId === 'string' && id !== currentFolderId) {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Gets selected items from state.\n * Clones values before returning so that\n * object references are broken. Also cleans\n * up the selected attribute since it was\n * added by the file picker.\n *\n * @private\n * @return {BoxItem[]}\n */\n getSelectedItems = (): BoxItem[] => {\n const { selected }: State = this.state;\n return Object.keys(selected).map(key => {\n const clone: BoxItem = { ...selected[key] };\n delete clone.selected;\n return clone;\n });\n };\n\n /**\n * Choose button action.\n *\n * @private\n * @fires choose\n * @return {void}\n */\n choose = (): void => {\n const { onChoose }: Props = this.props;\n const results = this.getSelectedItems();\n onChoose(results);\n };\n\n /**\n * Deletes selected keys off of selected items in state.\n *\n * @private\n * @return {void}\n */\n deleteSelectedKeys = (): void => {\n const { selected }: State = this.state;\n\n // Clear out the selected field\n Object.keys(selected).forEach(key => delete selected[key].selected);\n };\n\n /**\n * Cancel button action\n *\n * @private\n * @fires cancel\n * @return {void}\n */\n cancel = (): void => {\n const { onCancel }: Props = this.props;\n\n this.deleteSelectedKeys();\n\n // Reset the selected state\n this.setState({ selected: {} }, () => onCancel());\n };\n\n /**\n * Resets the percentLoaded in the collection\n * so that the loading bar starts showing\n *\n * @private\n * @return {Collection}\n */\n currentUnloadedCollection(): Collection {\n const { currentCollection }: State = this.state;\n return Object.assign(currentCollection, {\n percentLoaded: 0,\n });\n }\n\n /**\n * Refreshing the item collection depending\n * upon the view. Collection is gotten from cache.\n * Navigation event is prevented.\n *\n * @private\n * @return {void}\n */\n refreshCollection = (): void => {\n const {\n currentCollection: { id },\n view,\n searchQuery,\n }: State = this.state;\n if (view === VIEW_FOLDER && id) {\n this.fetchFolder(id, false);\n } else if (view === VIEW_RECENTS) {\n this.showRecents(false);\n } else if (view === VIEW_SEARCH && searchQuery) {\n this.search(searchQuery);\n } else if (view === VIEW_SELECTED) {\n this.showSelected();\n } else {\n throw new Error('Cannot refresh incompatible view!');\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error error object\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n this.setState({ view: VIEW_ERROR });\n /* eslint-disable no-console */\n console.error(error, code);\n /* eslint-enable no-console */\n };\n\n /**\n * Action performed when clicking on an item\n *\n * @private\n * @param {Object|string} item - the clicked box item\n * @return {void}\n */\n onItemClick = (item: BoxItem | string): void => {\n // If the id was passed in, just use that\n if (typeof item === 'string') {\n this.fetchFolder(item);\n return;\n }\n\n // If the item was passed in\n const { id, type }: BoxItem = item;\n if (type === TYPE_FOLDER) {\n this.fetchFolder(id);\n }\n };\n\n /**\n * Focuses the grid\n *\n * @private\n * @return {void}\n */\n finishNavigation(): void {\n const { autoFocus }: Props = this.props;\n const {\n currentCollection: { percentLoaded },\n }: State = this.state;\n\n // If loading for the very first time, only allow focus if autoFocus is true\n if (this.firstLoad && !autoFocus) {\n this.firstLoad = false;\n return;\n }\n\n // Don't focus the grid until its loaded and user is not already on an interactable element\n if (percentLoaded === 100 && !isFocusableElement(document.activeElement)) {\n focus(this.rootElement, '.bcp-item-row');\n this.setState({ focusedRow: 0 });\n }\n\n this.firstLoad = false;\n }\n\n /**\n * Folder fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} triggerNavigationEvent - To focus the grid\n * @return {void}\n */\n fetchFolderSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const { clearSelectedItemsOnNavigation, rootFolderId }: Props = this.props;\n const { id, name }: Collection = collection;\n\n const commonState = {\n currentCollection: collection,\n rootName: id === rootFolderId ? name : '',\n };\n\n // New folder state\n const newState = clearSelectedItemsOnNavigation ? { ...commonState, selected: {} } : commonState;\n\n // Close any open modals\n this.closeModals();\n\n // Deletes selected keys\n if (clearSelectedItemsOnNavigation) {\n this.deleteSelectedKeys();\n }\n\n if (triggerNavigationEvent) {\n // Fire folder navigation event\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Fetches a folder, defaults to fetching root folder\n *\n * @private\n * @param {string|void} [id] folder id\n * @param {Boolean|void} [triggerNavigationEvent] - To focus the grid\n * @return {void}\n */\n fetchFolder = (id?: string, triggerNavigationEvent?: boolean = true): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id: currentId },\n currentOffset,\n currentPageSize: limit,\n searchQuery = '',\n sortBy,\n sortDirection,\n }: State = this.state;\n const folderId: string = typeof id === 'string' ? id : rootFolderId;\n const hasFolderChanged = currentId && currentId !== folderId;\n const hasSearchQuery = !!searchQuery.trim().length;\n const offset = hasFolderChanged || hasSearchQuery ? 0 : currentOffset; // Reset offset on folder or mode change\n\n // If we are navigating around, aka not first load\n // then reset the focus to the root so that after\n // the collection loads the activeElement is not the\n // button that was clicked to fetch the folder\n if (!this.firstLoad) {\n this.rootElement.focus();\n }\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_FOLDER,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: offset,\n });\n\n // Fetch the folder using folder API\n this.api.getFolderAPI().getFolder(\n folderId,\n limit,\n offset,\n sortBy,\n sortDirection,\n (collection: Collection) => {\n this.fetchFolderSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n };\n\n /**\n * Recents fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n recentsSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const newState = { currentCollection: collection };\n if (triggerNavigationEvent) {\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Shows recents.\n * We always try to force fetch recents.\n *\n * @private\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n showRecents(triggerNavigationEvent: boolean = true): void {\n const { rootFolderId }: Props = this.props;\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_RECENTS,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: 0,\n });\n\n // Fetch the folder using folder API\n this.api.getRecentsAPI().recents(\n rootFolderId,\n (collection: Collection) => {\n this.recentsSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n }\n\n /**\n * Shows the selected items\n *\n * @private\n * @return {void}\n */\n showSelected = (): void => {\n const { selected, sortBy, sortDirection }: State = this.state;\n this.setState(\n {\n searchQuery: '',\n view: VIEW_SELECTED,\n currentCollection: {\n sortBy,\n sortDirection,\n percentLoaded: 100,\n items: Object.keys(selected).map(key => this.api.getCache().get(key)),\n },\n },\n this.finishNavigation,\n );\n };\n\n /**\n * Search success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @return {void}\n */\n searchSuccessCallback = (collection: Collection): void => {\n const { currentCollection }: State = this.state;\n this.setState({\n currentCollection: Object.assign(currentCollection, collection),\n });\n };\n\n /**\n * Debounced searching\n *\n * @private\n * @param {string} id folder id\n * @param {string} query search string\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n debouncedSearch: Function = debounce((id: string, query: string): void => {\n const { currentOffset, currentPageSize }: State = this.state;\n\n this.api\n .getSearchAPI()\n .search(id, query, currentPageSize, currentOffset, this.searchSuccessCallback, this.errorCallback, {\n forceFetch: true,\n });\n }, DEFAULT_SEARCH_DEBOUNCE);\n\n /**\n * Searches\n *\n * @private\n * @param {string} query search string\n * @return {void}\n */\n search = (query: string): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n currentOffset,\n searchQuery,\n }: State = this.state;\n const folderId = typeof id === 'string' ? id : rootFolderId;\n const trimmedQuery: string = query.trim();\n\n if (!query) {\n // Cancel the debounce so we don't search on a previous query\n this.debouncedSearch.cancel();\n\n // Query was cleared out, load the prior folder\n // The prior folder is always the parent folder for search\n this.setState({ currentOffset: 0 }, () => {\n this.fetchFolder(folderId, false);\n });\n\n return;\n }\n\n if (!trimmedQuery) {\n // Query now only has bunch of spaces\n // do nothing and but update prior state\n this.setState({\n searchQuery: query,\n });\n return;\n }\n\n this.setState({\n searchQuery: query,\n view: VIEW_SEARCH,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: trimmedQuery === searchQuery ? currentOffset : 0,\n });\n\n this.debouncedSearch(folderId, query);\n };\n\n /**\n * Uploads\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n upload = (): void => {\n const {\n currentCollection: { id, permissions },\n }: State = this.state;\n const { canUpload }: Props = this.props;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload: canUploadPermission }: BoxItemPermission = permissions;\n if (!canUpload || !canUploadPermission) {\n return;\n }\n\n this.setState({ isUploadModalOpen: true });\n };\n\n /**\n * Upload success handler\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n uploadSuccessHandler = (): void => {\n const {\n currentCollection: { id },\n }: State = this.state;\n this.fetchFolder(id, false);\n };\n\n /**\n * Creates a new folder\n *\n * @private\n * @return {void}\n */\n createFolder = (): void => {\n this.createFolderCallback();\n };\n\n /**\n * New folder callback\n *\n * @private\n * @param {string} name - folder name\n * @return {void}\n */\n createFolderCallback = (name?: string): void => {\n const { isCreateFolderModalOpen, currentCollection }: State = this.state;\n const { canCreateNewFolder }: Props = this.props;\n if (!canCreateNewFolder) {\n return;\n }\n\n const { id, permissions }: Collection = currentCollection;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n if (!isCreateFolderModalOpen || !name) {\n this.setState({ isCreateFolderModalOpen: true, errorCode: '' });\n return;\n }\n\n if (!name.trim()) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n if (name.length > 255) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_TOO_LONG,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getFolderAPI().create(\n id,\n name.trim(),\n () => {\n this.fetchFolder(id);\n },\n ({ response: { status } }) => {\n this.setState({\n errorCode: status === 409 ? ERROR_CODE_ITEM_NAME_IN_USE : ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n },\n );\n };\n\n /**\n * Selects or unselects an item\n *\n * @private\n * @param {Object} item file or folder object\n * @param {boolean} options.forceSharedLink Force a shared link if no link exists\n * @return {void}\n */\n select = (item: BoxItem, { forceSharedLink = true }: StringAnyMap = {}): void => {\n const { canSetShareAccess, type: selectableType, maxSelectable }: Props = this.props;\n const {\n view,\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n const { id, type }: BoxItem = item;\n\n if (!id || !type || selectableType.indexOf(type) === -1) {\n return;\n }\n\n const selectedKeys: Array<string> = Object.keys(selected);\n const selectedCount: number = selectedKeys.length;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable;\n const isSingleFileSelection: boolean = maxSelectable === 1;\n const cacheKey: string = this.api.getAPI(type).getCacheKey(id);\n const existing: BoxItem = selected[cacheKey];\n const existingFromCache: BoxItem = this.api.getCache().get(cacheKey);\n const existInSelected = selectedKeys.indexOf(cacheKey) !== -1;\n\n // Existing object could have mutated and we just need to update the\n // reference in the selected map. In that case treat it like a new selection.\n if (existing && existing === existingFromCache) {\n // We are selecting the same item that was already\n // selected. Unselect it in this case. Toggle case.\n delete existing.selected;\n delete selected[cacheKey];\n } else {\n // We are selecting a new item that was never\n // selected before. However if we are in a single\n // item selection mode, we should also unselect any\n // prior item that was selected.\n\n // Check if we hit the selection limit and if selection\n // is not already currently in the selected data structure.\n // Ignore when in single file selection mode.\n if (hasHitSelectionLimit && !isSingleFileSelection && !existInSelected) {\n return;\n }\n\n // Clear out the prior item for single file selection mode\n if (selectedCount > 0 && isSingleFileSelection) {\n const prior = selectedKeys[0]; // only one item\n delete selected[prior].selected;\n delete selected[prior];\n }\n\n // Select the new item\n item.selected = true;\n selected[cacheKey] = item;\n\n // If can set share access, fetch the shared link properties of the item\n // In the case where another item is selected, any in flight XHR will get\n // cancelled\n if (canSetShareAccess && forceSharedLink) {\n this.fetchSharedLinkInfo(item);\n }\n }\n\n const focusedRow = items.findIndex((i: BoxItem) => i.id === item.id);\n this.setState({ selected, focusedRow }, () => {\n if (view === VIEW_SELECTED) {\n // Need to refresh the selected view\n this.showSelected();\n }\n });\n };\n\n /**\n * Fetch the shared link info\n * @param {BoxItem} item - The item (folder, file, weblink)\n * @returns {void}\n */\n fetchSharedLinkInfo = (item: BoxItem): void => {\n const { id, type }: BoxItem = item;\n\n switch (type) {\n case TYPE_FOLDER:\n this.api.getFolderAPI().getFolderFields(id, this.handleSharedLinkSuccess, noop, {\n fields: FILE_SHARED_LINK_FIELDS_TO_FETCH,\n });\n break;\n case TYPE_FILE:\n this.api\n .getFileAPI()\n .getFile(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n case TYPE_WEBLINK:\n this.api\n .getWebLinkAPI()\n .getWeblink(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n default:\n throw new Error('Unknown Type');\n }\n };\n\n /**\n * Handles the shared link info by either creating a share link using enterprise defaults if\n * it does not already exist, otherwise update the item in the state currentCollection.\n *\n * @param {Object} item file or folder\n * @returns {void}\n */\n handleSharedLinkSuccess = (item: BoxItem) => {\n // if no shared link currently exists, create a shared link with enterprise default\n if (!item[FIELD_SHARED_LINK]) {\n this.changeShareAccess(undefined, item);\n } else {\n const { selected } = this.state;\n const { id, type } = item;\n // $FlowFixMe\n const cacheKey = this.api.getAPI(type).getCacheKey(id);\n // if shared link already exists, update the collection in state\n this.updateItemInCollection(item);\n if (item.selected && item !== selected[cacheKey]) {\n this.select(item, { forceSharedLink: false });\n }\n }\n };\n\n /**\n * Changes the share access of an item\n *\n * @private\n * @param {string} access share access\n * @param {Object} item file or folder object\n * @return {void}\n */\n changeShareAccess = (access?: Access, item: BoxItem): void => {\n const { canSetShareAccess }: Props = this.props;\n if (!item || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type }: BoxItem = item;\n if (!permissions || !type) {\n return;\n }\n\n const { can_set_share_access }: BoxItemPermission = permissions;\n if (access !== undefined && !can_set_share_access) {\n return;\n }\n\n this.api.getAPI(type).share(item, access, (updatedItem: BoxItem) => {\n this.updateItemInCollection(updatedItem);\n if (item.selected) {\n this.select(updatedItem, { forceSharedLink: false });\n }\n });\n };\n\n /**\n * Updates the BoxItem in the state's currentCollection\n *\n * @param {Object} item file or folder object\n * @returns {void}\n */\n updateItemInCollection = (item: BoxItem) => {\n const { currentCollection } = this.state;\n const { items = [] } = currentCollection;\n const newState = {\n currentCollection: {\n ...currentCollection,\n items: items.map(collectionItem => (collectionItem.id === item.id ? item : collectionItem)),\n },\n };\n this.setState(newState);\n };\n\n /**\n * Changes the sort by and sort direction\n *\n * @private\n * @param {string} sortBy - field to sorty by\n * @param {string} sortDirection - sort direction\n * @return {void}\n */\n sort = (sortBy: SortBy, sortDirection: SortDirection) => {\n const {\n currentCollection: { id },\n }: State = this.state;\n if (id) {\n this.setState({ sortBy, sortDirection }, this.refreshCollection);\n }\n };\n\n /**\n * Saves reference to table component\n *\n * @private\n * @param {Component} react component\n * @return {void}\n */\n tableRef = (table: React$Component<*, *>) => {\n this.table = table;\n };\n\n /**\n * Closes the modal dialogs that may be open\n *\n * @private\n * @return {void}\n */\n closeModals = (): void => {\n const { focusedRow }: State = this.state;\n\n this.setState({\n isLoading: false,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n });\n\n const {\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n if (selected && items.length > 0) {\n focus(this.rootElement, `.bcp-item-row-${focusedRow}`);\n }\n };\n\n /**\n * Keyboard events\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: Props = this.props;\n const key = event.key.toLowerCase();\n\n switch (key) {\n case '/':\n focus(this.rootElement, '.be-search input[type=\"search\"]', false);\n event.preventDefault();\n break;\n case 'arrowdown':\n focus(this.rootElement, '.bcp-item-row', false);\n this.setState({ focusedRow: 0 });\n event.preventDefault();\n break;\n case 'g':\n break;\n case 'b':\n if (this.globalModifier) {\n focus(this.rootElement, '.be-breadcrumb button', false);\n event.preventDefault();\n }\n\n break;\n case 'f':\n if (this.globalModifier) {\n this.fetchFolder(rootFolderId);\n event.preventDefault();\n }\n\n break;\n case 'c':\n if (this.globalModifier) {\n this.choose();\n event.preventDefault();\n }\n\n break;\n case 'x':\n if (this.globalModifier) {\n this.cancel();\n event.preventDefault();\n }\n\n break;\n case 's':\n if (this.globalModifier) {\n this.showSelected();\n event.preventDefault();\n }\n\n break;\n case 'u':\n if (this.globalModifier) {\n this.upload();\n event.preventDefault();\n }\n\n break;\n case 'r':\n if (this.globalModifier) {\n this.showRecents();\n event.preventDefault();\n }\n\n break;\n case 'n':\n if (this.globalModifier) {\n this.createFolder();\n event.preventDefault();\n }\n\n break;\n default:\n this.globalModifier = false;\n return;\n }\n\n this.globalModifier = key === 'g';\n };\n\n /**\n * Updates the focused row based on key binder\n *\n * @private\n * @param {number} focusedRow - the row index thats focused\n * @return {void}\n */\n onFocusChange = (focusedRow: number) => {\n this.setState({ focusedRow });\n };\n\n /**\n * Handle pagination changes\n *\n * @param {number} newOffset - the new page offset value\n */\n paginate = (newOffset: number) => {\n this.setState({ currentOffset: newOffset }, this.refreshCollection);\n };\n\n /**\n * Renders the file picker\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n language,\n messages,\n rootFolderId,\n logoUrl,\n canUpload,\n canSetShareAccess,\n canCreateNewFolder,\n contentUploaderProps,\n extensions,\n maxSelectable,\n type,\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n isHeaderLogoVisible,\n isPaginationVisible,\n isSmall,\n className,\n measureRef,\n chooseButtonLabel,\n cancelButtonLabel,\n requestInterceptor,\n responseInterceptor,\n renderCustomActionButtons,\n showSelectedButton,\n }: Props = this.props;\n const {\n view,\n rootName,\n selected,\n currentCollection,\n currentPageSize,\n searchQuery,\n isCreateFolderModalOpen,\n isUploadModalOpen,\n isLoading,\n errorCode,\n focusedRow,\n }: State = this.state;\n const { id, offset, permissions, totalCount }: Collection = currentCollection;\n const { can_upload }: BoxItemPermission = permissions || {};\n const selectedCount: number = Object.keys(selected).length;\n const isSingleSelect = maxSelectable === 1;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable && !isSingleSelect;\n const allowUpload: boolean = canUpload && !!can_upload;\n const allowCreate: boolean = canCreateNewFolder && !!can_upload;\n const styleClassName = classNames('be bcp', className);\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <div id={this.id} className={styleClassName} ref={measureRef} data-testid=\"content-picker\">\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n <Header\n view={view}\n isHeaderLogoVisible={isHeaderLogoVisible}\n isSmall={isSmall}\n searchQuery={searchQuery}\n logoUrl={logoUrl}\n onSearch={this.search}\n />\n <SubHeader\n view={view}\n rootId={rootFolderId}\n isSmall={isSmall}\n rootName={rootName}\n currentCollection={currentCollection}\n canUpload={allowUpload}\n canCreateNewFolder={allowCreate}\n onUpload={this.upload}\n onCreate={this.createFolder}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n />\n <Content\n view={view}\n isSmall={isSmall}\n rootId={rootFolderId}\n rootElement={this.rootElement}\n focusedRow={focusedRow}\n selectableType={type}\n canSetShareAccess={canSetShareAccess}\n extensionsWhitelist={extensions}\n hasHitSelectionLimit={hasHitSelectionLimit}\n currentCollection={currentCollection}\n isSingleSelect={isSingleSelect}\n tableRef={this.tableRef}\n onItemSelect={this.select}\n onItemClick={this.onItemClick}\n onFocusChange={this.onFocusChange}\n onShareAccessChange={this.changeShareAccess}\n />\n <Footer\n currentCollection={currentCollection}\n selectedCount={selectedCount}\n selectedItems={this.getSelectedItems()}\n showSelectedButton={showSelectedButton}\n hasHitSelectionLimit={hasHitSelectionLimit}\n isSingleSelect={isSingleSelect}\n onSelectedClick={this.showSelected}\n onChoose={this.choose}\n onCancel={this.cancel}\n chooseButtonLabel={chooseButtonLabel}\n cancelButtonLabel={cancelButtonLabel}\n renderCustomActionButtons={renderCustomActionButtons}\n >\n {isPaginationVisible ? (\n <OffsetBasedPagination\n offset={offset}\n onOffsetChange={this.paginate}\n pageSize={currentPageSize}\n totalCount={totalCount}\n />\n ) : null}\n </Footer>\n </div>\n {allowUpload && !!this.appElement ? (\n <UploadDialog\n isOpen={isUploadModalOpen}\n currentFolderId={id}\n token={token}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n apiHost={apiHost}\n uploadHost={uploadHost}\n onClose={this.uploadSuccessHandler}\n parentElement={this.rootElement}\n appElement={this.appElement}\n contentUploaderProps={contentUploaderProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\n {allowCreate && !!this.appElement ? (\n <CreateFolderDialog\n isOpen={isCreateFolderModalOpen}\n onCreate={this.createFolderCallback}\n onCancel={this.closeModals}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n </div>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport { ContentPicker as ContentPickerComponent };\nexport default makeResponsive(ContentPicker);\n"],"file":"ContentPicker.js"}
@@ -118,7 +118,6 @@ textarea,
118
118
  select {
119
119
  font-weight: inherit;
120
120
  font-size: inherit;
121
- *font-size: 100%; /* to enable resizing for IE */
122
121
  font-family: inherit;
123
122
  }
124
123
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-ui-elements",
3
- "version": "18.0.0-beta.3",
3
+ "version": "18.0.0",
4
4
  "description": "Box UI Elements",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",
package/src/constants.js CHANGED
@@ -177,7 +177,7 @@ export const DELIMITER_SLASH: 'slash' = 'slash';
177
177
  export const DELIMITER_CARET: 'caret' = 'caret';
178
178
 
179
179
  /* ---------------------- Defaults -------------------------- */
180
- export const DEFAULT_PREVIEW_VERSION = '2.93.0';
180
+ export const DEFAULT_PREVIEW_VERSION = '2.95.0';
181
181
  export const DEFAULT_LOCALE = 'en-US';
182
182
  export const DEFAULT_PATH_STATIC = 'platform/elements';
183
183
  export const DEFAULT_PATH_STATIC_PREVIEW = 'platform/preview';
@@ -788,7 +788,7 @@ class ContentPicker extends Component<Props, State> {
788
788
  return;
789
789
  }
790
790
 
791
- if (!name) {
791
+ if (!name.trim()) {
792
792
  this.setState({
793
793
  errorCode: ERROR_CODE_ITEM_NAME_INVALID,
794
794
  isLoading: false,
@@ -807,7 +807,7 @@ class ContentPicker extends Component<Props, State> {
807
807
  this.setState({ isLoading: true });
808
808
  this.api.getFolderAPI().create(
809
809
  id,
810
- name,
810
+ name.trim(),
811
811
  () => {
812
812
  this.fetchFolder(id);
813
813
  },
@@ -118,7 +118,6 @@ textarea,
118
118
  select {
119
119
  font-weight: inherit;
120
120
  font-size: inherit;
121
- *font-size: 100%; /* to enable resizing for IE */
122
121
  font-family: inherit;
123
122
  }
124
123