{"version":3,"file":"js/6284-55e31a3b43a61de2d8eb.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/lib/AsyncJobManager/jobs/assets/ImageAssetUploadJob.js","webpack://AYTM/./app/_stock/webpack/lib/AsyncJobManager/jobs/assets/VideoAssetUploadJob.js","webpack://AYTM/./app/_stock/webpack/lib/common/upload-with-progress.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/color-picker-popup.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/color-picker.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/advanced/pagination.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/jobs/video-asset-upload-manager.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/assets/asset-files-uploader.module.scss?fad6","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/asset-files-uploader.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/jobs/image-asset-upload-manager.js","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/styles/assets/upload-assets-button.module.scss?2991","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/assets/upload-assets-button.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/dropdown.jsx","webpack://AYTM/./app/_stock/webpack/lib/rfd-ui/components/basic/text-popup.jsx"],"sourcesContent":["import ProgressivePromise from '@aytm/lib/AsyncJobManager/ProgressivePromise'\nimport railsPostFetch, { getCSRFToken } from '@aytm/lib/common/rails-post-fetch'\nimport fetch from 'isomorphic-fetch'\nimport uploadWithProgress from '@aytm/lib/common/upload-with-progress'\nimport { headersFromGoogleUploadUrl } from '@aytm/lib/common/google-cloud-url'\n\nexport default function ImageAssetUploadJob({ createAssetPath, file, params = {} } = {}) {\n return () =>\n new ProgressivePromise((resolve, reject, progress) => {\n const totalProgress = file.size\n // CREATE ASSET\n\n progress(0, totalProgress) // set progress to 0\n\n const createParams = Object.assign({}, params, {\n filename: file.name,\n content_type: file.type,\n filesize: file.size\n })\n const asset = {}\n\n railsPostFetch(createAssetPath, {\n body: JSON.stringify(createParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n\n // UPLOAD IMAGE\n .then(createdAsset => {\n Object.assign(asset, createdAsset)\n\n if (\n !asset.uid ||\n 'uploading' !== asset.status ||\n !asset.upload_urls ||\n !asset.upload_urls.binary_upload_url ||\n !asset.upload_urls.finish_upload_url ||\n !asset.upload_urls.status_upload_url\n ) {\n return Promise.reject(new Error('createAsset - invalid response data'))\n }\n\n return uploadWithProgress(\n asset.upload_urls.binary_upload_url,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': file.type,\n ...headersFromGoogleUploadUrl(asset.upload_urls.binary_upload_url)\n },\n body: file\n },\n progressEvent => {\n progress(Math.round(progressEvent.loaded * 0.9), totalProgress) // set progress for uploaded bytes with correction 100% -> 90%\n }\n )\n })\n\n // FINISH UPLOAD\n .then(() =>\n fetch(asset.upload_urls.finish_upload_url, {\n method: 'POST',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n },\n mode: 'cors'\n })\n )\n\n // CHECK STATUS\n .then(finishResponse => {\n if (finishResponse.ok) {\n progress(Math.round(file.size * 0.95), totalProgress) // set progress to 95%\n return new Promise((resolve, reject) => {\n const checkStatus = () => {\n fetch(asset.upload_urls.status_upload_url, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n },\n Accept: 'application/json'\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(assetStatus => {\n switch (assetStatus.status) {\n case 'ready':\n case 'source_valid': {\n progress(totalProgress, totalProgress) // set progress to 100%\n resolve(\n Object.assign({}, asset, assetStatus, {\n status: 'ready',\n fileName: file.name,\n contentType: file.type,\n fileSize: file.size\n })\n )\n break\n }\n case 'processing': {\n setTimeout(checkStatus, 1000)\n break\n }\n default: {\n reject(assetStatus)\n break\n }\n }\n })\n .catch(_error => {\n setTimeout(checkStatus, 1000)\n })\n }\n setTimeout(checkStatus, 500)\n })\n } else {\n return Promise.reject(new Error('unable to finish upload'))\n }\n })\n .then(resolve, reject)\n .catch(error => reject(error))\n })\n}\n","import ProgressivePromise from '@aytm/lib/AsyncJobManager/ProgressivePromise'\nimport railsPostFetch, { getCSRFToken } from '@aytm/lib/common/rails-post-fetch'\nimport fetch from 'isomorphic-fetch'\nimport uploadWithProgress from '@aytm/lib/common/upload-with-progress'\nimport { headersFromGoogleUploadUrl } from '@aytm/lib/common/google-cloud-url'\n\nexport default function VideoAssetUploadJob({ createAssetPath, file, params = {} } = {}) {\n return () =>\n new ProgressivePromise((resolve, reject, progress) => {\n const totalProgress = file.size\n // CREATE ASSET\n\n progress(0, totalProgress) // set progress to 0\n\n const createParams = Object.assign({}, params, {\n filename: file.name,\n content_type: file.type,\n filesize: file.size\n })\n const asset = {}\n\n railsPostFetch(createAssetPath, {\n body: JSON.stringify(createParams)\n })\n .then(response => (response.ok ? response.json() : {}))\n\n // UPLOAD VIDEO\n .then(createdAsset => {\n Object.assign(asset, createdAsset)\n\n if (\n !asset.uid ||\n 'uploading' !== asset.status ||\n !asset.upload_urls ||\n !asset.upload_urls.binary_upload_url ||\n !asset.upload_urls.finish_upload_url ||\n !asset.upload_urls.status_upload_url\n ) {\n return Promise.reject(new Error('createAsset - invalid response data'))\n }\n\n return uploadWithProgress(\n asset.upload_urls.binary_upload_url,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': file.type,\n ...headersFromGoogleUploadUrl(asset.upload_urls.binary_upload_url)\n },\n body: file\n },\n progressEvent => {\n progress(Math.round(progressEvent.loaded * 0.5), totalProgress) // set progress for uploaded bytes with correction 100% -> 50%\n }\n )\n })\n\n // FINISH UPLOAD\n .then(() =>\n fetch(asset.upload_urls.finish_upload_url, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n }\n })\n )\n\n // CHECK STATUS\n .then(finishResponse => {\n if (finishResponse.ok) {\n let processingVirtualProgress = 0.55\n progress(Math.round(totalProgress * processingVirtualProgress), totalProgress) // set progress to 55%\n return new Promise((resolve, reject) => {\n const checkStatus = () => {\n fetch(asset.upload_urls.status_upload_url, {\n method: 'POST',\n mode: 'cors',\n headers: {\n 'X-CSRF-Token': getCSRFToken()\n },\n Accept: 'application/json'\n })\n .then(response => (response.ok ? response.json() : {}))\n .then(assetStatus => {\n switch (assetStatus.status) {\n case 'ready':\n case 'source_valid': {\n progress(totalProgress, totalProgress) // set progress to 100%\n resolve(\n Object.assign({}, asset, assetStatus, {\n status: 'ready',\n fileName: file.name,\n contentType: file.type,\n fileSize: file.size\n })\n )\n break\n }\n case 'processing': {\n processingVirtualProgress = Math.min(processingVirtualProgress + 0.05, 0.9)\n progress(totalProgress * processingVirtualProgress, totalProgress) // set progress to processingVirtualProgress%\n setTimeout(checkStatus, 2000)\n break\n }\n default: {\n reject(assetStatus)\n break\n }\n }\n })\n .catch(_error => {\n setTimeout(checkStatus, 2000)\n })\n }\n setTimeout(checkStatus, 2000)\n })\n } else {\n return Promise.reject(new Error('unable to finish upload'))\n }\n })\n .then(resolve, reject)\n .catch(error => reject(error))\n })\n}\n","/* globals XDomainRequest */\nexport default function uploadWithProgress(url, data = {}, onProgress) {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest()\n if (data.withCredentials) {\n if ('withCredentials' in xhr) {\n xhr.open(data.method || 'POST', url, true)\n } else if ('undefined' !== typeof XDomainRequest) {\n xhr = new XDomainRequest()\n xhr.open(data.method || 'POST', url)\n } else {\n xhr = null\n reject(new Error('CORS not supported'))\n }\n } else {\n xhr.open(data.method || 'POST', url, true)\n }\n if (xhr) {\n Object.keys(data.headers || {}).forEach(headerKey => {\n xhr.setRequestHeader(headerKey, data.headers[headerKey])\n })\n xhr.withCredentials = data.withCredentials || false\n xhr.onload = event => resolve(event.target.responseText)\n xhr.onerror = reject\n if (xhr.upload && onProgress) xhr.upload.onprogress = onProgress\n xhr.send(data.body)\n }\n })\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { fromEvent as ObservableFromEvent } from 'rxjs'\nimport { mergeMap as rxMergeMap, map as rxMap, takeUntil as rxTakeUntil } from 'rxjs/operators'\n\n// components\nimport { DOMElementRect } from '@aytm/lib/common/func'\n\nimport Portal from '@aytm/lib/rfd-ui/components/basic/portal'\nimport ColorPicker from 'lib/rfd-ui/components/advanced/color-picker'\n\n// styles\nimport '@aytm/lib/rfd-ui/styles/advanced/color-picker.scss'\n\nclass ColorPickerPopup extends Component {\n static propTypes = {\n target: PropTypes.any,\n color: PropTypes.string.isRequired,\n offsetTop: PropTypes.number,\n offsetLeft: PropTypes.number,\n container: PropTypes.any,\n readOnly: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClose: PropTypes.func\n }\n\n popup = null\n\n @autobind\n dragModal() {\n if (!this.popup) return\n\n const { container } = this.props\n const popup = this.popup\n const popupHeader = popup.querySelector('.rfd-ui-popup-header')\n\n if (popup && popupHeader) {\n const mouseup = ObservableFromEvent(document, 'mouseup')\n const mousemove = ObservableFromEvent(document, 'mousemove')\n const mousedown = ObservableFromEvent(popupHeader, 'mousedown')\n\n const mousedrag = mousedown.pipe(\n rxMergeMap(function (md) {\n // calculate start positions of modal window and cursor\n const popupRect = DOMElementRect(popup)\n\n const startX = md.clientX\n const startY = md.clientY\n\n // calculate delta with mousemove until mouseup\n return mousemove.pipe(\n rxMap(function (mm) {\n mm.preventDefault()\n let top = popupRect.top + mm.clientY - startY\n let left = popupRect.left + mm.clientX - startX\n if (container) {\n const containerRect = DOMElementRect(container)\n top = Math.min(containerRect.height - popupRect.height, Math.max(0, top))\n left = Math.min(containerRect.width - popupRect.width, Math.max(0, left))\n }\n return {\n top,\n left\n }\n }),\n rxTakeUntil(mouseup)\n )\n })\n )\n\n // update position\n this.subscription = mousedrag.subscribe(pos => {\n // TODO\n this.popup.style.top = `${pos.top}px`\n this.popup.style.left = `${pos.left}px`\n })\n\n const { target } = this.props\n if (target) {\n const { offsetTop, offsetLeft } = this.props\n const targetRect = DOMElementRect(target)\n const popupRect = DOMElementRect(popup)\n let top = targetRect.top + (offsetTop ? offsetTop : targetRect.height)\n let left = targetRect.left + (offsetLeft ? offsetLeft : targetRect.width)\n if (container) {\n const containerRect = DOMElementRect(container)\n top = Math.min(containerRect.height - popupRect.height, Math.max(0, top))\n left = Math.min(containerRect.width - popupRect.width, Math.max(0, left))\n }\n this.popup.style.top = `${top}px`\n this.popup.style.left = `${left}px`\n }\n }\n }\n\n @autobind\n closePopup() {\n const { onClose } = this.props\n if (onClose) {\n onClose()\n }\n }\n\n componentDidMount() {\n setTimeout(() => {\n this.dragModal()\n }, 0)\n }\n\n componentWillUnmount() {\n if (this.subscription) this.subscription.unsubscribe()\n }\n\n render() {\n const { color, readOnly, onChange } = this.props\n\n return (\n <Portal>\n <div\n className={'rfd-ui-popup rfd-ui-colorpicker-popup'}\n ref={div => {\n this.popup = div\n }}\n >\n <div className={'rfd-ui-popup-header'}>\n Color Picker\n <div className={'rfd-ui-popup-close-button'} onClick={this.closePopup}>\n <i className=\"icon-aytmfd-close\" />\n </div>\n </div>\n <div className={'rfd-ui-popup-content'}>\n <ColorPicker color={color} readOnly={readOnly} onChange={onChange} />\n </div>\n </div>\n </Portal>\n )\n }\n}\n\nexport default ColorPickerPopup\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { CustomPicker } from 'react-color'\nimport colorHelper from 'react-color/lib/helpers/color'\nimport { EditableInput, Saturation, Hue } from 'react-color/lib/components/common/'\n\n// components\nimport ManagedRenderComponent from '@aytm/lib/common/components/ManagedRenderComponent'\n\n// styles\nimport '@aytm/lib/rfd-ui/styles/advanced/color-picker.scss'\n\nexport class PointerSaturation extends ManagedRenderComponent {\n render() {\n return <div className={'rfd-ui-colorpicker-pointerSaturation'} />\n }\n}\n\nexport class PointerHue extends ManagedRenderComponent {\n render() {\n return (\n <div className={'rfd-ui-colorpicker-pointerHue'}>\n <div className={'rfd-ui-colorpicker-pointerHue-dots'} />\n <div className={'rfd-ui-colorpicker-pointerHue-arrow'} />\n </div>\n )\n }\n}\n\nclass ColorPicker extends Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n readOnly: PropTypes.bool,\n onChange: PropTypes.func.isRequired\n }\n\n @autobind\n onInputChange(value) {\n const { onChange } = this.props\n if (value.hex) {\n colorHelper.isValidHex(value.hex) && onChange(value)\n }\n }\n\n render() {\n const { color, readOnly, onChange } = this.props\n\n return (\n <div className={'rfd-ui-colorpicker'}>\n <div className={`rfd-ui-colorpicker-field ${readOnly ? 'rfd-ui-colorpicker-disabled' : ''}`}>\n <EditableInput\n {...this.props}\n label=\"hex\"\n value={color.toUpperCase()}\n onChange={readOnly ? null : this.onInputChange}\n />\n </div>\n <div className={`rfd-ui-colorpicker-settings ${readOnly ? 'rfd-ui-colorpicker-disabled' : ''}`}>\n <div className={'rfd-ui-colorpicker-saturation'}>\n <Saturation {...this.props} onChange={readOnly ? null : onChange} pointer={PointerSaturation} />\n </div>\n <div className={'rfd-ui-colorpicker-hue'}>\n <Hue {...this.props} direction=\"vertical\" onChange={readOnly ? null : onChange} pointer={PointerHue} />\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default CustomPicker(ColorPicker)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\nimport autobind from 'autobind-decorator'\nimport { PureDataComponent } from '@aytm/lib/common/components/pure-component'\n\nimport '@aytm/lib/rfd-ui/styles/advanced/paginator.scss'\n\nexport default class Pagination extends PureDataComponent {\n static propTypes = {\n page: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired,\n prefix: PropTypes.string,\n separator: PropTypes.string,\n disabled: PropTypes.bool,\n onPageChange: PropTypes.func.isRequired\n }\n\n @autobind\n onChange(index) {\n const { total, onPageChange } = this.props\n return null == index || 1 > index || total < index || 'function' != typeof onPageChange\n ? null\n : () => {\n onPageChange(index)\n return false\n }\n }\n\n render() {\n const { page, total, prefix = '', separator = ' of ', disabled } = this.props\n\n return (\n <div className=\"rfd-ui-paginator\">\n {total > 1 && (\n <span>\n <span\n className={classNames('rfd-ui-paginator-el', 'left', {\n disabled: disabled || 1 == page\n })}\n onClick={disabled ? null : this.onChange(page - 1)}\n >\n <i className=\"icon-aytmfd-prev\" />\n </span>\n <span className=\"rfd-ui-paginator-el\">\n {' '}\n {prefix}\n {page + separator + total}{' '}\n </span>\n <span\n className={classNames('rfd-ui-paginator-el', 'right', {\n disabled: disabled || page == total\n })}\n onClick={disabled ? null : this.onChange(page + 1)}\n >\n <i className=\"icon-aytmfd-next\" />\n </span>\n </span>\n )}\n </div>\n )\n }\n}\n","import GeneralVideoAssetUploadJob from '@aytm/lib/AsyncJobManager/jobs/assets/VideoAssetUploadJob'\nimport AsyncJobManager from '@aytm/lib/AsyncJobManager/AsyncJobManager'\n\nexport const VideoAssetUploadManager = AsyncJobManager({ concurrency: 2 })\n\nconst config = {\n createAssetPath: null,\n templateID: null,\n srcSurveyID: null\n}\n\nexport function configure({ createAssetPath, templateID, srcSurveyID } = {}) {\n config.createAssetPath = createAssetPath\n config.templateID = templateID\n config.srcSurveyID = srcSurveyID\n}\n\nexport function VideoAssetUploadJob(file) {\n return config.createAssetPath\n ? GeneralVideoAssetUploadJob({\n createAssetPath: config.createAssetPath,\n file,\n params: { template_id: config.templateID, src_survey_id: config.srcSurveyID }\n })\n : Promise.reject(new Error('VideoAssetUploadManager - createAssetPath not configured'))\n}\n\nexport default function upload(droppedFiles, onProgress) {\n const files = droppedFiles.slice(0, 100) // protect from mass upload\n return new Promise(resolve => {\n const uploadJobs = [...files].map(file => VideoAssetUploadJob(file))\n const fileTotalSizes = files.map(file => file.size || 0)\n const progress = {\n fileTotalSizes,\n fileLoadedSizes: Array.from({ length: files.length }),\n totalSize: fileTotalSizes.reduce((totalSize, fileSize) => totalSize + fileSize, 0),\n loadedSize: 0,\n totalFiles: files.length,\n loadedFiles: 0\n }\n VideoAssetUploadManager.queue(...uploadJobs).then(\n jobResults => {\n resolve(jobResults.map(result => ('done' === result.status ? result.result : null)).filter(x => x))\n },\n null,\n onProgress\n ? (type, fileIndex, loaded, total) => {\n // calculate progress\n switch (type) {\n case 'done': {\n progress.totalFiles = total\n progress.loadedFiles = loaded\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n case 'progress': {\n progress.fileLoadedSizes[fileIndex] = loaded\n progress.fileTotalSizes[fileIndex] = total\n progress.totalSize = progress.fileTotalSizes.reduce(\n (fileSize, totalSize) => (totalSize ? fileSize + totalSize : fileSize),\n 0\n )\n progress.loadedSize = progress.fileLoadedSizes.reduce(\n (loadedSize, fileLoadedSize) => (fileLoadedSize ? loadedSize + fileLoadedSize : loadedSize),\n 0\n )\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n default: {\n break\n }\n }\n }\n : null\n )\n })\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"asset-files-uploader-module__component___1wV8z\",\"selectOnClick\":\"asset-files-uploader-module__selectOnClick___3Mia7\",\"input\":\"asset-files-uploader-module__input___12VWQ\"};","// lib\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport ADND from '@aytm/lib/adnd/ADND'\nimport uploadImageAssets from '@aytm/lib/rfd-ui/components/assets/jobs/image-asset-upload-manager'\nimport uploadVideoAssets from '@aytm/lib/rfd-ui/components/assets/jobs/video-asset-upload-manager'\n\n// styles\nimport style from '@aytm/lib/rfd-ui/styles/assets/asset-files-uploader.module.scss'\n\nexport default class AssetFilesUploader extends Component {\n static propTypes = {\n type: PropTypes.oneOf(['image', 'video']),\n onFilesUploaded: PropTypes.func.isRequired,\n onFilesUpload: PropTypes.func,\n watchProgress: PropTypes.bool,\n multiple: PropTypes.bool,\n withOriginal: PropTypes.bool,\n withErrors: PropTypes.bool,\n maxItems: PropTypes.number,\n selectOnClick: PropTypes.bool,\n content: PropTypes.func.isRequired\n }\n\n state = {\n dragOver: false,\n acceptFiles: true,\n progress: null\n }\n\n inputRef = React.createRef()\n\n dropAssetFileTarget = ADND.targets\n .files()\n .onDrop(this.onAssetFileDrop)\n .onEnter(this.onAssetFileDragEnter)\n .onLeave(this.onAssetFileDragLeave)\n .acceptDrop(this.acceptAssetFileDrop)\n\n @autobind\n connectDropTarget(ref) {\n this.dropAssetFileTarget.connect(ref)\n }\n\n componentDidMount() {\n this.mounted = true\n }\n\n componentWillUnmount() {\n this.mounted = false\n this.dropAssetFileTarget.disconnect()\n }\n\n @autobind\n onAssetFileDragEnter() {\n this.setState(state => {\n return {\n ...state,\n dragOver: true\n }\n })\n }\n\n @autobind\n onAssetFileDragLeave() {\n this.setState(state => {\n return {\n ...state,\n dragOver: false\n }\n })\n }\n\n @autobind\n acceptAssetFileDrop() {\n const { acceptFiles = true } = this.state\n return acceptFiles\n }\n\n @autobind\n onAssetFileDrop(...files) {\n const { multiple = false, maxItems = null } = this.props\n\n if (files.length) {\n this.onDropFiles(multiple ? (maxItems ? Array.prototype.slice.call(files, 0, maxItems) : files) : [files[0]])\n }\n }\n\n @autobind\n inputFilesSelected() {\n if (this.inputRef.current && this.inputRef.current.files && this.inputRef.current.files.length) {\n const { multiple = false, maxItems = null } = this.props\n this.onDropFiles(\n multiple\n ? Array.apply(\n null,\n maxItems\n ? Array.prototype.slice.call(this.inputRef.current.files, 0, maxItems)\n : this.inputRef.current.files\n )\n : [this.inputRef.current.files[0]]\n )\n }\n }\n\n @autobind\n onDropFiles(files) {\n const { type, watchProgress = true, withErrors = false, onFilesUpload, onFilesUploaded } = this.props\n\n if ('function' === typeof onFilesUploaded) {\n this.setState(\n state => {\n return {\n ...state,\n acceptFiles: false,\n progress: watchProgress\n ? {\n percents: 0,\n totalFiles: files.length,\n loadedFiles: 0,\n totalSize: files.reduce((totalSize, file) => totalSize + (file.size || 0), 0),\n loadedSize: 0\n }\n : null\n }\n },\n () => {\n const uploadAsset = 'video' === type ? uploadVideoAssets : uploadImageAssets\n if ('function' === typeof onFilesUpload) {\n onFilesUpload()\n }\n uploadAsset(\n files,\n watchProgress\n ? progress => {\n if (this.mounted) {\n this.setState(state => {\n return {\n ...state,\n progress\n }\n })\n }\n }\n : null,\n withErrors\n ).then(assets => {\n const { withOriginal = false } = this.props\n if (this.mounted) {\n this.setState(\n state => {\n return {\n ...state,\n acceptFiles: true,\n progress: null\n }\n },\n () => {\n onFilesUploaded(\n assets.map(asset => {\n if ('video' === type) {\n const videoAsset = {\n assetUid: asset.uid,\n videoPath: asset.original ? asset.original.mp4 : null,\n thumbnailPath: asset.original ? asset.original.thumbnail : null\n }\n withOriginal && (videoAsset.original = asset.original || null)\n return videoAsset\n } else {\n const imageAsset = {\n assetUid: asset.uid,\n imagePath: asset.original ? asset.original.path : null\n }\n withOriginal && (imageAsset.original = asset.original || null)\n withErrors && asset.error && (imageAsset.error = asset.error)\n withErrors && asset.status && (imageAsset.status = asset.status)\n return imageAsset\n }\n })\n )\n }\n )\n }\n })\n }\n )\n }\n }\n\n render() {\n const { type, multiple = false, content, selectOnClick = true } = this.props\n const { acceptFiles = true, dragOver, progress } = this.state\n return (\n <label\n className={`${style.component}${selectOnClick ? ' ' + style.selectOnClick : ''}`}\n ref={this.connectDropTarget}\n >\n {selectOnClick && acceptFiles ? (\n <input\n type=\"file\"\n name=\"file\"\n onChange={this.inputFilesSelected}\n accept={'video' === type ? 'video/*' : 'image/*,.ai,.eps,.pdf,.psd'}\n multiple={multiple}\n className={style.input}\n tabIndex=\"-1\"\n ref={this.inputRef}\n />\n ) : null}\n {content ? content({ dragOver, progress, uploading: !acceptFiles }) : null}\n </label>\n )\n }\n}\n","import GeneralImageAssetUploadJob from '@aytm/lib/AsyncJobManager/jobs/assets/ImageAssetUploadJob'\nimport AsyncJobManager from '@aytm/lib/AsyncJobManager/AsyncJobManager'\n\nexport const ImageAssetUploadManager = AsyncJobManager({ concurrency: 3 })\n\nconst config = {\n createAssetPath: null,\n templateID: null,\n srcSurveyID: null\n}\n\nexport function configure({ createAssetPath, templateID, srcSurveyID } = {}) {\n config.createAssetPath = createAssetPath\n config.templateID = templateID\n config.srcSurveyID = srcSurveyID\n}\n\nexport function ImageAssetUploadJob(file) {\n return config.createAssetPath\n ? GeneralImageAssetUploadJob({\n createAssetPath: config.createAssetPath,\n file,\n params: { template_id: config.templateID, src_survey_id: config.srcSurveyID }\n })\n : Promise.reject(new Error('ImageAssetUploadManager - createAssetPath not configured'))\n}\n\nexport default function upload(droppedFiles, onProgress, withErrors) {\n const files = droppedFiles.slice(0, 100) // protect from mass upload\n return new Promise(resolve => {\n const uploadJobs = [...files].map(file => ImageAssetUploadJob(file))\n const fileTotalSizes = files.map(file => file.size || 0)\n const progress = {\n fileTotalSizes,\n fileLoadedSizes: Array.from({ length: files.length }),\n totalSize: fileTotalSizes.reduce((totalSize, fileSize) => totalSize + fileSize, 0),\n loadedSize: 0,\n totalFiles: files.length,\n loadedFiles: 0\n }\n ImageAssetUploadManager.queue(...uploadJobs).then(\n jobResults => {\n resolve(\n withErrors\n ? jobResults.map(result => (result.result?.status ? result.result : result))\n : jobResults.map(result => ('done' === result.status ? result.result : null)).filter(x => x)\n )\n },\n null,\n onProgress\n ? (type, fileIndex, loaded, total) => {\n // calculate progress\n switch (type) {\n case 'done': {\n progress.totalFiles = total\n progress.loadedFiles = loaded\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n case 'progress': {\n progress.fileLoadedSizes[fileIndex] = loaded\n progress.fileTotalSizes[fileIndex] = total\n progress.totalSize = progress.fileTotalSizes.reduce(\n (fileSize, totalSize) => (totalSize ? fileSize + totalSize : fileSize),\n 0\n )\n progress.loadedSize = progress.fileLoadedSizes.reduce(\n (loadedSize, fileLoadedSize) => (fileLoadedSize ? loadedSize + fileLoadedSize : loadedSize),\n 0\n )\n onProgress({\n percents: Math.round((progress.loadedSize * 100) / progress.totalSize),\n totalFiles: progress.totalFiles,\n loadedFiles: progress.loadedFiles,\n totalSize: progress.totalSize,\n loadedSize: progress.loadedSize\n })\n break\n }\n default: {\n break\n }\n }\n }\n : null\n )\n })\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"upload-assets-button-module__component___HYOK1\",\"text\":\"upload-assets-button-module__text___2_Thq\",\"dragOver\":\"upload-assets-button-module__dragOver___27rsO\",\"inner\":\"upload-assets-button-module__inner___3Gelg\",\"label\":\"upload-assets-button-module__label___2kUrd\",\"icon\":\"upload-assets-button-module__icon___3uXul\",\"icon-image\":\"upload-assets-button-module__icon-image___3ZINw icon-aytmfd-image\",\"icon-video\":\"upload-assets-button-module__icon-video___22Jjt icon-aytmfd-qvideo\",\"uploadingPercents\":\"upload-assets-button-module__uploadingPercents___2rfWr\",\"uploadingFiles\":\"upload-assets-button-module__uploadingFiles___2h7Xe\"};","// lib\nimport React, { useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\n// components\nimport AssetFilesUploader from '@aytm/lib/rfd-ui/components/assets/asset-files-uploader'\nimport LoaderDots from '@aytm/lib/rfd-ui/components/basic/loader-dots'\n\n// styles\nimport style from '@aytm/lib/rfd-ui/styles/assets/upload-assets-button.module.scss'\n\nUploadAssetsButton.propTypes = {\n type: PropTypes.oneOf(['image', 'video']),\n text: PropTypes.string,\n renderProgressText: PropTypes.func,\n maxItems: PropTypes.number,\n multiple: PropTypes.bool,\n withOriginal: PropTypes.bool,\n withErrors: PropTypes.bool,\n onFilesUploaded: PropTypes.func.isRequired,\n onFilesUpload: PropTypes.func\n}\n\nexport default function UploadAssetsButton(props) {\n const {\n text,\n type,\n renderProgressText,\n multiple = false,\n maxItems,\n withOriginal,\n withErrors = false,\n onFilesUpload,\n onFilesUploaded\n } = props\n\n const renderButton = useCallback(\n ({ dragOver = false, progress, uploading } = {}) => (\n <div className={`${style.component}${dragOver ? ' ' + style.dragOver : ''}`}>\n {uploading && progress ? (\n <ProgressPanel progress={progress} renderProgressText={renderProgressText} />\n ) : (\n <DropPanel type={type} text={text || ''} />\n )}\n </div>\n ),\n [type, text, renderProgressText]\n )\n\n return (\n <AssetFilesUploader\n type={type}\n maxItems={maxItems}\n multiple={multiple}\n watchProgress={true}\n withErrors={withErrors}\n withOriginal={withOriginal}\n onFilesUploaded={onFilesUploaded}\n onFilesUpload={onFilesUpload}\n content={renderButton}\n />\n )\n}\n\nDropPanel.propTypes = {\n type: PropTypes.oneOf(['image', 'video']),\n text: PropTypes.string.isRequired\n}\n\nexport function DropPanel(props) {\n const { type, text } = props\n return (\n <div className={style.inner}>\n <div className={style.label}>\n <i className={`${style.icon} ${'video' === type ? style['icon-video'] : style['icon-image']}`} />\n <div className={style.text}>{text || ''}</div>\n </div>\n </div>\n )\n}\n\nProgressPanel.propTypes = {\n renderProgressText: PropTypes.func,\n progress: PropTypes.object.isRequired\n}\nexport function ProgressPanel(props) {\n const { progress = {}, renderProgressText } = props\n const { percents = 0, loadedFiles = 0, totalFiles = 1 } = progress || {}\n return (\n <div className={style.inner}>\n <div className={style.label}>\n <div className={style.uploadingPercents}>\n <LoaderDots dotSize={7} dots={3} height={15} /> {100 > percents ? `${percents}%` : ''}\n </div>\n {'function' === typeof renderProgressText ? (\n <div className={style.uploadingFiles}>{renderProgressText({ loadedFiles, totalFiles })}</div>\n ) : null}\n </div>\n </div>\n )\n}\n","// lib\nimport React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport { DOMclosest } from '@aytm/lib/common/func'\nimport {\n KEYCODE_UP,\n KEYCODE_DOWN,\n KEYCODE_PGUP,\n KEYCODE_PGDOWN,\n KEYCODE_ENTER,\n KEYCODE_ESC\n} from '@aytm/lib/common/const'\n\n// constants\nconst SCROLL_TO_ITEM_MARGIN = 10\n\n// styles\nimport '@aytm/lib/rfd-ui/styles/basic/dropdown.scss'\n\n// <Component>\nDropdown.propTypes = {\n opened: PropTypes.bool.isRequired,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n align: PropTypes.string, // left, right, fill (100% width)\n className: PropTypes.string,\n children: PropTypes.any,\n dropdownRef: PropTypes.any\n}\nexport default function Dropdown(props) {\n const { opened, width, className, children, maxHeight, align, dropdownRef } = props\n return opened ? (\n <div\n ref={dropdownRef}\n className={`rfd-ui-dropdown${align ? ' rfd-ui-dropdown-align-' + align : ''}${className ? ' ' + className : ''}`}\n style={{ width }}\n >\n <div className=\"rfd-ui-dropdown-content\" style={{ maxHeight }}>\n {children()}\n </div>\n </div>\n ) : null\n}\n\nexport class DropdownList extends Component {\n static propTypes = {\n fetchItems: PropTypes.func.isRequired,\n filter: PropTypes.any,\n onSelectItem: PropTypes.func\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return this.props.filter != nextProps.filter || this.state.items != nextState.items\n }\n\n constructor(props) {\n super(props)\n this.state = {\n lastFilter: props.filter,\n items: props.fetchItems ? props.fetchItems({ filter: props.filter }) : []\n }\n this.listRef = null\n this.keyboardFocusIndex = 0\n }\n\n static getDerivedStateFromProps(props, state) {\n return state.lastFilter != props.filter\n ? {\n lastFilter: props.filter,\n items: props.fetchItems ? props.fetchItems({ filter: props.filter }) : []\n }\n : null\n }\n\n @autobind\n setListRef(ref) {\n if (this.listRef != ref) {\n if (this.listRef) {\n this.listRef.removeEventListener('mousedown', this.mouseDownListener, true)\n }\n this.listRef = ref\n if (this.listRef) {\n this.listRef.addEventListener('mousedown', this.mouseDownListener, true)\n }\n }\n }\n\n @autobind\n mouseDownListener(event) {\n if (0 === event.button) {\n event.preventDefault()\n const selectedItemElement = DOMclosest(event.target, '.rfd-ui-dropdown-list-item')\n if (selectedItemElement && this.state.items && this.props.onSelectItem) {\n const selectedItemIndex = parseInt(selectedItemElement.dataset.itemIndex, 10)\n if (!isNaN(selectedItemIndex)) {\n const selectedItem = this.state.items[selectedItemIndex]\n if (selectedItem) {\n this.props.onSelectItem(selectedItem)\n }\n }\n }\n }\n }\n\n @autobind\n onKeyDown(event) {\n switch (event.keyCode) {\n case KEYCODE_ESC: {\n event.preventDefault()\n this.moveKeyboardFocus(null)\n return 'close'\n }\n case KEYCODE_DOWN: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.min(this.state.items.length - 1, this.keyboardFocusIndex + 1))\n return 'down'\n }\n case KEYCODE_UP: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.max(0, this.keyboardFocusIndex - 1))\n return 'up'\n }\n case KEYCODE_PGDOWN: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.min(this.state.items.length - 1, this.keyboardFocusIndex + 3))\n return 'pgdown'\n }\n case KEYCODE_PGUP: {\n event.preventDefault()\n this.moveKeyboardFocus(Math.max(0, this.keyboardFocusIndex - 3))\n return 'pgup'\n }\n case KEYCODE_ENTER: {\n event.preventDefault()\n if (this.props.onSelectItem) {\n const selectedItem = this.state.items[this.keyboardFocusIndex]\n if (selectedItem) {\n this.props.onSelectItem(selectedItem)\n }\n this.moveKeyboardFocus(null)\n }\n return 'select'\n }\n default: {\n return 'default'\n }\n }\n }\n\n @autobind\n moveKeyboardFocus(toIndex) {\n if (this.listRef) {\n // remove className from old focused item\n const focusedItems = this.listRef.querySelectorAll('.rfd-ui-dropdown-list-item-focused')\n for (const focusedItem of focusedItems) {\n focusedItem.classList.remove('rfd-ui-dropdown-list-item-focused')\n }\n // add className to the new focused item\n this.keyboardFocusIndex = toIndex\n if (null != this.keyboardFocusIndex) {\n const newFocuseditem = this.listRef.querySelectorAll('.rfd-ui-dropdown-list-item')[this.keyboardFocusIndex]\n if (newFocuseditem) {\n newFocuseditem.classList.add('rfd-ui-dropdown-list-item-focused')\n // scroll container to item\n const dropdownContent = DOMclosest(this.listRef, '.rfd-ui-dropdown-content')\n if (dropdownContent) {\n const containerTop = dropdownContent.scrollTop\n const containerHeight = dropdownContent.clientHeight\n const listHeight = this.listRef.scrollHeight\n const itemTop = newFocuseditem.offsetTop\n const itemHeight = newFocuseditem.offsetHeight\n if (itemTop < containerTop) {\n dropdownContent.scrollTop = Math.max(0, itemTop - SCROLL_TO_ITEM_MARGIN)\n } else if (itemTop + itemHeight > containerTop + containerHeight) {\n dropdownContent.scrollTop = Math.min(\n listHeight - containerHeight,\n itemTop + itemHeight + SCROLL_TO_ITEM_MARGIN - containerHeight\n )\n }\n }\n }\n }\n }\n }\n\n componentDidUpdate(_prevProps, prevState) {\n if (this.state.items.length != prevState.items.length) {\n this.moveKeyboardFocus(0)\n }\n }\n\n componentDidMount() {\n this.moveKeyboardFocus(0)\n }\n\n render() {\n const { items } = this.state\n const { filter } = this.props\n return (\n <div className=\"rfd-ui-dropdown-list\" ref={this.setListRef}>\n {items.map((item, index) => (\n <div className=\"rfd-ui-dropdown-list-item\" data-item-index={index} key={null == item.id ? index : item.id}>\n {item.render ? item.render({ index, item, filter }) : item.id}\n </div>\n ))}\n </div>\n )\n }\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport autobind from 'autobind-decorator'\nimport Popup, { PopupTrigger } from '@aytm/lib/rfd-ui/components/basic/popup'\n\nimport '@aytm/lib/rfd-ui/styles/basic/text-popup.scss'\n\nexport default class TextPopup extends Component {\n static propTypes = {\n trigger: PropTypes.string,\n text: PropTypes.string,\n content: PropTypes.string\n }\n\n @autobind\n renderContent() {\n const { content } = this.props\n\n return <div dangerouslySetInnerHTML={{ __html: content }} />\n }\n\n render() {\n const { trigger = 'hover', text, ...props } = this.props\n return (\n <PopupTrigger trigger={trigger}>\n <Popup\n width=\"350px\"\n className=\"rfd-ui-popup-notification\"\n direction=\"topright\"\n headerCloseButton={false}\n {...props}\n content={this.renderContent}\n >\n <span className=\"rfd-ui-popup-notification-link\" dangerouslySetInnerHTML={{ __html: text }} />\n </Popup>\n </PopupTrigger>\n )\n }\n}\n"],"names":["ImageAssetUploadJob","_ref","arguments","length","undefined","createAssetPath","file","_ref$params","params","ProgressivePromise","resolve","reject","progress","totalProgress","size","createParams","Object","assign","filename","name","content_type","type","filesize","asset","railsPostFetch","body","JSON","stringify","then","response","ok","json","createdAsset","uid","status","upload_urls","binary_upload_url","finish_upload_url","status_upload_url","uploadWithProgress","method","headers","_objectSpread","headersFromGoogleUploadUrl","progressEvent","Math","round","loaded","Promise","Error","fetch","getCSRFToken","mode","finishResponse","setTimeout","checkStatus","Accept","assetStatus","fileName","contentType","fileSize","catch","_error","error","VideoAssetUploadJob","processingVirtualProgress","min","url","data","onProgress","xhr","XMLHttpRequest","withCredentials","open","XDomainRequest","keys","forEach","headerKey","setRequestHeader","onload","event","target","responseText","onerror","upload","onprogress","send","ColorPickerPopup","_class","_Component","_this","_classCallCheck","_len","args","Array","_key","_callSuper","concat","popup","_inherits","key","value","_this2","this","container","props","popupHeader","querySelector","mouseup","ObservableFromEvent","document","mousemove","mousedrag","pipe","rxMergeMap","md","popupRect","DOMElementRect","startX","clientX","startY","clientY","rxMap","mm","preventDefault","top","left","containerRect","height","max","width","rxTakeUntil","subscription","subscribe","pos","style","_this$props","offsetTop","offsetLeft","targetRect","onClose","_this3","dragModal","unsubscribe","_this4","_this$props2","color","readOnly","onChange","React","Portal","className","ref","div","onClick","closePopup","ColorPicker","Component","_applyDecoratedDescriptor","prototype","autobind","getOwnPropertyDescriptor","PointerSaturation","_ManagedRenderCompone","_createClass","ManagedRenderComponent","PointerHue","_ManagedRenderCompone2","hex","colorHelper","EditableInput","_extends","label","toUpperCase","onInputChange","Saturation","pointer","Hue","direction","CustomPicker","Pagination","_Pagination","_PureDataComponent","index","total","onPageChange","page","_this$props2$prefix","prefix","_this$props2$separato","separator","disabled","classNames","PureDataComponent","propTypes","PropTypes","VideoAssetUploadManager","AsyncJobManager","concurrency","config","templateID","srcSurveyID","droppedFiles","files","slice","uploadJobs","_toConsumableArray","map","GeneralVideoAssetUploadJob","template_id","src_survey_id","fileTotalSizes","fileLoadedSizes","from","totalSize","reduce","loadedSize","totalFiles","loadedFiles","queue","apply","jobResults","result","filter","x","fileIndex","percents","fileLoadedSize","AssetFilesUploader","state","dragOver","acceptFiles","inputRef","dropAssetFileTarget","ADND","onDrop","onAssetFileDrop","onEnter","onAssetFileDragEnter","onLeave","onAssetFileDragLeave","acceptDrop","acceptAssetFileDrop","connect","mounted","disconnect","setState","_this$state$acceptFil","_this$props$multiple","multiple","_this$props$maxItems","maxItems","_len2","_key2","onDropFiles","call","current","_this$props2$multiple","_this$props2$maxItems","_this$props3","_this$props3$watchPro","watchProgress","_this$props3$withErro","withErrors","onFilesUpload","onFilesUploaded","uploadAsset","uploadVideoAssets","uploadImageAssets","assets","_this2$props$withOrig","withOriginal","videoAsset","assetUid","videoPath","original","mp4","thumbnailPath","thumbnail","imageAsset","imagePath","path","_this$props4","_this$props4$multiple","content","_this$props4$selectOn","selectOnClick","_this$state","_this$state$acceptFil2","connectDropTarget","inputFilesSelected","accept","tabIndex","uploading","ImageAssetUploadManager","configure","GeneralImageAssetUploadJob","_result$result","UploadAssetsButton","text","renderProgressText","_props$multiple","_props$withErrors","renderButton","useCallback","_ref$dragOver","ProgressPanel","DropPanel","_props$progress","_ref2","_ref2$percents","_ref2$loadedFiles","_ref2$totalFiles","LoaderDots","dotSize","dots","Dropdown","opened","children","maxHeight","align","dropdownRef","DropdownList","lastFilter","items","fetchItems","listRef","keyboardFocusIndex","nextProps","nextState","removeEventListener","mouseDownListener","addEventListener","button","selectedItemElement","DOMclosest","onSelectItem","selectedItemIndex","parseInt","dataset","itemIndex","isNaN","selectedItem","keyCode","KEYCODE_ESC","moveKeyboardFocus","KEYCODE_DOWN","KEYCODE_UP","KEYCODE_PGDOWN","KEYCODE_PGUP","KEYCODE_ENTER","toIndex","_step","_iterator","_createForOfIteratorHelper","querySelectorAll","s","n","done","classList","remove","err","e","f","newFocuseditem","add","dropdownContent","containerTop","scrollTop","containerHeight","clientHeight","listHeight","scrollHeight","itemTop","itemHeight","offsetHeight","_prevProps","prevState","setListRef","item","id","render","TextPopup","dangerouslySetInnerHTML","__html","_this$props$trigger","trigger","_objectWithoutProperties","_excluded","PopupTrigger","Popup","headerCloseButton","renderContent"],"sourceRoot":""}