learningtribes-studio-frontend 1.4.2-alpha.0 → 1.4.2-alpha.2

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.
Files changed (33) hide show
  1. package/dist/accessibilityPolicy.min.js +2 -2
  2. package/dist/assets.min.css +1 -1
  3. package/dist/assets.min.js +1 -1
  4. package/dist/assets.min.js.map +1 -1
  5. package/dist/common.min.css +2 -2
  6. package/dist/common.min.js +9 -9
  7. package/dist/common.min.js.map +1 -1
  8. package/dist/courseHealthCheck.min.js +1 -1
  9. package/dist/courseOutlineHealthCheck.min.js +1 -1
  10. package/dist/editImageModal.min.css +1 -1
  11. package/dist/editImageModal.min.js +1 -1
  12. package/dist/editImageModal.min.js.map +1 -1
  13. package/dist/i18n/messages/ar.json +0 -3
  14. package/dist/i18n/messages/es_419.json +0 -3
  15. package/dist/i18n/messages/fr.json +0 -3
  16. package/dist/i18n/messages/zh_CN.json +0 -3
  17. package/dist/i18nMessages.min.js +1 -1
  18. package/dist/i18nMessages.min.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/components/AssetsDropZone/AssetsDropZone.scss +49 -59
  21. package/src/components/AssetsDropZone/AssetsDropZone.test.jsx +1 -1
  22. package/src/components/AssetsDropZone/index.jsx +15 -19
  23. package/src/components/AssetsList/AssetsList.scss +48 -41
  24. package/src/components/AssetsList/index.jsx +9 -4
  25. package/src/components/EditImageModal/EditImageModal.scss +59 -35
  26. package/src/components/EditImageModal/EditImageModal.test.jsx +27 -176
  27. package/src/components/EditImageModal/displayMessages.jsx +6 -16
  28. package/src/components/EditImageModal/index.jsx +40 -88
  29. package/src/data/i18n/default/transifex_input.json +3 -5
  30. package/src/data/i18n/locales/ar.json +0 -3
  31. package/src/data/i18n/locales/es_419.json +0 -3
  32. package/src/data/i18n/locales/fr.json +0 -3
  33. package/src/data/i18n/locales/zh_CN.json +0 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/components/AssetsList/AssetsList.scss","webpack:///./src/components/AssetsList/displayMessages.jsx","webpack:///./src/components/AssetsList/index.jsx","webpack:///./src/components/AssetsList/container.jsx","webpack:///./src/components/AssetsClearSearchButton/displayMessages.jsx","webpack:///./src/components/AssetsClearSearchButton/index.jsx","webpack:///./src/components/AssetsClearSearchButton/container.jsx","webpack:///./src/components/EditImageModal/EditImageModal.scss","webpack:///./src/utils/rewriteStaticLinks.js","webpack:///./src/components/EditImageModal/displayMessages.jsx","webpack:///./src/components/EditImageModal/index.jsx","webpack:///./src/components/EditImageModal/container.jsx","webpack:///./node_modules/custom-event-polyfill/custom-event-polyfill.js","webpack:///./src/editImageModalIndex.jsx"],"names":["module","exports","root","SFE","m-0","mt-0","my-0","mr-0","mx-0","mb-0","ml-0","m-1","mt-1","my-1","mr-1","mx-1","mb-1","ml-1","m-2","mt-2","my-2","mr-2","mx-2","mb-2","ml-2","m-3","mt-3","my-3","mr-3","mx-3","mb-3","ml-3","m-4","mt-4","my-4","mr-4","mx-4","mb-4","ml-4","m-5","mt-5","my-5","mr-5","mx-5","mb-5","ml-5","p-0","pt-0","py-0","pr-0","px-0","pb-0","pl-0","p-1","pt-1","py-1","pr-1","px-1","pb-1","pl-1","p-2","pt-2","py-2","pr-2","px-2","pb-2","pl-2","p-3","pt-3","py-3","pr-3","px-3","pb-3","pl-3","p-4","pt-4","py-4","pr-4","px-4","pb-4","pl-4","p-5","pt-5","py-5","pr-5","px-5","pb-5","pl-5","m-n1","mt-n1","my-n1","mr-n1","mx-n1","mb-n1","ml-n1","m-n2","mt-n2","my-n2","mr-n2","mx-n2","mb-n2","ml-n2","m-n3","mt-n3","my-n3","mr-n3","mx-n3","mb-n3","ml-n3","m-n4","mt-n4","my-n4","mr-n4","mx-n4","mb-n4","ml-n4","m-n5","mt-n5","my-n5","mr-n5","mx-n5","mb-n5","ml-n5","m-auto","mt-auto","my-auto","mr-auto","mx-auto","mb-auto","ml-auto","m-sm-0","mt-sm-0","my-sm-0","mr-sm-0","mx-sm-0","mb-sm-0","ml-sm-0","m-sm-1","mt-sm-1","my-sm-1","mr-sm-1","mx-sm-1","mb-sm-1","ml-sm-1","m-sm-2","mt-sm-2","my-sm-2","mr-sm-2","mx-sm-2","mb-sm-2","ml-sm-2","m-sm-3","mt-sm-3","my-sm-3","mr-sm-3","mx-sm-3","mb-sm-3","ml-sm-3","m-sm-4","mt-sm-4","my-sm-4","mr-sm-4","mx-sm-4","mb-sm-4","ml-sm-4","m-sm-5","mt-sm-5","my-sm-5","mr-sm-5","mx-sm-5","mb-sm-5","ml-sm-5","p-sm-0","pt-sm-0","py-sm-0","pr-sm-0","px-sm-0","pb-sm-0","pl-sm-0","p-sm-1","pt-sm-1","py-sm-1","pr-sm-1","px-sm-1","pb-sm-1","pl-sm-1","p-sm-2","pt-sm-2","py-sm-2","pr-sm-2","px-sm-2","pb-sm-2","pl-sm-2","p-sm-3","pt-sm-3","py-sm-3","pr-sm-3","px-sm-3","pb-sm-3","pl-sm-3","p-sm-4","pt-sm-4","py-sm-4","pr-sm-4","px-sm-4","pb-sm-4","pl-sm-4","p-sm-5","pt-sm-5","py-sm-5","pr-sm-5","px-sm-5","pb-sm-5","pl-sm-5","m-sm-n1","mt-sm-n1","my-sm-n1","mr-sm-n1","mx-sm-n1","mb-sm-n1","ml-sm-n1","m-sm-n2","mt-sm-n2","my-sm-n2","mr-sm-n2","mx-sm-n2","mb-sm-n2","ml-sm-n2","m-sm-n3","mt-sm-n3","my-sm-n3","mr-sm-n3","mx-sm-n3","mb-sm-n3","ml-sm-n3","m-sm-n4","mt-sm-n4","my-sm-n4","mr-sm-n4","mx-sm-n4","mb-sm-n4","ml-sm-n4","m-sm-n5","mt-sm-n5","my-sm-n5","mr-sm-n5","mx-sm-n5","mb-sm-n5","ml-sm-n5","m-sm-auto","mt-sm-auto","my-sm-auto","mr-sm-auto","mx-sm-auto","mb-sm-auto","ml-sm-auto","m-md-0","mt-md-0","my-md-0","mr-md-0","mx-md-0","mb-md-0","ml-md-0","m-md-1","mt-md-1","my-md-1","mr-md-1","mx-md-1","mb-md-1","ml-md-1","m-md-2","mt-md-2","my-md-2","mr-md-2","mx-md-2","mb-md-2","ml-md-2","m-md-3","mt-md-3","my-md-3","mr-md-3","mx-md-3","mb-md-3","ml-md-3","m-md-4","mt-md-4","my-md-4","mr-md-4","mx-md-4","mb-md-4","ml-md-4","m-md-5","mt-md-5","my-md-5","mr-md-5","mx-md-5","mb-md-5","ml-md-5","p-md-0","pt-md-0","py-md-0","pr-md-0","px-md-0","pb-md-0","pl-md-0","p-md-1","pt-md-1","py-md-1","pr-md-1","px-md-1","pb-md-1","pl-md-1","p-md-2","pt-md-2","py-md-2","pr-md-2","px-md-2","pb-md-2","pl-md-2","p-md-3","pt-md-3","py-md-3","pr-md-3","px-md-3","pb-md-3","pl-md-3","p-md-4","pt-md-4","py-md-4","pr-md-4","px-md-4","pb-md-4","pl-md-4","p-md-5","pt-md-5","py-md-5","pr-md-5","px-md-5","pb-md-5","pl-md-5","m-md-n1","mt-md-n1","my-md-n1","mr-md-n1","mx-md-n1","mb-md-n1","ml-md-n1","m-md-n2","mt-md-n2","my-md-n2","mr-md-n2","mx-md-n2","mb-md-n2","ml-md-n2","m-md-n3","mt-md-n3","my-md-n3","mr-md-n3","mx-md-n3","mb-md-n3","ml-md-n3","m-md-n4","mt-md-n4","my-md-n4","mr-md-n4","mx-md-n4","mb-md-n4","ml-md-n4","m-md-n5","mt-md-n5","my-md-n5","mr-md-n5","mx-md-n5","mb-md-n5","ml-md-n5","m-md-auto","mt-md-auto","my-md-auto","mr-md-auto","mx-md-auto","mb-md-auto","ml-md-auto","m-lg-0","mt-lg-0","my-lg-0","mr-lg-0","mx-lg-0","mb-lg-0","ml-lg-0","m-lg-1","mt-lg-1","my-lg-1","mr-lg-1","mx-lg-1","mb-lg-1","ml-lg-1","m-lg-2","mt-lg-2","my-lg-2","mr-lg-2","mx-lg-2","mb-lg-2","ml-lg-2","m-lg-3","mt-lg-3","my-lg-3","mr-lg-3","mx-lg-3","mb-lg-3","ml-lg-3","m-lg-4","mt-lg-4","my-lg-4","mr-lg-4","mx-lg-4","mb-lg-4","ml-lg-4","m-lg-5","mt-lg-5","my-lg-5","mr-lg-5","mx-lg-5","mb-lg-5","ml-lg-5","p-lg-0","pt-lg-0","py-lg-0","pr-lg-0","px-lg-0","pb-lg-0","pl-lg-0","p-lg-1","pt-lg-1","py-lg-1","pr-lg-1","px-lg-1","pb-lg-1","pl-lg-1","p-lg-2","pt-lg-2","py-lg-2","pr-lg-2","px-lg-2","pb-lg-2","pl-lg-2","p-lg-3","pt-lg-3","py-lg-3","pr-lg-3","px-lg-3","pb-lg-3","pl-lg-3","p-lg-4","pt-lg-4","py-lg-4","pr-lg-4","px-lg-4","pb-lg-4","pl-lg-4","p-lg-5","pt-lg-5","py-lg-5","pr-lg-5","px-lg-5","pb-lg-5","pl-lg-5","m-lg-n1","mt-lg-n1","my-lg-n1","mr-lg-n1","mx-lg-n1","mb-lg-n1","ml-lg-n1","m-lg-n2","mt-lg-n2","my-lg-n2","mr-lg-n2","mx-lg-n2","mb-lg-n2","ml-lg-n2","m-lg-n3","mt-lg-n3","my-lg-n3","mr-lg-n3","mx-lg-n3","mb-lg-n3","ml-lg-n3","m-lg-n4","mt-lg-n4","my-lg-n4","mr-lg-n4","mx-lg-n4","mb-lg-n4","ml-lg-n4","m-lg-n5","mt-lg-n5","my-lg-n5","mr-lg-n5","mx-lg-n5","mb-lg-n5","ml-lg-n5","m-lg-auto","mt-lg-auto","my-lg-auto","mr-lg-auto","mx-lg-auto","mb-lg-auto","ml-lg-auto","m-xl-0","mt-xl-0","my-xl-0","mr-xl-0","mx-xl-0","mb-xl-0","ml-xl-0","m-xl-1","mt-xl-1","my-xl-1","mr-xl-1","mx-xl-1","mb-xl-1","ml-xl-1","m-xl-2","mt-xl-2","my-xl-2","mr-xl-2","mx-xl-2","mb-xl-2","ml-xl-2","m-xl-3","mt-xl-3","my-xl-3","mr-xl-3","mx-xl-3","mb-xl-3","ml-xl-3","m-xl-4","mt-xl-4","my-xl-4","mr-xl-4","mx-xl-4","mb-xl-4","ml-xl-4","m-xl-5","mt-xl-5","my-xl-5","mr-xl-5","mx-xl-5","mb-xl-5","ml-xl-5","p-xl-0","pt-xl-0","py-xl-0","pr-xl-0","px-xl-0","pb-xl-0","pl-xl-0","p-xl-1","pt-xl-1","py-xl-1","pr-xl-1","px-xl-1","pb-xl-1","pl-xl-1","p-xl-2","pt-xl-2","py-xl-2","pr-xl-2","px-xl-2","pb-xl-2","pl-xl-2","p-xl-3","pt-xl-3","py-xl-3","pr-xl-3","px-xl-3","pb-xl-3","pl-xl-3","p-xl-4","pt-xl-4","py-xl-4","pr-xl-4","px-xl-4","pb-xl-4","pl-xl-4","p-xl-5","pt-xl-5","py-xl-5","pr-xl-5","px-xl-5","pb-xl-5","pl-xl-5","m-xl-n1","mt-xl-n1","my-xl-n1","mr-xl-n1","mx-xl-n1","mb-xl-n1","ml-xl-n1","m-xl-n2","mt-xl-n2","my-xl-n2","mr-xl-n2","mx-xl-n2","mb-xl-n2","ml-xl-n2","m-xl-n3","mt-xl-n3","my-xl-n3","mr-xl-n3","mx-xl-n3","mb-xl-n3","ml-xl-n3","m-xl-n4","mt-xl-n4","my-xl-n4","mr-xl-n4","mx-xl-n4","mb-xl-n4","ml-xl-n4","m-xl-n5","mt-xl-n5","my-xl-n5","mr-xl-n5","mx-xl-n5","mb-xl-n5","ml-xl-n5","m-xl-auto","mt-xl-auto","my-xl-auto","mr-xl-auto","mx-xl-auto","mb-xl-auto","ml-xl-auto","sr-only","sr-only-focusable","assets-grid","asset-grid-item","asset-preview","selected","asset-name","file-type-badge","asset-thumbnail","asset-icon","asset-info","asset-size","assets-list-image-preview-container","assets-list-image-preview-image","list-header","no-image-preview","unbulleted-list-item","messages","__webpack_require__","defineMessages","assetsListNoPreview","id","defaultMessage","description","assetsListNameLabel","assetsListDateLabel","initialState","selectedAssetIndex","selectedAssetPage","AssetsList","props","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","_initialiseProps","state","_extends","handleKeyDown","bind","onAssetClick","onListBoxFocus","React","Component","nextProps","paginationMetadata","page","setState","getSelectedAssetIndex","assetsList","selectedAsset","keys","length","asset","index","_this2","selectAsset","getFileExtension","displayName","lastDot","lastIndexOf","substring","toLowerCase","formatFileSize","bytes","i","Math","floor","log","pow","toFixed","getAssetGridItem","isSelected","baseUrl","courseDetails","base_url","fileExt","display_name","fileSize","file_size","_react2","default","createElement","onMouseDown","e","preventDefault","className","_classnames2","styles","_defineProperty","aria-selected","role","key","tabIndex","thumbnail","src","alt","title","findIndex","render","assetsGridItems","map","aria-activedescendant","onFocus","onKeyDown","propTypes","PropTypes","arrayOf","shape","string","content_type","url","date_added","portable_url","external_url","number","isRequired","lang","url_name","name","display_course_number","num","org","revision","start","end","pageSize","totalCount","func","_reactRedux","_","_assets","WrappedAssetsList","connect","assets","studioDetails","course","courseImageAccessibilityDocs","help_tokens","image_accessibility","metadata","pagination","select","dispatch","assetsClearSearchButtonLabel","_paragon","AssetsClearSearchButton","_ref","clearSearch","Button","buttonType","onClick","label","_formattedMessageWrapper2","message","WrappedAssetsClearSearchButton","searchUpdate","paragon-fieldset","image-preview-placeholder","or-fields","modal-body","row","modal-dialog","form-control","is-invalid","is-invalid-nodanger","image-preview-container","image-preview-image","image-dimensions-x","invalid-feedback","form-group","form-text","form-row","col","form-check","form-check-input","form-check-label","content","from","to","fromRe","replace","regex","RegExp","match","editImageModalAssetsListLoadingSpinner","editImageModalAssetsListNoAssetsMessage","editImageModalAssetsListNoResultsMessage","editImageModalCancelButton","editImageModalFormError","editImageModalFormErrorMissingFields","editImageModalFormValidImageDescription","editImageModalFormValidImageDimensions","editImageModalImageDescriptionDescription","editImageModalImageDescriptionLabel","editImageModalImageDescriptionLegend","editImageModalDimensionsLegend","editImageModalImageHeightLabel","editImageModalImageIsDecorativeCheckboxDescription","editImageModalImageIsDecorativeCheckboxLabel","editImageModalImagePreviewText","editImageModalInsertImageButton","editImageModalLearnMore","editImageModalLockImageProportionsCheckboxLabel","editImageModalImageWidthLabel","editImageModalInsertTitle","editImageModalInsertHeader","editImageModalEditTitle","editImageModalImageOrFields","editImageModalNextPageButton","editImageModalPreviousPageButton","editImageModalInvalidFileType","editImageModalTooManyFiles","_actionTypes","_getAssetsPageType","WrappedAssetsResultsCount","_state$metadata$filte","filters","assetTypes","typesWithoutImages","Images","_objectWithoutProperties","filtersMetadata","filtersWithoutImages","searchMetadata","search","AssetsResultsCount","initialEditImageModalState","areImageDimensionsValid","areProportionsLocked","assetsPageType","pageTypes","SKELETON","baseAssetURL","currentUploadErrorMessage","currentValidationMessages","displayLoadingSpinner","imageDescription","imageDimensions","imageSource","imageStyle","isImageDecorative","isImageDescriptionValid","isImageLoaded","isImageLoading","isImageDimensionsValid","isModalOpen","isStatusAlertOpen","pageNumber","shouldShowPreviousButton","EditImageModal","handleOpenModal","onConstrainProportionsClick","onEditImageModalClose","onImageDescriptionBlur","onImageDimensionBlur","onInsertImageButtonClick","onImageIsDecorativeClick","onImageLoad","onNextPageButtonClick","onPreviousPageButtonClick","onStatusAlertClose","setDropZoneButtonRef","setImageDescriptionInputRef","setImageFormRef","setImageRef","setModalWrapperRef","setPreviousButtonRef","setStatusAlertRef","dropZoneButtonRef","imageDescriptionInputRef","imageFormRef","imageRef","previousPageButtonRef","modalWrapperRef","statusAlertRef","addEventListener","newState","assetsStatus","type","assetActions","upload","UPLOAD_ASSET_SUCCESS","uploadedAsset","response","clearAssetsStatus","UPLOAD_EXCEED_MAX_COUNT_ERROR","UPLOAD_INVALID_FILE_TYPE_ERROR","getPageType","prevProps","prevState","didStatusAlertOpen","wasNextButtonClicked","wasPreviousButtonClicked","removeEventListener","ref","checked","resetImageSelection","dispatchEvent","CustomEvent","bubbles","event","img","target","width","naturalWidth","height","naturalHeight","aspectRatio","onImageError","dimensionType","newDimensionType","Error","dimensionValue","newImageDimensions","parsedDimensionValue","parseInt","isNaN","newDimensionValue","round","isAssetSelected","isValidImageDescription","validateImageDescription","isValidImageDimensions","validateImageDimensions","isValidFormContent","isValid","validationMessage","detail","getDimensionStateOrNatural","style","focus","getNaturalDimension","getImageDescriptionInput","Fieldset","legend","invalidMessage","variant","status","Variant","DANGER","variantIconDescription","InputText","describedBy","getImageDescriptionDescription","value","disabled","onBlur","inputRef","CheckBox","getImageIsDecorativeDescription","onChange","getLearnMoreLink","displayText","rel","href","Fragment","getImageDimensionsInput","Icon","getImageAssetSource","_rewriteStaticLinks2","getImage","invisible","onLoad","onError","getImagePreviewPlaceholder","getImagePreview","aria-hidden","getStatusAlertDialog","dialog","getUploadErrorStatusMessage","tagName","reduce","accumulator","current","errorMessage","push","getStatusAlert","StatusAlert","alertType","onClose","open","getModalHeader","header","aria-live","getModalBody","body","getImageSelectionModalBody","getImageSettingsModalBody","getImageSelectionModalBodyAssetsList","NORMAL","_container6","NO_ASSETS","NO_RESULTS","_container2","FontAwesomeStyles","fa","_container4","maxFileCount","maxFileSizeMB","acceptedFileTypes","compactStyle","buttonRef","_container10","display","getPreviousPageButton","getModalButtons","buttons","getInsertImageButton","getNextPageButton","updatePage","clearSelectedAsset","eventSource","isEventSourceEmpty","baseAssetUrl","getAssets","feedback","_state","dangerIconDescription","_state$imageDimension","isPositiveIntegerOrEmpty","val","undefined","Number","isInteger","aria-atomic","aria-relevant","Modal","closeText","parentSelector","object","WrappedEditImageModal","request","pageUpdate","ce","window","defaultPrevented","params","evt","origPrevent","cancelable","document","createEvent","initCustomEvent","defineProperty","get","prototype","Event","_reactIntl","_babelPolyfill","global","i18nData","_loadI18nDomData2","ReactDOM","IntlProvider","locale","Provider","store","getElementById"],"mappings":"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aAAA,aAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,W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","file":"editImageModal.min.js","sourcesContent":["// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"root\",\"SFE\":\"SFE\",\"m-0\":\"m-0\",\"mt-0\":\"mt-0\",\"my-0\":\"my-0\",\"mr-0\":\"mr-0\",\"mx-0\":\"mx-0\",\"mb-0\":\"mb-0\",\"ml-0\":\"ml-0\",\"m-1\":\"m-1\",\"mt-1\":\"mt-1\",\"my-1\":\"my-1\",\"mr-1\":\"mr-1\",\"mx-1\":\"mx-1\",\"mb-1\":\"mb-1\",\"ml-1\":\"ml-1\",\"m-2\":\"m-2\",\"mt-2\":\"mt-2\",\"my-2\":\"my-2\",\"mr-2\":\"mr-2\",\"mx-2\":\"mx-2\",\"mb-2\":\"mb-2\",\"ml-2\":\"ml-2\",\"m-3\":\"m-3\",\"mt-3\":\"mt-3\",\"my-3\":\"my-3\",\"mr-3\":\"mr-3\",\"mx-3\":\"mx-3\",\"mb-3\":\"mb-3\",\"ml-3\":\"ml-3\",\"m-4\":\"m-4\",\"mt-4\":\"mt-4\",\"my-4\":\"my-4\",\"mr-4\":\"mr-4\",\"mx-4\":\"mx-4\",\"mb-4\":\"mb-4\",\"ml-4\":\"ml-4\",\"m-5\":\"m-5\",\"mt-5\":\"mt-5\",\"my-5\":\"my-5\",\"mr-5\":\"mr-5\",\"mx-5\":\"mx-5\",\"mb-5\":\"mb-5\",\"ml-5\":\"ml-5\",\"p-0\":\"p-0\",\"pt-0\":\"pt-0\",\"py-0\":\"py-0\",\"pr-0\":\"pr-0\",\"px-0\":\"px-0\",\"pb-0\":\"pb-0\",\"pl-0\":\"pl-0\",\"p-1\":\"p-1\",\"pt-1\":\"pt-1\",\"py-1\":\"py-1\",\"pr-1\":\"pr-1\",\"px-1\":\"px-1\",\"pb-1\":\"pb-1\",\"pl-1\":\"pl-1\",\"p-2\":\"p-2\",\"pt-2\":\"pt-2\",\"py-2\":\"py-2\",\"pr-2\":\"pr-2\",\"px-2\":\"px-2\",\"pb-2\":\"pb-2\",\"pl-2\":\"pl-2\",\"p-3\":\"p-3\",\"pt-3\":\"pt-3\",\"py-3\":\"py-3\",\"pr-3\":\"pr-3\",\"px-3\":\"px-3\",\"pb-3\":\"pb-3\",\"pl-3\":\"pl-3\",\"p-4\":\"p-4\",\"pt-4\":\"pt-4\",\"py-4\":\"py-4\",\"pr-4\":\"pr-4\",\"px-4\":\"px-4\",\"pb-4\":\"pb-4\",\"pl-4\":\"pl-4\",\"p-5\":\"p-5\",\"pt-5\":\"pt-5\",\"py-5\":\"py-5\",\"pr-5\":\"pr-5\",\"px-5\":\"px-5\",\"pb-5\":\"pb-5\",\"pl-5\":\"pl-5\",\"m-n1\":\"m-n1\",\"mt-n1\":\"mt-n1\",\"my-n1\":\"my-n1\",\"mr-n1\":\"mr-n1\",\"mx-n1\":\"mx-n1\",\"mb-n1\":\"mb-n1\",\"ml-n1\":\"ml-n1\",\"m-n2\":\"m-n2\",\"mt-n2\":\"mt-n2\",\"my-n2\":\"my-n2\",\"mr-n2\":\"mr-n2\",\"mx-n2\":\"mx-n2\",\"mb-n2\":\"mb-n2\",\"ml-n2\":\"ml-n2\",\"m-n3\":\"m-n3\",\"mt-n3\":\"mt-n3\",\"my-n3\":\"my-n3\",\"mr-n3\":\"mr-n3\",\"mx-n3\":\"mx-n3\",\"mb-n3\":\"mb-n3\",\"ml-n3\":\"ml-n3\",\"m-n4\":\"m-n4\",\"mt-n4\":\"mt-n4\",\"my-n4\":\"my-n4\",\"mr-n4\":\"mr-n4\",\"mx-n4\":\"mx-n4\",\"mb-n4\":\"mb-n4\",\"ml-n4\":\"ml-n4\",\"m-n5\":\"m-n5\",\"mt-n5\":\"mt-n5\",\"my-n5\":\"my-n5\",\"mr-n5\":\"mr-n5\",\"mx-n5\":\"mx-n5\",\"mb-n5\":\"mb-n5\",\"ml-n5\":\"ml-n5\",\"m-auto\":\"m-auto\",\"mt-auto\":\"mt-auto\",\"my-auto\":\"my-auto\",\"mr-auto\":\"mr-auto\",\"mx-auto\":\"mx-auto\",\"mb-auto\":\"mb-auto\",\"ml-auto\":\"ml-auto\",\"m-sm-0\":\"m-sm-0\",\"mt-sm-0\":\"mt-sm-0\",\"my-sm-0\":\"my-sm-0\",\"mr-sm-0\":\"mr-sm-0\",\"mx-sm-0\":\"mx-sm-0\",\"mb-sm-0\":\"mb-sm-0\",\"ml-sm-0\":\"ml-sm-0\",\"m-sm-1\":\"m-sm-1\",\"mt-sm-1\":\"mt-sm-1\",\"my-sm-1\":\"my-sm-1\",\"mr-sm-1\":\"mr-sm-1\",\"mx-sm-1\":\"mx-sm-1\",\"mb-sm-1\":\"mb-sm-1\",\"ml-sm-1\":\"ml-sm-1\",\"m-sm-2\":\"m-sm-2\",\"mt-sm-2\":\"mt-sm-2\",\"my-sm-2\":\"my-sm-2\",\"mr-sm-2\":\"mr-sm-2\",\"mx-sm-2\":\"mx-sm-2\",\"mb-sm-2\":\"mb-sm-2\",\"ml-sm-2\":\"ml-sm-2\",\"m-sm-3\":\"m-sm-3\",\"mt-sm-3\":\"mt-sm-3\",\"my-sm-3\":\"my-sm-3\",\"mr-sm-3\":\"mr-sm-3\",\"mx-sm-3\":\"mx-sm-3\",\"mb-sm-3\":\"mb-sm-3\",\"ml-sm-3\":\"ml-sm-3\",\"m-sm-4\":\"m-sm-4\",\"mt-sm-4\":\"mt-sm-4\",\"my-sm-4\":\"my-sm-4\",\"mr-sm-4\":\"mr-sm-4\",\"mx-sm-4\":\"mx-sm-4\",\"mb-sm-4\":\"mb-sm-4\",\"ml-sm-4\":\"ml-sm-4\",\"m-sm-5\":\"m-sm-5\",\"mt-sm-5\":\"mt-sm-5\",\"my-sm-5\":\"my-sm-5\",\"mr-sm-5\":\"mr-sm-5\",\"mx-sm-5\":\"mx-sm-5\",\"mb-sm-5\":\"mb-sm-5\",\"ml-sm-5\":\"ml-sm-5\",\"p-sm-0\":\"p-sm-0\",\"pt-sm-0\":\"pt-sm-0\",\"py-sm-0\":\"py-sm-0\",\"pr-sm-0\":\"pr-sm-0\",\"px-sm-0\":\"px-sm-0\",\"pb-sm-0\":\"pb-sm-0\",\"pl-sm-0\":\"pl-sm-0\",\"p-sm-1\":\"p-sm-1\",\"pt-sm-1\":\"pt-sm-1\",\"py-sm-1\":\"py-sm-1\",\"pr-sm-1\":\"pr-sm-1\",\"px-sm-1\":\"px-sm-1\",\"pb-sm-1\":\"pb-sm-1\",\"pl-sm-1\":\"pl-sm-1\",\"p-sm-2\":\"p-sm-2\",\"pt-sm-2\":\"pt-sm-2\",\"py-sm-2\":\"py-sm-2\",\"pr-sm-2\":\"pr-sm-2\",\"px-sm-2\":\"px-sm-2\",\"pb-sm-2\":\"pb-sm-2\",\"pl-sm-2\":\"pl-sm-2\",\"p-sm-3\":\"p-sm-3\",\"pt-sm-3\":\"pt-sm-3\",\"py-sm-3\":\"py-sm-3\",\"pr-sm-3\":\"pr-sm-3\",\"px-sm-3\":\"px-sm-3\",\"pb-sm-3\":\"pb-sm-3\",\"pl-sm-3\":\"pl-sm-3\",\"p-sm-4\":\"p-sm-4\",\"pt-sm-4\":\"pt-sm-4\",\"py-sm-4\":\"py-sm-4\",\"pr-sm-4\":\"pr-sm-4\",\"px-sm-4\":\"px-sm-4\",\"pb-sm-4\":\"pb-sm-4\",\"pl-sm-4\":\"pl-sm-4\",\"p-sm-5\":\"p-sm-5\",\"pt-sm-5\":\"pt-sm-5\",\"py-sm-5\":\"py-sm-5\",\"pr-sm-5\":\"pr-sm-5\",\"px-sm-5\":\"px-sm-5\",\"pb-sm-5\":\"pb-sm-5\",\"pl-sm-5\":\"pl-sm-5\",\"m-sm-n1\":\"m-sm-n1\",\"mt-sm-n1\":\"mt-sm-n1\",\"my-sm-n1\":\"my-sm-n1\",\"mr-sm-n1\":\"mr-sm-n1\",\"mx-sm-n1\":\"mx-sm-n1\",\"mb-sm-n1\":\"mb-sm-n1\",\"ml-sm-n1\":\"ml-sm-n1\",\"m-sm-n2\":\"m-sm-n2\",\"mt-sm-n2\":\"mt-sm-n2\",\"my-sm-n2\":\"my-sm-n2\",\"mr-sm-n2\":\"mr-sm-n2\",\"mx-sm-n2\":\"mx-sm-n2\",\"mb-sm-n2\":\"mb-sm-n2\",\"ml-sm-n2\":\"ml-sm-n2\",\"m-sm-n3\":\"m-sm-n3\",\"mt-sm-n3\":\"mt-sm-n3\",\"my-sm-n3\":\"my-sm-n3\",\"mr-sm-n3\":\"mr-sm-n3\",\"mx-sm-n3\":\"mx-sm-n3\",\"mb-sm-n3\":\"mb-sm-n3\",\"ml-sm-n3\":\"ml-sm-n3\",\"m-sm-n4\":\"m-sm-n4\",\"mt-sm-n4\":\"mt-sm-n4\",\"my-sm-n4\":\"my-sm-n4\",\"mr-sm-n4\":\"mr-sm-n4\",\"mx-sm-n4\":\"mx-sm-n4\",\"mb-sm-n4\":\"mb-sm-n4\",\"ml-sm-n4\":\"ml-sm-n4\",\"m-sm-n5\":\"m-sm-n5\",\"mt-sm-n5\":\"mt-sm-n5\",\"my-sm-n5\":\"my-sm-n5\",\"mr-sm-n5\":\"mr-sm-n5\",\"mx-sm-n5\":\"mx-sm-n5\",\"mb-sm-n5\":\"mb-sm-n5\",\"ml-sm-n5\":\"ml-sm-n5\",\"m-sm-auto\":\"m-sm-auto\",\"mt-sm-auto\":\"mt-sm-auto\",\"my-sm-auto\":\"my-sm-auto\",\"mr-sm-auto\":\"mr-sm-auto\",\"mx-sm-auto\":\"mx-sm-auto\",\"mb-sm-auto\":\"mb-sm-auto\",\"ml-sm-auto\":\"ml-sm-auto\",\"m-md-0\":\"m-md-0\",\"mt-md-0\":\"mt-md-0\",\"my-md-0\":\"my-md-0\",\"mr-md-0\":\"mr-md-0\",\"mx-md-0\":\"mx-md-0\",\"mb-md-0\":\"mb-md-0\",\"ml-md-0\":\"ml-md-0\",\"m-md-1\":\"m-md-1\",\"mt-md-1\":\"mt-md-1\",\"my-md-1\":\"my-md-1\",\"mr-md-1\":\"mr-md-1\",\"mx-md-1\":\"mx-md-1\",\"mb-md-1\":\"mb-md-1\",\"ml-md-1\":\"ml-md-1\",\"m-md-2\":\"m-md-2\",\"mt-md-2\":\"mt-md-2\",\"my-md-2\":\"my-md-2\",\"mr-md-2\":\"mr-md-2\",\"mx-md-2\":\"mx-md-2\",\"mb-md-2\":\"mb-md-2\",\"ml-md-2\":\"ml-md-2\",\"m-md-3\":\"m-md-3\",\"mt-md-3\":\"mt-md-3\",\"my-md-3\":\"my-md-3\",\"mr-md-3\":\"mr-md-3\",\"mx-md-3\":\"mx-md-3\",\"mb-md-3\":\"mb-md-3\",\"ml-md-3\":\"ml-md-3\",\"m-md-4\":\"m-md-4\",\"mt-md-4\":\"mt-md-4\",\"my-md-4\":\"my-md-4\",\"mr-md-4\":\"mr-md-4\",\"mx-md-4\":\"mx-md-4\",\"mb-md-4\":\"mb-md-4\",\"ml-md-4\":\"ml-md-4\",\"m-md-5\":\"m-md-5\",\"mt-md-5\":\"mt-md-5\",\"my-md-5\":\"my-md-5\",\"mr-md-5\":\"mr-md-5\",\"mx-md-5\":\"mx-md-5\",\"mb-md-5\":\"mb-md-5\",\"ml-md-5\":\"ml-md-5\",\"p-md-0\":\"p-md-0\",\"pt-md-0\":\"pt-md-0\",\"py-md-0\":\"py-md-0\",\"pr-md-0\":\"pr-md-0\",\"px-md-0\":\"px-md-0\",\"pb-md-0\":\"pb-md-0\",\"pl-md-0\":\"pl-md-0\",\"p-md-1\":\"p-md-1\",\"pt-md-1\":\"pt-md-1\",\"py-md-1\":\"py-md-1\",\"pr-md-1\":\"pr-md-1\",\"px-md-1\":\"px-md-1\",\"pb-md-1\":\"pb-md-1\",\"pl-md-1\":\"pl-md-1\",\"p-md-2\":\"p-md-2\",\"pt-md-2\":\"pt-md-2\",\"py-md-2\":\"py-md-2\",\"pr-md-2\":\"pr-md-2\",\"px-md-2\":\"px-md-2\",\"pb-md-2\":\"pb-md-2\",\"pl-md-2\":\"pl-md-2\",\"p-md-3\":\"p-md-3\",\"pt-md-3\":\"pt-md-3\",\"py-md-3\":\"py-md-3\",\"pr-md-3\":\"pr-md-3\",\"px-md-3\":\"px-md-3\",\"pb-md-3\":\"pb-md-3\",\"pl-md-3\":\"pl-md-3\",\"p-md-4\":\"p-md-4\",\"pt-md-4\":\"pt-md-4\",\"py-md-4\":\"py-md-4\",\"pr-md-4\":\"pr-md-4\",\"px-md-4\":\"px-md-4\",\"pb-md-4\":\"pb-md-4\",\"pl-md-4\":\"pl-md-4\",\"p-md-5\":\"p-md-5\",\"pt-md-5\":\"pt-md-5\",\"py-md-5\":\"py-md-5\",\"pr-md-5\":\"pr-md-5\",\"px-md-5\":\"px-md-5\",\"pb-md-5\":\"pb-md-5\",\"pl-md-5\":\"pl-md-5\",\"m-md-n1\":\"m-md-n1\",\"mt-md-n1\":\"mt-md-n1\",\"my-md-n1\":\"my-md-n1\",\"mr-md-n1\":\"mr-md-n1\",\"mx-md-n1\":\"mx-md-n1\",\"mb-md-n1\":\"mb-md-n1\",\"ml-md-n1\":\"ml-md-n1\",\"m-md-n2\":\"m-md-n2\",\"mt-md-n2\":\"mt-md-n2\",\"my-md-n2\":\"my-md-n2\",\"mr-md-n2\":\"mr-md-n2\",\"mx-md-n2\":\"mx-md-n2\",\"mb-md-n2\":\"mb-md-n2\",\"ml-md-n2\":\"ml-md-n2\",\"m-md-n3\":\"m-md-n3\",\"mt-md-n3\":\"mt-md-n3\",\"my-md-n3\":\"my-md-n3\",\"mr-md-n3\":\"mr-md-n3\",\"mx-md-n3\":\"mx-md-n3\",\"mb-md-n3\":\"mb-md-n3\",\"ml-md-n3\":\"ml-md-n3\",\"m-md-n4\":\"m-md-n4\",\"mt-md-n4\":\"mt-md-n4\",\"my-md-n4\":\"my-md-n4\",\"mr-md-n4\":\"mr-md-n4\",\"mx-md-n4\":\"mx-md-n4\",\"mb-md-n4\":\"mb-md-n4\",\"ml-md-n4\":\"ml-md-n4\",\"m-md-n5\":\"m-md-n5\",\"mt-md-n5\":\"mt-md-n5\",\"my-md-n5\":\"my-md-n5\",\"mr-md-n5\":\"mr-md-n5\",\"mx-md-n5\":\"mx-md-n5\",\"mb-md-n5\":\"mb-md-n5\",\"ml-md-n5\":\"ml-md-n5\",\"m-md-auto\":\"m-md-auto\",\"mt-md-auto\":\"mt-md-auto\",\"my-md-auto\":\"my-md-auto\",\"mr-md-auto\":\"mr-md-auto\",\"mx-md-auto\":\"mx-md-auto\",\"mb-md-auto\":\"mb-md-auto\",\"ml-md-auto\":\"ml-md-auto\",\"m-lg-0\":\"m-lg-0\",\"mt-lg-0\":\"mt-lg-0\",\"my-lg-0\":\"my-lg-0\",\"mr-lg-0\":\"mr-lg-0\",\"mx-lg-0\":\"mx-lg-0\",\"mb-lg-0\":\"mb-lg-0\",\"ml-lg-0\":\"ml-lg-0\",\"m-lg-1\":\"m-lg-1\",\"mt-lg-1\":\"mt-lg-1\",\"my-lg-1\":\"my-lg-1\",\"mr-lg-1\":\"mr-lg-1\",\"mx-lg-1\":\"mx-lg-1\",\"mb-lg-1\":\"mb-lg-1\",\"ml-lg-1\":\"ml-lg-1\",\"m-lg-2\":\"m-lg-2\",\"mt-lg-2\":\"mt-lg-2\",\"my-lg-2\":\"my-lg-2\",\"mr-lg-2\":\"mr-lg-2\",\"mx-lg-2\":\"mx-lg-2\",\"mb-lg-2\":\"mb-lg-2\",\"ml-lg-2\":\"ml-lg-2\",\"m-lg-3\":\"m-lg-3\",\"mt-lg-3\":\"mt-lg-3\",\"my-lg-3\":\"my-lg-3\",\"mr-lg-3\":\"mr-lg-3\",\"mx-lg-3\":\"mx-lg-3\",\"mb-lg-3\":\"mb-lg-3\",\"ml-lg-3\":\"ml-lg-3\",\"m-lg-4\":\"m-lg-4\",\"mt-lg-4\":\"mt-lg-4\",\"my-lg-4\":\"my-lg-4\",\"mr-lg-4\":\"mr-lg-4\",\"mx-lg-4\":\"mx-lg-4\",\"mb-lg-4\":\"mb-lg-4\",\"ml-lg-4\":\"ml-lg-4\",\"m-lg-5\":\"m-lg-5\",\"mt-lg-5\":\"mt-lg-5\",\"my-lg-5\":\"my-lg-5\",\"mr-lg-5\":\"mr-lg-5\",\"mx-lg-5\":\"mx-lg-5\",\"mb-lg-5\":\"mb-lg-5\",\"ml-lg-5\":\"ml-lg-5\",\"p-lg-0\":\"p-lg-0\",\"pt-lg-0\":\"pt-lg-0\",\"py-lg-0\":\"py-lg-0\",\"pr-lg-0\":\"pr-lg-0\",\"px-lg-0\":\"px-lg-0\",\"pb-lg-0\":\"pb-lg-0\",\"pl-lg-0\":\"pl-lg-0\",\"p-lg-1\":\"p-lg-1\",\"pt-lg-1\":\"pt-lg-1\",\"py-lg-1\":\"py-lg-1\",\"pr-lg-1\":\"pr-lg-1\",\"px-lg-1\":\"px-lg-1\",\"pb-lg-1\":\"pb-lg-1\",\"pl-lg-1\":\"pl-lg-1\",\"p-lg-2\":\"p-lg-2\",\"pt-lg-2\":\"pt-lg-2\",\"py-lg-2\":\"py-lg-2\",\"pr-lg-2\":\"pr-lg-2\",\"px-lg-2\":\"px-lg-2\",\"pb-lg-2\":\"pb-lg-2\",\"pl-lg-2\":\"pl-lg-2\",\"p-lg-3\":\"p-lg-3\",\"pt-lg-3\":\"pt-lg-3\",\"py-lg-3\":\"py-lg-3\",\"pr-lg-3\":\"pr-lg-3\",\"px-lg-3\":\"px-lg-3\",\"pb-lg-3\":\"pb-lg-3\",\"pl-lg-3\":\"pl-lg-3\",\"p-lg-4\":\"p-lg-4\",\"pt-lg-4\":\"pt-lg-4\",\"py-lg-4\":\"py-lg-4\",\"pr-lg-4\":\"pr-lg-4\",\"px-lg-4\":\"px-lg-4\",\"pb-lg-4\":\"pb-lg-4\",\"pl-lg-4\":\"pl-lg-4\",\"p-lg-5\":\"p-lg-5\",\"pt-lg-5\":\"pt-lg-5\",\"py-lg-5\":\"py-lg-5\",\"pr-lg-5\":\"pr-lg-5\",\"px-lg-5\":\"px-lg-5\",\"pb-lg-5\":\"pb-lg-5\",\"pl-lg-5\":\"pl-lg-5\",\"m-lg-n1\":\"m-lg-n1\",\"mt-lg-n1\":\"mt-lg-n1\",\"my-lg-n1\":\"my-lg-n1\",\"mr-lg-n1\":\"mr-lg-n1\",\"mx-lg-n1\":\"mx-lg-n1\",\"mb-lg-n1\":\"mb-lg-n1\",\"ml-lg-n1\":\"ml-lg-n1\",\"m-lg-n2\":\"m-lg-n2\",\"mt-lg-n2\":\"mt-lg-n2\",\"my-lg-n2\":\"my-lg-n2\",\"mr-lg-n2\":\"mr-lg-n2\",\"mx-lg-n2\":\"mx-lg-n2\",\"mb-lg-n2\":\"mb-lg-n2\",\"ml-lg-n2\":\"ml-lg-n2\",\"m-lg-n3\":\"m-lg-n3\",\"mt-lg-n3\":\"mt-lg-n3\",\"my-lg-n3\":\"my-lg-n3\",\"mr-lg-n3\":\"mr-lg-n3\",\"mx-lg-n3\":\"mx-lg-n3\",\"mb-lg-n3\":\"mb-lg-n3\",\"ml-lg-n3\":\"ml-lg-n3\",\"m-lg-n4\":\"m-lg-n4\",\"mt-lg-n4\":\"mt-lg-n4\",\"my-lg-n4\":\"my-lg-n4\",\"mr-lg-n4\":\"mr-lg-n4\",\"mx-lg-n4\":\"mx-lg-n4\",\"mb-lg-n4\":\"mb-lg-n4\",\"ml-lg-n4\":\"ml-lg-n4\",\"m-lg-n5\":\"m-lg-n5\",\"mt-lg-n5\":\"mt-lg-n5\",\"my-lg-n5\":\"my-lg-n5\",\"mr-lg-n5\":\"mr-lg-n5\",\"mx-lg-n5\":\"mx-lg-n5\",\"mb-lg-n5\":\"mb-lg-n5\",\"ml-lg-n5\":\"ml-lg-n5\",\"m-lg-auto\":\"m-lg-auto\",\"mt-lg-auto\":\"mt-lg-auto\",\"my-lg-auto\":\"my-lg-auto\",\"mr-lg-auto\":\"mr-lg-auto\",\"mx-lg-auto\":\"mx-lg-auto\",\"mb-lg-auto\":\"mb-lg-auto\",\"ml-lg-auto\":\"ml-lg-auto\",\"m-xl-0\":\"m-xl-0\",\"mt-xl-0\":\"mt-xl-0\",\"my-xl-0\":\"my-xl-0\",\"mr-xl-0\":\"mr-xl-0\",\"mx-xl-0\":\"mx-xl-0\",\"mb-xl-0\":\"mb-xl-0\",\"ml-xl-0\":\"ml-xl-0\",\"m-xl-1\":\"m-xl-1\",\"mt-xl-1\":\"mt-xl-1\",\"my-xl-1\":\"my-xl-1\",\"mr-xl-1\":\"mr-xl-1\",\"mx-xl-1\":\"mx-xl-1\",\"mb-xl-1\":\"mb-xl-1\",\"ml-xl-1\":\"ml-xl-1\",\"m-xl-2\":\"m-xl-2\",\"mt-xl-2\":\"mt-xl-2\",\"my-xl-2\":\"my-xl-2\",\"mr-xl-2\":\"mr-xl-2\",\"mx-xl-2\":\"mx-xl-2\",\"mb-xl-2\":\"mb-xl-2\",\"ml-xl-2\":\"ml-xl-2\",\"m-xl-3\":\"m-xl-3\",\"mt-xl-3\":\"mt-xl-3\",\"my-xl-3\":\"my-xl-3\",\"mr-xl-3\":\"mr-xl-3\",\"mx-xl-3\":\"mx-xl-3\",\"mb-xl-3\":\"mb-xl-3\",\"ml-xl-3\":\"ml-xl-3\",\"m-xl-4\":\"m-xl-4\",\"mt-xl-4\":\"mt-xl-4\",\"my-xl-4\":\"my-xl-4\",\"mr-xl-4\":\"mr-xl-4\",\"mx-xl-4\":\"mx-xl-4\",\"mb-xl-4\":\"mb-xl-4\",\"ml-xl-4\":\"ml-xl-4\",\"m-xl-5\":\"m-xl-5\",\"mt-xl-5\":\"mt-xl-5\",\"my-xl-5\":\"my-xl-5\",\"mr-xl-5\":\"mr-xl-5\",\"mx-xl-5\":\"mx-xl-5\",\"mb-xl-5\":\"mb-xl-5\",\"ml-xl-5\":\"ml-xl-5\",\"p-xl-0\":\"p-xl-0\",\"pt-xl-0\":\"pt-xl-0\",\"py-xl-0\":\"py-xl-0\",\"pr-xl-0\":\"pr-xl-0\",\"px-xl-0\":\"px-xl-0\",\"pb-xl-0\":\"pb-xl-0\",\"pl-xl-0\":\"pl-xl-0\",\"p-xl-1\":\"p-xl-1\",\"pt-xl-1\":\"pt-xl-1\",\"py-xl-1\":\"py-xl-1\",\"pr-xl-1\":\"pr-xl-1\",\"px-xl-1\":\"px-xl-1\",\"pb-xl-1\":\"pb-xl-1\",\"pl-xl-1\":\"pl-xl-1\",\"p-xl-2\":\"p-xl-2\",\"pt-xl-2\":\"pt-xl-2\",\"py-xl-2\":\"py-xl-2\",\"pr-xl-2\":\"pr-xl-2\",\"px-xl-2\":\"px-xl-2\",\"pb-xl-2\":\"pb-xl-2\",\"pl-xl-2\":\"pl-xl-2\",\"p-xl-3\":\"p-xl-3\",\"pt-xl-3\":\"pt-xl-3\",\"py-xl-3\":\"py-xl-3\",\"pr-xl-3\":\"pr-xl-3\",\"px-xl-3\":\"px-xl-3\",\"pb-xl-3\":\"pb-xl-3\",\"pl-xl-3\":\"pl-xl-3\",\"p-xl-4\":\"p-xl-4\",\"pt-xl-4\":\"pt-xl-4\",\"py-xl-4\":\"py-xl-4\",\"pr-xl-4\":\"pr-xl-4\",\"px-xl-4\":\"px-xl-4\",\"pb-xl-4\":\"pb-xl-4\",\"pl-xl-4\":\"pl-xl-4\",\"p-xl-5\":\"p-xl-5\",\"pt-xl-5\":\"pt-xl-5\",\"py-xl-5\":\"py-xl-5\",\"pr-xl-5\":\"pr-xl-5\",\"px-xl-5\":\"px-xl-5\",\"pb-xl-5\":\"pb-xl-5\",\"pl-xl-5\":\"pl-xl-5\",\"m-xl-n1\":\"m-xl-n1\",\"mt-xl-n1\":\"mt-xl-n1\",\"my-xl-n1\":\"my-xl-n1\",\"mr-xl-n1\":\"mr-xl-n1\",\"mx-xl-n1\":\"mx-xl-n1\",\"mb-xl-n1\":\"mb-xl-n1\",\"ml-xl-n1\":\"ml-xl-n1\",\"m-xl-n2\":\"m-xl-n2\",\"mt-xl-n2\":\"mt-xl-n2\",\"my-xl-n2\":\"my-xl-n2\",\"mr-xl-n2\":\"mr-xl-n2\",\"mx-xl-n2\":\"mx-xl-n2\",\"mb-xl-n2\":\"mb-xl-n2\",\"ml-xl-n2\":\"ml-xl-n2\",\"m-xl-n3\":\"m-xl-n3\",\"mt-xl-n3\":\"mt-xl-n3\",\"my-xl-n3\":\"my-xl-n3\",\"mr-xl-n3\":\"mr-xl-n3\",\"mx-xl-n3\":\"mx-xl-n3\",\"mb-xl-n3\":\"mb-xl-n3\",\"ml-xl-n3\":\"ml-xl-n3\",\"m-xl-n4\":\"m-xl-n4\",\"mt-xl-n4\":\"mt-xl-n4\",\"my-xl-n4\":\"my-xl-n4\",\"mr-xl-n4\":\"mr-xl-n4\",\"mx-xl-n4\":\"mx-xl-n4\",\"mb-xl-n4\":\"mb-xl-n4\",\"ml-xl-n4\":\"ml-xl-n4\",\"m-xl-n5\":\"m-xl-n5\",\"mt-xl-n5\":\"mt-xl-n5\",\"my-xl-n5\":\"my-xl-n5\",\"mr-xl-n5\":\"mr-xl-n5\",\"mx-xl-n5\":\"mx-xl-n5\",\"mb-xl-n5\":\"mb-xl-n5\",\"ml-xl-n5\":\"ml-xl-n5\",\"m-xl-auto\":\"m-xl-auto\",\"mt-xl-auto\":\"mt-xl-auto\",\"my-xl-auto\":\"my-xl-auto\",\"mr-xl-auto\":\"mr-xl-auto\",\"mx-xl-auto\":\"mx-xl-auto\",\"mb-xl-auto\":\"mb-xl-auto\",\"ml-xl-auto\":\"ml-xl-auto\",\"sr-only\":\"sr-only\",\"sr-only-focusable\":\"sr-only-focusable\",\"assets-grid\":\"assets-grid\",\"asset-grid-item\":\"asset-grid-item\",\"asset-preview\":\"asset-preview\",\"selected\":\"selected\",\"asset-name\":\"asset-name\",\"file-type-badge\":\"file-type-badge\",\"asset-thumbnail\":\"asset-thumbnail\",\"asset-icon\":\"asset-icon\",\"asset-info\":\"asset-info\",\"asset-size\":\"asset-size\",\"assets-list-image-preview-container\":\"assets-list-image-preview-container\",\"assets-list-image-preview-image\":\"assets-list-image-preview-image\",\"list-header\":\"list-header\",\"no-image-preview\":\"no-image-preview\",\"unbulleted-list-item\":\"unbulleted-list-item\"};","import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n assetsListNoPreview: {\n id: 'assetsListNoPreview',\n defaultMessage: 'Preview not available',\n description: 'Label shown when no preview is available',\n },\n assetsListNameLabel: {\n id: 'assetsListNameLabel',\n defaultMessage: 'Name',\n description: 'Label for column header',\n },\n assetsListDateLabel: {\n id: 'assetsListDateLabel',\n defaultMessage: 'Date Added',\n description: 'Label for column header',\n },\n});\n\nexport default messages;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport WrappedMessage from '../../utils/i18n/formattedMessageWrapper';\nimport messages from './displayMessages';\nimport styles from './AssetsList.scss';\n\nconst initialState = {\n selectedAssetIndex: -1,\n selectedAssetPage: -1,\n};\n\nexport default class AssetsList extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n ...initialState,\n };\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.onAssetClick = this.onAssetClick.bind(this);\n this.onListBoxFocus = this.onListBoxFocus.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n // if page has changed, reset the index of the selected index\n if (this.props.paginationMetadata.page !== nextProps.paginationMetadata.page) {\n if (nextProps.paginationMetadata.page === this.state.selectedAssetPage) {\n this.setState({\n selectedAssetIndex: this.getSelectedAssetIndex(nextProps.assetsList,\n nextProps.selectedAsset),\n });\n } else {\n this.setState({\n selectedAssetIndex: -1,\n });\n }\n }\n\n /*\n if the selectedAsset is set to empty object, reset selectedAssetIndex; this is to\n handle the case when the EditImageModal closes\n */\n if (Object.keys(this.props.selectedAsset).length !== 0 &&\n Object.keys(nextProps.selectedAsset).length === 0) {\n this.setState({\n ...initialState,\n });\n }\n }\n\n onAssetClick = (asset, index) => {\n this.setState({\n selectedAssetIndex: index,\n selectedAssetPage: this.props.paginationMetadata.page,\n });\n\n this.props.selectAsset(asset);\n }\n\n onListBoxFocus = () => {\n // if no list item is selected, select first item on listbox focus\n if (this.state.selectedAssetIndex === -1) {\n this.setState(\n { selectedAssetIndex: 0,\n selectedAssetPage: this.props.paginationMetadata.page,\n },\n () => { this.props.selectAsset(this.props.assetsList[this.state.selectedAssetIndex]); },\n );\n }\n }\n\n getFileExtension = (displayName) => {\n if (!displayName) return '';\n const lastDot = displayName.lastIndexOf('.');\n if (lastDot === -1 || lastDot === displayName.length - 1) {\n return 'file';\n }\n return displayName.substring(lastDot + 1).toLowerCase();\n }\n\n formatFileSize = (bytes) => {\n if (!bytes || bytes === 0) return '';\n const units = ['B', 'KB', 'MB', 'GB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const size = (bytes / Math.pow(k, i)).toFixed(i === 0 ? 0 : 1);\n return `${size} ${units[i]}`;\n }\n\n getAssetGridItem = (asset, index) => {\n const isSelected = this.props.selectedAsset.id === asset.id;\n const baseUrl = this.props.courseDetails.base_url || '';\n const fileExt = this.getFileExtension(asset.display_name);\n const fileSize = this.formatFileSize(asset.file_size);\n\n return (\n <div\n onMouseDown={(e) => { e.preventDefault(); this.onAssetClick(asset, index); }}\n className={classNames(styles['asset-grid-item'], { [styles.selected]: isSelected })}\n id={`asset-list-option-${index}`}\n aria-selected={isSelected}\n role=\"option\"\n key={asset.id || asset.display_name}\n tabIndex=\"-1\"\n >\n <div className={styles['asset-preview']}>\n <span className={styles['file-type-badge']}>{fileExt}</span>\n {asset.thumbnail ? (\n <img\n className={styles['asset-thumbnail']}\n src={`${baseUrl}${asset.thumbnail}`}\n alt=\"\"\n />\n ) : (\n <div className={styles['asset-icon']}>\n <i className=\"far fa-image\" />\n </div>\n )}\n </div>\n <div className={styles['asset-info']}>\n <div className={classNames(styles['asset-name'], { [styles.selected]: isSelected })} title={asset.display_name}>\n {asset.display_name}\n </div>\n {fileSize && (\n <div className={styles['asset-size']}>\n {fileSize}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n getSelectedAssetIndex = (assetsList, selectedAsset) => (assetsList.findIndex(\n asset => asset.id === selectedAsset.id));\n\n handleKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowRight': {\n e.preventDefault();\n if (this.state.selectedAssetIndex < this.props.assetsList.length - 1) {\n this.setState(\n (state, props) => ({\n selectedAssetIndex: this.state.selectedAssetIndex + 1,\n selectedAssetPage: props.paginationMetadata.page,\n }),\n () => { this.props.selectAsset(this.props.assetsList[this.state.selectedAssetIndex]); },\n );\n }\n break;\n }\n case 'ArrowLeft': {\n e.preventDefault();\n if (this.state.selectedAssetIndex > 0) {\n this.setState(\n (state, props) => ({\n selectedAssetIndex: this.state.selectedAssetIndex - 1,\n selectedAssetPage: props.paginationMetadata.page,\n }),\n () => { this.props.selectAsset(this.props.assetsList[this.state.selectedAssetIndex]); },\n );\n }\n break;\n }\n default:\n }\n }\n\n render = () => {\n const assetsGridItems = this.props.assetsList.map((asset, index) =>\n this.getAssetGridItem(asset, index));\n\n return (\n <div\n aria-activedescendant={this.state.selectedAssetIndex > -1 ? `asset-list-option-${this.state.selectedAssetIndex}` : null}\n className={styles['assets-grid']}\n onFocus={this.onListBoxFocus}\n onKeyDown={this.handleKeyDown}\n role=\"listbox\"\n tabIndex=\"0\"\n >\n {assetsGridItems}\n </div>\n );\n };\n}\n\nAssetsList.propTypes = {\n assetsList: PropTypes.arrayOf(PropTypes.shape({\n display_name: PropTypes.string,\n content_type: PropTypes.string,\n url: PropTypes.string,\n date_added: PropTypes.string,\n id: PropTypes.string,\n portable_url: PropTypes.string,\n thumbnail: PropTypes.string,\n external_url: PropTypes.string,\n file_size: PropTypes.number,\n })).isRequired,\n courseDetails: PropTypes.shape({\n lang: PropTypes.string,\n url_name: PropTypes.string,\n name: PropTypes.string,\n display_course_number: PropTypes.string,\n num: PropTypes.string,\n org: PropTypes.string,\n id: PropTypes.string,\n revision: PropTypes.string,\n base_url: PropTypes.string,\n }).isRequired,\n paginationMetadata: PropTypes.shape({\n start: PropTypes.number,\n end: PropTypes.number,\n page: PropTypes.number,\n pageSize: PropTypes.number,\n totalCount: PropTypes.number,\n }).isRequired,\n selectAsset: PropTypes.func.isRequired,\n selectedAsset: PropTypes.shape({\n display_name: PropTypes.string,\n content_type: PropTypes.string,\n url: PropTypes.string,\n date_added: PropTypes.string,\n id: PropTypes.string,\n portable_url: PropTypes.string,\n thumbnail: PropTypes.string,\n external_url: PropTypes.string,\n file_size: PropTypes.number,\n }).isRequired,\n};\n","import { connect } from 'react-redux';\n\nimport AssetsList from '.';\nimport { selectAsset } from '../../data/actions/assets';\n\nconst mapStateToProps = state => ({\n assetsList: state.assets,\n courseDetails: state.studioDetails.course,\n courseImageAccessibilityDocs: state.studioDetails.help_tokens.image_accessibility,\n paginationMetadata: state.metadata.pagination,\n selectedAsset: state.metadata.select.selectedAsset,\n selectedAssetIndex: state.metadata.select.selectedAssetIndex,\n});\n\nconst mapDispatchToProps = dispatch => ({\n selectAsset: (asset, index) => dispatch(selectAsset(asset, index)),\n});\n\nconst WrappedAssetsList = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AssetsList);\n\nexport default WrappedAssetsList;\n","import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n assetsClearSearchButtonLabel: {\n id: 'assetsClearSearchButtonLabel',\n defaultMessage: 'Clear search',\n description: 'Label for a button that clears the search applied to a table.',\n },\n});\n\nexport default messages;\n","import { Button } from '@edx/paragon';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport messages from './displayMessages';\nimport WrappedMessage from '../../utils/i18n/formattedMessageWrapper';\n\n\nconst AssetsClearSearchButton = ({ clearSearch, courseDetails }) => (\n <Button\n buttonType=\"link\"\n onClick={() => clearSearch(courseDetails)}\n label={\n <WrappedMessage message={messages.assetsClearSearchButtonLabel} />\n }\n />\n);\n\nAssetsClearSearchButton.propTypes = {\n clearSearch: PropTypes.func.isRequired,\n courseDetails: PropTypes.shape({\n lang: PropTypes.string,\n url_name: PropTypes.string,\n name: PropTypes.string,\n display_course_number: PropTypes.string,\n num: PropTypes.string,\n org: PropTypes.string,\n id: PropTypes.string,\n revision: PropTypes.string,\n }).isRequired,\n};\n\nexport default AssetsClearSearchButton;\n","import { connect } from 'react-redux';\n\nimport AssetsClearSearchButton from '.';\nimport { searchUpdate } from '../../data/actions/assets';\n\nconst mapStateToProps = state => ({\n courseDetails: state.studioDetails.course,\n});\n\nconst mapDispatchToProps = dispatch => ({\n clearSearch: courseDetails => dispatch(searchUpdate('', courseDetails)),\n});\n\nconst WrappedAssetsClearSearchButton = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AssetsClearSearchButton);\n\nexport default WrappedAssetsClearSearchButton;\n","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"root\",\"SFE\":\"SFE\",\"m-0\":\"m-0\",\"mt-0\":\"mt-0\",\"my-0\":\"my-0\",\"mr-0\":\"mr-0\",\"mx-0\":\"mx-0\",\"mb-0\":\"mb-0\",\"ml-0\":\"ml-0\",\"m-1\":\"m-1\",\"mt-1\":\"mt-1\",\"my-1\":\"my-1\",\"mr-1\":\"mr-1\",\"mx-1\":\"mx-1\",\"mb-1\":\"mb-1\",\"ml-1\":\"ml-1\",\"m-2\":\"m-2\",\"mt-2\":\"mt-2\",\"my-2\":\"my-2\",\"mr-2\":\"mr-2\",\"mx-2\":\"mx-2\",\"mb-2\":\"mb-2\",\"ml-2\":\"ml-2\",\"m-3\":\"m-3\",\"mt-3\":\"mt-3\",\"my-3\":\"my-3\",\"mr-3\":\"mr-3\",\"mx-3\":\"mx-3\",\"mb-3\":\"mb-3\",\"ml-3\":\"ml-3\",\"m-4\":\"m-4\",\"mt-4\":\"mt-4\",\"my-4\":\"my-4\",\"mr-4\":\"mr-4\",\"mx-4\":\"mx-4\",\"mb-4\":\"mb-4\",\"paragon-fieldset\":\"paragon-fieldset\",\"ml-4\":\"ml-4\",\"m-5\":\"m-5\",\"mt-5\":\"mt-5\",\"my-5\":\"my-5\",\"mr-5\":\"mr-5\",\"mx-5\":\"mx-5\",\"mb-5\":\"mb-5\",\"ml-5\":\"ml-5\",\"p-0\":\"p-0\",\"pt-0\":\"pt-0\",\"py-0\":\"py-0\",\"pr-0\":\"pr-0\",\"px-0\":\"px-0\",\"pb-0\":\"pb-0\",\"pl-0\":\"pl-0\",\"p-1\":\"p-1\",\"pt-1\":\"pt-1\",\"py-1\":\"py-1\",\"pr-1\":\"pr-1\",\"px-1\":\"px-1\",\"pb-1\":\"pb-1\",\"pl-1\":\"pl-1\",\"p-2\":\"p-2\",\"pt-2\":\"pt-2\",\"py-2\":\"py-2\",\"pr-2\":\"pr-2\",\"px-2\":\"px-2\",\"pb-2\":\"pb-2\",\"pl-2\":\"pl-2\",\"p-3\":\"p-3\",\"image-preview-placeholder\":\"image-preview-placeholder\",\"pt-3\":\"pt-3\",\"py-3\":\"py-3\",\"or-fields\":\"or-fields\",\"pr-3\":\"pr-3\",\"px-3\":\"px-3\",\"pb-3\":\"pb-3\",\"pl-3\":\"pl-3\",\"p-4\":\"p-4\",\"pt-4\":\"pt-4\",\"py-4\":\"py-4\",\"pr-4\":\"pr-4\",\"px-4\":\"px-4\",\"pb-4\":\"pb-4\",\"pl-4\":\"pl-4\",\"p-5\":\"p-5\",\"pt-5\":\"pt-5\",\"py-5\":\"py-5\",\"pr-5\":\"pr-5\",\"px-5\":\"px-5\",\"pb-5\":\"pb-5\",\"pl-5\":\"pl-5\",\"m-n1\":\"m-n1\",\"mt-n1\":\"mt-n1\",\"my-n1\":\"my-n1\",\"mr-n1\":\"mr-n1\",\"mx-n1\":\"mx-n1\",\"mb-n1\":\"mb-n1\",\"ml-n1\":\"ml-n1\",\"m-n2\":\"m-n2\",\"mt-n2\":\"mt-n2\",\"my-n2\":\"my-n2\",\"mr-n2\":\"mr-n2\",\"mx-n2\":\"mx-n2\",\"mb-n2\":\"mb-n2\",\"ml-n2\":\"ml-n2\",\"m-n3\":\"m-n3\",\"mt-n3\":\"mt-n3\",\"my-n3\":\"my-n3\",\"mr-n3\":\"mr-n3\",\"mx-n3\":\"mx-n3\",\"mb-n3\":\"mb-n3\",\"ml-n3\":\"ml-n3\",\"m-n4\":\"m-n4\",\"mt-n4\":\"mt-n4\",\"my-n4\":\"my-n4\",\"mr-n4\":\"mr-n4\",\"mx-n4\":\"mx-n4\",\"mb-n4\":\"mb-n4\",\"ml-n4\":\"ml-n4\",\"m-n5\":\"m-n5\",\"mt-n5\":\"mt-n5\",\"my-n5\":\"my-n5\",\"mr-n5\":\"mr-n5\",\"mx-n5\":\"mx-n5\",\"mb-n5\":\"mb-n5\",\"ml-n5\":\"ml-n5\",\"m-auto\":\"m-auto\",\"mt-auto\":\"mt-auto\",\"my-auto\":\"my-auto\",\"mr-auto\":\"mr-auto\",\"mx-auto\":\"mx-auto\",\"mb-auto\":\"mb-auto\",\"ml-auto\":\"ml-auto\",\"m-sm-0\":\"m-sm-0\",\"mt-sm-0\":\"mt-sm-0\",\"my-sm-0\":\"my-sm-0\",\"mr-sm-0\":\"mr-sm-0\",\"mx-sm-0\":\"mx-sm-0\",\"mb-sm-0\":\"mb-sm-0\",\"ml-sm-0\":\"ml-sm-0\",\"m-sm-1\":\"m-sm-1\",\"mt-sm-1\":\"mt-sm-1\",\"my-sm-1\":\"my-sm-1\",\"mr-sm-1\":\"mr-sm-1\",\"mx-sm-1\":\"mx-sm-1\",\"mb-sm-1\":\"mb-sm-1\",\"ml-sm-1\":\"ml-sm-1\",\"m-sm-2\":\"m-sm-2\",\"mt-sm-2\":\"mt-sm-2\",\"my-sm-2\":\"my-sm-2\",\"mr-sm-2\":\"mr-sm-2\",\"mx-sm-2\":\"mx-sm-2\",\"mb-sm-2\":\"mb-sm-2\",\"ml-sm-2\":\"ml-sm-2\",\"m-sm-3\":\"m-sm-3\",\"mt-sm-3\":\"mt-sm-3\",\"my-sm-3\":\"my-sm-3\",\"mr-sm-3\":\"mr-sm-3\",\"mx-sm-3\":\"mx-sm-3\",\"mb-sm-3\":\"mb-sm-3\",\"ml-sm-3\":\"ml-sm-3\",\"m-sm-4\":\"m-sm-4\",\"mt-sm-4\":\"mt-sm-4\",\"my-sm-4\":\"my-sm-4\",\"mr-sm-4\":\"mr-sm-4\",\"mx-sm-4\":\"mx-sm-4\",\"mb-sm-4\":\"mb-sm-4\",\"ml-sm-4\":\"ml-sm-4\",\"m-sm-5\":\"m-sm-5\",\"mt-sm-5\":\"mt-sm-5\",\"my-sm-5\":\"my-sm-5\",\"mr-sm-5\":\"mr-sm-5\",\"mx-sm-5\":\"mx-sm-5\",\"mb-sm-5\":\"mb-sm-5\",\"ml-sm-5\":\"ml-sm-5\",\"p-sm-0\":\"p-sm-0\",\"pt-sm-0\":\"pt-sm-0\",\"py-sm-0\":\"py-sm-0\",\"pr-sm-0\":\"pr-sm-0\",\"px-sm-0\":\"px-sm-0\",\"pb-sm-0\":\"pb-sm-0\",\"pl-sm-0\":\"pl-sm-0\",\"p-sm-1\":\"p-sm-1\",\"pt-sm-1\":\"pt-sm-1\",\"py-sm-1\":\"py-sm-1\",\"pr-sm-1\":\"pr-sm-1\",\"px-sm-1\":\"px-sm-1\",\"pb-sm-1\":\"pb-sm-1\",\"pl-sm-1\":\"pl-sm-1\",\"p-sm-2\":\"p-sm-2\",\"pt-sm-2\":\"pt-sm-2\",\"py-sm-2\":\"py-sm-2\",\"pr-sm-2\":\"pr-sm-2\",\"px-sm-2\":\"px-sm-2\",\"pb-sm-2\":\"pb-sm-2\",\"pl-sm-2\":\"pl-sm-2\",\"p-sm-3\":\"p-sm-3\",\"pt-sm-3\":\"pt-sm-3\",\"py-sm-3\":\"py-sm-3\",\"pr-sm-3\":\"pr-sm-3\",\"px-sm-3\":\"px-sm-3\",\"pb-sm-3\":\"pb-sm-3\",\"pl-sm-3\":\"pl-sm-3\",\"p-sm-4\":\"p-sm-4\",\"pt-sm-4\":\"pt-sm-4\",\"py-sm-4\":\"py-sm-4\",\"pr-sm-4\":\"pr-sm-4\",\"px-sm-4\":\"px-sm-4\",\"pb-sm-4\":\"pb-sm-4\",\"pl-sm-4\":\"pl-sm-4\",\"p-sm-5\":\"p-sm-5\",\"pt-sm-5\":\"pt-sm-5\",\"py-sm-5\":\"py-sm-5\",\"pr-sm-5\":\"pr-sm-5\",\"px-sm-5\":\"px-sm-5\",\"pb-sm-5\":\"pb-sm-5\",\"pl-sm-5\":\"pl-sm-5\",\"m-sm-n1\":\"m-sm-n1\",\"mt-sm-n1\":\"mt-sm-n1\",\"my-sm-n1\":\"my-sm-n1\",\"mr-sm-n1\":\"mr-sm-n1\",\"mx-sm-n1\":\"mx-sm-n1\",\"mb-sm-n1\":\"mb-sm-n1\",\"ml-sm-n1\":\"ml-sm-n1\",\"m-sm-n2\":\"m-sm-n2\",\"mt-sm-n2\":\"mt-sm-n2\",\"my-sm-n2\":\"my-sm-n2\",\"mr-sm-n2\":\"mr-sm-n2\",\"mx-sm-n2\":\"mx-sm-n2\",\"mb-sm-n2\":\"mb-sm-n2\",\"ml-sm-n2\":\"ml-sm-n2\",\"m-sm-n3\":\"m-sm-n3\",\"mt-sm-n3\":\"mt-sm-n3\",\"my-sm-n3\":\"my-sm-n3\",\"mr-sm-n3\":\"mr-sm-n3\",\"mx-sm-n3\":\"mx-sm-n3\",\"mb-sm-n3\":\"mb-sm-n3\",\"ml-sm-n3\":\"ml-sm-n3\",\"m-sm-n4\":\"m-sm-n4\",\"mt-sm-n4\":\"mt-sm-n4\",\"my-sm-n4\":\"my-sm-n4\",\"mr-sm-n4\":\"mr-sm-n4\",\"mx-sm-n4\":\"mx-sm-n4\",\"mb-sm-n4\":\"mb-sm-n4\",\"ml-sm-n4\":\"ml-sm-n4\",\"m-sm-n5\":\"m-sm-n5\",\"mt-sm-n5\":\"mt-sm-n5\",\"my-sm-n5\":\"my-sm-n5\",\"mr-sm-n5\":\"mr-sm-n5\",\"mx-sm-n5\":\"mx-sm-n5\",\"mb-sm-n5\":\"mb-sm-n5\",\"ml-sm-n5\":\"ml-sm-n5\",\"m-sm-auto\":\"m-sm-auto\",\"mt-sm-auto\":\"mt-sm-auto\",\"my-sm-auto\":\"my-sm-auto\",\"mr-sm-auto\":\"mr-sm-auto\",\"mx-sm-auto\":\"mx-sm-auto\",\"mb-sm-auto\":\"mb-sm-auto\",\"ml-sm-auto\":\"ml-sm-auto\",\"m-md-0\":\"m-md-0\",\"mt-md-0\":\"mt-md-0\",\"my-md-0\":\"my-md-0\",\"mr-md-0\":\"mr-md-0\",\"mx-md-0\":\"mx-md-0\",\"mb-md-0\":\"mb-md-0\",\"ml-md-0\":\"ml-md-0\",\"m-md-1\":\"m-md-1\",\"mt-md-1\":\"mt-md-1\",\"my-md-1\":\"my-md-1\",\"mr-md-1\":\"mr-md-1\",\"mx-md-1\":\"mx-md-1\",\"mb-md-1\":\"mb-md-1\",\"ml-md-1\":\"ml-md-1\",\"m-md-2\":\"m-md-2\",\"mt-md-2\":\"mt-md-2\",\"my-md-2\":\"my-md-2\",\"mr-md-2\":\"mr-md-2\",\"mx-md-2\":\"mx-md-2\",\"mb-md-2\":\"mb-md-2\",\"ml-md-2\":\"ml-md-2\",\"m-md-3\":\"m-md-3\",\"mt-md-3\":\"mt-md-3\",\"my-md-3\":\"my-md-3\",\"mr-md-3\":\"mr-md-3\",\"mx-md-3\":\"mx-md-3\",\"mb-md-3\":\"mb-md-3\",\"ml-md-3\":\"ml-md-3\",\"m-md-4\":\"m-md-4\",\"mt-md-4\":\"mt-md-4\",\"my-md-4\":\"my-md-4\",\"mr-md-4\":\"mr-md-4\",\"mx-md-4\":\"mx-md-4\",\"mb-md-4\":\"mb-md-4\",\"ml-md-4\":\"ml-md-4\",\"m-md-5\":\"m-md-5\",\"mt-md-5\":\"mt-md-5\",\"my-md-5\":\"my-md-5\",\"mr-md-5\":\"mr-md-5\",\"mx-md-5\":\"mx-md-5\",\"mb-md-5\":\"mb-md-5\",\"ml-md-5\":\"ml-md-5\",\"p-md-0\":\"p-md-0\",\"pt-md-0\":\"pt-md-0\",\"py-md-0\":\"py-md-0\",\"pr-md-0\":\"pr-md-0\",\"px-md-0\":\"px-md-0\",\"pb-md-0\":\"pb-md-0\",\"pl-md-0\":\"pl-md-0\",\"p-md-1\":\"p-md-1\",\"pt-md-1\":\"pt-md-1\",\"py-md-1\":\"py-md-1\",\"pr-md-1\":\"pr-md-1\",\"px-md-1\":\"px-md-1\",\"pb-md-1\":\"pb-md-1\",\"pl-md-1\":\"pl-md-1\",\"p-md-2\":\"p-md-2\",\"pt-md-2\":\"pt-md-2\",\"py-md-2\":\"py-md-2\",\"pr-md-2\":\"pr-md-2\",\"px-md-2\":\"px-md-2\",\"pb-md-2\":\"pb-md-2\",\"pl-md-2\":\"pl-md-2\",\"p-md-3\":\"p-md-3\",\"pt-md-3\":\"pt-md-3\",\"py-md-3\":\"py-md-3\",\"pr-md-3\":\"pr-md-3\",\"px-md-3\":\"px-md-3\",\"pb-md-3\":\"pb-md-3\",\"pl-md-3\":\"pl-md-3\",\"p-md-4\":\"p-md-4\",\"pt-md-4\":\"pt-md-4\",\"py-md-4\":\"py-md-4\",\"pr-md-4\":\"pr-md-4\",\"px-md-4\":\"px-md-4\",\"pb-md-4\":\"pb-md-4\",\"pl-md-4\":\"pl-md-4\",\"p-md-5\":\"p-md-5\",\"pt-md-5\":\"pt-md-5\",\"py-md-5\":\"py-md-5\",\"pr-md-5\":\"pr-md-5\",\"px-md-5\":\"px-md-5\",\"pb-md-5\":\"pb-md-5\",\"pl-md-5\":\"pl-md-5\",\"m-md-n1\":\"m-md-n1\",\"mt-md-n1\":\"mt-md-n1\",\"my-md-n1\":\"my-md-n1\",\"mr-md-n1\":\"mr-md-n1\",\"mx-md-n1\":\"mx-md-n1\",\"mb-md-n1\":\"mb-md-n1\",\"ml-md-n1\":\"ml-md-n1\",\"m-md-n2\":\"m-md-n2\",\"mt-md-n2\":\"mt-md-n2\",\"my-md-n2\":\"my-md-n2\",\"mr-md-n2\":\"mr-md-n2\",\"mx-md-n2\":\"mx-md-n2\",\"mb-md-n2\":\"mb-md-n2\",\"ml-md-n2\":\"ml-md-n2\",\"m-md-n3\":\"m-md-n3\",\"mt-md-n3\":\"mt-md-n3\",\"my-md-n3\":\"my-md-n3\",\"mr-md-n3\":\"mr-md-n3\",\"mx-md-n3\":\"mx-md-n3\",\"mb-md-n3\":\"mb-md-n3\",\"ml-md-n3\":\"ml-md-n3\",\"m-md-n4\":\"m-md-n4\",\"mt-md-n4\":\"mt-md-n4\",\"my-md-n4\":\"my-md-n4\",\"mr-md-n4\":\"mr-md-n4\",\"mx-md-n4\":\"mx-md-n4\",\"mb-md-n4\":\"mb-md-n4\",\"ml-md-n4\":\"ml-md-n4\",\"m-md-n5\":\"m-md-n5\",\"mt-md-n5\":\"mt-md-n5\",\"my-md-n5\":\"my-md-n5\",\"mr-md-n5\":\"mr-md-n5\",\"mx-md-n5\":\"mx-md-n5\",\"mb-md-n5\":\"mb-md-n5\",\"ml-md-n5\":\"ml-md-n5\",\"m-md-auto\":\"m-md-auto\",\"mt-md-auto\":\"mt-md-auto\",\"my-md-auto\":\"my-md-auto\",\"mr-md-auto\":\"mr-md-auto\",\"mx-md-auto\":\"mx-md-auto\",\"mb-md-auto\":\"mb-md-auto\",\"ml-md-auto\":\"ml-md-auto\",\"m-lg-0\":\"m-lg-0\",\"mt-lg-0\":\"mt-lg-0\",\"my-lg-0\":\"my-lg-0\",\"mr-lg-0\":\"mr-lg-0\",\"mx-lg-0\":\"mx-lg-0\",\"mb-lg-0\":\"mb-lg-0\",\"ml-lg-0\":\"ml-lg-0\",\"m-lg-1\":\"m-lg-1\",\"mt-lg-1\":\"mt-lg-1\",\"my-lg-1\":\"my-lg-1\",\"mr-lg-1\":\"mr-lg-1\",\"mx-lg-1\":\"mx-lg-1\",\"mb-lg-1\":\"mb-lg-1\",\"ml-lg-1\":\"ml-lg-1\",\"m-lg-2\":\"m-lg-2\",\"mt-lg-2\":\"mt-lg-2\",\"my-lg-2\":\"my-lg-2\",\"mr-lg-2\":\"mr-lg-2\",\"mx-lg-2\":\"mx-lg-2\",\"mb-lg-2\":\"mb-lg-2\",\"ml-lg-2\":\"ml-lg-2\",\"m-lg-3\":\"m-lg-3\",\"mt-lg-3\":\"mt-lg-3\",\"my-lg-3\":\"my-lg-3\",\"mr-lg-3\":\"mr-lg-3\",\"mx-lg-3\":\"mx-lg-3\",\"mb-lg-3\":\"mb-lg-3\",\"ml-lg-3\":\"ml-lg-3\",\"m-lg-4\":\"m-lg-4\",\"mt-lg-4\":\"mt-lg-4\",\"my-lg-4\":\"my-lg-4\",\"mr-lg-4\":\"mr-lg-4\",\"mx-lg-4\":\"mx-lg-4\",\"mb-lg-4\":\"mb-lg-4\",\"ml-lg-4\":\"ml-lg-4\",\"m-lg-5\":\"m-lg-5\",\"mt-lg-5\":\"mt-lg-5\",\"my-lg-5\":\"my-lg-5\",\"mr-lg-5\":\"mr-lg-5\",\"mx-lg-5\":\"mx-lg-5\",\"mb-lg-5\":\"mb-lg-5\",\"ml-lg-5\":\"ml-lg-5\",\"p-lg-0\":\"p-lg-0\",\"pt-lg-0\":\"pt-lg-0\",\"py-lg-0\":\"py-lg-0\",\"pr-lg-0\":\"pr-lg-0\",\"px-lg-0\":\"px-lg-0\",\"pb-lg-0\":\"pb-lg-0\",\"pl-lg-0\":\"pl-lg-0\",\"p-lg-1\":\"p-lg-1\",\"pt-lg-1\":\"pt-lg-1\",\"py-lg-1\":\"py-lg-1\",\"pr-lg-1\":\"pr-lg-1\",\"px-lg-1\":\"px-lg-1\",\"pb-lg-1\":\"pb-lg-1\",\"pl-lg-1\":\"pl-lg-1\",\"p-lg-2\":\"p-lg-2\",\"pt-lg-2\":\"pt-lg-2\",\"py-lg-2\":\"py-lg-2\",\"pr-lg-2\":\"pr-lg-2\",\"px-lg-2\":\"px-lg-2\",\"pb-lg-2\":\"pb-lg-2\",\"pl-lg-2\":\"pl-lg-2\",\"p-lg-3\":\"p-lg-3\",\"pt-lg-3\":\"pt-lg-3\",\"py-lg-3\":\"py-lg-3\",\"pr-lg-3\":\"pr-lg-3\",\"px-lg-3\":\"px-lg-3\",\"pb-lg-3\":\"pb-lg-3\",\"pl-lg-3\":\"pl-lg-3\",\"p-lg-4\":\"p-lg-4\",\"pt-lg-4\":\"pt-lg-4\",\"py-lg-4\":\"py-lg-4\",\"pr-lg-4\":\"pr-lg-4\",\"px-lg-4\":\"px-lg-4\",\"pb-lg-4\":\"pb-lg-4\",\"pl-lg-4\":\"pl-lg-4\",\"p-lg-5\":\"p-lg-5\",\"pt-lg-5\":\"pt-lg-5\",\"py-lg-5\":\"py-lg-5\",\"pr-lg-5\":\"pr-lg-5\",\"px-lg-5\":\"px-lg-5\",\"pb-lg-5\":\"pb-lg-5\",\"pl-lg-5\":\"pl-lg-5\",\"m-lg-n1\":\"m-lg-n1\",\"mt-lg-n1\":\"mt-lg-n1\",\"my-lg-n1\":\"my-lg-n1\",\"mr-lg-n1\":\"mr-lg-n1\",\"mx-lg-n1\":\"mx-lg-n1\",\"mb-lg-n1\":\"mb-lg-n1\",\"ml-lg-n1\":\"ml-lg-n1\",\"m-lg-n2\":\"m-lg-n2\",\"mt-lg-n2\":\"mt-lg-n2\",\"my-lg-n2\":\"my-lg-n2\",\"mr-lg-n2\":\"mr-lg-n2\",\"mx-lg-n2\":\"mx-lg-n2\",\"mb-lg-n2\":\"mb-lg-n2\",\"ml-lg-n2\":\"ml-lg-n2\",\"m-lg-n3\":\"m-lg-n3\",\"mt-lg-n3\":\"mt-lg-n3\",\"my-lg-n3\":\"my-lg-n3\",\"mr-lg-n3\":\"mr-lg-n3\",\"mx-lg-n3\":\"mx-lg-n3\",\"mb-lg-n3\":\"mb-lg-n3\",\"ml-lg-n3\":\"ml-lg-n3\",\"m-lg-n4\":\"m-lg-n4\",\"mt-lg-n4\":\"mt-lg-n4\",\"my-lg-n4\":\"my-lg-n4\",\"mr-lg-n4\":\"mr-lg-n4\",\"mx-lg-n4\":\"mx-lg-n4\",\"mb-lg-n4\":\"mb-lg-n4\",\"ml-lg-n4\":\"ml-lg-n4\",\"m-lg-n5\":\"m-lg-n5\",\"mt-lg-n5\":\"mt-lg-n5\",\"my-lg-n5\":\"my-lg-n5\",\"mr-lg-n5\":\"mr-lg-n5\",\"mx-lg-n5\":\"mx-lg-n5\",\"mb-lg-n5\":\"mb-lg-n5\",\"ml-lg-n5\":\"ml-lg-n5\",\"m-lg-auto\":\"m-lg-auto\",\"mt-lg-auto\":\"mt-lg-auto\",\"my-lg-auto\":\"my-lg-auto\",\"mr-lg-auto\":\"mr-lg-auto\",\"mx-lg-auto\":\"mx-lg-auto\",\"mb-lg-auto\":\"mb-lg-auto\",\"ml-lg-auto\":\"ml-lg-auto\",\"m-xl-0\":\"m-xl-0\",\"mt-xl-0\":\"mt-xl-0\",\"my-xl-0\":\"my-xl-0\",\"mr-xl-0\":\"mr-xl-0\",\"mx-xl-0\":\"mx-xl-0\",\"mb-xl-0\":\"mb-xl-0\",\"ml-xl-0\":\"ml-xl-0\",\"m-xl-1\":\"m-xl-1\",\"mt-xl-1\":\"mt-xl-1\",\"my-xl-1\":\"my-xl-1\",\"mr-xl-1\":\"mr-xl-1\",\"mx-xl-1\":\"mx-xl-1\",\"mb-xl-1\":\"mb-xl-1\",\"ml-xl-1\":\"ml-xl-1\",\"m-xl-2\":\"m-xl-2\",\"mt-xl-2\":\"mt-xl-2\",\"my-xl-2\":\"my-xl-2\",\"mr-xl-2\":\"mr-xl-2\",\"mx-xl-2\":\"mx-xl-2\",\"mb-xl-2\":\"mb-xl-2\",\"ml-xl-2\":\"ml-xl-2\",\"m-xl-3\":\"m-xl-3\",\"mt-xl-3\":\"mt-xl-3\",\"my-xl-3\":\"my-xl-3\",\"mr-xl-3\":\"mr-xl-3\",\"mx-xl-3\":\"mx-xl-3\",\"mb-xl-3\":\"mb-xl-3\",\"ml-xl-3\":\"ml-xl-3\",\"m-xl-4\":\"m-xl-4\",\"mt-xl-4\":\"mt-xl-4\",\"my-xl-4\":\"my-xl-4\",\"mr-xl-4\":\"mr-xl-4\",\"mx-xl-4\":\"mx-xl-4\",\"mb-xl-4\":\"mb-xl-4\",\"ml-xl-4\":\"ml-xl-4\",\"m-xl-5\":\"m-xl-5\",\"mt-xl-5\":\"mt-xl-5\",\"my-xl-5\":\"my-xl-5\",\"mr-xl-5\":\"mr-xl-5\",\"mx-xl-5\":\"mx-xl-5\",\"mb-xl-5\":\"mb-xl-5\",\"ml-xl-5\":\"ml-xl-5\",\"p-xl-0\":\"p-xl-0\",\"pt-xl-0\":\"pt-xl-0\",\"py-xl-0\":\"py-xl-0\",\"pr-xl-0\":\"pr-xl-0\",\"px-xl-0\":\"px-xl-0\",\"pb-xl-0\":\"pb-xl-0\",\"pl-xl-0\":\"pl-xl-0\",\"p-xl-1\":\"p-xl-1\",\"pt-xl-1\":\"pt-xl-1\",\"py-xl-1\":\"py-xl-1\",\"pr-xl-1\":\"pr-xl-1\",\"px-xl-1\":\"px-xl-1\",\"pb-xl-1\":\"pb-xl-1\",\"pl-xl-1\":\"pl-xl-1\",\"p-xl-2\":\"p-xl-2\",\"pt-xl-2\":\"pt-xl-2\",\"py-xl-2\":\"py-xl-2\",\"pr-xl-2\":\"pr-xl-2\",\"px-xl-2\":\"px-xl-2\",\"pb-xl-2\":\"pb-xl-2\",\"pl-xl-2\":\"pl-xl-2\",\"p-xl-3\":\"p-xl-3\",\"pt-xl-3\":\"pt-xl-3\",\"py-xl-3\":\"py-xl-3\",\"pr-xl-3\":\"pr-xl-3\",\"px-xl-3\":\"px-xl-3\",\"pb-xl-3\":\"pb-xl-3\",\"pl-xl-3\":\"pl-xl-3\",\"p-xl-4\":\"p-xl-4\",\"pt-xl-4\":\"pt-xl-4\",\"py-xl-4\":\"py-xl-4\",\"pr-xl-4\":\"pr-xl-4\",\"px-xl-4\":\"px-xl-4\",\"pb-xl-4\":\"pb-xl-4\",\"pl-xl-4\":\"pl-xl-4\",\"p-xl-5\":\"p-xl-5\",\"pt-xl-5\":\"pt-xl-5\",\"py-xl-5\":\"py-xl-5\",\"pr-xl-5\":\"pr-xl-5\",\"px-xl-5\":\"px-xl-5\",\"pb-xl-5\":\"pb-xl-5\",\"pl-xl-5\":\"pl-xl-5\",\"m-xl-n1\":\"m-xl-n1\",\"mt-xl-n1\":\"mt-xl-n1\",\"my-xl-n1\":\"my-xl-n1\",\"mr-xl-n1\":\"mr-xl-n1\",\"mx-xl-n1\":\"mx-xl-n1\",\"mb-xl-n1\":\"mb-xl-n1\",\"ml-xl-n1\":\"ml-xl-n1\",\"m-xl-n2\":\"m-xl-n2\",\"mt-xl-n2\":\"mt-xl-n2\",\"my-xl-n2\":\"my-xl-n2\",\"mr-xl-n2\":\"mr-xl-n2\",\"mx-xl-n2\":\"mx-xl-n2\",\"mb-xl-n2\":\"mb-xl-n2\",\"ml-xl-n2\":\"ml-xl-n2\",\"m-xl-n3\":\"m-xl-n3\",\"mt-xl-n3\":\"mt-xl-n3\",\"my-xl-n3\":\"my-xl-n3\",\"mr-xl-n3\":\"mr-xl-n3\",\"mx-xl-n3\":\"mx-xl-n3\",\"mb-xl-n3\":\"mb-xl-n3\",\"ml-xl-n3\":\"ml-xl-n3\",\"m-xl-n4\":\"m-xl-n4\",\"mt-xl-n4\":\"mt-xl-n4\",\"my-xl-n4\":\"my-xl-n4\",\"mr-xl-n4\":\"mr-xl-n4\",\"mx-xl-n4\":\"mx-xl-n4\",\"mb-xl-n4\":\"mb-xl-n4\",\"ml-xl-n4\":\"ml-xl-n4\",\"m-xl-n5\":\"m-xl-n5\",\"mt-xl-n5\":\"mt-xl-n5\",\"my-xl-n5\":\"my-xl-n5\",\"mr-xl-n5\":\"mr-xl-n5\",\"mx-xl-n5\":\"mx-xl-n5\",\"mb-xl-n5\":\"mb-xl-n5\",\"ml-xl-n5\":\"ml-xl-n5\",\"m-xl-auto\":\"m-xl-auto\",\"mt-xl-auto\":\"mt-xl-auto\",\"my-xl-auto\":\"my-xl-auto\",\"mr-xl-auto\":\"mr-xl-auto\",\"mx-xl-auto\":\"mx-xl-auto\",\"mb-xl-auto\":\"mb-xl-auto\",\"ml-xl-auto\":\"ml-xl-auto\",\"sr-only\":\"sr-only\",\"sr-only-focusable\":\"sr-only-focusable\",\"modal-body\":\"modal-body\",\"row\":\"row\",\"modal-dialog\":\"modal-dialog\",\"form-control\":\"form-control\",\"is-invalid\":\"is-invalid\",\"is-invalid-nodanger\":\"is-invalid-nodanger\",\"image-preview-container\":\"image-preview-container\",\"image-preview-image\":\"image-preview-image\",\"image-dimensions-x\":\"image-dimensions-x\",\"invalid-feedback\":\"invalid-feedback\",\"form-group\":\"form-group\",\"form-text\":\"form-text\",\"form-row\":\"form-row\",\"col\":\"col\",\"form-check\":\"form-check\",\"form-check-input\":\"form-check-input\",\"form-check-label\":\"form-check-label\"};","// Utility method for replacing a portion of a string.\n// An ES6 copy of the same function in edx-platform:\n// https://github.com/edx/edx-platform/blob/d14ec65912ef3fb5bb3284b81ccdf60d59b34c87/common/static/js/src/utility.js#L21-L39\nexport default (content, from, to) => {\n if (from === null || to === null) {\n return content;\n }\n // replace only relative urls\n const replacer = (match) => {\n if (match === from) {\n return to;\n }\n return match;\n };\n // change all relative urls only which may be embedded inside other tags in content.\n // handle http and https\n // escape all regex interpretable chars\n const fromRe = from.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n // eslint-disable-next-line no-useless-escape\n const regex = new RegExp(`(https?://(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}([-a-zA-Z0-9@:%_\\+.~#?&//=]*))?${fromRe}`, 'g');\n return content.replace(regex, replacer);\n};\n","import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n editImageModalAssetsListLoadingSpinner: {\n id: 'editImageModalAssetsListLoadingSpinner',\n defaultMessage: 'Loading spinner',\n description: 'Description of a loading spinner image shown when files are loading.',\n },\n editImageModalAssetsListNoAssetsMessage: {\n id: 'editImageModalAssetsListNoAssetsMessage',\n defaultMessage: '0 images uploaded',\n description: 'Message displayed when a course has no images to display in the list.',\n },\n editImageModalAssetsListNoResultsMessage: {\n id: 'editImageModalAssetsListNoResultsMessage',\n defaultMessage: '0 images found',\n description: 'Message displayed in table when no image results are found.',\n },\n editImageModalCancelButton: {\n id: 'editImageModalCancelButton',\n defaultMessage: 'Cancel',\n description: 'Button text to close the modal',\n },\n editImageModalFormError: {\n id: 'editImageModalFormError',\n defaultMessage: 'Error',\n description: 'Screenreader-only text describing an error icon in a validation message',\n },\n editImageModalFormErrorMissingFields: {\n id: 'editImageModalFormErrorMissingFields',\n defaultMessage: 'Make sure to fill in all fields.',\n description: 'Error message to instruct user to fill in all fields',\n },\n editImageModalFormValidImageDescription: {\n id: 'editImageModalFormValidImageDescription',\n defaultMessage: 'Add an image description or specify that the image is decorative only.',\n description: 'Error message for when an invalid image description is entered into the form',\n },\n editImageModalFormValidImageDimensions: {\n id: 'editImageModalFormValidImageDimensions',\n defaultMessage: 'Image dimensions must be positive numbers.',\n description: 'Error message displayed when invalid image dimension values are entered into a form',\n },\n editImageModalImageDescriptionDescription: {\n id: 'editImageModalImageDescriptionDescription',\n defaultMessage: 'Alternative text for users who cannot view the image, such as \"The sky with clouds\".',\n description: 'Description for the text input box for an image\\'s description',\n },\n editImageModalImageDescriptionLabel: {\n id: 'editImageModalImageDescriptionLabel',\n defaultMessage: 'Image Description (Alt Text)',\n description: 'Label for the text input box for an image\\'s description',\n },\n editImageModalImageDescriptionLegend: {\n id: 'editImageModalImageDescriptionLegend',\n defaultMessage: 'Image Description',\n description: 'Label for input section for an image\\'s description',\n },\n editImageModalDimensionsLegend: {\n id: 'editImageModalDimensionsLegend',\n defaultMessage: 'Image Dimensions',\n description: 'Label for the input section for an image\\'s dimensions',\n },\n editImageModalImageHeightLabel: {\n id: 'editImageModalImageHeight',\n defaultMessage: 'Height',\n description: 'Label for the text input box for an image\\'s height,',\n },\n editImageModalImageIsDecorativeCheckboxDescription: {\n id: 'editImageModalImageIsDecorativeCheckboxDescription',\n defaultMessage: 'This image is a background or other image that does not require alternative text.',\n description: 'Description for a checkbox that explains what it means for an image to be decorative',\n },\n editImageModalImageIsDecorativeCheckboxLabel: {\n id: 'editImageModalImageIsDecorativeCheckboxLabel',\n defaultMessage: 'This image is decorative only',\n description: 'Label for a checkbox that denotes that an image is decorative',\n },\n editImageModalImagePreviewText: {\n id: 'editImageModalImagePreviewText',\n defaultMessage: 'Image Preview',\n description: 'Label for the image preview area',\n },\n editImageModalInsertImageButton: {\n id: 'editImageModalInsertImageButton',\n defaultMessage: 'Save',\n description: 'Text inside the Save button at the bottom of the modal',\n },\n editImageModalLearnMore: {\n id: 'editImageModalLearnMore',\n defaultMessage: 'Learn more.',\n description: 'Label for a link to additional documentation',\n },\n editImageModalLockImageProportionsCheckboxLabel: {\n id: 'editImageModalLockImageProportionsCheckboxLabel',\n defaultMessage: 'Lock proportions',\n description: 'Label for a checkbox that constrains an image\\'s proportions to its original aspect ratio',\n },\n editImageModalImageWidthLabel: {\n id: 'editImageModalImageWidth',\n defaultMessage: 'Width',\n description: 'Label for the text input box for an image\\'s width,',\n },\n editImageModalInsertTitle: {\n id: 'editImageModalInsertTitle',\n defaultMessage: 'Add an Image',\n description: 'Title of the modal used for adding an image',\n },\n editImageModalInsertHeader: {\n id: 'editImageModalInsertHeader',\n defaultMessage: 'Select a previously uploaded image',\n description: 'Header of the modal used for adding an image',\n },\n editImageModalEditTitle: {\n id: 'editImageModalEditTitle',\n defaultMessage: 'Edit Image Settings',\n description: 'Title of the modal used for editing image settings',\n },\n editImageModalImageOrFields: {\n id: 'editImageModalImageOrFields',\n defaultMessage: 'or',\n description: 'Describes two choices,',\n },\n editImageModalNextPageButton: {\n id: 'editImageModalNextPageButton',\n defaultMessage: 'Next',\n description: 'Button text to go to the next screen',\n },\n editImageModalPreviousPageButton: {\n id: 'editImageModalPreviousPageButton',\n defaultMessage: 'Back',\n description: 'Button text to go to the previous screen',\n },\n editImageModalInvalidFileType: {\n id: 'editImageModalInvalidFileType',\n defaultMessage: 'Files must be images, such as .jpg, .png, and .tiff files. No files were uploaded.',\n description: 'Error message shown when an invalid file is selected for upload',\n },\n editImageModalTooManyFiles: {\n id: 'editImageModalTooManyFiles',\n defaultMessage: 'Only one file may be uploaded at a time. No files were uploaded.',\n description: 'Error message shown when too many files are selected for upload',\n },\n});\n\nexport default messages;\n","import { Button, CheckBox, Fieldset, Icon, InputText, Modal, StatusAlert, Variant } from '@edx/paragon';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\nimport FontAwesomeStyles from 'font-awesome/css/font-awesome.min.css';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { assetActions } from '../../data/constants/actionTypes';\nimport AssetsResultsCount from '../AssetsResultsCount/index';\nimport { getPageType, pageTypes } from '../../utils/getAssetsPageType';\nimport messages from './displayMessages';\nimport rewriteStaticLinks from '../../utils/rewriteStaticLinks';\nimport styles from './EditImageModal.scss';\nimport WrappedAssetsClearSearchButton from '../AssetsClearSearchButton/container';\nimport WrappedAssetsDropZone from '../AssetsDropZone/container';\nimport WrappedAssetsList from '../AssetsList/container';\nimport WrappedAssetsSearch from '../AssetsSearch/container';\nimport WrappedMessage from '../../utils/i18n/formattedMessageWrapper';\nimport WrappedPagination from '../Pagination/container';\n\n\n// Create an AssetsResultsCount that is not aware of the Images filter.\n// This is so that the message will initially say \"out of N total files\" instead of \"out of N\n// possible matches\".\nconst WrappedAssetsResultsCount = connect((state) => {\n const { Images, ...typesWithoutImages } = state.metadata.filters.assetTypes;\n const filtersWithoutImages = { ...state.metadata.filters, assetTypes: typesWithoutImages };\n return {\n filtersMetadata: filtersWithoutImages,\n paginationMetadata: state.metadata.pagination,\n searchMetadata: state.metadata.search,\n };\n})(AssetsResultsCount);\n\nconst imageDescriptionID = 'imageDescription';\nconst imageDescriptionFieldsetID = 'imageDescriptionFieldset';\nconst imageDimensionsFieldsetID = 'imageDimensionsFieldset';\nconst imageHeightID = 'imageHeight';\nconst imageWidthID = 'imageWidth';\nconst modalWrapperID = 'modalWrapper';\n\nconst initialEditImageModalState = {\n areImageDimensionsValid: true,\n areProportionsLocked: true,\n assetsPageType: pageTypes.SKELETON,\n baseAssetURL: '',\n currentUploadErrorMessage: null,\n currentValidationMessages: {},\n displayLoadingSpinner: false,\n imageDescription: '',\n imageDimensions: {},\n imageSource: '',\n imageStyle: '',\n isImageDecorative: false,\n isImageDescriptionValid: true,\n isImageLoaded: false,\n isImageLoading: false,\n isImageDimensionsValid: true,\n isModalOpen: false,\n isStatusAlertOpen: false,\n pageNumber: 1,\n shouldShowPreviousButton: false,\n};\n\nexport default class EditImageModal extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { ...initialEditImageModalState };\n\n this.handleOpenModal = this.handleOpenModal.bind(this);\n this.onConstrainProportionsClick = this.onConstrainProportionsClick.bind(this);\n this.onEditImageModalClose = this.onEditImageModalClose.bind(this);\n this.onImageDescriptionBlur = this.onImageDescriptionBlur.bind(this);\n this.onImageDimensionBlur = this.onImageDimensionBlur.bind(this);\n this.onInsertImageButtonClick = this.onInsertImageButtonClick.bind(this);\n this.onImageIsDecorativeClick = this.onImageIsDecorativeClick.bind(this);\n this.onImageLoad = this.onImageLoad.bind(this);\n this.onNextPageButtonClick = this.onNextPageButtonClick.bind(this);\n this.onPreviousPageButtonClick = this.onPreviousPageButtonClick.bind(this);\n this.onStatusAlertClose = this.onStatusAlertClose.bind(this);\n // Create ref setters to minimize anonymous inline functions\n this.setDropZoneButtonRef = this.setDropZoneButtonRef.bind(this);\n this.setImageDescriptionInputRef = this.setImageDescriptionInputRef.bind(this);\n this.setImageFormRef = this.setImageFormRef.bind(this);\n this.setImageRef = this.setImageRef.bind(this);\n this.setModalWrapperRef = this.setModalWrapperRef.bind(this);\n this.setPreviousButtonRef = this.setPreviousButtonRef.bind(this);\n this.setStatusAlertRef = this.setStatusAlertRef.bind(this);\n\n this.dropZoneButtonRef = null;\n this.imageDescriptionInputRef = null;\n this.imageFormRef = null;\n this.imageRef = null;\n this.previousPageButtonRef = null;\n this.modalWrapperRef = null;\n this.statusAlertRef = null;\n }\n\n componentDidMount() {\n this.modalWrapperRef.addEventListener('openModal', this.handleOpenModal);\n }\n\n componentWillReceiveProps(nextProps) {\n const newState = {};\n switch (nextProps.assetsStatus.type) {\n case assetActions.upload.UPLOAD_ASSET_SUCCESS: {\n const uploadedAsset = nextProps.assetsStatus.response.asset;\n nextProps.selectAsset(uploadedAsset, 0);\n nextProps.clearAssetsStatus();\n newState.currentUploadErrorMessage = null;\n newState.isStatusAlertOpen = false;\n // Stay on page 1 - the form fields are now shown on the same page\n newState.pageNumber = 1;\n break;\n }\n case assetActions.upload.UPLOAD_EXCEED_MAX_COUNT_ERROR: {\n newState.currentUploadErrorMessage = messages.editImageModalTooManyFiles;\n newState.isStatusAlertOpen = true;\n break;\n }\n case assetActions.upload.UPLOAD_INVALID_FILE_TYPE_ERROR: {\n newState.currentUploadErrorMessage = messages.editImageModalInvalidFileType;\n newState.isStatusAlertOpen = true;\n break;\n }\n default: {\n if (nextProps.selectedAsset.portable_url) {\n newState.imageSource = nextProps.selectedAsset.portable_url;\n }\n break;\n }\n }\n this.setState(state => ({\n ...newState,\n assetsPageType: getPageType(nextProps, state.assetsPageType),\n }));\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.didStatusAlertOpen(prevState);\n this.wasNextButtonClicked(prevState);\n this.wasPreviousButtonClicked(prevState);\n }\n\n componentWillUnmount() {\n this.modalWrapperRef.removeEventListener('openModal', this.handleOpenModal);\n }\n\n onConstrainProportionsClick = (checked) => {\n this.setState({\n areProportionsLocked: checked,\n });\n }\n\n onEditImageModalClose = () => {\n this.setState({\n isModalOpen: false,\n });\n\n this.props.clearSearch(this.props.courseDetails);\n this.resetImageSelection();\n this.modalWrapperRef.dispatchEvent(new CustomEvent('closeModal',\n {\n bubbles: true,\n },\n ));\n }\n\n onImageIsDecorativeClick = (checked) => {\n this.setState({\n isImageDecorative: checked,\n });\n }\n\n onImageLoad = (event) => {\n const img = event.target;\n\n this.setState({\n displayLoadingSpinner: false,\n imageDimensions: {\n width: img.naturalWidth,\n height: img.naturalHeight,\n aspectRatio: img.naturalWidth / img.naturalHeight,\n },\n isImageLoaded: true,\n isImageLoading: false,\n });\n }\n\n onImageError = () => {\n this.setState({\n displayLoadingSpinner: false,\n imageDimensions: {},\n isImageLoading: false,\n isImageLoaded: false,\n });\n }\n\n onImageDescriptionBlur = (imageDescription) => {\n this.setState({\n imageDescription,\n });\n }\n\n onImageDimensionBlur = (dimensionType) => {\n let aspectRatio;\n let newDimensionType;\n\n if (dimensionType === 'height') {\n aspectRatio = this.state.imageDimensions.aspectRatio;\n newDimensionType = 'width';\n } else if (dimensionType === 'width') {\n aspectRatio = (1 / this.state.imageDimensions.aspectRatio);\n newDimensionType = 'height';\n } else {\n throw new Error(`Unknown dimension type ${dimensionType}.`);\n }\n\n return (dimensionValue) => {\n const newImageDimensions = { ...this.state.imageDimensions };\n const parsedDimensionValue = parseInt(dimensionValue, 10);\n\n newImageDimensions[dimensionType] = isNaN(parsedDimensionValue) ? '' : parsedDimensionValue;\n\n if (this.state.areProportionsLocked) {\n const newDimensionValue = Math.round(parsedDimensionValue * aspectRatio);\n newImageDimensions[newDimensionType] = isNaN(newDimensionValue) ? '' : newDimensionValue;\n }\n this.setState({ imageDimensions: newImageDimensions });\n };\n }\n\n onNextPageButtonClick = () => {\n if (this.isAssetSelected()) {\n this.setState({\n currentUploadErrorMessage: null,\n isStatusAlertOpen: false,\n pageNumber: 2,\n });\n this.props.clearAssetsStatus();\n }\n }\n\n onPreviousPageButtonClick = () => {\n this.setState({\n currentValidationMessages: {},\n isImageDescriptionValid: true,\n isImageDimensionsValid: true,\n isStatusAlertOpen: false,\n pageNumber: 1,\n });\n }\n\n onInsertImageButtonClick = () => {\n const isValidImageDescription = this.validateImageDescription();\n const isValidImageDimensions = this.validateImageDimensions();\n const isValidFormContent = isValidImageDescription.isValid && isValidImageDimensions.isValid;\n\n const currentValidationMessages = {};\n\n if (!isValidImageDescription.isValid) {\n currentValidationMessages[imageDescriptionID] = isValidImageDescription.validationMessage;\n }\n\n if (!isValidImageDimensions.isValid) {\n currentValidationMessages[imageWidthID] = isValidImageDimensions.validationMessage;\n }\n\n this.setState({\n isStatusAlertOpen: !isValidFormContent,\n isImageDescriptionValid: isValidImageDescription.isValid,\n areImageDimensionsValid: isValidImageDimensions.isValid,\n currentValidationMessages,\n });\n\n if (isValidFormContent) {\n // Use the form ref if available, otherwise dispatch from modal wrapper\n const targetElement = this.imageFormRef || this.modalWrapperRef;\n targetElement.dispatchEvent(new CustomEvent('submitForm',\n {\n bubbles: true,\n detail: {\n height: this.getDimensionStateOrNatural('height'),\n width: this.getDimensionStateOrNatural('width'),\n src: this.state.imageSource,\n alt: this.state.isImageDecorative ? '' : this.state.imageDescription,\n style: this.state.imageStyle,\n },\n },\n ));\n\n this.setState({\n isModalOpen: false,\n });\n\n this.resetImageSelection();\n } else {\n if (this.statusAlertRef) {\n this.statusAlertRef.focus();\n }\n }\n }\n\n onStatusAlertClose = () => {\n if (this.state.pageNumber === 1) {\n this.props.clearAssetsStatus();\n this.dropZoneButtonRef.focus();\n } else if (this.state.pageNumber === 2) {\n if (this.state.shouldShowPreviousButton) {\n this.previousPageButtonRef.focus();\n } else {\n this.imageDescriptionInputRef.focus();\n }\n }\n\n this.setState({\n isStatusAlertOpen: false,\n });\n }\n\n setDropZoneButtonRef(ref) {\n this.dropZoneButtonRef = ref;\n }\n\n setImageDescriptionInputRef(ref) {\n this.imageDescriptionInputRef = ref;\n }\n\n setImageFormRef(ref) {\n this.imageFormRef = ref;\n }\n\n setImageRef(ref) {\n this.imageRef = ref;\n }\n\n setModalWrapperRef(ref) {\n this.modalWrapperRef = ref;\n }\n\n setPreviousButtonRef(ref) {\n this.previousPageButtonRef = ref;\n }\n\n setStatusAlertRef(ref) {\n this.statusAlertRef = ref;\n }\n\n getNaturalDimension = (dimensionType) => {\n if (this.imageRef) {\n // if value is unparsable (NaN), reset to natural value\n const naturalDimensions = {\n width: this.imageRef.naturalWidth,\n height: this.imageRef.naturalHeight,\n };\n return naturalDimensions[dimensionType];\n }\n return null;\n }\n\n getDimensionStateOrNatural = (dimensionType) => {\n if (!this.state.imageDimensions[dimensionType]) {\n return this.getNaturalDimension(dimensionType);\n }\n return this.state.imageDimensions[dimensionType];\n }\n\n getImageDescriptionInput = () => (\n <Fieldset\n legend={<WrappedMessage message={messages.editImageModalImageDescriptionLegend} />}\n id={imageDescriptionFieldsetID}\n invalidMessage={<WrappedMessage message={messages.editImageModalFormValidImageDescription} />}\n isValid={this.state.isImageDescriptionValid}\n variant={{\n status: Variant.status.DANGER,\n }}\n variantIconDescription={<WrappedMessage message={messages.editImageModalFormError} />}\n >\n <InputText\n name=\"imageDescription\"\n label={\n <WrappedMessage\n message={messages.editImageModalImageDescriptionLabel}\n />\n }\n describedBy={`#Error-${imageDescriptionID}`}\n description={this.getImageDescriptionDescription()}\n id={imageDescriptionID}\n type=\"text\"\n value={this.state.imageDescription}\n disabled={this.state.isImageDecorative}\n onBlur={this.onImageDescriptionBlur}\n inputRef={this.setImageDescriptionInputRef}\n />\n <div className=\"or-fields\">\n <WrappedMessage\n message={messages.editImageModalImageOrFields}\n />\n </div>\n <CheckBox\n id=\"isDecorative\"\n name=\"isDecorative\"\n label={\n <WrappedMessage\n message={messages.editImageModalImageIsDecorativeCheckboxLabel}\n />\n }\n description={this.getImageIsDecorativeDescription()}\n checked={this.state.isImageDecorative}\n onChange={this.onImageIsDecorativeClick}\n />\n </Fieldset>\n );\n\n getLearnMoreLink = () => (\n <WrappedMessage message={messages.editImageModalLearnMore}>\n {\n displayText => (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={this.props.courseImageAccessibilityDocs}\n >\n {displayText}\n </a>\n )\n }\n </WrappedMessage>\n );\n\n getImageDescriptionDescription = () => (\n <React.Fragment>\n <WrappedMessage message={messages.editImageModalImageDescriptionDescription} />\n {' '}\n {this.getLearnMoreLink()}\n </React.Fragment>\n );\n\n getImageIsDecorativeDescription = () => (\n <React.Fragment>\n <WrappedMessage message={messages.editImageModalImageIsDecorativeCheckboxDescription} />\n {' '}\n {this.getLearnMoreLink()}\n </React.Fragment>\n );\n\n getImageDimensionsInput = () => (\n <Fieldset\n legend={<WrappedMessage message={messages.editImageModalDimensionsLegend} />}\n id={imageDimensionsFieldsetID}\n invalidMessage={<WrappedMessage message={messages.editImageModalFormValidImageDimensions} />}\n isValid={this.state.areImageDimensionsValid}\n variant={{\n status: Variant.status.DANGER,\n }}\n variantIconDescription={<WrappedMessage message={messages.editImageModalFormError} />}\n >\n <div className=\"form-row\">\n <div className=\"col\">\n <InputText\n name=\"imageWidth\"\n label={\n <WrappedMessage\n message={messages.editImageModalImageWidthLabel}\n />\n }\n id={imageWidthID}\n type=\"number\"\n value={'width' in this.state.imageDimensions ? this.state.imageDimensions.width : ''}\n onBlur={this.onImageDimensionBlur('width')}\n />\n </div>\n <div className=\"col-1 my-auto image-dimensions-x\">\n <Icon className={['fa', 'fa-times']} />\n </div>\n <div className=\"col\">\n <InputText\n name={imageHeightID}\n label={\n <WrappedMessage\n message={messages.editImageModalImageHeightLabel}\n />\n }\n id=\"imageHeight\"\n type=\"number\"\n value={'height' in this.state.imageDimensions ? this.state.imageDimensions.height : ''}\n onBlur={this.onImageDimensionBlur('height')}\n />\n </div>\n </div>\n <CheckBox\n id=\"lockProportions\"\n name=\"lockProportions\"\n label={\n <WrappedMessage\n message={messages.editImageModalLockImageProportionsCheckboxLabel}\n />\n }\n checked={this.state.areProportionsLocked}\n onChange={this.onConstrainProportionsClick}\n />\n </Fieldset>\n );\n\n getImageAssetSource = () => (\n rewriteStaticLinks(this.state.imageSource, '/static/', this.state.baseAssetURL)\n );\n\n getImage = () => (\n <img\n alt=\"\"\n className={classNames(styles['image-preview-image'], { invisible: !this.state.isImageLoaded })}\n src={this.getImageAssetSource()}\n onLoad={this.onImageLoad}\n onError={this.onImageError}\n ref={this.setImageRef}\n />\n );\n\n /*\n image is conditionally displayed so that onImageError is not called on initial\n modal open, when image source is empty string\n */\n getImagePreviewPlaceholder = () => (\n <div className={styles['image-preview-placeholder']}>\n <WrappedMessage message={messages.editImageModalImagePreviewText} >\n {displayText =>\n (<span className={classNames({ invisible: this.state.isImageLoaded })}>\n {displayText}\n </span>)}\n </WrappedMessage>\n {this.state.imageSource && this.getImage()}\n </div>\n );\n\n getImagePreview = () => (\n // image preview is decorative\n <div aria-hidden>\n <WrappedMessage message={messages.editImageModalImagePreviewText} />\n <div className={styles['image-preview-container']}>\n {this.getImagePreviewPlaceholder()}\n </div>\n </div>\n );\n\n getStatusAlertDialog = () => {\n let dialog;\n\n if (this.state.pageNumber === 1) {\n dialog = (\n <React.Fragment>\n {this.getUploadErrorStatusMessage()}\n </React.Fragment>\n );\n } else if (this.state.pageNumber === 2) {\n dialog = (\n <div>\n <WrappedMessage\n message={messages.editImageModalFormErrorMissingFields}\n tagName=\"div\"\n />\n <div className=\"mt-3\">\n <ul className=\"bullet-list\">\n {(Object.keys(this.state.currentValidationMessages).reduce((accumulator, current) => {\n const value = this.state.currentValidationMessages[current];\n\n if (value) {\n const errorMessage = <li key={`Error-${current}`}>{<a href={`#${current}`}>{value} </a>}</li>;\n accumulator.push(errorMessage);\n }\n\n return accumulator;\n }, [])\n )}\n </ul>\n </div>\n </div>\n );\n }\n return dialog;\n };\n\n getStatusAlert = () => (\n <StatusAlert\n alertType=\"danger\"\n dialog={this.getStatusAlertDialog()}\n onClose={this.onStatusAlertClose}\n open={this.state.isStatusAlertOpen}\n ref={this.setStatusAlertRef}\n />\n )\n\n getModalHeader = () => {\n let header;\n if (this.state.pageNumber === 1) {\n header = (\n <WrappedMessage\n message={messages.editImageModalInsertTitle}\n />\n );\n } else if (this.state.pageNumber === 2) {\n header = (\n <WrappedMessage\n message={messages.editImageModalEditTitle}\n />\n );\n }\n return (\n <div aria-live=\"polite\">\n { header }\n </div>\n );\n }\n\n getModalBody = () => {\n let body;\n if (this.state.pageNumber === 1) {\n body = this.getImageSelectionModalBody();\n } else if (this.state.pageNumber === 2) {\n body = this.getImageSettingsModalBody();\n }\n return body;\n }\n\n getImageSelectionModalBodyAssetsList = (type) => {\n switch (type) {\n case pageTypes.NORMAL:\n return (<WrappedAssetsList />);\n case pageTypes.NO_ASSETS:\n return (\n <div className=\"mt-3\">\n <WrappedMessage message={messages.editImageModalAssetsListNoAssetsMessage} tagName=\"h3\" />\n </div>\n );\n case pageTypes.NO_RESULTS:\n return (\n <React.Fragment>\n <WrappedMessage message={messages.editImageModalAssetsListNoResultsMessage} tagName=\"h3\" />\n <WrappedAssetsClearSearchButton />\n </React.Fragment>\n );\n case pageTypes.SKELETON:\n return (\n <div className=\"text-center mt-3\">\n <span className=\"fa-icon-spacing\" aria-hidden>\n <span\n className={classNames([\n FontAwesomeStyles.fa,\n FontAwesomeStyles['fa-spinner'],\n FontAwesomeStyles['fa-spin'],\n ])}\n />\n </span>\n <WrappedMessage message={messages.editImageModalAssetsListLoadingSpinner} />\n </div>\n );\n default:\n throw new Error(`Unknown pageType ${type}.`);\n }\n }\n\n getImageSelectionModalBody = () => (\n <React.Fragment>\n <div className=\"row\">\n <div className=\"col\">\n {this.getStatusAlert()}\n </div>\n </div>\n <div className=\"row mb-3\">\n <div className=\"col\">\n <WrappedAssetsDropZone\n maxFileCount={1}\n maxFileSizeMB={10}\n acceptedFileTypes={'image/*'}\n compactStyle\n buttonRef={this.setDropZoneButtonRef}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n {this.getImageSelectionModalBodyAssetsList(this.state.assetsPageType)}\n </div>\n </div>\n {this.state.assetsPageType === pageTypes.NORMAL && (\n <div className=\"row mt-2 no-gutters\">\n <div className=\"col\">\n <WrappedPagination />\n </div>\n </div>\n )}\n {this.isAssetSelected() && (\n <div className=\"row mt-3\">\n <div className=\"col\">\n {/* Hidden image to load dimensions */}\n {this.state.imageSource && (\n <img\n alt=\"\"\n src={this.getImageAssetSource()}\n onLoad={this.onImageLoad}\n onError={this.onImageError}\n ref={this.setImageRef}\n style={{ display: 'none' }}\n />\n )}\n <form ref={this.setImageFormRef}>\n {this.getImageDescriptionInput()}\n {this.getImageDimensionsInput()}\n </form>\n </div>\n </div>\n )}\n </React.Fragment>\n );\n\n getImageSettingsModalBody = () => (\n <React.Fragment>\n {this.getStatusAlert()}\n <div className=\"row\">\n {this.state.shouldShowPreviousButton && this.getPreviousPageButton()}\n </div>\n <div className=\"row\">\n <div className=\"col-sm-4\">\n {this.getImagePreview()}\n </div>\n <div className=\"col\">\n <form ref={this.setImageFormRef}>\n {this.getImageDescriptionInput()}\n {this.getImageDimensionsInput()}\n </form>\n </div>\n </div>\n </React.Fragment>\n );\n\n getModalButtons = () => {\n let buttons;\n if (this.state.pageNumber === 1) {\n // Show Save button if asset is selected, otherwise show Next button\n if (this.isAssetSelected()) {\n buttons = this.getInsertImageButton();\n } else {\n buttons = this.getNextPageButton();\n }\n } else if (this.state.pageNumber === 2) {\n buttons = this.getInsertImageButton();\n }\n return buttons;\n }\n\n getNextPageButton = () => (\n <Button\n label={\n <WrappedMessage\n message={messages.editImageModalNextPageButton}\n />\n }\n buttonType=\"primary\"\n disabled={!this.isAssetSelected()}\n onClick={this.onNextPageButtonClick}\n />\n );\n\n getPreviousPageButton = () => (\n <Button\n label={\n <WrappedMessage\n message={messages.editImageModalPreviousPageButton}\n />\n }\n buttonType=\"link\"\n onClick={this.onPreviousPageButtonClick}\n inputRef={this.setPreviousButtonRef}\n />\n );\n\n getInsertImageButton = () => (\n <Button\n label={\n <WrappedMessage\n message={messages.editImageModalInsertImageButton}\n />\n }\n buttonType=\"primary\"\n onClick={this.onInsertImageButtonClick}\n />\n );\n\n getUploadErrorStatusMessage = () => {\n let message;\n\n if (this.state.currentUploadErrorMessage) {\n message = (\n <WrappedMessage\n message={this.state.currentUploadErrorMessage}\n />\n );\n }\n\n return message;\n };\n\n resetImageSelection = () => {\n this.props.updatePage(0, this.props.courseDetails);\n this.props.clearSelectedAsset();\n }\n\n handleOpenModal = (event) => {\n const eventSource = event.detail.src;\n let isEventSourceEmpty = true;\n if (eventSource) {\n isEventSourceEmpty = false;\n }\n\n this.setState((state, props) => ({\n // reset state to initial and then add in overrides\n ...initialEditImageModalState,\n assetsPageType: getPageType(props, state.assetsPageType),\n baseAssetURL: event.detail.baseAssetUrl || '',\n imageDescription: event.detail.alt || '',\n imageDimensions: (event.detail.width && event.detail.height) ? {\n width: event.detail.width,\n height: event.detail.height,\n aspectRatio: event.detail.width / event.detail.height,\n } : {},\n imageSource: eventSource || '',\n imageStyle: event.detail.style || '',\n isImageDecorative: event.detail.alt === '',\n // if existing img had a source, assume it could be loaded and show the image preview\n isImageLoaded: !!eventSource,\n isModalOpen: true,\n pageNumber: isEventSourceEmpty ? 1 : 2,\n shouldShowPreviousButton: isEventSourceEmpty,\n }));\n\n if (this.props.assetsList.length === 0) {\n this.props.getAssets({ assetTypes: { Images: true }, pageSize: 4 }, this.props.courseDetails);\n }\n }\n\n validateImageDescription = () => {\n let feedback = { isValid: true };\n const { imageDescription, isImageDecorative } = this.state;\n\n if (!imageDescription && !isImageDecorative) {\n feedback = {\n isValid: false,\n validationMessage:\n (<WrappedMessage\n message={messages.editImageModalFormValidImageDescription}\n />),\n dangerIconDescription: <WrappedMessage message={messages.editImageModalFormError} />,\n };\n }\n return feedback;\n }\n\n validateImageDimensions = () => {\n let feedback = { isValid: true };\n const { height, width } = this.state.imageDimensions;\n\n if (!this.isPositiveIntegerOrEmpty(height) || !this.isPositiveIntegerOrEmpty(width)) {\n feedback = {\n isValid: false,\n validationMessage:\n (<WrappedMessage\n message={messages.editImageModalFormValidImageDimensions}\n />),\n dangerIconDescription: <WrappedMessage message={messages.editImageModalFormError} />,\n };\n }\n return feedback;\n }\n\n didStatusAlertOpen = (prevState) => {\n if (this.state.isStatusAlertOpen && !prevState.isStatusAlertOpen) {\n this.statusAlertRef.focus();\n }\n }\n\n isAssetSelected = () => (this.props.selectedAsset\n && Object.keys(this.props.selectedAsset).length !== 0);\n\n isPositiveIntegerOrEmpty = (val) => {\n if (val === '' || val === undefined) {\n return true;\n }\n if (Number.isInteger(val) && val > 0) {\n return true;\n }\n return false;\n }\n\n wasNextButtonClicked = (prevState) => {\n if (this.state.pageNumber === 2 && prevState.pageNumber === 1\n && this.state.shouldShowPreviousButton) {\n this.previousPageButtonRef.focus();\n }\n }\n\n wasPreviousButtonClicked = (prevState) => {\n if (this.state.pageNumber === 1 && prevState.pageNumber === 2\n && prevState.isModalOpen) {\n this.dropZoneButtonRef.focus();\n }\n }\n\n render = () => (\n <div\n ref={this.setModalWrapperRef}\n id={modalWrapperID}\n >\n <div\n aria-atomic\n aria-live={this.state.isModalOpen ? 'polite' : 'off'}\n aria-relevant=\"text\"\n className=\"sr-only\"\n >\n <WrappedAssetsResultsCount />\n </div>\n <Modal\n open={this.state.isModalOpen}\n title={this.getModalHeader()}\n body={this.getModalBody()}\n closeText={<WrappedMessage message={messages.editImageModalCancelButton} />}\n onClose={this.onEditImageModalClose}\n buttons={[this.getModalButtons()]}\n parentSelector={`#${modalWrapperID}`}\n />\n </div>\n );\n}\n\nEditImageModal.propTypes = {\n assetsList: PropTypes.arrayOf(PropTypes.object).isRequired,\n assetsStatus: PropTypes.shape({\n response: PropTypes.object,\n type: PropTypes.string,\n }).isRequired,\n clearAssetsStatus: PropTypes.func.isRequired,\n clearSearch: PropTypes.func.isRequired,\n clearSelectedAsset: PropTypes.func.isRequired,\n courseDetails: PropTypes.shape({\n lang: PropTypes.string,\n url_name: PropTypes.string,\n name: PropTypes.string,\n display_course_number: PropTypes.string,\n num: PropTypes.string,\n org: PropTypes.string,\n id: PropTypes.string,\n revision: PropTypes.string,\n base_url: PropTypes.string,\n }).isRequired,\n courseImageAccessibilityDocs: PropTypes.string.isRequired,\n getAssets: PropTypes.func.isRequired,\n selectAsset: PropTypes.func.isRequired,\n selectedAsset: PropTypes.shape({\n display_name: PropTypes.string,\n content_type: PropTypes.string,\n url: PropTypes.string,\n date_added: PropTypes.string,\n id: PropTypes.string,\n portable_url: PropTypes.string,\n thumbnail: PropTypes.string,\n external_url: PropTypes.string,\n }).isRequired,\n updatePage: PropTypes.func.isRequired,\n};\n","import { connect } from 'react-redux';\n\nimport EditImageModal from '.';\nimport {\n clearAssetsStatus,\n clearSelectedAsset,\n getAssets,\n pageUpdate,\n searchUpdate,\n selectAsset,\n} from '../../data/actions/assets';\n\n\n// Create an EditImageModal that is not aware of the Images filter.\n// This is so that the page will display a \"noAssets\" list instead of a \"noResults\" list when the\n// course has no images.\nconst mapStateToProps = (state) => {\n const { Images, ...typesWithoutImages } = state.metadata.filters.assetTypes;\n const filtersWithoutImages = { ...state.metadata.filters, assetTypes: typesWithoutImages };\n return {\n assetsList: state.assets,\n assetsStatus: state.metadata.status,\n courseDetails: state.studioDetails.course,\n courseImageAccessibilityDocs: state.studioDetails.help_tokens.image_accessibility,\n filtersMetadata: filtersWithoutImages,\n searchMetadata: state.metadata.search,\n selectedAsset: state.metadata.select.selectedAsset,\n status: state.metadata.status,\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n clearAssetsStatus: () => dispatch(clearAssetsStatus()),\n clearSearch: courseDetails => dispatch(searchUpdate('', courseDetails)),\n clearSelectedAsset: () => dispatch(clearSelectedAsset()),\n getAssets: (request, courseDetails) => dispatch(getAssets(request, courseDetails)),\n selectAsset: (asset, index) => dispatch(selectAsset(asset, index)),\n updatePage: (page, courseDetails) => dispatch(pageUpdate(page, courseDetails)),\n});\n\nconst WrappedEditImageModal = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(EditImageModal);\n\nexport default WrappedEditImageModal;\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n","/* eslint-disable global-require,no-underscore-dangle */\nif ((typeof window !== 'undefined' && !window._babelPolyfill) ||\n (typeof global !== 'undefined' && !global._babelPolyfill)) {\n // Don't load babel-polyfill if already loaded: https://github.com/babel/babel/issues/4019\n require('babel-polyfill'); // general ES2015 polyfill (e.g. promise)\n}\n/* eslint-enable global-require no-underscore-dangle */\n\n/* eslint-disable import/first */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { IntlProvider } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport 'custom-event-polyfill'; // needed for IE11\n\nimport './SFE.scss';\nimport WrappedEditImageModal from './components/EditImageModal/container';\nimport loadI18nDomData from './utils/i18n/loadI18nDomData';\nimport store from './data/store';\n/* eslint-enable import/first */\n\nconst i18nData = loadI18nDomData();\n/* eslint-enable import/first */\n\nconst App = () => (\n <IntlProvider locale={i18nData.locale} messages={i18nData.messages}>\n <Provider store={store}>\n <div className=\"SFE-wrapper\">\n <WrappedEditImageModal />\n </div>\n </Provider>\n </IntlProvider>\n);\n\nReactDOM.render(<App />, document.getElementById('root'));\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/components/AssetsList/AssetsList.scss","webpack:///./src/components/AssetsList/displayMessages.jsx","webpack:///./src/components/AssetsList/index.jsx","webpack:///./src/components/AssetsList/container.jsx","webpack:///./src/components/AssetsClearSearchButton/displayMessages.jsx","webpack:///./src/components/AssetsClearSearchButton/index.jsx","webpack:///./src/components/AssetsClearSearchButton/container.jsx","webpack:///./src/components/EditImageModal/EditImageModal.scss","webpack:///./src/utils/rewriteStaticLinks.js","webpack:///./src/components/EditImageModal/displayMessages.jsx","webpack:///./src/components/EditImageModal/index.jsx","webpack:///./src/components/EditImageModal/container.jsx","webpack:///./node_modules/custom-event-polyfill/custom-event-polyfill.js","webpack:///./src/editImageModalIndex.jsx"],"names":["module","exports","root","SFE","m-0","mt-0","my-0","mr-0","mx-0","mb-0","ml-0","m-1","mt-1","my-1","mr-1","mx-1","mb-1","ml-1","m-2","mt-2","my-2","mr-2","mx-2","mb-2","ml-2","m-3","mt-3","my-3","mr-3","mx-3","mb-3","ml-3","m-4","mt-4","my-4","mr-4","mx-4","mb-4","ml-4","m-5","mt-5","my-5","mr-5","mx-5","mb-5","ml-5","p-0","pt-0","py-0","pr-0","px-0","pb-0","pl-0","p-1","pt-1","py-1","pr-1","px-1","pb-1","pl-1","p-2","pt-2","py-2","pr-2","px-2","pb-2","pl-2","p-3","pt-3","py-3","pr-3","px-3","pb-3","pl-3","p-4","pt-4","py-4","pr-4","px-4","pb-4","pl-4","p-5","pt-5","py-5","pr-5","px-5","pb-5","pl-5","m-n1","mt-n1","my-n1","mr-n1","mx-n1","mb-n1","ml-n1","m-n2","mt-n2","my-n2","mr-n2","mx-n2","mb-n2","ml-n2","m-n3","mt-n3","my-n3","mr-n3","mx-n3","mb-n3","ml-n3","m-n4","mt-n4","my-n4","mr-n4","mx-n4","mb-n4","ml-n4","m-n5","mt-n5","my-n5","mr-n5","mx-n5","mb-n5","ml-n5","m-auto","mt-auto","my-auto","mr-auto","mx-auto","mb-auto","ml-auto","m-sm-0","mt-sm-0","my-sm-0","mr-sm-0","mx-sm-0","mb-sm-0","ml-sm-0","m-sm-1","mt-sm-1","my-sm-1","mr-sm-1","mx-sm-1","mb-sm-1","ml-sm-1","m-sm-2","mt-sm-2","my-sm-2","mr-sm-2","mx-sm-2","mb-sm-2","ml-sm-2","m-sm-3","mt-sm-3","my-sm-3","mr-sm-3","mx-sm-3","mb-sm-3","ml-sm-3","m-sm-4","mt-sm-4","my-sm-4","mr-sm-4","mx-sm-4","mb-sm-4","ml-sm-4","m-sm-5","mt-sm-5","my-sm-5","mr-sm-5","mx-sm-5","mb-sm-5","ml-sm-5","p-sm-0","pt-sm-0","py-sm-0","pr-sm-0","px-sm-0","pb-sm-0","pl-sm-0","p-sm-1","pt-sm-1","py-sm-1","pr-sm-1","px-sm-1","pb-sm-1","pl-sm-1","p-sm-2","pt-sm-2","py-sm-2","pr-sm-2","px-sm-2","pb-sm-2","pl-sm-2","p-sm-3","pt-sm-3","py-sm-3","pr-sm-3","px-sm-3","pb-sm-3","pl-sm-3","p-sm-4","pt-sm-4","py-sm-4","pr-sm-4","px-sm-4","pb-sm-4","pl-sm-4","p-sm-5","pt-sm-5","py-sm-5","pr-sm-5","px-sm-5","pb-sm-5","pl-sm-5","m-sm-n1","mt-sm-n1","my-sm-n1","mr-sm-n1","mx-sm-n1","mb-sm-n1","ml-sm-n1","m-sm-n2","mt-sm-n2","my-sm-n2","mr-sm-n2","mx-sm-n2","mb-sm-n2","ml-sm-n2","m-sm-n3","mt-sm-n3","my-sm-n3","mr-sm-n3","mx-sm-n3","mb-sm-n3","ml-sm-n3","m-sm-n4","mt-sm-n4","my-sm-n4","mr-sm-n4","mx-sm-n4","mb-sm-n4","ml-sm-n4","m-sm-n5","mt-sm-n5","my-sm-n5","mr-sm-n5","mx-sm-n5","mb-sm-n5","ml-sm-n5","m-sm-auto","mt-sm-auto","my-sm-auto","mr-sm-auto","mx-sm-auto","mb-sm-auto","ml-sm-auto","m-md-0","mt-md-0","my-md-0","mr-md-0","mx-md-0","mb-md-0","ml-md-0","m-md-1","mt-md-1","my-md-1","mr-md-1","mx-md-1","mb-md-1","ml-md-1","m-md-2","mt-md-2","my-md-2","mr-md-2","mx-md-2","mb-md-2","ml-md-2","m-md-3","mt-md-3","my-md-3","mr-md-3","mx-md-3","mb-md-3","ml-md-3","m-md-4","mt-md-4","my-md-4","mr-md-4","mx-md-4","mb-md-4","ml-md-4","m-md-5","mt-md-5","my-md-5","mr-md-5","mx-md-5","mb-md-5","ml-md-5","p-md-0","pt-md-0","py-md-0","pr-md-0","px-md-0","pb-md-0","pl-md-0","p-md-1","pt-md-1","py-md-1","pr-md-1","px-md-1","pb-md-1","pl-md-1","p-md-2","pt-md-2","py-md-2","pr-md-2","px-md-2","pb-md-2","pl-md-2","p-md-3","pt-md-3","py-md-3","pr-md-3","px-md-3","pb-md-3","pl-md-3","p-md-4","pt-md-4","py-md-4","pr-md-4","px-md-4","pb-md-4","pl-md-4","p-md-5","pt-md-5","py-md-5","pr-md-5","px-md-5","pb-md-5","pl-md-5","m-md-n1","mt-md-n1","my-md-n1","mr-md-n1","mx-md-n1","mb-md-n1","ml-md-n1","m-md-n2","mt-md-n2","my-md-n2","mr-md-n2","mx-md-n2","mb-md-n2","ml-md-n2","m-md-n3","mt-md-n3","my-md-n3","mr-md-n3","mx-md-n3","mb-md-n3","ml-md-n3","m-md-n4","mt-md-n4","my-md-n4","mr-md-n4","mx-md-n4","mb-md-n4","ml-md-n4","m-md-n5","mt-md-n5","my-md-n5","mr-md-n5","mx-md-n5","mb-md-n5","ml-md-n5","m-md-auto","mt-md-auto","my-md-auto","mr-md-auto","mx-md-auto","mb-md-auto","ml-md-auto","m-lg-0","mt-lg-0","my-lg-0","mr-lg-0","mx-lg-0","mb-lg-0","ml-lg-0","m-lg-1","mt-lg-1","my-lg-1","mr-lg-1","mx-lg-1","mb-lg-1","ml-lg-1","m-lg-2","mt-lg-2","my-lg-2","mr-lg-2","mx-lg-2","mb-lg-2","ml-lg-2","m-lg-3","mt-lg-3","my-lg-3","mr-lg-3","mx-lg-3","mb-lg-3","ml-lg-3","m-lg-4","mt-lg-4","my-lg-4","mr-lg-4","mx-lg-4","mb-lg-4","ml-lg-4","m-lg-5","mt-lg-5","my-lg-5","mr-lg-5","mx-lg-5","mb-lg-5","ml-lg-5","p-lg-0","pt-lg-0","py-lg-0","pr-lg-0","px-lg-0","pb-lg-0","pl-lg-0","p-lg-1","pt-lg-1","py-lg-1","pr-lg-1","px-lg-1","pb-lg-1","pl-lg-1","p-lg-2","pt-lg-2","py-lg-2","pr-lg-2","px-lg-2","pb-lg-2","pl-lg-2","p-lg-3","pt-lg-3","py-lg-3","pr-lg-3","px-lg-3","pb-lg-3","pl-lg-3","p-lg-4","pt-lg-4","py-lg-4","pr-lg-4","px-lg-4","pb-lg-4","pl-lg-4","p-lg-5","pt-lg-5","py-lg-5","pr-lg-5","px-lg-5","pb-lg-5","pl-lg-5","m-lg-n1","mt-lg-n1","my-lg-n1","mr-lg-n1","mx-lg-n1","mb-lg-n1","ml-lg-n1","m-lg-n2","mt-lg-n2","my-lg-n2","mr-lg-n2","mx-lg-n2","mb-lg-n2","ml-lg-n2","m-lg-n3","mt-lg-n3","my-lg-n3","mr-lg-n3","mx-lg-n3","mb-lg-n3","ml-lg-n3","m-lg-n4","mt-lg-n4","my-lg-n4","mr-lg-n4","mx-lg-n4","mb-lg-n4","ml-lg-n4","m-lg-n5","mt-lg-n5","my-lg-n5","mr-lg-n5","mx-lg-n5","mb-lg-n5","ml-lg-n5","m-lg-auto","mt-lg-auto","my-lg-auto","mr-lg-auto","mx-lg-auto","mb-lg-auto","ml-lg-auto","m-xl-0","mt-xl-0","my-xl-0","mr-xl-0","mx-xl-0","mb-xl-0","ml-xl-0","m-xl-1","mt-xl-1","my-xl-1","mr-xl-1","mx-xl-1","mb-xl-1","ml-xl-1","m-xl-2","mt-xl-2","my-xl-2","mr-xl-2","mx-xl-2","mb-xl-2","ml-xl-2","m-xl-3","mt-xl-3","my-xl-3","mr-xl-3","mx-xl-3","mb-xl-3","ml-xl-3","m-xl-4","mt-xl-4","my-xl-4","mr-xl-4","mx-xl-4","mb-xl-4","ml-xl-4","m-xl-5","mt-xl-5","my-xl-5","mr-xl-5","mx-xl-5","mb-xl-5","ml-xl-5","p-xl-0","pt-xl-0","py-xl-0","pr-xl-0","px-xl-0","pb-xl-0","pl-xl-0","p-xl-1","pt-xl-1","py-xl-1","pr-xl-1","px-xl-1","pb-xl-1","pl-xl-1","p-xl-2","pt-xl-2","py-xl-2","pr-xl-2","px-xl-2","pb-xl-2","pl-xl-2","p-xl-3","pt-xl-3","py-xl-3","pr-xl-3","px-xl-3","pb-xl-3","pl-xl-3","p-xl-4","pt-xl-4","py-xl-4","pr-xl-4","px-xl-4","pb-xl-4","pl-xl-4","p-xl-5","pt-xl-5","py-xl-5","pr-xl-5","px-xl-5","pb-xl-5","pl-xl-5","m-xl-n1","mt-xl-n1","my-xl-n1","mr-xl-n1","mx-xl-n1","mb-xl-n1","ml-xl-n1","m-xl-n2","mt-xl-n2","my-xl-n2","mr-xl-n2","mx-xl-n2","mb-xl-n2","ml-xl-n2","m-xl-n3","mt-xl-n3","my-xl-n3","mr-xl-n3","mx-xl-n3","mb-xl-n3","ml-xl-n3","m-xl-n4","mt-xl-n4","my-xl-n4","mr-xl-n4","mx-xl-n4","mb-xl-n4","ml-xl-n4","m-xl-n5","mt-xl-n5","my-xl-n5","mr-xl-n5","mx-xl-n5","mb-xl-n5","ml-xl-n5","m-xl-auto","mt-xl-auto","my-xl-auto","mr-xl-auto","mx-xl-auto","mb-xl-auto","ml-xl-auto","sr-only","sr-only-focusable","assets-grid","asset-grid-item","asset-preview","selected","asset-name","file-type-badge","asset-thumbnail","asset-icon","asset-info","asset-size","assets-list-image-preview-container","assets-list-image-preview-image","list-header","no-image-preview","unbulleted-list-item","messages","__webpack_require__","defineMessages","assetsListNoPreview","id","defaultMessage","description","assetsListNameLabel","assetsListDateLabel","initialState","selectedAssetIndex","selectedAssetPage","AssetsList","props","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","_initialiseProps","state","_extends","handleKeyDown","bind","onAssetClick","onListBoxFocus","React","Component","nextProps","paginationMetadata","page","setState","getSelectedAssetIndex","assetsList","selectedAsset","keys","length","asset","index","_this2","selectAsset","getFileExtension","displayName","lastDot","lastIndexOf","substring","toLowerCase","formatFileSize","bytes","i","Math","floor","log","pow","toFixed","getAssetGridItem","isSelected","baseUrl","courseDetails","base_url","fileExt","display_name","fileSize","file_size","size","previewPath","thumbnail","url","previewSrc","indexOf","_react2","default","createElement","onMouseDown","e","preventDefault","className","_classnames2","styles","aria-selected","aria-label","role","key","tabIndex","src","alt","title","findIndex","render","assetsGridItems","map","aria-activedescendant","onFocus","onKeyDown","propTypes","PropTypes","arrayOf","shape","string","content_type","date_added","portable_url","external_url","number","isRequired","lang","url_name","name","display_course_number","num","org","revision","start","end","pageSize","totalCount","func","_reactRedux","_","_assets","WrappedAssetsList","connect","assets","studioDetails","course","courseImageAccessibilityDocs","help_tokens","image_accessibility","metadata","pagination","select","dispatch","assetsClearSearchButtonLabel","_paragon","AssetsClearSearchButton","_ref","clearSearch","Button","buttonType","onClick","label","_formattedMessageWrapper2","message","WrappedAssetsClearSearchButton","searchUpdate","paragon-fieldset","image-preview-placeholder","or-fields","modal-body","row","modal-dialog","form-control","is-invalid","is-invalid-nodanger","image-preview-container","image-preview-image","image-dimensions-x","invalid-feedback","image-fields","form-group","form-text","dimensions-row","dimension-field","dimensions-separator","form-check","form-check-label","content","from","to","fromRe","replace","regex","RegExp","match","editImageModalAssetsListLoadingSpinner","editImageModalAssetsListNoAssetsMessage","editImageModalAssetsListNoResultsMessage","editImageModalCancelButton","editImageModalFormError","editImageModalFormErrorMissingFields","editImageModalFormValidImageDescription","editImageModalFormValidImageDimensions","editImageModalImageDescriptionDescription","editImageModalImageDescriptionLabel","editImageModalImageDecorativeDescription","editImageModalImageDescriptionLegend","editImageModalDimensionsLegend","editImageModalImageHeightLabel","editImageModalImagePreviewText","editImageModalInsertImageButton","editImageModalLearnMore","editImageModalLockImageProportionsCheckboxLabel","editImageModalImageWidthLabel","editImageModalInsertTitle","editImageModalInsertHeader","editImageModalEditTitle","editImageModalNextPageButton","editImageModalPreviousPageButton","editImageModalInvalidFileType","editImageModalTooManyFiles","_actionTypes","_getAssetsPageType","WrappedAssetsResultsCount","_state$metadata$filte","filters","assetTypes","typesWithoutImages","Images","_objectWithoutProperties","filtersMetadata","filtersWithoutImages","searchMetadata","search","AssetsResultsCount","initialEditImageModalState","areImageDimensionsValid","areProportionsLocked","assetsPageType","pageTypes","SKELETON","baseAssetURL","currentUploadErrorMessage","currentValidationMessages","displayLoadingSpinner","imageDescription","imageDimensions","imageSource","imageStyle","isImageDescriptionValid","isImageLoaded","isImageLoading","isImageDimensionsValid","isModalOpen","isStatusAlertOpen","pageNumber","editingExisting","shouldShowPreviousButton","EditImageModal","handleOpenModal","onConstrainProportionsClick","onEditImageModalClose","onImageDescriptionBlur","onImageDimensionBlur","onInsertImageButtonClick","onImageLoad","onNextPageButtonClick","onPreviousPageButtonClick","onStatusAlertClose","setDropZoneButtonRef","setImageDescriptionInputRef","setImageFormRef","setImageRef","setModalWrapperRef","setPreviousButtonRef","setStatusAlertRef","dropZoneButtonRef","imageDescriptionInputRef","imageFormRef","imageRef","previousPageButtonRef","modalWrapperRef","statusAlertRef","addEventListener","newState","assetsStatus","type","assetActions","upload","UPLOAD_ASSET_SUCCESS","uploadedAsset","response","clearAssetsStatus","UPLOAD_EXCEED_MAX_COUNT_ERROR","UPLOAD_INVALID_FILE_TYPE_ERROR","source","find","getPageType","prevProps","prevState","didStatusAlertOpen","wasNextButtonClicked","wasPreviousButtonClicked","removeEventListener","ref","checked","resetImageSelection","dispatchEvent","CustomEvent","bubbles","event","img","target","width","naturalWidth","height","naturalHeight","aspectRatio","onImageError","dimensionType","newDimensionType","Error","dimensionValue","newImageDimensions","parsedDimensionValue","parseInt","isNaN","newDimensionValue","round","isAssetSelected","isValidImageDescription","validateImageDescription","isValidImageDimensions","validateImageDimensions","isValidFormContent","isValid","validationMessage","targetElement","altText","detail","getDimensionStateOrNatural","style","focus","getNaturalDimension","getImageDescriptionInput","Fieldset","legend","invalidMessage","variant","status","Variant","DANGER","variantIconDescription","InputText","describedBy","getImageDescriptionDescription","value","onBlur","inputRef","getLearnMoreLink","displayText","rel","href","Fragment","getImageDimensionsInput","aria-hidden","CheckBox","onChange","getImageAssetSource","_rewriteStaticLinks2","getImage","invisible","onLoad","onError","getImagePreviewPlaceholder","getImagePreview","getStatusAlertDialog","dialog","getUploadErrorStatusMessage","tagName","reduce","accumulator","current","errorMessage","push","getStatusAlert","StatusAlert","alertType","onClose","open","getModalHeader","header","aria-live","getModalBody","body","getImageSelectionModalBody","getImageSettingsModalBody","getImageSelectionModalBodyAssetsList","NORMAL","_container6","NO_ASSETS","NO_RESULTS","_container2","FontAwesomeStyles","fa","_container4","maxFileCount","maxFileSizeMB","acceptedFileTypes","compactStyle","buttonRef","display","getPreviousPageButton","getModalButtons","buttons","getInsertImageButton","getNextPageButton","disabled","updatePage","clearSelectedAsset","eventSource","isEventSourceEmpty","baseAssetUrl","getAssets","feedback","_state$imageDimension","isPositiveIntegerOrEmpty","dangerIconDescription","val","undefined","Number","isInteger","aria-atomic","aria-relevant","Modal","closeText","parentSelector","object","WrappedEditImageModal","request","pageUpdate","ce","window","defaultPrevented","params","evt","origPrevent","cancelable","document","createEvent","initCustomEvent","defineProperty","get","prototype","Event","_reactIntl","_babelPolyfill","global","i18nData","_loadI18nDomData2","ReactDOM","IntlProvider","locale","Provider","store","getElementById"],"mappings":"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,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,SAAA,SAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,UAAA,UAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,WAAA,WAAAC,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","file":"editImageModal.min.js","sourcesContent":["// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"root\",\"SFE\":\"SFE\",\"m-0\":\"m-0\",\"mt-0\":\"mt-0\",\"my-0\":\"my-0\",\"mr-0\":\"mr-0\",\"mx-0\":\"mx-0\",\"mb-0\":\"mb-0\",\"ml-0\":\"ml-0\",\"m-1\":\"m-1\",\"mt-1\":\"mt-1\",\"my-1\":\"my-1\",\"mr-1\":\"mr-1\",\"mx-1\":\"mx-1\",\"mb-1\":\"mb-1\",\"ml-1\":\"ml-1\",\"m-2\":\"m-2\",\"mt-2\":\"mt-2\",\"my-2\":\"my-2\",\"mr-2\":\"mr-2\",\"mx-2\":\"mx-2\",\"mb-2\":\"mb-2\",\"ml-2\":\"ml-2\",\"m-3\":\"m-3\",\"mt-3\":\"mt-3\",\"my-3\":\"my-3\",\"mr-3\":\"mr-3\",\"mx-3\":\"mx-3\",\"mb-3\":\"mb-3\",\"ml-3\":\"ml-3\",\"m-4\":\"m-4\",\"mt-4\":\"mt-4\",\"my-4\":\"my-4\",\"mr-4\":\"mr-4\",\"mx-4\":\"mx-4\",\"mb-4\":\"mb-4\",\"ml-4\":\"ml-4\",\"m-5\":\"m-5\",\"mt-5\":\"mt-5\",\"my-5\":\"my-5\",\"mr-5\":\"mr-5\",\"mx-5\":\"mx-5\",\"mb-5\":\"mb-5\",\"ml-5\":\"ml-5\",\"p-0\":\"p-0\",\"pt-0\":\"pt-0\",\"py-0\":\"py-0\",\"pr-0\":\"pr-0\",\"px-0\":\"px-0\",\"pb-0\":\"pb-0\",\"pl-0\":\"pl-0\",\"p-1\":\"p-1\",\"pt-1\":\"pt-1\",\"py-1\":\"py-1\",\"pr-1\":\"pr-1\",\"px-1\":\"px-1\",\"pb-1\":\"pb-1\",\"pl-1\":\"pl-1\",\"p-2\":\"p-2\",\"pt-2\":\"pt-2\",\"py-2\":\"py-2\",\"pr-2\":\"pr-2\",\"px-2\":\"px-2\",\"pb-2\":\"pb-2\",\"pl-2\":\"pl-2\",\"p-3\":\"p-3\",\"pt-3\":\"pt-3\",\"py-3\":\"py-3\",\"pr-3\":\"pr-3\",\"px-3\":\"px-3\",\"pb-3\":\"pb-3\",\"pl-3\":\"pl-3\",\"p-4\":\"p-4\",\"pt-4\":\"pt-4\",\"py-4\":\"py-4\",\"pr-4\":\"pr-4\",\"px-4\":\"px-4\",\"pb-4\":\"pb-4\",\"pl-4\":\"pl-4\",\"p-5\":\"p-5\",\"pt-5\":\"pt-5\",\"py-5\":\"py-5\",\"pr-5\":\"pr-5\",\"px-5\":\"px-5\",\"pb-5\":\"pb-5\",\"pl-5\":\"pl-5\",\"m-n1\":\"m-n1\",\"mt-n1\":\"mt-n1\",\"my-n1\":\"my-n1\",\"mr-n1\":\"mr-n1\",\"mx-n1\":\"mx-n1\",\"mb-n1\":\"mb-n1\",\"ml-n1\":\"ml-n1\",\"m-n2\":\"m-n2\",\"mt-n2\":\"mt-n2\",\"my-n2\":\"my-n2\",\"mr-n2\":\"mr-n2\",\"mx-n2\":\"mx-n2\",\"mb-n2\":\"mb-n2\",\"ml-n2\":\"ml-n2\",\"m-n3\":\"m-n3\",\"mt-n3\":\"mt-n3\",\"my-n3\":\"my-n3\",\"mr-n3\":\"mr-n3\",\"mx-n3\":\"mx-n3\",\"mb-n3\":\"mb-n3\",\"ml-n3\":\"ml-n3\",\"m-n4\":\"m-n4\",\"mt-n4\":\"mt-n4\",\"my-n4\":\"my-n4\",\"mr-n4\":\"mr-n4\",\"mx-n4\":\"mx-n4\",\"mb-n4\":\"mb-n4\",\"ml-n4\":\"ml-n4\",\"m-n5\":\"m-n5\",\"mt-n5\":\"mt-n5\",\"my-n5\":\"my-n5\",\"mr-n5\":\"mr-n5\",\"mx-n5\":\"mx-n5\",\"mb-n5\":\"mb-n5\",\"ml-n5\":\"ml-n5\",\"m-auto\":\"m-auto\",\"mt-auto\":\"mt-auto\",\"my-auto\":\"my-auto\",\"mr-auto\":\"mr-auto\",\"mx-auto\":\"mx-auto\",\"mb-auto\":\"mb-auto\",\"ml-auto\":\"ml-auto\",\"m-sm-0\":\"m-sm-0\",\"mt-sm-0\":\"mt-sm-0\",\"my-sm-0\":\"my-sm-0\",\"mr-sm-0\":\"mr-sm-0\",\"mx-sm-0\":\"mx-sm-0\",\"mb-sm-0\":\"mb-sm-0\",\"ml-sm-0\":\"ml-sm-0\",\"m-sm-1\":\"m-sm-1\",\"mt-sm-1\":\"mt-sm-1\",\"my-sm-1\":\"my-sm-1\",\"mr-sm-1\":\"mr-sm-1\",\"mx-sm-1\":\"mx-sm-1\",\"mb-sm-1\":\"mb-sm-1\",\"ml-sm-1\":\"ml-sm-1\",\"m-sm-2\":\"m-sm-2\",\"mt-sm-2\":\"mt-sm-2\",\"my-sm-2\":\"my-sm-2\",\"mr-sm-2\":\"mr-sm-2\",\"mx-sm-2\":\"mx-sm-2\",\"mb-sm-2\":\"mb-sm-2\",\"ml-sm-2\":\"ml-sm-2\",\"m-sm-3\":\"m-sm-3\",\"mt-sm-3\":\"mt-sm-3\",\"my-sm-3\":\"my-sm-3\",\"mr-sm-3\":\"mr-sm-3\",\"mx-sm-3\":\"mx-sm-3\",\"mb-sm-3\":\"mb-sm-3\",\"ml-sm-3\":\"ml-sm-3\",\"m-sm-4\":\"m-sm-4\",\"mt-sm-4\":\"mt-sm-4\",\"my-sm-4\":\"my-sm-4\",\"mr-sm-4\":\"mr-sm-4\",\"mx-sm-4\":\"mx-sm-4\",\"mb-sm-4\":\"mb-sm-4\",\"ml-sm-4\":\"ml-sm-4\",\"m-sm-5\":\"m-sm-5\",\"mt-sm-5\":\"mt-sm-5\",\"my-sm-5\":\"my-sm-5\",\"mr-sm-5\":\"mr-sm-5\",\"mx-sm-5\":\"mx-sm-5\",\"mb-sm-5\":\"mb-sm-5\",\"ml-sm-5\":\"ml-sm-5\",\"p-sm-0\":\"p-sm-0\",\"pt-sm-0\":\"pt-sm-0\",\"py-sm-0\":\"py-sm-0\",\"pr-sm-0\":\"pr-sm-0\",\"px-sm-0\":\"px-sm-0\",\"pb-sm-0\":\"pb-sm-0\",\"pl-sm-0\":\"pl-sm-0\",\"p-sm-1\":\"p-sm-1\",\"pt-sm-1\":\"pt-sm-1\",\"py-sm-1\":\"py-sm-1\",\"pr-sm-1\":\"pr-sm-1\",\"px-sm-1\":\"px-sm-1\",\"pb-sm-1\":\"pb-sm-1\",\"pl-sm-1\":\"pl-sm-1\",\"p-sm-2\":\"p-sm-2\",\"pt-sm-2\":\"pt-sm-2\",\"py-sm-2\":\"py-sm-2\",\"pr-sm-2\":\"pr-sm-2\",\"px-sm-2\":\"px-sm-2\",\"pb-sm-2\":\"pb-sm-2\",\"pl-sm-2\":\"pl-sm-2\",\"p-sm-3\":\"p-sm-3\",\"pt-sm-3\":\"pt-sm-3\",\"py-sm-3\":\"py-sm-3\",\"pr-sm-3\":\"pr-sm-3\",\"px-sm-3\":\"px-sm-3\",\"pb-sm-3\":\"pb-sm-3\",\"pl-sm-3\":\"pl-sm-3\",\"p-sm-4\":\"p-sm-4\",\"pt-sm-4\":\"pt-sm-4\",\"py-sm-4\":\"py-sm-4\",\"pr-sm-4\":\"pr-sm-4\",\"px-sm-4\":\"px-sm-4\",\"pb-sm-4\":\"pb-sm-4\",\"pl-sm-4\":\"pl-sm-4\",\"p-sm-5\":\"p-sm-5\",\"pt-sm-5\":\"pt-sm-5\",\"py-sm-5\":\"py-sm-5\",\"pr-sm-5\":\"pr-sm-5\",\"px-sm-5\":\"px-sm-5\",\"pb-sm-5\":\"pb-sm-5\",\"pl-sm-5\":\"pl-sm-5\",\"m-sm-n1\":\"m-sm-n1\",\"mt-sm-n1\":\"mt-sm-n1\",\"my-sm-n1\":\"my-sm-n1\",\"mr-sm-n1\":\"mr-sm-n1\",\"mx-sm-n1\":\"mx-sm-n1\",\"mb-sm-n1\":\"mb-sm-n1\",\"ml-sm-n1\":\"ml-sm-n1\",\"m-sm-n2\":\"m-sm-n2\",\"mt-sm-n2\":\"mt-sm-n2\",\"my-sm-n2\":\"my-sm-n2\",\"mr-sm-n2\":\"mr-sm-n2\",\"mx-sm-n2\":\"mx-sm-n2\",\"mb-sm-n2\":\"mb-sm-n2\",\"ml-sm-n2\":\"ml-sm-n2\",\"m-sm-n3\":\"m-sm-n3\",\"mt-sm-n3\":\"mt-sm-n3\",\"my-sm-n3\":\"my-sm-n3\",\"mr-sm-n3\":\"mr-sm-n3\",\"mx-sm-n3\":\"mx-sm-n3\",\"mb-sm-n3\":\"mb-sm-n3\",\"ml-sm-n3\":\"ml-sm-n3\",\"m-sm-n4\":\"m-sm-n4\",\"mt-sm-n4\":\"mt-sm-n4\",\"my-sm-n4\":\"my-sm-n4\",\"mr-sm-n4\":\"mr-sm-n4\",\"mx-sm-n4\":\"mx-sm-n4\",\"mb-sm-n4\":\"mb-sm-n4\",\"ml-sm-n4\":\"ml-sm-n4\",\"m-sm-n5\":\"m-sm-n5\",\"mt-sm-n5\":\"mt-sm-n5\",\"my-sm-n5\":\"my-sm-n5\",\"mr-sm-n5\":\"mr-sm-n5\",\"mx-sm-n5\":\"mx-sm-n5\",\"mb-sm-n5\":\"mb-sm-n5\",\"ml-sm-n5\":\"ml-sm-n5\",\"m-sm-auto\":\"m-sm-auto\",\"mt-sm-auto\":\"mt-sm-auto\",\"my-sm-auto\":\"my-sm-auto\",\"mr-sm-auto\":\"mr-sm-auto\",\"mx-sm-auto\":\"mx-sm-auto\",\"mb-sm-auto\":\"mb-sm-auto\",\"ml-sm-auto\":\"ml-sm-auto\",\"m-md-0\":\"m-md-0\",\"mt-md-0\":\"mt-md-0\",\"my-md-0\":\"my-md-0\",\"mr-md-0\":\"mr-md-0\",\"mx-md-0\":\"mx-md-0\",\"mb-md-0\":\"mb-md-0\",\"ml-md-0\":\"ml-md-0\",\"m-md-1\":\"m-md-1\",\"mt-md-1\":\"mt-md-1\",\"my-md-1\":\"my-md-1\",\"mr-md-1\":\"mr-md-1\",\"mx-md-1\":\"mx-md-1\",\"mb-md-1\":\"mb-md-1\",\"ml-md-1\":\"ml-md-1\",\"m-md-2\":\"m-md-2\",\"mt-md-2\":\"mt-md-2\",\"my-md-2\":\"my-md-2\",\"mr-md-2\":\"mr-md-2\",\"mx-md-2\":\"mx-md-2\",\"mb-md-2\":\"mb-md-2\",\"ml-md-2\":\"ml-md-2\",\"m-md-3\":\"m-md-3\",\"mt-md-3\":\"mt-md-3\",\"my-md-3\":\"my-md-3\",\"mr-md-3\":\"mr-md-3\",\"mx-md-3\":\"mx-md-3\",\"mb-md-3\":\"mb-md-3\",\"ml-md-3\":\"ml-md-3\",\"m-md-4\":\"m-md-4\",\"mt-md-4\":\"mt-md-4\",\"my-md-4\":\"my-md-4\",\"mr-md-4\":\"mr-md-4\",\"mx-md-4\":\"mx-md-4\",\"mb-md-4\":\"mb-md-4\",\"ml-md-4\":\"ml-md-4\",\"m-md-5\":\"m-md-5\",\"mt-md-5\":\"mt-md-5\",\"my-md-5\":\"my-md-5\",\"mr-md-5\":\"mr-md-5\",\"mx-md-5\":\"mx-md-5\",\"mb-md-5\":\"mb-md-5\",\"ml-md-5\":\"ml-md-5\",\"p-md-0\":\"p-md-0\",\"pt-md-0\":\"pt-md-0\",\"py-md-0\":\"py-md-0\",\"pr-md-0\":\"pr-md-0\",\"px-md-0\":\"px-md-0\",\"pb-md-0\":\"pb-md-0\",\"pl-md-0\":\"pl-md-0\",\"p-md-1\":\"p-md-1\",\"pt-md-1\":\"pt-md-1\",\"py-md-1\":\"py-md-1\",\"pr-md-1\":\"pr-md-1\",\"px-md-1\":\"px-md-1\",\"pb-md-1\":\"pb-md-1\",\"pl-md-1\":\"pl-md-1\",\"p-md-2\":\"p-md-2\",\"pt-md-2\":\"pt-md-2\",\"py-md-2\":\"py-md-2\",\"pr-md-2\":\"pr-md-2\",\"px-md-2\":\"px-md-2\",\"pb-md-2\":\"pb-md-2\",\"pl-md-2\":\"pl-md-2\",\"p-md-3\":\"p-md-3\",\"pt-md-3\":\"pt-md-3\",\"py-md-3\":\"py-md-3\",\"pr-md-3\":\"pr-md-3\",\"px-md-3\":\"px-md-3\",\"pb-md-3\":\"pb-md-3\",\"pl-md-3\":\"pl-md-3\",\"p-md-4\":\"p-md-4\",\"pt-md-4\":\"pt-md-4\",\"py-md-4\":\"py-md-4\",\"pr-md-4\":\"pr-md-4\",\"px-md-4\":\"px-md-4\",\"pb-md-4\":\"pb-md-4\",\"pl-md-4\":\"pl-md-4\",\"p-md-5\":\"p-md-5\",\"pt-md-5\":\"pt-md-5\",\"py-md-5\":\"py-md-5\",\"pr-md-5\":\"pr-md-5\",\"px-md-5\":\"px-md-5\",\"pb-md-5\":\"pb-md-5\",\"pl-md-5\":\"pl-md-5\",\"m-md-n1\":\"m-md-n1\",\"mt-md-n1\":\"mt-md-n1\",\"my-md-n1\":\"my-md-n1\",\"mr-md-n1\":\"mr-md-n1\",\"mx-md-n1\":\"mx-md-n1\",\"mb-md-n1\":\"mb-md-n1\",\"ml-md-n1\":\"ml-md-n1\",\"m-md-n2\":\"m-md-n2\",\"mt-md-n2\":\"mt-md-n2\",\"my-md-n2\":\"my-md-n2\",\"mr-md-n2\":\"mr-md-n2\",\"mx-md-n2\":\"mx-md-n2\",\"mb-md-n2\":\"mb-md-n2\",\"ml-md-n2\":\"ml-md-n2\",\"m-md-n3\":\"m-md-n3\",\"mt-md-n3\":\"mt-md-n3\",\"my-md-n3\":\"my-md-n3\",\"mr-md-n3\":\"mr-md-n3\",\"mx-md-n3\":\"mx-md-n3\",\"mb-md-n3\":\"mb-md-n3\",\"ml-md-n3\":\"ml-md-n3\",\"m-md-n4\":\"m-md-n4\",\"mt-md-n4\":\"mt-md-n4\",\"my-md-n4\":\"my-md-n4\",\"mr-md-n4\":\"mr-md-n4\",\"mx-md-n4\":\"mx-md-n4\",\"mb-md-n4\":\"mb-md-n4\",\"ml-md-n4\":\"ml-md-n4\",\"m-md-n5\":\"m-md-n5\",\"mt-md-n5\":\"mt-md-n5\",\"my-md-n5\":\"my-md-n5\",\"mr-md-n5\":\"mr-md-n5\",\"mx-md-n5\":\"mx-md-n5\",\"mb-md-n5\":\"mb-md-n5\",\"ml-md-n5\":\"ml-md-n5\",\"m-md-auto\":\"m-md-auto\",\"mt-md-auto\":\"mt-md-auto\",\"my-md-auto\":\"my-md-auto\",\"mr-md-auto\":\"mr-md-auto\",\"mx-md-auto\":\"mx-md-auto\",\"mb-md-auto\":\"mb-md-auto\",\"ml-md-auto\":\"ml-md-auto\",\"m-lg-0\":\"m-lg-0\",\"mt-lg-0\":\"mt-lg-0\",\"my-lg-0\":\"my-lg-0\",\"mr-lg-0\":\"mr-lg-0\",\"mx-lg-0\":\"mx-lg-0\",\"mb-lg-0\":\"mb-lg-0\",\"ml-lg-0\":\"ml-lg-0\",\"m-lg-1\":\"m-lg-1\",\"mt-lg-1\":\"mt-lg-1\",\"my-lg-1\":\"my-lg-1\",\"mr-lg-1\":\"mr-lg-1\",\"mx-lg-1\":\"mx-lg-1\",\"mb-lg-1\":\"mb-lg-1\",\"ml-lg-1\":\"ml-lg-1\",\"m-lg-2\":\"m-lg-2\",\"mt-lg-2\":\"mt-lg-2\",\"my-lg-2\":\"my-lg-2\",\"mr-lg-2\":\"mr-lg-2\",\"mx-lg-2\":\"mx-lg-2\",\"mb-lg-2\":\"mb-lg-2\",\"ml-lg-2\":\"ml-lg-2\",\"m-lg-3\":\"m-lg-3\",\"mt-lg-3\":\"mt-lg-3\",\"my-lg-3\":\"my-lg-3\",\"mr-lg-3\":\"mr-lg-3\",\"mx-lg-3\":\"mx-lg-3\",\"mb-lg-3\":\"mb-lg-3\",\"ml-lg-3\":\"ml-lg-3\",\"m-lg-4\":\"m-lg-4\",\"mt-lg-4\":\"mt-lg-4\",\"my-lg-4\":\"my-lg-4\",\"mr-lg-4\":\"mr-lg-4\",\"mx-lg-4\":\"mx-lg-4\",\"mb-lg-4\":\"mb-lg-4\",\"ml-lg-4\":\"ml-lg-4\",\"m-lg-5\":\"m-lg-5\",\"mt-lg-5\":\"mt-lg-5\",\"my-lg-5\":\"my-lg-5\",\"mr-lg-5\":\"mr-lg-5\",\"mx-lg-5\":\"mx-lg-5\",\"mb-lg-5\":\"mb-lg-5\",\"ml-lg-5\":\"ml-lg-5\",\"p-lg-0\":\"p-lg-0\",\"pt-lg-0\":\"pt-lg-0\",\"py-lg-0\":\"py-lg-0\",\"pr-lg-0\":\"pr-lg-0\",\"px-lg-0\":\"px-lg-0\",\"pb-lg-0\":\"pb-lg-0\",\"pl-lg-0\":\"pl-lg-0\",\"p-lg-1\":\"p-lg-1\",\"pt-lg-1\":\"pt-lg-1\",\"py-lg-1\":\"py-lg-1\",\"pr-lg-1\":\"pr-lg-1\",\"px-lg-1\":\"px-lg-1\",\"pb-lg-1\":\"pb-lg-1\",\"pl-lg-1\":\"pl-lg-1\",\"p-lg-2\":\"p-lg-2\",\"pt-lg-2\":\"pt-lg-2\",\"py-lg-2\":\"py-lg-2\",\"pr-lg-2\":\"pr-lg-2\",\"px-lg-2\":\"px-lg-2\",\"pb-lg-2\":\"pb-lg-2\",\"pl-lg-2\":\"pl-lg-2\",\"p-lg-3\":\"p-lg-3\",\"pt-lg-3\":\"pt-lg-3\",\"py-lg-3\":\"py-lg-3\",\"pr-lg-3\":\"pr-lg-3\",\"px-lg-3\":\"px-lg-3\",\"pb-lg-3\":\"pb-lg-3\",\"pl-lg-3\":\"pl-lg-3\",\"p-lg-4\":\"p-lg-4\",\"pt-lg-4\":\"pt-lg-4\",\"py-lg-4\":\"py-lg-4\",\"pr-lg-4\":\"pr-lg-4\",\"px-lg-4\":\"px-lg-4\",\"pb-lg-4\":\"pb-lg-4\",\"pl-lg-4\":\"pl-lg-4\",\"p-lg-5\":\"p-lg-5\",\"pt-lg-5\":\"pt-lg-5\",\"py-lg-5\":\"py-lg-5\",\"pr-lg-5\":\"pr-lg-5\",\"px-lg-5\":\"px-lg-5\",\"pb-lg-5\":\"pb-lg-5\",\"pl-lg-5\":\"pl-lg-5\",\"m-lg-n1\":\"m-lg-n1\",\"mt-lg-n1\":\"mt-lg-n1\",\"my-lg-n1\":\"my-lg-n1\",\"mr-lg-n1\":\"mr-lg-n1\",\"mx-lg-n1\":\"mx-lg-n1\",\"mb-lg-n1\":\"mb-lg-n1\",\"ml-lg-n1\":\"ml-lg-n1\",\"m-lg-n2\":\"m-lg-n2\",\"mt-lg-n2\":\"mt-lg-n2\",\"my-lg-n2\":\"my-lg-n2\",\"mr-lg-n2\":\"mr-lg-n2\",\"mx-lg-n2\":\"mx-lg-n2\",\"mb-lg-n2\":\"mb-lg-n2\",\"ml-lg-n2\":\"ml-lg-n2\",\"m-lg-n3\":\"m-lg-n3\",\"mt-lg-n3\":\"mt-lg-n3\",\"my-lg-n3\":\"my-lg-n3\",\"mr-lg-n3\":\"mr-lg-n3\",\"mx-lg-n3\":\"mx-lg-n3\",\"mb-lg-n3\":\"mb-lg-n3\",\"ml-lg-n3\":\"ml-lg-n3\",\"m-lg-n4\":\"m-lg-n4\",\"mt-lg-n4\":\"mt-lg-n4\",\"my-lg-n4\":\"my-lg-n4\",\"mr-lg-n4\":\"mr-lg-n4\",\"mx-lg-n4\":\"mx-lg-n4\",\"mb-lg-n4\":\"mb-lg-n4\",\"ml-lg-n4\":\"ml-lg-n4\",\"m-lg-n5\":\"m-lg-n5\",\"mt-lg-n5\":\"mt-lg-n5\",\"my-lg-n5\":\"my-lg-n5\",\"mr-lg-n5\":\"mr-lg-n5\",\"mx-lg-n5\":\"mx-lg-n5\",\"mb-lg-n5\":\"mb-lg-n5\",\"ml-lg-n5\":\"ml-lg-n5\",\"m-lg-auto\":\"m-lg-auto\",\"mt-lg-auto\":\"mt-lg-auto\",\"my-lg-auto\":\"my-lg-auto\",\"mr-lg-auto\":\"mr-lg-auto\",\"mx-lg-auto\":\"mx-lg-auto\",\"mb-lg-auto\":\"mb-lg-auto\",\"ml-lg-auto\":\"ml-lg-auto\",\"m-xl-0\":\"m-xl-0\",\"mt-xl-0\":\"mt-xl-0\",\"my-xl-0\":\"my-xl-0\",\"mr-xl-0\":\"mr-xl-0\",\"mx-xl-0\":\"mx-xl-0\",\"mb-xl-0\":\"mb-xl-0\",\"ml-xl-0\":\"ml-xl-0\",\"m-xl-1\":\"m-xl-1\",\"mt-xl-1\":\"mt-xl-1\",\"my-xl-1\":\"my-xl-1\",\"mr-xl-1\":\"mr-xl-1\",\"mx-xl-1\":\"mx-xl-1\",\"mb-xl-1\":\"mb-xl-1\",\"ml-xl-1\":\"ml-xl-1\",\"m-xl-2\":\"m-xl-2\",\"mt-xl-2\":\"mt-xl-2\",\"my-xl-2\":\"my-xl-2\",\"mr-xl-2\":\"mr-xl-2\",\"mx-xl-2\":\"mx-xl-2\",\"mb-xl-2\":\"mb-xl-2\",\"ml-xl-2\":\"ml-xl-2\",\"m-xl-3\":\"m-xl-3\",\"mt-xl-3\":\"mt-xl-3\",\"my-xl-3\":\"my-xl-3\",\"mr-xl-3\":\"mr-xl-3\",\"mx-xl-3\":\"mx-xl-3\",\"mb-xl-3\":\"mb-xl-3\",\"ml-xl-3\":\"ml-xl-3\",\"m-xl-4\":\"m-xl-4\",\"mt-xl-4\":\"mt-xl-4\",\"my-xl-4\":\"my-xl-4\",\"mr-xl-4\":\"mr-xl-4\",\"mx-xl-4\":\"mx-xl-4\",\"mb-xl-4\":\"mb-xl-4\",\"ml-xl-4\":\"ml-xl-4\",\"m-xl-5\":\"m-xl-5\",\"mt-xl-5\":\"mt-xl-5\",\"my-xl-5\":\"my-xl-5\",\"mr-xl-5\":\"mr-xl-5\",\"mx-xl-5\":\"mx-xl-5\",\"mb-xl-5\":\"mb-xl-5\",\"ml-xl-5\":\"ml-xl-5\",\"p-xl-0\":\"p-xl-0\",\"pt-xl-0\":\"pt-xl-0\",\"py-xl-0\":\"py-xl-0\",\"pr-xl-0\":\"pr-xl-0\",\"px-xl-0\":\"px-xl-0\",\"pb-xl-0\":\"pb-xl-0\",\"pl-xl-0\":\"pl-xl-0\",\"p-xl-1\":\"p-xl-1\",\"pt-xl-1\":\"pt-xl-1\",\"py-xl-1\":\"py-xl-1\",\"pr-xl-1\":\"pr-xl-1\",\"px-xl-1\":\"px-xl-1\",\"pb-xl-1\":\"pb-xl-1\",\"pl-xl-1\":\"pl-xl-1\",\"p-xl-2\":\"p-xl-2\",\"pt-xl-2\":\"pt-xl-2\",\"py-xl-2\":\"py-xl-2\",\"pr-xl-2\":\"pr-xl-2\",\"px-xl-2\":\"px-xl-2\",\"pb-xl-2\":\"pb-xl-2\",\"pl-xl-2\":\"pl-xl-2\",\"p-xl-3\":\"p-xl-3\",\"pt-xl-3\":\"pt-xl-3\",\"py-xl-3\":\"py-xl-3\",\"pr-xl-3\":\"pr-xl-3\",\"px-xl-3\":\"px-xl-3\",\"pb-xl-3\":\"pb-xl-3\",\"pl-xl-3\":\"pl-xl-3\",\"p-xl-4\":\"p-xl-4\",\"pt-xl-4\":\"pt-xl-4\",\"py-xl-4\":\"py-xl-4\",\"pr-xl-4\":\"pr-xl-4\",\"px-xl-4\":\"px-xl-4\",\"pb-xl-4\":\"pb-xl-4\",\"pl-xl-4\":\"pl-xl-4\",\"p-xl-5\":\"p-xl-5\",\"pt-xl-5\":\"pt-xl-5\",\"py-xl-5\":\"py-xl-5\",\"pr-xl-5\":\"pr-xl-5\",\"px-xl-5\":\"px-xl-5\",\"pb-xl-5\":\"pb-xl-5\",\"pl-xl-5\":\"pl-xl-5\",\"m-xl-n1\":\"m-xl-n1\",\"mt-xl-n1\":\"mt-xl-n1\",\"my-xl-n1\":\"my-xl-n1\",\"mr-xl-n1\":\"mr-xl-n1\",\"mx-xl-n1\":\"mx-xl-n1\",\"mb-xl-n1\":\"mb-xl-n1\",\"ml-xl-n1\":\"ml-xl-n1\",\"m-xl-n2\":\"m-xl-n2\",\"mt-xl-n2\":\"mt-xl-n2\",\"my-xl-n2\":\"my-xl-n2\",\"mr-xl-n2\":\"mr-xl-n2\",\"mx-xl-n2\":\"mx-xl-n2\",\"mb-xl-n2\":\"mb-xl-n2\",\"ml-xl-n2\":\"ml-xl-n2\",\"m-xl-n3\":\"m-xl-n3\",\"mt-xl-n3\":\"mt-xl-n3\",\"my-xl-n3\":\"my-xl-n3\",\"mr-xl-n3\":\"mr-xl-n3\",\"mx-xl-n3\":\"mx-xl-n3\",\"mb-xl-n3\":\"mb-xl-n3\",\"ml-xl-n3\":\"ml-xl-n3\",\"m-xl-n4\":\"m-xl-n4\",\"mt-xl-n4\":\"mt-xl-n4\",\"my-xl-n4\":\"my-xl-n4\",\"mr-xl-n4\":\"mr-xl-n4\",\"mx-xl-n4\":\"mx-xl-n4\",\"mb-xl-n4\":\"mb-xl-n4\",\"ml-xl-n4\":\"ml-xl-n4\",\"m-xl-n5\":\"m-xl-n5\",\"mt-xl-n5\":\"mt-xl-n5\",\"my-xl-n5\":\"my-xl-n5\",\"mr-xl-n5\":\"mr-xl-n5\",\"mx-xl-n5\":\"mx-xl-n5\",\"mb-xl-n5\":\"mb-xl-n5\",\"ml-xl-n5\":\"ml-xl-n5\",\"m-xl-auto\":\"m-xl-auto\",\"mt-xl-auto\":\"mt-xl-auto\",\"my-xl-auto\":\"my-xl-auto\",\"mr-xl-auto\":\"mr-xl-auto\",\"mx-xl-auto\":\"mx-xl-auto\",\"mb-xl-auto\":\"mb-xl-auto\",\"ml-xl-auto\":\"ml-xl-auto\",\"sr-only\":\"sr-only\",\"sr-only-focusable\":\"sr-only-focusable\",\"assets-grid\":\"assets-grid\",\"asset-grid-item\":\"asset-grid-item\",\"asset-preview\":\"asset-preview\",\"selected\":\"selected\",\"asset-name\":\"asset-name\",\"file-type-badge\":\"file-type-badge\",\"asset-thumbnail\":\"asset-thumbnail\",\"asset-icon\":\"asset-icon\",\"asset-info\":\"asset-info\",\"asset-size\":\"asset-size\",\"assets-list-image-preview-container\":\"assets-list-image-preview-container\",\"assets-list-image-preview-image\":\"assets-list-image-preview-image\",\"list-header\":\"list-header\",\"no-image-preview\":\"no-image-preview\",\"unbulleted-list-item\":\"unbulleted-list-item\"};","import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n assetsListNoPreview: {\n id: 'assetsListNoPreview',\n defaultMessage: 'Preview not available',\n description: 'Label shown when no preview is available',\n },\n assetsListNameLabel: {\n id: 'assetsListNameLabel',\n defaultMessage: 'Name',\n description: 'Label for column header',\n },\n assetsListDateLabel: {\n id: 'assetsListDateLabel',\n defaultMessage: 'Date Added',\n description: 'Label for column header',\n },\n});\n\nexport default messages;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport WrappedMessage from '../../utils/i18n/formattedMessageWrapper';\nimport messages from './displayMessages';\nimport styles from './AssetsList.scss';\n\nconst initialState = {\n selectedAssetIndex: -1,\n selectedAssetPage: -1,\n};\n\nexport default class AssetsList extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n ...initialState,\n };\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.onAssetClick = this.onAssetClick.bind(this);\n this.onListBoxFocus = this.onListBoxFocus.bind(this);\n }\n\n componentWillReceiveProps(nextProps) {\n // if page has changed, reset the index of the selected index\n if (this.props.paginationMetadata.page !== nextProps.paginationMetadata.page) {\n if (nextProps.paginationMetadata.page === this.state.selectedAssetPage) {\n this.setState({\n selectedAssetIndex: this.getSelectedAssetIndex(nextProps.assetsList,\n nextProps.selectedAsset),\n });\n } else {\n this.setState({\n selectedAssetIndex: -1,\n });\n }\n }\n\n /*\n if the selectedAsset is set to empty object, reset selectedAssetIndex; this is to\n handle the case when the EditImageModal closes\n */\n if (Object.keys(this.props.selectedAsset).length !== 0 &&\n Object.keys(nextProps.selectedAsset).length === 0) {\n this.setState({\n ...initialState,\n });\n }\n }\n\n onAssetClick = (asset, index) => {\n this.setState({\n selectedAssetIndex: index,\n selectedAssetPage: this.props.paginationMetadata.page,\n });\n\n this.props.selectAsset(asset);\n }\n\n onListBoxFocus = () => {\n // if no list item is selected, select first item on listbox focus\n if (this.state.selectedAssetIndex === -1) {\n this.setState(\n { selectedAssetIndex: 0,\n selectedAssetPage: this.props.paginationMetadata.page,\n },\n () => { this.props.selectAsset(this.props.assetsList[this.state.selectedAssetIndex]); },\n );\n }\n }\n\n getFileExtension = (displayName) => {\n if (!displayName) return '';\n const lastDot = displayName.lastIndexOf('.');\n if (lastDot === -1 || lastDot === displayName.length - 1) {\n return 'file';\n }\n return displayName.substring(lastDot + 1).toLowerCase();\n }\n\n formatFileSize = (bytes) => {\n if (!bytes || bytes === 0) return '';\n const units = ['B', 'KB', 'MB', 'GB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const size = (bytes / Math.pow(k, i)).toFixed(i === 0 ? 0 : 1);\n return `${size} ${units[i]}`;\n }\n\n getAssetGridItem = (asset, index) => {\n const isSelected = this.props.selectedAsset.id === asset.id;\n const baseUrl = this.props.courseDetails.base_url || '';\n const fileExt = this.getFileExtension(asset.display_name);\n const fileSize = this.formatFileSize(asset.file_size || asset.size);\n const previewPath = asset.thumbnail || asset.url;\n const previewSrc = previewPath\n ? (previewPath.indexOf('http') === 0 ? previewPath : `${baseUrl}${previewPath}`)\n : '';\n\n return (\n <div\n onMouseDown={(e) => { e.preventDefault(); this.onAssetClick(asset, index); }}\n className={classNames(styles['asset-grid-item'], { [styles.selected]: isSelected })}\n id={`asset-list-option-${index}`}\n aria-selected={isSelected}\n aria-label={asset.display_name}\n role=\"option\"\n key={asset.id || asset.display_name}\n tabIndex=\"-1\"\n >\n <div className={styles['asset-preview']}>\n <span className={styles['file-type-badge']}>{fileExt}</span>\n {previewSrc ? (\n <img\n className={styles['asset-thumbnail']}\n src={previewSrc}\n alt=\"\"\n />\n ) : (\n <div className={styles['asset-icon']}>\n <i className=\"far fa-image\" />\n </div>\n )}\n </div>\n <div className={styles['asset-info']}>\n <div className={styles['asset-name']} title={asset.display_name}>\n {asset.display_name}\n </div>\n {fileSize && (\n <div className={styles['asset-size']}>\n {fileSize}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n getSelectedAssetIndex = (assetsList, selectedAsset) => (assetsList.findIndex(\n asset => asset.id === selectedAsset.id));\n\n handleKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowRight': {\n e.preventDefault();\n if (this.state.selectedAssetIndex < this.props.assetsList.length - 1) {\n this.setState(\n (state, props) => ({\n selectedAssetIndex: this.state.selectedAssetIndex + 1,\n selectedAssetPage: props.paginationMetadata.page,\n }),\n () => { this.props.selectAsset(this.props.assetsList[this.state.selectedAssetIndex]); },\n );\n }\n break;\n }\n case 'ArrowLeft': {\n e.preventDefault();\n if (this.state.selectedAssetIndex > 0) {\n this.setState(\n (state, props) => ({\n selectedAssetIndex: this.state.selectedAssetIndex - 1,\n selectedAssetPage: props.paginationMetadata.page,\n }),\n () => { this.props.selectAsset(this.props.assetsList[this.state.selectedAssetIndex]); },\n );\n }\n break;\n }\n default:\n }\n }\n\n render = () => {\n const assetsGridItems = this.props.assetsList.map((asset, index) =>\n this.getAssetGridItem(asset, index));\n\n return (\n <div\n aria-activedescendant={this.state.selectedAssetIndex > -1 ? `asset-list-option-${this.state.selectedAssetIndex}` : null}\n className={styles['assets-grid']}\n onFocus={this.onListBoxFocus}\n onKeyDown={this.handleKeyDown}\n role=\"listbox\"\n tabIndex=\"0\"\n >\n {assetsGridItems}\n </div>\n );\n };\n}\n\nAssetsList.propTypes = {\n assetsList: PropTypes.arrayOf(PropTypes.shape({\n display_name: PropTypes.string,\n content_type: PropTypes.string,\n url: PropTypes.string,\n date_added: PropTypes.string,\n id: PropTypes.string,\n portable_url: PropTypes.string,\n thumbnail: PropTypes.string,\n external_url: PropTypes.string,\n file_size: PropTypes.number,\n })).isRequired,\n courseDetails: PropTypes.shape({\n lang: PropTypes.string,\n url_name: PropTypes.string,\n name: PropTypes.string,\n display_course_number: PropTypes.string,\n num: PropTypes.string,\n org: PropTypes.string,\n id: PropTypes.string,\n revision: PropTypes.string,\n base_url: PropTypes.string,\n }).isRequired,\n paginationMetadata: PropTypes.shape({\n start: PropTypes.number,\n end: PropTypes.number,\n page: PropTypes.number,\n pageSize: PropTypes.number,\n totalCount: PropTypes.number,\n }).isRequired,\n selectAsset: PropTypes.func.isRequired,\n selectedAsset: PropTypes.shape({\n display_name: PropTypes.string,\n content_type: PropTypes.string,\n url: PropTypes.string,\n date_added: PropTypes.string,\n id: PropTypes.string,\n portable_url: PropTypes.string,\n thumbnail: PropTypes.string,\n external_url: PropTypes.string,\n file_size: PropTypes.number,\n }).isRequired,\n};\n","import { connect } from 'react-redux';\n\nimport AssetsList from '.';\nimport { selectAsset } from '../../data/actions/assets';\n\nconst mapStateToProps = state => ({\n assetsList: state.assets,\n courseDetails: state.studioDetails.course,\n courseImageAccessibilityDocs: state.studioDetails.help_tokens.image_accessibility,\n paginationMetadata: state.metadata.pagination,\n selectedAsset: state.metadata.select.selectedAsset,\n selectedAssetIndex: state.metadata.select.selectedAssetIndex,\n});\n\nconst mapDispatchToProps = dispatch => ({\n selectAsset: (asset, index) => dispatch(selectAsset(asset, index)),\n});\n\nconst WrappedAssetsList = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AssetsList);\n\nexport default WrappedAssetsList;\n","import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n assetsClearSearchButtonLabel: {\n id: 'assetsClearSearchButtonLabel',\n defaultMessage: 'Clear search',\n description: 'Label for a button that clears the search applied to a table.',\n },\n});\n\nexport default messages;\n","import { Button } from '@edx/paragon';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport messages from './displayMessages';\nimport WrappedMessage from '../../utils/i18n/formattedMessageWrapper';\n\n\nconst AssetsClearSearchButton = ({ clearSearch, courseDetails }) => (\n <Button\n buttonType=\"link\"\n onClick={() => clearSearch(courseDetails)}\n label={\n <WrappedMessage message={messages.assetsClearSearchButtonLabel} />\n }\n />\n);\n\nAssetsClearSearchButton.propTypes = {\n clearSearch: PropTypes.func.isRequired,\n courseDetails: PropTypes.shape({\n lang: PropTypes.string,\n url_name: PropTypes.string,\n name: PropTypes.string,\n display_course_number: PropTypes.string,\n num: PropTypes.string,\n org: PropTypes.string,\n id: PropTypes.string,\n revision: PropTypes.string,\n }).isRequired,\n};\n\nexport default AssetsClearSearchButton;\n","import { connect } from 'react-redux';\n\nimport AssetsClearSearchButton from '.';\nimport { searchUpdate } from '../../data/actions/assets';\n\nconst mapStateToProps = state => ({\n courseDetails: state.studioDetails.course,\n});\n\nconst mapDispatchToProps = dispatch => ({\n clearSearch: courseDetails => dispatch(searchUpdate('', courseDetails)),\n});\n\nconst WrappedAssetsClearSearchButton = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AssetsClearSearchButton);\n\nexport default WrappedAssetsClearSearchButton;\n","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"root\",\"SFE\":\"SFE\",\"m-0\":\"m-0\",\"mt-0\":\"mt-0\",\"my-0\":\"my-0\",\"mr-0\":\"mr-0\",\"mx-0\":\"mx-0\",\"mb-0\":\"mb-0\",\"ml-0\":\"ml-0\",\"m-1\":\"m-1\",\"mt-1\":\"mt-1\",\"my-1\":\"my-1\",\"mr-1\":\"mr-1\",\"mx-1\":\"mx-1\",\"mb-1\":\"mb-1\",\"ml-1\":\"ml-1\",\"m-2\":\"m-2\",\"mt-2\":\"mt-2\",\"my-2\":\"my-2\",\"mr-2\":\"mr-2\",\"mx-2\":\"mx-2\",\"mb-2\":\"mb-2\",\"ml-2\":\"ml-2\",\"m-3\":\"m-3\",\"mt-3\":\"mt-3\",\"my-3\":\"my-3\",\"mr-3\":\"mr-3\",\"mx-3\":\"mx-3\",\"mb-3\":\"mb-3\",\"ml-3\":\"ml-3\",\"m-4\":\"m-4\",\"mt-4\":\"mt-4\",\"my-4\":\"my-4\",\"mr-4\":\"mr-4\",\"mx-4\":\"mx-4\",\"mb-4\":\"mb-4\",\"paragon-fieldset\":\"paragon-fieldset\",\"ml-4\":\"ml-4\",\"m-5\":\"m-5\",\"mt-5\":\"mt-5\",\"my-5\":\"my-5\",\"mr-5\":\"mr-5\",\"mx-5\":\"mx-5\",\"mb-5\":\"mb-5\",\"ml-5\":\"ml-5\",\"p-0\":\"p-0\",\"pt-0\":\"pt-0\",\"py-0\":\"py-0\",\"pr-0\":\"pr-0\",\"px-0\":\"px-0\",\"pb-0\":\"pb-0\",\"pl-0\":\"pl-0\",\"p-1\":\"p-1\",\"pt-1\":\"pt-1\",\"py-1\":\"py-1\",\"pr-1\":\"pr-1\",\"px-1\":\"px-1\",\"pb-1\":\"pb-1\",\"pl-1\":\"pl-1\",\"p-2\":\"p-2\",\"pt-2\":\"pt-2\",\"py-2\":\"py-2\",\"pr-2\":\"pr-2\",\"px-2\":\"px-2\",\"pb-2\":\"pb-2\",\"pl-2\":\"pl-2\",\"p-3\":\"p-3\",\"image-preview-placeholder\":\"image-preview-placeholder\",\"pt-3\":\"pt-3\",\"py-3\":\"py-3\",\"or-fields\":\"or-fields\",\"pr-3\":\"pr-3\",\"px-3\":\"px-3\",\"pb-3\":\"pb-3\",\"pl-3\":\"pl-3\",\"p-4\":\"p-4\",\"pt-4\":\"pt-4\",\"py-4\":\"py-4\",\"pr-4\":\"pr-4\",\"px-4\":\"px-4\",\"pb-4\":\"pb-4\",\"pl-4\":\"pl-4\",\"p-5\":\"p-5\",\"pt-5\":\"pt-5\",\"py-5\":\"py-5\",\"pr-5\":\"pr-5\",\"px-5\":\"px-5\",\"pb-5\":\"pb-5\",\"pl-5\":\"pl-5\",\"m-n1\":\"m-n1\",\"mt-n1\":\"mt-n1\",\"my-n1\":\"my-n1\",\"mr-n1\":\"mr-n1\",\"mx-n1\":\"mx-n1\",\"mb-n1\":\"mb-n1\",\"ml-n1\":\"ml-n1\",\"m-n2\":\"m-n2\",\"mt-n2\":\"mt-n2\",\"my-n2\":\"my-n2\",\"mr-n2\":\"mr-n2\",\"mx-n2\":\"mx-n2\",\"mb-n2\":\"mb-n2\",\"ml-n2\":\"ml-n2\",\"m-n3\":\"m-n3\",\"mt-n3\":\"mt-n3\",\"my-n3\":\"my-n3\",\"mr-n3\":\"mr-n3\",\"mx-n3\":\"mx-n3\",\"mb-n3\":\"mb-n3\",\"ml-n3\":\"ml-n3\",\"m-n4\":\"m-n4\",\"mt-n4\":\"mt-n4\",\"my-n4\":\"my-n4\",\"mr-n4\":\"mr-n4\",\"mx-n4\":\"mx-n4\",\"mb-n4\":\"mb-n4\",\"ml-n4\":\"ml-n4\",\"m-n5\":\"m-n5\",\"mt-n5\":\"mt-n5\",\"my-n5\":\"my-n5\",\"mr-n5\":\"mr-n5\",\"mx-n5\":\"mx-n5\",\"mb-n5\":\"mb-n5\",\"ml-n5\":\"ml-n5\",\"m-auto\":\"m-auto\",\"mt-auto\":\"mt-auto\",\"my-auto\":\"my-auto\",\"mr-auto\":\"mr-auto\",\"mx-auto\":\"mx-auto\",\"mb-auto\":\"mb-auto\",\"ml-auto\":\"ml-auto\",\"m-sm-0\":\"m-sm-0\",\"mt-sm-0\":\"mt-sm-0\",\"my-sm-0\":\"my-sm-0\",\"mr-sm-0\":\"mr-sm-0\",\"mx-sm-0\":\"mx-sm-0\",\"mb-sm-0\":\"mb-sm-0\",\"ml-sm-0\":\"ml-sm-0\",\"m-sm-1\":\"m-sm-1\",\"mt-sm-1\":\"mt-sm-1\",\"my-sm-1\":\"my-sm-1\",\"mr-sm-1\":\"mr-sm-1\",\"mx-sm-1\":\"mx-sm-1\",\"mb-sm-1\":\"mb-sm-1\",\"ml-sm-1\":\"ml-sm-1\",\"m-sm-2\":\"m-sm-2\",\"mt-sm-2\":\"mt-sm-2\",\"my-sm-2\":\"my-sm-2\",\"mr-sm-2\":\"mr-sm-2\",\"mx-sm-2\":\"mx-sm-2\",\"mb-sm-2\":\"mb-sm-2\",\"ml-sm-2\":\"ml-sm-2\",\"m-sm-3\":\"m-sm-3\",\"mt-sm-3\":\"mt-sm-3\",\"my-sm-3\":\"my-sm-3\",\"mr-sm-3\":\"mr-sm-3\",\"mx-sm-3\":\"mx-sm-3\",\"mb-sm-3\":\"mb-sm-3\",\"ml-sm-3\":\"ml-sm-3\",\"m-sm-4\":\"m-sm-4\",\"mt-sm-4\":\"mt-sm-4\",\"my-sm-4\":\"my-sm-4\",\"mr-sm-4\":\"mr-sm-4\",\"mx-sm-4\":\"mx-sm-4\",\"mb-sm-4\":\"mb-sm-4\",\"ml-sm-4\":\"ml-sm-4\",\"m-sm-5\":\"m-sm-5\",\"mt-sm-5\":\"mt-sm-5\",\"my-sm-5\":\"my-sm-5\",\"mr-sm-5\":\"mr-sm-5\",\"mx-sm-5\":\"mx-sm-5\",\"mb-sm-5\":\"mb-sm-5\",\"ml-sm-5\":\"ml-sm-5\",\"p-sm-0\":\"p-sm-0\",\"pt-sm-0\":\"pt-sm-0\",\"py-sm-0\":\"py-sm-0\",\"pr-sm-0\":\"pr-sm-0\",\"px-sm-0\":\"px-sm-0\",\"pb-sm-0\":\"pb-sm-0\",\"pl-sm-0\":\"pl-sm-0\",\"p-sm-1\":\"p-sm-1\",\"pt-sm-1\":\"pt-sm-1\",\"py-sm-1\":\"py-sm-1\",\"pr-sm-1\":\"pr-sm-1\",\"px-sm-1\":\"px-sm-1\",\"pb-sm-1\":\"pb-sm-1\",\"pl-sm-1\":\"pl-sm-1\",\"p-sm-2\":\"p-sm-2\",\"pt-sm-2\":\"pt-sm-2\",\"py-sm-2\":\"py-sm-2\",\"pr-sm-2\":\"pr-sm-2\",\"px-sm-2\":\"px-sm-2\",\"pb-sm-2\":\"pb-sm-2\",\"pl-sm-2\":\"pl-sm-2\",\"p-sm-3\":\"p-sm-3\",\"pt-sm-3\":\"pt-sm-3\",\"py-sm-3\":\"py-sm-3\",\"pr-sm-3\":\"pr-sm-3\",\"px-sm-3\":\"px-sm-3\",\"pb-sm-3\":\"pb-sm-3\",\"pl-sm-3\":\"pl-sm-3\",\"p-sm-4\":\"p-sm-4\",\"pt-sm-4\":\"pt-sm-4\",\"py-sm-4\":\"py-sm-4\",\"pr-sm-4\":\"pr-sm-4\",\"px-sm-4\":\"px-sm-4\",\"pb-sm-4\":\"pb-sm-4\",\"pl-sm-4\":\"pl-sm-4\",\"p-sm-5\":\"p-sm-5\",\"pt-sm-5\":\"pt-sm-5\",\"py-sm-5\":\"py-sm-5\",\"pr-sm-5\":\"pr-sm-5\",\"px-sm-5\":\"px-sm-5\",\"pb-sm-5\":\"pb-sm-5\",\"pl-sm-5\":\"pl-sm-5\",\"m-sm-n1\":\"m-sm-n1\",\"mt-sm-n1\":\"mt-sm-n1\",\"my-sm-n1\":\"my-sm-n1\",\"mr-sm-n1\":\"mr-sm-n1\",\"mx-sm-n1\":\"mx-sm-n1\",\"mb-sm-n1\":\"mb-sm-n1\",\"ml-sm-n1\":\"ml-sm-n1\",\"m-sm-n2\":\"m-sm-n2\",\"mt-sm-n2\":\"mt-sm-n2\",\"my-sm-n2\":\"my-sm-n2\",\"mr-sm-n2\":\"mr-sm-n2\",\"mx-sm-n2\":\"mx-sm-n2\",\"mb-sm-n2\":\"mb-sm-n2\",\"ml-sm-n2\":\"ml-sm-n2\",\"m-sm-n3\":\"m-sm-n3\",\"mt-sm-n3\":\"mt-sm-n3\",\"my-sm-n3\":\"my-sm-n3\",\"mr-sm-n3\":\"mr-sm-n3\",\"mx-sm-n3\":\"mx-sm-n3\",\"mb-sm-n3\":\"mb-sm-n3\",\"ml-sm-n3\":\"ml-sm-n3\",\"m-sm-n4\":\"m-sm-n4\",\"mt-sm-n4\":\"mt-sm-n4\",\"my-sm-n4\":\"my-sm-n4\",\"mr-sm-n4\":\"mr-sm-n4\",\"mx-sm-n4\":\"mx-sm-n4\",\"mb-sm-n4\":\"mb-sm-n4\",\"ml-sm-n4\":\"ml-sm-n4\",\"m-sm-n5\":\"m-sm-n5\",\"mt-sm-n5\":\"mt-sm-n5\",\"my-sm-n5\":\"my-sm-n5\",\"mr-sm-n5\":\"mr-sm-n5\",\"mx-sm-n5\":\"mx-sm-n5\",\"mb-sm-n5\":\"mb-sm-n5\",\"ml-sm-n5\":\"ml-sm-n5\",\"m-sm-auto\":\"m-sm-auto\",\"mt-sm-auto\":\"mt-sm-auto\",\"my-sm-auto\":\"my-sm-auto\",\"mr-sm-auto\":\"mr-sm-auto\",\"mx-sm-auto\":\"mx-sm-auto\",\"mb-sm-auto\":\"mb-sm-auto\",\"ml-sm-auto\":\"ml-sm-auto\",\"m-md-0\":\"m-md-0\",\"mt-md-0\":\"mt-md-0\",\"my-md-0\":\"my-md-0\",\"mr-md-0\":\"mr-md-0\",\"mx-md-0\":\"mx-md-0\",\"mb-md-0\":\"mb-md-0\",\"ml-md-0\":\"ml-md-0\",\"m-md-1\":\"m-md-1\",\"mt-md-1\":\"mt-md-1\",\"my-md-1\":\"my-md-1\",\"mr-md-1\":\"mr-md-1\",\"mx-md-1\":\"mx-md-1\",\"mb-md-1\":\"mb-md-1\",\"ml-md-1\":\"ml-md-1\",\"m-md-2\":\"m-md-2\",\"mt-md-2\":\"mt-md-2\",\"my-md-2\":\"my-md-2\",\"mr-md-2\":\"mr-md-2\",\"mx-md-2\":\"mx-md-2\",\"mb-md-2\":\"mb-md-2\",\"ml-md-2\":\"ml-md-2\",\"m-md-3\":\"m-md-3\",\"mt-md-3\":\"mt-md-3\",\"my-md-3\":\"my-md-3\",\"mr-md-3\":\"mr-md-3\",\"mx-md-3\":\"mx-md-3\",\"mb-md-3\":\"mb-md-3\",\"ml-md-3\":\"ml-md-3\",\"m-md-4\":\"m-md-4\",\"mt-md-4\":\"mt-md-4\",\"my-md-4\":\"my-md-4\",\"mr-md-4\":\"mr-md-4\",\"mx-md-4\":\"mx-md-4\",\"mb-md-4\":\"mb-md-4\",\"ml-md-4\":\"ml-md-4\",\"m-md-5\":\"m-md-5\",\"mt-md-5\":\"mt-md-5\",\"my-md-5\":\"my-md-5\",\"mr-md-5\":\"mr-md-5\",\"mx-md-5\":\"mx-md-5\",\"mb-md-5\":\"mb-md-5\",\"ml-md-5\":\"ml-md-5\",\"p-md-0\":\"p-md-0\",\"pt-md-0\":\"pt-md-0\",\"py-md-0\":\"py-md-0\",\"pr-md-0\":\"pr-md-0\",\"px-md-0\":\"px-md-0\",\"pb-md-0\":\"pb-md-0\",\"pl-md-0\":\"pl-md-0\",\"p-md-1\":\"p-md-1\",\"pt-md-1\":\"pt-md-1\",\"py-md-1\":\"py-md-1\",\"pr-md-1\":\"pr-md-1\",\"px-md-1\":\"px-md-1\",\"pb-md-1\":\"pb-md-1\",\"pl-md-1\":\"pl-md-1\",\"p-md-2\":\"p-md-2\",\"pt-md-2\":\"pt-md-2\",\"py-md-2\":\"py-md-2\",\"pr-md-2\":\"pr-md-2\",\"px-md-2\":\"px-md-2\",\"pb-md-2\":\"pb-md-2\",\"pl-md-2\":\"pl-md-2\",\"p-md-3\":\"p-md-3\",\"pt-md-3\":\"pt-md-3\",\"py-md-3\":\"py-md-3\",\"pr-md-3\":\"pr-md-3\",\"px-md-3\":\"px-md-3\",\"pb-md-3\":\"pb-md-3\",\"pl-md-3\":\"pl-md-3\",\"p-md-4\":\"p-md-4\",\"pt-md-4\":\"pt-md-4\",\"py-md-4\":\"py-md-4\",\"pr-md-4\":\"pr-md-4\",\"px-md-4\":\"px-md-4\",\"pb-md-4\":\"pb-md-4\",\"pl-md-4\":\"pl-md-4\",\"p-md-5\":\"p-md-5\",\"pt-md-5\":\"pt-md-5\",\"py-md-5\":\"py-md-5\",\"pr-md-5\":\"pr-md-5\",\"px-md-5\":\"px-md-5\",\"pb-md-5\":\"pb-md-5\",\"pl-md-5\":\"pl-md-5\",\"m-md-n1\":\"m-md-n1\",\"mt-md-n1\":\"mt-md-n1\",\"my-md-n1\":\"my-md-n1\",\"mr-md-n1\":\"mr-md-n1\",\"mx-md-n1\":\"mx-md-n1\",\"mb-md-n1\":\"mb-md-n1\",\"ml-md-n1\":\"ml-md-n1\",\"m-md-n2\":\"m-md-n2\",\"mt-md-n2\":\"mt-md-n2\",\"my-md-n2\":\"my-md-n2\",\"mr-md-n2\":\"mr-md-n2\",\"mx-md-n2\":\"mx-md-n2\",\"mb-md-n2\":\"mb-md-n2\",\"ml-md-n2\":\"ml-md-n2\",\"m-md-n3\":\"m-md-n3\",\"mt-md-n3\":\"mt-md-n3\",\"my-md-n3\":\"my-md-n3\",\"mr-md-n3\":\"mr-md-n3\",\"mx-md-n3\":\"mx-md-n3\",\"mb-md-n3\":\"mb-md-n3\",\"ml-md-n3\":\"ml-md-n3\",\"m-md-n4\":\"m-md-n4\",\"mt-md-n4\":\"mt-md-n4\",\"my-md-n4\":\"my-md-n4\",\"mr-md-n4\":\"mr-md-n4\",\"mx-md-n4\":\"mx-md-n4\",\"mb-md-n4\":\"mb-md-n4\",\"ml-md-n4\":\"ml-md-n4\",\"m-md-n5\":\"m-md-n5\",\"mt-md-n5\":\"mt-md-n5\",\"my-md-n5\":\"my-md-n5\",\"mr-md-n5\":\"mr-md-n5\",\"mx-md-n5\":\"mx-md-n5\",\"mb-md-n5\":\"mb-md-n5\",\"ml-md-n5\":\"ml-md-n5\",\"m-md-auto\":\"m-md-auto\",\"mt-md-auto\":\"mt-md-auto\",\"my-md-auto\":\"my-md-auto\",\"mr-md-auto\":\"mr-md-auto\",\"mx-md-auto\":\"mx-md-auto\",\"mb-md-auto\":\"mb-md-auto\",\"ml-md-auto\":\"ml-md-auto\",\"m-lg-0\":\"m-lg-0\",\"mt-lg-0\":\"mt-lg-0\",\"my-lg-0\":\"my-lg-0\",\"mr-lg-0\":\"mr-lg-0\",\"mx-lg-0\":\"mx-lg-0\",\"mb-lg-0\":\"mb-lg-0\",\"ml-lg-0\":\"ml-lg-0\",\"m-lg-1\":\"m-lg-1\",\"mt-lg-1\":\"mt-lg-1\",\"my-lg-1\":\"my-lg-1\",\"mr-lg-1\":\"mr-lg-1\",\"mx-lg-1\":\"mx-lg-1\",\"mb-lg-1\":\"mb-lg-1\",\"ml-lg-1\":\"ml-lg-1\",\"m-lg-2\":\"m-lg-2\",\"mt-lg-2\":\"mt-lg-2\",\"my-lg-2\":\"my-lg-2\",\"mr-lg-2\":\"mr-lg-2\",\"mx-lg-2\":\"mx-lg-2\",\"mb-lg-2\":\"mb-lg-2\",\"ml-lg-2\":\"ml-lg-2\",\"m-lg-3\":\"m-lg-3\",\"mt-lg-3\":\"mt-lg-3\",\"my-lg-3\":\"my-lg-3\",\"mr-lg-3\":\"mr-lg-3\",\"mx-lg-3\":\"mx-lg-3\",\"mb-lg-3\":\"mb-lg-3\",\"ml-lg-3\":\"ml-lg-3\",\"m-lg-4\":\"m-lg-4\",\"mt-lg-4\":\"mt-lg-4\",\"my-lg-4\":\"my-lg-4\",\"mr-lg-4\":\"mr-lg-4\",\"mx-lg-4\":\"mx-lg-4\",\"mb-lg-4\":\"mb-lg-4\",\"ml-lg-4\":\"ml-lg-4\",\"m-lg-5\":\"m-lg-5\",\"mt-lg-5\":\"mt-lg-5\",\"my-lg-5\":\"my-lg-5\",\"mr-lg-5\":\"mr-lg-5\",\"mx-lg-5\":\"mx-lg-5\",\"mb-lg-5\":\"mb-lg-5\",\"ml-lg-5\":\"ml-lg-5\",\"p-lg-0\":\"p-lg-0\",\"pt-lg-0\":\"pt-lg-0\",\"py-lg-0\":\"py-lg-0\",\"pr-lg-0\":\"pr-lg-0\",\"px-lg-0\":\"px-lg-0\",\"pb-lg-0\":\"pb-lg-0\",\"pl-lg-0\":\"pl-lg-0\",\"p-lg-1\":\"p-lg-1\",\"pt-lg-1\":\"pt-lg-1\",\"py-lg-1\":\"py-lg-1\",\"pr-lg-1\":\"pr-lg-1\",\"px-lg-1\":\"px-lg-1\",\"pb-lg-1\":\"pb-lg-1\",\"pl-lg-1\":\"pl-lg-1\",\"p-lg-2\":\"p-lg-2\",\"pt-lg-2\":\"pt-lg-2\",\"py-lg-2\":\"py-lg-2\",\"pr-lg-2\":\"pr-lg-2\",\"px-lg-2\":\"px-lg-2\",\"pb-lg-2\":\"pb-lg-2\",\"pl-lg-2\":\"pl-lg-2\",\"p-lg-3\":\"p-lg-3\",\"pt-lg-3\":\"pt-lg-3\",\"py-lg-3\":\"py-lg-3\",\"pr-lg-3\":\"pr-lg-3\",\"px-lg-3\":\"px-lg-3\",\"pb-lg-3\":\"pb-lg-3\",\"pl-lg-3\":\"pl-lg-3\",\"p-lg-4\":\"p-lg-4\",\"pt-lg-4\":\"pt-lg-4\",\"py-lg-4\":\"py-lg-4\",\"pr-lg-4\":\"pr-lg-4\",\"px-lg-4\":\"px-lg-4\",\"pb-lg-4\":\"pb-lg-4\",\"pl-lg-4\":\"pl-lg-4\",\"p-lg-5\":\"p-lg-5\",\"pt-lg-5\":\"pt-lg-5\",\"py-lg-5\":\"py-lg-5\",\"pr-lg-5\":\"pr-lg-5\",\"px-lg-5\":\"px-lg-5\",\"pb-lg-5\":\"pb-lg-5\",\"pl-lg-5\":\"pl-lg-5\",\"m-lg-n1\":\"m-lg-n1\",\"mt-lg-n1\":\"mt-lg-n1\",\"my-lg-n1\":\"my-lg-n1\",\"mr-lg-n1\":\"mr-lg-n1\",\"mx-lg-n1\":\"mx-lg-n1\",\"mb-lg-n1\":\"mb-lg-n1\",\"ml-lg-n1\":\"ml-lg-n1\",\"m-lg-n2\":\"m-lg-n2\",\"mt-lg-n2\":\"mt-lg-n2\",\"my-lg-n2\":\"my-lg-n2\",\"mr-lg-n2\":\"mr-lg-n2\",\"mx-lg-n2\":\"mx-lg-n2\",\"mb-lg-n2\":\"mb-lg-n2\",\"ml-lg-n2\":\"ml-lg-n2\",\"m-lg-n3\":\"m-lg-n3\",\"mt-lg-n3\":\"mt-lg-n3\",\"my-lg-n3\":\"my-lg-n3\",\"mr-lg-n3\":\"mr-lg-n3\",\"mx-lg-n3\":\"mx-lg-n3\",\"mb-lg-n3\":\"mb-lg-n3\",\"ml-lg-n3\":\"ml-lg-n3\",\"m-lg-n4\":\"m-lg-n4\",\"mt-lg-n4\":\"mt-lg-n4\",\"my-lg-n4\":\"my-lg-n4\",\"mr-lg-n4\":\"mr-lg-n4\",\"mx-lg-n4\":\"mx-lg-n4\",\"mb-lg-n4\":\"mb-lg-n4\",\"ml-lg-n4\":\"ml-lg-n4\",\"m-lg-n5\":\"m-lg-n5\",\"mt-lg-n5\":\"mt-lg-n5\",\"my-lg-n5\":\"my-lg-n5\",\"mr-lg-n5\":\"mr-lg-n5\",\"mx-lg-n5\":\"mx-lg-n5\",\"mb-lg-n5\":\"mb-lg-n5\",\"ml-lg-n5\":\"ml-lg-n5\",\"m-lg-auto\":\"m-lg-auto\",\"mt-lg-auto\":\"mt-lg-auto\",\"my-lg-auto\":\"my-lg-auto\",\"mr-lg-auto\":\"mr-lg-auto\",\"mx-lg-auto\":\"mx-lg-auto\",\"mb-lg-auto\":\"mb-lg-auto\",\"ml-lg-auto\":\"ml-lg-auto\",\"m-xl-0\":\"m-xl-0\",\"mt-xl-0\":\"mt-xl-0\",\"my-xl-0\":\"my-xl-0\",\"mr-xl-0\":\"mr-xl-0\",\"mx-xl-0\":\"mx-xl-0\",\"mb-xl-0\":\"mb-xl-0\",\"ml-xl-0\":\"ml-xl-0\",\"m-xl-1\":\"m-xl-1\",\"mt-xl-1\":\"mt-xl-1\",\"my-xl-1\":\"my-xl-1\",\"mr-xl-1\":\"mr-xl-1\",\"mx-xl-1\":\"mx-xl-1\",\"mb-xl-1\":\"mb-xl-1\",\"ml-xl-1\":\"ml-xl-1\",\"m-xl-2\":\"m-xl-2\",\"mt-xl-2\":\"mt-xl-2\",\"my-xl-2\":\"my-xl-2\",\"mr-xl-2\":\"mr-xl-2\",\"mx-xl-2\":\"mx-xl-2\",\"mb-xl-2\":\"mb-xl-2\",\"ml-xl-2\":\"ml-xl-2\",\"m-xl-3\":\"m-xl-3\",\"mt-xl-3\":\"mt-xl-3\",\"my-xl-3\":\"my-xl-3\",\"mr-xl-3\":\"mr-xl-3\",\"mx-xl-3\":\"mx-xl-3\",\"mb-xl-3\":\"mb-xl-3\",\"ml-xl-3\":\"ml-xl-3\",\"m-xl-4\":\"m-xl-4\",\"mt-xl-4\":\"mt-xl-4\",\"my-xl-4\":\"my-xl-4\",\"mr-xl-4\":\"mr-xl-4\",\"mx-xl-4\":\"mx-xl-4\",\"mb-xl-4\":\"mb-xl-4\",\"ml-xl-4\":\"ml-xl-4\",\"m-xl-5\":\"m-xl-5\",\"mt-xl-5\":\"mt-xl-5\",\"my-xl-5\":\"my-xl-5\",\"mr-xl-5\":\"mr-xl-5\",\"mx-xl-5\":\"mx-xl-5\",\"mb-xl-5\":\"mb-xl-5\",\"ml-xl-5\":\"ml-xl-5\",\"p-xl-0\":\"p-xl-0\",\"pt-xl-0\":\"pt-xl-0\",\"py-xl-0\":\"py-xl-0\",\"pr-xl-0\":\"pr-xl-0\",\"px-xl-0\":\"px-xl-0\",\"pb-xl-0\":\"pb-xl-0\",\"pl-xl-0\":\"pl-xl-0\",\"p-xl-1\":\"p-xl-1\",\"pt-xl-1\":\"pt-xl-1\",\"py-xl-1\":\"py-xl-1\",\"pr-xl-1\":\"pr-xl-1\",\"px-xl-1\":\"px-xl-1\",\"pb-xl-1\":\"pb-xl-1\",\"pl-xl-1\":\"pl-xl-1\",\"p-xl-2\":\"p-xl-2\",\"pt-xl-2\":\"pt-xl-2\",\"py-xl-2\":\"py-xl-2\",\"pr-xl-2\":\"pr-xl-2\",\"px-xl-2\":\"px-xl-2\",\"pb-xl-2\":\"pb-xl-2\",\"pl-xl-2\":\"pl-xl-2\",\"p-xl-3\":\"p-xl-3\",\"pt-xl-3\":\"pt-xl-3\",\"py-xl-3\":\"py-xl-3\",\"pr-xl-3\":\"pr-xl-3\",\"px-xl-3\":\"px-xl-3\",\"pb-xl-3\":\"pb-xl-3\",\"pl-xl-3\":\"pl-xl-3\",\"p-xl-4\":\"p-xl-4\",\"pt-xl-4\":\"pt-xl-4\",\"py-xl-4\":\"py-xl-4\",\"pr-xl-4\":\"pr-xl-4\",\"px-xl-4\":\"px-xl-4\",\"pb-xl-4\":\"pb-xl-4\",\"pl-xl-4\":\"pl-xl-4\",\"p-xl-5\":\"p-xl-5\",\"pt-xl-5\":\"pt-xl-5\",\"py-xl-5\":\"py-xl-5\",\"pr-xl-5\":\"pr-xl-5\",\"px-xl-5\":\"px-xl-5\",\"pb-xl-5\":\"pb-xl-5\",\"pl-xl-5\":\"pl-xl-5\",\"m-xl-n1\":\"m-xl-n1\",\"mt-xl-n1\":\"mt-xl-n1\",\"my-xl-n1\":\"my-xl-n1\",\"mr-xl-n1\":\"mr-xl-n1\",\"mx-xl-n1\":\"mx-xl-n1\",\"mb-xl-n1\":\"mb-xl-n1\",\"ml-xl-n1\":\"ml-xl-n1\",\"m-xl-n2\":\"m-xl-n2\",\"mt-xl-n2\":\"mt-xl-n2\",\"my-xl-n2\":\"my-xl-n2\",\"mr-xl-n2\":\"mr-xl-n2\",\"mx-xl-n2\":\"mx-xl-n2\",\"mb-xl-n2\":\"mb-xl-n2\",\"ml-xl-n2\":\"ml-xl-n2\",\"m-xl-n3\":\"m-xl-n3\",\"mt-xl-n3\":\"mt-xl-n3\",\"my-xl-n3\":\"my-xl-n3\",\"mr-xl-n3\":\"mr-xl-n3\",\"mx-xl-n3\":\"mx-xl-n3\",\"mb-xl-n3\":\"mb-xl-n3\",\"ml-xl-n3\":\"ml-xl-n3\",\"m-xl-n4\":\"m-xl-n4\",\"mt-xl-n4\":\"mt-xl-n4\",\"my-xl-n4\":\"my-xl-n4\",\"mr-xl-n4\":\"mr-xl-n4\",\"mx-xl-n4\":\"mx-xl-n4\",\"mb-xl-n4\":\"mb-xl-n4\",\"ml-xl-n4\":\"ml-xl-n4\",\"m-xl-n5\":\"m-xl-n5\",\"mt-xl-n5\":\"mt-xl-n5\",\"my-xl-n5\":\"my-xl-n5\",\"mr-xl-n5\":\"mr-xl-n5\",\"mx-xl-n5\":\"mx-xl-n5\",\"mb-xl-n5\":\"mb-xl-n5\",\"ml-xl-n5\":\"ml-xl-n5\",\"m-xl-auto\":\"m-xl-auto\",\"mt-xl-auto\":\"mt-xl-auto\",\"my-xl-auto\":\"my-xl-auto\",\"mr-xl-auto\":\"mr-xl-auto\",\"mx-xl-auto\":\"mx-xl-auto\",\"mb-xl-auto\":\"mb-xl-auto\",\"ml-xl-auto\":\"ml-xl-auto\",\"sr-only\":\"sr-only\",\"sr-only-focusable\":\"sr-only-focusable\",\"modal-body\":\"modal-body\",\"row\":\"row\",\"modal-dialog\":\"modal-dialog\",\"form-control\":\"form-control\",\"is-invalid\":\"is-invalid\",\"is-invalid-nodanger\":\"is-invalid-nodanger\",\"image-preview-container\":\"image-preview-container\",\"image-preview-image\":\"image-preview-image\",\"image-dimensions-x\":\"image-dimensions-x\",\"invalid-feedback\":\"invalid-feedback\",\"image-fields\":\"image-fields\",\"form-group\":\"form-group\",\"form-text\":\"form-text\",\"dimensions-row\":\"dimensions-row\",\"dimension-field\":\"dimension-field\",\"dimensions-separator\":\"dimensions-separator\",\"form-check\":\"form-check\",\"form-check-label\":\"form-check-label\"};","// Utility method for replacing a portion of a string.\n// An ES6 copy of the same function in edx-platform:\n// https://github.com/edx/edx-platform/blob/d14ec65912ef3fb5bb3284b81ccdf60d59b34c87/common/static/js/src/utility.js#L21-L39\nexport default (content, from, to) => {\n if (from === null || to === null) {\n return content;\n }\n // replace only relative urls\n const replacer = (match) => {\n if (match === from) {\n return to;\n }\n return match;\n };\n // change all relative urls only which may be embedded inside other tags in content.\n // handle http and https\n // escape all regex interpretable chars\n const fromRe = from.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n // eslint-disable-next-line no-useless-escape\n const regex = new RegExp(`(https?://(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}([-a-zA-Z0-9@:%_\\+.~#?&//=]*))?${fromRe}`, 'g');\n return content.replace(regex, replacer);\n};\n","import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n editImageModalAssetsListLoadingSpinner: {\n id: 'editImageModalAssetsListLoadingSpinner',\n defaultMessage: 'Loading spinner',\n description: 'Description of a loading spinner image shown when files are loading.',\n },\n editImageModalAssetsListNoAssetsMessage: {\n id: 'editImageModalAssetsListNoAssetsMessage',\n defaultMessage: '0 images uploaded',\n description: 'Message displayed when a course has no images to display in the list.',\n },\n editImageModalAssetsListNoResultsMessage: {\n id: 'editImageModalAssetsListNoResultsMessage',\n defaultMessage: '0 images found',\n description: 'Message displayed in table when no image results are found.',\n },\n editImageModalCancelButton: {\n id: 'editImageModalCancelButton',\n defaultMessage: 'Cancel',\n description: 'Button text to close the modal',\n },\n editImageModalFormError: {\n id: 'editImageModalFormError',\n defaultMessage: 'Error',\n description: 'Screenreader-only text describing an error icon in a validation message',\n },\n editImageModalFormErrorMissingFields: {\n id: 'editImageModalFormErrorMissingFields',\n defaultMessage: 'Make sure to fill in all fields.',\n description: 'Error message to instruct user to fill in all fields',\n },\n editImageModalFormValidImageDescription: {\n id: 'editImageModalFormValidImageDescription',\n defaultMessage: 'Add an image description or specify that the image is decorative only.',\n description: 'Error message for when an invalid image description is entered into the form',\n },\n editImageModalFormValidImageDimensions: {\n id: 'editImageModalFormValidImageDimensions',\n defaultMessage: 'Image dimensions must be positive numbers.',\n description: 'Error message displayed when invalid image dimension values are entered into a form',\n },\n editImageModalImageDescriptionDescription: {\n id: 'editImageModalImageDescriptionDescription',\n defaultMessage: 'Alternative text for users who cannot view the image, such as \"The sky with clouds\".',\n description: 'Description for the text input box for an image\\'s description',\n },\n editImageModalImageDescriptionLabel: {\n id: 'editImageModalImageDescriptionLabel',\n defaultMessage: 'Image Description',\n description: 'Label for the text input box for an image\\'s description',\n },\n editImageModalImageDecorativeDescription: {\n id: 'editImageModalImageDecorativeDescription',\n defaultMessage: 'If this image is purely decorative, it does not require alternative text.',\n description: 'Help text shown under the image description when alternative text is optional',\n },\n editImageModalImageDescriptionLegend: {\n id: 'editImageModalImageDescriptionLegend',\n defaultMessage: 'Image Description',\n description: 'Label for input section for an image\\'s description',\n },\n editImageModalDimensionsLegend: {\n id: 'editImageModalDimensionsLegend',\n defaultMessage: 'Image Dimensions',\n description: 'Label for the input section for an image\\'s dimensions',\n },\n editImageModalImageHeightLabel: {\n id: 'editImageModalImageHeight',\n defaultMessage: 'Height',\n description: 'Label for the text input box for an image\\'s height,',\n },\n editImageModalImagePreviewText: {\n id: 'editImageModalImagePreviewText',\n defaultMessage: 'Image Preview',\n description: 'Label for the image preview area',\n },\n editImageModalInsertImageButton: {\n id: 'editImageModalInsertImageButton',\n defaultMessage: 'Save',\n description: 'Text inside the Save button at the bottom of the modal',\n },\n editImageModalLearnMore: {\n id: 'editImageModalLearnMore',\n defaultMessage: 'Learn more.',\n description: 'Label for a link to additional documentation',\n },\n editImageModalLockImageProportionsCheckboxLabel: {\n id: 'editImageModalLockImageProportionsCheckboxLabel',\n defaultMessage: 'Lock proportions',\n description: 'Label for a checkbox that constrains an image\\'s proportions to its original aspect ratio',\n },\n editImageModalImageWidthLabel: {\n id: 'editImageModalImageWidth',\n defaultMessage: 'Width',\n description: 'Label for the text input box for an image\\'s width,',\n },\n editImageModalInsertTitle: {\n id: 'editImageModalInsertTitle',\n defaultMessage: 'Add an Image',\n description: 'Title of the modal used for adding an image',\n },\n editImageModalInsertHeader: {\n id: 'editImageModalInsertHeader',\n defaultMessage: 'Select a previously uploaded image',\n description: 'Header of the modal used for adding an image',\n },\n editImageModalEditTitle: {\n id: 'editImageModalEditTitle',\n defaultMessage: 'Edit Image Settings',\n description: 'Title of the modal used for editing image settings',\n },\n editImageModalNextPageButton: {\n id: 'editImageModalNextPageButton',\n defaultMessage: 'Next',\n description: 'Button text to go to the next screen',\n },\n editImageModalPreviousPageButton: {\n id: 'editImageModalPreviousPageButton',\n defaultMessage: 'Back',\n description: 'Button text to go to the previous screen',\n },\n editImageModalInvalidFileType: {\n id: 'editImageModalInvalidFileType',\n defaultMessage: 'Files must be images, such as .jpg, .png, and .tiff files. No files were uploaded.',\n description: 'Error message shown when an invalid file is selected for upload',\n },\n editImageModalTooManyFiles: {\n id: 'editImageModalTooManyFiles',\n defaultMessage: 'Only one file may be uploaded at a time. No files were uploaded.',\n description: 'Error message shown when too many files are selected for upload',\n },\n});\n\nexport default messages;\n","import { Button, CheckBox, Fieldset, InputText, Modal, StatusAlert, Variant } from '@edx/paragon';\nimport classNames from 'classnames';\nimport { connect } from 'react-redux';\nimport FontAwesomeStyles from 'font-awesome/css/font-awesome.min.css';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { assetActions } from '../../data/constants/actionTypes';\nimport AssetsResultsCount from '../AssetsResultsCount/index';\nimport { getPageType, pageTypes } from '../../utils/getAssetsPageType';\nimport messages from './displayMessages';\nimport rewriteStaticLinks from '../../utils/rewriteStaticLinks';\nimport styles from './EditImageModal.scss';\nimport WrappedAssetsClearSearchButton from '../AssetsClearSearchButton/container';\nimport WrappedAssetsDropZone from '../AssetsDropZone/container';\nimport WrappedAssetsList from '../AssetsList/container';\nimport WrappedAssetsSearch from '../AssetsSearch/container';\nimport WrappedMessage from '../../utils/i18n/formattedMessageWrapper';\n\n\n// Create an AssetsResultsCount that is not aware of the Images filter.\n// This is so that the message will initially say \"out of N total files\" instead of \"out of N\n// possible matches\".\nconst WrappedAssetsResultsCount = connect((state) => {\n const { Images, ...typesWithoutImages } = state.metadata.filters.assetTypes;\n const filtersWithoutImages = { ...state.metadata.filters, assetTypes: typesWithoutImages };\n return {\n filtersMetadata: filtersWithoutImages,\n paginationMetadata: state.metadata.pagination,\n searchMetadata: state.metadata.search,\n };\n})(AssetsResultsCount);\n\nconst imageDescriptionID = 'imageDescription';\nconst imageDescriptionFieldsetID = 'imageDescriptionFieldset';\nconst imageDimensionsFieldsetID = 'imageDimensionsFieldset';\nconst imageHeightID = 'imageHeight';\nconst imageWidthID = 'imageWidth';\nconst modalWrapperID = 'modalWrapper';\n\nconst initialEditImageModalState = {\n areImageDimensionsValid: true,\n areProportionsLocked: true,\n assetsPageType: pageTypes.SKELETON,\n baseAssetURL: '',\n currentUploadErrorMessage: null,\n currentValidationMessages: {},\n displayLoadingSpinner: false,\n imageDescription: '',\n imageDimensions: {},\n imageSource: '',\n imageStyle: '',\n isImageDescriptionValid: true,\n isImageLoaded: false,\n isImageLoading: false,\n isImageDimensionsValid: true,\n isModalOpen: false,\n isStatusAlertOpen: false,\n pageNumber: 1,\n editingExisting: false,\n shouldShowPreviousButton: false,\n};\n\nexport default class EditImageModal extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { ...initialEditImageModalState };\n\n this.handleOpenModal = this.handleOpenModal.bind(this);\n this.onConstrainProportionsClick = this.onConstrainProportionsClick.bind(this);\n this.onEditImageModalClose = this.onEditImageModalClose.bind(this);\n this.onImageDescriptionBlur = this.onImageDescriptionBlur.bind(this);\n this.onImageDimensionBlur = this.onImageDimensionBlur.bind(this);\n this.onInsertImageButtonClick = this.onInsertImageButtonClick.bind(this);\n this.onImageLoad = this.onImageLoad.bind(this);\n this.onNextPageButtonClick = this.onNextPageButtonClick.bind(this);\n this.onPreviousPageButtonClick = this.onPreviousPageButtonClick.bind(this);\n this.onStatusAlertClose = this.onStatusAlertClose.bind(this);\n // Create ref setters to minimize anonymous inline functions\n this.setDropZoneButtonRef = this.setDropZoneButtonRef.bind(this);\n this.setImageDescriptionInputRef = this.setImageDescriptionInputRef.bind(this);\n this.setImageFormRef = this.setImageFormRef.bind(this);\n this.setImageRef = this.setImageRef.bind(this);\n this.setModalWrapperRef = this.setModalWrapperRef.bind(this);\n this.setPreviousButtonRef = this.setPreviousButtonRef.bind(this);\n this.setStatusAlertRef = this.setStatusAlertRef.bind(this);\n\n this.dropZoneButtonRef = null;\n this.imageDescriptionInputRef = null;\n this.imageFormRef = null;\n this.imageRef = null;\n this.previousPageButtonRef = null;\n this.modalWrapperRef = null;\n this.statusAlertRef = null;\n }\n\n componentDidMount() {\n this.modalWrapperRef.addEventListener('openModal', this.handleOpenModal);\n }\n\n componentWillReceiveProps(nextProps) {\n const newState = {};\n switch (nextProps.assetsStatus.type) {\n case assetActions.upload.UPLOAD_ASSET_SUCCESS: {\n const uploadedAsset = nextProps.assetsStatus.response.asset;\n nextProps.selectAsset(uploadedAsset, 0);\n nextProps.clearAssetsStatus();\n newState.currentUploadErrorMessage = null;\n newState.isStatusAlertOpen = false;\n // Stay on page 1 - the form fields are now shown on the same page\n newState.pageNumber = 1;\n break;\n }\n case assetActions.upload.UPLOAD_EXCEED_MAX_COUNT_ERROR: {\n newState.currentUploadErrorMessage = messages.editImageModalTooManyFiles;\n newState.isStatusAlertOpen = true;\n break;\n }\n case assetActions.upload.UPLOAD_INVALID_FILE_TYPE_ERROR: {\n newState.currentUploadErrorMessage = messages.editImageModalInvalidFileType;\n newState.isStatusAlertOpen = true;\n break;\n }\n default: {\n if (nextProps.selectedAsset.portable_url &&\n nextProps.selectedAsset.id !== this.props.selectedAsset.id) {\n newState.imageSource = nextProps.selectedAsset.portable_url;\n }\n break;\n }\n }\n\n if (nextProps.assetsStatus.type !== assetActions.upload.UPLOAD_ASSET_SUCCESS &&\n !nextProps.selectedAsset.id && this.state.imageSource && nextProps.assetsList.length) {\n const source = this.state.imageSource;\n const match = nextProps.assetsList.find(asset => (\n asset.id && (\n asset.portable_url === source || asset.url === source || asset.external_url === source\n )\n ));\n if (match) {\n nextProps.selectAsset(match);\n }\n }\n\n this.setState(state => ({\n ...newState,\n assetsPageType: getPageType(nextProps, state.assetsPageType),\n }));\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.didStatusAlertOpen(prevState);\n this.wasNextButtonClicked(prevState);\n this.wasPreviousButtonClicked(prevState);\n }\n\n componentWillUnmount() {\n this.modalWrapperRef.removeEventListener('openModal', this.handleOpenModal);\n }\n\n onConstrainProportionsClick = (checked) => {\n this.setState({\n areProportionsLocked: checked,\n });\n }\n\n onEditImageModalClose = () => {\n this.setState({\n isModalOpen: false,\n });\n\n this.props.clearSearch(this.props.courseDetails);\n this.resetImageSelection();\n this.modalWrapperRef.dispatchEvent(new CustomEvent('closeModal',\n {\n bubbles: true,\n },\n ));\n }\n\n onImageLoad = (event) => {\n const img = event.target;\n\n this.setState({\n displayLoadingSpinner: false,\n imageDimensions: {\n width: img.naturalWidth,\n height: img.naturalHeight,\n aspectRatio: img.naturalWidth / img.naturalHeight,\n },\n isImageLoaded: true,\n isImageLoading: false,\n });\n }\n\n onImageError = () => {\n this.setState({\n displayLoadingSpinner: false,\n imageDimensions: {},\n isImageLoading: false,\n isImageLoaded: false,\n });\n }\n\n onImageDescriptionBlur = (imageDescription) => {\n this.setState({\n imageDescription,\n });\n }\n\n onImageDimensionBlur = (dimensionType) => {\n let aspectRatio;\n let newDimensionType;\n\n if (dimensionType === 'height') {\n aspectRatio = this.state.imageDimensions.aspectRatio;\n newDimensionType = 'width';\n } else if (dimensionType === 'width') {\n aspectRatio = (1 / this.state.imageDimensions.aspectRatio);\n newDimensionType = 'height';\n } else {\n throw new Error(`Unknown dimension type ${dimensionType}.`);\n }\n\n return (dimensionValue) => {\n const newImageDimensions = { ...this.state.imageDimensions };\n const parsedDimensionValue = parseInt(dimensionValue, 10);\n\n newImageDimensions[dimensionType] = isNaN(parsedDimensionValue) ? '' : parsedDimensionValue;\n\n if (this.state.areProportionsLocked) {\n const newDimensionValue = Math.round(parsedDimensionValue * aspectRatio);\n newImageDimensions[newDimensionType] = isNaN(newDimensionValue) ? '' : newDimensionValue;\n }\n this.setState({ imageDimensions: newImageDimensions });\n };\n }\n\n onNextPageButtonClick = () => {\n if (this.isAssetSelected()) {\n this.setState({\n currentUploadErrorMessage: null,\n isStatusAlertOpen: false,\n pageNumber: 2,\n });\n this.props.clearAssetsStatus();\n }\n }\n\n onPreviousPageButtonClick = () => {\n this.setState({\n currentValidationMessages: {},\n isImageDescriptionValid: true,\n isImageDimensionsValid: true,\n isStatusAlertOpen: false,\n pageNumber: 1,\n });\n }\n\n onInsertImageButtonClick = () => {\n const isValidImageDescription = this.validateImageDescription();\n const isValidImageDimensions = this.validateImageDimensions();\n const isValidFormContent = isValidImageDescription.isValid && isValidImageDimensions.isValid;\n\n const currentValidationMessages = {};\n\n if (!isValidImageDescription.isValid) {\n currentValidationMessages[imageDescriptionID] = isValidImageDescription.validationMessage;\n }\n\n if (!isValidImageDimensions.isValid) {\n currentValidationMessages[imageWidthID] = isValidImageDimensions.validationMessage;\n }\n\n this.setState({\n isStatusAlertOpen: !isValidFormContent,\n isImageDescriptionValid: isValidImageDescription.isValid,\n areImageDimensionsValid: isValidImageDimensions.isValid,\n currentValidationMessages,\n });\n\n if (isValidFormContent) {\n // Use the form ref if available, otherwise dispatch from modal wrapper\n const targetElement = this.imageFormRef || this.modalWrapperRef;\n const altText = this.state.imageDescription || '';\n targetElement.dispatchEvent(new CustomEvent('submitForm',\n {\n bubbles: true,\n detail: {\n height: this.getDimensionStateOrNatural('height'),\n width: this.getDimensionStateOrNatural('width'),\n src: this.state.imageSource,\n alt: altText,\n style: this.state.imageStyle,\n },\n },\n ));\n\n this.setState({\n isModalOpen: false,\n });\n\n this.resetImageSelection();\n } else {\n if (this.statusAlertRef) {\n this.statusAlertRef.focus();\n }\n }\n }\n\n onStatusAlertClose = () => {\n if (this.state.pageNumber === 1) {\n this.props.clearAssetsStatus();\n this.dropZoneButtonRef.focus();\n } else if (this.state.pageNumber === 2) {\n if (this.state.shouldShowPreviousButton) {\n this.previousPageButtonRef.focus();\n } else {\n this.imageDescriptionInputRef.focus();\n }\n }\n\n this.setState({\n isStatusAlertOpen: false,\n });\n }\n\n setDropZoneButtonRef(ref) {\n this.dropZoneButtonRef = ref;\n }\n\n setImageDescriptionInputRef(ref) {\n this.imageDescriptionInputRef = ref;\n }\n\n setImageFormRef(ref) {\n this.imageFormRef = ref;\n }\n\n setImageRef(ref) {\n this.imageRef = ref;\n }\n\n setModalWrapperRef(ref) {\n this.modalWrapperRef = ref;\n }\n\n setPreviousButtonRef(ref) {\n this.previousPageButtonRef = ref;\n }\n\n setStatusAlertRef(ref) {\n this.statusAlertRef = ref;\n }\n\n getNaturalDimension = (dimensionType) => {\n if (this.imageRef) {\n // if value is unparsable (NaN), reset to natural value\n const naturalDimensions = {\n width: this.imageRef.naturalWidth,\n height: this.imageRef.naturalHeight,\n };\n return naturalDimensions[dimensionType];\n }\n return null;\n }\n\n getDimensionStateOrNatural = (dimensionType) => {\n if (!this.state.imageDimensions[dimensionType]) {\n return this.getNaturalDimension(dimensionType);\n }\n return this.state.imageDimensions[dimensionType];\n }\n\n getImageDescriptionInput = () => (\n <Fieldset\n legend={<WrappedMessage message={messages.editImageModalImageDescriptionLegend} />}\n id={imageDescriptionFieldsetID}\n invalidMessage={<WrappedMessage message={messages.editImageModalFormValidImageDescription} />}\n isValid={this.state.isImageDescriptionValid}\n variant={{\n status: Variant.status.DANGER,\n }}\n variantIconDescription={<WrappedMessage message={messages.editImageModalFormError} />}\n >\n <InputText\n name=\"imageDescription\"\n label={\n <WrappedMessage\n message={messages.editImageModalImageDescriptionLabel}\n />\n }\n describedBy={`#Error-${imageDescriptionID}`}\n description={this.getImageDescriptionDescription()}\n id={imageDescriptionID}\n type=\"text\"\n value={this.state.imageDescription}\n onBlur={this.onImageDescriptionBlur}\n inputRef={this.setImageDescriptionInputRef}\n />\n </Fieldset>\n );\n\n getLearnMoreLink = () => (\n <WrappedMessage message={messages.editImageModalLearnMore}>\n {\n displayText => (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={this.props.courseImageAccessibilityDocs}\n >\n {displayText}\n </a>\n )\n }\n </WrappedMessage>\n );\n\n getImageDescriptionDescription = () => (\n <React.Fragment>\n <WrappedMessage message={messages.editImageModalImageDescriptionDescription} />\n {' '}\n {this.getLearnMoreLink()}\n {' '}\n <WrappedMessage message={messages.editImageModalImageDecorativeDescription} />\n </React.Fragment>\n );\n\n getImageDimensionsInput = () => (\n <Fieldset\n legend={<WrappedMessage message={messages.editImageModalDimensionsLegend} />}\n id={imageDimensionsFieldsetID}\n invalidMessage={<WrappedMessage message={messages.editImageModalFormValidImageDimensions} />}\n isValid={this.state.areImageDimensionsValid}\n variant={{\n status: Variant.status.DANGER,\n }}\n variantIconDescription={<WrappedMessage message={messages.editImageModalFormError} />}\n >\n <div className={styles['dimensions-row']}>\n <div className={styles['dimension-field']}>\n <InputText\n name=\"imageWidth\"\n label={\n <WrappedMessage\n message={messages.editImageModalImageWidthLabel}\n />\n }\n id={imageWidthID}\n type=\"number\"\n value={'width' in this.state.imageDimensions ? this.state.imageDimensions.width : ''}\n onBlur={this.onImageDimensionBlur('width')}\n />\n </div>\n <span className={styles['dimensions-separator']} aria-hidden=\"true\">x</span>\n <div className={styles['dimension-field']}>\n <InputText\n name={imageHeightID}\n label={\n <WrappedMessage\n message={messages.editImageModalImageHeightLabel}\n />\n }\n id=\"imageHeight\"\n type=\"number\"\n value={'height' in this.state.imageDimensions ? this.state.imageDimensions.height : ''}\n onBlur={this.onImageDimensionBlur('height')}\n />\n </div>\n </div>\n <CheckBox\n id=\"lockProportions\"\n name=\"lockProportions\"\n label={\n <WrappedMessage\n message={messages.editImageModalLockImageProportionsCheckboxLabel}\n />\n }\n checked={this.state.areProportionsLocked}\n onChange={this.onConstrainProportionsClick}\n />\n </Fieldset>\n );\n\n getImageAssetSource = () => (\n rewriteStaticLinks(this.state.imageSource, '/static/', this.state.baseAssetURL)\n );\n\n getImage = () => (\n <img\n alt=\"\"\n className={classNames(styles['image-preview-image'], { invisible: !this.state.isImageLoaded })}\n src={this.getImageAssetSource()}\n onLoad={this.onImageLoad}\n onError={this.onImageError}\n ref={this.setImageRef}\n />\n );\n\n /*\n image is conditionally displayed so that onImageError is not called on initial\n modal open, when image source is empty string\n */\n getImagePreviewPlaceholder = () => (\n <div className={styles['image-preview-placeholder']}>\n <WrappedMessage message={messages.editImageModalImagePreviewText} >\n {displayText =>\n (<span className={classNames({ invisible: this.state.isImageLoaded })}>\n {displayText}\n </span>)}\n </WrappedMessage>\n {this.state.imageSource && this.getImage()}\n </div>\n );\n\n getImagePreview = () => (\n // image preview is decorative\n <div aria-hidden>\n <WrappedMessage message={messages.editImageModalImagePreviewText} />\n <div className={styles['image-preview-container']}>\n {this.getImagePreviewPlaceholder()}\n </div>\n </div>\n );\n\n getStatusAlertDialog = () => {\n let dialog;\n\n if (this.state.pageNumber === 1) {\n dialog = (\n <React.Fragment>\n {this.getUploadErrorStatusMessage()}\n </React.Fragment>\n );\n } else if (this.state.pageNumber === 2) {\n dialog = (\n <div>\n <WrappedMessage\n message={messages.editImageModalFormErrorMissingFields}\n tagName=\"div\"\n />\n <div className=\"mt-3\">\n <ul className=\"bullet-list\">\n {(Object.keys(this.state.currentValidationMessages).reduce((accumulator, current) => {\n const value = this.state.currentValidationMessages[current];\n\n if (value) {\n const errorMessage = <li key={`Error-${current}`}>{<a href={`#${current}`}>{value} </a>}</li>;\n accumulator.push(errorMessage);\n }\n\n return accumulator;\n }, [])\n )}\n </ul>\n </div>\n </div>\n );\n }\n return dialog;\n };\n\n getStatusAlert = () => (\n <StatusAlert\n alertType=\"danger\"\n dialog={this.getStatusAlertDialog()}\n onClose={this.onStatusAlertClose}\n open={this.state.isStatusAlertOpen}\n ref={this.setStatusAlertRef}\n />\n )\n\n getModalHeader = () => {\n let header;\n if (this.state.pageNumber === 2 || this.state.editingExisting) {\n header = (\n <WrappedMessage\n message={messages.editImageModalEditTitle}\n />\n );\n } else {\n header = (\n <WrappedMessage\n message={messages.editImageModalInsertTitle}\n />\n );\n }\n return (\n <div aria-live=\"polite\">\n { header }\n </div>\n );\n }\n\n getModalBody = () => {\n let body;\n if (this.state.pageNumber === 1) {\n body = this.getImageSelectionModalBody();\n } else if (this.state.pageNumber === 2) {\n body = this.getImageSettingsModalBody();\n }\n return body;\n }\n\n getImageSelectionModalBodyAssetsList = (type) => {\n switch (type) {\n case pageTypes.NORMAL:\n return (<WrappedAssetsList />);\n case pageTypes.NO_ASSETS:\n return null;\n case pageTypes.NO_RESULTS:\n return (\n <React.Fragment>\n <WrappedMessage message={messages.editImageModalAssetsListNoResultsMessage} tagName=\"h3\" />\n <WrappedAssetsClearSearchButton />\n </React.Fragment>\n );\n case pageTypes.SKELETON:\n return (\n <div className=\"text-center mt-3\">\n <span className=\"fa-icon-spacing\" aria-hidden>\n <span\n className={classNames([\n FontAwesomeStyles.fa,\n FontAwesomeStyles['fa-spinner'],\n FontAwesomeStyles['fa-spin'],\n ])}\n />\n </span>\n <WrappedMessage message={messages.editImageModalAssetsListLoadingSpinner} />\n </div>\n );\n default:\n throw new Error(`Unknown pageType ${type}.`);\n }\n }\n\n getImageSelectionModalBody = () => (\n <React.Fragment>\n <div className=\"row\">\n <div className=\"col\">\n {this.getStatusAlert()}\n </div>\n </div>\n <div className=\"row mb-3\">\n <div className=\"col\">\n <WrappedAssetsDropZone\n maxFileCount={1}\n maxFileSizeMB={10}\n acceptedFileTypes={'image/*'}\n compactStyle\n buttonRef={this.setDropZoneButtonRef}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col\">\n {this.getImageSelectionModalBodyAssetsList(this.state.assetsPageType)}\n </div>\n </div>\n {(this.isAssetSelected() || this.state.imageSource) && (\n <div className=\"row mt-3\">\n <div className=\"col\">\n {/* Hidden image to load dimensions */}\n {this.state.imageSource && (\n <img\n alt=\"\"\n src={this.getImageAssetSource()}\n onLoad={this.onImageLoad}\n onError={this.onImageError}\n ref={this.setImageRef}\n style={{ display: 'none' }}\n />\n )}\n <form className={styles['image-fields']} ref={this.setImageFormRef}>\n {this.getImageDescriptionInput()}\n {this.getImageDimensionsInput()}\n </form>\n </div>\n </div>\n )}\n </React.Fragment>\n );\n\n getImageSettingsModalBody = () => (\n <React.Fragment>\n {this.getStatusAlert()}\n <div className=\"row\">\n {this.state.shouldShowPreviousButton && this.getPreviousPageButton()}\n </div>\n <div className=\"row\">\n <div className=\"col-sm-4\">\n {this.getImagePreview()}\n </div>\n <div className=\"col\">\n <form className={styles['image-fields']} ref={this.setImageFormRef}>\n {this.getImageDescriptionInput()}\n {this.getImageDimensionsInput()}\n </form>\n </div>\n </div>\n </React.Fragment>\n );\n\n getModalButtons = () => {\n let buttons;\n if (this.state.pageNumber === 1) {\n buttons = this.getInsertImageButton();\n } else if (this.state.pageNumber === 2) {\n buttons = this.getInsertImageButton();\n }\n return buttons;\n }\n\n getNextPageButton = () => (\n <Button\n label={\n <WrappedMessage\n message={messages.editImageModalNextPageButton}\n />\n }\n buttonType=\"primary\"\n disabled={!this.isAssetSelected()}\n onClick={this.onNextPageButtonClick}\n />\n );\n\n getPreviousPageButton = () => (\n <Button\n label={\n <WrappedMessage\n message={messages.editImageModalPreviousPageButton}\n />\n }\n buttonType=\"link\"\n onClick={this.onPreviousPageButtonClick}\n inputRef={this.setPreviousButtonRef}\n />\n );\n\n getInsertImageButton = () => (\n <Button\n label={\n <WrappedMessage\n message={messages.editImageModalInsertImageButton}\n />\n }\n buttonType=\"primary\"\n disabled={!this.isAssetSelected() && !this.state.imageSource}\n onClick={this.onInsertImageButtonClick}\n />\n );\n\n getUploadErrorStatusMessage = () => {\n let message;\n\n if (this.state.currentUploadErrorMessage) {\n message = (\n <WrappedMessage\n message={this.state.currentUploadErrorMessage}\n />\n );\n }\n\n return message;\n };\n\n resetImageSelection = () => {\n this.props.updatePage(0, this.props.courseDetails);\n this.props.clearSelectedAsset();\n }\n\n handleOpenModal = (event) => {\n const eventSource = event.detail.src;\n let isEventSourceEmpty = true;\n if (eventSource) {\n isEventSourceEmpty = false;\n }\n\n this.setState((state, props) => ({\n // reset state to initial and then add in overrides\n ...initialEditImageModalState,\n assetsPageType: getPageType(props, state.assetsPageType),\n baseAssetURL: event.detail.baseAssetUrl || '',\n imageDescription: event.detail.alt || '',\n imageDimensions: (event.detail.width && event.detail.height) ? {\n width: event.detail.width,\n height: event.detail.height,\n aspectRatio: event.detail.width / event.detail.height,\n } : {},\n imageSource: eventSource || '',\n imageStyle: event.detail.style || '',\n editingExisting: !isEventSourceEmpty,\n // if existing img had a source, assume it could be loaded and show the image preview\n isImageLoaded: !!eventSource,\n isModalOpen: true,\n pageNumber: 1,\n shouldShowPreviousButton: false,\n }));\n\n this.props.getAssets({ assetTypes: { Images: true }, pageSize: 1000 }, this.props.courseDetails);\n }\n\n validateImageDescription = () => {\n return { isValid: true };\n }\n\n validateImageDimensions = () => {\n let feedback = { isValid: true };\n const { height, width } = this.state.imageDimensions;\n\n if (!this.isPositiveIntegerOrEmpty(height) || !this.isPositiveIntegerOrEmpty(width)) {\n feedback = {\n isValid: false,\n validationMessage:\n (<WrappedMessage\n message={messages.editImageModalFormValidImageDimensions}\n />),\n dangerIconDescription: <WrappedMessage message={messages.editImageModalFormError} />,\n };\n }\n return feedback;\n }\n\n didStatusAlertOpen = (prevState) => {\n if (this.state.isStatusAlertOpen && !prevState.isStatusAlertOpen) {\n this.statusAlertRef.focus();\n }\n }\n\n isAssetSelected = () => (this.props.selectedAsset\n && Object.keys(this.props.selectedAsset).length !== 0);\n\n isPositiveIntegerOrEmpty = (val) => {\n if (val === '' || val === undefined) {\n return true;\n }\n if (Number.isInteger(val) && val > 0) {\n return true;\n }\n return false;\n }\n\n wasNextButtonClicked = (prevState) => {\n if (this.state.pageNumber === 2 && prevState.pageNumber === 1\n && this.state.shouldShowPreviousButton) {\n this.previousPageButtonRef.focus();\n }\n }\n\n wasPreviousButtonClicked = (prevState) => {\n if (this.state.pageNumber === 1 && prevState.pageNumber === 2\n && prevState.isModalOpen) {\n this.dropZoneButtonRef.focus();\n }\n }\n\n render = () => (\n <div\n ref={this.setModalWrapperRef}\n id={modalWrapperID}\n >\n <div\n aria-atomic\n aria-live={this.state.isModalOpen ? 'polite' : 'off'}\n aria-relevant=\"text\"\n className=\"sr-only\"\n >\n <WrappedAssetsResultsCount />\n </div>\n <Modal\n open={this.state.isModalOpen}\n title={this.getModalHeader()}\n body={this.getModalBody()}\n closeText={<WrappedMessage message={messages.editImageModalCancelButton} />}\n onClose={this.onEditImageModalClose}\n buttons={[this.getModalButtons()]}\n parentSelector={`#${modalWrapperID}`}\n />\n </div>\n );\n}\n\nEditImageModal.propTypes = {\n assetsList: PropTypes.arrayOf(PropTypes.object).isRequired,\n assetsStatus: PropTypes.shape({\n response: PropTypes.object,\n type: PropTypes.string,\n }).isRequired,\n clearAssetsStatus: PropTypes.func.isRequired,\n clearSearch: PropTypes.func.isRequired,\n clearSelectedAsset: PropTypes.func.isRequired,\n courseDetails: PropTypes.shape({\n lang: PropTypes.string,\n url_name: PropTypes.string,\n name: PropTypes.string,\n display_course_number: PropTypes.string,\n num: PropTypes.string,\n org: PropTypes.string,\n id: PropTypes.string,\n revision: PropTypes.string,\n base_url: PropTypes.string,\n }).isRequired,\n courseImageAccessibilityDocs: PropTypes.string.isRequired,\n getAssets: PropTypes.func.isRequired,\n selectAsset: PropTypes.func.isRequired,\n selectedAsset: PropTypes.shape({\n display_name: PropTypes.string,\n content_type: PropTypes.string,\n url: PropTypes.string,\n date_added: PropTypes.string,\n id: PropTypes.string,\n portable_url: PropTypes.string,\n thumbnail: PropTypes.string,\n external_url: PropTypes.string,\n }).isRequired,\n updatePage: PropTypes.func.isRequired,\n};\n","import { connect } from 'react-redux';\n\nimport EditImageModal from '.';\nimport {\n clearAssetsStatus,\n clearSelectedAsset,\n getAssets,\n pageUpdate,\n searchUpdate,\n selectAsset,\n} from '../../data/actions/assets';\n\n\n// Create an EditImageModal that is not aware of the Images filter.\n// This is so that the page will display a \"noAssets\" list instead of a \"noResults\" list when the\n// course has no images.\nconst mapStateToProps = (state) => {\n const { Images, ...typesWithoutImages } = state.metadata.filters.assetTypes;\n const filtersWithoutImages = { ...state.metadata.filters, assetTypes: typesWithoutImages };\n return {\n assetsList: state.assets,\n assetsStatus: state.metadata.status,\n courseDetails: state.studioDetails.course,\n courseImageAccessibilityDocs: state.studioDetails.help_tokens.image_accessibility,\n filtersMetadata: filtersWithoutImages,\n searchMetadata: state.metadata.search,\n selectedAsset: state.metadata.select.selectedAsset,\n status: state.metadata.status,\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n clearAssetsStatus: () => dispatch(clearAssetsStatus()),\n clearSearch: courseDetails => dispatch(searchUpdate('', courseDetails)),\n clearSelectedAsset: () => dispatch(clearSelectedAsset()),\n getAssets: (request, courseDetails) => dispatch(getAssets(request, courseDetails)),\n selectAsset: (asset, index) => dispatch(selectAsset(asset, index)),\n updatePage: (page, courseDetails) => dispatch(pageUpdate(page, courseDetails)),\n});\n\nconst WrappedEditImageModal = connect(\n mapStateToProps,\n mapDispatchToProps,\n)(EditImageModal);\n\nexport default WrappedEditImageModal;\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n","/* eslint-disable global-require,no-underscore-dangle */\nif ((typeof window !== 'undefined' && !window._babelPolyfill) ||\n (typeof global !== 'undefined' && !global._babelPolyfill)) {\n // Don't load babel-polyfill if already loaded: https://github.com/babel/babel/issues/4019\n require('babel-polyfill'); // general ES2015 polyfill (e.g. promise)\n}\n/* eslint-enable global-require no-underscore-dangle */\n\n/* eslint-disable import/first */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { IntlProvider } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport 'custom-event-polyfill'; // needed for IE11\n\nimport './SFE.scss';\nimport WrappedEditImageModal from './components/EditImageModal/container';\nimport loadI18nDomData from './utils/i18n/loadI18nDomData';\nimport store from './data/store';\n/* eslint-enable import/first */\n\nconst i18nData = loadI18nDomData();\n/* eslint-enable import/first */\n\nconst App = () => (\n <IntlProvider locale={i18nData.locale} messages={i18nData.messages}>\n <Provider store={store}>\n <div className=\"SFE-wrapper\">\n <WrappedEditImageModal />\n </div>\n </Provider>\n </IntlProvider>\n);\n\nReactDOM.render(<App />, document.getElementById('root'));\n"],"sourceRoot":""}