openstack-uicore-foundation 4.2.24 → 4.2.25-beta.1
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.
- package/lib/components/index.js +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/inputs/upload-input-v2.js +1 -1
- package/lib/components/inputs/upload-input-v2.js.map +1 -1
- package/lib/components/inputs/upload-input-v3.js +2 -0
- package/lib/components/inputs/upload-input-v3.js.map +1 -0
- package/lib/css/components/index.css +1 -1
- package/lib/css/components/index.css.map +1 -1
- package/lib/css/components/inputs/upload-input-v3.css +2 -0
- package/lib/css/components/inputs/upload-input-v3.css.map +1 -0
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/index.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/./src/components/ajaxloader/index.js","webpack://openstack-uicore-foundation/./src/components/attendance-tracker.js","webpack://openstack-uicore-foundation/./src/components/bulk-actions-selector/index.js","webpack://openstack-uicore-foundation/./src/components/circle-button/index.module.scss","webpack://openstack-uicore-foundation/./src/components/circle-button/index.js","webpack://openstack-uicore-foundation/./src/components/clock.js","webpack://openstack-uicore-foundation/./src/components/exclusive-wrapper.js","webpack://openstack-uicore-foundation/external commonjs \"react-final-form\"","webpack://openstack-uicore-foundation/./src/components/extra-questions/constants.js","webpack://openstack-uicore-foundation/./src/components/extra-questions/index.js","webpack://openstack-uicore-foundation/./src/components/forms/rsvp-form.js","webpack://openstack-uicore-foundation/./src/components/forms/simple-form.js","webpack://openstack-uicore-foundation/./src/components/fragment-parser.js","webpack://openstack-uicore-foundation/./src/components/free-text-search/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/access-levels-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/action-dropdown/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/attendee-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/checkbox-list.js","webpack://openstack-uicore-foundation/./src/components/inputs/company-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/country-dropdown.js","webpack://openstack-uicore-foundation/./src/components/inputs/country-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-datetime\"","webpack://openstack-uicore-foundation/./src/components/inputs/datetimepicker/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/dropdown.js","webpack://openstack-uicore-foundation/./src/components/inputs/editor-input/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/event-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/Creatable\"","webpack://openstack-uicore-foundation/./src/components/inputs/free-multi-text-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/group-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/grouped-dropdown/OptionGroup.js","webpack://openstack-uicore-foundation/./src/components/inputs/grouped-dropdown/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/language-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/member-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/operator-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/organization-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/promocode-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/radio-list.js","webpack://openstack-uicore-foundation/./src/components/inputs/registration-company-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/components\"","webpack://openstack-uicore-foundation/./src/components/inputs/speaker-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/sponsor-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/sponsored-project-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/stepped-select/index.module.less?b434","webpack://openstack-uicore-foundation/./src/components/inputs/stepped-select/index.jsx","webpack://openstack-uicore-foundation/./src/components/inputs/summit-days-select.js","webpack://openstack-uicore-foundation/./src/components/inputs/summit-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/summit-venues-select.js","webpack://openstack-uicore-foundation/./src/components/inputs/tag-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/text-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/textarea-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/ticket-types-input.js","webpack://openstack-uicore-foundation/external commonjs \"extend\"","webpack://openstack-uicore-foundation/external commonjs \"dropzone/dist/dropzone.css\"","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input-v2/icon.js","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input-v2/dropzone.js","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input-v2/index.js","webpack://openstack-uicore-foundation/external commonjs \"react-dropzone\"","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input/index.js","webpack://openstack-uicore-foundation/./src/components/progressive-img/index.module.scss","webpack://openstack-uicore-foundation/./src/components/progressive-img/index.js","webpack://openstack-uicore-foundation/./src/components/raw-html/index.js","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/constants.js","webpack://openstack-uicore-foundation/external commonjs \"react-bootstrap\"","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/schedule-event.js","webpack://openstack-uicore-foundation/external commonjs \"react-dom\"","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/schedule-event-list.js","webpack://openstack-uicore-foundation/external commonjs \"@react-pdf/renderer\"","webpack://openstack-uicore-foundation/./src/components/schedule-print/schedule-print-view.js","webpack://openstack-uicore-foundation/./src/components/schedule-print/styles.module.scss","webpack://openstack-uicore-foundation/./src/components/schedule-print/schedule-print-button.js","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/index.js","webpack://openstack-uicore-foundation/./src/components/sections/panel.js","webpack://openstack-uicore-foundation/./src/components/security/constants.js","webpack://openstack-uicore-foundation/external commonjs \"browser-tabs-lock\"","webpack://openstack-uicore-foundation/external commonjs \"js-cookie\"","webpack://openstack-uicore-foundation/./src/components/security/methods.js","webpack://openstack-uicore-foundation/./src/components/simple-link-list/index.js","webpack://openstack-uicore-foundation/./src/components/summit-dropdown/index.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTable.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTable.js","webpack://openstack-uicore-foundation/external commonjs \"immutability-helper\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd-html5-backend\"","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTable.js","webpack://openstack-uicore-foundation/./src/components/table/TableHeading.js","webpack://openstack-uicore-foundation/./src/components/table/TableRow.js","webpack://openstack-uicore-foundation/./src/components/table/ActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table/Table.js","webpack://openstack-uicore-foundation/./src/components/table/TableCell.js","webpack://openstack-uicore-foundation/external commonjs \"video.js\"","webpack://openstack-uicore-foundation/external commonjs \"video.js/dist/video-js.css\"","webpack://openstack-uicore-foundation/./src/components/video-stream.js","webpack://openstack-uicore-foundation/./src/models/summit-event.js","webpack://openstack-uicore-foundation/./src/utils/actions.js","webpack://openstack-uicore-foundation/external commonjs \"spark-md5\"","webpack://openstack-uicore-foundation/external commonjs \"crypto-js/sha256\"","webpack://openstack-uicore-foundation/external commonjs \"crypto-js/enc-base64url\"","webpack://openstack-uicore-foundation/external commonjs \"crypto-js/enc-hex\"","webpack://openstack-uicore-foundation/./src/utils/crypto.js","webpack://openstack-uicore-foundation/./src/utils/methods.js","webpack://openstack-uicore-foundation/./src/utils/query-actions.js","webpack://openstack-uicore-foundation/./src/utils/questions-set.js","webpack://openstack-uicore-foundation/./src/i18n/ sync ^\\.\\/.*\\.json$","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\"","webpack://openstack-uicore-foundation/external commonjs \"dropzone\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"idtoken-verifier\"","webpack://openstack-uicore-foundation/external commonjs \"lodash\"","webpack://openstack-uicore-foundation/external commonjs \"moment-timezone\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd\"","webpack://openstack-uicore-foundation/external commonjs \"react-rte\"","webpack://openstack-uicore-foundation/external commonjs \"react-select\"","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/Async\"","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/AsyncCreatable\"","webpack://openstack-uicore-foundation/external commonjs \"react-tooltip\"","webpack://openstack-uicore-foundation/external commonjs \"superagent/lib/client\"","webpack://openstack-uicore-foundation/external commonjs \"sweetalert2\"","webpack://openstack-uicore-foundation/external commonjs \"urijs\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"i18n-react\"","webpack://openstack-uicore-foundation/./src/components/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nconst AjaxLoader = ({\n show,\n relative,\n color,\n size,\n children,\n }) => {\n\n let styles = {\n display: show ? 'block' : 'none',\n width: '100%',\n height: '100%',\n position: relative ? 'absolute' : 'fixed',\n zIndex: 10000000,\n margin: 'auto',\n cursor: 'wait',\n backgroundColor: 'rgba(0,0,0,0.2)',\n top: 0,\n left: 0\n };\n\n let styleSpinner = {\n fontSize: size + 'px',\n color: 'black',\n };\n\n let styleSpinnerContainer = {\n width: '250px',\n height: '75px',\n textAlign: 'center',\n position: relative ? 'relative' : 'fixed',\n top: relative ? '50%' : '0',\n left: relative ? '' : '0',\n right: '0',\n bottom: '0',\n margin: 'auto',\n zIndex: 10,\n color: '#ffffff'\n };\n\n let styleBackground = {\n background: color,\n opacity: '0.8',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0\n };\n\n return (\n <div className=\"ajax-loader-container\" style={styles}>\n <div style={styleSpinnerContainer}>\n <i className=\"fa fa-spinner fa-spin\" style={styleSpinner}></i>\n <div>\n {children}\n </div>\n </div>\n <div style={styleBackground} className=\"loader-background\"></div>\n </div>\n );\n};\n\nexport default AjaxLoader;\n","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport http from 'superagent/lib/client';\nimport {getAccessToken} from './security/methods';\n\n// SCOPES NEEDED\n// %s/me/summits/events/leave\n// %s/me/summits/events/enter\n\nclass AttendanceTracker extends React.Component {\n\n componentDidMount() {\n const {trackEnter, onBeforeUnload} = this;\n\n // track enter\n trackEnter();\n\n if (typeof window !== 'undefined') {\n window.addEventListener(\"beforeunload\", onBeforeUnload);\n }\n }\n\n componentWillUnmount() {\n const {trackLeave, onBeforeUnload} = this;\n\n // track leave\n trackLeave();\n\n if (typeof window !== 'undefined') {\n window.removeEventListener(\"beforeunload\", onBeforeUnload);\n }\n }\n\n trackEnter = async () => {\n const {apiBaseUrl, summitId, sourceId, sourceName} = this.props;\n const location = this.getLocation();\n try{\n const accessToken = await getAccessToken();\n http.put(`${apiBaseUrl}/api/v1/summits/${summitId}/metrics/enter`)\n .send({access_token: accessToken, type: sourceName, source_id: sourceId, location: location})\n .end(() => console.log('ENTER PAGE'));\n }\n catch (e){\n console.log(e);\n }\n };\n\n trackLeave = async () => {\n const {apiBaseUrl, summitId, sourceId, sourceName} = this.props;\n const location = this.getLocation();\n try {\n const accessToken = await getAccessToken();\n\n http.post(`${apiBaseUrl}/api/v1/summits/${summitId}/metrics/leave`)\n .send({access_token: accessToken, type: sourceName, source_id: sourceId, location: location})\n .end(() => console.log('LEFT PAGE'));\n }\n catch (e){\n console.log(e);\n }\n };\n\n onBeforeUnload = async () => {\n const {apiBaseUrl, summitId, sourceId, sourceName} = this.props;\n const location = this.getLocation();\n try {\n const accessToken = await getAccessToken();\n navigator.sendBeacon(\n `${apiBaseUrl}/api/v1/summits/${summitId}/metrics/leave?access_token=${accessToken}&type=${sourceName}&source_id=${sourceId}&location=${location}`, {});\n return undefined;\n }\n catch (e){\n console.log(e);\n }\n };\n\n getLocation = () => {\n if (typeof window !== 'undefined') {\n return encodeURIComponent(window.location.href);\n }\n return '';\n };\n\n render() {\n return null;\n }\n}\n\nAttendanceTracker.propTypes = {\n sourceName: PropTypes.string,\n sourceId: PropTypes.number,\n summitId: PropTypes.number.isRequired,\n apiBaseUrl: PropTypes.string.isRequired\n};\n\nAttendanceTracker.defaultProps = {\n sourceId: 0,\n sourceName: 'GENERAL'\n};\n\nexport default AttendanceTracker;\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport T from \"i18n-react/dist/i18n-react\";\nimport './styles.less';\nclass ScheduleAdminsBulkActionsSelector extends React.Component {\n\n onPerformBulkAction(){\n let selectedBulkAction = this.actionTypeSelect.value;\n if(selectedBulkAction === '') return;\n this.props.onSelectedBulkAction(selectedBulkAction);\n }\n\n render(){\n let { onSelectAll, bulkOptions, show } = this.props;\n return (\n <div className=\"bulk-actions-selector-container\">\n {show &&\n <div className=\"row\">\n <div className=\"col-md-8\">\n <input type=\"checkbox\" onClick={onSelectAll}/>\n <select ref={(select) => { this.actionTypeSelect = select; }}>\n <option value=\"\">{T.translate(\"published_bulk_actions_selector.options.default\")}</option>\n {\n bulkOptions.map((option, idx) => (\n <option key={idx} value={option.value}>{option.label}</option>\n ))\n }\n </select>\n </div>\n <div className=\"col-md-4\">\n <button onClick={this.onPerformBulkAction.bind(this)} title={ T.translate(\"published_bulk_actions_selector.titles.go\")} className=\"btn btn-default btn-sm\">\n <i className=\"fa fa-play\"> {T.translate(\"published_bulk_actions_selector.buttons.go\")}</i>\n </button>\n </div>\n </div>\n }\n </div>\n )\n }\n}\n\nexport default ScheduleAdminsBulkActionsSelector;\n","// extracted by mini-css-extract-plugin\nexport default {\"circleButton\":\"pTjbvR2PI3JIAfGGYR5C\",\"add\":\"BnU6_vcWc8sasL8roBPA\",\"added\":\"yREg1belHCLDAYYfAg77\",\"enter\":\"mFp_9X3SzjgPNXRSXiFR\"};","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.module.scss';\n\nconst isLive = (event, nowUtc) => {\n const hasEnded = nowUtc > event.end_date;\n const hasStarted = (event.start_date - nowUtc) < 1;\n return hasStarted && !hasEnded;\n};\n\nconst CircleButton = ({event, isScheduled, nowUtc, addToSchedule, removeFromSchedule, enterClick, alwaysShowEnter}) => {\n\n const isLiveNow = isLive(event, nowUtc);\n let buttonClass = null;\n let iconClass = null;\n let onClick = null;\n const handleClick = (ev, action) => {\n ev.preventDefault();\n ev.stopPropagation();\n action(event);\n };\n\n\n if (isLiveNow || alwaysShowEnter) {\n buttonClass = `${styles.enter} enter`;\n iconClass = 'fa-sign-in';\n onClick = ev => handleClick(ev, enterClick);\n } else if (removeFromSchedule && addToSchedule && isScheduled) {\n buttonClass = `${styles.added} added`;\n iconClass = 'fa-check';\n onClick = ev => handleClick(ev, removeFromSchedule);\n } else if (removeFromSchedule && addToSchedule) {\n buttonClass = `${styles.add} add`;\n iconClass = 'fa-plus';\n onClick = ev => handleClick(ev, addToSchedule);\n }\n\n if (!onClick) return null;\n\n\n return (\n <button className={`${styles.circleButton} ${buttonClass}`} onClick={onClick}>\n <i className={`fa ${iconClass}`} aria-hidden=\"true\" />\n </button>\n );\n};\n\nCircleButton.propTypes = {\n event: PropTypes.object.isRequired,\n nowUtc: PropTypes.number.isRequired,\n isScheduled: PropTypes.bool.isRequired,\n enterClick: PropTypes.func.isRequired,\n addToSchedule: PropTypes.func,\n removeFromSchedule: PropTypes.func,\n alwaysShowEnter: PropTypes.bool,\n};\n\nCircleButton.defaultProps = {\n addToSchedule: null,\n removeFromSchedule: null,\n alwaysShowEnter: false\n};\n\nexport default CircleButton;\n","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport React from 'react';\nimport moment from \"moment-timezone\";\nimport FragmentParser from \"./fragment-parser\";\nimport {getTimeServiceUrl} from '../utils/methods';\n\n/**\n * class Clock\n */\nclass Clock extends React.Component {\n\n constructor(props) {\n super(props);\n this.fragmentParser = new FragmentParser();\n this.interval = null;\n this.state = {\n timestamp: null,\n manualSet : false,\n }\n this._isMounted = false;\n this.onVisibilityChange = this.onVisibilityChange.bind(this);\n }\n\n /**\n * @param response\n * @param localBefore\n */\n processServerTimeResponse = (response, localBefore) => {\n const localAfter = moment().unix();\n let timestamp = localAfter;\n if (response) {\n timestamp = response.timestamp + (localAfter - localBefore);\n }\n if(this._isMounted) {\n console.log(`Clock::processServerTimeResponse setting timestamp ${timestamp}`)\n this.setState({timestamp});\n }\n if(this.props.onTick)\n this.props.onTick(timestamp);\n }\n\n processServerTimeResponseError = () => {\n const localAfter = moment().unix();\n let timestamp = localAfter;\n if(this._isMounted) {\n console.log(`Clock::processServerTimeResponseError setting timestamp ${timestamp}`)\n this.setState({timestamp});\n }\n if(this.props.onTick)\n this.props.onTick(timestamp);\n }\n\n componentDidMount() {\n this._isMounted = true;\n const {timezone = 'UTC', now} = this.props;\n const nowQS = this.fragmentParser.getParam('now');\n const momentQS = moment.tz(nowQS, 'YYYY-MM-DD,hh:mm:ss', timezone);\n let timestamp = null;\n let manualSet = false;\n if (momentQS.isValid()) {\n timestamp = momentQS.valueOf() / 1000;\n console.log(`Clock::componentDidMount nowQS ${nowQS} is valid setting timestamp ${timestamp}`);\n manualSet = true;\n } else if (now) {\n timestamp = now\n } else {\n const localBefore = moment().unix();\n this.getServerTime()\n .then((response) => this.processServerTimeResponse(response, localBefore))\n .catch(() => this.processServerTimeResponseError())\n }\n\n if(timestamp) {\n this.setState({timestamp, manualSet});\n if(this.props.onTick)\n this.props.onTick(timestamp);\n }\n\n this.interval = setInterval(this.tick, 1000);\n document.addEventListener(\"visibilitychange\", this.onVisibilityChange, false)\n }\n\n onVisibilityChange() {\n const visibilityState = document.visibilityState;\n const {manualSet} = this.state;\n if (visibilityState === \"visible\") {\n console.log(`Clock::onVisibilityChange manualSet ${manualSet}`)\n if(manualSet) return;\n const localBefore = moment().unix();\n this.getServerTime()\n .then((response) => this.processServerTimeResponse(response, localBefore))\n .catch(() => this.processServerTimeResponseError());\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n clearInterval(this.interval);\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange)\n this.interval = null;\n }\n\n getServerTime = () => {\n const timeServiceUrl = getTimeServiceUrl();\n return fetch(`${timeServiceUrl}`).then(async (response) => {\n if (response.status === 200) {\n return response.json();\n }\n return Promise.reject(null);\n })\n .catch(err => {\n console.log(err);\n return Promise.reject(err);\n });\n };\n\n tick = () => {\n const {timestamp} = this.state;\n if (timestamp !== null) {\n if(this.props.onTick)\n this.props.onTick(timestamp + 1);\n if(this._isMounted)\n this.setState({timestamp: timestamp + 1})\n }\n };\n\n // epoch utc time in seconds\n now = () => {\n return this.state.timestamp;\n };\n\n render() {\n const {display, timezone = 'UTC'} = this.props;\n const {timestamp} = this.state;\n\n if (!display || !timestamp) return null;\n\n return (\n <div style={{marginTop: '50px', textAlign: 'center', fontSize: '20px'}}>\n {moment.tz(timestamp * 1000, timezone).format('YYYY-MM-DD hh:mm:ss')}\n </div>\n );\n }\n\n}\n\nexport default Clock;\n","/**\n * Copyright 2019 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\n\n\nexport default class Exclusive extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.showField = this.showField.bind(this);\n }\n\n showField() {\n let {name} = this.props;\n let exclusiveSections = window.EXCLUSIVE_SECTIONS;\n\n return exclusiveSections ? exclusiveSections.includes(name) : false;\n }\n\n render() {\n let {children} = this.props;\n\n if (this.showField()) {\n return children;\n }\n\n return null;\n\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-final-form\");","export const QuestionType_Text = \"Text\";\nexport const QuestionType_TextArea = \"TextArea\";\nexport const QuestionType_Checkbox = \"CheckBox\";\nexport const QuestionType_RadioButtonList = \"RadioButtonList\";\nexport const QuestionType_ComboBox = \"ComboBox\";\nexport const QuestionType_CheckBoxList = \"CheckBoxList\";\nexport const QuestionType_CountryComboBox = \"CountryComboBox\";\nexport const QuestionType_RadioButton = \"RadioButton\";\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {Fragment, useEffect, useRef, useState, useImperativeHandle} from 'react';\nimport PropTypes from 'prop-types';\nimport Input from '../inputs/text-input'\nimport Dropdown from '../inputs/dropdown'\nimport RadioList from '../inputs/radio-list'\nimport CheckboxList from '../inputs/checkbox-list'\nimport QuestionsSet from '../../utils/questions-set';\nimport {Field, Form} from \"react-final-form\";\nimport {toSlug} from \"../../utils/methods\";\nimport {\n QuestionType_Checkbox,\n QuestionType_CheckBoxList,\n QuestionType_ComboBox,\n QuestionType_CountryComboBox,\n QuestionType_RadioButton,\n QuestionType_RadioButtonList,\n QuestionType_Text,\n QuestionType_TextArea\n} from \"./constants\";\n\nimport \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\";\nimport './index.scss';\n\nconst InputAdapter = ({ input, meta, question, className, isDisabled, isRequired, ...rest }) => {\n\n return (\n <Input\n {...input}\n {...rest}\n containerClassName={className}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n id={toSlug(question.name)}\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={input.onChange}\n placeholder={question.placeholder}\n />\n )\n}\n\nconst RadioButtonListAdapter = ({ input, meta, question, isDisabled, isRequired, ...rest }) => {\n\n return (\n <RadioList\n {...input}\n {...rest}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n id={toSlug(question.name)}\n overrideCSS={true}\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={input.onChange}\n />\n )};\n\nconst DropdownAdapter = ({ input, meta, question, isDisabled, isRequired, ...rest }) => {\n\n return (<Dropdown\n {...input}\n {...rest}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n id={toSlug(question.name)}\n overrideCSS={true}\n className=\"ddl-extra-questions-container\"\n classNamePrefix=\"ddl-extra-questions\"\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={input.onChange}\n />)\n}\n\nconst CheckBoxListAdapter = ({ input, meta, question, isDisabled, isRequired, maxValues, ...rest }) => {\n\n const shouldChange = (ev) => {\n const question_answers = ev.target.value;\n // if there's a max value of options checked and the value from the input is higher than the max, don't change the value\n if (maxValues > 0 && question_answers.length > maxValues) {\n return null\n }\n return input.onChange(ev)\n }\n return (\n <CheckboxList\n {...input}\n {...rest}\n id={toSlug(question.name)}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={shouldChange}\n />\n )\n}\n\nconst getValidator = isRequired =>\n isRequired ? value => (value ? undefined : \"Required\") : () => {};\n\nconst ExtraQuestionsForm = React.forwardRef(({\n extraQuestions,\n userAnswers,\n onAnswerChanges,\n className = 'questions-form',\n questionContainerClassName = 'question-container',\n questionLabelContainerClassName = 'question-label-container',\n questionControlContainerClassName= 'question-control-container',\n readOnly = false,\n debug = false,\n buttonText = 'Submit',\n RequiredErrorMessage = 'Required',\n ValidationErrorClassName = 'extra-question-error',\n allowExtraQuestionsEdit = true,\n onError = (e) => console.log('form errors: ', e),\n shouldScroll2FirstError = true\n }, ref) => {\n\n let submit = null;\n\n const questionRefs = useRef({});\n const formRef = useRef(null);\n const [answers, setAnswers] = useState({});\n\n useEffect(() => {\n formatUserAnswers();\n }, [extraQuestions])\n\n // @see https://beta.reactjs.org/reference/react/useImperativeHandle\n useImperativeHandle(ref, () => ({\n doSubmit() {\n formRef.current?.dispatchEvent(new Event(\"submit\", { cancelable: true, bubbles: true }));\n },\n scroll2QuestionById(questionId) {\n scrollToQuestion(questionId);\n }\n }));\n\n const getQuestionRef = (id) => {\n if (!questionRefs.current[id]) {\n questionRefs.current[id] = React.createRef();\n }\n return questionRefs.current[id];\n };\n\n const formatUserAnswers = () => {\n const qs = new QuestionsSet(extraQuestions, userAnswers);\n setAnswers(qs.formatAnswers());\n }\n\n const Condition = ({when, rule, children}) => (\n <Field name={when} subscription={{value: true}}>\n {({input: {value}}) =>\n checkVisibility(rule, checkRule(value, rule), children)\n }\n </Field>\n );\n\n const Error = ({ name }) => (\n <Field name={name} subscription={{ error: true, touched: true, submitFailed: true }}>\n {({ meta: { error, touched, submitFailed } }) =>\n error && (touched || submitFailed) ? <div className={ValidationErrorClassName}>{error}</div> : null\n }\n </Field>\n );\n\n const checkRule = (value, rule) => {\n let values = rule.answer_values;\n\n if (Array.isArray(value)) {\n if (!value.length) return false;\n let res = rule.answer_values_operator === \"And\";\n values.forEach((v) => {\n if (rule.answer_values_operator === \"And\") {\n res = res && value.includes(parseInt(v));\n } else {\n // Or\n res = res || value.includes(parseInt(v));\n }\n });\n return res;\n }\n return values.includes(value.toString());\n };\n\n const checkVisibility = (rule, ruleResult, children) => {\n if (rule.visibility === \"Visible\") {\n if (rule.visibility_condition === \"Equal\") {\n if (ruleResult) return children;\n delete questionRefs.current[rule.sub_question.id]\n return null;\n }\n // Non Equal\n if(!ruleResult){\n return children;\n }\n delete questionRefs.current[rule.sub_question.id]\n return null;\n }\n // not visible\n if (rule.visibility_condition === \"Equal\") {\n if (!ruleResult) return children;\n delete questionRefs.current[rule.sub_question.id]\n return null;\n }\n if (ruleResult) return children;\n delete questionRefs.current[rule.sub_question.id]\n return null;\n };\n\n const getLabel = (q) => {\n // Keep the last word and the required asterisk on the same line\n const nonBreakingSpace = String.fromCharCode(160); // equals to \n // replace line breaks and remove outer <p>\n const label = q?.label?.replace(/\\n/g, '<br />').replace(/<p>(.*)<\\/p>/gi, '$1');\n const questions2Exclude = [QuestionType_Checkbox, QuestionType_RadioButton]\n // Asterisk for mandatory questions only shown on label except for those questions\n // included on questions2Exclude\n const labelText = q.mandatory && !questions2Exclude.includes(q.type) ? `${label}${nonBreakingSpace}<b>*</b>` : label;\n return (<label dangerouslySetInnerHTML={{__html: labelText}} htmlFor={toSlug(q.name)} id={`${toSlug(q.name)} label`} />);\n }\n\n const isAnswered = (q, answers) => {\n const slug = toSlug(q.name);\n if(!answers.hasOwnProperty(slug)) return false;\n const answer = answers[slug];\n // check type\n if (Array.isArray(answer)) return answer.length > 0;\n if (typeof answer === 'string') return answer.length > 0;\n if (typeof answer === 'number') return answer > 0;\n if (typeof answer === 'boolean') return answer;\n return false;\n }\n\n const renderQuestion = (q) => {\n let questionValues = q.values;\n // disable field if edit isn't allowed and the questions is answered\n const isDisabled = !allowExtraQuestionsEdit && isAnswered(q, answers);\n // @see https://codesandbox.io/s/vg05y?file=/index.js\n if (q.type === QuestionType_Text) {\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>{getLabel(q)}</span>\n <div className={questionControlContainerClassName}>\n <Field name={toSlug(q.name)}\n question={q}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n validate={getValidator(q.mandatory)}\n component={InputAdapter}\n />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_TextArea) {\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>{getLabel(q)}</span>\n <div className={questionControlContainerClassName}>\n <Field\n validate={getValidator(q.mandatory)}\n name={toSlug(q.name)}\n id={toSlug(q.name)}\n disabled={isDisabled}\n required={q.mandatory}\n component=\"textarea\"/>\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_Checkbox) {\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={`${questionContainerClassName} checkbox-wrapper`}>\n <div className={`${questionControlContainerClassName} input-wrapper`}>\n <div className=\"form-check abc-checkbox\">\n <Field\n name={toSlug(q.name)}\n id={toSlug(q.name)}\n validate={getValidator(q.mandatory)}\n disabled={isDisabled}\n required={q.mandatory}\n type=\"checkbox\"\n className=\"form-check-input\"\n component=\"input\" />\n <label className=\"form-check-label\" htmlFor={toSlug(q.name)}/>\n {q.mandatory && <span className='checkbox-mandatory'><b>*</b></span>}\n </div>\n </div>\n <span className={`eq-checkbox-label ${questionLabelContainerClassName}`}>\n {getLabel(q)}\n </span>\n </div>\n <Error name={toSlug(q.name)}/>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_RadioButton){\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={`${questionContainerClassName} checkbox-wrapper`}>\n <div className={`${questionControlContainerClassName} input-wrapper`}>\n <div className=\"form-check abc-radio\">\n <Field\n name={toSlug(q.name)}\n id={toSlug(q.name)}\n validate={getValidator(q.mandatory)}\n disabled={isDisabled}\n required={q.mandatory}\n type=\"radio\"\n className=\"form-check-input\"\n value=\"true\"\n component=\"input\" />\n <label className=\"form-check-label\" htmlFor={toSlug(q.name)}/>\n {q.mandatory && <span className='checkbox-mandatory'><b>*</b></span>}\n </div>\n </div>\n <span className={`eq-checkbox-label ${questionLabelContainerClassName}`}>\n {getLabel(q)}\n </span>\n </div>\n <Error name={toSlug(q.name)}/>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_RadioButtonList) {\n const options = questionValues.map(val => ({label : val.label, value : val.id}));\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>\n {getLabel(q)}\n </span>\n <div className={questionControlContainerClassName}>\n <Field name={toSlug(q.name)}\n options={options}\n question={q}\n validate={getValidator(q.mandatory)}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n component={RadioButtonListAdapter} />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_ComboBox || q.type === QuestionType_CountryComboBox) {\n const options = questionValues.map(val => ({label : val.label, value : val.id}));\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>\n {getLabel(q)}\n </span>\n <div className={`${questionControlContainerClassName} reactSelectDropdown`}>\n <Field name={toSlug(q.name)}\n options={options}\n question={q}\n validate={getValidator(q.mandatory)}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n component={DropdownAdapter}\n />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_CheckBoxList) {\n const options = questionValues.map(val => ({label : val.label, value : val.id}));\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>\n {getLabel(q)}\n </span>\n <div className={questionControlContainerClassName}>\n <Field name={toSlug(q.name)}\n className={questionControlContainerClassName}\n validate={getValidator(q.mandatory)}\n options={options}\n question={q}\n maxValues={q.max_selected_values}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n component={CheckBoxListAdapter}\n />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n return null;\n };\n\n const isVisible = (q) => {\n return !!questionRefs.current[q.id];\n };\n\n const validateQuestion = (q, values, errors) => {\n if (q.mandatory && isVisible(q)) {\n const slug = toSlug(q.name);\n if (!values.hasOwnProperty(toSlug(slug)) || values[toSlug(slug)] === \"\" || values[slug].length === 0) {\n errors[slug] = RequiredErrorMessage;\n }\n }\n // validate sub rules\n q.sub_question_rules?.forEach((r) => {\n validateQuestion(r.sub_question, values, errors);\n });\n };\n\n const onSubmit = (values) => {\n onAnswerChanges(values)\n };\n\n const validate = (values) => {\n const errors = {};\n extraQuestions.forEach( q => {\n validateQuestion(q, values, errors);\n });\n return errors;\n }\n\n if(!Object.keys(answers).length) return null;\n\n const getErrorFields = (q, invalidFormFields, errorFields) => {\n if (invalidFormFields.includes(toSlug(q.name))) {\n errorFields.push(q);\n }\n // find errors on sub rules\n q.sub_question_rules?.forEach((r) => {\n getErrorFields(r.sub_question, invalidFormFields, errorFields);\n });\n }\n\n const getFirstError = (invalidFormFields) => {\n const errorFields = [];\n extraQuestions.forEach(q => {\n getErrorFields(q, invalidFormFields, errorFields);\n });\n return errorFields.sort((a, b) => a.order > b.order)[0];\n }\n\n const scrollToFirstError = (invalidFormFields) => {\n const firstError = getFirstError(invalidFormFields);\n if (firstError) {\n scrollToQuestion(firstError.id);\n }\n }\n\n const scrollToQuestion = (questionId) => {\n const ref = questionRefs.current[questionId];\n if (ref && ref.current) {\n ref.current.focus();\n ref.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n }\n };\n\n if (!Object.keys(answers).length) return null;\n\n return (\n <div className={className}>\n <Form\n validate={validate}\n onSubmit={onSubmit}\n initialValues={answers}>\n\n {({handleSubmit, form, submitting, pristine, values}) => {\n submit = handleSubmit;\n return (\n <form\n onSubmit={(event) => {\n const invalidFormFields = form.getRegisteredFields().filter(field => form.getFieldState(field).invalid);\n if (invalidFormFields.length > 0) {\n const firstError = getFirstError(invalidFormFields);\n // Note: The second argument is an stable reference to the errer extra question\n // This ensures that even after re-renders, we have a consistent reference for actions such as scrolling or focusing.\n // Passing a direct DOM element might not reliably reflect the current element if the component updates.\n onError(invalidFormFields, questionRefs.current[firstError.id], firstError.id);\n if (shouldScroll2FirstError)\n scrollToFirstError(invalidFormFields)\n }\n handleSubmit(event)\n }}\n ref={formRef}>\n {readOnly ?\n <fieldset disabled=\"disabled\">\n {extraQuestions.map((q) => renderQuestion(q))}\n </fieldset>\n :\n extraQuestions.map((q) => renderQuestion(q))\n }\n {debug && <pre>{JSON.stringify(values, 0, 2)}</pre>}\n </form>\n );\n }}\n </Form>\n {!ref &&\n <button\n type=\"submit\"\n onClick={(event) => {\n submit(event);\n }}\n style={{marginTop: 10}}\n >\n {buttonText}\n </button>\n }\n </div>\n )\n});\n\nExtraQuestionsForm.propTypes = {\n extraQuestions: PropTypes.array.isRequired,\n userAnswers: PropTypes.array.isRequired,\n onAnswerChanges: PropTypes.func.isRequired,\n className: PropTypes.string,\n debug: PropTypes.bool,\n buttonText: PropTypes.string,\n questionContainerClassName: PropTypes.string,\n questionLabelContainerClassName: PropTypes.string,\n questionControlContainerClassName: PropTypes.string,\n RequiredErrorMessage: PropTypes.string,\n ValidationErrorClassName: PropTypes.string,\n allowExtraQuestionsEdit: PropTypes.bool,\n shouldScroll2FirstError: PropTypes.bool,\n readOnly: PropTypes.bool\n};\n\nexport default ExtraQuestionsForm;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\nimport 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'\nimport Input from '../inputs/text-input'\nimport Dropdown from '../inputs/dropdown'\nimport RawHTML from '../raw-html'\nimport CheckboxList from '../inputs/checkbox-list'\nimport RadioList from '../inputs/radio-list'\n\n\nclass RsvpForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n answers: props.questions.map(q => ({question_id: q.id, value: null})),\n errors: props.errors\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.hasErrors = this.hasErrors.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n renderQuestion(q) {\n const {answers} = this.state;\n const value = answers.find(a => a.question_id === q.id).value;\n\n switch(q.class_name) {\n case 'RSVPMemberEmailQuestionTemplate':\n case 'RSVPMemberFirstNameQuestionTemplate':\n case 'RSVPMemberLastNameQuestionTemplate':\n case 'RSVPTextBoxQuestionTemplate':\n return (\n <Input\n id={q.id}\n value={value || ''}\n onChange={this.handleChange}\n className=\"form-control\"\n error={this.hasErrors(q.id)}\n />\n );\n break;\n case 'RSVPTextAreaQuestionTemplate':\n return (\n <textarea\n id={q.id}\n value={value || ''}\n className=\"form-control\"\n onChange={this.handleChange}\n />);\n break;\n case 'RSVPLiteralContentQuestionTemplate':\n return (<div><RawHTML>{q.value}</RawHTML></div>);\n break;\n case 'RSVPCheckBoxListQuestionTemplate':\n return (\n <CheckboxList\n id={q.id}\n value={value}\n options={q.values.map(v => ({value: `${v.id}`, label: v.label}))}\n onChange={this.handleChange}\n error={this.hasErrors(q.id)}\n />\n );\n break;\n case 'RSVPRadioButtonListQuestionTemplate':\n return (\n <RadioList\n id={q.id}\n value={value}\n onChange={this.handleChange}\n options={q.values.map(v => ({value: `${v.id}`, label: v.label}))}\n error={this.hasErrors(q.id)}\n simple\n />\n );\n break;\n case 'RSVPDropDownQuestionTemplate':\n let values = (q.is_country_selector) ? q.values.map(v => ({value:v.id, label: v.value})) : q.values;\n\n return (\n <Dropdown\n id={q.id}\n isMulti={q.is_multiselect}\n value={value}\n onChange={this.handleChange}\n placeholder={q.empty_string}\n options={values}\n />\n );\n break;\n }\n }\n\n handleChange(ev) {\n let answers = [...this.state.answers];\n let {value, id} = ev.target;\n\n if (ev.target.type === 'datetime') {\n value = value.valueOf() / 1000;\n }\n\n let answer = answers.find(a => a.question_id === parseInt(id));\n answer.value = value;\n\n this.setState({answers});\n }\n\n hasErrors(field) {\n let {errors} = this.state;\n if(field in errors) {\n return errors[field];\n }\n\n return '';\n }\n\n handleSubmit(ev) {\n ev.preventDefault();\n\n let { onSubmit } = this.props;\n let {answers} = this.state;\n\n onSubmit(answers);\n }\n\n render() {\n let { questions, onSubmit } = this.props;\n\n return (\n <form className=\"rsvp-form\">\n {questions.map(q =>\n <div key={'question_'+q.id} className=\"row form-group\">\n <div className=\"col-md-12\">\n <label>\n <RawHTML>{q.label}</RawHTML> {q.is_mandatory && '*'}\n </label>\n {this.renderQuestion(q)}\n </div>\n </div>\n )}\n {onSubmit &&\n <div className=\"row\">\n <div className=\"col-md-12\">\n <button className=\"btn btn-primary\" onClick={this.handleSubmit}>Submit</button>\n </div>\n </div>\n }\n </form>\n );\n }\n}\n\nexport default RsvpForm;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\nimport T from 'i18n-react/dist/i18n-react'\nimport 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'\nimport Input from '../inputs/text-input'\nimport { scrollToError, isEmpty, shallowEqual, hasErrors } from '../../utils/methods'\n\n\nclass SimpleForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n entity: {...props.entity},\n errors: props.errors\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const state = {};\n scrollToError(this.props.errors);\n\n if(prevProps.entity.id !== this.props.entity.id) {\n state.entity = {...this.props.entity};\n state.errors = {};\n }\n\n if (!shallowEqual(prevProps.errors, this.props.errors)) {\n state.errors = {...this.props.errors};\n }\n\n if (!isEmpty(state)) {\n this.setState({...this.state, ...state})\n }\n }\n\n handleChange(ev) {\n let entity = {...this.state.entity};\n let errors = {...this.state.errors};\n let {value, id} = ev.target;\n\n if (ev.target.type === 'checkbox') {\n value = ev.target.checked;\n }\n\n errors[id] = '';\n entity[id] = value;\n this.setState({entity: entity, errors: errors});\n }\n\n handleSubmit(ev) {\n let entity = {...this.state.entity};\n ev.preventDefault();\n\n this.props.onSubmit(this.state.entity);\n }\n\n createField(field) {\n let {entity, errors} = this.state;\n\n switch (field.type) {\n case 'text':\n return (\n <div key={\"field_\"+field.name} className=\"row form-group\">\n <div className=\"col-md-6\">\n <label> {field.label} </label>\n <Input\n id={field.name}\n value={entity[field.name]}\n onChange={this.handleChange}\n className=\"form-control\"\n error={hasErrors(field.name, errors)}\n />\n </div>\n </div>\n );\n break;\n case 'textarea':\n return (\n <div key={\"field_\"+field.name} className=\"row form-group\">\n <div className=\"col-md-6\">\n <label> {field.label} </label>\n <textarea\n id={field.name}\n value={entity[field.name]}\n onChange={this.handleChange}\n className=\"form-control\"\n />\n </div>\n </div>\n );\n break;\n case 'checkbox':\n return (\n <div key={\"field_\"+field.name} className=\"row form-group\">\n <div className=\"col-md-6\">\n <div className=\"form-check abc-checkbox\">\n <input type=\"checkbox\" id={field.name} checked={entity[field.name]}\n onChange={this.handleChange} className=\"form-check-input\" />\n <label className=\"form-check-label\" htmlFor={field.name}>\n {field.label}\n </label>\n </div>\n </div>\n </div>\n );\n break;\n\n }\n }\n\n render() {\n let {entity} = this.state;\n let {fields} = this.props;\n\n return (\n <form className=\"simple-form\">\n <input type=\"hidden\" id=\"id\" value={entity.id} />\n\n {fields.map(f => {\n return this.createField(f);\n })}\n\n <div className=\"row\">\n <div className=\"col-md-12 submit-buttons\">\n <input type=\"button\" onClick={this.handleSubmit}\n className=\"btn btn-primary pull-right\" value={T.translate(\"general.save\")}/>\n </div>\n </div>\n </form>\n );\n }\n}\n\nexport default SimpleForm;\n","\nexport default class FragmentParser {\n\n constructor(){\n this.originalHash = '';\n this.hash = {};\n }\n\n convertToHash(strHash)\n {\n strHash = strHash.substr(1).toLowerCase();\n let params = strHash.split('&');\n let res = {};\n for(let param of params)\n {\n param = param.split('=');\n if(param.length !== 2) continue;\n let val = param[1].trim();\n if(val === '') continue;\n\n if (val === 'true' || val === 'false')\n param[1] = val == 'true';\n\n res[param[0]] = param[1];\n }\n return res;\n }\n\n clearParams(){\n this.originalHash = '';\n this.hash = {};\n }\n\n getParam(key){\n if(typeof window !== 'undefined' && this.originalHash !== window.location.hash){\n this.originalHash = window.location.hash;\n this.hash = this.convertToHash(this.originalHash);\n }\n\n if(!this.hash.hasOwnProperty(key) ) return null;\n return this.hash[key];\n }\n\n getParams(){\n if(typeof window !== 'undefined' && this.originalHash !== window.location.hash){\n this.originalHash = window.location.hash;\n this.hash = this.convertToHash(this.originalHash);\n }\n\n return { ... this.hash };\n }\n\n deleteParam(param){\n var hash = this.getParams();\n this.clearParams();\n for(let key in hash) {\n if(key == param) continue;\n this.hash[key] = hash[key];\n }\n }\n\n deleteParams(params){\n var hash = this.getParams();\n this.clearParams();\n for(let key in hash) {\n if(params.includes(key)) continue;\n this.hash[key] = hash[key];\n }\n }\n\n setParam(key, value){\n if(typeof window !== 'undefined' && this.originalHash !== window.location.hash){\n this.originalHash = window.location.hash;\n this.hash = this.convertToHash(this.originalHash);\n }\n if(value !== null && value !== '')\n this.hash[key] = value;\n else\n delete this.hash[key];\n return this;\n }\n\n serialize(){\n let res = '';\n for(let key in this.hash)\n {\n let val = this.hash[key];\n if(res !== '') res += '&';\n res += key+'='+val;\n }\n return res;\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport React from 'react';\nimport T from \"i18n-react/dist/i18n-react\";\nimport ExtraQuestionsForm from \"../extra-questions\";\nimport PropTypes from 'prop-types';\n\nclass FreeTextSearch extends React.Component {\n\n constructor(props){\n super(props);\n this.onSearchClick = this.onSearchClick.bind(this);\n this.onClearClick = this.onClearClick.bind(this);\n this.onKeyPressed = this.onKeyPressed.bind(this);\n this.onChange = this.onChange.bind(this);\n\n this.state = {\n value: props.value || \"\",\n };\n }\n\n onSearchClick(ev){\n let { preventEvents } = this.props;\n if(preventEvents){\n ev.preventDefault();\n }\n this.doFiltering(this.state.value);\n }\n\n onClearClick(ev){\n let { preventEvents } = this.props;\n if(preventEvents){\n ev.preventDefault();\n }\n this.doFiltering('');\n this.setState({value: ''});\n }\n\n doFiltering(term = \"\"){\n this.props.onSearch(term.trim());\n }\n\n onKeyPressed(event){\n var code = event.keyCode || event.which;\n if(code === 13) {\n this.doFiltering(this.state.value);\n }\n }\n\n onChange(event){\n this.setState({\n value: event.target.value\n });\n if (this.props.onChange) this.props.onChange(event.target.value)\n }\n\n render(){\n let {value} = this.state;\n\n return(\n <div className=\"row search-container\">\n <div className=\"col-md-12\">\n <div className=\"input-group\">\n <input type=\"text\"\n value={value}\n className=\"form-control\"\n placeholder={this.props.placeholder}\n onKeyPress={this.onKeyPressed}\n onChange={this.onChange}\n />\n <span className=\"input-group-btn\" style={{width: 5 +'%'}}>\n <button onClick={this.onSearchClick} className=\"btn btn-default\" title={T.translate(\"general.search\")}>\n <i className=\"fa fa-search\" />\n </button>\n <button onClick={this.onClearClick} className=\"btn btn-default\" title={T.translate(\"general.clear\")}>\n <i className=\"fa fa-times\" />\n </button>\n </span>\n </div>\n </div>\n </div>\n )\n }\n}\nFreeTextSearch.defaultProps = {\n preventEvents: false,\n onChange: null,\n value: \"\",\n}\n\nFreeTextSearch.propTypes = {\n preventEvents: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\n\nexport default FreeTextSearch;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryAccessLevels} from '../../utils/query-actions';\n\nexport default class AccessLevelsInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getAccessLevels = this.getAccessLevels.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n getOptionValue(accessLevel){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(accessLevel);\n }\n //default\n return accessLevel.id;\n }\n\n getOptionLabel(accessLevel){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(accessLevel);\n }\n //default\n return `${accessLevel.name}`;\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'accesslevelinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getAccessLevels (input, callback) {\n let {summitId, defaultOptions} = this.props;\n\n if (!input && !defaultOptions) {\n return Promise.resolve({ options: [] });\n }\n\n queryAccessLevels(summitId,input, callback);\n }\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getAccessLevels}\n getOptionValue={m => this.getOptionValue(m)}\n getOptionLabel={m => this.getOptionLabel(m)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport './action-dropdown.less';\nimport Select from 'react-select';\n\nexport default class ActionDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value || null,\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleChange(value) {\n this.setState({value: value});\n }\n\n handleClick(ev) {\n ev.preventDefault();\n this.props.onClick(this.state.value.value);\n }\n\n render() {\n\n let {options, actionLabel, placeholder, ...rest} = this.props;\n let {value} = this.state;\n\n let smallDdl = this.props.hasOwnProperty('small') ? 'small' : '';\n let smallBtn = this.props.hasOwnProperty('small') ? 'btn-group-sm' : 'normal';\n\n let theValue = (value instanceof Object || value == null) ? value : options.find(opt => opt.value == value);\n\n\n return (\n <div className={\"action-dropdown btn-group \" + smallBtn}>\n <Select\n value={theValue}\n onChange={this.handleChange}\n options={options}\n placeholder={placeholder}\n className={\"btn-group action-select text-left\" + smallDdl}\n isClearable={false}\n />\n <button type=\"button\" className=\"btn btn-default action-button\" onClick={this.handleClick}>\n {actionLabel}\n </button>\n </div>\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useState} from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryAttendees} from '../../utils/query-actions';\n\nconst AttendeeInput = ({id, value, summitId, error, multi, onChange, getOptionValue, getOptionLabel, queryFunction, ...rest}) => {\n const queryFn = queryFunction || queryAttendees;\n const [_value, _setValue] = useState(value);\n const has_error = ( error !== '' );\n\n const _getOptionValue = (attendee) => {\n if (getOptionValue){\n return getOptionValue(attendee);\n }\n //default\n return attendee.id;\n }\n\n const _getOptionLabel = (attendee) => {\n if (getOptionLabel){\n return getOptionLabel(attendee);\n }\n //default\n return `${attendee.first_name} ${attendee.last_name} (${attendee.id})`;\n }\n\n const handleChange = (value) => {\n let ev = {target: {\n id: id,\n value: value,\n type: 'attendeeinput'\n }};\n\n onChange(ev);\n }\n\n const getAttendees = (input, callback) => {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n queryFn(summitId, input, callback);\n }\n \n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={handleChange}\n loadOptions={getAttendees}\n getOptionValue={m => _getOptionValue(m)}\n getOptionLabel={m => _getOptionLabel(m)}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n \n </div>\n );\n}\n\nexport default AttendeeInput;\n\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport PropTypes from 'prop-types'\nimport React from 'react';\nimport T from 'i18n-react/dist/i18n-react';\nimport RawHTML from '../raw-html';\n\nimport \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\";\n\nexport default class CheckboxList extends React.Component {\n\n constructor(props) {\n super(props);\n\n let otherValue = props.value ? props.value.find( v => !props.options.map(op => op.value).includes(v) ) : false;\n\n this.state = {\n otherChecked: !!otherValue\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleOtherCBChange = this.handleOtherCBChange.bind(this);\n }\n\n handleChange(event) {\n let optionValues = this.props.options.map(op => op.value);\n let value = this.props.value ? [...this.props.value] : [];\n\n if (event.target.type === 'checkbox') {\n if (event.target.checked) {\n const theVal = isNaN(event.target.value) ? event.target.value : parseInt(event.target.value);\n value.push(theVal);\n } else {\n value = value.filter( v => v != event.target.value )\n }\n } else {\n value = value.filter(v => optionValues.includes(v));\n value.push(event.target.value);\n }\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'checkboxlist'\n }};\n\n this.props.onChange(ev);\n }\n\n handleOtherCBChange(event) {\n this.setState({otherChecked: event.target.checked});\n }\n\n render() {\n\n let {onChange, value, className, options, id, children, error, disabled,name, ariaLabelledBy, ...rest} = this.props;\n let { otherChecked } = this.state;\n\n let inline = ( this.props.hasOwnProperty('inline') );\n let allowOther = ( this.props.hasOwnProperty('allowOther') );\n let otherValue = value ? value.find( v => !options.map(op => op.value).includes(v) ) : false ;\n let has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n let isDisabled = (this.props.hasOwnProperty('disabled') && disabled == true);\n\n\n let style, label;\n\n if (inline) {\n style = {\n paddingLeft: '22px',\n marginLeft: '20px',\n float: 'left'\n };\n } else {\n style = {\n paddingLeft: '22px',\n marginTop: '7px'\n }\n }\n\n return (\n <div id={`chl_wrapper_${id}`} aria-labelledby={ariaLabelledBy}>\n <div className={\"checkboxes-div\" + (has_error ? ' error' : '') }>\n { options.map(op => {\n let checked = value ? value.includes(op.value) : false;\n return (\n <div className=\"form-check abc-checkbox\" key={\"radio_key_\" + op.value} style={style}>\n <input type=\"checkbox\"\n id={`cb_${id}_${op.value}`}\n name={name? name : id }\n checked={checked}\n disabled={isDisabled}\n onChange={this.handleChange} className=\"form-check-input\" value={op.value} />\n <label className=\"form-check-label\" htmlFor={`cb_${id}_${op.value}` } >\n <RawHTML>{op.label}</RawHTML>\n </label>\n </div>\n )\n })}\n\n {allowOther &&\n <div className=\"form-check abc-checkbox\" style={style}>\n <input type=\"checkbox\" id={\"cb_other\" + id} checked={otherChecked} disabled={isDisabled}\n onChange={this.handleOtherCBChange} className=\"form-check-input\" value=\"other\" />\n <label className=\"form-check-label\" htmlFor={\"cb_other\" + id}>\n {T.translate(\"general.other\")}\n </label>\n </div>\n }\n\n {allowOther && otherChecked &&\n <div style={{paddingLeft: '22px', width: '50%'}}>\n <input className=\"form-control\" disabled={isDisabled} onChange={this.handleChange} value={otherValue} />\n </div>\n }\n\n </div>\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nCheckboxList.defaultProps = {\n ariaLabelledBy : null,\n}\n\n\nCheckboxList.propTypes = {\n id: PropTypes.string.isRequired\n};\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryCompanies} from '../../utils/query-actions';\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\n\nexport default class CompanyInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getCompanies = this.getCompanies.bind(this);\n }\n\n handleChange(value) {\n const isMulti = (this.props.hasOwnProperty('multi') || this.props.hasOwnProperty('isMulti'));\n const theValue = isMulti ? value.map(v => ({id: v.value, name: v.label})) : {id: value.value, name: value.label};\n\n let ev = {target: {\n id: this.props.id,\n value: theValue,\n type: 'companyinput'\n }};\n\n this.props.onChange(ev);\n }\n\n handleNew(value) {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateValue = (newValue) => {\n this.handleChange({value: newValue.id, label: newValue.name});\n }\n\n this.props.onCreate(value, translateValue);\n }\n\n getCompanies (input, callback) {\n const {extraOptions} = this.props;\n\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateOptions = (options) => {\n let newOptions = options.map(c => ({value: c.id.toString(), label: c.name}));\n\n if (extraOptions?.length > 0) {\n newOptions = [...extraOptions, ...newOptions];\n }\n\n callback(newOptions);\n };\n\n const queryFn = this.props.queryFunction || queryCompanies;\n\n queryFn(input, translateOptions);\n } \n\n render() {\n let {error, value, onChange, id, multi, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let isMulti = (this.props.hasOwnProperty('multi') || this.props.hasOwnProperty('isMulti'));\n let allowCreate = this.props.hasOwnProperty('allowCreate');\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n let theValue = null;\n\n if (isMulti && value.length > 0) {\n theValue = value.map(v => ({value: v.id.toString(), label: v.name} ));\n } else if (!isMulti && value) {\n theValue = {value: value.id.toString(), label: value.name};\n }\n\n\n const AsyncComponent = allowCreate\n ? AsyncCreatableSelect\n : AsyncSelect;\n\n return (\n <div>\n <AsyncComponent\n value={theValue}\n onChange={this.handleChange}\n loadOptions={this.getCompanies}\n onCreateOption={this.handleNew}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Dropdown from './dropdown';\nimport {getCountryList} from '../../utils/query-actions';\n\nexport default class CountryDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n options: []\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.abortController = new AbortController();\n }\n\n componentDidMount () {\n let {options} = this.state;\n\n if(options.length == 0){\n getCountryList(this.setOptions, this.abortController.signal);\n }\n }\n\n componentWillUnmount(){\n this.abortController.abort();\n }\n\n handleChange(value) {\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'countryddl'\n }};\n\n this.props.onChange(ev);\n }\n\n setOptions(response) {\n let countryList = response.map(c => ({label: c.name, value: c.iso_code}));\n this.setState({options: countryList});\n }\n\n render() {\n\n let {options} = this.state;\n\n return (\n <Dropdown options={options} {...this.props} />\n );\n\n }\n}\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\nimport {getCountryList} from '../../utils/query-actions';\n\nexport default class CountryInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n options: []\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.setOptions = this.setOptions.bind(this);\n\n }\n\n setOptions(response) {\n let countryList = response.map(c => ({label: c.name, value: c.iso_code}));\n this.setState({options: countryList});\n }\n\n componentDidMount() {\n getCountryList(this.setOptions).catch(e => {\n console.log(\"Error getting countries: \", e);\n this.setState({options: []});\n });\n }\n\n handleChange(value) {\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n\n if (isMulti) {\n theValue = value.map(v => v.value);\n } else {\n theValue = value.value;\n }\n\n let ev = {target: {\n id: this.props.id,\n value: theValue,\n type: 'countryinput'\n }};\n\n this.props.onChange(ev);\n }\n\n render() {\n let {value, onChange, id, multi, error, ...rest} = this.props;\n let {options} = this.state;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n if (isMulti) {\n theValue = options.filter(op => value.includes(op.value));\n } else {\n theValue = (value instanceof Object || value == null) ? value : options.find(opt => opt.value == value);\n }\n\n return (\n <div>\n <Select\n className={\"dropdown\" + (has_error ? ' error' : '')}\n onChange={this.handleChange}\n options={options}\n value={theValue}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-datetime\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport './datetimepicker.less';\nimport Datetime from 'react-datetime';\nimport moment from 'moment-timezone';\n\nexport default class DateTimePicker extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.isValidDate = this.isValidDate.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value) {\n this.setState({value: this.props.value})\n }\n }\n\n handleChange(date) {\n\n let { timezone } = this.props;\n\n if (date && moment.isMoment(date)) {\n date = moment.tz(date.format('YYYY-MM-DD HH:mm:ss'), timezone)\n } else if (date === '') {\n date = moment(0);\n }\n\n let ev = {target: {\n id: this.props.id,\n value: date,\n type: 'datetime'\n }};\n\n if (date && moment.isMoment(date)) {\n this.props.onChange(ev);\n }\n\n }\n\n isValidDate(currentDate, selectedDate) {\n let { timezone, validation } = this.props;\n let {after, before} = validation;\n\n if (after == '<')\n return (currentDate.isBefore(moment.tz(before * 1000, timezone)));\n else if(after == '<=')\n return (currentDate.isSameOrBefore(moment.tz(before * 1000, timezone)));\n else if(after == '>')\n return (currentDate.isAfter(moment.tz(before * 1000, timezone)));\n else if(after == '>=')\n return (currentDate.isSameOrAfter(moment.tz(before * 1000, timezone)));\n else {\n let afterDate = moment.tz(after * 1000, timezone).subtract(1, 'day');\n let beforeDate = moment.tz(before * 1000, timezone);\n return currentDate.isAfter(afterDate) && currentDate.isBefore(beforeDate);\n }\n }\n\n render() {\n let validate = (typeof this.props.validation != 'undefined');\n let {onChange, id, value, format, error, inputProps, disabled, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let className = 'form-control ' + (has_error ? 'error' : '');\n let inputDisabled = (this.props.hasOwnProperty('disabled')) ? disabled : false;\n\n return (\n <div>\n {validate ? (\n <Datetime\n isValidDate={this.isValidDate}\n onChange={this.handleChange}\n dateFormat={format.date}\n timeFormat={format.time}\n value={this.state.value}\n inputProps={{...inputProps, id: id, className: className, disabled: inputDisabled, autoComplete: 'off'}}\n {...rest}\n />\n ) : (\n <Datetime\n onChange={this.handleChange}\n dateFormat={format.date}\n timeFormat={format.time}\n value={this.state.value}\n inputProps={{...inputProps, id: id, className: className, disabled: inputDisabled, autoComplete: 'off'}}\n {...rest}\n />\n )}\n\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\n\nexport default class Dropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(selection) {\n\n let value = null;\n if (this.props.isMulti) {\n value = selection ? selection.map(val => val.value) : null;\n } else {\n value = selection ? selection.value : null;\n }\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'dropdown'\n }};\n\n this.props.onChange(ev);\n }\n\n render() {\n\n let {onChange, value, className, error, clearable, disabled, overrideCSS, ariaLabelledBy, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let isClearable = (this.props.hasOwnProperty('clearable'));\n let isDisabled = (this.props.hasOwnProperty('disabled') && disabled == true);\n let theValue = null;\n\n let selectClassName = className;\n\n if (!this.props.hasOwnProperty('overrideCSS') || overrideCSS == false) {\n selectClassName = 'dropdown ' + className + ' ' + (has_error ? 'error' : '');\n }\n\n if (this.props.isMulti) {\n theValue = this.props.options.filter(op => value.includes(op.value));\n } else {\n theValue = (value instanceof Object || value == null) ? value : this.props.options.find(opt => opt.value == value);\n }\n\n const selectStyles = { menu: styles => ({ ...styles, zIndex: 999 }) };\n\n return (\n <div>\n <Select\n className={selectClassName}\n value={theValue}\n onChange={this.handleChange}\n isClearable={isClearable}\n isDisabled={isDisabled}\n styles={selectStyles}\n aria-labelledby={ariaLabelledBy}\n formatOptionLabel={(data) => <span dangerouslySetInnerHTML={{ __html: data.label }} />}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nDropdown.defaultProps = {\n ariaLabelledBy : null,\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nimport './editor-input.less';\n\nexport default class TextEditor extends React.Component {\n\n constructor(props) {\n super(props);\n this.RichTextEditor = null;\n this.getTextAlignClassName = null;\n this.getTextAlignStyles = null;\n\n // this is done bc due SSR issues\n // @see https://github.com/sstur/react-rte/issues/373\n if (typeof window !== 'undefined') {\n const { default: RichTextEditor, getTextAlignClassName, getTextAlignStyles } = require('react-rte');\n this.RichTextEditor = RichTextEditor;\n this.getTextAlignClassName = getTextAlignClassName;\n this.getTextAlignStyles = getTextAlignStyles;\n }\n\n this.state = {\n editorValue: this.RichTextEditor?.createEmptyValue(),\n currentValue: null\n };\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n const {value} = props;\n const {editorValue, currentValue} = state;\n\n if (currentValue != null) {\n if (value === currentValue) {\n return state;\n }\n } \n\n let newEditorValue = editorValue.setContentFromString(value, 'html');\n\n // this is done bc due SSR issues\n // @see https://github.com/sstur/react-rte/issues/373\n if (typeof window !== 'undefined') {\n const { getTextAlignBlockMetadata } = require('react-rte');\n newEditorValue = editorValue.setContentFromString(\n value, \n 'html',\n {\n customBlockFn: getTextAlignBlockMetadata,\n }\n );\n }\n\n return {...state, editorValue: newEditorValue, currentValue: value}\n }\n\n handleChange(editorValue) {\n let oldEditorValue = this.state.editorValue;\n\n this.setState({editorValue});\n\n let oldContentState = oldEditorValue ? oldEditorValue.getEditorState().getCurrentContent() : null;\n let newContentState = editorValue.getEditorState().getCurrentContent();\n\n if (oldContentState !== newContentState) {\n let stringValue = editorValue.toString( \n 'html',\n {\n blockStyleFn: this.getTextAlignStyles,\n }\n )\n stringValue = stringValue === '<p><br></p>' ? '' : stringValue;\n\n this.setState({currentValue: stringValue});\n\n if (stringValue !== this.props.value) {\n let ev = {target: {\n id: this.props.id,\n value: stringValue,\n type: 'texteditor'\n }};\n\n this.props.onChange(ev);\n }\n }\n }\n\n render() {\n const {onChange, value, error, className, id, maxLength, ...rest} = this.props;\n const {currentValue, editorValue} = this.state;\n const has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n const charCountLeft = maxLength - currentValue.length;\n\n return (\n <div className='editor-input'>\n {this.RichTextEditor &&\n <this.RichTextEditor\n id={id}\n className={className + ' ' + (has_error ? 'error' : '')}\n value={editorValue}\n onChange={this.handleChange}\n blockStyleFn={this.getTextAlignClassName}\n {...rest}\n />\n }\n {!!maxLength &&\n <p><i>characters left: {charCountLeft}</i></p>\n }\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryEvents} from '../../utils/query-actions';\n\nexport default class EventInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getEvents = this.getEvents.bind(this);\n }\n\n handleChange(value) {\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'eventinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getEvents (input, callback) {\n let {summit, onlyPublished} = this.props;\n\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n queryEvents(summit.id, input, onlyPublished, callback);\n }\n\n render() {\n let {value, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n\n return (\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getEvents}\n getOptionValue={option => option.id}\n getOptionLabel={option => option.title}\n isMulti={isMulti}\n {...rest}\n />\n );\n\n }\n}\n\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-select/lib/Creatable\");","import React from 'react';\nimport CreatableSelect from 'react-select/lib/Creatable';\nimport T from 'i18n-react/dist/i18n-react';\n\n\nexport default class FreeMultiTextInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n inputValue: ''\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n handleChange(value) {\n let limit = this.props.hasOwnProperty('limit') ? this.props.limit : false;\n\n if (!limit || limit >= value.length ) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'freetextlist'\n }};\n\n this.props.onChange(ev);\n }\n }\n\n handleInputChange(inputValue) {\n this.setState({ inputValue });\n }\n\n handleKeyDown(event) {\n const { inputValue } = this.state;\n let { value } = this.props;\n\n if (!inputValue) return;\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n this.setState({\n inputValue: '',\n });\n\n this.handleChange([...value, {label: inputValue, value: inputValue}])\n\n event.preventDefault();\n }\n }\n\n\n render() {\n const { inputValue } = this.state;\n let {id, value, onChange, ...rest} = this.props;\n\n return (\n <CreatableSelect\n components={{DropdownIndicator: null}}\n inputValue={inputValue}\n clearable\n isMulti\n menuContainerStyle={{display: 'none'}}\n onChange={this.handleChange}\n onInputChange={this.handleInputChange}\n onInputKeyDown={this.handleKeyDown}\n placeholder={T.translate(\"general.type_something\")}\n value={value}\n {...rest}\n />\n );\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryGroups} from '../../utils/query-actions';\n\nexport default class GroupInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getGroups = this.getGroups.bind(this);\n }\n\n handleChange(value) {\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'groupinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getGroups (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n queryGroups(input, callback);\n }\n\n render() {\n let {value, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n\n return (\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getGroups}\n getOptionValue={option => option.id}\n getOptionLabel={option => option.title}\n isMulti={isMulti}\n {...rest}\n />\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nexport const OptionGroup = ({\n value,\n label,\n options\n}) => {\n return ([\n <option key={\"group\" + value} className=\"option-group\" value={value}>{label}</option>,\n options.map((opt,i) => (\n <option className=\"option-child\" key={opt.value} value={opt.value}> - {opt.label}</option>\n ))\n ]);\n};","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport { OptionGroup } from './OptionGroup';\nimport './optiongroup.less';\n\nexport default class GroupedDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value) {\n this.setState({value: this.props.value})\n }\n }\n\n handleChange(ev) {\n this.props.onChange(ev);\n }\n\n render() {\n let {id, options, placeholder, className, error} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let {value} = this.state;\n\n return (\n <div>\n <select\n id={id}\n className={className + ' form-control ' + (has_error ? 'error' : '')}\n value={value}\n onChange={this.handleChange}>\n <option value=\"\" disabled>{placeholder}</option>\n {options.map((opt,i) =>\n {\n if (typeof opt.options != 'undefined') {\n return (\n <OptionGroup key={'group_opt_'+i} label={opt.label} value={opt.value} options={opt.options}/>\n );\n } else {\n return (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n );\n }\n }\n )}\n </select>\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n }\n}","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\nimport {getLanguageList} from '../../utils/query-actions';\n\nexport default class LanguageInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n options: [],\n shouldUseId: props.hasOwnProperty('shouldUseId') ? props.shouldUseId : false,\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.abortController = new AbortController();\n }\n\n componentDidMount() {\n getLanguageList(this.setOptions, this.abortController.signal).catch(e => {\n console.log(\"Error get languages: \", e);\n this.setOptions({options: []});\n });\n }\n\n componentWillUnmount(){\n this.abortController.abort();\n }\n\n setOptions(response) {\n let languageList = (this.state.shouldUseId) ?\n response.map(l => ({label: l.name, value: l.id})):\n response.map(l => ({label: l.name, value: l.iso_code}));\n this.setState({options: languageList});\n }\n\n handleChange(value) {\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n\n if (isMulti) {\n theValue = value.map(v => v.value);\n } else {\n theValue = value.value;\n }\n\n let ev = {target: {\n id: this.props.id,\n value: theValue,\n type: 'laguageinput'\n }};\n\n this.props.onChange(ev);\n }\n\n render() {\n let {value, onChange, id, multi, ...rest} = this.props;\n let {options} = this.state;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n\n if (isMulti) {\n theValue = options.filter(op => value.includes(op.value));\n } else {\n theValue = (value instanceof Object || value == null) ? value : options.find(opt => opt.value == value);\n }\n\n return (\n <Select\n className=\"dropdown\"\n onChange={this.handleChange}\n options={options}\n value={theValue}\n isMulti={isMulti}\n {...rest}\n />\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryMembers} from '../../utils/query-actions';\n\nexport default class MemberInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getMembers = this.getMembers.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n getOptionValue(member){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(member);\n }\n //default\n return member.id;\n }\n\n getOptionLabel(member){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(member);\n }\n //default\n return `${member.first_name} ${member.last_name} (${member.id})`;\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'memberinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getMembers (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n queryMembers(input, callback);\n }\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getMembers}\n getOptionValue={m => this.getOptionValue(m)}\n getOptionLabel={m => this.getOptionLabel(m)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState, useEffect } from 'react';\nimport Select from 'react-select';\n\nconst OperatorInput = ({ error, label, value, onChange, id, multi, isMulti, className, isDisabled, isClearable, options, selectStyles, customStyle, ...rest }) => {\n\n // Set intial valus from value property, if is an array operator as between, and extract the operator and digits is the value is a string\n const [operatorValue, setOperatorValue] = useState(value ? Array.isArray(value) ? { value: 'between', label: 'Between' } : options.find(e => e.value === value.replace(/\\d/g, '')) : ({ value: null, label: '' }));\n const [inputValue, setInputValue] = useState(value ? Array.isArray(value) ? value[0] : value.replace(/\\D/g, '') : '');\n const [inputValueBetween, setInputValueBetween] = useState(Array.isArray(value) ? value[1] : '');\n const [ddlStyles, setDDLStyles] = useState({\n control: (provided, state) => ({\n ...provided,\n width: 175\n }),\n ...selectStyles\n });\n const [hasError, setHasError] = useState(error);\n\n useEffect(() => {\n setHasError(error);\n }, [error]);\n\n\n const handleOperatorChange = (eventValue) => {\n setInputValueBetween('');\n setOperatorValue({ value: eventValue.value, label: eventValue.label }); \n let ev = {\n target: {\n id: id,\n value: eventValue.value === 'between' ? [inputValue, inputValueBetween] : inputValue,\n type: 'operatorinput',\n operator: eventValue.value\n }\n };\n onChange(ev);\n }\n\n const handleInputChange = (evt) => {\n const onlyDigits = evt.target.value.replace(/\\D/g, '');\n if (operatorValue.value === 'between') {\n evt.target.id === 'operator-input' ? setInputValue(onlyDigits) : setInputValueBetween(onlyDigits);\n let ev = {\n target: {\n id: id,\n value: evt.target.id === 'operator-input' ? [onlyDigits, inputValueBetween] : [inputValue, onlyDigits],\n type: 'operatorinput',\n operator: operatorValue.value\n }\n };\n onChange(ev);\n } else {\n setInputValue(onlyDigits);\n let ev = {\n target: {\n id: id,\n value: onlyDigits,\n type: 'operatorinput',\n operator: operatorValue.value\n }\n };\n onChange(ev);\n }\n }\n\n let selectClassName = className;\n\n const defaultStyle = {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline'\n }\n\n return (\n <div className={className} style={customStyle ? customStyle : defaultStyle}>\n <label>{label}</label>\n <Select\n className={selectClassName}\n value={operatorValue}\n options={options}\n onChange={handleOperatorChange}\n isClearable={isClearable}\n isDisabled={isDisabled}\n styles={ddlStyles}\n {...rest}\n />\n <input\n id='operator-input'\n value={inputValue}\n onChange={handleInputChange}\n className=\"form-control\"\n disabled={isDisabled}\n style={{ width: 'auto' }}\n {...rest}\n />\n {operatorValue.value === 'between' &&\n <>\n <span>And</span>\n <input\n id='operator-input-between'\n value={inputValueBetween}\n onChange={handleInputChange}\n className=\"form-control\"\n disabled={isDisabled}\n style={{ width: 'auto' }}\n {...rest}\n />\n </>\n }\n {hasError &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n}\n\nexport default OperatorInput;\n\nOperatorInput.defaultProps = {\n options: [\n { value: '>', label: 'Greater than' },\n { value: '<', label: 'Less than' },\n { value: '>=', label: 'Greater or Equal' },\n { value: '<=', label: 'Less or Equal' },\n { value: '==', label: 'Equal' },\n { value: 'between', label: 'Between' },\n ],\n};","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport AsyncCreatableSelect from 'react-select/lib/AsyncCreatable';\nimport {queryOrganizations} from '../../utils/query-actions';\n\nexport default class OrganizationInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getOrganizations = this.getOrganizations.bind(this);\n }\n\n handleChange(value) {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n let ev = {target: {\n id: this.props.id,\n value: {id: value.value, name: value.label},\n type: 'organizationinput'\n }};\n\n this.props.onChange(ev);\n }\n\n handleNew(value) {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateValue = (newValue) => {\n this.handleChange({value: newValue.id, label: newValue.name});\n }\n\n this.props.onCreate(value, translateValue);\n }\n\n getOrganizations (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateOptions = (options) => {\n let newOptions = options.map(org => ({value: org.id.toString(), label: org.name}));\n callback(newOptions);\n };\n\n queryOrganizations(input, translateOptions);\n }\n\n render() {\n let {error, value, id, onChange, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let allowCreate = this.props.hasOwnProperty('allowCreate');\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n let theValue = value ? {value: value.id.toString(), label: value.name} : null;\n\n const AsyncComponent = allowCreate\n ? AsyncCreatableSelect\n : AsyncSelect;\n\n return (\n <div>\n <AsyncComponent\n value={theValue}\n onChange={this.handleChange}\n loadOptions={this.getOrganizations}\n onCreateOption={this.handleNew}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\n\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {DEFAULT_PAGE_SIZE, queryPromocodes} from '../../utils/query-actions';\n\nconst PromocodeInput = ({summitId, error, value, onChange, id, multi, perPage, extraFilters, ...rest}) => {\n\n const handleChange = (value) => {\n let theValue = null;\n const isMulti = multi || rest.isMulti;\n if (value) {\n theValue = isMulti ? value.map(v => ({id: v.value, code: v.label})) : {id: value.value, code: value.label};\n }\n\n let ev = {target: {\n id: id,\n value: theValue,\n type: 'promocodeinput'\n }};\n\n onChange(ev);\n }\n\n const getPromocodes = (input, callback) => {\n\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateOptions = (options) => {\n let newOptions = options.map(c => ({value: c.id.toString(), label: c.code}));\n callback(newOptions);\n };\n\n queryPromocodes(summitId, input, translateOptions, perPage, extraFilters);\n }\n\n const has_error = !!( error && error !== '' );\n const isMulti = multi || rest.isMulti;\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n let theValue = null;\n\n if (isMulti && value.length > 0) {\n theValue = value.map(v => ({value: v.id.toString(), label: v.code} ));\n } else if (!isMulti && value) {\n theValue = {value: value.id.toString(), label: value.code};\n }\n\n return (\n <div>\n <AsyncSelect\n value={theValue}\n onChange={handleChange}\n loadOptions={getPromocodes}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n}\n\nPromocodeInput.propTypes = {\n perPage: PropTypes.number,\n extraFilters: PropTypes.array\n};\n\nPromocodeInput.defaultProps = {\n perPage: DEFAULT_PAGE_SIZE,\n extraFilters: []\n};\n\nexport default PromocodeInput;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport RawHTML from '../raw-html';\nimport PropTypes from 'prop-types'\n\nimport \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\";\n\nexport default class RadioList extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value,\n };\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(selection) {\n\n let ev = {target: {\n id: this.props.id,\n value: selection.target.value,\n type: 'radio'\n }};\n\n this.props.onChange(ev);\n }\n\n getLabel(option, id, inline, simple) {\n if (inline) {\n return (\n <label className=\"form-check-label\" htmlFor={`radio_${id}_${option.value}`} style={{display: 'inline-block'}}>\n <RawHTML>\n {option.label}\n </RawHTML>\n </label>\n );\n } else if (simple) {\n return (\n <label className=\"form-check-label\" htmlFor={`radio_${id}_${option.value}`} >\n {option.label}\n </label>\n );\n } else {\n return (\n <label className=\"form-check-label\" htmlFor={`radio_${id}_${option.value}`} style={{display: 'inline-block'}}>\n <h4 style={{marginTop: '0px'}}>{option.label}</h4>\n <RawHTML>{option.description}</RawHTML>\n </label>\n );\n }\n }\n\n render() {\n\n let {onChange, value, className, error, ariaLabelledBy, disabled, options,id, name,...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let inline = ( this.props.hasOwnProperty('inline') );\n let simple = ( this.props.hasOwnProperty('simple') );\n let isDisabled = (this.props.hasOwnProperty('disabled') && disabled == true);\n\n let style, label;\n\n if (inline) {\n style = {\n paddingLeft: '22px',\n marginLeft: '20px',\n float: 'left'\n };\n\n\n } else {\n style = {\n paddingLeft: '22px'\n }\n }\n\n return (\n <div id={`rl_wrapper_${id}`} aria-labelledby={ariaLabelledBy}>\n { options.map(op => {\n let checked = (op.value == value);\n return (\n <div className=\"form-check abc-radio\" key={`radio_key_${id}_${op.value}`} style={style}>\n <input\n className=\"form-check-input\"\n type=\"radio\"\n id={`radio_${id}_${op.value}`}\n value={op.value}\n checked={checked}\n onChange={this.handleChange}\n disabled={isDisabled}\n name={name ? name : `radio_${id}`}\n />\n {this.getLabel(op, id, inline, simple)}\n </div>\n )\n })}\n\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nRadioList.defaultProps = {\n ariaLabelledBy : null,\n}\n\nRadioList.propTypes = {\n id: PropTypes.string.isRequired\n};\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types'\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\nimport { queryRegistrationCompanies } from '../../utils/query-actions';\nimport _ from 'lodash';\nconst NullValue = { value: null, label: '' };\nconst NewId = 0;\n\nconst RegistrationCompanyInput = ({\n error, onChange, id, disabled, className, summitId, onError,\n value, placeholder, tabSelectsValue, selectStyles, createLabel, options2Show, ...rest }) => {\n\n const isNullValue = (val) => _.isEqual(val, {id: null, name: ''})\n\n const handleChange = (eventValue) => {\n if(!eventValue) eventValue = NullValue;\n const newValue = { id: eventValue.value, name: eventValue.label };\n let ev = {\n target: {\n id: id,\n value: newValue,\n type: 'registration_company_input'\n }\n };\n\n onChange(ev);\n }\n\n const getCompanies = (input, callback) => {\n\n const translateOptions = (options) => {\n\n if (options instanceof Error) {\n onError(options);\n }\n if (options.length === 0) {\n callback([]);\n }\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n let newOptions = [...options.map(c => ({ value: c.id.toString(), label: c.name }))];\n callback(newOptions);\n };\n\n queryRegistrationCompanies(summitId, input, translateOptions, options2Show);\n }\n\n const handleNewOption = (newOption) => {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n handleChange({value: NewId, label: newOption});\n }\n\n const classNamPrefix =`${className}_prefix`;\n\n // default value ( no selection )\n let theValue = null;\n\n if (value && !isNullValue(value)) {\n theValue = {value: value.id, label: value.name};\n }\n\n return (\n <div style={{ position: 'relative' }}>\n <AsyncCreatableSelect\n // Passing null if no label and no value property to show the placeholder\n value={theValue}\n inputId={id}\n tabSelectsValue={tabSelectsValue}\n placeholder={placeholder}\n onChange={handleChange}\n loadOptions={getCompanies}\n className={className}\n classNamePrefix={classNamPrefix}\n styles={selectStyles}\n onCreateOption={handleNewOption}\n formatCreateLabel={(value) => `${createLabel} \"${value}\"`}\n isDisabled={disabled}\n {...rest}\n />\n {error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n}\n\nexport default RegistrationCompanyInput;\n\nRegistrationCompanyInput.defaultProps = {\n placeholder: 'Select a company',\n disabled: false,\n tabSelectsValue: false,\n createLabel: 'Select ',\n className:'registration_company_dll',\n options2Show: 20,\n}\n\nRegistrationCompanyInput.propTypes = {\n onError: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n options2Show: PropTypes.number,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-select/lib/components\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { components } from 'react-select/lib/components'\nimport { querySpeakers } from '../../utils/query-actions';\n\nexport default class SpeakerInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getSpeakers = this.getSpeakers.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'speakerinput'\n }};\n\n this.props.onChange(ev);\n }\n\n handleClick(speakerId) {\n let {history} = this.props;\n\n history.push(`/app/speakers/${speakerId}`);\n }\n\n getSpeakers (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n let summitId = (this.props.hasOwnProperty('summitId')) ? this.props.summitId : null;\n\n querySpeakers(summitId, input, callback);\n }\n\n getOptionValue(speaker){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(speaker);\n }\n //default\n return speaker.id;\n }\n\n getOptionLabel(speaker){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(speaker);\n }\n //default\n return `${speaker.first_name} ${speaker.last_name} (${speaker.id})`;\n }\n\n render() {\n let {value, onChange, history, summitId, error, id, multi, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let isMulti = (this.props.hasOwnProperty('multi'));\n\n const MultiValueLabel = (props) => {\n return (\n <a onClick={() => this.handleClick(props.data.id)} style={{cursor: 'pointer'}}>\n <components.MultiValueLabel {...props} />\n </a>\n );\n };\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getSpeakers}\n components={{ MultiValueLabel }}\n getOptionValue={s => this.getOptionValue(s)}\n getOptionLabel={s => this.getOptionLabel(s)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { querySponsors } from '../../utils/query-actions';\n\nconst SponsorInput = ({ id, summitId, value, error, multi, onChange, queryFunction, ...rest }) => {\n const queryFn = queryFunction || querySponsors;\n const has_error = error !== '';\n\n const handleChange = (value) => {\n let ev = {\n target: {\n id: id,\n value: value,\n type: 'sponsorinput'\n }\n };\n\n onChange(ev);\n }\n\n const getSponsors = (input, callback) => {\n const filterSponsors = (options) => {\n let newOptions = options.filter(c => c.company);\n callback(newOptions);\n };\n\n queryFn(summitId, input, filterSponsors);\n }\n\n return (\n <div>\n <AsyncSelect\n value={value}\n getOptionValue={option => option.id}\n getOptionLabel={option => `${option.company.name} (${option.sponsorship?.type?.name})`}\n onChange={handleChange}\n loadOptions={getSponsors}\n isMulti={multi}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n}\n\nexport default SponsorInput;\n","/**\n * Copyright 2022 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { querySponsoredProjects } from '../../utils/query-actions';\n\nexport default class SponsoredProjectInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getSponsoredProjects = this.getSponsoredProjects.bind(this);\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'sponsoredprojectinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getSponsoredProjects (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n querySponsoredProjects(input, callback);\n }\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let isClearable = (this.props.hasOwnProperty('clearable'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getSponsoredProjects}\n getOptionValue={op => op.id}\n getOptionLabel={op => (`${op.name} (${op.id})`)}\n isMulti={isMulti}\n isClearable={isClearable}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"tDZTa8dy9OMVyGAtxNOS\",\"valueBox\":\"VoBl8JcsRZelj8EKGKtC\"};","import React from 'react';\nimport styles from './index.module.less';\n\nexport default ({value, options, onChange, ...rest}) => {\n \n const currentOptionKey = options.findIndex(op => op.value === value);\n\n const valueLabel = options.find(op => op.value === value).label;\n\n const onClickMinus = () => {\n if (currentOptionKey > 0) {\n onChange(options[currentOptionKey - 1].value);\n }\n }\n\n const onClickPlus = () => {\n if (currentOptionKey < options.length -1) {\n onChange(options[currentOptionKey + 1].value);\n }\n }\n\n return (\n <div className={styles.wrapper} {...rest}>\n <button className=\"btn btn-default\" onClick={() => onClickMinus()} disabled={currentOptionKey === 0} title=\"Decrement\">\n <i className=\"fa fa-minus\"/>\n </button>\n <span className={styles.valueBox}>{valueLabel}</span>\n <button className=\"btn btn-default\" onClick={() => onClickPlus()} disabled={currentOptionKey + 1 === options.length} title=\"Increment\">\n <i className=\"fa fa-plus\"/>\n </button>\n </div>\n );\n};\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\n\nconst SummitDaysSelect = ({ days, currentValue, placeholder, onDayChanged }) => {\n const theValue = days.find(op => op.value === currentValue) || null;\n\n const onChange = (selectedOption) => {\n onDayChanged(selectedOption?.value || null);\n };\n\n return (\n <Select\n placeholder={placeholder} //T.translate(\"schedule.placeholders.select_day\")\n className=\"day-selector\"\n name=\"form-field-name\"\n value={theValue}\n onChange={onChange}\n options={days}\n />\n );\n}\n\nexport default SummitDaysSelect;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {querySummits} from '../../utils/query-actions';\n\nexport default class SummitInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getSummits = this.getSummits.bind(this);\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'summitinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getSummits (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n querySummits(input, callback);\n }\n\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getSummits}\n getOptionValue={op => op.id}\n getOptionLabel={op => (`${op.name} (${op.id})`)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\n\nconst SummitVenuesSelect = ({venues, currentValue, placeholder, onVenueChanged, ...rest}) => {\n const parsedValue = venues.find(v => v.value.id === currentValue?.id) || null;\n const renderOption = (option) => {\n let location = option.value;\n if (location.class_name === 'SummitVenue')\n return (<span className=\"location-option-venue\">{location.name}</span>);\n return (<span className=\"location-option-room\">- {location.name}</span>);\n }\n\n const onChange = (selectedOption) => {\n onVenueChanged(selectedOption?.value || null);\n }\n\n return (\n <Select\n placeholder={placeholder}\n className=\"venues-selector\"\n name=\"form-field-name\"\n value={parsedValue}\n onChange={onChange}\n options={venues}\n optionRenderer={renderOption}\n {...rest}\n />\n );\n}\n\nexport default SummitVenuesSelect;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport AsyncSelect from 'react-select/lib/Async';\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\nimport { queryTags } from '../../utils/query-actions';\nimport { shallowEqual } from \"../../utils/methods\";\n\nexport default class TagInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n tagValue: props.value.map((t) => ({ tag: t.tag, id: t.id }))\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getTags = this.getTags.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (!shallowEqual(this.props.value, prevProps.value)) {\n let nextValue = this.props.value.map((t) => ({ tag: t.tag, id: t.id }));\n this.setState({ tagValue: nextValue });\n }\n }\n\n handleNew(ev) {\n const newTag = { tag: ev }\n this.props.onCreate(ev, this.setState({ value: [...this.state.tagValue, newTag] }));\n }\n\n handleChange(value) {\n let ev = {\n target: {\n id: this.props.id,\n value: value,\n type: 'taginput'\n }\n };\n\n this.props.onChange(ev);\n }\n\n getTags(input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n let summitId = (this.props.hasOwnProperty('summitId')) ? this.props.summitId : null;\n\n const _callback = (options) => {\n if (summitId) {\n options = options.map(t => t.tag);\n }\n callback(options);\n };\n\n queryTags(summitId, input, _callback);\n }\n\n render() {\n let { className, error, allowCreate, ...rest } = this.props;\n let { tagValue } = this.state;\n let has_error = (this.props.hasOwnProperty('error') && error != '');\n let orderedTags = tagValue.sort((a, b) => (a.tag.toLowerCase() > b.tag.toLowerCase() ? 1 : (a.tag.toLowerCase() < b.tag.toLowerCase() ? -1 : 0)));\n\n const AsyncComponent = allowCreate\n ? AsyncCreatableSelect\n : AsyncSelect;\n\n return (\n <div>\n <AsyncComponent\n {...rest}\n className={className + ' ' + (has_error ? 'error' : '')}\n isMulti\n value={orderedTags}\n onChange={this.handleChange}\n onCreateOption={this.handleNew}\n loadOptions={this.getTags}\n getOptionLabel={option => option.__isNew__ ? option.label : option.tag}\n getOptionValue={option => option.__isNew__ ? option.value : option.tag}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nTagInput.propTypes = {\n allowCreate: PropTypes.bool,\n className: PropTypes.string,\n summitId: PropTypes.number,\n id: PropTypes.string.isRequired,\n value: PropTypes.array,\n onCreate: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n};\n\nTagInput.defaultProps = {\n allowCreate: false\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nexport default class Input extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value) {\n this.input.value = this.props.value;\n }\n }\n\n handleChange(ev) {\n this.props.onChange(ev);\n }\n\n render() {\n\n let {onChange, value, className, error, ariaLabelledBy, containerClassName,...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n let class_name = this.props.hasOwnProperty('className') ? className : 'form-control';\n let container_class_name = this.props.hasOwnProperty('containerClassName') ? containerClassName : 'container-form-control';\n return (\n <div className={container_class_name}>\n <input\n className={`${class_name} ${has_error ? 'error' : ''}`}\n ref={node => {this.input = node}}\n defaultValue={value}\n aria-labelledby={ariaLabelledBy}\n onChange={this.handleChange}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nInput.defaultProps = {\n ariaLabelledBy : null,\n}","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nconst TextArea = ({ onChange, value, className, error, maxLength, ...rest }) => {\n const has_error = error && error !== '';\n const class_name = className ? className : 'form-control';\n const charCountLeft = Math.max(maxLength - value.length, 0);\n\n const handleChange = (ev) => {\n const isBackSpace = !!(value?.length - ev.target?.value?.length);\n\n if (!maxLength || isBackSpace) onChange(ev);\n\n if (charCountLeft) {\n onChange(ev)\n }\n };\n\n return (\n <div>\n <textarea\n className={class_name + ' ' + (has_error ? 'error' : '')} \n value={value}\n onChange={handleChange}\n maxLength={maxLength}\n {...rest}\n />\n {!!maxLength &&\n <p><i>characters left: {charCountLeft}</i></p>\n }\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n}\n\nTextArea.defaultProps = {\n value: \"\"\n};\n\nexport default TextArea;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { queryTicketTypes } from '../../utils/query-actions';\nimport PropTypes from 'prop-types';\n\nclass TicketTypesInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getTicketTypes = this.getTicketTypes.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n getOptionValue(ticketType){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(ticketType);\n }\n //default\n return ticketType.id;\n }\n\n getOptionLabel(ticketType){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(ticketType);\n }\n //default\n return `${ticketType.name}`;\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'tickettypeinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getTicketTypes (input, callback) {\n let { summitId, version, optionsLimit } = this.props;\n\n let filters = { name : input };\n if(this.props.hasOwnProperty('audience')){\n filters['audience'] = this.props.audience;\n }\n\n queryTicketTypes(summitId, filters , callback, version, optionsLimit);\n }\n\n render() {\n\n let {value, error, onChange, id, multi, optionsLimit, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getTicketTypes}\n getOptionValue={m => this.getOptionValue(m)}\n getOptionLabel={m => this.getOptionLabel(m)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\nTicketTypesInput.defaultProps = {\n version: 'v1',\n}\n\nTicketTypesInput.propTypes = {\n audience: PropTypes.string,\n version: PropTypes.string,\n};\n\n\nexport default TicketTypesInput;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"extend\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"dropzone/dist/dropzone.css\");","import React from 'react'\n\nexport const Icon = (props) => {\n return (<div data-filetype={props.filetype} className='filepicker-file-icon' />)\n}","import React from 'react'\nimport extend from 'extend'\nimport 'dropzone/dist/dropzone.css';\nimport {Icon} from './icon'\nimport PropTypes from 'prop-types';\nimport {getAccessToken, initLogOut} from '../../security/methods';\nimport {AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR} from '../../security/constants';\nimport {getMD5} from \"../../../utils/crypto\";\n\nlet Dropzone = null;\n/**\n * class DropzoneJS\n */\nexport class DropzoneJS extends React.Component {\n\n constructor(props) {\n super(props);\n this.dropzoneRef = React.createRef();\n this.state = {files: []};\n this.onUploadComplete = this.onUploadComplete.bind(this);\n this.onError = this.onError.bind(this);\n }\n\n onError(e, status){\n if(this.props.onError)\n this.props.onError(e, status, this.props.id);\n }\n\n onUploadComplete(response){\n if(this.props.onUploadComplete)\n this.props.onUploadComplete(response, this.props.id, this.props.data);\n }\n\n /**\n * Configuration of Dropzone.js. Defaults are\n * overriden by the 'djsConfig' property\n * For a full list of possible configurations,\n * please consult\n * http://www.dropzonejs.com/#configuration\n */\n getDjsConfig () {\n let options = null;\n const defaults = {\n url: this.props.config.postUrl ? this.props.config.postUrl : null,\n };\n\n if(defaults.url === null) throw new Error(\"missing postUrl\");\n\n if (this.props.djsConfig) {\n options = extend(true, {}, defaults, this.props.djsConfig)\n } else {\n options = defaults\n }\n\n options.accept = async (file, done) => {\n // see https://github.com/dropzone/dropzone/blob/f50d1828ab5df79a76be00d1306cc320e39a27f4/src/options.js#L405\n try {\n file.accessToken = await getAccessToken();\n // IMPORTANT: compute once BEFORE upload starts\n file.md5 = await getMD5(file);\n file.fileSize = file.size;\n } catch (e) {\n console.log(e);\n this.onError(e);\n // only logout on genuine auth errors, not transient network failures\n if (!e.message || !e.message.startsWith(AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR)) {\n initLogOut();\n }\n done(e.message || 'Auth error');\n return;\n }\n if (options.maxFiles && options.maxFiles < (this.state.files.length + this.props.uploadCount)) {\n done('Max files reached.');\n }\n\n done();\n };\n\n return options\n }\n\n /**\n * React 'componentDidMount' method\n * Sets up dropzone.js with the component.\n */\n componentDidMount () {\n if(!this.dropzoneRef.current) return;\n const options = this.getDjsConfig();\n\n Dropzone = Dropzone || require('dropzone');\n Dropzone.autoDiscover = false;\n\n if (!this.props.config.postUrl && !this.props.eventHandlers.drop) {\n console.info('Neither postUrl nor a \"drop\" eventHandler specified, the React-Dropzone component might misbehave.')\n }\n\n const dropzoneNode = this.dropzoneRef.current;\n if (!dropzoneNode) throw new Error(\"Dropzone node not found\");\n\n this.dropzone = new Dropzone(dropzoneNode, options);\n this.setupEvents()\n }\n\n /**\n * React 'componentWillUnmount'\n * Removes dropzone.js (and all its globals) if the component is being unmounted\n */\n componentWillUnmount () {\n if (this.dropzone) {\n const files = this.dropzone.getActiveFiles();\n\n if (files.length > 0) {\n // Well, seems like we still have stuff uploading.\n // This is dirty, but let's keep trying to get rid\n // of the dropzone until we're done here.\n this.queueDestroy = true;\n\n const destroyInterval = window.setInterval(() => {\n if (this.queueDestroy === false) {\n return window.clearInterval(destroyInterval)\n }\n\n if (this.dropzone.getActiveFiles().length === 0) {\n this.dropzone = this.destroy(this.dropzone);\n return window.clearInterval(destroyInterval)\n }\n }, 500)\n } else {\n this.dropzone = this.destroy(this.dropzone)\n }\n }\n }\n\n /**\n * React 'componentDidUpdate'\n * If the Dropzone hasn't been created, create it\n */\n componentDidUpdate () {\n const {config, djsConfig} = this.props;\n const djsConfigObj = djsConfig ? djsConfig : {};\n const postUrlConfigObj = config && config.postUrl ? { url: config.postUrl } : {};\n this.queueDestroy = false;\n\n if (!this.dropzone) {\n const dropzoneNode = this.dropzoneRef.current;\n if (!dropzoneNode) throw new Error(\"Dropzone node not found\");\n this.dropzone = new Dropzone(dropzoneNode, this.getDjsConfig());\n this.setupEvents();\n }\n\n this.dropzone.options = extend(true, {}, this.dropzone.options, djsConfigObj, postUrlConfigObj);\n }\n\n /**\n * React 'render'\n */\n render () {\n const icons = [];\n const { files } = this.state;\n const { config } = this.props;\n const className = (this.props.className) ? 'filepicker dropzone ' + this.props.className : 'filepicker dropzone';\n\n if (config.showFiletypeIcon && config.iconFiletypes && (!files || files.length < 1)) {\n for (var i = 0; i < this.props.config.iconFiletypes.length; i = i + 1) {\n icons.push(<Icon filetype={config.iconFiletypes[i]} key={'icon-component' + i} />)\n }\n }\n\n if (!this.props.config.postUrl && this.props.action) {\n return (\n <form ref={this.dropzoneRef} action={this.props.action} className={className}>\n {icons}\n {this.props.children}\n </form>\n );\n } else {\n return (\n <div ref={this.dropzoneRef} id={this.props.id} className={className}> {icons} {this.props.children} </div>\n );\n }\n }\n\n /**\n * Takes event handlers in this.props.eventHandlers\n * and binds them to dropzone.js events\n */\n setupEvents () {\n const eventHandlers = this.props.eventHandlers;\n\n if (!this.dropzone || !eventHandlers) return;\n\n for (var eventHandler in eventHandlers) {\n if (eventHandlers.hasOwnProperty(eventHandler) && eventHandlers[eventHandler]) {\n // Check if there's an array of event handlers\n if (Object.prototype.toString.call(eventHandlers[eventHandler]) === '[object Array]') {\n for (var i = 0; i < eventHandlers[eventHandler].length; i = i + 1) {\n // Check if it's an init handler\n if (eventHandler === 'init') {\n eventHandlers[eventHandler][i](this.dropzone)\n } else {\n this.dropzone.on(eventHandler, eventHandlers[eventHandler][i])\n }\n }\n } else {\n if (eventHandler === 'init') {\n eventHandlers[eventHandler](this.dropzone)\n } else {\n this.dropzone.on(eventHandler, eventHandlers[eventHandler])\n }\n }\n }\n }\n\n /*\n * see https://docs.dropzone.dev/configuration/events\n * see https://github.com/dropzone/dropzone/blob/main/src/options.js#L574\n */\n this.dropzone.on('addedfile', async (file) => {\n if (!file) return;\n\n const files = this.state.files || [];\n\n files.push(file);\n this.setState({ files })\n });\n\n this.dropzone.on('removedfile', (file) => {\n if (!file) return;\n\n const files = this.state.files || [];\n files.forEach((fileInFiles, i) => {\n if (fileInFiles.name === file.name && fileInFiles.size === file.size) {\n files.splice(i, 1)\n }\n });\n\n this.setState({ files })\n });\n\n this.dropzone.on('uploadprogress', (file, progress, bytesSent) => {\n progress = bytesSent / file.size * 100;\n // https://developer.mozilla.org/es/docs/Web/API/Document/querySelector\n //let elem = document.querySelector(`#${this.props.id} .dz-upload`);\n if(file.previewElement) {\n let elem = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n\n if(elem.length > 0)\n elem = elem[0];\n\n if (elem)\n elem.style.width = progress + \"%\";\n }\n });\n\n this.dropzone.on('sending', (file, xhr, formData) => {\n if(file?.accessToken)\n xhr.setRequestHeader('Authorization', `Bearer ${file.accessToken}`);\n\n // synchronous append (this WILL be included)\n if (file?.md5)\n formData.append('md5', file.md5);\n\n formData.append('size', String(file?.size || 0));\n console.log(`DropzoneJS::sending md5 ${file?.md5} size ${file?.size}`);\n\n let _this = this;\n // This will track all request so we can get the correct request that returns final response:\n // We will change the load callback but we need to ensure that we will call original\n // load callback from dropzone\n let dropzoneOnLoad = xhr.onload;\n xhr.onload = function (e) {\n\n dropzoneOnLoad(e);\n if(xhr?.status == 200) {\n // Check for final chunk and get the response\n let uploadResponse = JSON.parse(xhr.responseText);\n if (typeof uploadResponse.name === 'string') {\n _this.onUploadComplete(uploadResponse);\n }\n }\n else{\n _this.onError(JSON.parse(xhr?.responseText), xhr?.status);\n }\n\n }\n })\n\n this.dropzone.on('error', (file, message) => {\n console.log(`DropzoneJS::error`, message);\n this.onError(message);\n });\n }\n\n /**\n * Removes ALL listeners and Destroys dropzone. see https://github.com/enyo/dropzone/issues/1175\n */\n destroy (dropzone) {\n dropzone.off();\n return dropzone.destroy()\n }\n}\n\nDropzoneJS.defaultProps = {\n djsConfig: {},\n config: {},\n eventHandlers: {},\n data: {},\n};\n\nDropzoneJS.propTypes = {\n id: PropTypes.string.isRequired\n};\n\nexport default DropzoneJS;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\nimport DropzoneJS from './dropzone'\nimport './index.less';\nimport file_icon from '../upload-input/file.png';\nimport ProgressiveImg from \"../../progressive-img\";\nconst FileNameMaxLen = 20;\n\nexport default class UploadInputV2 extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n getDefaultAllowedExtensions = () => {\n const { mediaType } = this.props\n return mediaType && mediaType.type ? mediaType?.type?.allowed_extensions.map((ext) => `.${ext.toLowerCase()}`).join(\",\") : '';\n }\n\n getDefaultMaxSize = () => {\n const { mediaType } = this.props\n return mediaType ? mediaType?.max_size / 1024 : 100;\n }\n\n getDropzone = () => {\n const {\n value,\n onRemove,\n canAdd = true,\n mediaType,\n postUrl,\n maxFiles = 1,\n timeOut,\n onUploadComplete,\n djsConfig,\n id,\n parallelChunkUploads = false,\n onError = () => {},\n getAllowedExtensions = null,\n getMaxSize = null\n } = this.props;\n\n const allowedExt = getAllowedExtensions ? getAllowedExtensions() : this.getDefaultAllowedExtensions();\n const maxSize = getMaxSize ? getMaxSize() : this.getDefaultMaxSize();\n const canUpload = !maxFiles || value.length < maxFiles;\n\n let eventHandlers = {};\n if (onRemove) {\n eventHandlers = {removedfile: onRemove};\n }\n\n const djsConfigSet = {\n paramName: \"file\", // The name that will be used to transfer the file,\n maxFilesize: maxSize, // MB,\n timeout: timeOut || (1000 * 60 * 10),\n chunking: true,\n retryChunks: true,\n parallelChunkUploads: parallelChunkUploads,\n addRemoveLinks: true,\n maxFiles: maxFiles,\n acceptedFiles: allowedExt,\n ...djsConfig\n };\n\n const componentConfig = {\n showFiletypeIcon: false,\n postUrl: postUrl\n };\n\n const data = {\n media_type: mediaType,\n media_upload: value,\n };\n\n if (!postUrl) {\n return (\n <div className=\"filepicker disabled\">\n No Post URL\n </div>\n );\n }\n if (!canAdd) {\n return (\n <div className=\"filepicker disabled\">\n Upload has been disabled by administrators.\n </div>\n );\n } else if (!canUpload) {\n return (\n <div className=\"filepicker disabled\">\n Max number of files uploaded for this type - Remove uploaded file to add new file.\n </div>\n );\n } else {\n return (\n <DropzoneJS\n id={id}\n djsConfig={djsConfigSet}\n config={componentConfig}\n eventHandlers={eventHandlers}\n data={data}\n uploadCount={value.length}\n onUploadComplete={onUploadComplete}\n onError={onError}\n />\n );\n }\n }\n\n render() {\n const {value, canDelete = true, onRemove, error} = this.props;\n const has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n\n return (\n <div className=\"row\">\n <div className=\"col-md-6\" style={{height: 180}}>\n {this.getDropzone()}\n </div>\n <div className=\"col-md-6\">\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n {value.length > 0 &&\n <ul className=\"upload-input-v2-preview-container\">\n {value.map((v,i) => {\n let src = v?.private_url || v?.public_url;\n if(src === '#') src = v?.public_url;\n // custom replace for dropbox case ( download vs raw)\n let filename = v.filename;\n let previewSrc = src ? src.replace(\"?dl=0\",\"?raw=1\") : filename;\n let ext = filename.split('.').pop();\n let path = filename.replace(`.${ext}`, '');\n if (path.length > FileNameMaxLen) {\n path = path.substring(0, FileNameMaxLen);\n }\n\n return (\n <li key={`uploaded-${i}`}>\n <span className=\"file-preview\">\n <a href={src} target=\"_blank\" title=\"See Preview\">\n <ProgressiveImg\n alt={v.filename}\n src={previewSrc}\n placeholderSrc={file_icon}\n />\n </a>\n </span>\n <span className=\"file-name\"><a href={src} target=\"_blank\" title=\"See Preview\">{`${path}.${ext}`}</a></span>\n {onRemove && canDelete &&\n <span className=\"file-delete\">\n <a href=\"#\" data-tip=\"delete\" title=\"Delete File\" onClick={ev => onRemove(v)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n </span>\n }\n </li>\n )\n })}\n </ul>\n }\n </div>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dropzone\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useEffect, useState} from 'react';\nimport Dropzone from 'react-dropzone';\nimport T from 'i18n-react/dist/i18n-react';\nimport './upload.less';\n\nimport file_icon from './file.png';\nimport pdf_icon from './pdf.png';\nimport mov_icon from './mov.png';\nimport mp4_icon from './mp4.png';\nimport csv_icon from './csv.png';\n\nconst fileHasPreview = (fileName) => {\n if (!fileName) return false;\n const pattern = /(.*)\\.(gif|bmp|svg|jpe?g|png)/g\n return pattern.test(fileName);\n}\n\nconst getPreviewIcon = (value, fileName) => {\n if (value && fileHasPreview(fileName)) {\n return value;\n }\n\n const ext = fileName.split('.').pop();\n\n switch (ext) {\n case 'pdf':\n return pdf_icon;\n case 'mov':\n return mov_icon;\n case 'mp4':\n return mp4_icon;\n case 'csv':\n return csv_icon;\n default:\n return file_icon;\n }\n}\n\nconst UploadInput = ({value, error, handleRemove, handleUpload, handleError, ...rest}) => {\n const [showRemove, setShowRemove] = useState(false);\n const [logoPreview, setLogoPreview] = useState({preview: null, name: ''});\n\n useEffect(() => {\n const logoPreviewTmp = {preview: null, name: ''};\n\n if (value) {\n const fileName = value.split(\"/\").pop();\n logoPreviewTmp.preview = getPreviewIcon(value, fileName);\n logoPreviewTmp.name = fileName;\n setLogoPreview(logoPreviewTmp);\n }\n }, [value]);\n\n const onDrop = (acceptedFiles, fileRejections) => {\n if (acceptedFiles.length > 0) {\n const file = acceptedFiles[0];\n handleUpload(file, {...rest});\n }\n\n if (fileRejections.length > 0 && handleError)\n handleError(fileRejections, {...rest});\n }\n\n const onRemove = (ev) => {\n ev.preventDefault();\n handleRemove(ev, {...rest});\n }\n\n const showVeil = () => {\n setShowRemove(true)\n }\n\n const hideVeil = () => {\n setShowRemove(false);\n }\n\n const has_error = error !== '';\n\n return (\n <div className=\"file-upload\">\n <Dropzone\n onDrop={onDrop}\n {...rest}\n >\n <div>{T.translate(\"general.drop_files\")}</div>\n </Dropzone>\n <div className=\"selected-files-box col-md-6\">\n <p>Selected Files</p>\n <div className=\"selected-files\">\n {value &&\n <div className=\"file-box\" onMouseEnter={showVeil} onMouseLeave={hideVeil}>\n <img src={logoPreview.preview} />\n <a href={value} target=\"_blank\">{logoPreview?.name}</a>\n {showRemove &&\n <div className=\"remove\" onClick={onRemove}>\n <i className=\"fa fa-times\"></i>\n </div>\n }\n </div>\n }\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n </div>\n </div>\n )\n}\n\nexport default UploadInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"loading\":\"T1PEDYso224efj98hUw9\",\"loaded\":\"HydBuzzegFMoqMkrptg7\",\"image\":\"Pq0tg32DAJ33TmIQMvMs\"};","/**\n * Copyright 2023 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport React,{ useState, useEffect, useRef } from \"react\";\nimport styles from './index.module.scss';\nimport pdf_icon from \"../inputs/upload-input/pdf.png\";\nimport mov_icon from \"../inputs/upload-input/mov.png\";\nimport mp4_icon from \"../inputs/upload-input/mp4.png\";\nimport csv_icon from \"../inputs/upload-input/csv.png\";\nimport file_icon from \"../inputs/upload-input/file.png\";\n/**\n *\n * @param placeholderSrc\n * @param src\n * @param props\n * @returns {JSX.Element}\n * @constructor\n */\nconst ProgressiveImg = ({ placeholderSrc, src, ...props }) => {\n const isCancelled = useRef(false);\n const [imgSrc, setImgSrc] = useState(placeholderSrc || src);\n const [customClass, setCustomClass] = useState(styles.loading);\n\n useEffect(() => {\n const img = new Image();\n const ext = src ? src.split('.').pop() : null;\n img.src = src;\n\n img.onload = () => {\n if (isCancelled.current) return\n setImgSrc(src)\n setCustomClass(styles.loaded)\n };\n\n img.onerror = () => {\n if (isCancelled.current) return\n img.onerror = null;\n if(ext && ext.toString().toLowerCase().includes('pdf'))\n setImgSrc(pdf_icon)\n else if(ext && ext.toString().toLowerCase().includes('mov'))\n setImgSrc(mov_icon);\n else if(ext && ext.toString().toLowerCase().includes('mp4'))\n setImgSrc(mp4_icon);\n else if(ext && ext.toString().toLowerCase().includes('csv'))\n setImgSrc(csv_icon);\n else\n setImgSrc(file_icon);\n setCustomClass(styles.loaded)\n };\n\n return () => {\n isCancelled.current = true;\n };\n }, [src]);\n\n return (\n <img\n {...{ src: imgSrc, ...props }}\n alt={props.alt || \"\"}\n className={`${styles.image} ${customClass}`}\n />\n );\n};\nexport default ProgressiveImg;\n","import React from 'react';\n\nconst RawHTML = ({children, replaceNewLine = false, className = \"\", ...rest}) =>\n <span className={className}\n dangerouslySetInnerHTML={{ __html: replaceNewLine ? children?.replace(/\\n/g, '<br />') : children}} {...rest}/>\n\nexport default RawHTML;","export const DraggableItemTypes = {\n UNSCHEDULEEVENT: 'UnScheduleEvent',\n SCHEDULEEVENT: 'ScheduleEvent',\n};\n\nexport const TBALocation = {id : 0, name : 'TBD', class_name: 'SummitVenue'};\nexport const SlotSizeOptions = [1,5,10,15,30,60]; // 12 - 6 - 4 - 2 - 1\nexport const PixelsPerMinute = 3;\n\nexport const BulkActionEdit = 'BULK_ACTION_EDIT';\nexport const BulkActionPublish = 'BULK_ACTION_PUBLISH';\nexport const BulkActionUnPublish = 'BULK_ACTION_UNPUBLISH';\n\nexport const bulkOptions = [\n {value: BulkActionEdit, label: 'Edit'},\n {value: BulkActionUnPublish, label: 'Unpublish'},\n];\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-bootstrap\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useState, useEffect} from 'react';\nimport {DraggableItemTypes} from './constants';\nimport {useDrag} from 'react-dnd';\nimport {Popover, OverlayTrigger} from 'react-bootstrap';\nimport RawHTML from '../raw-html';\n\nconst RESIZING_DIR_NORTH = 'N';\nconst RESIZING_DIR_SOUTH = 'S';\n\nconst ScheduleEvent = ({\n event,\n step,\n initialTop,\n initialHeight,\n minHeight,\n maxHeight,\n canResize,\n allowResize,\n allowDrag,\n onResized,\n onUnPublishEvent,\n onEditEvent,\n onClickSelected,\n selectedPublishedEvents,\n onMoveEvent\n }) => {\n const [collected, drag] = useDrag(() => ({\n type: DraggableItemTypes.SCHEDULEEVENT,\n item: {id: event.id, title: event.title, is_published: event.is_published, start_date: event.start_date, end_date: event.end_date, duration: event.duration},\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n canDrag: allowDrag && !event.static\n }), [event.id, event.duration, event.start_date, event.end_date]);\n const [resizeInfo, setResizeInfo] = useState({resizing: false, type: null, lastYPos: null});\n const [size, setSize] = useState({top: initialTop, height: initialHeight});\n const isSelected = selectedPublishedEvents?.includes(event.id) || false;\n const canEdit = !event.static;\n const isResizable = allowResize && canEdit && size.height > 15;\n\n const popoverHoverFocus = () =>\n <Popover id=\"popover-trigger-focus\" title={event.title}>\n <RawHTML>{event.description}</RawHTML>\n </Popover>\n\n // resize behavior\n\n const onMouseDown = (evt) => {\n if (!evt.target.getAttribute('data-resizable')) return;\n\n const box = evt.target.getBoundingClientRect();\n\n let type;\n if (evt.clientY - box.top < 10) {\n type = RESIZING_DIR_NORTH;\n } else if (box.bottom - evt.clientY < 10) {\n type = RESIZING_DIR_SOUTH;\n } else {\n return;\n }\n\n setResizeInfo({resizing: true, type, lastYPos: evt.pageY});\n\n evt.preventDefault();\n }\n\n const onMouseMove = (evt) => {\n if (!resizeInfo.resizing) return;\n\n let lastYPos = resizeInfo.lastYPos;\n let newYPos = evt.pageY;\n let deltaY = newYPos - lastYPos;\n\n if (step && step > 0) {\n let steps = parseInt(Math.round(Math.abs(deltaY) / step));\n deltaY = Math.sign(deltaY) * steps * step;\n if (!deltaY) {\n evt.preventDefault();\n return false;\n }\n }\n\n let newHeight = size.height;\n let newTop = size.top;\n\n if (resizeInfo.type === RESIZING_DIR_SOUTH) {\n newHeight = size.height + deltaY;\n }\n\n if (resizeInfo.type === RESIZING_DIR_NORTH) {\n if (deltaY < 0) {\n newTop = size.top - Math.abs(deltaY);\n newHeight = size.height + Math.abs(deltaY);\n } else {\n newTop = size.top + Math.abs(deltaY);\n newHeight = size.height - Math.abs(deltaY);\n }\n }\n\n // check constraints\n if (newHeight < minHeight) {\n newHeight = minHeight;\n newYPos = lastYPos;\n newTop = size.top;\n }\n\n let maxHeightTmp = (typeof maxHeight === \"function\") ? maxHeight() : maxHeight;\n\n if (newHeight > maxHeightTmp) {\n newHeight = maxHeightTmp;\n newYPos = lastYPos;\n newTop = size.top;\n }\n\n if (newTop < 0) {\n newTop = 0;\n newHeight = size.height;\n newYPos = lastYPos;\n }\n\n if (canResize(event.id, newTop, newHeight)) {\n setResizeInfo({\n ...resizeInfo,\n resizing: true,\n lastYPos: newYPos\n });\n\n setSize({\n top: newTop,\n height: newHeight,\n });\n }\n\n evt.preventDefault();\n };\n\n const onMouseUp = (evt) => {\n evt.preventDefault();\n setResizeInfo({type: null, lastYPos: null, resizing: false});\n };\n \n const eventTitleBlock = () => {\n let block = null;\n \n if (event.description) {\n block = (<OverlayTrigger trigger={['hover']} placement=\"bottom\" overlay={popoverHoverFocus()}>\n <div className=\"event-content\">\n <span className=\"event-title withTooltip\">{`${event.id} - ${event.title}${event.duration ? ` - ${event.duration/60} minutes` : ''}`}</span>\n </div>\n </OverlayTrigger>);\n } else {\n block = (<div className=\"event-content\">\n <span className=\"event-title\">{`${event.id} - ${event.title}${event.duration ? ` - ${event.duration/60} minutes` : ''}`}</span>\n </div>);\n }\n \n return block;\n }\n\n // end resize behavior\n\n useEffect(() => {\n if (resizeInfo.resizing) {\n document.addEventListener('mousemove', onMouseMove, false);\n document.addEventListener('mouseup', onMouseUp, false);\n } else {\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n\n if (size.top !== initialTop || size.height !== initialHeight) {\n onResized(event.id, size.top, size.height);\n }\n }\n\n return () => {\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n }\n }, [resizeInfo.resizing])\n\n return (\n <div\n className={`row schedule-event ${isResizable ? 'is-resizable' : ''} ${canEdit ? '' : 'is-static'}`}\n data-resizable={true}\n id={`event_${event.id}`}\n onMouseDown={onMouseDown}\n ref={drag}\n style={{\n top: size.top,\n height: size.height,\n display: collected.isDragging ? 'none' : 'block',\n cursor: 'move',\n }}\n >\n {onClickSelected &&\n <div className=\"event-select-wrapper\">\n <input\n className=\"select-event-btn\"\n id={`selected_event_${event.id}`}\n type=\"checkbox\"\n checked={isSelected}\n onChange={() => onClickSelected(event)}\n />\n </div>\n }\n <div className=\"col-md-12 event-container\">\n {eventTitleBlock()}\n </div>\n <div className=\"event-actions\">\n {!event.static && onUnPublishEvent &&\n <i\n className=\"fa fa-minus-circle event-action-btn\"\n aria-hidden=\"true\"\n title=\"unpublish event\"\n onClick={() => onUnPublishEvent(event)}\n />\n }\n {onEditEvent &&\n <i\n className=\"fa fa-pencil-square-o event-action-btn\"\n title=\"edit event\"\n aria-hidden=\"true\"\n onClick={() => onEditEvent(event)}\n />\n }\n {!event.static && onMoveEvent &&\n <i\n className=\"fa fa-arrow-circle-right event-action-btn\"\n title=\"move event\"\n aria-hidden=\"true\"\n onClick={() => onMoveEvent(event)}\n />\n }\n </div>\n </div>\n );\n}\n\nexport default ScheduleEvent;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributschedule-event-list'ed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useEffect, useRef, useState} from 'react';\nimport moment from 'moment-timezone'\nimport {useDrop} from 'react-dnd'\nimport {DraggableItemTypes} from './constants';\nimport ScheduleEvent from './schedule-event';\nimport ReactDOM from 'react-dom';\nimport SummitEvent from '../../models/summit-event';\n\nconst TimeSlot = ({timeLabel, id}) => {\n return (\n <div id={id} className=\"row time-slot\">\n <div className=\"col-md-12\">\n <span>{timeLabel}</span>\n </div>\n </div>\n )\n}\n\nconst TimeSlotContainer = ( props ) => {\n const {currentDay, currentSummit, events, timeSlot, pixelsPerMinute, interval, canDropEvent, onDroppedEvent} = props;\n const divId = `time_slot_container_${timeSlot.format('HH_mm')}`;\n const [collectedProps, drop] = useDrop(() => ({\n accept: [DraggableItemTypes.UNSCHEDULEEVENT, DraggableItemTypes.SCHEDULEEVENT],\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n }),\n canDrop: (item, monitor) => {\n if (canDropEvent) return canDropEvent(item, monitor);\n const eventModel = new SummitEvent(item, currentSummit);\n return eventModel.canMove(events, currentDay, timeSlot, interval);\n },\n drop: (item, monitor, component) => {\n onDroppedEvent(item, timeSlot);\n }\n }), [interval, timeSlot, currentDay]);\n const {isOver, canDrop} = collectedProps;\n\n const renderMinutesContainer = (interval, pixelsPerMinute) => {\n let minutesContainers = [];\n let container_count = 2;\n let container_height = pixelsPerMinute * 5;\n\n for (var i = 0; i < container_count; i++) {\n\n minutesContainers[i] = <div key={i} className=\"minute-container\" style={{\n position: 'relative',\n width: '100%',\n height: `${container_height}px`\n }}/>;\n }\n\n return minutesContainers;\n };\n\n const placeHolderStyle = () => {\n const style = {};\n\n if (isOver) {\n style.backgroundColor = canDrop ? 'green' : 'red';\n style.opacity = 0.5;\n } else if (canDrop) {\n style.backgroundColor = 'yellow';\n style.opacity = 0.5;\n }\n\n return style;\n }\n\n return (\n <div id={divId} ref={drop} className=\"row time-slot-container\" style={placeHolderStyle()}>\n <div className=\"col-md-12\">\n {renderMinutesContainer(interval, pixelsPerMinute)}\n </div>\n </div>\n );\n};\n\nconst ScheduleEventList = (props) => {\n const listRef = useRef();\n const prevIntervalRef = useRef();\n const [timeSlotsList, setTimeSlotsList] = useState([]);\n const [newScrollTop, setNewScrollTop] = useState(null);\n const scheduleEventContainer = useRef(null);\n \n // sets scrollbar position after interval change and render\n useEffect(() => {\n if (newScrollTop) {\n listRef.current.scrollTop = newScrollTop;\n setNewScrollTop(null);\n }\n }, [newScrollTop]);\n\n useEffect(() => {\n const slotChangeRatio = prevIntervalRef.current / props.interval;\n // set scroll pos to set scrollbar after render\n setNewScrollTop(listRef.current.scrollTop * slotChangeRatio);\n createSlots();\n prevIntervalRef.current = props.interval;\n }, [props.interval, props.startTime, props.endTime]);\n\n const onDroppedEvent = (event, startTime) => {\n props.onScheduleEvent(event, props.currentDay, startTime);\n }\n\n const canResize = (eventId, newTop, newHeight) => {\n const {events, currentDay, startTime, pixelsPerMinute, currentSummit} = props;\n const {height} = getBoundingBox();\n\n if (height < (newTop + newHeight)) {\n return false;\n }\n\n const filteredEvents = events.filter(evt => {\n return evt.id !== eventId;\n });\n // calculate new event start date, end date\n const minutes = Math.floor(newTop / (pixelsPerMinute * (10 / interval)));\n const duration = Math.floor(newHeight / (pixelsPerMinute * (10 / interval)));\n\n let startDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n startDateTime = startDateTime.add(minutes, 'minutes');\n let endDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n endDateTime = endDateTime.add(minutes + duration, 'minutes');\n\n for (const auxEvent of filteredEvents) {\n const auxEventStartDateTime = moment(auxEvent.start_date * 1000).tz(currentSummit.time_zone.name);\n const auxEventEndDateTime = moment(auxEvent.end_date * 1000).tz(currentSummit.time_zone.name);\n // if time segments overlap\n if (auxEventStartDateTime.isBefore(endDateTime) && auxEventEndDateTime.isAfter(startDateTime))\n return false;\n }\n\n return true;\n }\n\n const onResized = (eventId, newTop, newHeight) => {\n const {events, currentDay, startTime, pixelsPerMinute, currentSummit} = props;\n const event = events.filter(evt => {\n return evt.id === eventId;\n }).shift();\n const minutes = Math.floor(newTop / (pixelsPerMinute * (10 / interval)));\n const duration = Math.floor(newHeight / (pixelsPerMinute * (10 / interval)));\n let startDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n startDateTime = startDateTime.add(minutes, 'minutes');\n\n props.onScheduleEvent(event, currentDay, moment(startDateTime.format('HH:mm'), 'HH:mm'), duration);\n }\n\n const getMaxHeight = () => {\n return getBoundingBox().height;\n }\n\n const getBoundingBox = () => {\n return ReactDOM.findDOMNode(scheduleEventContainer.current).getBoundingClientRect();\n }\n\n const calculateInitialTop = (event) => {\n const {currentDay, startTime, pixelsPerMinute, currentSummit} = props;\n const eventStartDateTime = moment(event.start_date * 1000).utc().tz(currentSummit.time_zone.name);\n const dayStartDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n const minutes = eventStartDateTime.diff(dayStartDateTime, 'minutes');\n return minutes * pixelsPerMinute * (10 / interval);\n }\n\n const calculateInitialHeight = (event) => {\n const {pixelsPerMinute, currentSummit, interval} = props;\n const eventStartDateTime = moment(event.start_date * 1000).tz(currentSummit.time_zone.name);\n const eventEndDateTime = moment(event.end_date * 1000).tz(currentSummit.time_zone.name);\n const minutes = eventEndDateTime.diff(eventStartDateTime, 'minutes');\n return minutes * pixelsPerMinute * (10 / interval);\n }\n\n const createSlots = () => {\n const tmpList = [];\n let done = false;\n const startTimeTZ = moment.tz(startTime, 'HH:mm', currentSummit.time_zone.name);\n const endTimeTZ = moment.tz(endTime, 'HH:mm', currentSummit.time_zone.name);\n // create UI\n let slot = startTimeTZ;\n do {\n tmpList.push(slot);\n slot = slot.clone();\n slot.add(interval, 'm');\n done = slot.isAfter(endTimeTZ);\n } while (!done);\n\n setTimeSlotsList(tmpList);\n };\n\n const {\n events,\n startTime,\n endTime,\n interval,\n pixelsPerMinute,\n currentDay,\n currentSummit,\n canDropEvent,\n onEditEvent,\n onUnPublishEvent,\n onClickSelected,\n selectedPublishedEvents\n } = props;\n\n return (\n <div className=\"row outer-schedule-events-container\" ref={listRef}>\n <div className=\"col-md-2 no-margin no-padding\">\n {\n timeSlotsList.map((slot, idx) => (\n <TimeSlot timeLabel={slot.format(\"HH:mm\")} key={idx} id={slot.format(\"HH_mm\")}/>\n ))\n }\n </div>\n <div\n className=\"schedule-events-container col-md-10 no-margin no-padding\"\n ref={scheduleEventContainer}\n >\n {\n timeSlotsList.map((slot, idx) => (\n <TimeSlotContainer\n timeSlot={slot}\n canDropEvent={canDropEvent}\n onDroppedEvent={onDroppedEvent}\n key={`timeslot-${idx}`}\n events={events}\n currentSummit={currentSummit}\n interval={interval}\n pixelsPerMinute={pixelsPerMinute}\n currentDay={currentDay}>\n </TimeSlotContainer>\n ))\n }\n {\n events.map((event, idx) => {\n return (\n <ScheduleEvent\n event={event}\n selectedPublishedEvents={selectedPublishedEvents}\n key={`event-${event.id}-${event.last_edited}-${interval}`}\n type={\"MAIN\"}\n step={pixelsPerMinute * 5}\n minHeight={(pixelsPerMinute * 10)}\n initialTop={calculateInitialTop(event)}\n initialHeight={calculateInitialHeight(event)}\n canResize={canResize}\n allowResize={props.allowResize}\n allowDrag={props.allowDrag}\n onResized={onResized}\n maxHeight={getMaxHeight}\n onUnPublishEvent={onUnPublishEvent}\n onEditEvent={onEditEvent}\n onClickSelected={onClickSelected}\n currentDay={currentDay}\n onMoveEvent={props.onMoveEvent}\n >\n </ScheduleEvent>)\n })\n }\n </div>\n </div>\n );\n}\n\nexport default ScheduleEventList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@react-pdf/renderer\");","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Document, Page, StyleSheet, View, Text, Image } from '@react-pdf/renderer';\nimport { convertSVGtoImg, getEventHosts, getEventLocation, epochToMomentTimeZone } from '../../utils/methods';\n\n// Create styles\nconst styles = StyleSheet.create({\n header: {\n fontSize: '18px',\n textAlign: 'center'\n },\n headlineWrapper: {\n margin: '0 10px 20px',\n display: 'flex',\n flexDirection: 'row',\n },\n headline: {\n margin: 'auto'\n },\n logo: {\n marginRight: '20px',\n backgroundColor: 'lightgray'\n },\n subtitle: {\n padding: '10px',\n fontSize: '12px',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n label: {\n fontSize: '8px',\n textTransform: 'uppercase'\n },\n eventList: {\n flexDirection: 'column',\n display: 'flex',\n overflow: 'hidden',\n padding: '20px'\n },\n eventWrapper: {\n margin: 5,\n padding: 5,\n border: '1px solid black'\n },\n locationWrapper: {\n marginBottom: 8,\n fontSize: '10px',\n color: '#4A4A4A',\n fontWeight: 600,\n },\n title: {\n marginBottom: 10,\n display: 'inline-flex',\n fontSize: '12px',\n color: '#4A4A4A',\n fontWeight: 600,\n },\n footer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%'\n },\n leftCol: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n maxWidth: '65%',\n },\n speakers: {\n fontSize: '10px',\n color: '#4A4A4A',\n },\n trackWrapper: {\n fontWeight: 'bold',\n fontSize: '10px',\n position: 'relative',\n marginTop: 'auto',\n },\n rightCol: {\n maxWidth: '35%'\n },\n tagsWrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'right'\n },\n tag: {\n backgroundColor: '#F6F6F6',\n borderRadius: '8px',\n height: '10px',\n margin: '4px 4px 0 0',\n padding: '1px 2px',\n textTransform: 'uppercase',\n fontSize: '6px',\n color: '#4A4A4A',\n }\n});\n\nconst SchedulePrintView = ({ events, summit, nowUtc }) => {\n const [imgData, setImgData] = useState(null);\n const getSpeakers = (event) => {\n const speakerTags = getEventHosts(event).map(sp => `${sp.first_name} ${sp.last_name}`);\n\n if (speakerTags.length > 0) {\n return (\n <View style={styles.speakers}>\n <Text>By {speakerTags.join(', ')}</Text>\n </View>\n );\n }\n\n return null;\n };\n\n const sortedEvents = events.sort((a,b) => a.start_date - b.start_date);\n const venue = summit.locations.find(l => l.class_name === 'SummitVenue');\n const summitStart = epochToMomentTimeZone(summit.start_date, summit.time_zone_id).format('MMMM Do YYYY');\n const summitEnd = epochToMomentTimeZone(summit.end_date, summit.time_zone_id).format('MMMM Do YYYY');\n \n useEffect(() => {\n if (summit.logo) {\n const getPngLogo = async () => {\n const _imgData = await convertSVGtoImg(summit.logo);\n setImgData(_imgData);\n }\n\n getPngLogo();\n }\n }, [summit.logo])\n\n if (!imgData) return null;\n\n return (\n <Document>\n <Page size='A4' style={styles.eventList}>\n <View style={styles.header}>\n <View style={styles.headlineWrapper}>\n <Image src={imgData.url} style={{...styles.logo, width: imgData.width, height: imgData.height}} />\n <Text style={styles.headline}>Schedule for {summit.name}</Text>\n </View>\n <View style={styles.subtitle}>\n <View>\n <Text style={styles.label}>Venue:</Text><Text>{venue?.name}</Text>\n </View>\n <View>\n <Text style={styles.label}>Start:</Text><Text>{summitStart}</Text>\n </View>\n <View>\n <Text style={styles.label}>End:</Text><Text>{summitEnd}</Text>\n </View>\n </View>\n </View>\n {sortedEvents.map(event => {\n const eventDate = epochToMomentTimeZone(event.start_date, summit.time_zone_id).format('ddd, MMMM D');\n const eventStartTime = epochToMomentTimeZone(event.start_date, summit.time_zone_id).format('h:mma');\n const eventEndTime = epochToMomentTimeZone(event.end_date, summit.time_zone_id).format('h:mma');\n const venueCount = summit.locations.filter(loc => loc.class_name === 'SummitVenue');\n const locationStr = getEventLocation(event, venueCount, summit.start_showing_venues_date, nowUtc);\n const eventColorStyle = event.eventColor ? {borderLeft: `4px solid ${event.eventColor}`} : {};\n\n return (\n <View\n style={{...styles.eventWrapper, ...eventColorStyle}}\n key={`event-${event.id}`}\n wrap={false}\n >\n <View style={styles.locationWrapper}>\n <Text>\n {`${eventDate}, ${eventStartTime} - ${eventEndTime} | ${locationStr}`}\n </Text>\n </View>\n <View style={styles.title}>\n <Text>{event.title}</Text>\n </View>\n <View style={styles.footer}>\n <View style={styles.leftCol}>\n {event.track &&\n <View style={styles.trackWrapper}>\n <Text>{event.track?.name}</Text>\n </View>\n }\n {(event.speakers?.length > 0 || event.moderator) &&\n <View>\n {getSpeakers(event)}\n </View>\n }\n </View>\n <View style={styles.rightCol}>\n <View style={styles.tagsWrapper}>\n {event.tags?.map(t =>\n <View key={`tag-${t.id}-${event.id}`} style={styles.tag}>\n <Text>{t.tag}</Text>\n </View>\n )}\n </View>\n </View>\n </View>\n </View>\n );\n })}\n </Page>\n </Document>\n );\n};\n\nSchedulePrintView.propTypes = {\n events: PropTypes.array.isRequired,\n summit: PropTypes.object.isRequired\n};\n\nexport default SchedulePrintView;\n\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"XZyB3zy09oNiJPYXzMaR\",\"cal\":\"V8lrMEK6XXJUFDwsrtSs\"};","import React, {useState} from 'react'\nimport {PDFDownloadLink} from '@react-pdf/renderer';\nimport SchedulePrintView from \"../schedule-print/schedule-print-view\";\nimport styles from './styles.module.scss'\n\n\nconst SchedulePrintButton = ({events, summit, nowUtc = null}) => {\n const [downloadPdf, setDownloadPdf] = useState(false);\n \n return (\n <>\n {!downloadPdf &&\n <button className={`${styles.button} ${styles.cal}`} onClick={() => setDownloadPdf(true)}>\n <i className='fa fa-print' aria-hidden='true'/>\n Print\n </button>\n }\n \n {downloadPdf &&\n <PDFDownloadLink\n className={`${styles.button} ${styles.cal}`}\n document={<SchedulePrintView events={events} summit={summit} nowUtc={nowUtc}/>}\n fileName=\"schedule.pdf\"\n >\n {({blob, url, loading, error}) => {\n return (!blob || loading ? 'Creating document...' : 'Download PDF');\n }\n }\n </PDFDownloadLink>\n }\n </>\n );\n}\n\nexport default SchedulePrintButton;\n","import React, {useEffect, useMemo} from 'react';\nimport SummitDaysSelect from \"../inputs/summit-days-select\";\nimport SummitVenuesSelect from \"../inputs/summit-venues-select\";\nimport SteppedSelect from \"../inputs/stepped-select/index.jsx\";\nimport ScheduleEventList from \"./schedule-event-list\";\nimport {epochToMomentTimeZone, parseLocationHour} from \"../../utils/methods\";\nimport BulkActionsSelector from \"../bulk-actions-selector/index.js\";\nimport {bulkOptions, PixelsPerMinute, SlotSizeOptions, TBALocation} from \"./constants\";\nimport SchedulePrintButton from \"../schedule-print/schedule-print-button\";\n\nimport './schedule-builder-view.less';\n\nconst getDaysOptions = (summit, trackSpaceTime, currentLocation) => {\n const days = [];\n const summitLocalStartDate = epochToMomentTimeZone(summit.start_date, summit.time_zone_id);\n const summitLocalEndDate = epochToMomentTimeZone(summit.end_date, summit.time_zone_id);\n let currentAuxDay = summitLocalStartDate.clone();\n const allowedDays =\n trackSpaceTime\n ?.find(sp => sp.location_id === currentLocation?.id)\n ?.allowed_timeframes?.map(\n at => epochToMomentTimeZone(at.day, summit.time_zone_id).format(\"YYYY-MM-DD\")\n ) || null;\n \n do {\n const option = {\n value: currentAuxDay.format(\"YYYY-MM-DD\"),\n label: currentAuxDay.format('dddd Do , MMMM YYYY')\n };\n \n if (!allowedDays || allowedDays.length === 0 || allowedDays.includes(option.value)) {\n days.push(option);\n }\n currentAuxDay = currentAuxDay.clone();\n currentAuxDay.add(1, 'day');\n } while (!currentAuxDay.isAfter(summitLocalEndDate));\n \n return days;\n};\n\nconst getVenuesOptions = (summit, trackSpaceTime) => {\n const venues = [{value: TBALocation, label: TBALocation.name}];\n const allowedLocationIds = trackSpaceTime?.map(st => st.location_id) || null;\n \n const locations = summit.locations.filter(loc => {\n const isNotVenue = loc.class_name !== \"SummitVenue\";\n const isAllowed = allowedLocationIds ? allowedLocationIds.includes(loc.id) : true;\n return isNotVenue && isAllowed;\n })\n \n locations.forEach(loc => {\n const option = {value: loc, label: loc.name};\n venues.push(option);\n if (loc.hasOwnProperty('rooms')) {\n loc.rooms.forEach(r => {\n const subOption = {value: r, label: r.name};\n venues.push(subOption);\n })\n }\n })\n \n return venues;\n};\n\nconst getTimeframe = (currentDay, currentLocation, trackSpaceTime, summitTZ) => {\n if (currentDay && currentLocation && trackSpaceTime) {\n const allowedDays = trackSpaceTime.find(st => st.location_id === currentLocation.id)?.allowed_timeframes;\n \n if (allowedDays?.length > 0) {\n const allowedTimeFrame = allowedDays?.find(tf => epochToMomentTimeZone(tf.day, summitTZ).format(\"YYYY-MM-DD\") === currentDay);\n if (allowedTimeFrame) {\n return {open: parseLocationHour(allowedTimeFrame.opening_hour), close: parseLocationHour(allowedTimeFrame.closing_hour)};\n }\n }\n }\n \n if (currentLocation?.opening_hour && currentLocation?.closing_hour) {\n return {open: parseLocationHour(currentLocation.opening_hour), close: parseLocationHour(currentLocation.closing_hour)};\n }\n \n return {open: \"00:00\", close: \"23:50\"};\n};\n\nconst ScheduleBuilderView = ({\n summit,\n trackSpaceTime,\n scheduleEvents,\n selectedEvents,\n currentDay,\n currentVenue,\n slotSize,\n hideBulkSelect,\n ...props\n }) => {\n const days = useMemo(() => getDaysOptions(summit, trackSpaceTime, currentVenue), [summit.start_date, summit.end_date, trackSpaceTime, currentVenue]);\n const venues = useMemo(() => getVenuesOptions(summit, trackSpaceTime), [summit.locations, trackSpaceTime]);\n const slotSizeOptions = SlotSizeOptions.map(op => ({value: op, label: `${op} min.`}));\n const {allowResize = true, allowDrag = true} = props;\n const {open, close} = useMemo(() => getTimeframe(currentDay, currentVenue, trackSpaceTime, summit.time_zone_id), [currentDay, currentVenue, trackSpaceTime]);\n \n useEffect(() => {\n // if new location doesn't allow currentDay value, reset\n if (currentDay && !days.find(op => op.value === currentDay)) {\n props.onDayChanged(null);\n }\n }, [currentVenue])\n \n return (\n <div className=\"schedule-view-wrapper\">\n {(props.onSlotSizeChange || props.showPrint) &&\n <div className=\"row\" style={{marginBottom: 12, marginTop: 2}}>\n {props.onSlotSizeChange &&\n <div className=\"col-md-6\">\n <span>Slot size: </span>\n <SteppedSelect\n value={slotSize}\n onChange={props.onSlotSizeChange}\n options={slotSizeOptions}\n style={{display: 'inline-block', marginLeft: 10}}\n />\n </div>\n }\n {props.showPrint &&\n <div className=\"col-md-6 pull-right\">\n <SchedulePrintButton summit={summit} events={scheduleEvents} />\n </div>\n }\n </div>\n }\n <div className=\"row\">\n <div className=\"col-md-6\">\n <SummitVenuesSelect\n onVenueChanged={props.onVenueChanged}\n venues={venues}\n currentValue={currentVenue}\n placeholder=\"Select Room\"\n />\n </div>\n <div className=\"col-md-6\">\n <SummitDaysSelect\n onDayChanged={props.onDayChanged}\n days={days}\n currentValue={currentDay}\n placeholder=\"Select Day\"\n />\n </div>\n </div>\n <BulkActionsSelector\n bulkOptions={props.customBulkOptions || bulkOptions}\n onSelectAll={props.onSelectAll}\n onSelectedBulkAction={props.onSelectedBulkAction}\n show={!hideBulkSelect && scheduleEvents.length > 0}\n />\n \n {currentDay && currentVenue &&\n <ScheduleEventList\n startTime={open}\n endTime={close}\n currentSummit={summit}\n interval={slotSize}\n currentDay={currentDay}\n pixelsPerMinute={PixelsPerMinute}\n canDropEvent={props.canDropEvent}\n allowResize={allowResize}\n allowDrag={allowDrag}\n onScheduleEvent={props.onScheduleEvent}\n events={scheduleEvents}\n onUnPublishEvent={props.onUnPublishEvent}\n onEditEvent={props.onEditEvent}\n onClickSelected={props.onClickSelected}\n selectedPublishedEvents={selectedEvents}\n onMoveEvent={props.onMoveSingleEvent}\n />\n }\n </div>\n );\n}\n\nexport default ScheduleBuilderView;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\n\nexport default class Panel extends React.Component {\n\n render() {\n\n let {children, show, title, handleClick, className, id} = this.props;\n let theId = this.props.hasOwnProperty('id') ? id : `id_${title}`;\n let theClass = this.props.hasOwnProperty('className') ? className : '';\n\n return (\n <div className={\"panel-group \" + theClass} id={theId} >\n <div className=\"panel panel-default\">\n <a className={show ? 'collapsed' : ''} onClick={handleClick}>\n <div className=\"panel-heading\">\n <h4 className=\"panel-title\">\n {title}\n </h4>\n </div>\n </a>\n <div className=\"panel-collapse collapse in\">\n {show &&\n <div className=\"panel-body\">\n {children}\n </div>\n }\n </div>\n </div>\n </div>\n );\n\n }\n}","export const AUTH_ERROR_MISSING_AUTH_INFO = 'AUTH_ERROR_MISSING_AUTH_INFO';\nexport const AUTH_ERROR_MISSING_REFRESH_TOKEN = 'AUTH_ERROR_MISSING_REFRESH_TOKEN';\nexport const AUTH_ERROR_ACCESS_TOKEN_EXPIRED = 'AUTH_ERROR_ACCESS_TOKEN_EXPIRED';\nexport const AUTH_ERROR_LOCK_ACQUIRE_ERROR = 'AUTH_ERROR_LOCK_ACQUIRE_ERROR'\nexport const AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR = 'AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR';\nexport const AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR = 'AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR';\nexport const AUTH_ERROR_ID_TOKEN_INVALID = 'AUTH_ERROR_ID_TOKEN_INVALID';\nexport const AUTH_ERROR_MISSING_OTP_PARAM = 'AUTH_ERROR_MISSING_OTP_PARAM';\nexport const AUTH_ERROR_MISSING_PKCE_PARAM = 'AUTH_ERROR_MISSING_PKCE_PARAM';\nexport const AUTH_ERROR_MISSING_NONCE_PARAM = 'AUTH_ERROR_MISSING_NONCE_PARAM';\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"browser-tabs-lock\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"js-cookie\");","import {\n base64URLEncode,\n getAuthCallback,\n getCurrentLocation,\n getCurrentPathName,\n getFromLocalStorage,\n removeFromLocalStorage,\n getOrigin,\n putOnLocalStorage,\n retryPromise,\n setSessionClearingState,\n} from \"../../utils/methods\";\nimport moment from \"moment-timezone\";\nimport request from 'superagent/lib/client';\nimport SuperTokensLock from 'browser-tabs-lock';\nimport Cookies from 'js-cookie'\n\nlet http = request;\n\n/**\n * @ignore\n */\nconst Lock = new SuperTokensLock();\n/**\n * @ignore\n */\nconst GET_TOKEN_SILENTLY_LOCK_KEY = 'openstackuicore.lock.getTokenSilently';\nconst GET_TOKEN_SILENTLY_LOCK_KEY_TIMEOUT = 6000;\nconst NONCE_LEN = 16;\nexport const ACCESS_TOKEN_SKEW_TIME = 60;\nexport const RESPONSE_TYPE_IMPLICIT = \"token id_token\";\nexport const RESPONSE_TYPE_CODE = 'code';\nconst AUTH_INFO = 'authInfo';\nconst NONCE = 'nonce';\nconst PKCE = 'pkce';\nconst ID_TOKEN = 'idToken';\n\nimport URI from \"urijs\";\nimport IdTokenVerifier from \"idtoken-verifier\";\nimport {SET_LOGGED_USER} from \"./actions\";\nimport {getRandomBytes, getSHA256} from \"../../utils/crypto\";\n\nimport {\n AUTH_ERROR_ACCESS_TOKEN_EXPIRED,\n AUTH_ERROR_MISSING_AUTH_INFO,\n AUTH_ERROR_MISSING_REFRESH_TOKEN,\n AUTH_ERROR_LOCK_ACQUIRE_ERROR,\n AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR,\n AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR,\n AUTH_ERROR_ID_TOKEN_INVALID,\n AUTH_ERROR_MISSING_OTP_PARAM,\n AUTH_ERROR_MISSING_PKCE_PARAM,\n AUTH_ERROR_MISSING_NONCE_PARAM,\n} from \"./constants\";\n\n/**\n *\n * @param backUrl\n * @param prompt\n * @param tokenIdHint\n * @param provider\n * @param loginHint\n * @param otpLoginHint\n * @param tenant\n * @returns {*}\n */\nexport const getAuthUrl = (\n backUrl = null,\n prompt = null,\n tokenIdHint = null,\n provider = null,\n loginHint = null,\n otpLoginHint = null,\n tenant = null) => {\n\n let oauth2ClientId = getOAuth2ClientId();\n let redirectUri = getAuthCallback();\n let baseUrl = getOAuth2IDPBaseUrl();\n let scopes = getOAuth2Scopes();\n let flow = getOAuth2Flow();\n\n if (backUrl != null)\n redirectUri += `?BackUrl=${encodeURI(backUrl)}`;\n\n let nonce = createNonce(NONCE_LEN);\n\n // store nonce to check it later\n putOnLocalStorage(NONCE, nonce);\n let url = URI(`${baseUrl}/oauth2/auth`);\n\n let query = {\n \"response_type\": encodeURI(flow),\n \"scope\": encodeURI(scopes),\n \"nonce\": nonce,\n \"response_mode\": 'fragment',\n \"client_id\": encodeURI(oauth2ClientId),\n \"redirect_uri\": encodeURI(redirectUri)\n };\n\n if (flow === RESPONSE_TYPE_CODE) {\n const pkce = createPKCECodes()\n putOnLocalStorage(PKCE, JSON.stringify(pkce));\n query['code_challenge'] = pkce.codeChallenge;\n query['code_challenge_method'] = 'S256';\n query['approval_prompt'] = 'force';\n }\n\n if (prompt) {\n query['prompt'] = prompt;\n }\n\n if (scopes && scopes.includes('offline_access')) {\n // then we need to force prompt=consent bc we are requesting an offline access\n // and we need to let the user know\n query['prompt'] = 'consent';\n }\n\n if (tokenIdHint) {\n query['id_token_hint'] = tokenIdHint;\n }\n\n if (provider) {\n query['provider'] = provider;\n }\n\n if (otpLoginHint) {\n query['otp_login_hint'] = otpLoginHint;\n }\n\n if (loginHint) {\n query['login_hint'] = encodeURI(loginHint);\n }\n\n if (tenant) {\n query['tenant'] = tenant;\n }\n\n url = url.query(query);\n //console.log(`getAuthUrl ${url.toString()}`);\n return url;\n}\n\n/**\n * @param idToken\n * @returns {*}\n */\nexport const getLogoutUrl = (idToken = null) => {\n let baseUrl = getOAuth2IDPBaseUrl();\n let oauth2ClientId = getOAuth2ClientId();\n let url = URI(`${baseUrl}/oauth2/end-session`);\n let state = createNonce(NONCE_LEN);\n let postLogOutUri = `${getOrigin()}/auth/logout`;\n // store nonce to check it later\n putOnLocalStorage('post_logout_state', state);\n /**\n * post_logout_redirect_uri should be listed on oauth2 client settings\n * on IDP\n * \"Security Settings\" Tab -> Logout Options -> Post Logout Uris\n */\n const queryParams = {\n \"post_logout_redirect_uri\": encodeURI(postLogOutUri),\n \"client_id\": encodeURI(oauth2ClientId),\n \"state\": state,\n }\n\n if (idToken)\n queryParams.id_token_hint = idToken;\n\n return url.query(queryParams);\n}\n\nconst createNonce = (len) => {\n let possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let nonce = '';\n for (let i = 0; i < len; i++) {\n nonce += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return nonce;\n}\n\n/**\n *\n * @param backUrl\n * @param provider\n * @param prompt\n * @param loginHint\n * @param otpLoginHint\n * @param tenant\n */\nexport const doLogin = (\n backUrl = null,\n provider = null,\n prompt = null,\n loginHint = null,\n otpLoginHint = null,\n tenant = null\n) => {\n let url = getAuthUrl(backUrl, prompt, null, provider, loginHint, otpLoginHint, tenant);\n let location = getCurrentLocation()\n location.replace(url.toString());\n}\n\n/**\n *\n * @param backUrl\n * @param loginHint\n * @param otpLoginHint\n */\nexport const doLoginBasicLogin = (backUrl = null, loginHint = null, otpLoginHint = null) => {\n doLogin(backUrl, null, null, loginHint, otpLoginHint);\n}\n\nconst createPKCECodes = () => {\n const codeVerifier = base64URLEncode(getRandomBytes(64))\n const codeChallenge = getSHA256(codeVerifier, 'Base64url')\n const createdAt = new Date()\n const codePair = {\n codeVerifier,\n codeChallenge,\n createdAt\n }\n return codePair\n}\n\nexport const emitAccessToken = async (code, backUrl = null) => {\n\n let baseUrl = getOAuth2IDPBaseUrl();\n let oauth2ClientId = getOAuth2ClientId();\n let redirectUri = getAuthCallback();\n let pkce = JSON.parse(getFromLocalStorage(PKCE, true));\n\n if (!pkce)\n throw Error(AUTH_ERROR_MISSING_PKCE_PARAM);\n\n if (backUrl != null)\n redirectUri += `?BackUrl=${encodeURI(backUrl)}`;\n\n const payload = {\n 'code': code,\n 'grant_type': 'authorization_code',\n 'code_verifier': pkce.codeVerifier,\n \"client_id\": encodeURI(oauth2ClientId),\n \"redirect_uri\": encodeURI(redirectUri)\n };\n\n try {\n //const response = await http.post(`${baseUrl}/oauth2/token`, payload);\n //const {body: {access_token, refresh_token, id_token, expires_in}} = response;\n const response = await fetch(`${baseUrl}/oauth2/token`, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }).catch(function (error) {\n console.log('Request failed:', error.message);\n });\n const json = await response.json();\n let {access_token, refresh_token, id_token, expires_in, error, error_description} = json;\n return {access_token, refresh_token, id_token, expires_in, error, error_description}\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const MAX_RETRIES = 5;\nexport const BACKOFF_BASE_MS = 1000;\nexport const REFRESH_TOKEN_FETCH_TIMEOUT_MS = 10000;\n\nexport const retryWithBackoff = async (fn, maxRetries = MAX_RETRIES, baseDelayMs = BACKOFF_BASE_MS) => {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n // only retry transient network/server errors — everything else fails fast\n const isRetryable = err.message && err.message.startsWith(AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR);\n if (!isRetryable || attempt === maxRetries - 1) {\n throw err;\n }\n const delay = baseDelayMs * Math.pow(2, attempt);\n console.log(`retryWithBackoff retry ${attempt + 1}/${maxRetries} in ${delay}ms`);\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n }\n};\n\nconst processRefreshToken = async (flow, refreshToken) => {\n\n if (flow === RESPONSE_TYPE_CODE && useOAuth2RefreshToken()) {\n if (!refreshToken) {\n clearAuthInfo();\n throw Error(AUTH_ERROR_MISSING_REFRESH_TOKEN);\n }\n\n let response = await retryWithBackoff(() => refreshAccessToken(refreshToken));\n let {access_token, expires_in, refresh_token, id_token} = response;\n if (typeof refresh_token === 'undefined') {\n refresh_token = null; // not using rotate policy\n }\n storeAuthInfo(access_token, expires_in, refresh_token, id_token);\n return access_token;\n }\n clearAuthInfo();\n throw Error(AUTH_ERROR_ACCESS_TOKEN_EXPIRED);\n}\n\n/**\n * @returns {Promise<*>}\n * @private\n */\nconst _getAccessToken = async () => {\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken`);\n let authInfo = getAuthInfo();\n\n if (!authInfo) {\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken AUTH_ERROR_MISSING_AUTH_INFO`);\n throw Error(AUTH_ERROR_MISSING_AUTH_INFO);\n }\n\n let {accessToken, expiresIn, accessTokenUpdatedAt, refreshToken} = authInfo;\n let flow = getOAuth2Flow();\n // check lifetime\n const now = moment().unix();\n let timeElapsedSecs = (now - accessTokenUpdatedAt);\n\n expiresIn = (expiresIn - ACCESS_TOKEN_SKEW_TIME);\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken now ${now} accessTokenUpdatedAt ${accessTokenUpdatedAt} expiresIn ${expiresIn} timeElapsedSecs ${timeElapsedSecs}`)\n if (timeElapsedSecs >= expiresIn || accessToken == null) {\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken access token expired, refreshing it ...`);\n accessToken = await processRefreshToken(flow, refreshToken);\n }\n return accessToken;\n}\n\n/**\n * @returns {Promise<*|undefined>}\n */\nexport const getAccessToken = async () => {\n if (typeof navigator !== 'undefined' && navigator.locks) {\n return await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY, async lock => {\n console.log(`openstack-uicore-foundation::Security::methods::getAccessToken web lock api`, lock);\n return await _getAccessToken();\n });\n } else {\n if (\n await retryPromise(\n () => Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY, GET_TOKEN_SILENTLY_LOCK_KEY_TIMEOUT),\n 10\n )\n ) {\n try {\n return await _getAccessToken();\n } finally {\n await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY);\n }\n } else {\n // error on locking\n throw Error(AUTH_ERROR_LOCK_ACQUIRE_ERROR);\n }\n }\n}\n\n/**\n * @private\n */\nconst _clearAccessToken = () => {\n console.log(`openstack-uicore-foundation::Security::methods::_clearAccessToken`);\n\n let authInfo = getAuthInfo();\n\n if (!authInfo) {\n console.log(`openstack-uicore-foundation::Security::methods::_clearAccessToken AUTH_ERROR_MISSING_AUTH_INFO`);\n throw Error(AUTH_ERROR_MISSING_AUTH_INFO);\n }\n\n let {accessToken, expiresIn, accessTokenUpdatedAt, refreshToken} = authInfo;\n\n storeAuthInfo(null, 0, refreshToken)\n}\n\nexport const clearAccessToken = async () => {\n // see https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n if (typeof navigator !== 'undefined' && navigator.locks) {\n await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY, async lock => {\n console.log(`openstack-uicore-foundation::Security::methods::clearAccessToken web lock api`, lock);\n _clearAccessToken();\n });\n } else {\n if (\n await retryPromise(\n () => Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY, GET_TOKEN_SILENTLY_LOCK_KEY_TIMEOUT),\n 10\n )\n ) {\n try {\n _clearAccessToken();\n } finally {\n await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY);\n }\n } else {\n // error on locking\n throw Error(AUTH_ERROR_LOCK_ACQUIRE_ERROR);\n }\n }\n}\n\n\nexport const refreshAccessToken = async (refresh_token) => {\n\n let baseUrl = getOAuth2IDPBaseUrl();\n let oauth2ClientId = getOAuth2ClientId();\n\n const payload = {\n 'grant_type': 'refresh_token',\n \"client_id\": encodeURI(oauth2ClientId),\n \"refresh_token\": refresh_token\n };\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), REFRESH_TOKEN_FETCH_TIMEOUT_MS);\n\n let response;\n try {\n response = await fetch(`${baseUrl}/oauth2/token`, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload),\n signal: controller.signal\n });\n } catch (networkError) {\n // fetch rejects on network failures (DNS, timeout, no connectivity, abort)\n console.log('refreshAccessToken network error:', networkError.message);\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${networkError.message}`);\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (!response.ok) {\n console.log(`refreshAccessToken server error: ${response.status} - ${response.statusText}`);\n if (response.status >= 500 || response.status === 408 || response.status === 429) {\n // transient error (server error, request timeout, rate limit) — should be retried\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${response.status} - ${response.statusText}`);\n }\n // token is genuinely revoked — this is a real auth error\n setSessionClearingState(true);\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${response.status} - ${response.statusText}`);\n }\n\n let json;\n try {\n json = await response.json();\n } catch (parseError) {\n // IDP returned non-JSON (HTML error page, empty body, etc.) — treat as transient\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: invalid JSON response from IDP`);\n }\n let {access_token, refresh_token: new_refresh_token, expires_in, id_token} = json;\n // Defensively ensure we never propagate an undefined access token.\n if (!access_token) {\n setSessionClearingState(true);\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: missing access_token in refresh response`);\n }\n return {access_token, refresh_token: new_refresh_token, expires_in, id_token}\n}\n\nexport const storeAuthInfo = (accessToken, expiresIn, refreshToken = null, idToken = null) => {\n\n let formerAuthInfo = getAuthInfo();\n\n let authInfo = {\n accessToken: accessToken,\n expiresIn: expiresIn,\n accessTokenUpdatedAt: Math.floor(Date.now() / 1000),\n };\n\n if (refreshToken == null && formerAuthInfo) {\n refreshToken = formerAuthInfo.refreshToken;\n }\n\n if (idToken == null && formerAuthInfo) {\n idToken = formerAuthInfo.idToken;\n }\n\n if (refreshToken) {\n authInfo['refreshToken'] = refreshToken;\n }\n\n if (idToken) {\n authInfo[ID_TOKEN] = idToken;\n Cookies.set(ID_TOKEN, idToken, {secure: true, sameSite: 'Lax'});\n } else {\n Cookies.remove(ID_TOKEN);\n }\n\n putOnLocalStorage(AUTH_INFO, JSON.stringify(authInfo));\n}\n\nexport const getAuthInfo = () => {\n try {\n let res = getFromLocalStorage(AUTH_INFO, false)\n if (!res) return null;\n return JSON.parse(res);\n } catch (err) {\n return null;\n }\n}\n\nexport const clearAuthInfo = () => {\n if (typeof window !== 'undefined') {\n removeFromLocalStorage(AUTH_INFO);\n Cookies.remove(ID_TOKEN);\n }\n};\n\nexport const getIdToken = () => {\n if (typeof window !== 'undefined') {\n const authInfo = getAuthInfo();\n if (authInfo) {\n return authInfo.idToken;\n }\n return null;\n }\n return null;\n};\n\nexport const getOAuth2ClientId = () => {\n if (typeof window !== 'undefined') {\n return window.OAUTH2_CLIENT_ID;\n }\n return null;\n};\n\nexport const getOAuth2Flow = () => {\n if (typeof window !== 'undefined') {\n return window.OAUTH2_FLOW || \"token id_token\";\n }\n return \"token id_token\";\n}\n\nexport const useOAuth2RefreshToken = () => {\n if (typeof window !== 'undefined') {\n return new Boolean(window.OAUTH2_USE_REFRESH_TOKEN || true);\n }\n return true;\n}\n\nexport const getOAuth2IDPBaseUrl = () => {\n if (typeof window !== 'undefined') {\n return window.IDP_BASE_URL;\n }\n return null;\n};\n\nexport const getOAuth2Scopes = () => {\n if (typeof window !== 'undefined') {\n return window.SCOPES;\n }\n return null;\n};\n\nexport const initLogOut = () => {\n let location = getCurrentLocation();\n location.replace(getLogoutUrl(getIdToken()).toString());\n}\n\nexport const validateIdToken = (idToken, issuer, audience) => {\n\n let verifier = new IdTokenVerifier({\n issuer: issuer,\n audience: audience\n });\n\n let storedNonce = getFromLocalStorage(NONCE, true);\n if (!storedNonce)\n throw Error(AUTH_ERROR_MISSING_NONCE_PARAM);\n\n let jwt = verifier.decode(idToken);\n let alg = jwt.header.alg;\n let kid = jwt.header.kid;\n let aud = jwt.payload.aud;\n let iss = jwt.payload.iss;\n let exp = jwt.payload.exp;\n let nbf = jwt.payload.nbf;\n let tnonce = jwt.payload.nonce || null;\n\n return tnonce == storedNonce && aud == audience && iss == issuer;\n}\n\nexport const passwordlessStart = (params) => {\n\n let oauth2ClientId = getOAuth2ClientId();\n let scopes = getOAuth2Scopes();\n let nonce = createNonce(NONCE_LEN);\n // store nonce to check it later\n putOnLocalStorage(NONCE, nonce);\n let baseUrl = getOAuth2IDPBaseUrl();\n let url = URI(`${baseUrl}/oauth2/auth`);\n\n let payload = {\n \"response_type\": \"otp\",\n \"scope\": encodeURI(scopes),\n \"nonce\": nonce,\n \"client_id\": encodeURI(oauth2ClientId),\n \"connection\": params.connection || \"email\",\n \"send\": params.send || \"code\",\n };\n\n if (params.hasOwnProperty('email')) {\n payload[\"email\"] = encodeURIComponent(params.email);\n }\n\n if (params.hasOwnProperty('phone_number')) {\n payload[\"phone_number\"] = encodeURIComponent(params.phone_number);\n }\n\n if (params.hasOwnProperty('redirect_uri')) {\n payload[\"redirect_uri\"] = encodeURIComponent(params.redirect_uri);\n }\n\n let req = http.post(url.toString());\n\n return req.send(payload).then((res) => {\n let json = res.body;\n return Promise.resolve({response: json});\n }).catch((err) => {\n return Promise.reject(err);\n });\n\n}\n\nexport const passwordlessLogin = (params) => (dispatch) => {\n\n let oauth2ClientId = getOAuth2ClientId();\n let scopes = getOAuth2Scopes();\n let baseUrl = getOAuth2IDPBaseUrl();\n let url = URI(`${baseUrl}/oauth2/token`);\n\n if (!params.hasOwnProperty(\"otp\")) {\n throw Error(AUTH_ERROR_MISSING_OTP_PARAM);\n }\n\n let payload = {\n \"grant_type\": \"passwordless\",\n \"connection\": params.connection || \"email\",\n \"scope\": encodeURI(scopes),\n \"client_id\": encodeURI(oauth2ClientId),\n \"otp\": params.otp\n };\n\n if (params.hasOwnProperty('email')) {\n payload[\"email\"] = encodeURIComponent(params.email);\n }\n\n if (params.hasOwnProperty('phone_number')) {\n payload[\"phone_number\"] = encodeURIComponent(params.phone_number);\n }\n\n let req = http.post(url.toString());\n\n return req.send(payload).then((res) => {\n try {\n // now we got token\n let json = res.body;\n let {access_token, expires_in, refresh_token, id_token} = json;\n\n if (typeof refresh_token === 'undefined') {\n refresh_token = null; // not using rotate policy\n }\n\n if (typeof id_token === 'undefined') {\n id_token = null; // not using rotate policy\n }\n\n // verify id token\n\n if (id_token) {\n if (!validateIdToken(id_token, baseUrl, oauth2ClientId)) {\n throw Error(AUTH_ERROR_ID_TOKEN_INVALID);\n }\n }\n\n storeAuthInfo(access_token, expires_in, refresh_token, id_token);\n\n if (dispatch) {\n dispatch({\n type: SET_LOGGED_USER,\n payload: {sessionState: null}\n });\n }\n\n return Promise.resolve({response: json});\n } catch (e) {\n console.log(e);\n return Promise.reject(e);\n }\n }).catch((err) => {\n return Promise.reject(err);\n });\n}\n\nexport const isIdTokenAlive = (nowEpoch = null) => () => {\n\n if (!nowEpoch) {\n nowEpoch = Math.floor(Date.now() / 1000);\n }\n\n const idToken = getIdToken();\n if (!idToken)\n throw Error('Id Token not set.');\n\n const issuer = getOAuth2IDPBaseUrl();\n const audience = getOAuth2ClientId();\n\n let verifier = new IdTokenVerifier({\n issuer: issuer,\n audience: audience\n });\n\n const jwt = verifier.decode(idToken);\n const exp = jwt.payload.exp;\n\n // check life time\n return exp - (nowEpoch + ACCESS_TOKEN_SKEW_TIME) > 0;\n}\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport './simple-link-list.less';\nimport AsyncSelect from 'react-select/lib/Async';\nimport Table from \"../table/Table\";\nimport T from 'i18n-react/dist/i18n-react';\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\n\n\nclass SimpleLinkList extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: ''\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getOptions = this.getOptions.bind(this);\n this.handleLink = this.handleLink.bind(this);\n this.filterOption = this.filterOption.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getNewOptionData = this.getNewOptionData.bind(this);\n this.isValidNewOption = this.isValidNewOption.bind(this);\n }\n\n getOptions(input, callback) {\n let {options} = this.props;\n let defaultOptions = options.hasOwnProperty('defaultOptions') ? options.defaultOptions : undefined;\n\n if (!input && !defaultOptions) {\n return Promise.resolve({ options: [] });\n }\n\n this.props.options.actions.search(input, callback);\n }\n\n handleChange(value) {\n this.setState({value});\n }\n\n handleLink(ev) {\n ev.preventDefault();\n this.props.options.actions.add.onClick(this.state.value);\n this.setState({value: ''});\n }\n\n getNewOptionData(inputValue, optionLabel) {\n return {tag: optionLabel, id:inputValue};\n }\n\n isValidNewOption(inputValue, selectValue, selectOptions) {\n let {options} = this.props;\n let labelKey = options.hasOwnProperty('labelKey') ? options.labelKey : 'label';\n let optionFound = selectOptions.find(op => op[labelKey] == inputValue);\n return (!inputValue || optionFound) ? false : true;\n }\n\n handleNew(value) {\n this.props.options.onCreateTag(value, this.handleChange);\n }\n\n filterOption(candidate, inputValue) {\n let {options, values} = this.props;\n let allowDuplicates = this.props.hasOwnProperty('allowDuplicates');\n let labelKey = options.hasOwnProperty('labelKey') ? options.labelKey : 'label';\n\n if (allowDuplicates) return true;\n\n let optionFound = values.find(val => val[labelKey] === candidate.label);\n\n return !optionFound;\n }\n\n\n render() {\n\n let {options, values, columns} = this.props;\n let disabledAdd = (!this.state.value);\n\n let title = options.hasOwnProperty('title') ? options.title : 'Table';\n let valueKey = options.hasOwnProperty('valueKey') ? options.valueKey : 'value';\n let labelKey = options.hasOwnProperty('labelKey') ? options.labelKey : 'label';\n let allowCreate = options.hasOwnProperty('onCreateTag');\n let defaultOptions = options.hasOwnProperty('defaultOptions') ? options.defaultOptions : undefined;\n\n let tableOptions = {\n className: 'dataTable',\n actions: {\n delete: options.actions.delete\n }\n };\n\n if (options.hasOwnProperty('className')) {\n tableOptions.className = options.className;\n }\n\n if (options.actions.hasOwnProperty('edit')) {\n tableOptions.actions.edit = options.actions.edit;\n }\n\n if (options.actions.hasOwnProperty('custom')) {\n tableOptions.actions.custom = options.actions.custom;\n }\n\n if (options.hasOwnProperty('sortCol')) {\n values = values.sort(\n (a, b) => {\n const itemA = isNaN(a[options.sortCol]) ? a[options.sortCol].toLowerCase() : a[options.sortCol];\n const itemB = isNaN(b[options.sortCol]) ? b[options.sortCol].toLowerCase() : b[options.sortCol];\n return (itemA > itemB ? 1 : (itemA < itemB ? -1 : 0))\n }\n );\n }\n\n\n let AsyncComponent = null;\n\n if (allowCreate) {\n AsyncComponent =\n <AsyncCreatableSelect\n className=\"link-select btn-group text-left\"\n value={this.state.value}\n key={JSON.stringify(values)}\n getOptionValue={option => option[valueKey]}\n getOptionLabel={option => option[labelKey]}\n onChange={this.handleChange}\n loadOptions={this.getOptions}\n filterOption={this.filterOption}\n onCreateOption={this.handleNew}\n getNewOptionData={this.getNewOptionData}\n isValidNewOption={this.isValidNewOption}\n />;\n } else {\n AsyncComponent =\n <AsyncSelect\n className=\"link-select btn-group text-left\"\n value={this.state.value}\n key={JSON.stringify(values)}\n getOptionValue={option => option[valueKey]}\n getOptionLabel={option => option[labelKey]}\n onChange={this.handleChange}\n loadOptions={this.getOptions}\n filterOption={this.filterOption}\n defaultOptions={defaultOptions}\n />;\n }\n\n return (\n <div className=\"row simple-link-list\">\n <div className=\"col-md-4 simple-link-list-title\">\n <h4>{title}</h4>\n </div>\n <div className=\"col-md simple-link-list-buttons\">\n {AsyncComponent}\n <button type=\"button\" className=\"btn btn-default add-button\" onClick={this.handleLink} disabled={disabledAdd}>\n {T.translate(\"general.add\")}\n </button>\n </div>\n <div className=\"col-md-12\">\n <Table\n className=\"dataTable\"\n options={tableOptions}\n data={values}\n columns={columns}\n />\n </div>\n </div>\n );\n\n }\n}\n\nSimpleLinkList.propTypes = {\n values: PropTypes.array.isRequired,\n options: PropTypes.shape({\n title: PropTypes.string,\n sortCol: PropTypes.string,\n valueKey: PropTypes.string.isRequired,\n labelKey: PropTypes.string.isRequired,\n className: PropTypes.string,\n actions: PropTypes.shape({\n search: PropTypes.func.isRequired,\n delete: PropTypes.shape({onClick:PropTypes.func.isRequired}),\n add: PropTypes.shape({onClick:PropTypes.func.isRequired}),\n edit: PropTypes.shape({onClick:PropTypes.func.isRequired}),\n custom: PropTypes.array,\n }).isRequired\n }).isRequired,\n columns: PropTypes.array.isRequired\n}\n\nexport default SimpleLinkList;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport './summit-dropdown.less';\nimport Select from 'react-select';\nimport T from 'i18n-react/dist/i18n-react';\n\nexport default class SummitDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n summitValue: null,\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleChange(summit) {\n this.setState({summitValue: summit});\n }\n\n handleClick(ev) {\n ev.preventDefault();\n this.props.onClick(this.state.summitValue.value);\n }\n\n render() {\n\n let {summits, actionLabel, actionClass} = this.props;\n let summitOptions = summits\n .sort(\n (a, b) => (a.start_date < b.start_date ? 1 : (a.start_date > b.start_date ? -1 : 0))\n ).map(s => ({label: s.name, value: s.id}));\n\n let bigClass = this.props.hasOwnProperty('big') ? 'big' : '';\n const isDisabled = !this.state.summitValue;\n\n return (\n <div className={\"summit-dropdown btn-group \" + bigClass}>\n <Select\n id=\"summit-select\"\n value={this.state.summitValue}\n onChange={this.handleChange}\n options={summitOptions}\n placeholder={T.translate(\"general.select_summit\")}\n className=\"btn-group summit-select text-left\"\n isClearable={false}\n />\n <button type=\"button\" className={`btn btn-default ${actionClass}`} disabled={isDisabled} onClick={this.handleClick}>\n {actionLabel}\n </button>\n </div>\n );\n\n }\n}\n","import React from 'react';\n\nclass EditableTableHeading extends React.Component {\n\n constructor (props) {\n super(props);\n }\n\n render () {\n return (\n <th width={this.props.width}>\n {this.props.children}\n </th>\n );\n }\n\n}\n\nexport default EditableTableHeading;","import React from 'react';\n\nconst EditableTableCell = (props) => {\n\n if (props.is_edit) {\n return (\n <td>\n {!props.shouldUseTextArea &&\n <input type=\"text\" className=\"form-control\" defaultValue={props.children} name={props.name} id={props.id} onChange={props.handleChange}/>\n }\n {props.shouldUseTextArea &&\n <textarea className=\"form-control\" defaultValue={props.children} name={props.name} id={props.id} onChange={props.handleChange}/>\n }\n </td>\n );\n } else {\n return (\n <td>{props.children}</td>\n );\n }\n\n};\n\nexport default EditableTableCell;","import React from 'react';\n\nexport default class EditableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n is_editing: false\n }\n\n }\n\n onDelete(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.props.actions.delete(id);\n }\n\n onSave(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.setState({\n is_editing: false\n });\n\n this.props.actions.save(id);\n }\n\n onEdit(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.setState({\n is_editing: true\n });\n\n this.props.actions.edit(id);\n }\n\n onCancel(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.setState({\n is_editing: false\n });\n\n this.props.actions.cancel(id);\n }\n\n render() {\n let {actions, id} = this.props;\n\n if (this.state.is_editing) {\n return (\n <td className=\"actions\">\n <a href=\"\" onClick={this.onSave.bind(this,id)} data-tip=\"save\" >\n <i className=\"fa fa-floppy-o\"></i>\n </a>\n <a href=\"\" onClick={this.onCancel.bind(this,id)} data-tip=\"cancel\" >\n <i className=\"fa fa-times\"></i>\n </a>\n </td>\n );\n } else {\n return (\n <td className=\"actions\">\n {'edit' in actions &&\n <a href=\"\" onClick={this.onEdit.bind(this,id)} data-tip=\"edit\" >\n <i className=\"fa fa-pencil-square-o\"></i>\n </a>\n }\n {'delete' in actions &&\n <a href=\"\" onClick={this.onDelete.bind(this,id)} data-tip=\"delete\" >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n </td>\n );\n }\n }\n};\n","import React from 'react';\n\nexport default class EditableTableRow extends React.Component {\n\n render() {\n const { children, even, id } = this.props;\n\n return (\n <tr id={id} role=\"row\" className={even ? 'even' : 'odd'}>\n {children}\n </tr>\n );\n }\n}\n","import React from 'react';\nimport EditableTableHeading from './EditableTableHeading';\nimport EditableTableCell from './EditableTableCell';\nimport EditableActionsTableCell from './EditableActionsTableCell';\nimport EditableTableRow from './EditableTableRow';\nimport Swal from \"sweetalert2\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { Tooltip } from \"react-tooltip\";\nimport { shallowEqual } from '../../utils/methods'\n\nimport './editable-table.less';\n\n\nconst defaults = {\n colWidth: ''\n};\n\nconst createRow = (row, columns, actions, shouldUseTextArea) => {\n\n var action_buttons = '';\n var cells = columns.map((col,i) => {\n return (\n <EditableTableCell shouldUseTextArea={shouldUseTextArea} key={row['id'] + '_field' + i} name={col.columnKey} id={row.id} is_edit={row.is_edit} handleChange={actions.handleChange}>\n {row[col.columnKey]}\n </EditableTableCell>\n );\n });\n\n if (actions) {\n cells.push(<EditableActionsTableCell key={'actions_' + row['id']} id={row['id']} actions={actions}/>);\n }\n\n return cells;\n};\n\nconst createNewRow = (columns, new_row, addNew, handleChange, shouldUseTextArea) => {\n\n var cells = columns.map((col,i) => {\n let cell_value = (typeof new_row[col.columnKey] !== 'undefined') ? new_row[col.columnKey] : '';\n return (\n <td key={'new_row_' + i}>\n {shouldUseTextArea &&\n <textarea className=\"form-control\" id={'new_' + col.columnKey} name={col.columnKey} onChange={handleChange}\n value={cell_value}/>\n }\n {!shouldUseTextArea &&\n <input className=\"form-control\" id={'new_' + col.columnKey} name={col.columnKey} onChange={handleChange}\n value={cell_value}/>\n }\n </td>\n );\n });\n\n cells.push(\n <td key='add_new'>\n <button className=\"btn btn-default\" onClick={addNew}> Add </button>\n </td>\n );\n\n return cells;\n};\n\n\nexport default class EditableTable extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n rows: props.data,\n new_row: {}\n };\n\n // we store the delete and save functions in props cause we need to extend them\n this.onSave = props.options.actions?.save?.onClick;\n\n this.actions = props.options.actions || {};\n this.actions.edit = this.editRow.bind(this);\n this.actions.save = this.saveRow.bind(this);\n this.actions.delete = this.deleteClick.bind(this);\n this.actions.handleChange = this.onChangeCell.bind(this);\n this.actions.cancel = this.editRowCancel.bind(this);\n\n this.saveNewRow = this.saveNewRow.bind(this);\n this.handleNewChange = this.onChangeNewCell.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if(!shallowEqual(this.props.data, prevProps.data)) {\n this.setState({rows: this.props.data})\n }\n }\n\n saveRow(id, ev) {\n const { rows } = this.state;\n let row = rows.find(r => r.id == id);\n row.is_edit = false;\n\n this.editing_row = null;\n\n this.setState({\n rows: rows\n });\n\n this.onSave(row);\n }\n\n deleteClick(id) {\n let onDelete = this.props.options.actions?.delete?.onClick;\n let noAlert = this.props.options.hasOwnProperty('noAlert');\n\n if (noAlert) {\n onDelete(id);\n } else {\n Swal.fire({\n title: T.translate(\"general.are_you_sure\"),\n text: T.translate(\"general.remove_warning\"),\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n }).then(function(result){\n if (result.value) {\n onDelete(id);\n }\n });\n }\n }\n\n editRow(id, ev) {\n const { rows } = this.state;\n let row = rows.find(r => r.id == id);\n\n //save editing row for cancel\n this.editing_row = {...row};\n\n row.is_edit = true;\n\n this.setState({\n rows: rows\n });\n }\n\n editRowCancel(id, ev) {\n const { rows } = this.state;\n rows.forEach(r => {\n r.is_edit = false;\n });\n\n let rowIdx = rows.findIndex(r => r.id == id);\n\n rows[rowIdx] = this.editing_row;\n\n this.setState({\n rows: rows\n });\n }\n\n onChangeCell(ev) {\n const { rows } = this.state;\n let field = ev.target;\n let row = rows.find(r => r.id == field.id);\n\n row[field.name] = field.value;\n\n this.setState({\n rows: rows\n });\n }\n\n onChangeNewCell(ev) {\n const {new_row} = this.state;\n let field = ev.target;\n\n new_row[field.name] = field.value;\n\n this.setState({\n new_row: new_row\n });\n }\n\n saveNewRow(ev) {\n const {new_row} = this.state;\n ev.preventDefault();\n\n this.onSave(new_row);\n\n this.setState({\n new_row: {}\n });\n }\n\n render() {\n let {options, columns } = this.props;\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n let textArea = this.props.hasOwnProperty(\"textArea\");\n return (\n <div>\n <table className={\"table table-striped table-bordered editableTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col,i) => {\n let colWidth = (col.width) ? col.width : defaults.colWidth;\n return (\n <EditableTableHeading width={colWidth} key={'heading_' + i} >\n {col.value}\n </EditableTableHeading>\n );\n })}\n {this.actions &&\n <EditableTableHeading key='actions_heading' >\n Actions\n </EditableTableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && this.state.rows.map((row,i) => {\n if(Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr />\n }\n return (\n <EditableTableRow even={i%2 === 0} key={'row_' + row.id} id={row.id} >\n {createRow(row, columns, this.actions, textArea)}\n </EditableTableRow>\n\n );\n })}\n <EditableTableRow even={0} id='new_row' key='new_row'>\n {createNewRow(columns, this.state.new_row, this.saveNewRow, this.handleNewChange, textArea)}\n </EditableTableRow>\n </tbody>\n </table>\n <Tooltip delayShow={10} />\n </div>\n );\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass SelectableTableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t\tthis.handleSort = this.handleSort.bind(this);\n\t}\n\n\tgetSortClass() {\n\n\t\tif (!this.props.sortable) return null;\n\n\t\tswitch(this.props.sortDir) {\n\t\t\tcase 1:\n\t\t\t\treturn 'sorting_asc';\n\t\t\tcase -1:\n\t\t\t\treturn 'sorting_desc';\n\t\t\tdefault:\n\t\t\t\treturn this.props.sortable ? 'sorting' : null\n\t\t}\n\t}\n\n\thandleSort(e) {\n\t\te.preventDefault();\n\t\tif(!this.props.hasOwnProperty('onSort') || !this.props.sortable) return;\n\n\t\tthis.props.onSort(\n\t\t\tthis.props.columnIndex,\n\t\t\tthis.props.columnKey,\n\t\t\tthis.props.sortDir ? this.props.sortDir*-1 : 1,\n\t\t\tthis.props.sortFunc\n\t\t);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th onClick={this.handleSort}\n\t\t\t\tclassName={this.getSortClass()}\n\t\t\t\twidth={this.props.width}\n\t\t\t\t>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nSelectableTableHeading.propTypes = {\n\tonSort: PropTypes.func,\n\tsortDir: PropTypes.number,\n\tcolumnIndex: PropTypes.number,\n\tcolumnKey: PropTypes.any,\n\tsortable: PropTypes.bool,\n\tsortFunc: PropTypes.func\n};\n\nexport default SelectableTableHeading;","import React from 'react';\nimport RawHTML from '../raw-html';\n\nconst SelectableTableCell = (props) => {\n let {children} = props;\n\tlet value = '';\n\tif(children) {\n\t if (React.isValidElement(children)) {\n\t value = children;\n } else {\n\t value = <RawHTML>{children.toString()}</RawHTML>\n }\n }\n\n\treturn (\n\t\t<td {...props}>\n {value}\n\t\t</td>\n\t);\n};\n\nexport default SelectableTableCell;\n","import React from 'react';\n\nexport default class SelectableTableRow extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleEdit = this.handleEdit.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleEdit(id, ev) {\n // by pass\n if(ev.target.type === \"checkbox\")\n return;\n ev.stopPropagation();\n ev.preventDefault();\n this.props.actions.edit.onClick(id);\n }\n\n handleSelect(id, ev) {\n this.props.actions.edit.onSelected(id, ev.target.checked);\n }\n\n render() {\n\n let {even, actions, id, children, checked} = this.props;\n let canEdit = (actions?.edit && this.shouldDisplayAction(actions.edit));\n let rowClass = even ? 'even' : 'odd';\n\n if (canEdit) {\n return (\n <tr role=\"row\" className={rowClass + \" can-edit\"} onClick={this.handleEdit.bind(this, id)}>\n <td key={id + '_select'}>\n <input\n type=\"checkbox\"\n id={id + '_select'}\n name={id + '_select'}\n checked={checked}\n onChange={this.handleSelect.bind(this, id)}\n />\n </td>\n {children}\n </tr>\n );\n }\n\n return (\n <tr role=\"row\" className={rowClass}>\n <td key={id + '_select'} >\n <input\n type=\"checkbox\"\n id={id + '_select'}\n name={id + '_select'}\n checked={checked}\n onChange={this.handleSelect.bind(this, id)}\n />\n </td>\n {children}\n </tr>\n );\n\n }\n};\n\n","import React from 'react';\n\nexport default class SelectableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n this.shouldDisplayAction = this.shouldDisplayAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {actions.hasOwnProperty('custom') && actions.custom.map(a =>\n this.shouldDisplayAction(a) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React from 'react';\nimport SelectableTableHeading from './SelectableTableHeading';\nimport SelectableTableCell from './SelectableTableCell';\nimport SelectableTableRow from './SelectableTableRow';\nimport SelectableActionsTableCell from './SelectableActionsTableCell';\nimport { Tooltip } from 'react-tooltip'\nimport './selectable-table.less';\n\nconst defaults = {\n sortFunc: (a, b) => (a < b ? -1 : a > b ? 1 : 0),\n sortable: false,\n sortCol: 0,\n sortDir: 1,\n colWidth: \"\",\n};\n\nconst createRow = (row, columns, actions) => {\n var action_buttons = \"\";\n var cells = columns.map((col, i) => {\n if (col.hasOwnProperty(\"render\"))\n return (\n <SelectableTableCell\n key={row[\"id\"] + \"_field\" + i}\n name={col.columnKey}\n id={row.id}\n >\n {col.render(row, row[col.columnKey])}\n </SelectableTableCell>\n );\n\n return (\n <SelectableTableCell\n key={row[\"id\"] + \"_field\" + i}\n name={col.columnKey}\n id={row.id}\n >\n {row[col.columnKey]}\n </SelectableTableCell>\n );\n });\n\n if (actions) {\n cells.push(\n <SelectableActionsTableCell\n key=\"actions_cell\"\n id={row[\"id\"]}\n actions={actions}\n />\n );\n }\n\n return cells;\n};\n\nconst getSortDir = (columnKey, columnIndex, sortCol, sortDir) => {\n if (columnKey && columnKey === sortCol) {\n return sortDir;\n }\n if (sortCol === columnIndex) {\n return sortDir;\n }\n return null;\n};\n\nclass SelectableTable extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n let { options, columns } = this.props;\n let tableClass = options.hasOwnProperty(\"className\")\n ? options.className\n : \"\";\n tableClass += options.actions?.edit ? \" table-hover\" : \"\";\n\n return (\n <div>\n <table\n className={\n \"table table-striped selectableTable \" + tableClass\n }\n >\n <thead>\n <tr>\n <th>\n {!options.disableSelectAll && (\n <input\n type=\"checkbox\"\n id=\"select_all\"\n name=\"select_all\"\n onChange={\n options.actions?.edit?.onSelectedAll\n }\n checked={options.selectedAll}\n />\n )}\n </th>\n {columns.map((col, i) => {\n let sortCol =\n typeof options.sortCol != \"undefined\"\n ? options.sortCol\n : defaults.sortCol;\n let sortDir =\n typeof options.sortDir != \"undefined\"\n ? options.sortDir\n : defaults.sortDir;\n let sortFunc =\n typeof options.sortFunc != \"undefined\"\n ? options.sortFunc\n : defaults.sortFunc;\n let sortable =\n typeof col.sortable != \"undefined\"\n ? col.sortable\n : defaults.sortable;\n let colWidth =\n typeof col.width != \"undefined\"\n ? col.width\n : defaults.colWidth;\n\n return (\n <SelectableTableHeading\n onSort={this.props.onSort}\n sortDir={getSortDir(\n col.columnKey,\n i,\n sortCol,\n sortDir\n )}\n sortable={sortable}\n sortFunc={sortFunc}\n columnIndex={i}\n columnKey={col.columnKey}\n width={colWidth}\n key={\"heading_\" + i}\n >\n {col.value}\n </SelectableTableHeading>\n );\n })}\n {options.actions && (\n <SelectableTableHeading key=\"actions_heading\">\n {options.actionsHeader || \" \"}\n </SelectableTableHeading>\n )}\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 &&\n this.props.data.map((row, i) => {\n if (\n Array.isArray(row) &&\n row.length !== columns.length\n ) {\n console.warn(\n `Data at row ${i} is ${row.length}. It should be ${columns.length}.`\n );\n return <tr key={\"row_\" + i} />;\n }\n\n return (\n <SelectableTableRow\n checked={row.checked}\n even={i % 2 === 0}\n key={\"row_\" + row[\"id\"]}\n id={row[\"id\"]}\n actions={options.actions}\n >\n {createRow(\n row,\n columns,\n options.actions\n )}\n </SelectableTableRow>\n );\n })}\n </tbody>\n </table>\n <Tooltip delayShow={10} />\n </div>\n );\n }\n}\n\nexport default SelectableTable;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutability-helper\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dnd-html5-backend\");","import React from 'react';\n\nclass SortableTableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th width={this.props.width}>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nexport default SortableTableHeading;","import React from 'react';\n\nexport default class SortableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('edit') && this.shouldDisplayAction(actions.edit) &&\n <a href=\"\" data-tip=\"edit\" onClick={this.handleAction.bind(this, actions.edit.onClick, id)} >\n <i className=\"fa fa-pencil-square-o\"></i>\n </a>\n }\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {'custom' in actions && actions.custom.map(a =>\n this.shouldDisplayAction(a, id) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React, { useRef } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport PropTypes from 'prop-types';\n\nconst SortableTableRow = ({ text, even, id, index, moveCard, dropItem, children, findRow }) => {\n const originalIndex = findRow(id).index;\n\n const style = {\n border: '1px dashed gray',\n padding: '0.5rem 1rem',\n marginBottom: '.5rem',\n backgroundColor: 'white',\n cursor: 'move',\n };\n\n const refRow = useRef(null);\n const [{ handlerId }, drop] = useDrop({\n accept: 'row',\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item, monitor) {\n if (!refRow.current) {\n return;\n }\n const dragIndex = item.index;\n const hoverIndex = index;\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n // Determine rectangle on screen\n const hoverBoundingRect = refRow.current?.getBoundingClientRect();\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n // Get pixels to the top\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n // Time to actually perform the action\n moveCard(dragIndex, hoverIndex);\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n item.index = hoverIndex;\n },\n });\n const [{ isDragging }, drag] = useDrag({\n type: 'row',\n item: () => {\n return { id, index };\n },\n end:(_item, monitor) => {\n const { id: droppedId, index } = _item;\n const didDrop = monitor.didDrop()\n if(didDrop)\n return dropItem(droppedId, index + 1)\n // rollback\n return moveCard(index, originalIndex);\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const opacity = isDragging ? 0 : 1;\n\n drag(drop(refRow));\n\n return (\n <tr id={id} ref={refRow} role=\"row\" className={even ? 'even' : 'odd'} style={{ ...style, opacity }}>\n {children}\n </tr>\n );\n}\n\nSortableTableRow.propTypes = {\n index: PropTypes.number.isRequired,\n id: PropTypes.any.isRequired,\n moveCard: PropTypes.func.isRequired,\n};\n\nexport default SortableTableRow;\n\n","import React, {useEffect, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport update from 'immutability-helper';\nimport {DndProvider} from 'react-dnd'\nimport {HTML5Backend} from 'react-dnd-html5-backend'\nimport SortableTableHeading from './SortableTableHeading';\nimport SortableActionsTableCell from './SortableActionsTableCell';\nimport SortableTableRow from './SortableTableRow';\nimport T from 'i18n-react/dist/i18n-react';\nimport TableCell from \"../table/TableCell\";\nimport _ from 'lodash';\n\nimport './table-sortable.less';\n\nconst defaults = {\n colWidth: ''\n}\n\nconst createRow = (row, columns, actions) => {\n\n let cells = columns.map((col, i) => {\n if (col.hasOwnProperty(\"render\"))\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {col.render(row, row[col.columnKey])}\n </TableCell>\n );\n\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {row[col.columnKey]}\n </TableCell>\n );\n });\n\n if (actions) {\n cells.push(<SortableActionsTableCell key='actions' id={row['id']} actions={actions}/>);\n }\n\n return cells;\n};\n\n\nconst renderNewRow = (columns, new_row, addNew, handleChange) => {\n\n let cells = columns.map((col, i) => {\n let cell_value = (typeof new_row[col.columnKey] !== 'undefined') ? new_row[col.columnKey] : '';\n\n if (col?.input === \"checkbox\")\n return (\n <td key={'new_row_' + i} className=\"checkbox-cell\">\n <input type=\"checkbox\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n onChange={handleChange}\n checked={cell_value}\n title={col?.value}\n />\n </td>);\n else\n return (\n <td key={'new_row_' + i}>\n <input\n className=\"form-control\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n placeholder={col?.value}\n onChange={handleChange}\n value={cell_value}/>\n </td>);\n\n });\n\n cells.push(\n <td key='add_new'>\n <button className=\"btn btn-default\" onClick={addNew}> Add</button>\n </td>\n );\n\n return cells;\n};\n\nconst SortableTable = ({data, options, columns, dropCallback, orderField, idField}) => {\n\n const [rows, setRows] = useState(data);\n const [newRow, setNewRow] = useState({});\n\n useEffect(() => {\n setRows(data);\n }, [data])\n\n\n const renderRow = (row, columns, options, index) => {\n return (\n <SortableTableRow even={index % 2 === 0} key={row.id} index={index} id={row.id}\n moveCard={moveRow}\n findRow={findRow}\n dropItem={onDropItem}>\n {createRow(row, columns, options.actions)}\n </SortableTableRow>\n )\n };\n\n const saveNewRow = (ev) => {\n ev.preventDefault();\n options?.actions?.save?.onClick(newRow);\n setNewRow({});\n }\n\n const sortRows = (rows2Sort) => {\n rows2Sort.sort(function (a, b) {\n const x = a[orderField];\n const y = b[orderField];\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n });\n return rows2Sort;\n }\n\n const findRow = useCallback(\n (id) => {\n const row = rows.filter((r) => r[idField] === id)[0]\n return {\n row,\n index: rows.indexOf(row),\n }\n },\n [rows],\n )\n\n const moveRow = useCallback(\n (dragIndex, hoverIndex) => {\n\n setRows((prevRows) => {\n\n prevRows = update(prevRows, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, prevRows[dragIndex]],\n ],\n });\n\n for (let i in prevRows) {\n prevRows[i][orderField] = parseInt(i) + 1;\n }\n\n return sortRows(prevRows)\n });\n },\n [rows, setRows],\n )\n\n const onDropItem = (id, newOrder) => {\n const sortedRows = sortRows(rows);\n setRows(sortedRows);\n dropCallback(sortedRows, id, newOrder)\n }\n\n const handleNewChange = (ev) => {\n let field = ev.target;\n let newRowTmp = {...newRow};\n let {name, value} = field;\n\n if (field.type === 'checkbox') {\n value = field.checked;\n }\n newRowTmp[name] = value;\n setNewRow(newRowTmp);\n }\n\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n let shouldRenderNewRow = options?.actions?.save?.onClick && options?.actions?.save?.onClick !== null;\n\n return (\n <div className=\"sortable-table-box\">\n <i>{T.translate(\"general.drag_and_drop\")}</i>\n <table className={\"table table-striped table-hover sortableTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col, i) => {\n let colWidth = (col.width) ? col.width : defaults.colWidth;\n return (\n <SortableTableHeading width={colWidth} key={i}>\n {col.value}\n </SortableTableHeading>\n );\n })}\n {options.actions &&\n <SortableTableHeading key='actions'>\n Actions\n </SortableTableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && rows.map((row, i) => {\n if (Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr/>\n }\n return (\n <DndProvider backend={HTML5Backend} key={i}>\n {renderRow(row, columns, options, i)}\n </DndProvider>\n );\n })}\n </tbody>\n {shouldRenderNewRow &&\n <tfoot>\n <tr>\n {renderNewRow(columns, newRow, saveNewRow, handleNewChange)}\n </tr>\n </tfoot>\n }\n </table>\n </div>\n );\n};\n\nSortableTable.defaultProps = {\n idField: 'id',\n}\n\nSortableTable.propTypes = {\n data: PropTypes.array.isRequired,\n options: PropTypes.shape({\n className: PropTypes.string,\n actions: PropTypes.object\n }).isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({\n columnKey: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n input: PropTypes.string,\n render: PropTypes.func,\n })).isRequired,\n dropCallback: PropTypes.func.isRequired,\n orderField: PropTypes.string.isRequired,\n idField: PropTypes.string,\n}\n\nexport default SortableTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass TableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t\tthis.handleSort = this.handleSort.bind(this);\n\t}\n\n\tgetSortClass() {\n\n\t\tif (!this.props.sortable) return null;\n\n\t\tswitch(this.props.sortDir) {\n\t\t\tcase 1:\n\t\t\t\treturn 'sorting_asc';\n\t\t\tcase -1:\n\t\t\t\treturn 'sorting_desc';\n\t\t\tdefault:\n\t\t\t\treturn this.props.sortable ? 'sorting' : null\n\t\t}\n\t}\n\n\thandleSort(e) {\n\t\te.preventDefault();\n\t\tif(!this.props.hasOwnProperty('onSort') || !this.props.sortable) return;\n\n\t\tthis.props.onSort(\n\t\t\tthis.props.columnIndex,\n\t\t\tthis.props.columnKey,\n\t\t\tthis.props.sortDir ? this.props.sortDir*-1 : 1,\n\t\t\tthis.props.sortFunc\n\t\t);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th onClick={this.handleSort}\n\t\t\t\tclassName={this.getSortClass()}\n\t\t\t\twidth={this.props.width}\n\t\t\t\t>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nTableHeading.propTypes = {\n\tonSort: PropTypes.func,\n\tsortDir: PropTypes.number,\n\tcolumnIndex: PropTypes.number,\n\tcolumnKey: PropTypes.any,\n\tsortable: PropTypes.bool,\n\tsortFunc: PropTypes.func\n};\n\nexport default TableHeading;","import React from 'react';\n\nexport default class TableRow extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleEdit = this.handleEdit.bind(this);\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleEdit(id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n this.props.actions.edit.onClick(id);\n }\n\n render() {\n let {even, actions, id, children} = this.props;\n let canEdit = (actions?.edit && this.shouldDisplayAction(actions.edit));\n let rowClass = even ? 'even' : 'odd';\n\n if (canEdit) {\n return (\n <tr role=\"row\" className={rowClass + \" can-edit\"} onClick={this.handleEdit.bind(this, id)}>\n {children}\n </tr>\n );\n } else {\n return (\n <tr role=\"row\" className={rowClass}>\n {children}\n </tr>\n );\n }\n }\n};\n\n","import React from 'react';\n\nexport default class ActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n this.shouldDisplayAction = this.shouldDisplayAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {actions.hasOwnProperty('custom') && actions.custom.map(a =>\n this.shouldDisplayAction(a) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React from 'react';\nimport TableHeading from './TableHeading';\nimport TableCell from './TableCell';\nimport TableRow from './TableRow';\nimport ActionsTableCell from './ActionsTableCell';\nimport { Tooltip } from 'react-tooltip';\n\nimport './table.less';\n\nconst defaults = {\n sortFunc: (a,b) => (a < b ? -1 : (a > b ? 1 : 0)),\n sortable: false,\n sortCol: 0,\n sortDir: 1,\n colWidth: ''\n}\n\nconst createRow = (row, columns, actions) => {\n const cells = columns.map((col,i) => {\n const colStyles = col?.styles || {};\n\n if(col.hasOwnProperty(\"render\"))\n return (\n <TableCell key={'cell_'+i} style={colStyles} >\n {col.render(row, row[col.columnKey])}\n </TableCell>\n );\n\n return (\n <TableCell\n key={'cell_'+i}\n title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}\n style={colStyles}\n >\n {row[col.columnKey]}\n </TableCell>\n );\n });\n\n if (actions) {\n cells.push(<ActionsTableCell key='actions_cell' id={row['id']} actions={actions} />);\n }\n\n return cells;\n};\n\nconst getSortDir = (columnKey, columnIndex, sortCol, sortDir) => {\n if(columnKey && (columnKey === sortCol)) {\n return sortDir;\n }\n if(sortCol === columnIndex) {\n return sortDir;\n }\n return null\n};\n\nconst Table = (props) => {\n let {options, columns} = props;\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n tableClass += options.actions?.edit ? ' table-hover' : '';\n\n return (\n <div>\n <table className={\"table table-striped dataTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col,i) => {\n\n let sortCol = (typeof options.sortCol != 'undefined') ? options.sortCol : defaults.sortCol;\n let sortDir = (typeof options.sortDir != 'undefined') ? options.sortDir : defaults.sortDir;\n let sortFunc = (typeof options.sortFunc != 'undefined') ? options.sortFunc : defaults.sortFunc;\n let sortable = (typeof col.sortable != 'undefined') ? col.sortable : defaults.sortable;\n let colWidth = (typeof col.width != 'undefined') ? col.width : defaults.colWidth;\n\n return (\n <TableHeading\n onSort={props.onSort}\n sortDir={getSortDir(col.columnKey, i, sortCol, sortDir)}\n sortable={sortable}\n sortFunc={sortFunc}\n columnIndex={i}\n columnKey={col.columnKey}\n width={colWidth}\n key={'heading_'+i}\n >\n {col.value}\n </TableHeading>\n );\n })}\n {options.actions &&\n <TableHeading key='actions_heading' >\n {options.actionsHeader || ' '}\n </TableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && props.data.map((row,i) => {\n if(Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr key={'row_'+i} />\n }\n\n return (\n <TableRow even={i%2 === 0} key={'row_'+i} id={row['id']} actions={options.actions}>\n {createRow(row, columns, options.actions)}\n </TableRow>\n );\n })}\n </tbody>\n </table>\n <Tooltip delayShow={10} />\n </div>\n );\n};\n\nexport default Table;\n","import React from 'react';\nimport RawHTML from '../raw-html';\n\nconst TableCell = (props) => {\n let {children} = props;\n\tlet value = '';\n\tif(children) {\n\t if (React.isValidElement(children)) {\n\t value = children;\n } else {\n\t value = <RawHTML>{children.toString()}</RawHTML>\n }\n }\n\n\treturn (\n\t\t<td {...props}>\n {value}\n\t\t</td>\n\t);\n};\n\nexport default TableCell;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"video.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"video.js/dist/video-js.css\");","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport videojs from 'video.js'\n\nimport 'video.js/dist/video-js.css'\n\nconst YoutubeVideoComponent = ({ videoSrcURL, videoTitle }) => (\n <div className=\"video\">\n <iframe\n width=\"100%\"\n height=\"720\"\n title={videoTitle}\n src={videoSrcURL}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n </div>\n);\n\n\nclass LiveVideoPlayer extends React.Component {\n\n componentDidMount() {\n this.player = videojs(this.videoNode, this.props);\n }\n\n componentWillUnmount() {\n if (this.player) {\n this.player.dispose();\n }\n }\n\n render() {\n return (\n <div data-vjs-player=\"\">\n <video ref={node => this.videoNode = node} className=\"video-js vjs-big-play-centered\" />\n </div>\n );\n }\n}\n\nconst VideoStream = ({ url }) => {\n let layout = null;\n const checkLiveVideo = () => {\n let isLiveVideo = null;\n url.match(/.m3u8/) ? isLiveVideo = true : isLiveVideo = false;\n return isLiveVideo;\n };\n\n if (url) {\n if (checkLiveVideo()) {\n const videoJsOptions = {\n autoplay: true,\n controls: true,\n fluid: true,\n sources: [{\n src: url,\n type: 'application/x-mpegURL'\n }]\n }\n layout = <LiveVideoPlayer {...videoJsOptions} />;\n } else {\n layout = <YoutubeVideoComponent videoSrcURL={url} />;\n }\n } else {\n layout = <span className=\"no-video\">No video URL Provided</span>;\n }\n\n return layout;\n};\n\nexport default VideoStream;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport moment from 'moment-timezone'\n\nclass SummitEvent {\n\n constructor(event, summit = null){\n this._event = event;\n this._summit = summit;\n }\n\n set summit(summit){\n this._summit = summit;\n }\n\n get summit(){\n return this._summit;\n }\n\n getId(){\n return this._event.id;\n }\n\n isPublished(){\n return this._event.hasOwnProperty('is_published') && this._event.is_published;\n }\n\n getMinutesDuration(slotSize){\n\n if(this._event.hasOwnProperty('start_date') && this._event.hasOwnProperty('end_date') && this._event.start_date != null && this._event.end_date != null ) {\n let eventStartDateTime = moment(this._event.start_date * 1000).tz(this._summit.time_zone.name);\n let eventEndDateTime = moment(this._event.end_date * 1000).tz(this._summit.time_zone.name);\n return eventEndDateTime.diff(eventStartDateTime, 'minutes');\n }\n // default\n\n return this._event.hasOwnProperty('duration') && this._event.duration > 0 ? parseInt( this._event.duration / 60 ) : slotSize;\n }\n\n canMove(siblings, day, startTime, interval){\n\n let duration = this._event.hasOwnProperty('duration') && this._event.duration > 0 ? parseInt( this._event.duration / 60 ) : interval;\n // check if published to get real duration ...\n if(this.isPublished())\n duration = this.getMinutesDuration();\n\n let startDateTime = moment.tz(day+' '+ startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name);\n let endDateTime = moment.tz(day+' '+ startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name);\n endDateTime = endDateTime.add(duration, 'minutes');\n\n // check siblings overlap\n for (let auxEvent of siblings.filter(item => item.id !== this.getId())) {\n let auxEventStartDateTime = moment(auxEvent.start_date * 1000).tz(this._summit.time_zone.name);\n let auxEventEndDateTime = moment(auxEvent.end_date * 1000).tz(this._summit.time_zone.name);\n\n // if time segments overlap\n if(auxEventStartDateTime.isBefore(endDateTime) && auxEventEndDateTime.isAfter(startDateTime))\n return false;\n }\n\n return true;\n }\n\n calculateNewDates(day, startTime, minutes){\n\n minutes = this._event.hasOwnProperty('duration') && this._event.duration > 0 ?\n parseInt( this._event.duration / 60 ) : minutes;\n\n let newStarDateTime = moment.tz(day+' '+startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name);\n let newEndDateTime = moment.tz(day+' '+startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name).add(minutes, 'minutes');\n return [newStarDateTime, newEndDateTime];\n }\n\n isValidEndDate(endDate){\n if(!endDate) return true;\n const _endDate = moment.tz(endDate * 1000, this._summit.time_zone.name);\n const summitEndDate = moment.tz(this._summit.end_date * 1000, this._summit.time_zone.name);\n const startDate = moment.tz(this._event.start_date * 1000, this._summit.time_zone.name);\n return _endDate.isSameOrBefore(summitEndDate) && _endDate.isAfter(startDate);\n }\n\n isValidStartDate(startDate){\n if(!startDate) return true;\n const _startDate = moment.tz(startDate * 1000, this._summit.time_zone.name);\n // if we have set duration , end date is optional\n const durationInMinutes = this._event.hasOwnProperty('duration') && this._event.duration > 0 ?\n parseInt( this._event.duration / 60 ) : 0;\n const summitStartDate = moment.tz(this._summit.start_date * 1000, this._summit.time_zone.name);\n const endDate = this._event.end_date ?\n moment.tz(this._event.end_date * 1000, this._summit.time_zone.name):\n ( durationInMinutes > 0 ? moment.tz(startDate * 1000, this._summit.time_zone.name).add(durationInMinutes, 'minutes'): null);\n\n return _startDate.isSameOrAfter(summitStartDate) && moment.isMoment(endDate) && _startDate.isBefore(endDate);\n }\n\n isValidTitle(title){\n return title.trim() !== '';\n }\n\n isValid(){\n return this.isValidTitle(this._event.title)\n && this.isValidStartDate(this._event.start_date)\n && this.isValidEndDate(this._event.end_date);\n }\n\n}\n\nexport default SummitEvent;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific flanguage governing permissions and\n * limitations under the License.\n **/\n\nimport request from 'superagent/lib/client';\nimport URI from \"urijs\";\nURI.escapeQuerySpace = false;\n\nlet http = request;\nimport Swal from 'sweetalert2';\nimport T from \"i18n-react/dist/i18n-react\";\nimport { isClearingSessionState, setSessionClearingState, getCurrentPathName } from './methods';\nimport { CLEAR_SESSION_STATE } from '../components/security/actions';\nimport { doLogin, initLogOut } from '../components/security/methods';\n\nexport const GENERIC_ERROR = \"Yikes. Something seems to be broken. Our web team has been notified, and we apologize for the inconvenience.\";\nexport const RESET_LOADING = 'RESET_LOADING';\nexport const START_LOADING = 'START_LOADING';\nexport const STOP_LOADING = 'STOP_LOADING';\nexport const VALIDATE = 'VALIDATE';\nexport const CLEAR_MESSAGE = 'CLEAR_MESSAGE';\nexport const SHOW_MESSAGE = 'SHOW_MESSAGE';\n\nexport const createAction = type => payload => ({\n type,\n payload\n});\n\nexport const resetLoading = createAction(RESET_LOADING);\nexport const startLoading = createAction(START_LOADING);\nexport const stopLoading = createAction(STOP_LOADING);\n\nconst xhrs = {};\nconst etagCache = {};\n\nconst cancel = (key) => {\n if(xhrs[key]) {\n xhrs[key].abort();\n console.log(`aborted request ${key}`);\n delete xhrs[key];\n }\n}\n\nconst schedule = (key, req) => {\n // console.log(`scheduling ${key}`);\n xhrs[key] = req;\n};\n\nconst isObjectEmpty = (obj) => {\n return Object.keys(obj).length === 0 && obj.constructor === Object ;\n}\n\nconst buildNotifyHandlerPayload = (httpCode, title, content, type) => ({ httpCode, title, html: content, type });\nconst buildNotifyHandlerErrorPayload = (httpCode, title, content) => buildNotifyHandlerPayload(httpCode, title, content, \"error\");\nconst buildNotifyHandlerWarningPayload = (httpCode, title, content) => buildNotifyHandlerPayload(httpCode, title, content, \"warning\");\n\nconst initLogin = () => (dispatch) => {\n const currentLocation = getCurrentPathName();\n const clearingSessionState = isClearingSessionState();\n dispatch({\n type: CLEAR_SESSION_STATE,\n payload: {}\n });\n if (!clearingSessionState) {\n setSessionClearingState(true);\n console.log(\"authErrorHandler 401 - re login\");\n doLogin(currentLocation);\n }\n};\n\nconst normalizeFormDataPayload = (req, formData) => {\n if(!isObjectEmpty(formData)) {\n Object.keys(formData).forEach(function (key) {\n let value = formData[key];\n if (Array.isArray(value)) {\n value.forEach(item => {\n req.field(`${key}[]`, item);\n });\n } else {\n req.field(key, value);\n }\n });\n }\n};\n\nexport const authErrorHandler = (\n err,\n res,\n notifyErrorHandler = showMessage\n) => (dispatch) => {\n\n const code = err.status;\n let msg = \"\";\n let payload, callback;\n\n dispatch(stopLoading());\n\n switch (code) {\n case 401:\n if (notifyErrorHandler !== showMessage) {\n payload = buildNotifyHandlerErrorPayload(code, \"ERROR\", T.translate(\"errors.user_not_auth\"));\n callback = () => dispatch(initLogin());\n } else {\n dispatch(initLogin());\n }\n break;\n case 403:\n payload = buildNotifyHandlerErrorPayload(code, \"ERROR\", T.translate(\"errors.user_not_authz\"));\n callback = initLogOut;\n break;\n case 404:\n msg = err.response.body?.message || err.response.error?.message || err.message;\n if (err.response.body?.errors?.length) {\n msg += `<br>${err.response.body.errors.join(\"<br>\")}`;\n }\n payload = buildNotifyHandlerWarningPayload(code, \"Not Found\", msg);\n break;\n case 412:\n for (const [key, value] of Object.entries(err.response.body.errors)) {\n msg += isNaN(key) ? `${key}: ` : \"\";\n msg += `${value}<br>`;\n }\n dispatch({\n type: VALIDATE,\n payload: { errors: err.response.body.errors }\n });\n payload = buildNotifyHandlerWarningPayload(code, \"Validation error\", msg);\n break;\n default:\n payload = buildNotifyHandlerErrorPayload(code, \"ERROR\", T.translate(\"errors.server_error\"));\n }\n\n if (payload)\n dispatch(notifyErrorHandler(payload, callback));\n}\n\nexport const getRequest =(\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {},\n useEtag = false\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n let key = url.toString();\n\n if(!isObjectEmpty(params)) {\n // remove the access token\n const { access_token: _, ...newParams} = params;\n // and generate new key\n key = url.query(newParams).toString();\n url = url.query(params);\n }\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n cancel(key);\n\n return new Promise((resolve, reject) => {\n let req = http.get(url.toString());\n if(useEtag && etagCache.hasOwnProperty(key)){\n const { etag } = etagCache[key];\n if(etag){\n req.set('If-None-Match', etag)\n }\n }\n\n req.timeout({\n response: 60000,\n deadline: 60000,\n })\n .end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject, key, useEtag))\n\n schedule(key, req);\n });\n};\n\nexport const putRequest = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n payload,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => ( dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n if(payload == null)\n payload = {};\n http.put(url.toString())\n .send(payload)\n .end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject))\n });\n};\n\nexport const deleteRequest = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n payload,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params) => (dispatch, state) => {\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n if(payload == null)\n payload = {};\n\n http.delete(url)\n .send(payload)\n .end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const postRequest = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n payload,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n\n let request = http.post(url);\n\n if(payload != null)\n request.send(payload);\n else // to be a simple CORS request\n request.set('Content-Type', 'text/plain');\n\n request.end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const postFile = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n file,\n fileMetadata = {},\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n\n const req = http.post(url)\n .attach('file', file);\n\n normalizeFormDataPayload(req, fileMetadata);\n\n req.end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const putFile = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n file = null,\n fileMetadata = {},\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n\n const req = http.put(url);\n\n if(file != null){\n req.attach('file', file);\n }\n\n normalizeFormDataPayload(req, fileMetadata)\n\n req.end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const defaultErrorHandler = (err, res) => (dispatch) => {\n let body = res.body;\n let text = '';\n if(body instanceof Object){\n if(body.hasOwnProperty('message'))\n text = body.message;\n }\n Swal.fire(res.statusText, text, \"error\");\n}\n\nconst byLowerCase = toFind => value => toLowerCase(value) === toFind;\nconst toLowerCase = value => value.toLowerCase();\nconst getKeys = headers => Object.keys(headers);\n\nexport const getHeaderCaseInsensitive = (headerName, headers = {}) => {\n const key = getKeys(headers).find(byLowerCase(headerName));\n return key ? headers[key] : undefined;\n};\n\nexport const responseHandler = ( dispatch, state, receiveActionCreator, errorHandler, resolve, reject, key = null, useEtag= false ) =>\n\n (err, res) => {\n\n if (err || !res.ok) {\n let code = err.status;\n\n if(code === 304 && etagCache.hasOwnProperty(key) && useEtag){\n const { body } = etagCache[key];\n\n if(typeof receiveActionCreator === 'function') {\n dispatch(receiveActionCreator({response: body}));\n return resolve({response: body});\n }\n\n dispatch(receiveActionCreator);\n return resolve({response: body});\n }\n if(errorHandler) {\n errorHandler(err, res)(dispatch, state);\n }\n return reject({ err, res, dispatch, state })\n }\n\n let json = res.body;\n\n if(useEtag) {\n const responseETAG = getHeaderCaseInsensitive('etag', res.headers);\n if (responseETAG) {\n etagCache[key] = { etag: responseETAG, body: json};\n }\n }\n\n if(typeof receiveActionCreator === 'function') {\n dispatch(receiveActionCreator({response: json}));\n return resolve({response: json});\n }\n dispatch(receiveActionCreator);\n return resolve({response: json});\n}\n\n\nexport const fetchErrorHandler = (response) => {\n let code = response.status;\n let msg = response.statusText;\n\n switch (code) {\n case 403:\n Swal.fire(\"ERROR\", T.translate(\"errors.user_not_authz\"), \"warning\");\n break;\n case 401:\n Swal.fire(\"ERROR\", T.translate(\"errors.session_expired\"), \"error\");\n break;\n case 412:\n Swal.fire(\"ERROR\", msg, \"warning\");\n case 500:\n Swal.fire(\"ERROR\", T.translate(\"errors.server_error\"), \"error\");\n }\n}\n\nexport const fetchResponseHandler = (response) => {\n if (!response.ok) {\n throw response;\n } else {\n return response.json();\n }\n}\n\nexport const showMessage = (settings, callback = null) => (dispatch) => {\n dispatch(stopLoading());\n Swal.fire(settings).then((result) => {\n if (result.value && typeof callback === 'function') {\n callback();\n }\n });\n}\n\nexport const showSuccessMessage = (html) => (dispatch) => {\n dispatch(stopLoading());\n Swal.fire({\n title: T.translate(\"general.done\"),\n html: html,\n type: 'success'\n });\n}\n\nexport const downloadFileByContent = (filename, content, mime) => {\n let link = document.createElement('a');\n link.textContent = 'download';\n link.download = filename;\n link.href = `data:${mime},${encodeURIComponent(content)}`\n document.body.appendChild(link); // Required for FF\n link.click();\n document.body.removeChild(link);\n}\n\nexport const getCSV = (endpoint, params, filename, header = null) => (dispatch) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n dispatch(startLoading());\n\n return fetch(url.toString())\n .then((response) => {\n if (!response.ok) {\n throw response;\n } else {\n return response.text();\n }\n })\n .then((csv) => {\n dispatch(stopLoading());\n\n if (header) {\n csv = header + '\\r\\r' + csv;\n }\n downloadFileByContent(filename, csv, 'text/csv;charset=utf-8');\n })\n .catch(fetchErrorHandler);\n};\n\nexport const getRawCSV = (endpoint, params, header = null) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n return fetch(url.toString())\n .then((response) => {\n if (!response.ok) {\n throw response;\n } else {\n return response.text();\n }\n })\n .then((csv) => {\n if (header) {\n csv = header + '\\r\\r' + csv;\n }\n\n return csv;\n })\n .catch(fetchErrorHandler);\n};\n\nexport const escapeFilterValue = (value) => {\n value = String(value);\n // escape backslash first so you don't accidentally break your own escapes\n value = value.replace(/\\\\/g, \"\\\\\\\\\");\n value = value.replace(/,/g, \"\\\\,\");\n value = value.replace(/;/g, \"\\\\;\");\n // especial case for literal +\n value = value.replace(/\\+/g, \"%2B\");\n return value;\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"spark-md5\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto-js/sha256\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto-js/enc-base64url\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto-js/enc-hex\");","import SparkMD5 from \"spark-md5\";\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nconst MAX_BYTES = 65536\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nconst MAX_UINT32 = 4294967295\nconst crypto = typeof window !== 'undefined' ? (window.crypto || window.msCrypto) : null;\nimport sha256 from 'crypto-js/sha256';\nimport Base64url from 'crypto-js/enc-base64url'\nimport Hex from 'crypto-js/enc-hex'\nexport const getRandomBytes = (size) => {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n const bytes = Buffer.allocUnsafe(size)\n if(!crypto) return a;\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (let generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n return bytes\n}\n\nexport const getSHA256 = (message, format = 'hex') => {\n\n let f = Hex;\n if(format === 'Base64url')\n f = Base64url;\n\n return sha256(message).toString(f);\n}\n\nexport const getMD5 = (file) => {\n return new Promise((resolve, reject) => {\n const chunkSize = 2 * 1024 * 1024; // 2 MB by chunk\n const spark = new SparkMD5.ArrayBuffer();\n const fileReader = new FileReader();\n let cursor = 0;\n\n fileReader.onload = e => {\n spark.append(e.target.result); \n cursor += chunkSize;\n\n if (cursor < file.size) {\n readNextChunk();\n } else {\n resolve(spark.end()); // final MD5\n }\n };\n\n fileReader.onerror = () => reject(\"Error reading the file\");\n\n function readNextChunk() {\n const slice = file.slice(cursor, cursor + chunkSize);\n fileReader.readAsArrayBuffer(slice);\n }\n\n readNextChunk();\n });\n}","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport moment from 'moment-timezone';\nimport URI from \"urijs\";\n\nexport const findElementPos = (obj) => {\n var curtop = -70;\n if (obj.offsetParent) {\n do {\n curtop += obj.offsetTop;\n } while (obj = obj.offsetParent);\n return [curtop];\n }\n};\n\nexport const epochToMoment = (atime) => {\n if(!atime) return atime;\n atime = atime * 1000;\n return moment(atime);\n};\n\nexport const epochToMomentTimeZone = (atime, time_zone) => {\n if(!atime) return atime;\n atime = atime * 1000;\n return moment(atime).tz(time_zone);\n};\n\nexport const formatEpoch = (atime, format = 'M/D/YYYY h:mm a') => {\n if(!atime) return atime;\n return epochToMoment(atime).format(format);\n};\n\nexport const parseLocationHour = (hour) => {\n let parsedHour = hour.toString();\n if(parsedHour.length < 4) parsedHour = `0${parsedHour}`;\n parsedHour = parsedHour.match(/.{2}/g);\n parsedHour = parsedHour.join(':');\n return parsedHour;\n}\n\nexport const objectToQueryString = (obj) => {\n var str = \"\";\n for (var key in obj) {\n if (str != \"\") {\n str += \"&\";\n }\n str += key + \"=\" + encodeURIComponent(obj[key]);\n }\n\n return str;\n};\n\nexport const getBackURL = () => {\n let url = URI(window.location.href);\n let query = url.search(true);\n let fragment = url.fragment();\n let backUrl = query.hasOwnProperty('BackUrl') ? query['BackUrl'] : null;\n if(backUrl != null && fragment != null && fragment != ''){\n backUrl += `#${fragment}`;\n }\n return backUrl;\n};\n\nexport const toSlug = (text) =>{\n text = text.toLowerCase();\n return text.replace(/[^a-zA-Z0-9]+/g,'_');\n}\n\nexport const getAuthCallback = () => {\n if(typeof window !== 'undefined') {\n return `${window.location.origin}/auth/callback`;\n }\n return null;\n};\n\nexport const getCurrentLocation = () => {\n let location = '';\n if(typeof window !== 'undefined') {\n location = window.location;\n // check if we are on iframe\n if (window.top)\n location = window.top.location;\n }\n return location;\n};\n\nexport const getOrigin = () => {\n if(typeof window !== 'undefined') {\n return window.location.origin;\n }\n return null;\n};\n\nexport const getCurrentPathName = () => {\n if(typeof window !== 'undefined') {\n return window.location.pathname;\n }\n return null;\n};\n\nexport const getCurrentHref = () => {\n if(typeof window !== 'undefined') {\n return window.location.href;\n }\n return null;\n};\n\nexport const getAllowedUserGroups = () => {\n if(typeof window !== 'undefined') {\n return window.ALLOWED_USER_GROUPS || '';\n }\n return null;\n};\n\nexport const buildAPIBaseUrl = (relativeUrl) => {\n if(typeof window !== 'undefined'){\n return `${window.API_BASE_URL}${relativeUrl}`;\n }\n return null``;\n};\n\nexport const putOnLocalStorage = (key, value) => {\n if(typeof window !== 'undefined') {\n window.localStorage.setItem(key, value);\n }\n};\n\nexport const getFromLocalStorage = (key, removeIt) => {\n if(typeof window !== 'undefined') {\n let val = window.localStorage.getItem(key);\n if(removeIt){\n console.log(`getFromLocalStorage removing key ${key}`);\n removeFromLocalStorage(key);\n }\n return val;\n }\n return null;\n};\n\nexport const removeFromLocalStorage = (key) => {\n if(typeof window !== 'undefined') {\n window.localStorage.removeItem(key);\n }\n}\n\nexport const isClearingSessionState = () => {\n if(typeof window !== 'undefined') {\n return window.clearing_session_state;\n }\n return false;\n};\n\nexport const setSessionClearingState = (val) => {\n if(typeof window !== 'undefined') {\n window.clearing_session_state = val;\n }\n};\n\nexport const getCurrentUserLanguage = () => {\n let language = 'en';\n if(typeof navigator !== 'undefined') {\n language = (navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage;\n }\n return language;\n};\n\nexport const scrollToError = (errors) => {\n if(Object.keys(errors).length > 0) {\n const firstError = Object.keys(errors)[0];\n const firstNode = document.getElementById(firstError);\n if (firstNode) window.scrollTo(0, findElementPos(firstNode));\n }\n};\n\nexport const hasErrors = (field, errors) => {\n if(field in errors) {\n return errors[field];\n }\n return '';\n};\n\nexport const shallowEqual = (object1, object2) => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (let key of keys1) {\n if (object1[key] !== object2[key]) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const arraysEqual = (a1, a2) =>\n a1.length === a2.length && a1.every((o, idx) => shallowEqual(o, a2[idx]));\n\nexport const isEmpty = (obj) => {\n return Object.keys(obj).length === 0;\n};\n\n\nexport const base64URLEncode = (str) => {\n return str\n .toString('base64')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '')\n}\n\nexport const retryPromise = async (\n cb,\n maxNumberOfRetries = 3\n) => {\n for (let i = 0; i < maxNumberOfRetries; i++) {\n if (await cb()) {\n return true;\n }\n }\n\n return false;\n}\n\nexport const getTimeServiceUrl = () => {\n if(typeof window !== 'undefined') {\n return window.TIMEINTERVALSINCE1970_API_URL || process.env.TIMEINTERVALSINCE1970_API_URL;\n }\n return null;\n};\n\nexport const getEventLocation = (event, summitVenueCount, summitShowLocDate = null, nowUtc = null) => {\n const shouldShowVenues = (summitShowLocDate && nowUtc) ? summitShowLocDate * 1000 < nowUtc : true;\n const locationName = [];\n const { location } = event;\n\n if (!shouldShowVenues) return 'TBA';\n\n if (!location) return 'TBA';\n\n if (summitVenueCount > 1 && location.venue?.name) locationName.push(location.venue.name);\n if (location.floor?.name) locationName.push(location.floor.name);\n if (location.name) locationName.push(location.name);\n\n return locationName.length > 0 ? locationName.join(' - ') : 'TBA';\n};\n\nexport const getEventHosts = (event) => {\n let hosts = [];\n if (event.speakers?.length > 0) {\n hosts = [...event.speakers];\n }\n if (event.moderator) hosts.push(event.moderator);\n\n return hosts;\n};\n\nconst loadImage = async url => {\n const img = document.createElement('img')\n img.src = url\n img.crossOrigin = 'anonymous'\n\n return new Promise((resolve, reject) => {\n img.onload = () => resolve(img)\n img.onerror = reject\n })\n}\n\nexport const convertSVGtoImg = async (svgUrl) => {\n const img = await loadImage(svgUrl)\n const newWidth = 100\n const newHeight = Math.floor(img.naturalHeight * 100 / img.naturalWidth)\n\n const canvas = document.createElement('canvas')\n canvas.width = newWidth\n canvas.height = newHeight\n canvas.getContext('2d').drawImage(img, 0, 0, newWidth, newHeight)\n\n const url = await canvas.toDataURL(`image/png`, 1.0)\n console.log(url, newWidth, newHeight);\n return {url, width: newWidth, height: newHeight}\n}\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport { fetchErrorHandler, fetchResponseHandler, escapeFilterValue } from \"./actions\";\nimport { getAccessToken } from '../components/security/methods';\nimport { buildAPIBaseUrl } from \"./methods\";\nimport _ from 'lodash';\nexport const RECEIVE_COUNTRIES = 'RECEIVE_COUNTRIES';\nconst callDelay = 500; // milliseconds\nimport URI from \"urijs\";\nURI.escapeQuerySpace = false;\nexport const DEFAULT_PAGE_SIZE = 10;\n\nconst _fetchPublic = async (endpoint, callback, options = {}) => {\n return fetch(buildAPIBaseUrl(endpoint.toString()), options)\n .then(fetchResponseHandler)\n .then((json) => {\n if(typeof callback === 'function')\n callback(json.data);\n })\n .catch(response => {\n const code = response.status;\n if (code === 404) callback([]);\n return response;\n })\n .catch(fetchErrorHandler);\n}\n\n/**\n * @param endpoint\n * @param callback\n * @param options\n * @returns {Promise<Response | void>}\n * @private\n */\nconst _fetch = async (endpoint, callback, options = {}) => {\n\n let accessToken;\n\n try {\n accessToken = await getAccessToken();\n } catch (e) {\n if(typeof callback === 'function')\n callback(e);\n return Promise.reject();\n }\n\n endpoint.addQuery('access_token', accessToken);\n\n return _fetchPublic(endpoint, callback, options);\n}\n\n/**\n *\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryMembers = _.debounce(async (input, callback, per_page= DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/members`);\n\n endpoint.addQuery('expand', `tickets,rsvp,schedule_summit_events,all_affiliations`);\n endpoint.addQuery('order','first_name,last_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `full_name@@${input},first_name@@${input},last_name@@${input},email@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n *\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryAttendees = _.debounce(async (summitId, input, callback, per_page= DEFAULT_PAGE_SIZE) => {\n \n let endpoint = URI(`/api/v1/summits/${summitId}/attendees`);\n \n endpoint.addQuery('order','first_name,last_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n \n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `full_name=@${input},email=@${input}`);\n }\n \n _fetch(endpoint, callback);\n \n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySummits = _.debounce(async (input, callback, per_page= DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/all`);\n\n endpoint.addQuery('expand', `tickets,rsvp,schedule_summit_events,all_affiliations`);\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySpeakers = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE ) => {\n\n\n let endpoint = URI(`/api/v1/${summitId ? `summits/${summitId}/speakers`:`speakers`}`);\n\n endpoint.addQuery('expand', `member,registration_request`);\n endpoint.addQuery('order','first_name,last_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `full_name@@${input},first_name@@${input},last_name@@${input},email@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTags = _.debounce(async (summitId, input, callback, per_page = 50) => {\n\n let endpoint = URI(`/api/v1/${summitId ? `summits/${summitId}/track-tag-groups/all/allowed-tags`:`tags`}`);\n\n if(summitId)\n endpoint.addQuery('expand', `tag,track_tag_group`);\n\n endpoint.addQuery('order','tag');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `tag@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTracks = _.debounce(async (summitId, input, callback, excludedIds = [], per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/tracks`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if (excludedIds?.length > 0) {\n endpoint.addQuery('filter[]', `not_id==${excludedIds.join(\"||\")}`);\n }\n\n if (input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTrackGroups = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/track-groups`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=, *): Promise<void>)|*>}\n */\nexport const queryEvents = _.debounce(async (summitId, input, onlyPublished = false, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/events` + (onlyPublished ? '/published' : ''));\n\n endpoint.addQuery('order','title');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `title@@${input}`);\n }\n\n _fetch(endpoint, callback);\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=, *=): Promise<void>)|*>}\n */\nexport const queryEventTypes = _.debounce(async (summitId, input, callback, eventTypeClassName = null, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/event-types`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n if (eventTypeClassName) {\n eventTypeClassName = escapeFilterValue(eventTypeClassName);\n endpoint.addQuery('filter[]', `class_name==${eventTypeClassName}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryGroups = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/groups`);\n\n endpoint.addQuery('order','title,code');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `title@@${input},code@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryCompanies = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/companies`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryRegistrationCompanies = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/registration-companies`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsors = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/sponsors`);\n\n endpoint.addQuery('expand','company,sponsorship,sponsorship.type')\n endpoint.addQuery('order','id')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `company_name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsorsWithBadgeScans = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/sponsors`);\n\n endpoint.addQuery('expand','company,sponsorship,sponsorship.type');\n endpoint.addQuery('fields','id,company.name,sponsorship.type.name');\n endpoint.addQuery('relations','none,company.none,sponsorship.type.none');\n endpoint.addQuery('filter[]','badge_scans_count>0');\n endpoint.addQuery('order','+company_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `company_name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryAccessLevels = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/access-level-types`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryOrganizations = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/organizations`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\nexport const getLanguageList = (callback, signal) => {\n return _fetchPublic(new URI(`/api/public/v1/languages`), callback, { signal });\n};\n\nexport const getCountryList = (callback, signal) => {\n return _fetchPublic(new URI(`/api/public/v1/countries`), callback, { signal });\n};\n\nlet geocoder;\n\nexport const geoCodeAddress = (address) => {\n\n if (!geocoder) geocoder = new google.maps.Geocoder();\n\n // return a Promise\n return new Promise(function(resolve,reject) {\n geocoder.geocode( { 'address': address}, function(results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n // resolve results upon a successful status\n resolve(results);\n } else {\n // reject status upon un-successful status\n reject(status);\n }\n });\n });\n};\n\nexport const geoCodeLatLng = (lat, lng) => {\n\n if (!geocoder) geocoder = new google.maps.Geocoder();\n\n let latlng = {lat: parseFloat(lat), lng: parseFloat(lng)};\n // return a Promise\n return new Promise(function(resolve,reject) {\n geocoder.geocode( { 'location': latlng}, function(results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n // resolve results upon a successful status\n resolve(results);\n } else {\n // reject status upon un-successful status\n reject(status);\n }\n });\n });\n};\n\n/**\n * @type {DebouncedFunc<(function(*, *=, *, *=, *=): Promise<void>)|*>}\n */\nexport const queryTicketTypes = _.debounce(async (summitId, filters = {}, callback, version = 'v1', per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/${version}/summits/${summitId}/ticket-types`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(filters.hasOwnProperty('name')) {\n const name = escapeFilterValue(filters.name);\n if(name && name != '')\n endpoint.addQuery('filter[]', `name@@${name}`);\n }\n\n if(filters.hasOwnProperty('audience')){\n const audience = escapeFilterValue(filters.audience);\n if(audience && audience != '')\n endpoint.addQuery('filter[]', `audience==${audience}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySponsoredProjects = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n\n const endpoint = URI(`/api/v1/sponsored-projects`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryPromocodes = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE, extraFilters = []) => {\n\n\n let endpoint = URI(`/api/v1/summits/${summitId}/promo-codes`);\n\n endpoint.addQuery('order','code')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `code@@${input}`);\n }\n\n //eg: filter = 'class_name==SummitRegistrationPromoCode'\n for (const filter of extraFilters) {\n endpoint.addQuery('filter[]', filter);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n","export const CheckBoxQuestionType = 'CheckBox';\nexport const ComboBoxQuestionType = 'ComboBox'\nexport const CheckBoxListQuestionType = 'CheckBoxList';\nexport const RadioButtonListQuestionType = 'RadioButtonList';\nexport const AllowedMultipleValueQuestionType = [ComboBoxQuestionType, CheckBoxListQuestionType, RadioButtonListQuestionType];\nexport const AnswerValuesOperator_And = 'And';\nexport const AnswerValuesOperator_Or = 'Or';\nexport const VisibilityCondition_Equal = 'Equal';\nexport const VisibilityCondition_NotEqual = 'NotEqual';\nexport const Visibility_Visible = 'Visible';\nexport const MainQuestionClassType = 'MainQuestion';\nimport {toSlug} from \"./methods\";\n\nexport default class QuestionsSet {\n\n constructor(questions, answers = []) {\n this.questions = questions;\n this.originalAnswers = answers\n this.answers = [];\n // map answers to associate array\n for (let a of this.originalAnswers)\n this.answers[a.question_id] = a;\n this.questionByName = {}\n this.questionById = {}\n // associative array ( rule id , rule);\n this.rules = {};\n this._parseQuestions();\n }\n\n _parseQuestion = (q) => {\n this.questionByName[toSlug(q.name)] = q;\n this.questionById[parseInt(q.id)] = q;\n if(q.hasOwnProperty('sub_question_rules'))\n for (let r of q.sub_question_rules) {\n this.rules[parseInt(r.id)] = r;\n this._parseQuestion(r.sub_question);\n }\n }\n\n _parseQuestions = () => {\n for (let q of this.questions) {\n this._parseQuestion(q);\n }\n }\n\n _allowsValues = (q) => {\n return AllowedMultipleValueQuestionType.includes(q.type);\n }\n\n _allowsValue = (q, answer) => {\n let value = answer.value.split(',').map(v => parseInt(v));\n for (let av of value) {\n if (!q.values.map(e => e.id).includes(av))\n return false;\n }\n return true;\n }\n\n _getAnswerFor = (q) => {\n let id = Number.isInteger(q) ? q : q.id;\n let a = this.answers[id] || null;\n return a ? a : null;\n }\n\n _hasValue = (answer) => {\n return answer.value !== '';\n }\n\n _answerContains = (answer, val) => {\n return answer.value.split(',').includes(val);\n }\n\n _isSubQuestionVisible = (rule) => {\n let initialCondition = rule.answer_values_operator === AnswerValuesOperator_And ? true : false;\n const parentQuestionAnswer = this._getAnswerFor(rule.parent_question_id);\n if (!parentQuestionAnswer) {\n initialCondition = rule.visibility_condition === VisibilityCondition_Equal ? false : true;\n } else {\n switch (rule.visibility_condition) {\n case VisibilityCondition_Equal: {\n for (let answerValue of rule.answer_values) {\n if (rule.answer_values_operator === AnswerValuesOperator_And)\n initialCondition = initialCondition && this._answerContains(parentQuestionAnswer, answerValue);\n else\n initialCondition = initialCondition || this._answerContains(parentQuestionAnswer, answerValue);\n }\n }\n break;\n case VisibilityCondition_NotEqual: {\n for (let answerValue of rule.answer_values) {\n if (rule.answer_values_operator === AnswerValuesOperator_And)\n initialCondition = initialCondition && !this._answerContains(parentQuestionAnswer, answerValue);\n else\n initialCondition = initialCondition || !this._answerContains(parentQuestionAnswer, answerValue);\n }\n }\n break;\n }\n }\n // final visibility check\n if (rule.visibility === Visibility_Visible) {\n return initialCondition;\n }\n // not visible\n return !initialCondition;\n }\n\n _isAnswered = (q) => {\n const answer = this._getAnswerFor(q);\n\n if (q.class === MainQuestionClassType) {\n if (!q.mandatory) return true;\n if (!answer) return false;\n if (!this._hasValue(answer)) return false;\n if (this._allowsValues(q) && !this._allowsValue(q, answer))\n return false;\n return true;\n }\n\n // check parent rules ...\n for (let ruleId of q.parent_rules) {\n if (!this._isSubQuestionVisible(this.rules[ruleId])) // if question is not visible skip it\n continue;\n if (!q.mandatory) return true;\n if (!answer) return false;\n if (!this._hasValue(answer)) return false;\n if (this._allowsValues(q) && !this._allowsValue(q, answer))\n return false;\n return true;\n }\n\n return true;\n }\n\n _checkQuestion = (q) => {\n let res = this._isAnswered(q);\n if(q.hasOwnProperty('sub_question_rules'))\n for (let rule of q.sub_question_rules) {\n // check recursive all the tree till leaves ...\n res = res && this._checkQuestion(rule.sub_question);\n }\n return res;\n }\n\n _formatQuestionAnswer = (question) => {\n let res = {};\n const slug = toSlug(question.name);\n let userAnswer = this.originalAnswers.find(a => a.question_id === question.id)?.value;\n if(!userAnswer && question?.values?.length > 0){\n // check default value\n const defaultVal = question.values.find(v => v.is_default);\n if(defaultVal) userAnswer = defaultVal.id.toString();\n }\n if(userAnswer) {\n if (question.type === CheckBoxQuestionType) userAnswer = userAnswer === 'false' ? false : !!userAnswer;\n if (question.type === RadioButtonListQuestionType || question.type === ComboBoxQuestionType) userAnswer = parseInt(userAnswer);\n if (question.type === CheckBoxListQuestionType) userAnswer = userAnswer.split(',').map(ansVal => parseInt(ansVal)) || [];\n }\n\n res[slug] = userAnswer || '';\n if(question.type === CheckBoxListQuestionType && res[slug] === '') res[slug] = []\n if(question.hasOwnProperty('sub_question_rules'))\n for (let rule of question.sub_question_rules) {\n // check recursive all the tree till leaves ...\n let res1 = this._formatQuestionAnswer(rule.sub_question);\n res = {...res, ...res1};\n }\n return res;\n }\n\n formatAnswers = () => {\n let res = {}\n this.questions.forEach(q => {\n let res1 = this._formatQuestionAnswer(q);\n res = {...res,...res1};\n });\n return res;\n }\n\n completed = () => {\n let res = true;\n for (let q of this.questions) {\n res = res && this._checkQuestion(q);\n }\n return res;\n }\n\n getQuestionByName = (name) => {\n const slug = toSlug(name)\n return this.questionByName[name] || this.questionByName[slug] || null;\n }\n\n getQuestionById = (id) => {\n return this.questionById[parseInt(id)] || null;\n }\n}\n","var map = {\n\t\"./en.json\": 5553,\n\t\"./es.json\": 2706,\n\t\"./zh.json\": 4028\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9401;","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\");","module.exports = require(\"dropzone\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"idtoken-verifier\");","module.exports = require(\"lodash\");","module.exports = require(\"moment-timezone\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"react-dnd\");","module.exports = require(\"react-rte\");","module.exports = require(\"react-select\");","module.exports = require(\"react-select/lib/Async\");","module.exports = require(\"react-select/lib/AsyncCreatable\");","module.exports = require(\"react-tooltip\");","module.exports = require(\"superagent/lib/client\");","module.exports = require(\"sweetalert2\");","module.exports = require(\"urijs\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18n-react\");","import React from 'react';\nimport T from 'i18n-react';\nimport { getCurrentUserLanguage } from '../utils/methods';\n\nexport {default as AjaxLoader} from './ajaxloader';\nexport {default as RawHTML} from './raw-html';\nexport {default as FreeTextSearch} from './free-text-search';\nexport {default as DateTimePicker} from './inputs/datetimepicker'\nexport {default as GroupedDropdown} from './inputs/grouped-dropdown'\nexport {default as UploadInput} from './inputs/upload-input'\nexport {default as UploadInputV2} from './inputs/upload-input-v2'\nexport {default as CompanyInput} from './inputs/company-input'\nexport {default as PromocodeInput} from './inputs/promocode-input'\nexport {default as SponsorInput} from './inputs/sponsor-input'\nexport {default as OrganizationInput} from './inputs/organization-input'\nexport {default as CountryDropdown} from './inputs/country-dropdown'\nexport {default as Dropdown} from './inputs/dropdown'\nexport {default as TextEditor} from './inputs/editor-input'\nexport {default as TextArea} from './inputs/textarea-input'\nexport {default as EventInput} from './inputs/event-input'\nexport {default as GroupInput} from './inputs/group-input'\nexport {default as MemberInput} from './inputs/member-input'\nexport {default as AttendeeInput} from './inputs/attendee-input'\nexport {default as SummitInput} from './inputs/summit-input'\nexport {default as SpeakerInput} from './inputs/speaker-input'\nexport {default as OperatorInput} from './inputs/operator-input'\nexport {default as TagInput} from './inputs/tag-input'\nexport {default as Input} from './inputs/text-input'\nexport {default as Panel} from './sections/panel'\nexport {default as SimpleLinkList} from './simple-link-list'\nexport {default as SummitDropdown} from './summit-dropdown'\nexport {default as Table} from './table/Table'\nexport {default as SortableTable} from './table-sortable/SortableTable'\nexport {default as EditableTable} from './table-editable/EditableTable'\nexport {default as SelectableTable} from './table-selectable/SelectableTable'\nexport {default as SimpleForm} from './forms/simple-form'\nexport {default as RsvpForm} from './forms/rsvp-form';\nexport {default as RadioList} from './inputs/radio-list'\nexport {default as CheckboxList} from './inputs/checkbox-list'\nexport {default as ActionDropdown} from './inputs/action-dropdown'\nexport {default as CountryInput} from './inputs/country-input'\nexport {default as LanguageInput} from './inputs/language-input'\nexport {default as FreeMultiTextInput} from \"./inputs/free-multi-text-input\";\nexport {default as Exclusive} from \"./exclusive-wrapper\";\nexport {default as Clock} from \"./clock\";\nexport {default as CircleButton} from \"./circle-button\";\nexport {default as VideoStream} from \"./video-stream\";\nexport {default as AttendanceTracker} from \"./attendance-tracker\";\nexport {default as AccessLevelsInput} from './inputs/access-levels-input';\nexport {default as RegistrationCompanyInput} from './inputs/registration-company-input';\nexport {default as TicketTypesInput} from './inputs/ticket-types-input.js'\nexport {default as SponsoredProjectInput} from './inputs/sponsored-project-input.js'\nexport {default as SteppedSelect} from './inputs/stepped-select/index.jsx'\nexport {default as SummitDaysSelect} from './inputs/summit-days-select'\nexport {default as SummitVenuesSelect} from './inputs/summit-venues-select'\nexport {default as BulkActionsSelector} from './bulk-actions-selector'\nexport {default as ScheduleBuilderView} from './schedule-builder-view'\n\n// this 5 includes 3rd party deps\n// export {default as ExtraQuestionsForm } from './extra-questions/index.js';\n// export {default as GMap} from './google-map';\n// export {default as TextEditorV2} from './inputs/editor-input-v2'\n// export {default as TextEditorV3} from './inputs/editor-input-v3'\n// export {default as CompanyInputV2} from './inputs/company-input-v2.js'\n\nlet language = getCurrentUserLanguage();\n\n// language would be something like es-ES or es_ES\n// However we store our files with format es.json or en.json\n// therefore retrieve only the first 2 digits\n\nif (language.length > 2) {\n language = language.split(\"-\")[0];\n language = language.split(\"_\")[0];\n}\n\ntry {\n T.setTexts(require(`../i18n/${language}.json`));\n} catch (e) {\n T.setTexts(require(`../i18n/en.json`));\n}\n"],"names":["root","factory","exports","module","define","amd","this","show","relative","color","size","children","styles","display","width","height","position","zIndex","margin","cursor","backgroundColor","top","left","styleSpinner","fontSize","styleSpinnerContainer","textAlign","right","bottom","styleBackground","background","opacity","className","style","AttendanceTracker","React","async","apiBaseUrl","summitId","sourceId","sourceName","props","location","getLocation","accessToken","getAccessToken","http","send","access_token","type","source_id","end","console","log","e","navigator","sendBeacon","window","encodeURIComponent","href","componentDidMount","trackEnter","onBeforeUnload","addEventListener","componentWillUnmount","trackLeave","removeEventListener","render","propTypes","PropTypes","isRequired","defaultProps","ScheduleAdminsBulkActionsSelector","onPerformBulkAction","selectedBulkAction","actionTypeSelect","value","onSelectedBulkAction","onSelectAll","bulkOptions","onClick","ref","select","T","map","option","idx","key","label","bind","title","CircleButton","event","isScheduled","nowUtc","addToSchedule","removeFromSchedule","enterClick","alwaysShowEnter","isLiveNow","hasEnded","end_date","start_date","isLive","buttonClass","iconClass","handleClick","ev","action","preventDefault","stopPropagation","Clock","constructor","super","response","localBefore","localAfter","moment","unix","timestamp","_isMounted","setState","onTick","timeServiceUrl","getTimeServiceUrl","fetch","then","status","json","Promise","reject","catch","err","state","fragmentParser","FragmentParser","interval","manualSet","onVisibilityChange","timezone","now","nowQS","getParam","momentQS","isValid","valueOf","getServerTime","processServerTimeResponse","processServerTimeResponseError","setInterval","tick","document","visibilityState","clearInterval","marginTop","format","Exclusive","showField","name","exclusiveSections","EXCLUSIVE_SECTIONS","includes","require","QuestionType_Checkbox","QuestionType_RadioButton","InputAdapter","input","meta","question","isDisabled","rest","containerClassName","toSlug","ariaLabelledBy","id","disabled","required","onChange","placeholder","RadioButtonListAdapter","overrideCSS","DropdownAdapter","classNamePrefix","CheckBoxListAdapter","maxValues","question_answers","target","length","getValidator","undefined","ExtraQuestionsForm","extraQuestions","userAnswers","onAnswerChanges","questionContainerClassName","questionLabelContainerClassName","questionControlContainerClassName","readOnly","debug","buttonText","RequiredErrorMessage","ValidationErrorClassName","allowExtraQuestionsEdit","onError","shouldScroll2FirstError","submit","questionRefs","useRef","formRef","answers","setAnswers","useState","useEffect","formatUserAnswers","useImperativeHandle","doSubmit","current","dispatchEvent","Event","cancelable","bubbles","scroll2QuestionById","questionId","scrollToQuestion","getQuestionRef","qs","QuestionsSet","formatAnswers","Condition","when","rule","Field","subscription","checkVisibility","checkRule","Error","error","touched","submitFailed","values","answer_values","Array","isArray","res","answer_values_operator","forEach","v","parseInt","toString","ruleResult","visibility","visibility_condition","sub_question","getLabel","q","nonBreakingSpace","String","fromCharCode","replace","questions2Exclude","labelText","mandatory","dangerouslySetInnerHTML","__html","htmlFor","renderQuestion","questionValues","slug","hasOwnProperty","answer","isAnswered","Fragment","validate","component","sub_question_rules","r","options","val","max_selected_values","validateQuestion","errors","isVisible","Object","keys","getErrorFields","invalidFormFields","errorFields","push","getFirstError","sort","a","b","order","focus","scrollIntoView","behavior","block","Form","onSubmit","initialValues","handleSubmit","form","submitting","pristine","getRegisteredFields","filter","field","getFieldState","invalid","firstError","scrollToFirstError","JSON","stringify","RsvpForm","questions","question_id","handleChange","hasErrors","find","class_name","simple","is_country_selector","isMulti","is_multiselect","empty_string","is_mandatory","SimpleForm","entity","componentDidUpdate","prevProps","prevState","snapshot","scrollToError","shallowEqual","isEmpty","checked","createField","fields","f","originalHash","hash","convertToHash","strHash","params","substr","toLowerCase","split","param","trim","clearParams","getParams","deleteParam","deleteParams","setParam","serialize","FreeTextSearch","onSearchClick","onClearClick","onKeyPressed","preventEvents","doFiltering","term","onSearch","keyCode","which","onKeyPress","AccessLevelsInput","getAccessLevels","getOptionValue","getOptionLabel","accessLevel","callback","defaultOptions","resolve","queryAccessLevels","multi","has_error","loadOptions","m","ActionDropdown","actionLabel","smallDdl","smallBtn","theValue","opt","isClearable","queryFunction","queryFn","queryAttendees","_value","_setValue","attendee","_getOptionValue","first_name","last_name","_getOptionLabel","CheckboxList","otherValue","op","otherChecked","handleOtherCBChange","optionValues","theVal","isNaN","inline","allowOther","paddingLeft","marginLeft","float","CompanyInput","handleNew","getCompanies","onCreate","newValue","extraOptions","queryCompanies","newOptions","c","allowCreate","AsyncComponent","AsyncCreatableSelect","AsyncSelect","onCreateOption","CountryDropdown","setOptions","abortController","AbortController","getCountryList","signal","abort","countryList","iso_code","CountryInput","DateTimePicker","isValidDate","date","currentDate","selectedDate","validation","after","before","isBefore","isSameOrBefore","isAfter","isSameOrAfter","afterDate","subtract","beforeDate","inputProps","inputDisabled","dateFormat","timeFormat","time","autoComplete","Dropdown","selection","clearable","selectClassName","selectStyles","menu","formatOptionLabel","data","TextEditor","RichTextEditor","getTextAlignClassName","getTextAlignStyles","default","editorValue","createEmptyValue","currentValue","getDerivedStateFromProps","newEditorValue","setContentFromString","getTextAlignBlockMetadata","customBlockFn","oldEditorValue","getEditorState","getCurrentContent","stringValue","blockStyleFn","maxLength","charCountLeft","EventInput","getEvents","summit","onlyPublished","queryEvents","FreeMultiTextInput","inputValue","handleInputChange","handleKeyDown","limit","components","DropdownIndicator","menuContainerStyle","onInputChange","onInputKeyDown","GroupInput","getGroups","queryGroups","OptionGroup","i","GroupedDropdown","LanguageInput","shouldUseId","getLanguageList","languageList","l","MemberInput","getMembers","member","queryMembers","OperatorInput","customStyle","operatorValue","setOperatorValue","setInputValue","inputValueBetween","setInputValueBetween","ddlStyles","setDDLStyles","control","provided","hasError","setHasError","evt","onlyDigits","operator","justifyContent","alignItems","eventValue","OrganizationInput","getOrganizations","queryOrganizations","org","PromocodeInput","perPage","extraFilters","code","queryPromocodes","DEFAULT_PAGE_SIZE","RadioList","description","NullValue","RegistrationCompanyInput","tabSelectsValue","createLabel","options2Show","classNamPrefix","_","isNullValue","inputId","queryRegistrationCompanies","newOption","formatCreateLabel","SpeakerInput","getSpeakers","speakerId","history","querySpeakers","speaker","MultiValueLabel","s","querySponsors","company","sponsorship","SponsoredProjectInput","getSponsoredProjects","querySponsoredProjects","currentOptionKey","findIndex","valueLabel","onClickMinus","onClickPlus","days","onDayChanged","selectedOption","SummitInput","getSummits","querySummits","venues","onVenueChanged","parsedValue","optionRenderer","TagInput","tagValue","t","tag","getTags","nextValue","newTag","queryTags","orderedTags","__isNew__","Input","container_class_name","node","defaultValue","TextArea","Math","max","isBackSpace","TicketTypesInput","getTicketTypes","ticketType","version","optionsLimit","filters","audience","queryTicketTypes","Icon","filetype","Dropzone","DropzoneJS","dropzoneRef","files","onUploadComplete","getDjsConfig","defaults","url","config","postUrl","djsConfig","extend","accept","file","done","md5","getMD5","fileSize","message","startsWith","AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR","initLogOut","maxFiles","uploadCount","autoDiscover","eventHandlers","drop","info","dropzoneNode","dropzone","setupEvents","getActiveFiles","queueDestroy","destroyInterval","destroy","djsConfigObj","postUrlConfigObj","icons","showFiletypeIcon","iconFiletypes","eventHandler","prototype","call","on","fileInFiles","splice","progress","bytesSent","previewElement","elem","querySelectorAll","xhr","formData","setRequestHeader","append","_this","dropzoneOnLoad","onload","uploadResponse","parse","responseText","off","UploadInputV2","mediaType","allowed_extensions","ext","join","max_size","onRemove","canAdd","timeOut","parallelChunkUploads","getAllowedExtensions","getMaxSize","allowedExt","getDefaultAllowedExtensions","maxSize","getDefaultMaxSize","canUpload","removedfile","djsConfigSet","paramName","maxFilesize","timeout","chunking","retryChunks","addRemoveLinks","acceptedFiles","componentConfig","media_type","media_upload","canDelete","getDropzone","src","private_url","public_url","filename","previewSrc","pop","path","substring","alt","placeholderSrc","file_icon","handleRemove","handleUpload","handleError","showRemove","setShowRemove","logoPreview","setLogoPreview","preview","logoPreviewTmp","fileName","test","fileHasPreview","pdf_icon","mov_icon","mp4_icon","csv_icon","getPreviewIcon","onDrop","fileRejections","onMouseEnter","onMouseLeave","isCancelled","imgSrc","setImgSrc","customClass","setCustomClass","img","Image","onerror","replaceNewLine","DraggableItemTypes","UNSCHEDULEEVENT","SCHEDULEEVENT","TBALocation","SlotSizeOptions","PixelsPerMinute","step","initialTop","initialHeight","minHeight","maxHeight","canResize","allowResize","allowDrag","onResized","onUnPublishEvent","onEditEvent","onClickSelected","selectedPublishedEvents","onMoveEvent","collected","drag","useDrag","item","is_published","duration","collect","monitor","isDragging","canDrag","static","resizeInfo","setResizeInfo","resizing","lastYPos","setSize","isSelected","canEdit","isResizable","popoverHoverFocus","Popover","onMouseMove","newYPos","pageY","deltaY","steps","round","abs","sign","newHeight","newTop","maxHeightTmp","onMouseUp","onMouseDown","getAttribute","box","getBoundingClientRect","clientY","OverlayTrigger","trigger","placement","overlay","eventTitleBlock","TimeSlot","timeLabel","TimeSlotContainer","currentDay","currentSummit","events","timeSlot","pixelsPerMinute","canDropEvent","onDroppedEvent","divId","collectedProps","useDrop","isOver","canDrop","SummitEvent","canMove","placeHolderStyle","minutesContainers","container_height","renderMinutesContainer","listRef","prevIntervalRef","timeSlotsList","setTimeSlotsList","newScrollTop","setNewScrollTop","scheduleEventContainer","scrollTop","slotChangeRatio","createSlots","startTime","endTime","onScheduleEvent","eventId","getBoundingBox","filteredEvents","minutes","floor","startDateTime","time_zone","add","endDateTime","auxEvent","auxEventStartDateTime","tz","auxEventEndDateTime","shift","getMaxHeight","ReactDOM","calculateInitialTop","eventStartDateTime","utc","dayStartDateTime","diff","calculateInitialHeight","tmpList","startTimeTZ","endTimeTZ","slot","clone","last_edited","StyleSheet","create","header","headlineWrapper","flexDirection","headline","logo","marginRight","subtitle","padding","textTransform","eventList","overflow","eventWrapper","border","locationWrapper","marginBottom","fontWeight","footer","leftCol","flex","maxWidth","speakers","trackWrapper","rightCol","tagsWrapper","flexWrap","borderRadius","SchedulePrintView","imgData","setImgData","sortedEvents","venue","locations","summitStart","epochToMomentTimeZone","time_zone_id","summitEnd","_imgData","convertSVGtoImg","getPngLogo","Document","Page","View","Text","eventDate","eventStartTime","eventEndTime","venueCount","loc","locationStr","getEventLocation","start_showing_venues_date","eventColorStyle","eventColor","borderLeft","wrap","track","moderator","speakerTags","getEventHosts","sp","tags","downloadPdf","setDownloadPdf","PDFDownloadLink","blob","loading","trackSpaceTime","scheduleEvents","selectedEvents","currentVenue","slotSize","hideBulkSelect","useMemo","currentLocation","summitLocalStartDate","summitLocalEndDate","currentAuxDay","allowedDays","location_id","allowed_timeframes","at","day","getDaysOptions","allowedLocationIds","st","isNotVenue","isAllowed","rooms","subOption","getVenuesOptions","slotSizeOptions","open","close","summitTZ","allowedTimeFrame","tf","parseLocationHour","opening_hour","closing_hour","getTimeframe","onSlotSizeChange","showPrint","customBulkOptions","onMoveSingleEvent","Panel","theId","theClass","AUTH_ERROR_MISSING_AUTH_INFO","AUTH_ERROR_MISSING_REFRESH_TOKEN","AUTH_ERROR_ACCESS_TOKEN_EXPIRED","AUTH_ERROR_LOCK_ACQUIRE_ERROR","AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR","Lock","SuperTokensLock","GET_TOKEN_SILENTLY_LOCK_KEY","RESPONSE_TYPE_CODE","AUTH_INFO","ID_TOKEN","createNonce","len","possible","nonce","charAt","random","processRefreshToken","flow","refreshToken","useOAuth2RefreshToken","clearAuthInfo","fn","maxRetries","baseDelayMs","attempt","delay","pow","setTimeout","retryWithBackoff","refreshAccessToken","expires_in","refresh_token","id_token","storeAuthInfo","_getAccessToken","authInfo","getAuthInfo","expiresIn","accessTokenUpdatedAt","getOAuth2Flow","timeElapsedSecs","locks","request","lock","retryPromise","acquireLock","releaseLock","baseUrl","getOAuth2IDPBaseUrl","oauth2ClientId","getOAuth2ClientId","payload","encodeURI","controller","timeoutId","method","headers","body","networkError","clearTimeout","ok","statusText","setSessionClearingState","parseError","new_refresh_token","idToken","formerAuthInfo","Date","Cookies","secure","sameSite","putOnLocalStorage","getFromLocalStorage","removeFromLocalStorage","getIdToken","OAUTH2_CLIENT_ID","OAUTH2_FLOW","Boolean","OAUTH2_USE_REFRESH_TOKEN","IDP_BASE_URL","getCurrentLocation","URI","postLogOutUri","getOrigin","queryParams","id_token_hint","query","getLogoutUrl","SimpleLinkList","getOptions","handleLink","filterOption","getNewOptionData","isValidNewOption","actions","search","optionLabel","selectValue","selectOptions","labelKey","optionFound","onCreateTag","candidate","allowDuplicates","columns","disabledAdd","valueKey","tableOptions","delete","edit","custom","itemA","sortCol","itemB","SummitDropdown","summitValue","summits","actionClass","summitOptions","bigClass","EditableTableHeading","is_edit","shouldUseTextArea","EditableActionsTableCell","is_editing","onDelete","onSave","save","onEdit","onCancel","cancel","EditableTableRow","even","role","EditableTable","rows","new_row","editRow","saveRow","deleteClick","onChangeCell","editRowCancel","saveNewRow","handleNewChange","onChangeNewCell","row","editing_row","Swal","text","showCancelButton","confirmButtonColor","confirmButtonText","result","rowIdx","tableClass","textArea","col","colWidth","warn","cells","columnKey","createRow","addNew","cell_value","createNewRow","Tooltip","delayShow","SelectableTableHeading","handleSort","getSortClass","sortable","sortDir","onSort","columnIndex","sortFunc","SelectableTableRow","handleEdit","handleSelect","shouldDisplayAction","onSelected","rowClass","SelectableActionsTableCell","handleAction","tooltip","icon","getSortDir","SelectableTable","disableSelectAll","onSelectedAll","selectedAll","actionsHeader","SortableTableHeading","SortableActionsTableCell","SortableTableRow","index","moveCard","dropItem","findRow","originalIndex","refRow","handlerId","getHandlerId","hover","dragIndex","hoverIndex","hoverBoundingRect","hoverMiddleY","hoverClientY","getClientOffset","y","_item","droppedId","didDrop","SortableTable","dropCallback","orderField","idField","setRows","newRow","setNewRow","renderRow","moveRow","onDropItem","TableCell","sortRows","rows2Sort","x","useCallback","indexOf","prevRows","update","$splice","newOrder","sortedRows","shouldRenderNewRow","DndProvider","backend","HTML5Backend","renderNewRow","newRowTmp","TableHeading","TableRow","ActionsTableCell","colStyles","YoutubeVideoComponent","videoSrcURL","videoTitle","frameBorder","allow","allowFullScreen","LiveVideoPlayer","player","videojs","videoNode","dispose","layout","isLiveVideo","match","checkLiveVideo","videoJsOptions","autoplay","controls","fluid","sources","_event","_summit","getId","isPublished","getMinutesDuration","siblings","calculateNewDates","isValidEndDate","endDate","_endDate","summitEndDate","startDate","isValidStartDate","_startDate","durationInMinutes","summitStartDate","isValidTitle","createAction","fetchErrorHandler","msg","fetchResponseHandler","escapeFilterValue","crypto","msCrypto","chunkSize","spark","SparkMD5","fileReader","FileReader","readNextChunk","slice","readAsArrayBuffer","atime","hour","parsedHour","origin","buildAPIBaseUrl","relativeUrl","API_BASE_URL","localStorage","setItem","removeIt","getItem","removeItem","clearing_session_state","getCurrentUserLanguage","language","languages","userLanguage","firstNode","getElementById","scrollTo","obj","curtop","offsetParent","offsetTop","findElementPos","object1","object2","keys1","keys2","cb","maxNumberOfRetries","TIMEINTERVALSINCE1970_API_URL","process","env","summitVenueCount","summitShowLocDate","shouldShowVenues","locationName","hosts","createElement","crossOrigin","loadImage","svgUrl","newWidth","naturalHeight","naturalWidth","canvas","getContext","drawImage","toDataURL","callDelay","_fetchPublic","endpoint","_fetch","addQuery","per_page","excludedIds","eventTypeClassName","ComboBoxQuestionType","CheckBoxListQuestionType","RadioButtonListQuestionType","AllowedMultipleValueQuestionType","AnswerValuesOperator_And","VisibilityCondition_Equal","questionByName","questionById","rules","_parseQuestion","av","Number","isInteger","initialCondition","parentQuestionAnswer","_getAnswerFor","parent_question_id","answerValue","_answerContains","class","_hasValue","_allowsValues","_allowsValue","ruleId","parent_rules","_isSubQuestionVisible","_isAnswered","_checkQuestion","userAnswer","originalAnswers","defaultVal","is_default","ansVal","res1","_formatQuestionAnswer","_parseQuestions","webpackContext","req","webpackContextResolve","__webpack_require__","o","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","defineProperty","enumerable","get","prop","Symbol","toStringTag"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"components/index.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/./src/components/ajaxloader/index.js","webpack://openstack-uicore-foundation/./src/components/attendance-tracker.js","webpack://openstack-uicore-foundation/./src/components/bulk-actions-selector/index.js","webpack://openstack-uicore-foundation/./src/components/circle-button/index.module.scss","webpack://openstack-uicore-foundation/./src/components/circle-button/index.js","webpack://openstack-uicore-foundation/./src/components/clock.js","webpack://openstack-uicore-foundation/./src/components/exclusive-wrapper.js","webpack://openstack-uicore-foundation/external commonjs \"react-final-form\"","webpack://openstack-uicore-foundation/./src/components/extra-questions/constants.js","webpack://openstack-uicore-foundation/./src/components/extra-questions/index.js","webpack://openstack-uicore-foundation/./src/components/forms/rsvp-form.js","webpack://openstack-uicore-foundation/./src/components/forms/simple-form.js","webpack://openstack-uicore-foundation/./src/components/fragment-parser.js","webpack://openstack-uicore-foundation/./src/components/free-text-search/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/access-levels-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/action-dropdown/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/attendee-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/checkbox-list.js","webpack://openstack-uicore-foundation/./src/components/inputs/company-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/country-dropdown.js","webpack://openstack-uicore-foundation/./src/components/inputs/country-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-datetime\"","webpack://openstack-uicore-foundation/./src/components/inputs/datetimepicker/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/dropdown.js","webpack://openstack-uicore-foundation/external commonjs \"extend\"","webpack://openstack-uicore-foundation/external commonjs \"dropzone/dist/dropzone.css\"","webpack://openstack-uicore-foundation/./src/components/inputs/dropzone/icon.js","webpack://openstack-uicore-foundation/./src/components/inputs/dropzone/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/editor-input/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/event-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/Creatable\"","webpack://openstack-uicore-foundation/./src/components/inputs/free-multi-text-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/group-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/grouped-dropdown/OptionGroup.js","webpack://openstack-uicore-foundation/./src/components/inputs/grouped-dropdown/index.js","webpack://openstack-uicore-foundation/./src/components/inputs/language-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/member-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/operator-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/organization-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/promocode-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/radio-list.js","webpack://openstack-uicore-foundation/./src/components/inputs/registration-company-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/components\"","webpack://openstack-uicore-foundation/./src/components/inputs/speaker-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/sponsor-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/sponsored-project-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/stepped-select/index.module.less?b434","webpack://openstack-uicore-foundation/./src/components/inputs/stepped-select/index.jsx","webpack://openstack-uicore-foundation/./src/components/inputs/summit-days-select.js","webpack://openstack-uicore-foundation/./src/components/inputs/summit-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/summit-venues-select.js","webpack://openstack-uicore-foundation/./src/components/inputs/tag-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/text-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/textarea-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/ticket-types-input.js","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input-v2/index.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material\"","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input-v3/dropzone-v3.js","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input-v3/index.js","webpack://openstack-uicore-foundation/external commonjs \"react-dropzone\"","webpack://openstack-uicore-foundation/./src/components/inputs/upload-input/index.js","webpack://openstack-uicore-foundation/./src/components/progressive-img/index.module.scss","webpack://openstack-uicore-foundation/./src/components/progressive-img/index.js","webpack://openstack-uicore-foundation/./src/components/raw-html/index.js","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/constants.js","webpack://openstack-uicore-foundation/external commonjs \"react-bootstrap\"","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/schedule-event.js","webpack://openstack-uicore-foundation/external commonjs \"react-dom\"","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/schedule-event-list.js","webpack://openstack-uicore-foundation/external commonjs \"@react-pdf/renderer\"","webpack://openstack-uicore-foundation/./src/components/schedule-print/schedule-print-view.js","webpack://openstack-uicore-foundation/./src/components/schedule-print/styles.module.scss","webpack://openstack-uicore-foundation/./src/components/schedule-print/schedule-print-button.js","webpack://openstack-uicore-foundation/./src/components/schedule-builder-view/index.js","webpack://openstack-uicore-foundation/./src/components/sections/panel.js","webpack://openstack-uicore-foundation/./src/components/security/constants.js","webpack://openstack-uicore-foundation/external commonjs \"browser-tabs-lock\"","webpack://openstack-uicore-foundation/external commonjs \"js-cookie\"","webpack://openstack-uicore-foundation/./src/components/security/methods.js","webpack://openstack-uicore-foundation/./src/components/simple-link-list/index.js","webpack://openstack-uicore-foundation/./src/components/summit-dropdown/index.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-editable/EditableTable.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-selectable/SelectableTable.js","webpack://openstack-uicore-foundation/external commonjs \"immutability-helper\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd-html5-backend\"","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableHeading.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTableRow.js","webpack://openstack-uicore-foundation/./src/components/table-sortable/SortableTable.js","webpack://openstack-uicore-foundation/./src/components/table/TableHeading.js","webpack://openstack-uicore-foundation/./src/components/table/TableRow.js","webpack://openstack-uicore-foundation/./src/components/table/ActionsTableCell.js","webpack://openstack-uicore-foundation/./src/components/table/Table.js","webpack://openstack-uicore-foundation/./src/components/table/TableCell.js","webpack://openstack-uicore-foundation/external commonjs \"video.js\"","webpack://openstack-uicore-foundation/external commonjs \"video.js/dist/video-js.css\"","webpack://openstack-uicore-foundation/./src/components/video-stream.js","webpack://openstack-uicore-foundation/./src/models/summit-event.js","webpack://openstack-uicore-foundation/./src/utils/actions.js","webpack://openstack-uicore-foundation/external commonjs \"spark-md5\"","webpack://openstack-uicore-foundation/external commonjs \"crypto-js/sha256\"","webpack://openstack-uicore-foundation/external commonjs \"crypto-js/enc-base64url\"","webpack://openstack-uicore-foundation/external commonjs \"crypto-js/enc-hex\"","webpack://openstack-uicore-foundation/./src/utils/crypto.js","webpack://openstack-uicore-foundation/./src/utils/methods.js","webpack://openstack-uicore-foundation/./src/utils/query-actions.js","webpack://openstack-uicore-foundation/./src/utils/questions-set.js","webpack://openstack-uicore-foundation/./src/i18n/ sync ^\\.\\/.*\\.json$","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\"","webpack://openstack-uicore-foundation/external commonjs \"dropzone\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"idtoken-verifier\"","webpack://openstack-uicore-foundation/external commonjs \"lodash\"","webpack://openstack-uicore-foundation/external commonjs \"moment-timezone\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd\"","webpack://openstack-uicore-foundation/external commonjs \"react-rte\"","webpack://openstack-uicore-foundation/external commonjs \"react-select\"","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/Async\"","webpack://openstack-uicore-foundation/external commonjs \"react-select/lib/AsyncCreatable\"","webpack://openstack-uicore-foundation/external commonjs \"react-tooltip\"","webpack://openstack-uicore-foundation/external commonjs \"superagent/lib/client\"","webpack://openstack-uicore-foundation/external commonjs \"sweetalert2\"","webpack://openstack-uicore-foundation/external commonjs \"urijs\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"i18n-react\"","webpack://openstack-uicore-foundation/./src/components/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nconst AjaxLoader = ({\n show,\n relative,\n color,\n size,\n children,\n }) => {\n\n let styles = {\n display: show ? 'block' : 'none',\n width: '100%',\n height: '100%',\n position: relative ? 'absolute' : 'fixed',\n zIndex: 10000000,\n margin: 'auto',\n cursor: 'wait',\n backgroundColor: 'rgba(0,0,0,0.2)',\n top: 0,\n left: 0\n };\n\n let styleSpinner = {\n fontSize: size + 'px',\n color: 'black',\n };\n\n let styleSpinnerContainer = {\n width: '250px',\n height: '75px',\n textAlign: 'center',\n position: relative ? 'relative' : 'fixed',\n top: relative ? '50%' : '0',\n left: relative ? '' : '0',\n right: '0',\n bottom: '0',\n margin: 'auto',\n zIndex: 10,\n color: '#ffffff'\n };\n\n let styleBackground = {\n background: color,\n opacity: '0.8',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0\n };\n\n return (\n <div className=\"ajax-loader-container\" style={styles}>\n <div style={styleSpinnerContainer}>\n <i className=\"fa fa-spinner fa-spin\" style={styleSpinner}></i>\n <div>\n {children}\n </div>\n </div>\n <div style={styleBackground} className=\"loader-background\"></div>\n </div>\n );\n};\n\nexport default AjaxLoader;\n","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport http from 'superagent/lib/client';\nimport {getAccessToken} from './security/methods';\n\n// SCOPES NEEDED\n// %s/me/summits/events/leave\n// %s/me/summits/events/enter\n\nclass AttendanceTracker extends React.Component {\n\n componentDidMount() {\n const {trackEnter, onBeforeUnload} = this;\n\n // track enter\n trackEnter();\n\n if (typeof window !== 'undefined') {\n window.addEventListener(\"beforeunload\", onBeforeUnload);\n }\n }\n\n componentWillUnmount() {\n const {trackLeave, onBeforeUnload} = this;\n\n // track leave\n trackLeave();\n\n if (typeof window !== 'undefined') {\n window.removeEventListener(\"beforeunload\", onBeforeUnload);\n }\n }\n\n trackEnter = async () => {\n const {apiBaseUrl, summitId, sourceId, sourceName} = this.props;\n const location = this.getLocation();\n try{\n const accessToken = await getAccessToken();\n http.put(`${apiBaseUrl}/api/v1/summits/${summitId}/metrics/enter`)\n .send({access_token: accessToken, type: sourceName, source_id: sourceId, location: location})\n .end(() => console.log('ENTER PAGE'));\n }\n catch (e){\n console.log(e);\n }\n };\n\n trackLeave = async () => {\n const {apiBaseUrl, summitId, sourceId, sourceName} = this.props;\n const location = this.getLocation();\n try {\n const accessToken = await getAccessToken();\n\n http.post(`${apiBaseUrl}/api/v1/summits/${summitId}/metrics/leave`)\n .send({access_token: accessToken, type: sourceName, source_id: sourceId, location: location})\n .end(() => console.log('LEFT PAGE'));\n }\n catch (e){\n console.log(e);\n }\n };\n\n onBeforeUnload = async () => {\n const {apiBaseUrl, summitId, sourceId, sourceName} = this.props;\n const location = this.getLocation();\n try {\n const accessToken = await getAccessToken();\n navigator.sendBeacon(\n `${apiBaseUrl}/api/v1/summits/${summitId}/metrics/leave?access_token=${accessToken}&type=${sourceName}&source_id=${sourceId}&location=${location}`, {});\n return undefined;\n }\n catch (e){\n console.log(e);\n }\n };\n\n getLocation = () => {\n if (typeof window !== 'undefined') {\n return encodeURIComponent(window.location.href);\n }\n return '';\n };\n\n render() {\n return null;\n }\n}\n\nAttendanceTracker.propTypes = {\n sourceName: PropTypes.string,\n sourceId: PropTypes.number,\n summitId: PropTypes.number.isRequired,\n apiBaseUrl: PropTypes.string.isRequired\n};\n\nAttendanceTracker.defaultProps = {\n sourceId: 0,\n sourceName: 'GENERAL'\n};\n\nexport default AttendanceTracker;\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport T from \"i18n-react/dist/i18n-react\";\nimport './styles.less';\nclass ScheduleAdminsBulkActionsSelector extends React.Component {\n\n onPerformBulkAction(){\n let selectedBulkAction = this.actionTypeSelect.value;\n if(selectedBulkAction === '') return;\n this.props.onSelectedBulkAction(selectedBulkAction);\n }\n\n render(){\n let { onSelectAll, bulkOptions, show } = this.props;\n return (\n <div className=\"bulk-actions-selector-container\">\n {show &&\n <div className=\"row\">\n <div className=\"col-md-8\">\n <input type=\"checkbox\" onClick={onSelectAll}/>\n <select ref={(select) => { this.actionTypeSelect = select; }}>\n <option value=\"\">{T.translate(\"published_bulk_actions_selector.options.default\")}</option>\n {\n bulkOptions.map((option, idx) => (\n <option key={idx} value={option.value}>{option.label}</option>\n ))\n }\n </select>\n </div>\n <div className=\"col-md-4\">\n <button onClick={this.onPerformBulkAction.bind(this)} title={ T.translate(\"published_bulk_actions_selector.titles.go\")} className=\"btn btn-default btn-sm\">\n <i className=\"fa fa-play\"> {T.translate(\"published_bulk_actions_selector.buttons.go\")}</i>\n </button>\n </div>\n </div>\n }\n </div>\n )\n }\n}\n\nexport default ScheduleAdminsBulkActionsSelector;\n","// extracted by mini-css-extract-plugin\nexport default {\"circleButton\":\"pTjbvR2PI3JIAfGGYR5C\",\"add\":\"BnU6_vcWc8sasL8roBPA\",\"added\":\"yREg1belHCLDAYYfAg77\",\"enter\":\"mFp_9X3SzjgPNXRSXiFR\"};","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './index.module.scss';\n\nconst isLive = (event, nowUtc) => {\n const hasEnded = nowUtc > event.end_date;\n const hasStarted = (event.start_date - nowUtc) < 1;\n return hasStarted && !hasEnded;\n};\n\nconst CircleButton = ({event, isScheduled, nowUtc, addToSchedule, removeFromSchedule, enterClick, alwaysShowEnter}) => {\n\n const isLiveNow = isLive(event, nowUtc);\n let buttonClass = null;\n let iconClass = null;\n let onClick = null;\n const handleClick = (ev, action) => {\n ev.preventDefault();\n ev.stopPropagation();\n action(event);\n };\n\n\n if (isLiveNow || alwaysShowEnter) {\n buttonClass = `${styles.enter} enter`;\n iconClass = 'fa-sign-in';\n onClick = ev => handleClick(ev, enterClick);\n } else if (removeFromSchedule && addToSchedule && isScheduled) {\n buttonClass = `${styles.added} added`;\n iconClass = 'fa-check';\n onClick = ev => handleClick(ev, removeFromSchedule);\n } else if (removeFromSchedule && addToSchedule) {\n buttonClass = `${styles.add} add`;\n iconClass = 'fa-plus';\n onClick = ev => handleClick(ev, addToSchedule);\n }\n\n if (!onClick) return null;\n\n\n return (\n <button className={`${styles.circleButton} ${buttonClass}`} onClick={onClick}>\n <i className={`fa ${iconClass}`} aria-hidden=\"true\" />\n </button>\n );\n};\n\nCircleButton.propTypes = {\n event: PropTypes.object.isRequired,\n nowUtc: PropTypes.number.isRequired,\n isScheduled: PropTypes.bool.isRequired,\n enterClick: PropTypes.func.isRequired,\n addToSchedule: PropTypes.func,\n removeFromSchedule: PropTypes.func,\n alwaysShowEnter: PropTypes.bool,\n};\n\nCircleButton.defaultProps = {\n addToSchedule: null,\n removeFromSchedule: null,\n alwaysShowEnter: false\n};\n\nexport default CircleButton;\n","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport React from 'react';\nimport moment from \"moment-timezone\";\nimport FragmentParser from \"./fragment-parser\";\nimport {getTimeServiceUrl} from '../utils/methods';\n\n/**\n * class Clock\n */\nclass Clock extends React.Component {\n\n constructor(props) {\n super(props);\n this.fragmentParser = new FragmentParser();\n this.interval = null;\n this.state = {\n timestamp: null,\n manualSet : false,\n }\n this._isMounted = false;\n this.onVisibilityChange = this.onVisibilityChange.bind(this);\n }\n\n /**\n * @param response\n * @param localBefore\n */\n processServerTimeResponse = (response, localBefore) => {\n const localAfter = moment().unix();\n let timestamp = localAfter;\n if (response) {\n timestamp = response.timestamp + (localAfter - localBefore);\n }\n if(this._isMounted) {\n console.log(`Clock::processServerTimeResponse setting timestamp ${timestamp}`)\n this.setState({timestamp});\n }\n if(this.props.onTick)\n this.props.onTick(timestamp);\n }\n\n processServerTimeResponseError = () => {\n const localAfter = moment().unix();\n let timestamp = localAfter;\n if(this._isMounted) {\n console.log(`Clock::processServerTimeResponseError setting timestamp ${timestamp}`)\n this.setState({timestamp});\n }\n if(this.props.onTick)\n this.props.onTick(timestamp);\n }\n\n componentDidMount() {\n this._isMounted = true;\n const {timezone = 'UTC', now} = this.props;\n const nowQS = this.fragmentParser.getParam('now');\n const momentQS = moment.tz(nowQS, 'YYYY-MM-DD,hh:mm:ss', timezone);\n let timestamp = null;\n let manualSet = false;\n if (momentQS.isValid()) {\n timestamp = momentQS.valueOf() / 1000;\n console.log(`Clock::componentDidMount nowQS ${nowQS} is valid setting timestamp ${timestamp}`);\n manualSet = true;\n } else if (now) {\n timestamp = now\n } else {\n const localBefore = moment().unix();\n this.getServerTime()\n .then((response) => this.processServerTimeResponse(response, localBefore))\n .catch(() => this.processServerTimeResponseError())\n }\n\n if(timestamp) {\n this.setState({timestamp, manualSet});\n if(this.props.onTick)\n this.props.onTick(timestamp);\n }\n\n this.interval = setInterval(this.tick, 1000);\n document.addEventListener(\"visibilitychange\", this.onVisibilityChange, false)\n }\n\n onVisibilityChange() {\n const visibilityState = document.visibilityState;\n const {manualSet} = this.state;\n if (visibilityState === \"visible\") {\n console.log(`Clock::onVisibilityChange manualSet ${manualSet}`)\n if(manualSet) return;\n const localBefore = moment().unix();\n this.getServerTime()\n .then((response) => this.processServerTimeResponse(response, localBefore))\n .catch(() => this.processServerTimeResponseError());\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n clearInterval(this.interval);\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange)\n this.interval = null;\n }\n\n getServerTime = () => {\n const timeServiceUrl = getTimeServiceUrl();\n return fetch(`${timeServiceUrl}`).then(async (response) => {\n if (response.status === 200) {\n return response.json();\n }\n return Promise.reject(null);\n })\n .catch(err => {\n console.log(err);\n return Promise.reject(err);\n });\n };\n\n tick = () => {\n const {timestamp} = this.state;\n if (timestamp !== null) {\n if(this.props.onTick)\n this.props.onTick(timestamp + 1);\n if(this._isMounted)\n this.setState({timestamp: timestamp + 1})\n }\n };\n\n // epoch utc time in seconds\n now = () => {\n return this.state.timestamp;\n };\n\n render() {\n const {display, timezone = 'UTC'} = this.props;\n const {timestamp} = this.state;\n\n if (!display || !timestamp) return null;\n\n return (\n <div style={{marginTop: '50px', textAlign: 'center', fontSize: '20px'}}>\n {moment.tz(timestamp * 1000, timezone).format('YYYY-MM-DD hh:mm:ss')}\n </div>\n );\n }\n\n}\n\nexport default Clock;\n","/**\n * Copyright 2019 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\n\n\nexport default class Exclusive extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.showField = this.showField.bind(this);\n }\n\n showField() {\n let {name} = this.props;\n let exclusiveSections = window.EXCLUSIVE_SECTIONS;\n\n return exclusiveSections ? exclusiveSections.includes(name) : false;\n }\n\n render() {\n let {children} = this.props;\n\n if (this.showField()) {\n return children;\n }\n\n return null;\n\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-final-form\");","export const QuestionType_Text = \"Text\";\nexport const QuestionType_TextArea = \"TextArea\";\nexport const QuestionType_Checkbox = \"CheckBox\";\nexport const QuestionType_RadioButtonList = \"RadioButtonList\";\nexport const QuestionType_ComboBox = \"ComboBox\";\nexport const QuestionType_CheckBoxList = \"CheckBoxList\";\nexport const QuestionType_CountryComboBox = \"CountryComboBox\";\nexport const QuestionType_RadioButton = \"RadioButton\";\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {Fragment, useEffect, useRef, useState, useImperativeHandle} from 'react';\nimport PropTypes from 'prop-types';\nimport Input from '../inputs/text-input'\nimport Dropdown from '../inputs/dropdown'\nimport RadioList from '../inputs/radio-list'\nimport CheckboxList from '../inputs/checkbox-list'\nimport QuestionsSet from '../../utils/questions-set';\nimport {Field, Form} from \"react-final-form\";\nimport {toSlug} from \"../../utils/methods\";\nimport {\n QuestionType_Checkbox,\n QuestionType_CheckBoxList,\n QuestionType_ComboBox,\n QuestionType_CountryComboBox,\n QuestionType_RadioButton,\n QuestionType_RadioButtonList,\n QuestionType_Text,\n QuestionType_TextArea\n} from \"./constants\";\n\nimport \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\";\nimport './index.scss';\n\nconst InputAdapter = ({ input, meta, question, className, isDisabled, isRequired, ...rest }) => {\n\n return (\n <Input\n {...input}\n {...rest}\n containerClassName={className}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n id={toSlug(question.name)}\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={input.onChange}\n placeholder={question.placeholder}\n />\n )\n}\n\nconst RadioButtonListAdapter = ({ input, meta, question, isDisabled, isRequired, ...rest }) => {\n\n return (\n <RadioList\n {...input}\n {...rest}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n id={toSlug(question.name)}\n overrideCSS={true}\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={input.onChange}\n />\n )};\n\nconst DropdownAdapter = ({ input, meta, question, isDisabled, isRequired, ...rest }) => {\n\n return (<Dropdown\n {...input}\n {...rest}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n id={toSlug(question.name)}\n overrideCSS={true}\n className=\"ddl-extra-questions-container\"\n classNamePrefix=\"ddl-extra-questions\"\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={input.onChange}\n />)\n}\n\nconst CheckBoxListAdapter = ({ input, meta, question, isDisabled, isRequired, maxValues, ...rest }) => {\n\n const shouldChange = (ev) => {\n const question_answers = ev.target.value;\n // if there's a max value of options checked and the value from the input is higher than the max, don't change the value\n if (maxValues > 0 && question_answers.length > maxValues) {\n return null\n }\n return input.onChange(ev)\n }\n return (\n <CheckboxList\n {...input}\n {...rest}\n id={toSlug(question.name)}\n name={toSlug(question.name)}\n ariaLabelledBy={`${toSlug(question.name)} label`}\n value={input.value}\n disabled={isDisabled}\n required={isRequired}\n onChange={shouldChange}\n />\n )\n}\n\nconst getValidator = isRequired =>\n isRequired ? value => (value ? undefined : \"Required\") : () => {};\n\nconst ExtraQuestionsForm = React.forwardRef(({\n extraQuestions,\n userAnswers,\n onAnswerChanges,\n className = 'questions-form',\n questionContainerClassName = 'question-container',\n questionLabelContainerClassName = 'question-label-container',\n questionControlContainerClassName= 'question-control-container',\n readOnly = false,\n debug = false,\n buttonText = 'Submit',\n RequiredErrorMessage = 'Required',\n ValidationErrorClassName = 'extra-question-error',\n allowExtraQuestionsEdit = true,\n onError = (e) => console.log('form errors: ', e),\n shouldScroll2FirstError = true\n }, ref) => {\n\n let submit = null;\n\n const questionRefs = useRef({});\n const formRef = useRef(null);\n const [answers, setAnswers] = useState({});\n\n useEffect(() => {\n formatUserAnswers();\n }, [extraQuestions])\n\n // @see https://beta.reactjs.org/reference/react/useImperativeHandle\n useImperativeHandle(ref, () => ({\n doSubmit() {\n formRef.current?.dispatchEvent(new Event(\"submit\", { cancelable: true, bubbles: true }));\n },\n scroll2QuestionById(questionId) {\n scrollToQuestion(questionId);\n }\n }));\n\n const getQuestionRef = (id) => {\n if (!questionRefs.current[id]) {\n questionRefs.current[id] = React.createRef();\n }\n return questionRefs.current[id];\n };\n\n const formatUserAnswers = () => {\n const qs = new QuestionsSet(extraQuestions, userAnswers);\n setAnswers(qs.formatAnswers());\n }\n\n const Condition = ({when, rule, children}) => (\n <Field name={when} subscription={{value: true}}>\n {({input: {value}}) =>\n checkVisibility(rule, checkRule(value, rule), children)\n }\n </Field>\n );\n\n const Error = ({ name }) => (\n <Field name={name} subscription={{ error: true, touched: true, submitFailed: true }}>\n {({ meta: { error, touched, submitFailed } }) =>\n error && (touched || submitFailed) ? <div className={ValidationErrorClassName}>{error}</div> : null\n }\n </Field>\n );\n\n const checkRule = (value, rule) => {\n let values = rule.answer_values;\n\n if (Array.isArray(value)) {\n if (!value.length) return false;\n let res = rule.answer_values_operator === \"And\";\n values.forEach((v) => {\n if (rule.answer_values_operator === \"And\") {\n res = res && value.includes(parseInt(v));\n } else {\n // Or\n res = res || value.includes(parseInt(v));\n }\n });\n return res;\n }\n return values.includes(value.toString());\n };\n\n const checkVisibility = (rule, ruleResult, children) => {\n if (rule.visibility === \"Visible\") {\n if (rule.visibility_condition === \"Equal\") {\n if (ruleResult) return children;\n delete questionRefs.current[rule.sub_question.id]\n return null;\n }\n // Non Equal\n if(!ruleResult){\n return children;\n }\n delete questionRefs.current[rule.sub_question.id]\n return null;\n }\n // not visible\n if (rule.visibility_condition === \"Equal\") {\n if (!ruleResult) return children;\n delete questionRefs.current[rule.sub_question.id]\n return null;\n }\n if (ruleResult) return children;\n delete questionRefs.current[rule.sub_question.id]\n return null;\n };\n\n const getLabel = (q) => {\n // Keep the last word and the required asterisk on the same line\n const nonBreakingSpace = String.fromCharCode(160); // equals to \n // replace line breaks and remove outer <p>\n const label = q?.label?.replace(/\\n/g, '<br />').replace(/<p>(.*)<\\/p>/gi, '$1');\n const questions2Exclude = [QuestionType_Checkbox, QuestionType_RadioButton]\n // Asterisk for mandatory questions only shown on label except for those questions\n // included on questions2Exclude\n const labelText = q.mandatory && !questions2Exclude.includes(q.type) ? `${label}${nonBreakingSpace}<b>*</b>` : label;\n return (<label dangerouslySetInnerHTML={{__html: labelText}} htmlFor={toSlug(q.name)} id={`${toSlug(q.name)} label`} />);\n }\n\n const isAnswered = (q, answers) => {\n const slug = toSlug(q.name);\n if(!answers.hasOwnProperty(slug)) return false;\n const answer = answers[slug];\n // check type\n if (Array.isArray(answer)) return answer.length > 0;\n if (typeof answer === 'string') return answer.length > 0;\n if (typeof answer === 'number') return answer > 0;\n if (typeof answer === 'boolean') return answer;\n return false;\n }\n\n const renderQuestion = (q) => {\n let questionValues = q.values;\n // disable field if edit isn't allowed and the questions is answered\n const isDisabled = !allowExtraQuestionsEdit && isAnswered(q, answers);\n // @see https://codesandbox.io/s/vg05y?file=/index.js\n if (q.type === QuestionType_Text) {\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>{getLabel(q)}</span>\n <div className={questionControlContainerClassName}>\n <Field name={toSlug(q.name)}\n question={q}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n validate={getValidator(q.mandatory)}\n component={InputAdapter}\n />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_TextArea) {\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>{getLabel(q)}</span>\n <div className={questionControlContainerClassName}>\n <Field\n validate={getValidator(q.mandatory)}\n name={toSlug(q.name)}\n id={toSlug(q.name)}\n disabled={isDisabled}\n required={q.mandatory}\n component=\"textarea\"/>\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_Checkbox) {\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={`${questionContainerClassName} checkbox-wrapper`}>\n <div className={`${questionControlContainerClassName} input-wrapper`}>\n <div className=\"form-check abc-checkbox\">\n <Field\n name={toSlug(q.name)}\n id={toSlug(q.name)}\n validate={getValidator(q.mandatory)}\n disabled={isDisabled}\n required={q.mandatory}\n type=\"checkbox\"\n className=\"form-check-input\"\n component=\"input\" />\n <label className=\"form-check-label\" htmlFor={toSlug(q.name)}/>\n {q.mandatory && <span className='checkbox-mandatory'><b>*</b></span>}\n </div>\n </div>\n <span className={`eq-checkbox-label ${questionLabelContainerClassName}`}>\n {getLabel(q)}\n </span>\n </div>\n <Error name={toSlug(q.name)}/>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_RadioButton){\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={`${questionContainerClassName} checkbox-wrapper`}>\n <div className={`${questionControlContainerClassName} input-wrapper`}>\n <div className=\"form-check abc-radio\">\n <Field\n name={toSlug(q.name)}\n id={toSlug(q.name)}\n validate={getValidator(q.mandatory)}\n disabled={isDisabled}\n required={q.mandatory}\n type=\"radio\"\n className=\"form-check-input\"\n value=\"true\"\n component=\"input\" />\n <label className=\"form-check-label\" htmlFor={toSlug(q.name)}/>\n {q.mandatory && <span className='checkbox-mandatory'><b>*</b></span>}\n </div>\n </div>\n <span className={`eq-checkbox-label ${questionLabelContainerClassName}`}>\n {getLabel(q)}\n </span>\n </div>\n <Error name={toSlug(q.name)}/>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_RadioButtonList) {\n const options = questionValues.map(val => ({label : val.label, value : val.id}));\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>\n {getLabel(q)}\n </span>\n <div className={questionControlContainerClassName}>\n <Field name={toSlug(q.name)}\n options={options}\n question={q}\n validate={getValidator(q.mandatory)}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n component={RadioButtonListAdapter} />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_ComboBox || q.type === QuestionType_CountryComboBox) {\n const options = questionValues.map(val => ({label : val.label, value : val.id}));\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>\n {getLabel(q)}\n </span>\n <div className={`${questionControlContainerClassName} reactSelectDropdown`}>\n <Field name={toSlug(q.name)}\n options={options}\n question={q}\n validate={getValidator(q.mandatory)}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n component={DropdownAdapter}\n />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n if (q.type === QuestionType_CheckBoxList) {\n const options = questionValues.map(val => ({label : val.label, value : val.id}));\n return (\n <Fragment key={toSlug(q.name)}>\n <div ref={getQuestionRef(q.id)} className={questionContainerClassName}>\n <span className={questionLabelContainerClassName}>\n {getLabel(q)}\n </span>\n <div className={questionControlContainerClassName}>\n <Field name={toSlug(q.name)}\n className={questionControlContainerClassName}\n validate={getValidator(q.mandatory)}\n options={options}\n question={q}\n maxValues={q.max_selected_values}\n isDisabled={isDisabled}\n isRequired={q.mandatory}\n component={CheckBoxListAdapter}\n />\n <Error name={toSlug(q.name)}/>\n </div>\n </div>\n {q.sub_question_rules?.length > 0 &&\n q.sub_question_rules.map((r) =>\n (\n <Condition key={r.id} when={toSlug(q.name)} rule={r}>\n {renderQuestion(r.sub_question)}\n </Condition>\n )\n )}\n </Fragment>\n );\n }\n return null;\n };\n\n const isVisible = (q) => {\n return !!questionRefs.current[q.id];\n };\n\n const validateQuestion = (q, values, errors) => {\n if (q.mandatory && isVisible(q)) {\n const slug = toSlug(q.name);\n if (!values.hasOwnProperty(toSlug(slug)) || values[toSlug(slug)] === \"\" || values[slug].length === 0) {\n errors[slug] = RequiredErrorMessage;\n }\n }\n // validate sub rules\n q.sub_question_rules?.forEach((r) => {\n validateQuestion(r.sub_question, values, errors);\n });\n };\n\n const onSubmit = (values) => {\n onAnswerChanges(values)\n };\n\n const validate = (values) => {\n const errors = {};\n extraQuestions.forEach( q => {\n validateQuestion(q, values, errors);\n });\n return errors;\n }\n\n if(!Object.keys(answers).length) return null;\n\n const getErrorFields = (q, invalidFormFields, errorFields) => {\n if (invalidFormFields.includes(toSlug(q.name))) {\n errorFields.push(q);\n }\n // find errors on sub rules\n q.sub_question_rules?.forEach((r) => {\n getErrorFields(r.sub_question, invalidFormFields, errorFields);\n });\n }\n\n const getFirstError = (invalidFormFields) => {\n const errorFields = [];\n extraQuestions.forEach(q => {\n getErrorFields(q, invalidFormFields, errorFields);\n });\n return errorFields.sort((a, b) => a.order > b.order)[0];\n }\n\n const scrollToFirstError = (invalidFormFields) => {\n const firstError = getFirstError(invalidFormFields);\n if (firstError) {\n scrollToQuestion(firstError.id);\n }\n }\n\n const scrollToQuestion = (questionId) => {\n const ref = questionRefs.current[questionId];\n if (ref && ref.current) {\n ref.current.focus();\n ref.current.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n }\n };\n\n if (!Object.keys(answers).length) return null;\n\n return (\n <div className={className}>\n <Form\n validate={validate}\n onSubmit={onSubmit}\n initialValues={answers}>\n\n {({handleSubmit, form, submitting, pristine, values}) => {\n submit = handleSubmit;\n return (\n <form\n onSubmit={(event) => {\n const invalidFormFields = form.getRegisteredFields().filter(field => form.getFieldState(field).invalid);\n if (invalidFormFields.length > 0) {\n const firstError = getFirstError(invalidFormFields);\n // Note: The second argument is an stable reference to the errer extra question\n // This ensures that even after re-renders, we have a consistent reference for actions such as scrolling or focusing.\n // Passing a direct DOM element might not reliably reflect the current element if the component updates.\n onError(invalidFormFields, questionRefs.current[firstError.id], firstError.id);\n if (shouldScroll2FirstError)\n scrollToFirstError(invalidFormFields)\n }\n handleSubmit(event)\n }}\n ref={formRef}>\n {readOnly ?\n <fieldset disabled=\"disabled\">\n {extraQuestions.map((q) => renderQuestion(q))}\n </fieldset>\n :\n extraQuestions.map((q) => renderQuestion(q))\n }\n {debug && <pre>{JSON.stringify(values, 0, 2)}</pre>}\n </form>\n );\n }}\n </Form>\n {!ref &&\n <button\n type=\"submit\"\n onClick={(event) => {\n submit(event);\n }}\n style={{marginTop: 10}}\n >\n {buttonText}\n </button>\n }\n </div>\n )\n});\n\nExtraQuestionsForm.propTypes = {\n extraQuestions: PropTypes.array.isRequired,\n userAnswers: PropTypes.array.isRequired,\n onAnswerChanges: PropTypes.func.isRequired,\n className: PropTypes.string,\n debug: PropTypes.bool,\n buttonText: PropTypes.string,\n questionContainerClassName: PropTypes.string,\n questionLabelContainerClassName: PropTypes.string,\n questionControlContainerClassName: PropTypes.string,\n RequiredErrorMessage: PropTypes.string,\n ValidationErrorClassName: PropTypes.string,\n allowExtraQuestionsEdit: PropTypes.bool,\n shouldScroll2FirstError: PropTypes.bool,\n readOnly: PropTypes.bool\n};\n\nexport default ExtraQuestionsForm;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\nimport 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'\nimport Input from '../inputs/text-input'\nimport Dropdown from '../inputs/dropdown'\nimport RawHTML from '../raw-html'\nimport CheckboxList from '../inputs/checkbox-list'\nimport RadioList from '../inputs/radio-list'\n\n\nclass RsvpForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n answers: props.questions.map(q => ({question_id: q.id, value: null})),\n errors: props.errors\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.hasErrors = this.hasErrors.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n renderQuestion(q) {\n const {answers} = this.state;\n const value = answers.find(a => a.question_id === q.id).value;\n\n switch(q.class_name) {\n case 'RSVPMemberEmailQuestionTemplate':\n case 'RSVPMemberFirstNameQuestionTemplate':\n case 'RSVPMemberLastNameQuestionTemplate':\n case 'RSVPTextBoxQuestionTemplate':\n return (\n <Input\n id={q.id}\n value={value || ''}\n onChange={this.handleChange}\n className=\"form-control\"\n error={this.hasErrors(q.id)}\n />\n );\n break;\n case 'RSVPTextAreaQuestionTemplate':\n return (\n <textarea\n id={q.id}\n value={value || ''}\n className=\"form-control\"\n onChange={this.handleChange}\n />);\n break;\n case 'RSVPLiteralContentQuestionTemplate':\n return (<div><RawHTML>{q.value}</RawHTML></div>);\n break;\n case 'RSVPCheckBoxListQuestionTemplate':\n return (\n <CheckboxList\n id={q.id}\n value={value}\n options={q.values.map(v => ({value: `${v.id}`, label: v.label}))}\n onChange={this.handleChange}\n error={this.hasErrors(q.id)}\n />\n );\n break;\n case 'RSVPRadioButtonListQuestionTemplate':\n return (\n <RadioList\n id={q.id}\n value={value}\n onChange={this.handleChange}\n options={q.values.map(v => ({value: `${v.id}`, label: v.label}))}\n error={this.hasErrors(q.id)}\n simple\n />\n );\n break;\n case 'RSVPDropDownQuestionTemplate':\n let values = (q.is_country_selector) ? q.values.map(v => ({value:v.id, label: v.value})) : q.values;\n\n return (\n <Dropdown\n id={q.id}\n isMulti={q.is_multiselect}\n value={value}\n onChange={this.handleChange}\n placeholder={q.empty_string}\n options={values}\n />\n );\n break;\n }\n }\n\n handleChange(ev) {\n let answers = [...this.state.answers];\n let {value, id} = ev.target;\n\n if (ev.target.type === 'datetime') {\n value = value.valueOf() / 1000;\n }\n\n let answer = answers.find(a => a.question_id === parseInt(id));\n answer.value = value;\n\n this.setState({answers});\n }\n\n hasErrors(field) {\n let {errors} = this.state;\n if(field in errors) {\n return errors[field];\n }\n\n return '';\n }\n\n handleSubmit(ev) {\n ev.preventDefault();\n\n let { onSubmit } = this.props;\n let {answers} = this.state;\n\n onSubmit(answers);\n }\n\n render() {\n let { questions, onSubmit } = this.props;\n\n return (\n <form className=\"rsvp-form\">\n {questions.map(q =>\n <div key={'question_'+q.id} className=\"row form-group\">\n <div className=\"col-md-12\">\n <label>\n <RawHTML>{q.label}</RawHTML> {q.is_mandatory && '*'}\n </label>\n {this.renderQuestion(q)}\n </div>\n </div>\n )}\n {onSubmit &&\n <div className=\"row\">\n <div className=\"col-md-12\">\n <button className=\"btn btn-primary\" onClick={this.handleSubmit}>Submit</button>\n </div>\n </div>\n }\n </form>\n );\n }\n}\n\nexport default RsvpForm;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\nimport T from 'i18n-react/dist/i18n-react'\nimport 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css'\nimport Input from '../inputs/text-input'\nimport { scrollToError, isEmpty, shallowEqual, hasErrors } from '../../utils/methods'\n\n\nclass SimpleForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n entity: {...props.entity},\n errors: props.errors\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const state = {};\n scrollToError(this.props.errors);\n\n if(prevProps.entity.id !== this.props.entity.id) {\n state.entity = {...this.props.entity};\n state.errors = {};\n }\n\n if (!shallowEqual(prevProps.errors, this.props.errors)) {\n state.errors = {...this.props.errors};\n }\n\n if (!isEmpty(state)) {\n this.setState({...this.state, ...state})\n }\n }\n\n handleChange(ev) {\n let entity = {...this.state.entity};\n let errors = {...this.state.errors};\n let {value, id} = ev.target;\n\n if (ev.target.type === 'checkbox') {\n value = ev.target.checked;\n }\n\n errors[id] = '';\n entity[id] = value;\n this.setState({entity: entity, errors: errors});\n }\n\n handleSubmit(ev) {\n let entity = {...this.state.entity};\n ev.preventDefault();\n\n this.props.onSubmit(this.state.entity);\n }\n\n createField(field) {\n let {entity, errors} = this.state;\n\n switch (field.type) {\n case 'text':\n return (\n <div key={\"field_\"+field.name} className=\"row form-group\">\n <div className=\"col-md-6\">\n <label> {field.label} </label>\n <Input\n id={field.name}\n value={entity[field.name]}\n onChange={this.handleChange}\n className=\"form-control\"\n error={hasErrors(field.name, errors)}\n />\n </div>\n </div>\n );\n break;\n case 'textarea':\n return (\n <div key={\"field_\"+field.name} className=\"row form-group\">\n <div className=\"col-md-6\">\n <label> {field.label} </label>\n <textarea\n id={field.name}\n value={entity[field.name]}\n onChange={this.handleChange}\n className=\"form-control\"\n />\n </div>\n </div>\n );\n break;\n case 'checkbox':\n return (\n <div key={\"field_\"+field.name} className=\"row form-group\">\n <div className=\"col-md-6\">\n <div className=\"form-check abc-checkbox\">\n <input type=\"checkbox\" id={field.name} checked={entity[field.name]}\n onChange={this.handleChange} className=\"form-check-input\" />\n <label className=\"form-check-label\" htmlFor={field.name}>\n {field.label}\n </label>\n </div>\n </div>\n </div>\n );\n break;\n\n }\n }\n\n render() {\n let {entity} = this.state;\n let {fields} = this.props;\n\n return (\n <form className=\"simple-form\">\n <input type=\"hidden\" id=\"id\" value={entity.id} />\n\n {fields.map(f => {\n return this.createField(f);\n })}\n\n <div className=\"row\">\n <div className=\"col-md-12 submit-buttons\">\n <input type=\"button\" onClick={this.handleSubmit}\n className=\"btn btn-primary pull-right\" value={T.translate(\"general.save\")}/>\n </div>\n </div>\n </form>\n );\n }\n}\n\nexport default SimpleForm;\n","\nexport default class FragmentParser {\n\n constructor(){\n this.originalHash = '';\n this.hash = {};\n }\n\n convertToHash(strHash)\n {\n strHash = strHash.substr(1).toLowerCase();\n let params = strHash.split('&');\n let res = {};\n for(let param of params)\n {\n param = param.split('=');\n if(param.length !== 2) continue;\n let val = param[1].trim();\n if(val === '') continue;\n\n if (val === 'true' || val === 'false')\n param[1] = val == 'true';\n\n res[param[0]] = param[1];\n }\n return res;\n }\n\n clearParams(){\n this.originalHash = '';\n this.hash = {};\n }\n\n getParam(key){\n if(typeof window !== 'undefined' && this.originalHash !== window.location.hash){\n this.originalHash = window.location.hash;\n this.hash = this.convertToHash(this.originalHash);\n }\n\n if(!this.hash.hasOwnProperty(key) ) return null;\n return this.hash[key];\n }\n\n getParams(){\n if(typeof window !== 'undefined' && this.originalHash !== window.location.hash){\n this.originalHash = window.location.hash;\n this.hash = this.convertToHash(this.originalHash);\n }\n\n return { ... this.hash };\n }\n\n deleteParam(param){\n var hash = this.getParams();\n this.clearParams();\n for(let key in hash) {\n if(key == param) continue;\n this.hash[key] = hash[key];\n }\n }\n\n deleteParams(params){\n var hash = this.getParams();\n this.clearParams();\n for(let key in hash) {\n if(params.includes(key)) continue;\n this.hash[key] = hash[key];\n }\n }\n\n setParam(key, value){\n if(typeof window !== 'undefined' && this.originalHash !== window.location.hash){\n this.originalHash = window.location.hash;\n this.hash = this.convertToHash(this.originalHash);\n }\n if(value !== null && value !== '')\n this.hash[key] = value;\n else\n delete this.hash[key];\n return this;\n }\n\n serialize(){\n let res = '';\n for(let key in this.hash)\n {\n let val = this.hash[key];\n if(res !== '') res += '&';\n res += key+'='+val;\n }\n return res;\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport React from 'react';\nimport T from \"i18n-react/dist/i18n-react\";\nimport ExtraQuestionsForm from \"../extra-questions\";\nimport PropTypes from 'prop-types';\n\nclass FreeTextSearch extends React.Component {\n\n constructor(props){\n super(props);\n this.onSearchClick = this.onSearchClick.bind(this);\n this.onClearClick = this.onClearClick.bind(this);\n this.onKeyPressed = this.onKeyPressed.bind(this);\n this.onChange = this.onChange.bind(this);\n\n this.state = {\n value: props.value || \"\",\n };\n }\n\n onSearchClick(ev){\n let { preventEvents } = this.props;\n if(preventEvents){\n ev.preventDefault();\n }\n this.doFiltering(this.state.value);\n }\n\n onClearClick(ev){\n let { preventEvents } = this.props;\n if(preventEvents){\n ev.preventDefault();\n }\n this.doFiltering('');\n this.setState({value: ''});\n }\n\n doFiltering(term = \"\"){\n this.props.onSearch(term.trim());\n }\n\n onKeyPressed(event){\n var code = event.keyCode || event.which;\n if(code === 13) {\n this.doFiltering(this.state.value);\n }\n }\n\n onChange(event){\n this.setState({\n value: event.target.value\n });\n if (this.props.onChange) this.props.onChange(event.target.value)\n }\n\n render(){\n let {value} = this.state;\n\n return(\n <div className=\"row search-container\">\n <div className=\"col-md-12\">\n <div className=\"input-group\">\n <input type=\"text\"\n value={value}\n className=\"form-control\"\n placeholder={this.props.placeholder}\n onKeyPress={this.onKeyPressed}\n onChange={this.onChange}\n />\n <span className=\"input-group-btn\" style={{width: 5 +'%'}}>\n <button onClick={this.onSearchClick} className=\"btn btn-default\" title={T.translate(\"general.search\")}>\n <i className=\"fa fa-search\" />\n </button>\n <button onClick={this.onClearClick} className=\"btn btn-default\" title={T.translate(\"general.clear\")}>\n <i className=\"fa fa-times\" />\n </button>\n </span>\n </div>\n </div>\n </div>\n )\n }\n}\nFreeTextSearch.defaultProps = {\n preventEvents: false,\n onChange: null,\n value: \"\",\n}\n\nFreeTextSearch.propTypes = {\n preventEvents: PropTypes.bool,\n onChange: PropTypes.func,\n};\n\n\nexport default FreeTextSearch;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryAccessLevels} from '../../utils/query-actions';\n\nexport default class AccessLevelsInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getAccessLevels = this.getAccessLevels.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n getOptionValue(accessLevel){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(accessLevel);\n }\n //default\n return accessLevel.id;\n }\n\n getOptionLabel(accessLevel){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(accessLevel);\n }\n //default\n return `${accessLevel.name}`;\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'accesslevelinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getAccessLevels (input, callback) {\n let {summitId, defaultOptions} = this.props;\n\n if (!input && !defaultOptions) {\n return Promise.resolve({ options: [] });\n }\n\n queryAccessLevels(summitId,input, callback);\n }\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getAccessLevels}\n getOptionValue={m => this.getOptionValue(m)}\n getOptionLabel={m => this.getOptionLabel(m)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport './action-dropdown.less';\nimport Select from 'react-select';\n\nexport default class ActionDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value || null,\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleChange(value) {\n this.setState({value: value});\n }\n\n handleClick(ev) {\n ev.preventDefault();\n this.props.onClick(this.state.value.value);\n }\n\n render() {\n\n let {options, actionLabel, placeholder, ...rest} = this.props;\n let {value} = this.state;\n\n let smallDdl = this.props.hasOwnProperty('small') ? 'small' : '';\n let smallBtn = this.props.hasOwnProperty('small') ? 'btn-group-sm' : 'normal';\n\n let theValue = (value instanceof Object || value == null) ? value : options.find(opt => opt.value == value);\n\n\n return (\n <div className={\"action-dropdown btn-group \" + smallBtn}>\n <Select\n value={theValue}\n onChange={this.handleChange}\n options={options}\n placeholder={placeholder}\n className={\"btn-group action-select text-left\" + smallDdl}\n isClearable={false}\n />\n <button type=\"button\" className=\"btn btn-default action-button\" onClick={this.handleClick}>\n {actionLabel}\n </button>\n </div>\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useState} from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryAttendees} from '../../utils/query-actions';\n\nconst AttendeeInput = ({id, value, summitId, error, multi, onChange, getOptionValue, getOptionLabel, queryFunction, ...rest}) => {\n const queryFn = queryFunction || queryAttendees;\n const [_value, _setValue] = useState(value);\n const has_error = ( error !== '' );\n\n const _getOptionValue = (attendee) => {\n if (getOptionValue){\n return getOptionValue(attendee);\n }\n //default\n return attendee.id;\n }\n\n const _getOptionLabel = (attendee) => {\n if (getOptionLabel){\n return getOptionLabel(attendee);\n }\n //default\n return `${attendee.first_name} ${attendee.last_name} (${attendee.id})`;\n }\n\n const handleChange = (value) => {\n let ev = {target: {\n id: id,\n value: value,\n type: 'attendeeinput'\n }};\n\n onChange(ev);\n }\n\n const getAttendees = (input, callback) => {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n queryFn(summitId, input, callback);\n }\n \n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={handleChange}\n loadOptions={getAttendees}\n getOptionValue={m => _getOptionValue(m)}\n getOptionLabel={m => _getOptionLabel(m)}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n \n </div>\n );\n}\n\nexport default AttendeeInput;\n\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport PropTypes from 'prop-types'\nimport React from 'react';\nimport T from 'i18n-react/dist/i18n-react';\nimport RawHTML from '../raw-html';\n\nimport \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\";\n\nexport default class CheckboxList extends React.Component {\n\n constructor(props) {\n super(props);\n\n let otherValue = props.value ? props.value.find( v => !props.options.map(op => op.value).includes(v) ) : false;\n\n this.state = {\n otherChecked: !!otherValue\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleOtherCBChange = this.handleOtherCBChange.bind(this);\n }\n\n handleChange(event) {\n let optionValues = this.props.options.map(op => op.value);\n let value = this.props.value ? [...this.props.value] : [];\n\n if (event.target.type === 'checkbox') {\n if (event.target.checked) {\n const theVal = isNaN(event.target.value) ? event.target.value : parseInt(event.target.value);\n value.push(theVal);\n } else {\n value = value.filter( v => v != event.target.value )\n }\n } else {\n value = value.filter(v => optionValues.includes(v));\n value.push(event.target.value);\n }\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'checkboxlist'\n }};\n\n this.props.onChange(ev);\n }\n\n handleOtherCBChange(event) {\n this.setState({otherChecked: event.target.checked});\n }\n\n render() {\n\n let {onChange, value, className, options, id, children, error, disabled,name, ariaLabelledBy, ...rest} = this.props;\n let { otherChecked } = this.state;\n\n let inline = ( this.props.hasOwnProperty('inline') );\n let allowOther = ( this.props.hasOwnProperty('allowOther') );\n let otherValue = value ? value.find( v => !options.map(op => op.value).includes(v) ) : false ;\n let has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n let isDisabled = (this.props.hasOwnProperty('disabled') && disabled == true);\n\n\n let style, label;\n\n if (inline) {\n style = {\n paddingLeft: '22px',\n marginLeft: '20px',\n float: 'left'\n };\n } else {\n style = {\n paddingLeft: '22px',\n marginTop: '7px'\n }\n }\n\n return (\n <div id={`chl_wrapper_${id}`} aria-labelledby={ariaLabelledBy}>\n <div className={\"checkboxes-div\" + (has_error ? ' error' : '') }>\n { options.map(op => {\n let checked = value ? value.includes(op.value) : false;\n return (\n <div className=\"form-check abc-checkbox\" key={\"radio_key_\" + op.value} style={style}>\n <input type=\"checkbox\"\n id={`cb_${id}_${op.value}`}\n name={name? name : id }\n checked={checked}\n disabled={isDisabled}\n onChange={this.handleChange} className=\"form-check-input\" value={op.value} />\n <label className=\"form-check-label\" htmlFor={`cb_${id}_${op.value}` } >\n <RawHTML>{op.label}</RawHTML>\n </label>\n </div>\n )\n })}\n\n {allowOther &&\n <div className=\"form-check abc-checkbox\" style={style}>\n <input type=\"checkbox\" id={\"cb_other\" + id} checked={otherChecked} disabled={isDisabled}\n onChange={this.handleOtherCBChange} className=\"form-check-input\" value=\"other\" />\n <label className=\"form-check-label\" htmlFor={\"cb_other\" + id}>\n {T.translate(\"general.other\")}\n </label>\n </div>\n }\n\n {allowOther && otherChecked &&\n <div style={{paddingLeft: '22px', width: '50%'}}>\n <input className=\"form-control\" disabled={isDisabled} onChange={this.handleChange} value={otherValue} />\n </div>\n }\n\n </div>\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nCheckboxList.defaultProps = {\n ariaLabelledBy : null,\n}\n\n\nCheckboxList.propTypes = {\n id: PropTypes.string.isRequired\n};\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryCompanies} from '../../utils/query-actions';\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\n\nexport default class CompanyInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getCompanies = this.getCompanies.bind(this);\n }\n\n handleChange(value) {\n const isMulti = (this.props.hasOwnProperty('multi') || this.props.hasOwnProperty('isMulti'));\n const theValue = isMulti ? value.map(v => ({id: v.value, name: v.label})) : {id: value.value, name: value.label};\n\n let ev = {target: {\n id: this.props.id,\n value: theValue,\n type: 'companyinput'\n }};\n\n this.props.onChange(ev);\n }\n\n handleNew(value) {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateValue = (newValue) => {\n this.handleChange({value: newValue.id, label: newValue.name});\n }\n\n this.props.onCreate(value, translateValue);\n }\n\n getCompanies (input, callback) {\n const {extraOptions} = this.props;\n\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateOptions = (options) => {\n let newOptions = options.map(c => ({value: c.id.toString(), label: c.name}));\n\n if (extraOptions?.length > 0) {\n newOptions = [...extraOptions, ...newOptions];\n }\n\n callback(newOptions);\n };\n\n const queryFn = this.props.queryFunction || queryCompanies;\n\n queryFn(input, translateOptions);\n } \n\n render() {\n let {error, value, onChange, id, multi, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let isMulti = (this.props.hasOwnProperty('multi') || this.props.hasOwnProperty('isMulti'));\n let allowCreate = this.props.hasOwnProperty('allowCreate');\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n let theValue = null;\n\n if (isMulti && value.length > 0) {\n theValue = value.map(v => ({value: v.id.toString(), label: v.name} ));\n } else if (!isMulti && value) {\n theValue = {value: value.id.toString(), label: value.name};\n }\n\n\n const AsyncComponent = allowCreate\n ? AsyncCreatableSelect\n : AsyncSelect;\n\n return (\n <div>\n <AsyncComponent\n value={theValue}\n onChange={this.handleChange}\n loadOptions={this.getCompanies}\n onCreateOption={this.handleNew}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Dropdown from './dropdown';\nimport {getCountryList} from '../../utils/query-actions';\n\nexport default class CountryDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n options: []\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.abortController = new AbortController();\n }\n\n componentDidMount () {\n let {options} = this.state;\n\n if(options.length == 0){\n getCountryList(this.setOptions, this.abortController.signal);\n }\n }\n\n componentWillUnmount(){\n this.abortController.abort();\n }\n\n handleChange(value) {\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'countryddl'\n }};\n\n this.props.onChange(ev);\n }\n\n setOptions(response) {\n let countryList = response.map(c => ({label: c.name, value: c.iso_code}));\n this.setState({options: countryList});\n }\n\n render() {\n\n let {options} = this.state;\n\n return (\n <Dropdown options={options} {...this.props} />\n );\n\n }\n}\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\nimport {getCountryList} from '../../utils/query-actions';\n\nexport default class CountryInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n options: []\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.setOptions = this.setOptions.bind(this);\n\n }\n\n setOptions(response) {\n let countryList = response.map(c => ({label: c.name, value: c.iso_code}));\n this.setState({options: countryList});\n }\n\n componentDidMount() {\n getCountryList(this.setOptions).catch(e => {\n console.log(\"Error getting countries: \", e);\n this.setState({options: []});\n });\n }\n\n handleChange(value) {\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n\n if (isMulti) {\n theValue = value.map(v => v.value);\n } else {\n theValue = value.value;\n }\n\n let ev = {target: {\n id: this.props.id,\n value: theValue,\n type: 'countryinput'\n }};\n\n this.props.onChange(ev);\n }\n\n render() {\n let {value, onChange, id, multi, error, ...rest} = this.props;\n let {options} = this.state;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n if (isMulti) {\n theValue = options.filter(op => value.includes(op.value));\n } else {\n theValue = (value instanceof Object || value == null) ? value : options.find(opt => opt.value == value);\n }\n\n return (\n <div>\n <Select\n className={\"dropdown\" + (has_error ? ' error' : '')}\n onChange={this.handleChange}\n options={options}\n value={theValue}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-datetime\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport './datetimepicker.less';\nimport Datetime from 'react-datetime';\nimport moment from 'moment-timezone';\n\nexport default class DateTimePicker extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.isValidDate = this.isValidDate.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value) {\n this.setState({value: this.props.value})\n }\n }\n\n handleChange(date) {\n\n let { timezone } = this.props;\n\n if (date && moment.isMoment(date)) {\n date = moment.tz(date.format('YYYY-MM-DD HH:mm:ss'), timezone)\n } else if (date === '') {\n date = moment(0);\n }\n\n let ev = {target: {\n id: this.props.id,\n value: date,\n type: 'datetime'\n }};\n\n if (date && moment.isMoment(date)) {\n this.props.onChange(ev);\n }\n\n }\n\n isValidDate(currentDate, selectedDate) {\n let { timezone, validation } = this.props;\n let {after, before} = validation;\n\n if (after == '<')\n return (currentDate.isBefore(moment.tz(before * 1000, timezone)));\n else if(after == '<=')\n return (currentDate.isSameOrBefore(moment.tz(before * 1000, timezone)));\n else if(after == '>')\n return (currentDate.isAfter(moment.tz(before * 1000, timezone)));\n else if(after == '>=')\n return (currentDate.isSameOrAfter(moment.tz(before * 1000, timezone)));\n else {\n let afterDate = moment.tz(after * 1000, timezone).subtract(1, 'day');\n let beforeDate = moment.tz(before * 1000, timezone);\n return currentDate.isAfter(afterDate) && currentDate.isBefore(beforeDate);\n }\n }\n\n render() {\n let validate = (typeof this.props.validation != 'undefined');\n let {onChange, id, value, format, error, inputProps, disabled, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let className = 'form-control ' + (has_error ? 'error' : '');\n let inputDisabled = (this.props.hasOwnProperty('disabled')) ? disabled : false;\n\n return (\n <div>\n {validate ? (\n <Datetime\n isValidDate={this.isValidDate}\n onChange={this.handleChange}\n dateFormat={format.date}\n timeFormat={format.time}\n value={this.state.value}\n inputProps={{...inputProps, id: id, className: className, disabled: inputDisabled, autoComplete: 'off'}}\n {...rest}\n />\n ) : (\n <Datetime\n onChange={this.handleChange}\n dateFormat={format.date}\n timeFormat={format.time}\n value={this.state.value}\n inputProps={{...inputProps, id: id, className: className, disabled: inputDisabled, autoComplete: 'off'}}\n {...rest}\n />\n )}\n\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\n\nexport default class Dropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(selection) {\n\n let value = null;\n if (this.props.isMulti) {\n value = selection ? selection.map(val => val.value) : null;\n } else {\n value = selection ? selection.value : null;\n }\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'dropdown'\n }};\n\n this.props.onChange(ev);\n }\n\n render() {\n\n let {onChange, value, className, error, clearable, disabled, overrideCSS, ariaLabelledBy, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let isClearable = (this.props.hasOwnProperty('clearable'));\n let isDisabled = (this.props.hasOwnProperty('disabled') && disabled == true);\n let theValue = null;\n\n let selectClassName = className;\n\n if (!this.props.hasOwnProperty('overrideCSS') || overrideCSS == false) {\n selectClassName = 'dropdown ' + className + ' ' + (has_error ? 'error' : '');\n }\n\n if (this.props.isMulti) {\n theValue = this.props.options.filter(op => value.includes(op.value));\n } else {\n theValue = (value instanceof Object || value == null) ? value : this.props.options.find(opt => opt.value == value);\n }\n\n const selectStyles = { menu: styles => ({ ...styles, zIndex: 999 }) };\n\n return (\n <div>\n <Select\n className={selectClassName}\n value={theValue}\n onChange={this.handleChange}\n isClearable={isClearable}\n isDisabled={isDisabled}\n styles={selectStyles}\n aria-labelledby={ariaLabelledBy}\n formatOptionLabel={(data) => <span dangerouslySetInnerHTML={{ __html: data.label }} />}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nDropdown.defaultProps = {\n ariaLabelledBy : null,\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"extend\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"dropzone/dist/dropzone.css\");","import React from 'react'\n\nexport const Icon = (props) => {\n return (<div data-filetype={props.filetype} className='filepicker-file-icon' />)\n}","import React from 'react'\nimport extend from 'extend'\nimport 'dropzone/dist/dropzone.css';\nimport {Icon} from './icon'\nimport PropTypes from 'prop-types';\nimport {getAccessToken, initLogOut} from '../../security/methods';\nimport {AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR} from '../../security/constants';\nimport {getMD5} from \"../../../utils/crypto\";\n\nlet Dropzone = null;\n/**\n * class DropzoneJS\n */\nexport class DropzoneJS extends React.Component {\n\n constructor(props) {\n super(props);\n this.dropzoneRef = React.createRef();\n this.state = {files: []};\n this.onUploadComplete = this.onUploadComplete.bind(this);\n this.onError = this.onError.bind(this);\n }\n\n onError(e, status){\n if(this.props.onError)\n this.props.onError(e, status, this.props.id);\n }\n\n onUploadComplete(response){\n if(this.props.onUploadComplete)\n this.props.onUploadComplete(response, this.props.id, this.props.data);\n }\n\n /**\n * Configuration of Dropzone.js. Defaults are\n * overriden by the 'djsConfig' property\n * For a full list of possible configurations,\n * please consult\n * http://www.dropzonejs.com/#configuration\n */\n getDjsConfig () {\n let options = null;\n const defaults = {\n url: this.props.config.postUrl ? this.props.config.postUrl : null,\n };\n\n if(defaults.url === null) throw new Error(\"missing postUrl\");\n\n if (this.props.djsConfig) {\n options = extend(true, {}, defaults, this.props.djsConfig)\n } else {\n options = defaults\n }\n\n options.accept = async (file, done) => {\n // see https://github.com/dropzone/dropzone/blob/f50d1828ab5df79a76be00d1306cc320e39a27f4/src/options.js#L405\n try {\n file.accessToken = await getAccessToken();\n // IMPORTANT: compute once BEFORE upload starts\n file.md5 = await getMD5(file);\n file.fileSize = file.size;\n } catch (e) {\n console.log(e);\n this.onError(e);\n // only logout on genuine auth errors, not transient network failures\n if (!e.message || !e.message.startsWith(AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR)) {\n initLogOut();\n }\n done(e.message || 'Auth error');\n return;\n }\n if (options.maxFiles && options.maxFiles < (this.state.files.length + this.props.uploadCount)) {\n done('Max files reached.');\n }\n\n done();\n };\n\n return options\n }\n\n /**\n * React 'componentDidMount' method\n * Sets up dropzone.js with the component.\n */\n componentDidMount () {\n if(!this.dropzoneRef.current) return;\n const options = this.getDjsConfig();\n\n Dropzone = Dropzone || require('dropzone');\n Dropzone.autoDiscover = false;\n\n if (!this.props.config.postUrl && !this.props.eventHandlers.drop) {\n console.info('Neither postUrl nor a \"drop\" eventHandler specified, the React-Dropzone component might misbehave.')\n }\n\n const dropzoneNode = this.dropzoneRef.current;\n if (!dropzoneNode) throw new Error(\"Dropzone node not found\");\n\n this.dropzone = new Dropzone(dropzoneNode, options);\n this.setupEvents()\n }\n\n /**\n * React 'componentWillUnmount'\n * Removes dropzone.js (and all its globals) if the component is being unmounted\n */\n componentWillUnmount () {\n if (this.dropzone) {\n const files = this.dropzone.getActiveFiles();\n\n if (files.length > 0) {\n // Well, seems like we still have stuff uploading.\n // This is dirty, but let's keep trying to get rid\n // of the dropzone until we're done here.\n this.queueDestroy = true;\n\n const destroyInterval = window.setInterval(() => {\n if (this.queueDestroy === false) {\n return window.clearInterval(destroyInterval)\n }\n\n if (this.dropzone.getActiveFiles().length === 0) {\n this.dropzone = this.destroy(this.dropzone);\n return window.clearInterval(destroyInterval)\n }\n }, 500)\n } else {\n this.dropzone = this.destroy(this.dropzone)\n }\n }\n }\n\n /**\n * React 'componentDidUpdate'\n * If the Dropzone hasn't been created, create it\n */\n componentDidUpdate () {\n const {config, djsConfig} = this.props;\n const djsConfigObj = djsConfig ? djsConfig : {};\n const postUrlConfigObj = config && config.postUrl ? { url: config.postUrl } : {};\n this.queueDestroy = false;\n\n if (!this.dropzone) {\n const dropzoneNode = this.dropzoneRef.current;\n if (!dropzoneNode) throw new Error(\"Dropzone node not found\");\n this.dropzone = new Dropzone(dropzoneNode, this.getDjsConfig());\n this.setupEvents();\n }\n\n this.dropzone.options = extend(true, {}, this.dropzone.options, djsConfigObj, postUrlConfigObj);\n }\n\n /**\n * React 'render'\n */\n render () {\n const icons = [];\n const { files } = this.state;\n const { config } = this.props;\n const className = (this.props.className) ? 'filepicker dropzone ' + this.props.className : 'filepicker dropzone';\n\n if (config.showFiletypeIcon && config.iconFiletypes && (!files || files.length < 1)) {\n for (var i = 0; i < this.props.config.iconFiletypes.length; i = i + 1) {\n icons.push(<Icon filetype={config.iconFiletypes[i]} key={'icon-component' + i} />)\n }\n }\n\n if (!this.props.config.postUrl && this.props.action) {\n return (\n <form ref={this.dropzoneRef} action={this.props.action} className={className}>\n {icons}\n {this.props.children}\n </form>\n );\n } else {\n return (\n <div ref={this.dropzoneRef} id={this.props.id} className={className}> {icons} {this.props.children} </div>\n );\n }\n }\n\n /**\n * Takes event handlers in this.props.eventHandlers\n * and binds them to dropzone.js events\n */\n setupEvents () {\n const eventHandlers = this.props.eventHandlers;\n\n if (!this.dropzone || !eventHandlers) return;\n\n for (var eventHandler in eventHandlers) {\n if (eventHandlers.hasOwnProperty(eventHandler) && eventHandlers[eventHandler]) {\n // Check if there's an array of event handlers\n if (Object.prototype.toString.call(eventHandlers[eventHandler]) === '[object Array]') {\n for (var i = 0; i < eventHandlers[eventHandler].length; i = i + 1) {\n // Check if it's an init handler\n if (eventHandler === 'init') {\n eventHandlers[eventHandler][i](this.dropzone)\n } else {\n this.dropzone.on(eventHandler, eventHandlers[eventHandler][i])\n }\n }\n } else {\n if (eventHandler === 'init') {\n eventHandlers[eventHandler](this.dropzone)\n } else {\n this.dropzone.on(eventHandler, eventHandlers[eventHandler])\n }\n }\n }\n }\n\n /*\n * see https://docs.dropzone.dev/configuration/events\n * see https://github.com/dropzone/dropzone/blob/main/src/options.js#L574\n */\n this.dropzone.on('addedfile', async (file) => {\n if (!file) return;\n\n const files = this.state.files || [];\n\n files.push(file);\n this.setState({ files })\n });\n\n this.dropzone.on('removedfile', (file) => {\n if (!file) return;\n\n const files = this.state.files || [];\n files.forEach((fileInFiles, i) => {\n if (fileInFiles.name === file.name && fileInFiles.size === file.size) {\n files.splice(i, 1)\n }\n });\n\n this.setState({ files })\n });\n\n this.dropzone.on('uploadprogress', (file, progress, bytesSent) => {\n progress = bytesSent / file.size * 100;\n // https://developer.mozilla.org/es/docs/Web/API/Document/querySelector\n //let elem = document.querySelector(`#${this.props.id} .dz-upload`);\n if(file.previewElement) {\n let elem = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n\n if(elem.length > 0)\n elem = elem[0];\n\n if (elem)\n elem.style.width = progress + \"%\";\n }\n });\n\n this.dropzone.on('sending', (file, xhr, formData) => {\n if(file?.accessToken)\n xhr.setRequestHeader('Authorization', `Bearer ${file.accessToken}`);\n\n // synchronous append (this WILL be included)\n if (file?.md5)\n formData.append('md5', file.md5);\n\n formData.append('size', String(file?.size || 0));\n console.log(`DropzoneJS::sending md5 ${file?.md5} size ${file?.size}`);\n\n let _this = this;\n // This will track all request so we can get the correct request that returns final response:\n // We will change the load callback but we need to ensure that we will call original\n // load callback from dropzone\n let dropzoneOnLoad = xhr.onload;\n xhr.onload = function (e) {\n\n dropzoneOnLoad(e);\n if(xhr?.status == 200) {\n // Check for final chunk and get the response\n let uploadResponse = JSON.parse(xhr.responseText);\n if (typeof uploadResponse.name === 'string') {\n _this.onUploadComplete(uploadResponse);\n }\n }\n else{\n _this.onError(JSON.parse(xhr?.responseText), xhr?.status);\n }\n\n }\n })\n\n this.dropzone.on('error', (file, message) => {\n console.log(`DropzoneJS::error`, message);\n this.onError(message);\n });\n }\n\n /**\n * Removes ALL listeners and Destroys dropzone. see https://github.com/enyo/dropzone/issues/1175\n */\n destroy (dropzone) {\n dropzone.off();\n return dropzone.destroy()\n }\n}\n\nDropzoneJS.defaultProps = {\n djsConfig: {},\n config: {},\n eventHandlers: {},\n data: {},\n};\n\nDropzoneJS.propTypes = {\n id: PropTypes.string.isRequired\n};\n\nexport default DropzoneJS;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nimport './editor-input.less';\n\nexport default class TextEditor extends React.Component {\n\n constructor(props) {\n super(props);\n this.RichTextEditor = null;\n this.getTextAlignClassName = null;\n this.getTextAlignStyles = null;\n\n // this is done bc due SSR issues\n // @see https://github.com/sstur/react-rte/issues/373\n if (typeof window !== 'undefined') {\n const { default: RichTextEditor, getTextAlignClassName, getTextAlignStyles } = require('react-rte');\n this.RichTextEditor = RichTextEditor;\n this.getTextAlignClassName = getTextAlignClassName;\n this.getTextAlignStyles = getTextAlignStyles;\n }\n\n this.state = {\n editorValue: this.RichTextEditor?.createEmptyValue(),\n currentValue: null\n };\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n const {value} = props;\n const {editorValue, currentValue} = state;\n\n if (currentValue != null) {\n if (value === currentValue) {\n return state;\n }\n } \n\n let newEditorValue = editorValue.setContentFromString(value, 'html');\n\n // this is done bc due SSR issues\n // @see https://github.com/sstur/react-rte/issues/373\n if (typeof window !== 'undefined') {\n const { getTextAlignBlockMetadata } = require('react-rte');\n newEditorValue = editorValue.setContentFromString(\n value, \n 'html',\n {\n customBlockFn: getTextAlignBlockMetadata,\n }\n );\n }\n\n return {...state, editorValue: newEditorValue, currentValue: value}\n }\n\n handleChange(editorValue) {\n let oldEditorValue = this.state.editorValue;\n\n this.setState({editorValue});\n\n let oldContentState = oldEditorValue ? oldEditorValue.getEditorState().getCurrentContent() : null;\n let newContentState = editorValue.getEditorState().getCurrentContent();\n\n if (oldContentState !== newContentState) {\n let stringValue = editorValue.toString( \n 'html',\n {\n blockStyleFn: this.getTextAlignStyles,\n }\n )\n stringValue = stringValue === '<p><br></p>' ? '' : stringValue;\n\n this.setState({currentValue: stringValue});\n\n if (stringValue !== this.props.value) {\n let ev = {target: {\n id: this.props.id,\n value: stringValue,\n type: 'texteditor'\n }};\n\n this.props.onChange(ev);\n }\n }\n }\n\n render() {\n const {onChange, value, error, className, id, maxLength, ...rest} = this.props;\n const {currentValue, editorValue} = this.state;\n const has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n const charCountLeft = maxLength - currentValue.length;\n\n return (\n <div className='editor-input'>\n {this.RichTextEditor &&\n <this.RichTextEditor\n id={id}\n className={className + ' ' + (has_error ? 'error' : '')}\n value={editorValue}\n onChange={this.handleChange}\n blockStyleFn={this.getTextAlignClassName}\n {...rest}\n />\n }\n {!!maxLength &&\n <p><i>characters left: {charCountLeft}</i></p>\n }\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryEvents} from '../../utils/query-actions';\n\nexport default class EventInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getEvents = this.getEvents.bind(this);\n }\n\n handleChange(value) {\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'eventinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getEvents (input, callback) {\n let {summit, onlyPublished} = this.props;\n\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n queryEvents(summit.id, input, onlyPublished, callback);\n }\n\n render() {\n let {value, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n\n return (\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getEvents}\n getOptionValue={option => option.id}\n getOptionLabel={option => option.title}\n isMulti={isMulti}\n {...rest}\n />\n );\n\n }\n}\n\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-select/lib/Creatable\");","import React from 'react';\nimport CreatableSelect from 'react-select/lib/Creatable';\nimport T from 'i18n-react/dist/i18n-react';\n\n\nexport default class FreeMultiTextInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n inputValue: ''\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n handleChange(value) {\n let limit = this.props.hasOwnProperty('limit') ? this.props.limit : false;\n\n if (!limit || limit >= value.length ) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'freetextlist'\n }};\n\n this.props.onChange(ev);\n }\n }\n\n handleInputChange(inputValue) {\n this.setState({ inputValue });\n }\n\n handleKeyDown(event) {\n const { inputValue } = this.state;\n let { value } = this.props;\n\n if (!inputValue) return;\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n this.setState({\n inputValue: '',\n });\n\n this.handleChange([...value, {label: inputValue, value: inputValue}])\n\n event.preventDefault();\n }\n }\n\n\n render() {\n const { inputValue } = this.state;\n let {id, value, onChange, ...rest} = this.props;\n\n return (\n <CreatableSelect\n components={{DropdownIndicator: null}}\n inputValue={inputValue}\n clearable\n isMulti\n menuContainerStyle={{display: 'none'}}\n onChange={this.handleChange}\n onInputChange={this.handleInputChange}\n onInputKeyDown={this.handleKeyDown}\n placeholder={T.translate(\"general.type_something\")}\n value={value}\n {...rest}\n />\n );\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryGroups} from '../../utils/query-actions';\n\nexport default class GroupInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getGroups = this.getGroups.bind(this);\n }\n\n handleChange(value) {\n\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'groupinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getGroups (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n queryGroups(input, callback);\n }\n\n render() {\n let {value, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n\n return (\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getGroups}\n getOptionValue={option => option.id}\n getOptionLabel={option => option.title}\n isMulti={isMulti}\n {...rest}\n />\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nexport const OptionGroup = ({\n value,\n label,\n options\n}) => {\n return ([\n <option key={\"group\" + value} className=\"option-group\" value={value}>{label}</option>,\n options.map((opt,i) => (\n <option className=\"option-child\" key={opt.value} value={opt.value}> - {opt.label}</option>\n ))\n ]);\n};","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport { OptionGroup } from './OptionGroup';\nimport './optiongroup.less';\n\nexport default class GroupedDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value) {\n this.setState({value: this.props.value})\n }\n }\n\n handleChange(ev) {\n this.props.onChange(ev);\n }\n\n render() {\n let {id, options, placeholder, className, error} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let {value} = this.state;\n\n return (\n <div>\n <select\n id={id}\n className={className + ' form-control ' + (has_error ? 'error' : '')}\n value={value}\n onChange={this.handleChange}>\n <option value=\"\" disabled>{placeholder}</option>\n {options.map((opt,i) =>\n {\n if (typeof opt.options != 'undefined') {\n return (\n <OptionGroup key={'group_opt_'+i} label={opt.label} value={opt.value} options={opt.options}/>\n );\n } else {\n return (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n );\n }\n }\n )}\n </select>\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n }\n}","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\nimport {getLanguageList} from '../../utils/query-actions';\n\nexport default class LanguageInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n options: [],\n shouldUseId: props.hasOwnProperty('shouldUseId') ? props.shouldUseId : false,\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.setOptions = this.setOptions.bind(this);\n this.abortController = new AbortController();\n }\n\n componentDidMount() {\n getLanguageList(this.setOptions, this.abortController.signal).catch(e => {\n console.log(\"Error get languages: \", e);\n this.setOptions({options: []});\n });\n }\n\n componentWillUnmount(){\n this.abortController.abort();\n }\n\n setOptions(response) {\n let languageList = (this.state.shouldUseId) ?\n response.map(l => ({label: l.name, value: l.id})):\n response.map(l => ({label: l.name, value: l.iso_code}));\n this.setState({options: languageList});\n }\n\n handleChange(value) {\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n\n if (isMulti) {\n theValue = value.map(v => v.value);\n } else {\n theValue = value.value;\n }\n\n let ev = {target: {\n id: this.props.id,\n value: theValue,\n type: 'laguageinput'\n }};\n\n this.props.onChange(ev);\n }\n\n render() {\n let {value, onChange, id, multi, ...rest} = this.props;\n let {options} = this.state;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let theValue = null;\n\n if (isMulti) {\n theValue = options.filter(op => value.includes(op.value));\n } else {\n theValue = (value instanceof Object || value == null) ? value : options.find(opt => opt.value == value);\n }\n\n return (\n <Select\n className=\"dropdown\"\n onChange={this.handleChange}\n options={options}\n value={theValue}\n isMulti={isMulti}\n {...rest}\n />\n );\n\n }\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {queryMembers} from '../../utils/query-actions';\n\nexport default class MemberInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getMembers = this.getMembers.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n getOptionValue(member){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(member);\n }\n //default\n return member.id;\n }\n\n getOptionLabel(member){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(member);\n }\n //default\n return `${member.first_name} ${member.last_name} (${member.id})`;\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'memberinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getMembers (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n queryMembers(input, callback);\n }\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getMembers}\n getOptionValue={m => this.getOptionValue(m)}\n getOptionLabel={m => this.getOptionLabel(m)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState, useEffect } from 'react';\nimport Select from 'react-select';\n\nconst OperatorInput = ({ error, label, value, onChange, id, multi, isMulti, className, isDisabled, isClearable, options, selectStyles, customStyle, ...rest }) => {\n\n // Set intial valus from value property, if is an array operator as between, and extract the operator and digits is the value is a string\n const [operatorValue, setOperatorValue] = useState(value ? Array.isArray(value) ? { value: 'between', label: 'Between' } : options.find(e => e.value === value.replace(/\\d/g, '')) : ({ value: null, label: '' }));\n const [inputValue, setInputValue] = useState(value ? Array.isArray(value) ? value[0] : value.replace(/\\D/g, '') : '');\n const [inputValueBetween, setInputValueBetween] = useState(Array.isArray(value) ? value[1] : '');\n const [ddlStyles, setDDLStyles] = useState({\n control: (provided, state) => ({\n ...provided,\n width: 175\n }),\n ...selectStyles\n });\n const [hasError, setHasError] = useState(error);\n\n useEffect(() => {\n setHasError(error);\n }, [error]);\n\n\n const handleOperatorChange = (eventValue) => {\n setInputValueBetween('');\n setOperatorValue({ value: eventValue.value, label: eventValue.label }); \n let ev = {\n target: {\n id: id,\n value: eventValue.value === 'between' ? [inputValue, inputValueBetween] : inputValue,\n type: 'operatorinput',\n operator: eventValue.value\n }\n };\n onChange(ev);\n }\n\n const handleInputChange = (evt) => {\n const onlyDigits = evt.target.value.replace(/\\D/g, '');\n if (operatorValue.value === 'between') {\n evt.target.id === 'operator-input' ? setInputValue(onlyDigits) : setInputValueBetween(onlyDigits);\n let ev = {\n target: {\n id: id,\n value: evt.target.id === 'operator-input' ? [onlyDigits, inputValueBetween] : [inputValue, onlyDigits],\n type: 'operatorinput',\n operator: operatorValue.value\n }\n };\n onChange(ev);\n } else {\n setInputValue(onlyDigits);\n let ev = {\n target: {\n id: id,\n value: onlyDigits,\n type: 'operatorinput',\n operator: operatorValue.value\n }\n };\n onChange(ev);\n }\n }\n\n let selectClassName = className;\n\n const defaultStyle = {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline'\n }\n\n return (\n <div className={className} style={customStyle ? customStyle : defaultStyle}>\n <label>{label}</label>\n <Select\n className={selectClassName}\n value={operatorValue}\n options={options}\n onChange={handleOperatorChange}\n isClearable={isClearable}\n isDisabled={isDisabled}\n styles={ddlStyles}\n {...rest}\n />\n <input\n id='operator-input'\n value={inputValue}\n onChange={handleInputChange}\n className=\"form-control\"\n disabled={isDisabled}\n style={{ width: 'auto' }}\n {...rest}\n />\n {operatorValue.value === 'between' &&\n <>\n <span>And</span>\n <input\n id='operator-input-between'\n value={inputValueBetween}\n onChange={handleInputChange}\n className=\"form-control\"\n disabled={isDisabled}\n style={{ width: 'auto' }}\n {...rest}\n />\n </>\n }\n {hasError &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n}\n\nexport default OperatorInput;\n\nOperatorInput.defaultProps = {\n options: [\n { value: '>', label: 'Greater than' },\n { value: '<', label: 'Less than' },\n { value: '>=', label: 'Greater or Equal' },\n { value: '<=', label: 'Less or Equal' },\n { value: '==', label: 'Equal' },\n { value: 'between', label: 'Between' },\n ],\n};","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport AsyncCreatableSelect from 'react-select/lib/AsyncCreatable';\nimport {queryOrganizations} from '../../utils/query-actions';\n\nexport default class OrganizationInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getOrganizations = this.getOrganizations.bind(this);\n }\n\n handleChange(value) {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n let ev = {target: {\n id: this.props.id,\n value: {id: value.value, name: value.label},\n type: 'organizationinput'\n }};\n\n this.props.onChange(ev);\n }\n\n handleNew(value) {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateValue = (newValue) => {\n this.handleChange({value: newValue.id, label: newValue.name});\n }\n\n this.props.onCreate(value, translateValue);\n }\n\n getOrganizations (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateOptions = (options) => {\n let newOptions = options.map(org => ({value: org.id.toString(), label: org.name}));\n callback(newOptions);\n };\n\n queryOrganizations(input, translateOptions);\n }\n\n render() {\n let {error, value, id, onChange, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let allowCreate = this.props.hasOwnProperty('allowCreate');\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n let theValue = value ? {value: value.id.toString(), label: value.name} : null;\n\n const AsyncComponent = allowCreate\n ? AsyncCreatableSelect\n : AsyncSelect;\n\n return (\n <div>\n <AsyncComponent\n value={theValue}\n onChange={this.handleChange}\n loadOptions={this.getOrganizations}\n onCreateOption={this.handleNew}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\n\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {DEFAULT_PAGE_SIZE, queryPromocodes} from '../../utils/query-actions';\n\nconst PromocodeInput = ({summitId, error, value, onChange, id, multi, perPage, extraFilters, ...rest}) => {\n\n const handleChange = (value) => {\n let theValue = null;\n const isMulti = multi || rest.isMulti;\n if (value) {\n theValue = isMulti ? value.map(v => ({id: v.value, code: v.label})) : {id: value.value, code: value.label};\n }\n\n let ev = {target: {\n id: id,\n value: theValue,\n type: 'promocodeinput'\n }};\n\n onChange(ev);\n }\n\n const getPromocodes = (input, callback) => {\n\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n const translateOptions = (options) => {\n let newOptions = options.map(c => ({value: c.id.toString(), label: c.code}));\n callback(newOptions);\n };\n\n queryPromocodes(summitId, input, translateOptions, perPage, extraFilters);\n }\n\n const has_error = !!( error && error !== '' );\n const isMulti = multi || rest.isMulti;\n\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n\n let theValue = null;\n\n if (isMulti && value.length > 0) {\n theValue = value.map(v => ({value: v.id.toString(), label: v.code} ));\n } else if (!isMulti && value) {\n theValue = {value: value.id.toString(), label: value.code};\n }\n\n return (\n <div>\n <AsyncSelect\n value={theValue}\n onChange={handleChange}\n loadOptions={getPromocodes}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n}\n\nPromocodeInput.propTypes = {\n perPage: PropTypes.number,\n extraFilters: PropTypes.array\n};\n\nPromocodeInput.defaultProps = {\n perPage: DEFAULT_PAGE_SIZE,\n extraFilters: []\n};\n\nexport default PromocodeInput;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport RawHTML from '../raw-html';\nimport PropTypes from 'prop-types'\n\nimport \"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\";\n\nexport default class RadioList extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value,\n };\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(selection) {\n\n let ev = {target: {\n id: this.props.id,\n value: selection.target.value,\n type: 'radio'\n }};\n\n this.props.onChange(ev);\n }\n\n getLabel(option, id, inline, simple) {\n if (inline) {\n return (\n <label className=\"form-check-label\" htmlFor={`radio_${id}_${option.value}`} style={{display: 'inline-block'}}>\n <RawHTML>\n {option.label}\n </RawHTML>\n </label>\n );\n } else if (simple) {\n return (\n <label className=\"form-check-label\" htmlFor={`radio_${id}_${option.value}`} >\n {option.label}\n </label>\n );\n } else {\n return (\n <label className=\"form-check-label\" htmlFor={`radio_${id}_${option.value}`} style={{display: 'inline-block'}}>\n <h4 style={{marginTop: '0px'}}>{option.label}</h4>\n <RawHTML>{option.description}</RawHTML>\n </label>\n );\n }\n }\n\n render() {\n\n let {onChange, value, className, error, ariaLabelledBy, disabled, options,id, name,...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let inline = ( this.props.hasOwnProperty('inline') );\n let simple = ( this.props.hasOwnProperty('simple') );\n let isDisabled = (this.props.hasOwnProperty('disabled') && disabled == true);\n\n let style, label;\n\n if (inline) {\n style = {\n paddingLeft: '22px',\n marginLeft: '20px',\n float: 'left'\n };\n\n\n } else {\n style = {\n paddingLeft: '22px'\n }\n }\n\n return (\n <div id={`rl_wrapper_${id}`} aria-labelledby={ariaLabelledBy}>\n { options.map(op => {\n let checked = (op.value == value);\n return (\n <div className=\"form-check abc-radio\" key={`radio_key_${id}_${op.value}`} style={style}>\n <input\n className=\"form-check-input\"\n type=\"radio\"\n id={`radio_${id}_${op.value}`}\n value={op.value}\n checked={checked}\n onChange={this.handleChange}\n disabled={isDisabled}\n name={name ? name : `radio_${id}`}\n />\n {this.getLabel(op, id, inline, simple)}\n </div>\n )\n })}\n\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nRadioList.defaultProps = {\n ariaLabelledBy : null,\n}\n\nRadioList.propTypes = {\n id: PropTypes.string.isRequired\n};\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types'\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\nimport { queryRegistrationCompanies } from '../../utils/query-actions';\nimport _ from 'lodash';\nconst NullValue = { value: null, label: '' };\nconst NewId = 0;\n\nconst RegistrationCompanyInput = ({\n error, onChange, id, disabled, className, summitId, onError,\n value, placeholder, tabSelectsValue, selectStyles, createLabel, options2Show, ...rest }) => {\n\n const isNullValue = (val) => _.isEqual(val, {id: null, name: ''})\n\n const handleChange = (eventValue) => {\n if(!eventValue) eventValue = NullValue;\n const newValue = { id: eventValue.value, name: eventValue.label };\n let ev = {\n target: {\n id: id,\n value: newValue,\n type: 'registration_company_input'\n }\n };\n\n onChange(ev);\n }\n\n const getCompanies = (input, callback) => {\n\n const translateOptions = (options) => {\n\n if (options instanceof Error) {\n onError(options);\n }\n if (options.length === 0) {\n callback([]);\n }\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n let newOptions = [...options.map(c => ({ value: c.id.toString(), label: c.name }))];\n callback(newOptions);\n };\n\n queryRegistrationCompanies(summitId, input, translateOptions, options2Show);\n }\n\n const handleNewOption = (newOption) => {\n // we need to map into value/label because of a bug in react-select 2\n // https://github.com/JedWatson/react-select/issues/2998\n handleChange({value: NewId, label: newOption});\n }\n\n const classNamPrefix =`${className}_prefix`;\n\n // default value ( no selection )\n let theValue = null;\n\n if (value && !isNullValue(value)) {\n theValue = {value: value.id, label: value.name};\n }\n\n return (\n <div style={{ position: 'relative' }}>\n <AsyncCreatableSelect\n // Passing null if no label and no value property to show the placeholder\n value={theValue}\n inputId={id}\n tabSelectsValue={tabSelectsValue}\n placeholder={placeholder}\n onChange={handleChange}\n loadOptions={getCompanies}\n className={className}\n classNamePrefix={classNamPrefix}\n styles={selectStyles}\n onCreateOption={handleNewOption}\n formatCreateLabel={(value) => `${createLabel} \"${value}\"`}\n isDisabled={disabled}\n {...rest}\n />\n {error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n}\n\nexport default RegistrationCompanyInput;\n\nRegistrationCompanyInput.defaultProps = {\n placeholder: 'Select a company',\n disabled: false,\n tabSelectsValue: false,\n createLabel: 'Select ',\n className:'registration_company_dll',\n options2Show: 20,\n}\n\nRegistrationCompanyInput.propTypes = {\n onError: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n options2Show: PropTypes.number,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-select/lib/components\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { components } from 'react-select/lib/components'\nimport { querySpeakers } from '../../utils/query-actions';\n\nexport default class SpeakerInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getSpeakers = this.getSpeakers.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'speakerinput'\n }};\n\n this.props.onChange(ev);\n }\n\n handleClick(speakerId) {\n let {history} = this.props;\n\n history.push(`/app/speakers/${speakerId}`);\n }\n\n getSpeakers (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n let summitId = (this.props.hasOwnProperty('summitId')) ? this.props.summitId : null;\n\n querySpeakers(summitId, input, callback);\n }\n\n getOptionValue(speaker){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(speaker);\n }\n //default\n return speaker.id;\n }\n\n getOptionLabel(speaker){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(speaker);\n }\n //default\n return `${speaker.first_name} ${speaker.last_name} (${speaker.id})`;\n }\n\n render() {\n let {value, onChange, history, summitId, error, id, multi, ...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n let isMulti = (this.props.hasOwnProperty('multi'));\n\n const MultiValueLabel = (props) => {\n return (\n <a onClick={() => this.handleClick(props.data.id)} style={{cursor: 'pointer'}}>\n <components.MultiValueLabel {...props} />\n </a>\n );\n };\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getSpeakers}\n components={{ MultiValueLabel }}\n getOptionValue={s => this.getOptionValue(s)}\n getOptionLabel={s => this.getOptionLabel(s)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { querySponsors } from '../../utils/query-actions';\n\nconst SponsorInput = ({ id, summitId, value, error, multi, onChange, queryFunction, ...rest }) => {\n const queryFn = queryFunction || querySponsors;\n const has_error = error !== '';\n\n const handleChange = (value) => {\n let ev = {\n target: {\n id: id,\n value: value,\n type: 'sponsorinput'\n }\n };\n\n onChange(ev);\n }\n\n const getSponsors = (input, callback) => {\n const filterSponsors = (options) => {\n let newOptions = options.filter(c => c.company);\n callback(newOptions);\n };\n\n queryFn(summitId, input, filterSponsors);\n }\n\n return (\n <div>\n <AsyncSelect\n value={value}\n getOptionValue={option => option.id}\n getOptionLabel={option => `${option.company.name} (${option.sponsorship?.type?.name})`}\n onChange={handleChange}\n loadOptions={getSponsors}\n isMulti={multi}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n}\n\nexport default SponsorInput;\n","/**\n * Copyright 2022 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { querySponsoredProjects } from '../../utils/query-actions';\n\nexport default class SponsoredProjectInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.getSponsoredProjects = this.getSponsoredProjects.bind(this);\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'sponsoredprojectinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getSponsoredProjects (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n querySponsoredProjects(input, callback);\n }\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let isClearable = (this.props.hasOwnProperty('clearable'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getSponsoredProjects}\n getOptionValue={op => op.id}\n getOptionLabel={op => (`${op.name} (${op.id})`)}\n isMulti={isMulti}\n isClearable={isClearable}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"tDZTa8dy9OMVyGAtxNOS\",\"valueBox\":\"VoBl8JcsRZelj8EKGKtC\"};","import React from 'react';\nimport styles from './index.module.less';\n\nexport default ({value, options, onChange, ...rest}) => {\n \n const currentOptionKey = options.findIndex(op => op.value === value);\n\n const valueLabel = options.find(op => op.value === value).label;\n\n const onClickMinus = () => {\n if (currentOptionKey > 0) {\n onChange(options[currentOptionKey - 1].value);\n }\n }\n\n const onClickPlus = () => {\n if (currentOptionKey < options.length -1) {\n onChange(options[currentOptionKey + 1].value);\n }\n }\n\n return (\n <div className={styles.wrapper} {...rest}>\n <button className=\"btn btn-default\" onClick={() => onClickMinus()} disabled={currentOptionKey === 0} title=\"Decrement\">\n <i className=\"fa fa-minus\"/>\n </button>\n <span className={styles.valueBox}>{valueLabel}</span>\n <button className=\"btn btn-default\" onClick={() => onClickPlus()} disabled={currentOptionKey + 1 === options.length} title=\"Increment\">\n <i className=\"fa fa-plus\"/>\n </button>\n </div>\n );\n};\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\n\nconst SummitDaysSelect = ({ days, currentValue, placeholder, onDayChanged }) => {\n const theValue = days.find(op => op.value === currentValue) || null;\n\n const onChange = (selectedOption) => {\n onDayChanged(selectedOption?.value || null);\n };\n\n return (\n <Select\n placeholder={placeholder} //T.translate(\"schedule.placeholders.select_day\")\n className=\"day-selector\"\n name=\"form-field-name\"\n value={theValue}\n onChange={onChange}\n options={days}\n />\n );\n}\n\nexport default SummitDaysSelect;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport {querySummits} from '../../utils/query-actions';\n\nexport default class SummitInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getSummits = this.getSummits.bind(this);\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'summitinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getSummits (input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n querySummits(input, callback);\n }\n\n\n render() {\n let {value, error, onChange, id, multi, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getSummits}\n getOptionValue={op => op.id}\n getOptionLabel={op => (`${op.name} (${op.id})`)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport Select from 'react-select';\n\nconst SummitVenuesSelect = ({venues, currentValue, placeholder, onVenueChanged, ...rest}) => {\n const parsedValue = venues.find(v => v.value.id === currentValue?.id) || null;\n const renderOption = (option) => {\n let location = option.value;\n if (location.class_name === 'SummitVenue')\n return (<span className=\"location-option-venue\">{location.name}</span>);\n return (<span className=\"location-option-room\">- {location.name}</span>);\n }\n\n const onChange = (selectedOption) => {\n onVenueChanged(selectedOption?.value || null);\n }\n\n return (\n <Select\n placeholder={placeholder}\n className=\"venues-selector\"\n name=\"form-field-name\"\n value={parsedValue}\n onChange={onChange}\n options={venues}\n optionRenderer={renderOption}\n {...rest}\n />\n );\n}\n\nexport default SummitVenuesSelect;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport AsyncSelect from 'react-select/lib/Async';\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\nimport { queryTags } from '../../utils/query-actions';\nimport { shallowEqual } from \"../../utils/methods\";\n\nexport default class TagInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n tagValue: props.value.map((t) => ({ tag: t.tag, id: t.id }))\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getTags = this.getTags.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (!shallowEqual(this.props.value, prevProps.value)) {\n let nextValue = this.props.value.map((t) => ({ tag: t.tag, id: t.id }));\n this.setState({ tagValue: nextValue });\n }\n }\n\n handleNew(ev) {\n const newTag = { tag: ev }\n this.props.onCreate(ev, this.setState({ value: [...this.state.tagValue, newTag] }));\n }\n\n handleChange(value) {\n let ev = {\n target: {\n id: this.props.id,\n value: value,\n type: 'taginput'\n }\n };\n\n this.props.onChange(ev);\n }\n\n getTags(input, callback) {\n if (!input) {\n return Promise.resolve({ options: [] });\n }\n\n let summitId = (this.props.hasOwnProperty('summitId')) ? this.props.summitId : null;\n\n const _callback = (options) => {\n if (summitId) {\n options = options.map(t => t.tag);\n }\n callback(options);\n };\n\n queryTags(summitId, input, _callback);\n }\n\n render() {\n let { className, error, allowCreate, ...rest } = this.props;\n let { tagValue } = this.state;\n let has_error = (this.props.hasOwnProperty('error') && error != '');\n let orderedTags = tagValue.sort((a, b) => (a.tag.toLowerCase() > b.tag.toLowerCase() ? 1 : (a.tag.toLowerCase() < b.tag.toLowerCase() ? -1 : 0)));\n\n const AsyncComponent = allowCreate\n ? AsyncCreatableSelect\n : AsyncSelect;\n\n return (\n <div>\n <AsyncComponent\n {...rest}\n className={className + ' ' + (has_error ? 'error' : '')}\n isMulti\n value={orderedTags}\n onChange={this.handleChange}\n onCreateOption={this.handleNew}\n loadOptions={this.getTags}\n getOptionLabel={option => option.__isNew__ ? option.label : option.tag}\n getOptionValue={option => option.__isNew__ ? option.value : option.tag}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nTagInput.propTypes = {\n allowCreate: PropTypes.bool,\n className: PropTypes.string,\n summitId: PropTypes.number,\n id: PropTypes.string.isRequired,\n value: PropTypes.array,\n onCreate: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n};\n\nTagInput.defaultProps = {\n allowCreate: false\n}\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nexport default class Input extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.value !== prevProps.value) {\n this.input.value = this.props.value;\n }\n }\n\n handleChange(ev) {\n this.props.onChange(ev);\n }\n\n render() {\n\n let {onChange, value, className, error, ariaLabelledBy, containerClassName,...rest} = this.props;\n let has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n let class_name = this.props.hasOwnProperty('className') ? className : 'form-control';\n let container_class_name = this.props.hasOwnProperty('containerClassName') ? containerClassName : 'container-form-control';\n return (\n <div className={container_class_name}>\n <input\n className={`${class_name} ${has_error ? 'error' : ''}`}\n ref={node => {this.input = node}}\n defaultValue={value}\n aria-labelledby={ariaLabelledBy}\n onChange={this.handleChange}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n\n }\n}\n\nInput.defaultProps = {\n ariaLabelledBy : null,\n}","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\nconst TextArea = ({ onChange, value, className, error, maxLength, ...rest }) => {\n const has_error = error && error !== '';\n const class_name = className ? className : 'form-control';\n const charCountLeft = Math.max(maxLength - value.length, 0);\n\n const handleChange = (ev) => {\n const isBackSpace = !!(value?.length - ev.target?.value?.length);\n\n if (!maxLength || isBackSpace) onChange(ev);\n\n if (charCountLeft) {\n onChange(ev)\n }\n };\n\n return (\n <div>\n <textarea\n className={class_name + ' ' + (has_error ? 'error' : '')} \n value={value}\n onChange={handleChange}\n maxLength={maxLength}\n {...rest}\n />\n {!!maxLength &&\n <p><i>characters left: {charCountLeft}</i></p>\n }\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n );\n}\n\nTextArea.defaultProps = {\n value: \"\"\n};\n\nexport default TextArea;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport AsyncSelect from 'react-select/lib/Async';\nimport { queryTicketTypes } from '../../utils/query-actions';\nimport PropTypes from 'prop-types';\n\nclass TicketTypesInput extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: props.value\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getTicketTypes = this.getTicketTypes.bind(this);\n this.getOptionValue = this.getOptionValue.bind(this);\n this.getOptionLabel = this.getOptionLabel.bind(this);\n }\n\n getOptionValue(ticketType){\n if(this.props.hasOwnProperty(\"getOptionValue\")){\n return this.props.getOptionValue(ticketType);\n }\n //default\n return ticketType.id;\n }\n\n getOptionLabel(ticketType){\n if(this.props.hasOwnProperty(\"getOptionLabel\")){\n return this.props.getOptionLabel(ticketType);\n }\n //default\n return `${ticketType.name}`;\n }\n\n handleChange(value) {\n let ev = {target: {\n id: this.props.id,\n value: value,\n type: 'tickettypeinput'\n }};\n\n this.props.onChange(ev);\n }\n\n getTicketTypes (input, callback) {\n let { summitId, version, optionsLimit } = this.props;\n\n let filters = { name : input };\n if(this.props.hasOwnProperty('audience')){\n filters['audience'] = this.props.audience;\n }\n\n queryTicketTypes(summitId, filters , callback, version, optionsLimit);\n }\n\n render() {\n\n let {value, error, onChange, id, multi, optionsLimit, ...rest} = this.props;\n let isMulti = (this.props.hasOwnProperty('multi'));\n let has_error = ( this.props.hasOwnProperty('error') && error != '' );\n\n return (\n <div>\n <AsyncSelect\n value={value}\n onChange={this.handleChange}\n loadOptions={this.getTicketTypes}\n getOptionValue={m => this.getOptionValue(m)}\n getOptionLabel={m => this.getOptionLabel(m)}\n isMulti={isMulti}\n {...rest}\n />\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n\n </div>\n );\n\n }\n}\n\nTicketTypesInput.defaultProps = {\n version: 'v1',\n}\n\nTicketTypesInput.propTypes = {\n audience: PropTypes.string,\n version: PropTypes.string,\n};\n\n\nexport default TicketTypesInput;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react'\nimport DropzoneJS from '../dropzone'\nimport './index.less';\nimport file_icon from '../upload-input/file.png';\nimport ProgressiveImg from \"../../progressive-img\";\nconst FileNameMaxLen = 20;\n\nexport default class UploadInputV2 extends React.Component {\n\n constructor(props) {\n super(props);\n }\n\n getDefaultAllowedExtensions = () => {\n const { mediaType } = this.props\n return mediaType && mediaType.type ? mediaType?.type?.allowed_extensions.map((ext) => `.${ext.toLowerCase()}`).join(\",\") : '';\n }\n\n getDefaultMaxSize = () => {\n const { mediaType } = this.props\n return mediaType ? mediaType?.max_size / 1024 : 100;\n }\n\n getDropzone = () => {\n const {\n value,\n onRemove,\n canAdd = true,\n mediaType,\n postUrl,\n maxFiles = 1,\n timeOut,\n onUploadComplete,\n djsConfig,\n id,\n parallelChunkUploads = false,\n onError = () => {},\n getAllowedExtensions = null,\n getMaxSize = null\n } = this.props;\n\n const allowedExt = getAllowedExtensions ? getAllowedExtensions() : this.getDefaultAllowedExtensions();\n const maxSize = getMaxSize ? getMaxSize() : this.getDefaultMaxSize();\n const canUpload = !maxFiles || value.length < maxFiles;\n\n let eventHandlers = {};\n if (onRemove) {\n eventHandlers = {removedfile: onRemove};\n }\n\n const djsConfigSet = {\n paramName: \"file\", // The name that will be used to transfer the file,\n maxFilesize: maxSize, // MB,\n timeout: timeOut || (1000 * 60 * 10),\n chunking: true,\n retryChunks: true,\n parallelChunkUploads: parallelChunkUploads,\n addRemoveLinks: true,\n maxFiles: maxFiles,\n acceptedFiles: allowedExt,\n ...djsConfig\n };\n\n const componentConfig = {\n showFiletypeIcon: false,\n postUrl: postUrl\n };\n\n const data = {\n media_type: mediaType,\n media_upload: value,\n };\n\n if (!postUrl) {\n return (\n <div className=\"filepicker disabled\">\n No Post URL\n </div>\n );\n }\n if (!canAdd) {\n return (\n <div className=\"filepicker disabled\">\n Upload has been disabled by administrators.\n </div>\n );\n } else if (!canUpload) {\n return (\n <div className=\"filepicker disabled\">\n Max number of files uploaded for this type - Remove uploaded file to add new file.\n </div>\n );\n } else {\n return (\n <DropzoneJS\n id={id}\n djsConfig={djsConfigSet}\n config={componentConfig}\n eventHandlers={eventHandlers}\n data={data}\n uploadCount={value.length}\n onUploadComplete={onUploadComplete}\n onError={onError}\n />\n );\n }\n }\n\n render() {\n const {value, canDelete = true, onRemove, error} = this.props;\n const has_error = ( this.props.hasOwnProperty('error') && error !== '' );\n\n return (\n <div className=\"row\">\n <div className=\"col-md-6\" style={{height: 180}}>\n {this.getDropzone()}\n </div>\n <div className=\"col-md-6\">\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n {value.length > 0 &&\n <ul className=\"upload-input-v2-preview-container\">\n {value.map((v,i) => {\n let src = v?.private_url || v?.public_url;\n if(src === '#') src = v?.public_url;\n // custom replace for dropbox case ( download vs raw)\n let filename = v.filename;\n let previewSrc = src ? src.replace(\"?dl=0\",\"?raw=1\") : filename;\n let ext = filename.split('.').pop();\n let path = filename.replace(`.${ext}`, '');\n if (path.length > FileNameMaxLen) {\n path = path.substring(0, FileNameMaxLen);\n }\n\n return (\n <li key={`uploaded-${i}`}>\n <span className=\"file-preview\">\n <a href={src} target=\"_blank\" title=\"See Preview\">\n <ProgressiveImg\n alt={v.filename}\n src={previewSrc}\n placeholderSrc={file_icon}\n />\n </a>\n </span>\n <span className=\"file-name\"><a href={src} target=\"_blank\" title=\"See Preview\">{`${path}.${ext}`}</a></span>\n {onRemove && canDelete &&\n <span className=\"file-delete\">\n <a href=\"#\" data-tip=\"delete\" title=\"Delete File\" onClick={ev => onRemove(v)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n </span>\n }\n </li>\n )\n })}\n </ul>\n }\n </div>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material\");","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport { DropzoneJS } from '../dropzone';\n\n/**\n * Thin wrapper around DropzoneJS that exposes file lifecycle callbacks\n * without modifying the shared dropzone component.\n */\nexport const DropzoneV3 = ({\n onAddedFile,\n onUploadProgress,\n onFileRemoved,\n onFileCompleted,\n onFileError,\n onDropzoneReady,\n eventHandlers = {},\n children,\n ...props\n}) => {\n const combinedEventHandlers = {\n ...eventHandlers,\n init: (dz) => {\n if (onDropzoneReady) onDropzoneReady(dz);\n if (eventHandlers.init) eventHandlers.init(dz);\n },\n addedfile: (file) => {\n if (onAddedFile) onAddedFile(file);\n if (eventHandlers.addedfile) eventHandlers.addedfile(file);\n },\n removedfile: (file) => {\n if (onFileRemoved) onFileRemoved(file);\n if (eventHandlers.removedfile) eventHandlers.removedfile(file);\n },\n uploadprogress: (file, progress, bytesSent) => {\n if (onUploadProgress) onUploadProgress(file, bytesSent / file.size * 100);\n if (eventHandlers.uploadprogress) eventHandlers.uploadprogress(file, progress, bytesSent);\n },\n success: (file) => {\n if (onFileCompleted) onFileCompleted(file);\n if (eventHandlers.success) eventHandlers.success(file);\n },\n error: (file, message) => {\n if (onFileError) onFileError(file, message);\n if (eventHandlers.error) eventHandlers.error(file, message);\n },\n };\n\n return (\n <DropzoneJS {...props} eventHandlers={combinedEventHandlers}>\n {children}\n </DropzoneJS>\n );\n};\n\nexport default DropzoneV3;\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState, useRef, useMemo, useCallback, useEffect } from 'react';\nimport {\n Box,\n Typography,\n IconButton,\n Alert,\n LinearProgress,\n} from '@mui/material';\nimport {\n UploadFile as UploadFileIcon,\n Delete as DeleteIcon,\n CheckCircle as CheckCircleIcon,\n ErrorOutline as ErrorOutlineIcon,\n Close as CloseIcon,\n} from '@mui/icons-material';\nimport { DropzoneV3 } from './dropzone-v3';\nimport './index.less';\n\nconst UploadInputV3 = ({\n value = [],\n onRemove,\n canAdd = true,\n canDelete = true,\n mediaType,\n postUrl,\n maxFiles = 1,\n timeOut,\n onUploadComplete,\n djsConfig,\n id,\n parallelChunkUploads = false,\n onError = () => {},\n getAllowedExtensions = null,\n getMaxSize = null,\n error,\n label,\n helpText\n}) => {\n const dropzoneInstanceRef = useRef(null);\n const [uploadingFiles, setUploadingFiles] = useState([]);\n const [errorFiles, setErrorFiles] = useState([]);\n\n const getDefaultAllowedExtensions = useCallback(() => {\n return mediaType && mediaType.type\n ? mediaType?.type?.allowed_extensions.map((ext) => `.${ext.toLowerCase()}`).join(\",\")\n : '';\n }, [mediaType]);\n\n const getDefaultMaxSize = useCallback(() => {\n return mediaType ? mediaType?.max_size / 1024 : 100;\n }, [mediaType]);\n\n const allowedExt = useMemo(() =>\n getAllowedExtensions ? getAllowedExtensions() : getDefaultAllowedExtensions(),\n [getAllowedExtensions, getDefaultAllowedExtensions]\n );\n\n const maxSize = useMemo(() =>\n getMaxSize ? getMaxSize() : getDefaultMaxSize(),\n [getMaxSize, getDefaultMaxSize]\n );\n\n const canUpload = useMemo(() =>\n !maxFiles || value.length < maxFiles,\n [maxFiles, value.length]\n );\n\n const showDropzone = useMemo(() =>\n canUpload && uploadingFiles.length === 0 && errorFiles.length === 0,\n [canUpload, uploadingFiles.length, errorFiles.length]\n );\n\n const eventHandlers = useMemo(() => {\n return onRemove ? { removedfile: onRemove } : {};\n }, [onRemove]);\n\n const djsConfigSet = useMemo(() => ({\n paramName: \"file\",\n maxFilesize: maxSize,\n timeout: timeOut || (1000 * 60 * 10),\n chunking: true,\n retryChunks: true,\n parallelChunkUploads: parallelChunkUploads,\n addRemoveLinks: true,\n maxFiles: maxFiles,\n acceptedFiles: allowedExt,\n dictDefaultMessage: '',\n ...djsConfig\n }), [maxSize, timeOut, parallelChunkUploads, maxFiles, allowedExt, djsConfig]);\n\n const componentConfig = useMemo(() => ({\n showFiletypeIcon: false,\n postUrl: postUrl\n }), [postUrl]);\n\n const data = useMemo(() => ({\n media_type: mediaType,\n media_upload: value,\n }), [mediaType, value]);\n\n const formatFileSize = useCallback((bytes) => {\n if (!bytes) return '100kb';\n return `${Math.round(bytes / 1024)}kb`;\n }, []);\n\n const formatExtensionsDisplay = useCallback(() => {\n if (!allowedExt) return '';\n const exts = allowedExt.split(',')\n .map(e => e.trim().replace('.', '').toUpperCase())\n .filter(Boolean);\n if (exts.length === 0) return '';\n if (exts.length === 1) return exts[0];\n return `${exts.slice(0, -1).join(', ')} or ${exts[exts.length - 1]}`;\n }, [allowedExt]);\n\n const handleRemove = useCallback((file) => (ev) => {\n ev.preventDefault();\n onRemove(file);\n }, [onRemove]);\n\n const handleDropzoneReady = useCallback((dz) => {\n dropzoneInstanceRef.current = dz;\n }, []);\n\n const handleAddedFile = useCallback((file) => {\n setUploadingFiles(prev => [...prev, { name: file.name, size: file.size, progress: 0, complete: false }]);\n }, []);\n\n const handleUploadProgress = useCallback((file, progress) => {\n setUploadingFiles(prev => prev.map(f =>\n f.name === file.name && f.size === file.size ? { ...f, progress } : f\n ));\n }, []);\n\n const handleFileRemoved = useCallback((file) => {\n setUploadingFiles(prev => prev.filter(f => !(f.name === file.name && f.size === file.size)));\n }, []);\n\n // Mark as complete instead of removing — keep it visible until value is updated by the parent\n const handleFileCompleted = useCallback((file) => {\n setUploadingFiles(prev => prev.map(f =>\n f.name === file.name && f.size === file.size ? { ...f, progress: 100, complete: true } : f\n ));\n }, []);\n\n // Once the parent updates value, remove the matching completed file from uploadingFiles\n useEffect(() => {\n if (uploadingFiles.length === 0 || value.length === 0) return;\n setUploadingFiles(prev => prev.filter(f => {\n if (!f.complete) return true;\n return !value.some(v => v.filename === f.name);\n }));\n }, [value]);\n\n const handleFileError = useCallback((file, message) => {\n setUploadingFiles(prev => prev.filter(f => !(f.name === file.name && f.size === file.size)));\n setErrorFiles(prev => [...prev, { name: file.name, size: file.size, message }]);\n }, []);\n\n const handleDismissError = useCallback((file) => {\n if (dropzoneInstanceRef.current) {\n const dzFile = dropzoneInstanceRef.current.files?.find(\n f => f.name === file.name && f.size === file.size\n );\n if (dzFile) dropzoneInstanceRef.current.removeFile(dzFile);\n }\n setErrorFiles(prev => prev.filter(f => !(f.name === file.name && f.size === file.size)));\n }, []);\n\n const handleDeleteUploading = useCallback((file) => {\n if (dropzoneInstanceRef.current) {\n const dzFile = dropzoneInstanceRef.current.files?.find(\n f => f.name === file.name && f.size === file.size\n );\n if (dzFile) dropzoneInstanceRef.current.removeFile(dzFile);\n }\n setUploadingFiles(prev => prev.filter(f => !(f.name === file.name && f.size === file.size)));\n }, []);\n\n const wrappedOnUploadComplete = useCallback((response, dzId, dzData) => {\n if (onUploadComplete) onUploadComplete(response, dzId, dzData);\n }, [onUploadComplete]);\n\n const extDisplay = formatExtensionsDisplay();\n\n const renderDropzone = () => {\n if (!postUrl) {\n return (\n <Alert severity=\"error\" sx={{ borderRadius: 2 }}>\n No Post URL\n </Alert>\n );\n }\n if (!canAdd) {\n return (\n <Alert severity=\"warning\" sx={{ borderRadius: 2 }}>\n Upload has been disabled by administrators.\n </Alert>\n );\n }\n\n return (\n <DropzoneV3\n id={id}\n djsConfig={djsConfigSet}\n config={componentConfig}\n eventHandlers={eventHandlers}\n data={data}\n uploadCount={value.length}\n onUploadComplete={wrappedOnUploadComplete}\n onError={onError}\n onDropzoneReady={handleDropzoneReady}\n onAddedFile={handleAddedFile}\n onUploadProgress={handleUploadProgress}\n onFileRemoved={handleFileRemoved}\n onFileCompleted={handleFileCompleted}\n onFileError={handleFileError}\n >\n <Box className=\"dz-custom-content\">\n <UploadFileIcon className=\"dz-custom-icon\" />\n <Typography variant=\"body2\" className=\"dz-custom-message\">\n <span className=\"dz-click-text\">Click to upload</span> or drag and drop\n </Typography>\n {(extDisplay || maxSize) && (\n <Typography variant=\"caption\" className=\"dz-custom-hint\">\n {extDisplay ? `${extDisplay} files` : ''}\n {maxSize ? ` (max. ${maxSize}MB)` : ''}\n </Typography>\n )}\n </Box>\n </DropzoneV3>\n );\n };\n\n const fileRowSx = {\n display: 'flex',\n alignItems: 'center',\n py: 1.5,\n mb: 1,\n };\n\n return (\n <Box className=\"upload-input-v3\">\n {label && (\n <Typography variant=\"subtitle1\" fontWeight={600} gutterBottom>\n {label}\n </Typography>\n )}\n\n {helpText && (\n <Typography variant=\"body2\" color=\"text.secondary\" gutterBottom sx={{ mb: 2 }}>\n {helpText}\n </Typography>\n )}\n\n {canUpload && (\n <Box sx={{ mb: 2, display: showDropzone ? 'block' : 'none' }}>\n {renderDropzone()}\n </Box>\n )}\n\n {error && (\n <Alert severity=\"error\" sx={{ mb: 2, borderRadius: 2 }}>\n {error}\n </Alert>\n )}\n\n {uploadingFiles.length > 0 && (\n <Box sx={{ mt: 2 }}>\n {uploadingFiles.map((file, index) => (\n <Box\n key={`uploading-${index}`}\n sx={fileRowSx}\n >\n <Box sx={{ color: 'primary.main', display: 'flex', alignItems: 'center', mr: 2, minWidth: 32 }}>\n <UploadFileIcon fontSize=\"medium\" />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n fontWeight={500}\n sx={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {file.name}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {formatFileSize(file.size)} · {file.complete ? 'Complete' : 'Loading'}\n </Typography>\n {!file.complete && (\n <LinearProgress\n variant=\"determinate\"\n value={file.progress}\n sx={{ mt: 0.5, borderRadius: 1 }}\n />\n )}\n </Box>\n\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <IconButton\n size=\"small\"\n onClick={() => handleDeleteUploading(file)}\n sx={{ color: 'text.secondary', '&:hover': { color: 'error.main' } }}\n >\n <DeleteIcon />\n </IconButton>\n {file.complete && (\n <CheckCircleIcon sx={{ color: 'success.main', fontSize: 28 }} />\n )}\n </Box>\n </Box>\n ))}\n </Box>\n )}\n\n {errorFiles.length > 0 && (\n <Box sx={{ mt: 2 }}>\n {errorFiles.map((file, index) => (\n <Box\n key={`error-${index}`}\n sx={fileRowSx}\n >\n <Box sx={{ color: 'error.main', display: 'flex', alignItems: 'center', mr: 2, minWidth: 32 }}>\n <ErrorOutlineIcon fontSize=\"medium\" />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n fontWeight={500}\n sx={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {file.name}\n </Typography>\n <Typography variant=\"caption\" color=\"error\">\n {file.message}\n </Typography>\n </Box>\n\n <IconButton\n size=\"small\"\n onClick={() => handleDismissError(file)}\n sx={{ color: 'error.main' }}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n ))}\n </Box>\n )}\n\n {value.length > 0 && (\n <Box sx={{ mt: 2 }}>\n {value.map((file, index) => {\n const filename = file.filename;\n const fileSize = formatFileSize(file.size);\n\n return (\n <Box\n key={`uploaded-${index}`}\n elevation={0}\n sx={fileRowSx}\n >\n <Box sx={{ color: 'primary.main', display: 'flex', alignItems: 'center', mr: 2, minWidth: 32 }}>\n <UploadFileIcon fontSize=\"medium\" />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography\n variant=\"body2\"\n fontWeight={500}\n sx={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}\n >\n {filename}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {fileSize} · Complete\n </Typography>\n </Box>\n\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n {onRemove && canDelete && (\n <IconButton\n size=\"small\"\n onClick={handleRemove(file)}\n sx={{ color: 'text.secondary', '&:hover': { color: 'error.main' } }}\n >\n <DeleteIcon />\n </IconButton>\n )}\n <CheckCircleIcon sx={{ color: 'success.main', fontSize: 28 }} />\n </Box>\n </Box>\n );\n })}\n </Box>\n )}\n\n </Box>\n );\n};\n\nexport default UploadInputV3;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dropzone\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useEffect, useState} from 'react';\nimport Dropzone from 'react-dropzone';\nimport T from 'i18n-react/dist/i18n-react';\nimport './upload.less';\n\nimport file_icon from './file.png';\nimport pdf_icon from './pdf.png';\nimport mov_icon from './mov.png';\nimport mp4_icon from './mp4.png';\nimport csv_icon from './csv.png';\n\nconst fileHasPreview = (fileName) => {\n if (!fileName) return false;\n const pattern = /(.*)\\.(gif|bmp|svg|jpe?g|png)/g\n return pattern.test(fileName);\n}\n\nconst getPreviewIcon = (value, fileName) => {\n if (value && fileHasPreview(fileName)) {\n return value;\n }\n\n const ext = fileName.split('.').pop();\n\n switch (ext) {\n case 'pdf':\n return pdf_icon;\n case 'mov':\n return mov_icon;\n case 'mp4':\n return mp4_icon;\n case 'csv':\n return csv_icon;\n default:\n return file_icon;\n }\n}\n\nconst UploadInput = ({value, error, handleRemove, handleUpload, handleError, ...rest}) => {\n const [showRemove, setShowRemove] = useState(false);\n const [logoPreview, setLogoPreview] = useState({preview: null, name: ''});\n\n useEffect(() => {\n const logoPreviewTmp = {preview: null, name: ''};\n\n if (value) {\n const fileName = value.split(\"/\").pop();\n logoPreviewTmp.preview = getPreviewIcon(value, fileName);\n logoPreviewTmp.name = fileName;\n setLogoPreview(logoPreviewTmp);\n }\n }, [value]);\n\n const onDrop = (acceptedFiles, fileRejections) => {\n if (acceptedFiles.length > 0) {\n const file = acceptedFiles[0];\n handleUpload(file, {...rest});\n }\n\n if (fileRejections.length > 0 && handleError)\n handleError(fileRejections, {...rest});\n }\n\n const onRemove = (ev) => {\n ev.preventDefault();\n handleRemove(ev, {...rest});\n }\n\n const showVeil = () => {\n setShowRemove(true)\n }\n\n const hideVeil = () => {\n setShowRemove(false);\n }\n\n const has_error = error !== '';\n\n return (\n <div className=\"file-upload\">\n <Dropzone\n onDrop={onDrop}\n {...rest}\n >\n <div>{T.translate(\"general.drop_files\")}</div>\n </Dropzone>\n <div className=\"selected-files-box col-md-6\">\n <p>Selected Files</p>\n <div className=\"selected-files\">\n {value &&\n <div className=\"file-box\" onMouseEnter={showVeil} onMouseLeave={hideVeil}>\n <img src={logoPreview.preview} />\n <a href={value} target=\"_blank\">{logoPreview?.name}</a>\n {showRemove &&\n <div className=\"remove\" onClick={onRemove}>\n <i className=\"fa fa-times\"></i>\n </div>\n }\n </div>\n }\n {has_error &&\n <p className=\"error-label\">{error}</p>\n }\n </div>\n </div>\n </div>\n )\n}\n\nexport default UploadInput;\n","// extracted by mini-css-extract-plugin\nexport default {\"loading\":\"T1PEDYso224efj98hUw9\",\"loaded\":\"HydBuzzegFMoqMkrptg7\",\"image\":\"Pq0tg32DAJ33TmIQMvMs\"};","/**\n * Copyright 2023 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\nimport React,{ useState, useEffect, useRef } from \"react\";\nimport styles from './index.module.scss';\nimport pdf_icon from \"../inputs/upload-input/pdf.png\";\nimport mov_icon from \"../inputs/upload-input/mov.png\";\nimport mp4_icon from \"../inputs/upload-input/mp4.png\";\nimport csv_icon from \"../inputs/upload-input/csv.png\";\nimport file_icon from \"../inputs/upload-input/file.png\";\n/**\n *\n * @param placeholderSrc\n * @param src\n * @param props\n * @returns {JSX.Element}\n * @constructor\n */\nconst ProgressiveImg = ({ placeholderSrc, src, ...props }) => {\n const isCancelled = useRef(false);\n const [imgSrc, setImgSrc] = useState(placeholderSrc || src);\n const [customClass, setCustomClass] = useState(styles.loading);\n\n useEffect(() => {\n const img = new Image();\n const ext = src ? src.split('.').pop() : null;\n img.src = src;\n\n img.onload = () => {\n if (isCancelled.current) return\n setImgSrc(src)\n setCustomClass(styles.loaded)\n };\n\n img.onerror = () => {\n if (isCancelled.current) return\n img.onerror = null;\n if(ext && ext.toString().toLowerCase().includes('pdf'))\n setImgSrc(pdf_icon)\n else if(ext && ext.toString().toLowerCase().includes('mov'))\n setImgSrc(mov_icon);\n else if(ext && ext.toString().toLowerCase().includes('mp4'))\n setImgSrc(mp4_icon);\n else if(ext && ext.toString().toLowerCase().includes('csv'))\n setImgSrc(csv_icon);\n else\n setImgSrc(file_icon);\n setCustomClass(styles.loaded)\n };\n\n return () => {\n isCancelled.current = true;\n };\n }, [src]);\n\n return (\n <img\n {...{ src: imgSrc, ...props }}\n alt={props.alt || \"\"}\n className={`${styles.image} ${customClass}`}\n />\n );\n};\nexport default ProgressiveImg;\n","import React from 'react';\n\nconst RawHTML = ({children, replaceNewLine = false, className = \"\", ...rest}) =>\n <span className={className}\n dangerouslySetInnerHTML={{ __html: replaceNewLine ? children?.replace(/\\n/g, '<br />') : children}} {...rest}/>\n\nexport default RawHTML;","export const DraggableItemTypes = {\n UNSCHEDULEEVENT: 'UnScheduleEvent',\n SCHEDULEEVENT: 'ScheduleEvent',\n};\n\nexport const TBALocation = {id : 0, name : 'TBD', class_name: 'SummitVenue'};\nexport const SlotSizeOptions = [1,5,10,15,30,60]; // 12 - 6 - 4 - 2 - 1\nexport const PixelsPerMinute = 3;\n\nexport const BulkActionEdit = 'BULK_ACTION_EDIT';\nexport const BulkActionPublish = 'BULK_ACTION_PUBLISH';\nexport const BulkActionUnPublish = 'BULK_ACTION_UNPUBLISH';\n\nexport const bulkOptions = [\n {value: BulkActionEdit, label: 'Edit'},\n {value: BulkActionUnPublish, label: 'Unpublish'},\n];\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-bootstrap\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useState, useEffect} from 'react';\nimport {DraggableItemTypes} from './constants';\nimport {useDrag} from 'react-dnd';\nimport {Popover, OverlayTrigger} from 'react-bootstrap';\nimport RawHTML from '../raw-html';\n\nconst RESIZING_DIR_NORTH = 'N';\nconst RESIZING_DIR_SOUTH = 'S';\n\nconst ScheduleEvent = ({\n event,\n step,\n initialTop,\n initialHeight,\n minHeight,\n maxHeight,\n canResize,\n allowResize,\n allowDrag,\n onResized,\n onUnPublishEvent,\n onEditEvent,\n onClickSelected,\n selectedPublishedEvents,\n onMoveEvent\n }) => {\n const [collected, drag] = useDrag(() => ({\n type: DraggableItemTypes.SCHEDULEEVENT,\n item: {id: event.id, title: event.title, is_published: event.is_published, start_date: event.start_date, end_date: event.end_date, duration: event.duration},\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n canDrag: allowDrag && !event.static\n }), [event.id, event.duration, event.start_date, event.end_date]);\n const [resizeInfo, setResizeInfo] = useState({resizing: false, type: null, lastYPos: null});\n const [size, setSize] = useState({top: initialTop, height: initialHeight});\n const isSelected = selectedPublishedEvents?.includes(event.id) || false;\n const canEdit = !event.static;\n const isResizable = allowResize && canEdit && size.height > 15;\n\n const popoverHoverFocus = () =>\n <Popover id=\"popover-trigger-focus\" title={event.title}>\n <RawHTML>{event.description}</RawHTML>\n </Popover>\n\n // resize behavior\n\n const onMouseDown = (evt) => {\n if (!evt.target.getAttribute('data-resizable')) return;\n\n const box = evt.target.getBoundingClientRect();\n\n let type;\n if (evt.clientY - box.top < 10) {\n type = RESIZING_DIR_NORTH;\n } else if (box.bottom - evt.clientY < 10) {\n type = RESIZING_DIR_SOUTH;\n } else {\n return;\n }\n\n setResizeInfo({resizing: true, type, lastYPos: evt.pageY});\n\n evt.preventDefault();\n }\n\n const onMouseMove = (evt) => {\n if (!resizeInfo.resizing) return;\n\n let lastYPos = resizeInfo.lastYPos;\n let newYPos = evt.pageY;\n let deltaY = newYPos - lastYPos;\n\n if (step && step > 0) {\n let steps = parseInt(Math.round(Math.abs(deltaY) / step));\n deltaY = Math.sign(deltaY) * steps * step;\n if (!deltaY) {\n evt.preventDefault();\n return false;\n }\n }\n\n let newHeight = size.height;\n let newTop = size.top;\n\n if (resizeInfo.type === RESIZING_DIR_SOUTH) {\n newHeight = size.height + deltaY;\n }\n\n if (resizeInfo.type === RESIZING_DIR_NORTH) {\n if (deltaY < 0) {\n newTop = size.top - Math.abs(deltaY);\n newHeight = size.height + Math.abs(deltaY);\n } else {\n newTop = size.top + Math.abs(deltaY);\n newHeight = size.height - Math.abs(deltaY);\n }\n }\n\n // check constraints\n if (newHeight < minHeight) {\n newHeight = minHeight;\n newYPos = lastYPos;\n newTop = size.top;\n }\n\n let maxHeightTmp = (typeof maxHeight === \"function\") ? maxHeight() : maxHeight;\n\n if (newHeight > maxHeightTmp) {\n newHeight = maxHeightTmp;\n newYPos = lastYPos;\n newTop = size.top;\n }\n\n if (newTop < 0) {\n newTop = 0;\n newHeight = size.height;\n newYPos = lastYPos;\n }\n\n if (canResize(event.id, newTop, newHeight)) {\n setResizeInfo({\n ...resizeInfo,\n resizing: true,\n lastYPos: newYPos\n });\n\n setSize({\n top: newTop,\n height: newHeight,\n });\n }\n\n evt.preventDefault();\n };\n\n const onMouseUp = (evt) => {\n evt.preventDefault();\n setResizeInfo({type: null, lastYPos: null, resizing: false});\n };\n \n const eventTitleBlock = () => {\n let block = null;\n \n if (event.description) {\n block = (<OverlayTrigger trigger={['hover']} placement=\"bottom\" overlay={popoverHoverFocus()}>\n <div className=\"event-content\">\n <span className=\"event-title withTooltip\">{`${event.id} - ${event.title}${event.duration ? ` - ${event.duration/60} minutes` : ''}`}</span>\n </div>\n </OverlayTrigger>);\n } else {\n block = (<div className=\"event-content\">\n <span className=\"event-title\">{`${event.id} - ${event.title}${event.duration ? ` - ${event.duration/60} minutes` : ''}`}</span>\n </div>);\n }\n \n return block;\n }\n\n // end resize behavior\n\n useEffect(() => {\n if (resizeInfo.resizing) {\n document.addEventListener('mousemove', onMouseMove, false);\n document.addEventListener('mouseup', onMouseUp, false);\n } else {\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n\n if (size.top !== initialTop || size.height !== initialHeight) {\n onResized(event.id, size.top, size.height);\n }\n }\n\n return () => {\n document.removeEventListener('mousemove', onMouseMove, false);\n document.removeEventListener('mouseup', onMouseUp, false);\n }\n }, [resizeInfo.resizing])\n\n return (\n <div\n className={`row schedule-event ${isResizable ? 'is-resizable' : ''} ${canEdit ? '' : 'is-static'}`}\n data-resizable={true}\n id={`event_${event.id}`}\n onMouseDown={onMouseDown}\n ref={drag}\n style={{\n top: size.top,\n height: size.height,\n display: collected.isDragging ? 'none' : 'block',\n cursor: 'move',\n }}\n >\n {onClickSelected &&\n <div className=\"event-select-wrapper\">\n <input\n className=\"select-event-btn\"\n id={`selected_event_${event.id}`}\n type=\"checkbox\"\n checked={isSelected}\n onChange={() => onClickSelected(event)}\n />\n </div>\n }\n <div className=\"col-md-12 event-container\">\n {eventTitleBlock()}\n </div>\n <div className=\"event-actions\">\n {!event.static && onUnPublishEvent &&\n <i\n className=\"fa fa-minus-circle event-action-btn\"\n aria-hidden=\"true\"\n title=\"unpublish event\"\n onClick={() => onUnPublishEvent(event)}\n />\n }\n {onEditEvent &&\n <i\n className=\"fa fa-pencil-square-o event-action-btn\"\n title=\"edit event\"\n aria-hidden=\"true\"\n onClick={() => onEditEvent(event)}\n />\n }\n {!event.static && onMoveEvent &&\n <i\n className=\"fa fa-arrow-circle-right event-action-btn\"\n title=\"move event\"\n aria-hidden=\"true\"\n onClick={() => onMoveEvent(event)}\n />\n }\n </div>\n </div>\n );\n}\n\nexport default ScheduleEvent;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributschedule-event-list'ed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, {useEffect, useRef, useState} from 'react';\nimport moment from 'moment-timezone'\nimport {useDrop} from 'react-dnd'\nimport {DraggableItemTypes} from './constants';\nimport ScheduleEvent from './schedule-event';\nimport ReactDOM from 'react-dom';\nimport SummitEvent from '../../models/summit-event';\n\nconst TimeSlot = ({timeLabel, id}) => {\n return (\n <div id={id} className=\"row time-slot\">\n <div className=\"col-md-12\">\n <span>{timeLabel}</span>\n </div>\n </div>\n )\n}\n\nconst TimeSlotContainer = ( props ) => {\n const {currentDay, currentSummit, events, timeSlot, pixelsPerMinute, interval, canDropEvent, onDroppedEvent} = props;\n const divId = `time_slot_container_${timeSlot.format('HH_mm')}`;\n const [collectedProps, drop] = useDrop(() => ({\n accept: [DraggableItemTypes.UNSCHEDULEEVENT, DraggableItemTypes.SCHEDULEEVENT],\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n }),\n canDrop: (item, monitor) => {\n if (canDropEvent) return canDropEvent(item, monitor);\n const eventModel = new SummitEvent(item, currentSummit);\n return eventModel.canMove(events, currentDay, timeSlot, interval);\n },\n drop: (item, monitor, component) => {\n onDroppedEvent(item, timeSlot);\n }\n }), [interval, timeSlot, currentDay]);\n const {isOver, canDrop} = collectedProps;\n\n const renderMinutesContainer = (interval, pixelsPerMinute) => {\n let minutesContainers = [];\n let container_count = 2;\n let container_height = pixelsPerMinute * 5;\n\n for (var i = 0; i < container_count; i++) {\n\n minutesContainers[i] = <div key={i} className=\"minute-container\" style={{\n position: 'relative',\n width: '100%',\n height: `${container_height}px`\n }}/>;\n }\n\n return minutesContainers;\n };\n\n const placeHolderStyle = () => {\n const style = {};\n\n if (isOver) {\n style.backgroundColor = canDrop ? 'green' : 'red';\n style.opacity = 0.5;\n } else if (canDrop) {\n style.backgroundColor = 'yellow';\n style.opacity = 0.5;\n }\n\n return style;\n }\n\n return (\n <div id={divId} ref={drop} className=\"row time-slot-container\" style={placeHolderStyle()}>\n <div className=\"col-md-12\">\n {renderMinutesContainer(interval, pixelsPerMinute)}\n </div>\n </div>\n );\n};\n\nconst ScheduleEventList = (props) => {\n const listRef = useRef();\n const prevIntervalRef = useRef();\n const [timeSlotsList, setTimeSlotsList] = useState([]);\n const [newScrollTop, setNewScrollTop] = useState(null);\n const scheduleEventContainer = useRef(null);\n \n // sets scrollbar position after interval change and render\n useEffect(() => {\n if (newScrollTop) {\n listRef.current.scrollTop = newScrollTop;\n setNewScrollTop(null);\n }\n }, [newScrollTop]);\n\n useEffect(() => {\n const slotChangeRatio = prevIntervalRef.current / props.interval;\n // set scroll pos to set scrollbar after render\n setNewScrollTop(listRef.current.scrollTop * slotChangeRatio);\n createSlots();\n prevIntervalRef.current = props.interval;\n }, [props.interval, props.startTime, props.endTime]);\n\n const onDroppedEvent = (event, startTime) => {\n props.onScheduleEvent(event, props.currentDay, startTime);\n }\n\n const canResize = (eventId, newTop, newHeight) => {\n const {events, currentDay, startTime, pixelsPerMinute, currentSummit} = props;\n const {height} = getBoundingBox();\n\n if (height < (newTop + newHeight)) {\n return false;\n }\n\n const filteredEvents = events.filter(evt => {\n return evt.id !== eventId;\n });\n // calculate new event start date, end date\n const minutes = Math.floor(newTop / (pixelsPerMinute * (10 / interval)));\n const duration = Math.floor(newHeight / (pixelsPerMinute * (10 / interval)));\n\n let startDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n startDateTime = startDateTime.add(minutes, 'minutes');\n let endDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n endDateTime = endDateTime.add(minutes + duration, 'minutes');\n\n for (const auxEvent of filteredEvents) {\n const auxEventStartDateTime = moment(auxEvent.start_date * 1000).tz(currentSummit.time_zone.name);\n const auxEventEndDateTime = moment(auxEvent.end_date * 1000).tz(currentSummit.time_zone.name);\n // if time segments overlap\n if (auxEventStartDateTime.isBefore(endDateTime) && auxEventEndDateTime.isAfter(startDateTime))\n return false;\n }\n\n return true;\n }\n\n const onResized = (eventId, newTop, newHeight) => {\n const {events, currentDay, startTime, pixelsPerMinute, currentSummit} = props;\n const event = events.filter(evt => {\n return evt.id === eventId;\n }).shift();\n const minutes = Math.floor(newTop / (pixelsPerMinute * (10 / interval)));\n const duration = Math.floor(newHeight / (pixelsPerMinute * (10 / interval)));\n let startDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n startDateTime = startDateTime.add(minutes, 'minutes');\n\n props.onScheduleEvent(event, currentDay, moment(startDateTime.format('HH:mm'), 'HH:mm'), duration);\n }\n\n const getMaxHeight = () => {\n return getBoundingBox().height;\n }\n\n const getBoundingBox = () => {\n return ReactDOM.findDOMNode(scheduleEventContainer.current).getBoundingClientRect();\n }\n\n const calculateInitialTop = (event) => {\n const {currentDay, startTime, pixelsPerMinute, currentSummit} = props;\n const eventStartDateTime = moment(event.start_date * 1000).utc().tz(currentSummit.time_zone.name);\n const dayStartDateTime = moment.tz(currentDay + ' ' + startTime, 'YYYY-MM-DD HH:mm', currentSummit.time_zone.name);\n const minutes = eventStartDateTime.diff(dayStartDateTime, 'minutes');\n return minutes * pixelsPerMinute * (10 / interval);\n }\n\n const calculateInitialHeight = (event) => {\n const {pixelsPerMinute, currentSummit, interval} = props;\n const eventStartDateTime = moment(event.start_date * 1000).tz(currentSummit.time_zone.name);\n const eventEndDateTime = moment(event.end_date * 1000).tz(currentSummit.time_zone.name);\n const minutes = eventEndDateTime.diff(eventStartDateTime, 'minutes');\n return minutes * pixelsPerMinute * (10 / interval);\n }\n\n const createSlots = () => {\n const tmpList = [];\n let done = false;\n const startTimeTZ = moment.tz(startTime, 'HH:mm', currentSummit.time_zone.name);\n const endTimeTZ = moment.tz(endTime, 'HH:mm', currentSummit.time_zone.name);\n // create UI\n let slot = startTimeTZ;\n do {\n tmpList.push(slot);\n slot = slot.clone();\n slot.add(interval, 'm');\n done = slot.isAfter(endTimeTZ);\n } while (!done);\n\n setTimeSlotsList(tmpList);\n };\n\n const {\n events,\n startTime,\n endTime,\n interval,\n pixelsPerMinute,\n currentDay,\n currentSummit,\n canDropEvent,\n onEditEvent,\n onUnPublishEvent,\n onClickSelected,\n selectedPublishedEvents\n } = props;\n\n return (\n <div className=\"row outer-schedule-events-container\" ref={listRef}>\n <div className=\"col-md-2 no-margin no-padding\">\n {\n timeSlotsList.map((slot, idx) => (\n <TimeSlot timeLabel={slot.format(\"HH:mm\")} key={idx} id={slot.format(\"HH_mm\")}/>\n ))\n }\n </div>\n <div\n className=\"schedule-events-container col-md-10 no-margin no-padding\"\n ref={scheduleEventContainer}\n >\n {\n timeSlotsList.map((slot, idx) => (\n <TimeSlotContainer\n timeSlot={slot}\n canDropEvent={canDropEvent}\n onDroppedEvent={onDroppedEvent}\n key={`timeslot-${idx}`}\n events={events}\n currentSummit={currentSummit}\n interval={interval}\n pixelsPerMinute={pixelsPerMinute}\n currentDay={currentDay}>\n </TimeSlotContainer>\n ))\n }\n {\n events.map((event, idx) => {\n return (\n <ScheduleEvent\n event={event}\n selectedPublishedEvents={selectedPublishedEvents}\n key={`event-${event.id}-${event.last_edited}-${interval}`}\n type={\"MAIN\"}\n step={pixelsPerMinute * 5}\n minHeight={(pixelsPerMinute * 10)}\n initialTop={calculateInitialTop(event)}\n initialHeight={calculateInitialHeight(event)}\n canResize={canResize}\n allowResize={props.allowResize}\n allowDrag={props.allowDrag}\n onResized={onResized}\n maxHeight={getMaxHeight}\n onUnPublishEvent={onUnPublishEvent}\n onEditEvent={onEditEvent}\n onClickSelected={onClickSelected}\n currentDay={currentDay}\n onMoveEvent={props.onMoveEvent}\n >\n </ScheduleEvent>)\n })\n }\n </div>\n </div>\n );\n}\n\nexport default ScheduleEventList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@react-pdf/renderer\");","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Document, Page, StyleSheet, View, Text, Image } from '@react-pdf/renderer';\nimport { convertSVGtoImg, getEventHosts, getEventLocation, epochToMomentTimeZone } from '../../utils/methods';\n\n// Create styles\nconst styles = StyleSheet.create({\n header: {\n fontSize: '18px',\n textAlign: 'center'\n },\n headlineWrapper: {\n margin: '0 10px 20px',\n display: 'flex',\n flexDirection: 'row',\n },\n headline: {\n margin: 'auto'\n },\n logo: {\n marginRight: '20px',\n backgroundColor: 'lightgray'\n },\n subtitle: {\n padding: '10px',\n fontSize: '12px',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n label: {\n fontSize: '8px',\n textTransform: 'uppercase'\n },\n eventList: {\n flexDirection: 'column',\n display: 'flex',\n overflow: 'hidden',\n padding: '20px'\n },\n eventWrapper: {\n margin: 5,\n padding: 5,\n border: '1px solid black'\n },\n locationWrapper: {\n marginBottom: 8,\n fontSize: '10px',\n color: '#4A4A4A',\n fontWeight: 600,\n },\n title: {\n marginBottom: 10,\n display: 'inline-flex',\n fontSize: '12px',\n color: '#4A4A4A',\n fontWeight: 600,\n },\n footer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%'\n },\n leftCol: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n maxWidth: '65%',\n },\n speakers: {\n fontSize: '10px',\n color: '#4A4A4A',\n },\n trackWrapper: {\n fontWeight: 'bold',\n fontSize: '10px',\n position: 'relative',\n marginTop: 'auto',\n },\n rightCol: {\n maxWidth: '35%'\n },\n tagsWrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'right'\n },\n tag: {\n backgroundColor: '#F6F6F6',\n borderRadius: '8px',\n height: '10px',\n margin: '4px 4px 0 0',\n padding: '1px 2px',\n textTransform: 'uppercase',\n fontSize: '6px',\n color: '#4A4A4A',\n }\n});\n\nconst SchedulePrintView = ({ events, summit, nowUtc }) => {\n const [imgData, setImgData] = useState(null);\n const getSpeakers = (event) => {\n const speakerTags = getEventHosts(event).map(sp => `${sp.first_name} ${sp.last_name}`);\n\n if (speakerTags.length > 0) {\n return (\n <View style={styles.speakers}>\n <Text>By {speakerTags.join(', ')}</Text>\n </View>\n );\n }\n\n return null;\n };\n\n const sortedEvents = events.sort((a,b) => a.start_date - b.start_date);\n const venue = summit.locations.find(l => l.class_name === 'SummitVenue');\n const summitStart = epochToMomentTimeZone(summit.start_date, summit.time_zone_id).format('MMMM Do YYYY');\n const summitEnd = epochToMomentTimeZone(summit.end_date, summit.time_zone_id).format('MMMM Do YYYY');\n \n useEffect(() => {\n if (summit.logo) {\n const getPngLogo = async () => {\n const _imgData = await convertSVGtoImg(summit.logo);\n setImgData(_imgData);\n }\n\n getPngLogo();\n }\n }, [summit.logo])\n\n if (!imgData) return null;\n\n return (\n <Document>\n <Page size='A4' style={styles.eventList}>\n <View style={styles.header}>\n <View style={styles.headlineWrapper}>\n <Image src={imgData.url} style={{...styles.logo, width: imgData.width, height: imgData.height}} />\n <Text style={styles.headline}>Schedule for {summit.name}</Text>\n </View>\n <View style={styles.subtitle}>\n <View>\n <Text style={styles.label}>Venue:</Text><Text>{venue?.name}</Text>\n </View>\n <View>\n <Text style={styles.label}>Start:</Text><Text>{summitStart}</Text>\n </View>\n <View>\n <Text style={styles.label}>End:</Text><Text>{summitEnd}</Text>\n </View>\n </View>\n </View>\n {sortedEvents.map(event => {\n const eventDate = epochToMomentTimeZone(event.start_date, summit.time_zone_id).format('ddd, MMMM D');\n const eventStartTime = epochToMomentTimeZone(event.start_date, summit.time_zone_id).format('h:mma');\n const eventEndTime = epochToMomentTimeZone(event.end_date, summit.time_zone_id).format('h:mma');\n const venueCount = summit.locations.filter(loc => loc.class_name === 'SummitVenue');\n const locationStr = getEventLocation(event, venueCount, summit.start_showing_venues_date, nowUtc);\n const eventColorStyle = event.eventColor ? {borderLeft: `4px solid ${event.eventColor}`} : {};\n\n return (\n <View\n style={{...styles.eventWrapper, ...eventColorStyle}}\n key={`event-${event.id}`}\n wrap={false}\n >\n <View style={styles.locationWrapper}>\n <Text>\n {`${eventDate}, ${eventStartTime} - ${eventEndTime} | ${locationStr}`}\n </Text>\n </View>\n <View style={styles.title}>\n <Text>{event.title}</Text>\n </View>\n <View style={styles.footer}>\n <View style={styles.leftCol}>\n {event.track &&\n <View style={styles.trackWrapper}>\n <Text>{event.track?.name}</Text>\n </View>\n }\n {(event.speakers?.length > 0 || event.moderator) &&\n <View>\n {getSpeakers(event)}\n </View>\n }\n </View>\n <View style={styles.rightCol}>\n <View style={styles.tagsWrapper}>\n {event.tags?.map(t =>\n <View key={`tag-${t.id}-${event.id}`} style={styles.tag}>\n <Text>{t.tag}</Text>\n </View>\n )}\n </View>\n </View>\n </View>\n </View>\n );\n })}\n </Page>\n </Document>\n );\n};\n\nSchedulePrintView.propTypes = {\n events: PropTypes.array.isRequired,\n summit: PropTypes.object.isRequired\n};\n\nexport default SchedulePrintView;\n\n","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"XZyB3zy09oNiJPYXzMaR\",\"cal\":\"V8lrMEK6XXJUFDwsrtSs\"};","import React, {useState} from 'react'\nimport {PDFDownloadLink} from '@react-pdf/renderer';\nimport SchedulePrintView from \"../schedule-print/schedule-print-view\";\nimport styles from './styles.module.scss'\n\n\nconst SchedulePrintButton = ({events, summit, nowUtc = null}) => {\n const [downloadPdf, setDownloadPdf] = useState(false);\n \n return (\n <>\n {!downloadPdf &&\n <button className={`${styles.button} ${styles.cal}`} onClick={() => setDownloadPdf(true)}>\n <i className='fa fa-print' aria-hidden='true'/>\n Print\n </button>\n }\n \n {downloadPdf &&\n <PDFDownloadLink\n className={`${styles.button} ${styles.cal}`}\n document={<SchedulePrintView events={events} summit={summit} nowUtc={nowUtc}/>}\n fileName=\"schedule.pdf\"\n >\n {({blob, url, loading, error}) => {\n return (!blob || loading ? 'Creating document...' : 'Download PDF');\n }\n }\n </PDFDownloadLink>\n }\n </>\n );\n}\n\nexport default SchedulePrintButton;\n","import React, {useEffect, useMemo} from 'react';\nimport SummitDaysSelect from \"../inputs/summit-days-select\";\nimport SummitVenuesSelect from \"../inputs/summit-venues-select\";\nimport SteppedSelect from \"../inputs/stepped-select/index.jsx\";\nimport ScheduleEventList from \"./schedule-event-list\";\nimport {epochToMomentTimeZone, parseLocationHour} from \"../../utils/methods\";\nimport BulkActionsSelector from \"../bulk-actions-selector/index.js\";\nimport {bulkOptions, PixelsPerMinute, SlotSizeOptions, TBALocation} from \"./constants\";\nimport SchedulePrintButton from \"../schedule-print/schedule-print-button\";\n\nimport './schedule-builder-view.less';\n\nconst getDaysOptions = (summit, trackSpaceTime, currentLocation) => {\n const days = [];\n const summitLocalStartDate = epochToMomentTimeZone(summit.start_date, summit.time_zone_id);\n const summitLocalEndDate = epochToMomentTimeZone(summit.end_date, summit.time_zone_id);\n let currentAuxDay = summitLocalStartDate.clone();\n const allowedDays =\n trackSpaceTime\n ?.find(sp => sp.location_id === currentLocation?.id)\n ?.allowed_timeframes?.map(\n at => epochToMomentTimeZone(at.day, summit.time_zone_id).format(\"YYYY-MM-DD\")\n ) || null;\n \n do {\n const option = {\n value: currentAuxDay.format(\"YYYY-MM-DD\"),\n label: currentAuxDay.format('dddd Do , MMMM YYYY')\n };\n \n if (!allowedDays || allowedDays.length === 0 || allowedDays.includes(option.value)) {\n days.push(option);\n }\n currentAuxDay = currentAuxDay.clone();\n currentAuxDay.add(1, 'day');\n } while (!currentAuxDay.isAfter(summitLocalEndDate));\n \n return days;\n};\n\nconst getVenuesOptions = (summit, trackSpaceTime) => {\n const venues = [{value: TBALocation, label: TBALocation.name}];\n const allowedLocationIds = trackSpaceTime?.map(st => st.location_id) || null;\n \n const locations = summit.locations.filter(loc => {\n const isNotVenue = loc.class_name !== \"SummitVenue\";\n const isAllowed = allowedLocationIds ? allowedLocationIds.includes(loc.id) : true;\n return isNotVenue && isAllowed;\n })\n \n locations.forEach(loc => {\n const option = {value: loc, label: loc.name};\n venues.push(option);\n if (loc.hasOwnProperty('rooms')) {\n loc.rooms.forEach(r => {\n const subOption = {value: r, label: r.name};\n venues.push(subOption);\n })\n }\n })\n \n return venues;\n};\n\nconst getTimeframe = (currentDay, currentLocation, trackSpaceTime, summitTZ) => {\n if (currentDay && currentLocation && trackSpaceTime) {\n const allowedDays = trackSpaceTime.find(st => st.location_id === currentLocation.id)?.allowed_timeframes;\n \n if (allowedDays?.length > 0) {\n const allowedTimeFrame = allowedDays?.find(tf => epochToMomentTimeZone(tf.day, summitTZ).format(\"YYYY-MM-DD\") === currentDay);\n if (allowedTimeFrame) {\n return {open: parseLocationHour(allowedTimeFrame.opening_hour), close: parseLocationHour(allowedTimeFrame.closing_hour)};\n }\n }\n }\n \n if (currentLocation?.opening_hour && currentLocation?.closing_hour) {\n return {open: parseLocationHour(currentLocation.opening_hour), close: parseLocationHour(currentLocation.closing_hour)};\n }\n \n return {open: \"00:00\", close: \"23:50\"};\n};\n\nconst ScheduleBuilderView = ({\n summit,\n trackSpaceTime,\n scheduleEvents,\n selectedEvents,\n currentDay,\n currentVenue,\n slotSize,\n hideBulkSelect,\n ...props\n }) => {\n const days = useMemo(() => getDaysOptions(summit, trackSpaceTime, currentVenue), [summit.start_date, summit.end_date, trackSpaceTime, currentVenue]);\n const venues = useMemo(() => getVenuesOptions(summit, trackSpaceTime), [summit.locations, trackSpaceTime]);\n const slotSizeOptions = SlotSizeOptions.map(op => ({value: op, label: `${op} min.`}));\n const {allowResize = true, allowDrag = true} = props;\n const {open, close} = useMemo(() => getTimeframe(currentDay, currentVenue, trackSpaceTime, summit.time_zone_id), [currentDay, currentVenue, trackSpaceTime]);\n \n useEffect(() => {\n // if new location doesn't allow currentDay value, reset\n if (currentDay && !days.find(op => op.value === currentDay)) {\n props.onDayChanged(null);\n }\n }, [currentVenue])\n \n return (\n <div className=\"schedule-view-wrapper\">\n {(props.onSlotSizeChange || props.showPrint) &&\n <div className=\"row\" style={{marginBottom: 12, marginTop: 2}}>\n {props.onSlotSizeChange &&\n <div className=\"col-md-6\">\n <span>Slot size: </span>\n <SteppedSelect\n value={slotSize}\n onChange={props.onSlotSizeChange}\n options={slotSizeOptions}\n style={{display: 'inline-block', marginLeft: 10}}\n />\n </div>\n }\n {props.showPrint &&\n <div className=\"col-md-6 pull-right\">\n <SchedulePrintButton summit={summit} events={scheduleEvents} />\n </div>\n }\n </div>\n }\n <div className=\"row\">\n <div className=\"col-md-6\">\n <SummitVenuesSelect\n onVenueChanged={props.onVenueChanged}\n venues={venues}\n currentValue={currentVenue}\n placeholder=\"Select Room\"\n />\n </div>\n <div className=\"col-md-6\">\n <SummitDaysSelect\n onDayChanged={props.onDayChanged}\n days={days}\n currentValue={currentDay}\n placeholder=\"Select Day\"\n />\n </div>\n </div>\n <BulkActionsSelector\n bulkOptions={props.customBulkOptions || bulkOptions}\n onSelectAll={props.onSelectAll}\n onSelectedBulkAction={props.onSelectedBulkAction}\n show={!hideBulkSelect && scheduleEvents.length > 0}\n />\n \n {currentDay && currentVenue &&\n <ScheduleEventList\n startTime={open}\n endTime={close}\n currentSummit={summit}\n interval={slotSize}\n currentDay={currentDay}\n pixelsPerMinute={PixelsPerMinute}\n canDropEvent={props.canDropEvent}\n allowResize={allowResize}\n allowDrag={allowDrag}\n onScheduleEvent={props.onScheduleEvent}\n events={scheduleEvents}\n onUnPublishEvent={props.onUnPublishEvent}\n onEditEvent={props.onEditEvent}\n onClickSelected={props.onClickSelected}\n selectedPublishedEvents={selectedEvents}\n onMoveEvent={props.onMoveSingleEvent}\n />\n }\n </div>\n );\n}\n\nexport default ScheduleBuilderView;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\n\n\nexport default class Panel extends React.Component {\n\n render() {\n\n let {children, show, title, handleClick, className, id} = this.props;\n let theId = this.props.hasOwnProperty('id') ? id : `id_${title}`;\n let theClass = this.props.hasOwnProperty('className') ? className : '';\n\n return (\n <div className={\"panel-group \" + theClass} id={theId} >\n <div className=\"panel panel-default\">\n <a className={show ? 'collapsed' : ''} onClick={handleClick}>\n <div className=\"panel-heading\">\n <h4 className=\"panel-title\">\n {title}\n </h4>\n </div>\n </a>\n <div className=\"panel-collapse collapse in\">\n {show &&\n <div className=\"panel-body\">\n {children}\n </div>\n }\n </div>\n </div>\n </div>\n );\n\n }\n}","export const AUTH_ERROR_MISSING_AUTH_INFO = 'AUTH_ERROR_MISSING_AUTH_INFO';\nexport const AUTH_ERROR_MISSING_REFRESH_TOKEN = 'AUTH_ERROR_MISSING_REFRESH_TOKEN';\nexport const AUTH_ERROR_ACCESS_TOKEN_EXPIRED = 'AUTH_ERROR_ACCESS_TOKEN_EXPIRED';\nexport const AUTH_ERROR_LOCK_ACQUIRE_ERROR = 'AUTH_ERROR_LOCK_ACQUIRE_ERROR'\nexport const AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR = 'AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR';\nexport const AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR = 'AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR';\nexport const AUTH_ERROR_ID_TOKEN_INVALID = 'AUTH_ERROR_ID_TOKEN_INVALID';\nexport const AUTH_ERROR_MISSING_OTP_PARAM = 'AUTH_ERROR_MISSING_OTP_PARAM';\nexport const AUTH_ERROR_MISSING_PKCE_PARAM = 'AUTH_ERROR_MISSING_PKCE_PARAM';\nexport const AUTH_ERROR_MISSING_NONCE_PARAM = 'AUTH_ERROR_MISSING_NONCE_PARAM';\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"browser-tabs-lock\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"js-cookie\");","import {\n base64URLEncode,\n getAuthCallback,\n getCurrentLocation,\n getCurrentPathName,\n getFromLocalStorage,\n removeFromLocalStorage,\n getOrigin,\n putOnLocalStorage,\n retryPromise,\n setSessionClearingState,\n} from \"../../utils/methods\";\nimport moment from \"moment-timezone\";\nimport request from 'superagent/lib/client';\nimport SuperTokensLock from 'browser-tabs-lock';\nimport Cookies from 'js-cookie'\n\nlet http = request;\n\n/**\n * @ignore\n */\nconst Lock = new SuperTokensLock();\n/**\n * @ignore\n */\nconst GET_TOKEN_SILENTLY_LOCK_KEY = 'openstackuicore.lock.getTokenSilently';\nconst GET_TOKEN_SILENTLY_LOCK_KEY_TIMEOUT = 6000;\nconst NONCE_LEN = 16;\nexport const ACCESS_TOKEN_SKEW_TIME = 60;\nexport const RESPONSE_TYPE_IMPLICIT = \"token id_token\";\nexport const RESPONSE_TYPE_CODE = 'code';\nconst AUTH_INFO = 'authInfo';\nconst NONCE = 'nonce';\nconst PKCE = 'pkce';\nconst ID_TOKEN = 'idToken';\n\nimport URI from \"urijs\";\nimport IdTokenVerifier from \"idtoken-verifier\";\nimport {SET_LOGGED_USER} from \"./actions\";\nimport {getRandomBytes, getSHA256} from \"../../utils/crypto\";\n\nimport {\n AUTH_ERROR_ACCESS_TOKEN_EXPIRED,\n AUTH_ERROR_MISSING_AUTH_INFO,\n AUTH_ERROR_MISSING_REFRESH_TOKEN,\n AUTH_ERROR_LOCK_ACQUIRE_ERROR,\n AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR,\n AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR,\n AUTH_ERROR_ID_TOKEN_INVALID,\n AUTH_ERROR_MISSING_OTP_PARAM,\n AUTH_ERROR_MISSING_PKCE_PARAM,\n AUTH_ERROR_MISSING_NONCE_PARAM,\n} from \"./constants\";\n\n/**\n *\n * @param backUrl\n * @param prompt\n * @param tokenIdHint\n * @param provider\n * @param loginHint\n * @param otpLoginHint\n * @param tenant\n * @returns {*}\n */\nexport const getAuthUrl = (\n backUrl = null,\n prompt = null,\n tokenIdHint = null,\n provider = null,\n loginHint = null,\n otpLoginHint = null,\n tenant = null) => {\n\n let oauth2ClientId = getOAuth2ClientId();\n let redirectUri = getAuthCallback();\n let baseUrl = getOAuth2IDPBaseUrl();\n let scopes = getOAuth2Scopes();\n let flow = getOAuth2Flow();\n\n if (backUrl != null)\n redirectUri += `?BackUrl=${encodeURI(backUrl)}`;\n\n let nonce = createNonce(NONCE_LEN);\n\n // store nonce to check it later\n putOnLocalStorage(NONCE, nonce);\n let url = URI(`${baseUrl}/oauth2/auth`);\n\n let query = {\n \"response_type\": encodeURI(flow),\n \"scope\": encodeURI(scopes),\n \"nonce\": nonce,\n \"response_mode\": 'fragment',\n \"client_id\": encodeURI(oauth2ClientId),\n \"redirect_uri\": encodeURI(redirectUri)\n };\n\n if (flow === RESPONSE_TYPE_CODE) {\n const pkce = createPKCECodes()\n putOnLocalStorage(PKCE, JSON.stringify(pkce));\n query['code_challenge'] = pkce.codeChallenge;\n query['code_challenge_method'] = 'S256';\n query['approval_prompt'] = 'force';\n }\n\n if (prompt) {\n query['prompt'] = prompt;\n }\n\n if (scopes && scopes.includes('offline_access')) {\n // then we need to force prompt=consent bc we are requesting an offline access\n // and we need to let the user know\n query['prompt'] = 'consent';\n }\n\n if (tokenIdHint) {\n query['id_token_hint'] = tokenIdHint;\n }\n\n if (provider) {\n query['provider'] = provider;\n }\n\n if (otpLoginHint) {\n query['otp_login_hint'] = otpLoginHint;\n }\n\n if (loginHint) {\n query['login_hint'] = encodeURI(loginHint);\n }\n\n if (tenant) {\n query['tenant'] = tenant;\n }\n\n url = url.query(query);\n //console.log(`getAuthUrl ${url.toString()}`);\n return url;\n}\n\n/**\n * @param idToken\n * @returns {*}\n */\nexport const getLogoutUrl = (idToken = null) => {\n let baseUrl = getOAuth2IDPBaseUrl();\n let oauth2ClientId = getOAuth2ClientId();\n let url = URI(`${baseUrl}/oauth2/end-session`);\n let state = createNonce(NONCE_LEN);\n let postLogOutUri = `${getOrigin()}/auth/logout`;\n // store nonce to check it later\n putOnLocalStorage('post_logout_state', state);\n /**\n * post_logout_redirect_uri should be listed on oauth2 client settings\n * on IDP\n * \"Security Settings\" Tab -> Logout Options -> Post Logout Uris\n */\n const queryParams = {\n \"post_logout_redirect_uri\": encodeURI(postLogOutUri),\n \"client_id\": encodeURI(oauth2ClientId),\n \"state\": state,\n }\n\n if (idToken)\n queryParams.id_token_hint = idToken;\n\n return url.query(queryParams);\n}\n\nconst createNonce = (len) => {\n let possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let nonce = '';\n for (let i = 0; i < len; i++) {\n nonce += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return nonce;\n}\n\n/**\n *\n * @param backUrl\n * @param provider\n * @param prompt\n * @param loginHint\n * @param otpLoginHint\n * @param tenant\n */\nexport const doLogin = (\n backUrl = null,\n provider = null,\n prompt = null,\n loginHint = null,\n otpLoginHint = null,\n tenant = null\n) => {\n let url = getAuthUrl(backUrl, prompt, null, provider, loginHint, otpLoginHint, tenant);\n let location = getCurrentLocation()\n location.replace(url.toString());\n}\n\n/**\n *\n * @param backUrl\n * @param loginHint\n * @param otpLoginHint\n */\nexport const doLoginBasicLogin = (backUrl = null, loginHint = null, otpLoginHint = null) => {\n doLogin(backUrl, null, null, loginHint, otpLoginHint);\n}\n\nconst createPKCECodes = () => {\n const codeVerifier = base64URLEncode(getRandomBytes(64))\n const codeChallenge = getSHA256(codeVerifier, 'Base64url')\n const createdAt = new Date()\n const codePair = {\n codeVerifier,\n codeChallenge,\n createdAt\n }\n return codePair\n}\n\nexport const emitAccessToken = async (code, backUrl = null) => {\n\n let baseUrl = getOAuth2IDPBaseUrl();\n let oauth2ClientId = getOAuth2ClientId();\n let redirectUri = getAuthCallback();\n let pkce = JSON.parse(getFromLocalStorage(PKCE, true));\n\n if (!pkce)\n throw Error(AUTH_ERROR_MISSING_PKCE_PARAM);\n\n if (backUrl != null)\n redirectUri += `?BackUrl=${encodeURI(backUrl)}`;\n\n const payload = {\n 'code': code,\n 'grant_type': 'authorization_code',\n 'code_verifier': pkce.codeVerifier,\n \"client_id\": encodeURI(oauth2ClientId),\n \"redirect_uri\": encodeURI(redirectUri)\n };\n\n try {\n //const response = await http.post(`${baseUrl}/oauth2/token`, payload);\n //const {body: {access_token, refresh_token, id_token, expires_in}} = response;\n const response = await fetch(`${baseUrl}/oauth2/token`, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }).catch(function (error) {\n console.log('Request failed:', error.message);\n });\n const json = await response.json();\n let {access_token, refresh_token, id_token, expires_in, error, error_description} = json;\n return {access_token, refresh_token, id_token, expires_in, error, error_description}\n } catch (err) {\n console.log(err);\n }\n};\n\nexport const MAX_RETRIES = 5;\nexport const BACKOFF_BASE_MS = 1000;\nexport const REFRESH_TOKEN_FETCH_TIMEOUT_MS = 10000;\n\nexport const retryWithBackoff = async (fn, maxRetries = MAX_RETRIES, baseDelayMs = BACKOFF_BASE_MS) => {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n // only retry transient network/server errors — everything else fails fast\n const isRetryable = err.message && err.message.startsWith(AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR);\n if (!isRetryable || attempt === maxRetries - 1) {\n throw err;\n }\n const delay = baseDelayMs * Math.pow(2, attempt);\n console.log(`retryWithBackoff retry ${attempt + 1}/${maxRetries} in ${delay}ms`);\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n }\n};\n\nconst processRefreshToken = async (flow, refreshToken) => {\n\n if (flow === RESPONSE_TYPE_CODE && useOAuth2RefreshToken()) {\n if (!refreshToken) {\n clearAuthInfo();\n throw Error(AUTH_ERROR_MISSING_REFRESH_TOKEN);\n }\n\n let response = await retryWithBackoff(() => refreshAccessToken(refreshToken));\n let {access_token, expires_in, refresh_token, id_token} = response;\n if (typeof refresh_token === 'undefined') {\n refresh_token = null; // not using rotate policy\n }\n storeAuthInfo(access_token, expires_in, refresh_token, id_token);\n return access_token;\n }\n clearAuthInfo();\n throw Error(AUTH_ERROR_ACCESS_TOKEN_EXPIRED);\n}\n\n/**\n * @returns {Promise<*>}\n * @private\n */\nconst _getAccessToken = async () => {\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken`);\n let authInfo = getAuthInfo();\n\n if (!authInfo) {\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken AUTH_ERROR_MISSING_AUTH_INFO`);\n throw Error(AUTH_ERROR_MISSING_AUTH_INFO);\n }\n\n let {accessToken, expiresIn, accessTokenUpdatedAt, refreshToken} = authInfo;\n let flow = getOAuth2Flow();\n // check lifetime\n const now = moment().unix();\n let timeElapsedSecs = (now - accessTokenUpdatedAt);\n\n expiresIn = (expiresIn - ACCESS_TOKEN_SKEW_TIME);\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken now ${now} accessTokenUpdatedAt ${accessTokenUpdatedAt} expiresIn ${expiresIn} timeElapsedSecs ${timeElapsedSecs}`)\n if (timeElapsedSecs >= expiresIn || accessToken == null) {\n console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken access token expired, refreshing it ...`);\n accessToken = await processRefreshToken(flow, refreshToken);\n }\n return accessToken;\n}\n\n/**\n * @returns {Promise<*|undefined>}\n */\nexport const getAccessToken = async () => {\n if (typeof navigator !== 'undefined' && navigator.locks) {\n return await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY, async lock => {\n console.log(`openstack-uicore-foundation::Security::methods::getAccessToken web lock api`, lock);\n return await _getAccessToken();\n });\n } else {\n if (\n await retryPromise(\n () => Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY, GET_TOKEN_SILENTLY_LOCK_KEY_TIMEOUT),\n 10\n )\n ) {\n try {\n return await _getAccessToken();\n } finally {\n await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY);\n }\n } else {\n // error on locking\n throw Error(AUTH_ERROR_LOCK_ACQUIRE_ERROR);\n }\n }\n}\n\n/**\n * @private\n */\nconst _clearAccessToken = () => {\n console.log(`openstack-uicore-foundation::Security::methods::_clearAccessToken`);\n\n let authInfo = getAuthInfo();\n\n if (!authInfo) {\n console.log(`openstack-uicore-foundation::Security::methods::_clearAccessToken AUTH_ERROR_MISSING_AUTH_INFO`);\n throw Error(AUTH_ERROR_MISSING_AUTH_INFO);\n }\n\n let {accessToken, expiresIn, accessTokenUpdatedAt, refreshToken} = authInfo;\n\n storeAuthInfo(null, 0, refreshToken)\n}\n\nexport const clearAccessToken = async () => {\n // see https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API\n if (typeof navigator !== 'undefined' && navigator.locks) {\n await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY, async lock => {\n console.log(`openstack-uicore-foundation::Security::methods::clearAccessToken web lock api`, lock);\n _clearAccessToken();\n });\n } else {\n if (\n await retryPromise(\n () => Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY, GET_TOKEN_SILENTLY_LOCK_KEY_TIMEOUT),\n 10\n )\n ) {\n try {\n _clearAccessToken();\n } finally {\n await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY);\n }\n } else {\n // error on locking\n throw Error(AUTH_ERROR_LOCK_ACQUIRE_ERROR);\n }\n }\n}\n\n\nexport const refreshAccessToken = async (refresh_token) => {\n\n let baseUrl = getOAuth2IDPBaseUrl();\n let oauth2ClientId = getOAuth2ClientId();\n\n const payload = {\n 'grant_type': 'refresh_token',\n \"client_id\": encodeURI(oauth2ClientId),\n \"refresh_token\": refresh_token\n };\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), REFRESH_TOKEN_FETCH_TIMEOUT_MS);\n\n let response;\n try {\n response = await fetch(`${baseUrl}/oauth2/token`, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload),\n signal: controller.signal\n });\n } catch (networkError) {\n // fetch rejects on network failures (DNS, timeout, no connectivity, abort)\n console.log('refreshAccessToken network error:', networkError.message);\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${networkError.message}`);\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (!response.ok) {\n console.log(`refreshAccessToken server error: ${response.status} - ${response.statusText}`);\n if (response.status >= 500 || response.status === 408 || response.status === 429) {\n // transient error (server error, request timeout, rate limit) — should be retried\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${response.status} - ${response.statusText}`);\n }\n // token is genuinely revoked — this is a real auth error\n setSessionClearingState(true);\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${response.status} - ${response.statusText}`);\n }\n\n let json;\n try {\n json = await response.json();\n } catch (parseError) {\n // IDP returned non-JSON (HTML error page, empty body, etc.) — treat as transient\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: invalid JSON response from IDP`);\n }\n let {access_token, refresh_token: new_refresh_token, expires_in, id_token} = json;\n // Defensively ensure we never propagate an undefined access token.\n if (!access_token) {\n setSessionClearingState(true);\n throw Error(`${AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: missing access_token in refresh response`);\n }\n return {access_token, refresh_token: new_refresh_token, expires_in, id_token}\n}\n\nexport const storeAuthInfo = (accessToken, expiresIn, refreshToken = null, idToken = null) => {\n\n let formerAuthInfo = getAuthInfo();\n\n let authInfo = {\n accessToken: accessToken,\n expiresIn: expiresIn,\n accessTokenUpdatedAt: Math.floor(Date.now() / 1000),\n };\n\n if (refreshToken == null && formerAuthInfo) {\n refreshToken = formerAuthInfo.refreshToken;\n }\n\n if (idToken == null && formerAuthInfo) {\n idToken = formerAuthInfo.idToken;\n }\n\n if (refreshToken) {\n authInfo['refreshToken'] = refreshToken;\n }\n\n if (idToken) {\n authInfo[ID_TOKEN] = idToken;\n Cookies.set(ID_TOKEN, idToken, {secure: true, sameSite: 'Lax'});\n } else {\n Cookies.remove(ID_TOKEN);\n }\n\n putOnLocalStorage(AUTH_INFO, JSON.stringify(authInfo));\n}\n\nexport const getAuthInfo = () => {\n try {\n let res = getFromLocalStorage(AUTH_INFO, false)\n if (!res) return null;\n return JSON.parse(res);\n } catch (err) {\n return null;\n }\n}\n\nexport const clearAuthInfo = () => {\n if (typeof window !== 'undefined') {\n removeFromLocalStorage(AUTH_INFO);\n Cookies.remove(ID_TOKEN);\n }\n};\n\nexport const getIdToken = () => {\n if (typeof window !== 'undefined') {\n const authInfo = getAuthInfo();\n if (authInfo) {\n return authInfo.idToken;\n }\n return null;\n }\n return null;\n};\n\nexport const getOAuth2ClientId = () => {\n if (typeof window !== 'undefined') {\n return window.OAUTH2_CLIENT_ID;\n }\n return null;\n};\n\nexport const getOAuth2Flow = () => {\n if (typeof window !== 'undefined') {\n return window.OAUTH2_FLOW || \"token id_token\";\n }\n return \"token id_token\";\n}\n\nexport const useOAuth2RefreshToken = () => {\n if (typeof window !== 'undefined') {\n return new Boolean(window.OAUTH2_USE_REFRESH_TOKEN || true);\n }\n return true;\n}\n\nexport const getOAuth2IDPBaseUrl = () => {\n if (typeof window !== 'undefined') {\n return window.IDP_BASE_URL;\n }\n return null;\n};\n\nexport const getOAuth2Scopes = () => {\n if (typeof window !== 'undefined') {\n return window.SCOPES;\n }\n return null;\n};\n\nexport const initLogOut = () => {\n let location = getCurrentLocation();\n location.replace(getLogoutUrl(getIdToken()).toString());\n}\n\nexport const validateIdToken = (idToken, issuer, audience) => {\n\n let verifier = new IdTokenVerifier({\n issuer: issuer,\n audience: audience\n });\n\n let storedNonce = getFromLocalStorage(NONCE, true);\n if (!storedNonce)\n throw Error(AUTH_ERROR_MISSING_NONCE_PARAM);\n\n let jwt = verifier.decode(idToken);\n let alg = jwt.header.alg;\n let kid = jwt.header.kid;\n let aud = jwt.payload.aud;\n let iss = jwt.payload.iss;\n let exp = jwt.payload.exp;\n let nbf = jwt.payload.nbf;\n let tnonce = jwt.payload.nonce || null;\n\n return tnonce == storedNonce && aud == audience && iss == issuer;\n}\n\nexport const passwordlessStart = (params) => {\n\n let oauth2ClientId = getOAuth2ClientId();\n let scopes = getOAuth2Scopes();\n let nonce = createNonce(NONCE_LEN);\n // store nonce to check it later\n putOnLocalStorage(NONCE, nonce);\n let baseUrl = getOAuth2IDPBaseUrl();\n let url = URI(`${baseUrl}/oauth2/auth`);\n\n let payload = {\n \"response_type\": \"otp\",\n \"scope\": encodeURI(scopes),\n \"nonce\": nonce,\n \"client_id\": encodeURI(oauth2ClientId),\n \"connection\": params.connection || \"email\",\n \"send\": params.send || \"code\",\n };\n\n if (params.hasOwnProperty('email')) {\n payload[\"email\"] = encodeURIComponent(params.email);\n }\n\n if (params.hasOwnProperty('phone_number')) {\n payload[\"phone_number\"] = encodeURIComponent(params.phone_number);\n }\n\n if (params.hasOwnProperty('redirect_uri')) {\n payload[\"redirect_uri\"] = encodeURIComponent(params.redirect_uri);\n }\n\n let req = http.post(url.toString());\n\n return req.send(payload).then((res) => {\n let json = res.body;\n return Promise.resolve({response: json});\n }).catch((err) => {\n return Promise.reject(err);\n });\n\n}\n\nexport const passwordlessLogin = (params) => (dispatch) => {\n\n let oauth2ClientId = getOAuth2ClientId();\n let scopes = getOAuth2Scopes();\n let baseUrl = getOAuth2IDPBaseUrl();\n let url = URI(`${baseUrl}/oauth2/token`);\n\n if (!params.hasOwnProperty(\"otp\")) {\n throw Error(AUTH_ERROR_MISSING_OTP_PARAM);\n }\n\n let payload = {\n \"grant_type\": \"passwordless\",\n \"connection\": params.connection || \"email\",\n \"scope\": encodeURI(scopes),\n \"client_id\": encodeURI(oauth2ClientId),\n \"otp\": params.otp\n };\n\n if (params.hasOwnProperty('email')) {\n payload[\"email\"] = encodeURIComponent(params.email);\n }\n\n if (params.hasOwnProperty('phone_number')) {\n payload[\"phone_number\"] = encodeURIComponent(params.phone_number);\n }\n\n let req = http.post(url.toString());\n\n return req.send(payload).then((res) => {\n try {\n // now we got token\n let json = res.body;\n let {access_token, expires_in, refresh_token, id_token} = json;\n\n if (typeof refresh_token === 'undefined') {\n refresh_token = null; // not using rotate policy\n }\n\n if (typeof id_token === 'undefined') {\n id_token = null; // not using rotate policy\n }\n\n // verify id token\n\n if (id_token) {\n if (!validateIdToken(id_token, baseUrl, oauth2ClientId)) {\n throw Error(AUTH_ERROR_ID_TOKEN_INVALID);\n }\n }\n\n storeAuthInfo(access_token, expires_in, refresh_token, id_token);\n\n if (dispatch) {\n dispatch({\n type: SET_LOGGED_USER,\n payload: {sessionState: null}\n });\n }\n\n return Promise.resolve({response: json});\n } catch (e) {\n console.log(e);\n return Promise.reject(e);\n }\n }).catch((err) => {\n return Promise.reject(err);\n });\n}\n\nexport const isIdTokenAlive = (nowEpoch = null) => () => {\n\n if (!nowEpoch) {\n nowEpoch = Math.floor(Date.now() / 1000);\n }\n\n const idToken = getIdToken();\n if (!idToken)\n throw Error('Id Token not set.');\n\n const issuer = getOAuth2IDPBaseUrl();\n const audience = getOAuth2ClientId();\n\n let verifier = new IdTokenVerifier({\n issuer: issuer,\n audience: audience\n });\n\n const jwt = verifier.decode(idToken);\n const exp = jwt.payload.exp;\n\n // check life time\n return exp - (nowEpoch + ACCESS_TOKEN_SKEW_TIME) > 0;\n}\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport './simple-link-list.less';\nimport AsyncSelect from 'react-select/lib/Async';\nimport Table from \"../table/Table\";\nimport T from 'i18n-react/dist/i18n-react';\nimport AsyncCreatableSelect from \"react-select/lib/AsyncCreatable\";\n\n\nclass SimpleLinkList extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: ''\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.getOptions = this.getOptions.bind(this);\n this.handleLink = this.handleLink.bind(this);\n this.filterOption = this.filterOption.bind(this);\n this.handleNew = this.handleNew.bind(this);\n this.getNewOptionData = this.getNewOptionData.bind(this);\n this.isValidNewOption = this.isValidNewOption.bind(this);\n }\n\n getOptions(input, callback) {\n let {options} = this.props;\n let defaultOptions = options.hasOwnProperty('defaultOptions') ? options.defaultOptions : undefined;\n\n if (!input && !defaultOptions) {\n return Promise.resolve({ options: [] });\n }\n\n this.props.options.actions.search(input, callback);\n }\n\n handleChange(value) {\n this.setState({value});\n }\n\n handleLink(ev) {\n ev.preventDefault();\n this.props.options.actions.add.onClick(this.state.value);\n this.setState({value: ''});\n }\n\n getNewOptionData(inputValue, optionLabel) {\n return {tag: optionLabel, id:inputValue};\n }\n\n isValidNewOption(inputValue, selectValue, selectOptions) {\n let {options} = this.props;\n let labelKey = options.hasOwnProperty('labelKey') ? options.labelKey : 'label';\n let optionFound = selectOptions.find(op => op[labelKey] == inputValue);\n return (!inputValue || optionFound) ? false : true;\n }\n\n handleNew(value) {\n this.props.options.onCreateTag(value, this.handleChange);\n }\n\n filterOption(candidate, inputValue) {\n let {options, values} = this.props;\n let allowDuplicates = this.props.hasOwnProperty('allowDuplicates');\n let labelKey = options.hasOwnProperty('labelKey') ? options.labelKey : 'label';\n\n if (allowDuplicates) return true;\n\n let optionFound = values.find(val => val[labelKey] === candidate.label);\n\n return !optionFound;\n }\n\n\n render() {\n\n let {options, values, columns} = this.props;\n let disabledAdd = (!this.state.value);\n\n let title = options.hasOwnProperty('title') ? options.title : 'Table';\n let valueKey = options.hasOwnProperty('valueKey') ? options.valueKey : 'value';\n let labelKey = options.hasOwnProperty('labelKey') ? options.labelKey : 'label';\n let allowCreate = options.hasOwnProperty('onCreateTag');\n let defaultOptions = options.hasOwnProperty('defaultOptions') ? options.defaultOptions : undefined;\n\n let tableOptions = {\n className: 'dataTable',\n actions: {\n delete: options.actions.delete\n }\n };\n\n if (options.hasOwnProperty('className')) {\n tableOptions.className = options.className;\n }\n\n if (options.actions.hasOwnProperty('edit')) {\n tableOptions.actions.edit = options.actions.edit;\n }\n\n if (options.actions.hasOwnProperty('custom')) {\n tableOptions.actions.custom = options.actions.custom;\n }\n\n if (options.hasOwnProperty('sortCol')) {\n values = values.sort(\n (a, b) => {\n const itemA = isNaN(a[options.sortCol]) ? a[options.sortCol].toLowerCase() : a[options.sortCol];\n const itemB = isNaN(b[options.sortCol]) ? b[options.sortCol].toLowerCase() : b[options.sortCol];\n return (itemA > itemB ? 1 : (itemA < itemB ? -1 : 0))\n }\n );\n }\n\n\n let AsyncComponent = null;\n\n if (allowCreate) {\n AsyncComponent =\n <AsyncCreatableSelect\n className=\"link-select btn-group text-left\"\n value={this.state.value}\n key={JSON.stringify(values)}\n getOptionValue={option => option[valueKey]}\n getOptionLabel={option => option[labelKey]}\n onChange={this.handleChange}\n loadOptions={this.getOptions}\n filterOption={this.filterOption}\n onCreateOption={this.handleNew}\n getNewOptionData={this.getNewOptionData}\n isValidNewOption={this.isValidNewOption}\n />;\n } else {\n AsyncComponent =\n <AsyncSelect\n className=\"link-select btn-group text-left\"\n value={this.state.value}\n key={JSON.stringify(values)}\n getOptionValue={option => option[valueKey]}\n getOptionLabel={option => option[labelKey]}\n onChange={this.handleChange}\n loadOptions={this.getOptions}\n filterOption={this.filterOption}\n defaultOptions={defaultOptions}\n />;\n }\n\n return (\n <div className=\"row simple-link-list\">\n <div className=\"col-md-4 simple-link-list-title\">\n <h4>{title}</h4>\n </div>\n <div className=\"col-md simple-link-list-buttons\">\n {AsyncComponent}\n <button type=\"button\" className=\"btn btn-default add-button\" onClick={this.handleLink} disabled={disabledAdd}>\n {T.translate(\"general.add\")}\n </button>\n </div>\n <div className=\"col-md-12\">\n <Table\n className=\"dataTable\"\n options={tableOptions}\n data={values}\n columns={columns}\n />\n </div>\n </div>\n );\n\n }\n}\n\nSimpleLinkList.propTypes = {\n values: PropTypes.array.isRequired,\n options: PropTypes.shape({\n title: PropTypes.string,\n sortCol: PropTypes.string,\n valueKey: PropTypes.string.isRequired,\n labelKey: PropTypes.string.isRequired,\n className: PropTypes.string,\n actions: PropTypes.shape({\n search: PropTypes.func.isRequired,\n delete: PropTypes.shape({onClick:PropTypes.func.isRequired}),\n add: PropTypes.shape({onClick:PropTypes.func.isRequired}),\n edit: PropTypes.shape({onClick:PropTypes.func.isRequired}),\n custom: PropTypes.array,\n }).isRequired\n }).isRequired,\n columns: PropTypes.array.isRequired\n}\n\nexport default SimpleLinkList;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport './summit-dropdown.less';\nimport Select from 'react-select';\nimport T from 'i18n-react/dist/i18n-react';\n\nexport default class SummitDropdown extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n summitValue: null,\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleChange(summit) {\n this.setState({summitValue: summit});\n }\n\n handleClick(ev) {\n ev.preventDefault();\n this.props.onClick(this.state.summitValue.value);\n }\n\n render() {\n\n let {summits, actionLabel, actionClass} = this.props;\n let summitOptions = summits\n .sort(\n (a, b) => (a.start_date < b.start_date ? 1 : (a.start_date > b.start_date ? -1 : 0))\n ).map(s => ({label: s.name, value: s.id}));\n\n let bigClass = this.props.hasOwnProperty('big') ? 'big' : '';\n const isDisabled = !this.state.summitValue;\n\n return (\n <div className={\"summit-dropdown btn-group \" + bigClass}>\n <Select\n id=\"summit-select\"\n value={this.state.summitValue}\n onChange={this.handleChange}\n options={summitOptions}\n placeholder={T.translate(\"general.select_summit\")}\n className=\"btn-group summit-select text-left\"\n isClearable={false}\n />\n <button type=\"button\" className={`btn btn-default ${actionClass}`} disabled={isDisabled} onClick={this.handleClick}>\n {actionLabel}\n </button>\n </div>\n );\n\n }\n}\n","import React from 'react';\n\nclass EditableTableHeading extends React.Component {\n\n constructor (props) {\n super(props);\n }\n\n render () {\n return (\n <th width={this.props.width}>\n {this.props.children}\n </th>\n );\n }\n\n}\n\nexport default EditableTableHeading;","import React from 'react';\n\nconst EditableTableCell = (props) => {\n\n if (props.is_edit) {\n return (\n <td>\n {!props.shouldUseTextArea &&\n <input type=\"text\" className=\"form-control\" defaultValue={props.children} name={props.name} id={props.id} onChange={props.handleChange}/>\n }\n {props.shouldUseTextArea &&\n <textarea className=\"form-control\" defaultValue={props.children} name={props.name} id={props.id} onChange={props.handleChange}/>\n }\n </td>\n );\n } else {\n return (\n <td>{props.children}</td>\n );\n }\n\n};\n\nexport default EditableTableCell;","import React from 'react';\n\nexport default class EditableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n is_editing: false\n }\n\n }\n\n onDelete(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.props.actions.delete(id);\n }\n\n onSave(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.setState({\n is_editing: false\n });\n\n this.props.actions.save(id);\n }\n\n onEdit(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.setState({\n is_editing: true\n });\n\n this.props.actions.edit(id);\n }\n\n onCancel(id, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n this.setState({\n is_editing: false\n });\n\n this.props.actions.cancel(id);\n }\n\n render() {\n let {actions, id} = this.props;\n\n if (this.state.is_editing) {\n return (\n <td className=\"actions\">\n <a href=\"\" onClick={this.onSave.bind(this,id)} data-tip=\"save\" >\n <i className=\"fa fa-floppy-o\"></i>\n </a>\n <a href=\"\" onClick={this.onCancel.bind(this,id)} data-tip=\"cancel\" >\n <i className=\"fa fa-times\"></i>\n </a>\n </td>\n );\n } else {\n return (\n <td className=\"actions\">\n {'edit' in actions &&\n <a href=\"\" onClick={this.onEdit.bind(this,id)} data-tip=\"edit\" >\n <i className=\"fa fa-pencil-square-o\"></i>\n </a>\n }\n {'delete' in actions &&\n <a href=\"\" onClick={this.onDelete.bind(this,id)} data-tip=\"delete\" >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n </td>\n );\n }\n }\n};\n","import React from 'react';\n\nexport default class EditableTableRow extends React.Component {\n\n render() {\n const { children, even, id } = this.props;\n\n return (\n <tr id={id} role=\"row\" className={even ? 'even' : 'odd'}>\n {children}\n </tr>\n );\n }\n}\n","import React from 'react';\nimport EditableTableHeading from './EditableTableHeading';\nimport EditableTableCell from './EditableTableCell';\nimport EditableActionsTableCell from './EditableActionsTableCell';\nimport EditableTableRow from './EditableTableRow';\nimport Swal from \"sweetalert2\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { Tooltip } from \"react-tooltip\";\nimport { shallowEqual } from '../../utils/methods'\n\nimport './editable-table.less';\n\n\nconst defaults = {\n colWidth: ''\n};\n\nconst createRow = (row, columns, actions, shouldUseTextArea) => {\n\n var action_buttons = '';\n var cells = columns.map((col,i) => {\n return (\n <EditableTableCell shouldUseTextArea={shouldUseTextArea} key={row['id'] + '_field' + i} name={col.columnKey} id={row.id} is_edit={row.is_edit} handleChange={actions.handleChange}>\n {row[col.columnKey]}\n </EditableTableCell>\n );\n });\n\n if (actions) {\n cells.push(<EditableActionsTableCell key={'actions_' + row['id']} id={row['id']} actions={actions}/>);\n }\n\n return cells;\n};\n\nconst createNewRow = (columns, new_row, addNew, handleChange, shouldUseTextArea) => {\n\n var cells = columns.map((col,i) => {\n let cell_value = (typeof new_row[col.columnKey] !== 'undefined') ? new_row[col.columnKey] : '';\n return (\n <td key={'new_row_' + i}>\n {shouldUseTextArea &&\n <textarea className=\"form-control\" id={'new_' + col.columnKey} name={col.columnKey} onChange={handleChange}\n value={cell_value}/>\n }\n {!shouldUseTextArea &&\n <input className=\"form-control\" id={'new_' + col.columnKey} name={col.columnKey} onChange={handleChange}\n value={cell_value}/>\n }\n </td>\n );\n });\n\n cells.push(\n <td key='add_new'>\n <button className=\"btn btn-default\" onClick={addNew}> Add </button>\n </td>\n );\n\n return cells;\n};\n\n\nexport default class EditableTable extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n rows: props.data,\n new_row: {}\n };\n\n // we store the delete and save functions in props cause we need to extend them\n this.onSave = props.options.actions?.save?.onClick;\n\n this.actions = props.options.actions || {};\n this.actions.edit = this.editRow.bind(this);\n this.actions.save = this.saveRow.bind(this);\n this.actions.delete = this.deleteClick.bind(this);\n this.actions.handleChange = this.onChangeCell.bind(this);\n this.actions.cancel = this.editRowCancel.bind(this);\n\n this.saveNewRow = this.saveNewRow.bind(this);\n this.handleNewChange = this.onChangeNewCell.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if(!shallowEqual(this.props.data, prevProps.data)) {\n this.setState({rows: this.props.data})\n }\n }\n\n saveRow(id, ev) {\n const { rows } = this.state;\n let row = rows.find(r => r.id == id);\n row.is_edit = false;\n\n this.editing_row = null;\n\n this.setState({\n rows: rows\n });\n\n this.onSave(row);\n }\n\n deleteClick(id) {\n let onDelete = this.props.options.actions?.delete?.onClick;\n let noAlert = this.props.options.hasOwnProperty('noAlert');\n\n if (noAlert) {\n onDelete(id);\n } else {\n Swal.fire({\n title: T.translate(\"general.are_you_sure\"),\n text: T.translate(\"general.remove_warning\"),\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n }).then(function(result){\n if (result.value) {\n onDelete(id);\n }\n });\n }\n }\n\n editRow(id, ev) {\n const { rows } = this.state;\n let row = rows.find(r => r.id == id);\n\n //save editing row for cancel\n this.editing_row = {...row};\n\n row.is_edit = true;\n\n this.setState({\n rows: rows\n });\n }\n\n editRowCancel(id, ev) {\n const { rows } = this.state;\n rows.forEach(r => {\n r.is_edit = false;\n });\n\n let rowIdx = rows.findIndex(r => r.id == id);\n\n rows[rowIdx] = this.editing_row;\n\n this.setState({\n rows: rows\n });\n }\n\n onChangeCell(ev) {\n const { rows } = this.state;\n let field = ev.target;\n let row = rows.find(r => r.id == field.id);\n\n row[field.name] = field.value;\n\n this.setState({\n rows: rows\n });\n }\n\n onChangeNewCell(ev) {\n const {new_row} = this.state;\n let field = ev.target;\n\n new_row[field.name] = field.value;\n\n this.setState({\n new_row: new_row\n });\n }\n\n saveNewRow(ev) {\n const {new_row} = this.state;\n ev.preventDefault();\n\n this.onSave(new_row);\n\n this.setState({\n new_row: {}\n });\n }\n\n render() {\n let {options, columns } = this.props;\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n let textArea = this.props.hasOwnProperty(\"textArea\");\n return (\n <div>\n <table className={\"table table-striped table-bordered editableTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col,i) => {\n let colWidth = (col.width) ? col.width : defaults.colWidth;\n return (\n <EditableTableHeading width={colWidth} key={'heading_' + i} >\n {col.value}\n </EditableTableHeading>\n );\n })}\n {this.actions &&\n <EditableTableHeading key='actions_heading' >\n Actions\n </EditableTableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && this.state.rows.map((row,i) => {\n if(Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr />\n }\n return (\n <EditableTableRow even={i%2 === 0} key={'row_' + row.id} id={row.id} >\n {createRow(row, columns, this.actions, textArea)}\n </EditableTableRow>\n\n );\n })}\n <EditableTableRow even={0} id='new_row' key='new_row'>\n {createNewRow(columns, this.state.new_row, this.saveNewRow, this.handleNewChange, textArea)}\n </EditableTableRow>\n </tbody>\n </table>\n <Tooltip delayShow={10} />\n </div>\n );\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass SelectableTableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t\tthis.handleSort = this.handleSort.bind(this);\n\t}\n\n\tgetSortClass() {\n\n\t\tif (!this.props.sortable) return null;\n\n\t\tswitch(this.props.sortDir) {\n\t\t\tcase 1:\n\t\t\t\treturn 'sorting_asc';\n\t\t\tcase -1:\n\t\t\t\treturn 'sorting_desc';\n\t\t\tdefault:\n\t\t\t\treturn this.props.sortable ? 'sorting' : null\n\t\t}\n\t}\n\n\thandleSort(e) {\n\t\te.preventDefault();\n\t\tif(!this.props.hasOwnProperty('onSort') || !this.props.sortable) return;\n\n\t\tthis.props.onSort(\n\t\t\tthis.props.columnIndex,\n\t\t\tthis.props.columnKey,\n\t\t\tthis.props.sortDir ? this.props.sortDir*-1 : 1,\n\t\t\tthis.props.sortFunc\n\t\t);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th onClick={this.handleSort}\n\t\t\t\tclassName={this.getSortClass()}\n\t\t\t\twidth={this.props.width}\n\t\t\t\t>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nSelectableTableHeading.propTypes = {\n\tonSort: PropTypes.func,\n\tsortDir: PropTypes.number,\n\tcolumnIndex: PropTypes.number,\n\tcolumnKey: PropTypes.any,\n\tsortable: PropTypes.bool,\n\tsortFunc: PropTypes.func\n};\n\nexport default SelectableTableHeading;","import React from 'react';\nimport RawHTML from '../raw-html';\n\nconst SelectableTableCell = (props) => {\n let {children} = props;\n\tlet value = '';\n\tif(children) {\n\t if (React.isValidElement(children)) {\n\t value = children;\n } else {\n\t value = <RawHTML>{children.toString()}</RawHTML>\n }\n }\n\n\treturn (\n\t\t<td {...props}>\n {value}\n\t\t</td>\n\t);\n};\n\nexport default SelectableTableCell;\n","import React from 'react';\n\nexport default class SelectableTableRow extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleEdit = this.handleEdit.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleEdit(id, ev) {\n // by pass\n if(ev.target.type === \"checkbox\")\n return;\n ev.stopPropagation();\n ev.preventDefault();\n this.props.actions.edit.onClick(id);\n }\n\n handleSelect(id, ev) {\n this.props.actions.edit.onSelected(id, ev.target.checked);\n }\n\n render() {\n\n let {even, actions, id, children, checked} = this.props;\n let canEdit = (actions?.edit && this.shouldDisplayAction(actions.edit));\n let rowClass = even ? 'even' : 'odd';\n\n if (canEdit) {\n return (\n <tr role=\"row\" className={rowClass + \" can-edit\"} onClick={this.handleEdit.bind(this, id)}>\n <td key={id + '_select'}>\n <input\n type=\"checkbox\"\n id={id + '_select'}\n name={id + '_select'}\n checked={checked}\n onChange={this.handleSelect.bind(this, id)}\n />\n </td>\n {children}\n </tr>\n );\n }\n\n return (\n <tr role=\"row\" className={rowClass}>\n <td key={id + '_select'} >\n <input\n type=\"checkbox\"\n id={id + '_select'}\n name={id + '_select'}\n checked={checked}\n onChange={this.handleSelect.bind(this, id)}\n />\n </td>\n {children}\n </tr>\n );\n\n }\n};\n\n","import React from 'react';\n\nexport default class SelectableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n this.shouldDisplayAction = this.shouldDisplayAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {actions.hasOwnProperty('custom') && actions.custom.map(a =>\n this.shouldDisplayAction(a) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React from 'react';\nimport SelectableTableHeading from './SelectableTableHeading';\nimport SelectableTableCell from './SelectableTableCell';\nimport SelectableTableRow from './SelectableTableRow';\nimport SelectableActionsTableCell from './SelectableActionsTableCell';\nimport { Tooltip } from 'react-tooltip'\nimport './selectable-table.less';\n\nconst defaults = {\n sortFunc: (a, b) => (a < b ? -1 : a > b ? 1 : 0),\n sortable: false,\n sortCol: 0,\n sortDir: 1,\n colWidth: \"\",\n};\n\nconst createRow = (row, columns, actions) => {\n var action_buttons = \"\";\n var cells = columns.map((col, i) => {\n if (col.hasOwnProperty(\"render\"))\n return (\n <SelectableTableCell\n key={row[\"id\"] + \"_field\" + i}\n name={col.columnKey}\n id={row.id}\n >\n {col.render(row, row[col.columnKey])}\n </SelectableTableCell>\n );\n\n return (\n <SelectableTableCell\n key={row[\"id\"] + \"_field\" + i}\n name={col.columnKey}\n id={row.id}\n >\n {row[col.columnKey]}\n </SelectableTableCell>\n );\n });\n\n if (actions) {\n cells.push(\n <SelectableActionsTableCell\n key=\"actions_cell\"\n id={row[\"id\"]}\n actions={actions}\n />\n );\n }\n\n return cells;\n};\n\nconst getSortDir = (columnKey, columnIndex, sortCol, sortDir) => {\n if (columnKey && columnKey === sortCol) {\n return sortDir;\n }\n if (sortCol === columnIndex) {\n return sortDir;\n }\n return null;\n};\n\nclass SelectableTable extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n let { options, columns } = this.props;\n let tableClass = options.hasOwnProperty(\"className\")\n ? options.className\n : \"\";\n tableClass += options.actions?.edit ? \" table-hover\" : \"\";\n\n return (\n <div>\n <table\n className={\n \"table table-striped selectableTable \" + tableClass\n }\n >\n <thead>\n <tr>\n <th>\n {!options.disableSelectAll && (\n <input\n type=\"checkbox\"\n id=\"select_all\"\n name=\"select_all\"\n onChange={\n options.actions?.edit?.onSelectedAll\n }\n checked={options.selectedAll}\n />\n )}\n </th>\n {columns.map((col, i) => {\n let sortCol =\n typeof options.sortCol != \"undefined\"\n ? options.sortCol\n : defaults.sortCol;\n let sortDir =\n typeof options.sortDir != \"undefined\"\n ? options.sortDir\n : defaults.sortDir;\n let sortFunc =\n typeof options.sortFunc != \"undefined\"\n ? options.sortFunc\n : defaults.sortFunc;\n let sortable =\n typeof col.sortable != \"undefined\"\n ? col.sortable\n : defaults.sortable;\n let colWidth =\n typeof col.width != \"undefined\"\n ? col.width\n : defaults.colWidth;\n\n return (\n <SelectableTableHeading\n onSort={this.props.onSort}\n sortDir={getSortDir(\n col.columnKey,\n i,\n sortCol,\n sortDir\n )}\n sortable={sortable}\n sortFunc={sortFunc}\n columnIndex={i}\n columnKey={col.columnKey}\n width={colWidth}\n key={\"heading_\" + i}\n >\n {col.value}\n </SelectableTableHeading>\n );\n })}\n {options.actions && (\n <SelectableTableHeading key=\"actions_heading\">\n {options.actionsHeader || \" \"}\n </SelectableTableHeading>\n )}\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 &&\n this.props.data.map((row, i) => {\n if (\n Array.isArray(row) &&\n row.length !== columns.length\n ) {\n console.warn(\n `Data at row ${i} is ${row.length}. It should be ${columns.length}.`\n );\n return <tr key={\"row_\" + i} />;\n }\n\n return (\n <SelectableTableRow\n checked={row.checked}\n even={i % 2 === 0}\n key={\"row_\" + row[\"id\"]}\n id={row[\"id\"]}\n actions={options.actions}\n >\n {createRow(\n row,\n columns,\n options.actions\n )}\n </SelectableTableRow>\n );\n })}\n </tbody>\n </table>\n <Tooltip delayShow={10} />\n </div>\n );\n }\n}\n\nexport default SelectableTable;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutability-helper\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dnd-html5-backend\");","import React from 'react';\n\nclass SortableTableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th width={this.props.width}>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nexport default SortableTableHeading;","import React from 'react';\n\nexport default class SortableActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('edit') && this.shouldDisplayAction(actions.edit) &&\n <a href=\"\" data-tip=\"edit\" onClick={this.handleAction.bind(this, actions.edit.onClick, id)} >\n <i className=\"fa fa-pencil-square-o\"></i>\n </a>\n }\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {'custom' in actions && actions.custom.map(a =>\n this.shouldDisplayAction(a, id) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React, { useRef } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport PropTypes from 'prop-types';\n\nconst SortableTableRow = ({ text, even, id, index, moveCard, dropItem, children, findRow }) => {\n const originalIndex = findRow(id).index;\n\n const style = {\n border: '1px dashed gray',\n padding: '0.5rem 1rem',\n marginBottom: '.5rem',\n backgroundColor: 'white',\n cursor: 'move',\n };\n\n const refRow = useRef(null);\n const [{ handlerId }, drop] = useDrop({\n accept: 'row',\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n };\n },\n hover(item, monitor) {\n if (!refRow.current) {\n return;\n }\n const dragIndex = item.index;\n const hoverIndex = index;\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return;\n }\n // Determine rectangle on screen\n const hoverBoundingRect = refRow.current?.getBoundingClientRect();\n // Get vertical middle\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n // Determine mouse position\n const clientOffset = monitor.getClientOffset();\n // Get pixels to the top\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n // Time to actually perform the action\n moveCard(dragIndex, hoverIndex);\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n item.index = hoverIndex;\n },\n });\n const [{ isDragging }, drag] = useDrag({\n type: 'row',\n item: () => {\n return { id, index };\n },\n end:(_item, monitor) => {\n const { id: droppedId, index } = _item;\n const didDrop = monitor.didDrop()\n if(didDrop)\n return dropItem(droppedId, index + 1)\n // rollback\n return moveCard(index, originalIndex);\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const opacity = isDragging ? 0 : 1;\n\n drag(drop(refRow));\n\n return (\n <tr id={id} ref={refRow} role=\"row\" className={even ? 'even' : 'odd'} style={{ ...style, opacity }}>\n {children}\n </tr>\n );\n}\n\nSortableTableRow.propTypes = {\n index: PropTypes.number.isRequired,\n id: PropTypes.any.isRequired,\n moveCard: PropTypes.func.isRequired,\n};\n\nexport default SortableTableRow;\n\n","import React, {useEffect, useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport update from 'immutability-helper';\nimport {DndProvider} from 'react-dnd'\nimport {HTML5Backend} from 'react-dnd-html5-backend'\nimport SortableTableHeading from './SortableTableHeading';\nimport SortableActionsTableCell from './SortableActionsTableCell';\nimport SortableTableRow from './SortableTableRow';\nimport T from 'i18n-react/dist/i18n-react';\nimport TableCell from \"../table/TableCell\";\nimport _ from 'lodash';\n\nimport './table-sortable.less';\n\nconst defaults = {\n colWidth: ''\n}\n\nconst createRow = (row, columns, actions) => {\n\n let cells = columns.map((col, i) => {\n if (col.hasOwnProperty(\"render\"))\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {col.render(row, row[col.columnKey])}\n </TableCell>\n );\n\n return (\n <TableCell key={'cell_' + i} title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}>\n {row[col.columnKey]}\n </TableCell>\n );\n });\n\n if (actions) {\n cells.push(<SortableActionsTableCell key='actions' id={row['id']} actions={actions}/>);\n }\n\n return cells;\n};\n\n\nconst renderNewRow = (columns, new_row, addNew, handleChange) => {\n\n let cells = columns.map((col, i) => {\n let cell_value = (typeof new_row[col.columnKey] !== 'undefined') ? new_row[col.columnKey] : '';\n\n if (col?.input === \"checkbox\")\n return (\n <td key={'new_row_' + i} className=\"checkbox-cell\">\n <input type=\"checkbox\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n onChange={handleChange}\n checked={cell_value}\n title={col?.value}\n />\n </td>);\n else\n return (\n <td key={'new_row_' + i}>\n <input\n className=\"form-control\"\n id={'new_' + col.columnKey}\n name={col.columnKey}\n placeholder={col?.value}\n onChange={handleChange}\n value={cell_value}/>\n </td>);\n\n });\n\n cells.push(\n <td key='add_new'>\n <button className=\"btn btn-default\" onClick={addNew}> Add</button>\n </td>\n );\n\n return cells;\n};\n\nconst SortableTable = ({data, options, columns, dropCallback, orderField, idField}) => {\n\n const [rows, setRows] = useState(data);\n const [newRow, setNewRow] = useState({});\n\n useEffect(() => {\n setRows(data);\n }, [data])\n\n\n const renderRow = (row, columns, options, index) => {\n return (\n <SortableTableRow even={index % 2 === 0} key={row.id} index={index} id={row.id}\n moveCard={moveRow}\n findRow={findRow}\n dropItem={onDropItem}>\n {createRow(row, columns, options.actions)}\n </SortableTableRow>\n )\n };\n\n const saveNewRow = (ev) => {\n ev.preventDefault();\n options?.actions?.save?.onClick(newRow);\n setNewRow({});\n }\n\n const sortRows = (rows2Sort) => {\n rows2Sort.sort(function (a, b) {\n const x = a[orderField];\n const y = b[orderField];\n return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n });\n return rows2Sort;\n }\n\n const findRow = useCallback(\n (id) => {\n const row = rows.filter((r) => r[idField] === id)[0]\n return {\n row,\n index: rows.indexOf(row),\n }\n },\n [rows],\n )\n\n const moveRow = useCallback(\n (dragIndex, hoverIndex) => {\n\n setRows((prevRows) => {\n\n prevRows = update(prevRows, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, prevRows[dragIndex]],\n ],\n });\n\n for (let i in prevRows) {\n prevRows[i][orderField] = parseInt(i) + 1;\n }\n\n return sortRows(prevRows)\n });\n },\n [rows, setRows],\n )\n\n const onDropItem = (id, newOrder) => {\n const sortedRows = sortRows(rows);\n setRows(sortedRows);\n dropCallback(sortedRows, id, newOrder)\n }\n\n const handleNewChange = (ev) => {\n let field = ev.target;\n let newRowTmp = {...newRow};\n let {name, value} = field;\n\n if (field.type === 'checkbox') {\n value = field.checked;\n }\n newRowTmp[name] = value;\n setNewRow(newRowTmp);\n }\n\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n let shouldRenderNewRow = options?.actions?.save?.onClick && options?.actions?.save?.onClick !== null;\n\n return (\n <div className=\"sortable-table-box\">\n <i>{T.translate(\"general.drag_and_drop\")}</i>\n <table className={\"table table-striped table-hover sortableTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col, i) => {\n let colWidth = (col.width) ? col.width : defaults.colWidth;\n return (\n <SortableTableHeading width={colWidth} key={i}>\n {col.value}\n </SortableTableHeading>\n );\n })}\n {options.actions &&\n <SortableTableHeading key='actions'>\n Actions\n </SortableTableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && rows.map((row, i) => {\n if (Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr/>\n }\n return (\n <DndProvider backend={HTML5Backend} key={i}>\n {renderRow(row, columns, options, i)}\n </DndProvider>\n );\n })}\n </tbody>\n {shouldRenderNewRow &&\n <tfoot>\n <tr>\n {renderNewRow(columns, newRow, saveNewRow, handleNewChange)}\n </tr>\n </tfoot>\n }\n </table>\n </div>\n );\n};\n\nSortableTable.defaultProps = {\n idField: 'id',\n}\n\nSortableTable.propTypes = {\n data: PropTypes.array.isRequired,\n options: PropTypes.shape({\n className: PropTypes.string,\n actions: PropTypes.object\n }).isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({\n columnKey: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n input: PropTypes.string,\n render: PropTypes.func,\n })).isRequired,\n dropCallback: PropTypes.func.isRequired,\n orderField: PropTypes.string.isRequired,\n idField: PropTypes.string,\n}\n\nexport default SortableTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass TableHeading extends React.Component {\n\n\tconstructor (props) {\n\t\tsuper(props);\n\t\tthis.handleSort = this.handleSort.bind(this);\n\t}\n\n\tgetSortClass() {\n\n\t\tif (!this.props.sortable) return null;\n\n\t\tswitch(this.props.sortDir) {\n\t\t\tcase 1:\n\t\t\t\treturn 'sorting_asc';\n\t\t\tcase -1:\n\t\t\t\treturn 'sorting_desc';\n\t\t\tdefault:\n\t\t\t\treturn this.props.sortable ? 'sorting' : null\n\t\t}\n\t}\n\n\thandleSort(e) {\n\t\te.preventDefault();\n\t\tif(!this.props.hasOwnProperty('onSort') || !this.props.sortable) return;\n\n\t\tthis.props.onSort(\n\t\t\tthis.props.columnIndex,\n\t\t\tthis.props.columnKey,\n\t\t\tthis.props.sortDir ? this.props.sortDir*-1 : 1,\n\t\t\tthis.props.sortFunc\n\t\t);\n\t}\n\n\trender () {\n\t\treturn (\n\t\t\t<th onClick={this.handleSort}\n\t\t\t\tclassName={this.getSortClass()}\n\t\t\t\twidth={this.props.width}\n\t\t\t\t>\n\t\t\t\t{this.props.children}\n\t\t\t</th>\n\t\t);\t\n\t}\n\t\n}\n\nTableHeading.propTypes = {\n\tonSort: PropTypes.func,\n\tsortDir: PropTypes.number,\n\tcolumnIndex: PropTypes.number,\n\tcolumnKey: PropTypes.any,\n\tsortable: PropTypes.bool,\n\tsortFunc: PropTypes.func\n};\n\nexport default TableHeading;","import React from 'react';\n\nexport default class TableRow extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleEdit = this.handleEdit.bind(this);\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleEdit(id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n this.props.actions.edit.onClick(id);\n }\n\n render() {\n let {even, actions, id, children} = this.props;\n let canEdit = (actions?.edit && this.shouldDisplayAction(actions.edit));\n let rowClass = even ? 'even' : 'odd';\n\n if (canEdit) {\n return (\n <tr role=\"row\" className={rowClass + \" can-edit\"} onClick={this.handleEdit.bind(this, id)}>\n {children}\n </tr>\n );\n } else {\n return (\n <tr role=\"row\" className={rowClass}>\n {children}\n </tr>\n );\n }\n }\n};\n\n","import React from 'react';\n\nexport default class ActionsTableCell extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.handleAction = this.handleAction.bind(this);\n this.shouldDisplayAction = this.shouldDisplayAction.bind(this);\n\n }\n\n shouldDisplayAction(action) {\n let {id} = this.props;\n\n if (!action.hasOwnProperty('display')) {\n return true;\n } else {\n return action.display(id);\n }\n }\n\n handleAction(action, id, ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n action(id);\n }\n\n render() {\n let {actions, id} = this.props;\n return (\n <td className=\"actions\" key=\"actions\">\n {actions.hasOwnProperty('delete') && this.shouldDisplayAction(actions.delete) &&\n <a href=\"\" data-tip=\"delete\" onClick={this.handleAction.bind(this, actions.delete.onClick, id)} >\n <i className=\"fa fa-trash-o delete-icon\"></i>\n </a>\n }\n {actions.hasOwnProperty('custom') && actions.custom.map(a =>\n this.shouldDisplayAction(a) &&\n <a href=\"\" data-tip={a.tooltip} key={'custom_' + a.name} onClick={this.handleAction.bind(this, a.onClick, id)}>\n {a.icon}\n </a>\n )}\n </td>\n );\n }\n};\n","import React from 'react';\nimport TableHeading from './TableHeading';\nimport TableCell from './TableCell';\nimport TableRow from './TableRow';\nimport ActionsTableCell from './ActionsTableCell';\nimport { Tooltip } from 'react-tooltip';\n\nimport './table.less';\n\nconst defaults = {\n sortFunc: (a,b) => (a < b ? -1 : (a > b ? 1 : 0)),\n sortable: false,\n sortCol: 0,\n sortDir: 1,\n colWidth: ''\n}\n\nconst createRow = (row, columns, actions) => {\n const cells = columns.map((col,i) => {\n const colStyles = col?.styles || {};\n\n if(col.hasOwnProperty(\"render\"))\n return (\n <TableCell key={'cell_'+i} style={colStyles} >\n {col.render(row, row[col.columnKey])}\n </TableCell>\n );\n\n return (\n <TableCell\n key={'cell_'+i}\n title={col.hasOwnProperty(\"title\") ? row[col.columnKey] : null}\n style={colStyles}\n >\n {row[col.columnKey]}\n </TableCell>\n );\n });\n\n if (actions) {\n cells.push(<ActionsTableCell key='actions_cell' id={row['id']} actions={actions} />);\n }\n\n return cells;\n};\n\nconst getSortDir = (columnKey, columnIndex, sortCol, sortDir) => {\n if(columnKey && (columnKey === sortCol)) {\n return sortDir;\n }\n if(sortCol === columnIndex) {\n return sortDir;\n }\n return null\n};\n\nconst Table = (props) => {\n let {options, columns} = props;\n let tableClass = options.hasOwnProperty('className') ? options.className : '';\n tableClass += options.actions?.edit ? ' table-hover' : '';\n\n return (\n <div>\n <table className={\"table table-striped dataTable \" + tableClass}>\n <thead>\n <tr>\n {columns.map((col,i) => {\n\n let sortCol = (typeof options.sortCol != 'undefined') ? options.sortCol : defaults.sortCol;\n let sortDir = (typeof options.sortDir != 'undefined') ? options.sortDir : defaults.sortDir;\n let sortFunc = (typeof options.sortFunc != 'undefined') ? options.sortFunc : defaults.sortFunc;\n let sortable = (typeof col.sortable != 'undefined') ? col.sortable : defaults.sortable;\n let colWidth = (typeof col.width != 'undefined') ? col.width : defaults.colWidth;\n\n return (\n <TableHeading\n onSort={props.onSort}\n sortDir={getSortDir(col.columnKey, i, sortCol, sortDir)}\n sortable={sortable}\n sortFunc={sortFunc}\n columnIndex={i}\n columnKey={col.columnKey}\n width={colWidth}\n key={'heading_'+i}\n >\n {col.value}\n </TableHeading>\n );\n })}\n {options.actions &&\n <TableHeading key='actions_heading' >\n {options.actionsHeader || ' '}\n </TableHeading>\n }\n </tr>\n </thead>\n <tbody>\n {columns.length > 0 && props.data.map((row,i) => {\n if(Array.isArray(row) && row.length !== columns.length) {\n console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);\n return <tr key={'row_'+i} />\n }\n\n return (\n <TableRow even={i%2 === 0} key={'row_'+i} id={row['id']} actions={options.actions}>\n {createRow(row, columns, options.actions)}\n </TableRow>\n );\n })}\n </tbody>\n </table>\n <Tooltip delayShow={10} />\n </div>\n );\n};\n\nexport default Table;\n","import React from 'react';\nimport RawHTML from '../raw-html';\n\nconst TableCell = (props) => {\n let {children} = props;\n\tlet value = '';\n\tif(children) {\n\t if (React.isValidElement(children)) {\n\t value = children;\n } else {\n\t value = <RawHTML>{children.toString()}</RawHTML>\n }\n }\n\n\treturn (\n\t\t<td {...props}>\n {value}\n\t\t</td>\n\t);\n};\n\nexport default TableCell;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"video.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"video.js/dist/video-js.css\");","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React from 'react';\nimport videojs from 'video.js'\n\nimport 'video.js/dist/video-js.css'\n\nconst YoutubeVideoComponent = ({ videoSrcURL, videoTitle }) => (\n <div className=\"video\">\n <iframe\n width=\"100%\"\n height=\"720\"\n title={videoTitle}\n src={videoSrcURL}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n </div>\n);\n\n\nclass LiveVideoPlayer extends React.Component {\n\n componentDidMount() {\n this.player = videojs(this.videoNode, this.props);\n }\n\n componentWillUnmount() {\n if (this.player) {\n this.player.dispose();\n }\n }\n\n render() {\n return (\n <div data-vjs-player=\"\">\n <video ref={node => this.videoNode = node} className=\"video-js vjs-big-play-centered\" />\n </div>\n );\n }\n}\n\nconst VideoStream = ({ url }) => {\n let layout = null;\n const checkLiveVideo = () => {\n let isLiveVideo = null;\n url.match(/.m3u8/) ? isLiveVideo = true : isLiveVideo = false;\n return isLiveVideo;\n };\n\n if (url) {\n if (checkLiveVideo()) {\n const videoJsOptions = {\n autoplay: true,\n controls: true,\n fluid: true,\n sources: [{\n src: url,\n type: 'application/x-mpegURL'\n }]\n }\n layout = <LiveVideoPlayer {...videoJsOptions} />;\n } else {\n layout = <YoutubeVideoComponent videoSrcURL={url} />;\n }\n } else {\n layout = <span className=\"no-video\">No video URL Provided</span>;\n }\n\n return layout;\n};\n\nexport default VideoStream;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport moment from 'moment-timezone'\n\nclass SummitEvent {\n\n constructor(event, summit = null){\n this._event = event;\n this._summit = summit;\n }\n\n set summit(summit){\n this._summit = summit;\n }\n\n get summit(){\n return this._summit;\n }\n\n getId(){\n return this._event.id;\n }\n\n isPublished(){\n return this._event.hasOwnProperty('is_published') && this._event.is_published;\n }\n\n getMinutesDuration(slotSize){\n\n if(this._event.hasOwnProperty('start_date') && this._event.hasOwnProperty('end_date') && this._event.start_date != null && this._event.end_date != null ) {\n let eventStartDateTime = moment(this._event.start_date * 1000).tz(this._summit.time_zone.name);\n let eventEndDateTime = moment(this._event.end_date * 1000).tz(this._summit.time_zone.name);\n return eventEndDateTime.diff(eventStartDateTime, 'minutes');\n }\n // default\n\n return this._event.hasOwnProperty('duration') && this._event.duration > 0 ? parseInt( this._event.duration / 60 ) : slotSize;\n }\n\n canMove(siblings, day, startTime, interval){\n\n let duration = this._event.hasOwnProperty('duration') && this._event.duration > 0 ? parseInt( this._event.duration / 60 ) : interval;\n // check if published to get real duration ...\n if(this.isPublished())\n duration = this.getMinutesDuration();\n\n let startDateTime = moment.tz(day+' '+ startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name);\n let endDateTime = moment.tz(day+' '+ startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name);\n endDateTime = endDateTime.add(duration, 'minutes');\n\n // check siblings overlap\n for (let auxEvent of siblings.filter(item => item.id !== this.getId())) {\n let auxEventStartDateTime = moment(auxEvent.start_date * 1000).tz(this._summit.time_zone.name);\n let auxEventEndDateTime = moment(auxEvent.end_date * 1000).tz(this._summit.time_zone.name);\n\n // if time segments overlap\n if(auxEventStartDateTime.isBefore(endDateTime) && auxEventEndDateTime.isAfter(startDateTime))\n return false;\n }\n\n return true;\n }\n\n calculateNewDates(day, startTime, minutes){\n\n minutes = this._event.hasOwnProperty('duration') && this._event.duration > 0 ?\n parseInt( this._event.duration / 60 ) : minutes;\n\n let newStarDateTime = moment.tz(day+' '+startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name);\n let newEndDateTime = moment.tz(day+' '+startTime.format('HH:mm'), 'YYYY-MM-DD HH:mm', this._summit.time_zone.name).add(minutes, 'minutes');\n return [newStarDateTime, newEndDateTime];\n }\n\n isValidEndDate(endDate){\n if(!endDate) return true;\n const _endDate = moment.tz(endDate * 1000, this._summit.time_zone.name);\n const summitEndDate = moment.tz(this._summit.end_date * 1000, this._summit.time_zone.name);\n const startDate = moment.tz(this._event.start_date * 1000, this._summit.time_zone.name);\n return _endDate.isSameOrBefore(summitEndDate) && _endDate.isAfter(startDate);\n }\n\n isValidStartDate(startDate){\n if(!startDate) return true;\n const _startDate = moment.tz(startDate * 1000, this._summit.time_zone.name);\n // if we have set duration , end date is optional\n const durationInMinutes = this._event.hasOwnProperty('duration') && this._event.duration > 0 ?\n parseInt( this._event.duration / 60 ) : 0;\n const summitStartDate = moment.tz(this._summit.start_date * 1000, this._summit.time_zone.name);\n const endDate = this._event.end_date ?\n moment.tz(this._event.end_date * 1000, this._summit.time_zone.name):\n ( durationInMinutes > 0 ? moment.tz(startDate * 1000, this._summit.time_zone.name).add(durationInMinutes, 'minutes'): null);\n\n return _startDate.isSameOrAfter(summitStartDate) && moment.isMoment(endDate) && _startDate.isBefore(endDate);\n }\n\n isValidTitle(title){\n return title.trim() !== '';\n }\n\n isValid(){\n return this.isValidTitle(this._event.title)\n && this.isValidStartDate(this._event.start_date)\n && this.isValidEndDate(this._event.end_date);\n }\n\n}\n\nexport default SummitEvent;\n","/**\n * Copyright 2017 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific flanguage governing permissions and\n * limitations under the License.\n **/\n\nimport request from 'superagent/lib/client';\nimport URI from \"urijs\";\nURI.escapeQuerySpace = false;\n\nlet http = request;\nimport Swal from 'sweetalert2';\nimport T from \"i18n-react/dist/i18n-react\";\nimport { isClearingSessionState, setSessionClearingState, getCurrentPathName } from './methods';\nimport { CLEAR_SESSION_STATE } from '../components/security/actions';\nimport { doLogin, initLogOut } from '../components/security/methods';\n\nexport const GENERIC_ERROR = \"Yikes. Something seems to be broken. Our web team has been notified, and we apologize for the inconvenience.\";\nexport const RESET_LOADING = 'RESET_LOADING';\nexport const START_LOADING = 'START_LOADING';\nexport const STOP_LOADING = 'STOP_LOADING';\nexport const VALIDATE = 'VALIDATE';\nexport const CLEAR_MESSAGE = 'CLEAR_MESSAGE';\nexport const SHOW_MESSAGE = 'SHOW_MESSAGE';\n\nexport const createAction = type => payload => ({\n type,\n payload\n});\n\nexport const resetLoading = createAction(RESET_LOADING);\nexport const startLoading = createAction(START_LOADING);\nexport const stopLoading = createAction(STOP_LOADING);\n\nconst xhrs = {};\nconst etagCache = {};\n\nconst cancel = (key) => {\n if(xhrs[key]) {\n xhrs[key].abort();\n console.log(`aborted request ${key}`);\n delete xhrs[key];\n }\n}\n\nconst schedule = (key, req) => {\n // console.log(`scheduling ${key}`);\n xhrs[key] = req;\n};\n\nconst isObjectEmpty = (obj) => {\n return Object.keys(obj).length === 0 && obj.constructor === Object ;\n}\n\nconst buildNotifyHandlerPayload = (httpCode, title, content, type) => ({ httpCode, title, html: content, type });\nconst buildNotifyHandlerErrorPayload = (httpCode, title, content) => buildNotifyHandlerPayload(httpCode, title, content, \"error\");\nconst buildNotifyHandlerWarningPayload = (httpCode, title, content) => buildNotifyHandlerPayload(httpCode, title, content, \"warning\");\n\nconst initLogin = () => (dispatch) => {\n const currentLocation = getCurrentPathName();\n const clearingSessionState = isClearingSessionState();\n dispatch({\n type: CLEAR_SESSION_STATE,\n payload: {}\n });\n if (!clearingSessionState) {\n setSessionClearingState(true);\n console.log(\"authErrorHandler 401 - re login\");\n doLogin(currentLocation);\n }\n};\n\nconst normalizeFormDataPayload = (req, formData) => {\n if(!isObjectEmpty(formData)) {\n Object.keys(formData).forEach(function (key) {\n let value = formData[key];\n if (Array.isArray(value)) {\n value.forEach(item => {\n req.field(`${key}[]`, item);\n });\n } else {\n req.field(key, value);\n }\n });\n }\n};\n\nexport const authErrorHandler = (\n err,\n res,\n notifyErrorHandler = showMessage\n) => (dispatch) => {\n\n const code = err.status;\n let msg = \"\";\n let payload, callback;\n\n dispatch(stopLoading());\n\n switch (code) {\n case 401:\n if (notifyErrorHandler !== showMessage) {\n payload = buildNotifyHandlerErrorPayload(code, \"ERROR\", T.translate(\"errors.user_not_auth\"));\n callback = () => dispatch(initLogin());\n } else {\n dispatch(initLogin());\n }\n break;\n case 403:\n payload = buildNotifyHandlerErrorPayload(code, \"ERROR\", T.translate(\"errors.user_not_authz\"));\n callback = initLogOut;\n break;\n case 404:\n msg = err.response.body?.message || err.response.error?.message || err.message;\n if (err.response.body?.errors?.length) {\n msg += `<br>${err.response.body.errors.join(\"<br>\")}`;\n }\n payload = buildNotifyHandlerWarningPayload(code, \"Not Found\", msg);\n break;\n case 412:\n for (const [key, value] of Object.entries(err.response.body.errors)) {\n msg += isNaN(key) ? `${key}: ` : \"\";\n msg += `${value}<br>`;\n }\n dispatch({\n type: VALIDATE,\n payload: { errors: err.response.body.errors }\n });\n payload = buildNotifyHandlerWarningPayload(code, \"Validation error\", msg);\n break;\n default:\n payload = buildNotifyHandlerErrorPayload(code, \"ERROR\", T.translate(\"errors.server_error\"));\n }\n\n if (payload)\n dispatch(notifyErrorHandler(payload, callback));\n}\n\nexport const getRequest =(\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {},\n useEtag = false\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n let key = url.toString();\n\n if(!isObjectEmpty(params)) {\n // remove the access token\n const { access_token: _, ...newParams} = params;\n // and generate new key\n key = url.query(newParams).toString();\n url = url.query(params);\n }\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n cancel(key);\n\n return new Promise((resolve, reject) => {\n let req = http.get(url.toString());\n if(useEtag && etagCache.hasOwnProperty(key)){\n const { etag } = etagCache[key];\n if(etag){\n req.set('If-None-Match', etag)\n }\n }\n\n req.timeout({\n response: 60000,\n deadline: 60000,\n })\n .end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject, key, useEtag))\n\n schedule(key, req);\n });\n};\n\nexport const putRequest = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n payload,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => ( dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n if(payload == null)\n payload = {};\n http.put(url.toString())\n .send(payload)\n .end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject))\n });\n};\n\nexport const deleteRequest = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n payload,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params) => (dispatch, state) => {\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n if(payload == null)\n payload = {};\n\n http.delete(url)\n .send(payload)\n .end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const postRequest = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n payload,\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n\n let request = http.post(url);\n\n if(payload != null)\n request.send(payload);\n else // to be a simple CORS request\n request.set('Content-Type', 'text/plain');\n\n request.end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const postFile = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n file,\n fileMetadata = {},\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n\n const req = http.post(url)\n .attach('file', file);\n\n normalizeFormDataPayload(req, fileMetadata);\n\n req.end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const putFile = (\n requestActionCreator,\n receiveActionCreator,\n endpoint,\n file = null,\n fileMetadata = {},\n errorHandler = defaultErrorHandler,\n requestActionPayload = {}\n) => (params = {}) => (dispatch, state) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n if(requestActionCreator && typeof requestActionCreator === 'function')\n dispatch(requestActionCreator(requestActionPayload));\n\n return new Promise((resolve, reject) => {\n\n const req = http.put(url);\n\n if(file != null){\n req.attach('file', file);\n }\n\n normalizeFormDataPayload(req, fileMetadata)\n\n req.end(responseHandler(dispatch, state, receiveActionCreator, errorHandler, resolve, reject));\n });\n};\n\nexport const defaultErrorHandler = (err, res) => (dispatch) => {\n let body = res.body;\n let text = '';\n if(body instanceof Object){\n if(body.hasOwnProperty('message'))\n text = body.message;\n }\n Swal.fire(res.statusText, text, \"error\");\n}\n\nconst byLowerCase = toFind => value => toLowerCase(value) === toFind;\nconst toLowerCase = value => value.toLowerCase();\nconst getKeys = headers => Object.keys(headers);\n\nexport const getHeaderCaseInsensitive = (headerName, headers = {}) => {\n const key = getKeys(headers).find(byLowerCase(headerName));\n return key ? headers[key] : undefined;\n};\n\nexport const responseHandler = ( dispatch, state, receiveActionCreator, errorHandler, resolve, reject, key = null, useEtag= false ) =>\n\n (err, res) => {\n\n if (err || !res.ok) {\n let code = err.status;\n\n if(code === 304 && etagCache.hasOwnProperty(key) && useEtag){\n const { body } = etagCache[key];\n\n if(typeof receiveActionCreator === 'function') {\n dispatch(receiveActionCreator({response: body}));\n return resolve({response: body});\n }\n\n dispatch(receiveActionCreator);\n return resolve({response: body});\n }\n if(errorHandler) {\n errorHandler(err, res)(dispatch, state);\n }\n return reject({ err, res, dispatch, state })\n }\n\n let json = res.body;\n\n if(useEtag) {\n const responseETAG = getHeaderCaseInsensitive('etag', res.headers);\n if (responseETAG) {\n etagCache[key] = { etag: responseETAG, body: json};\n }\n }\n\n if(typeof receiveActionCreator === 'function') {\n dispatch(receiveActionCreator({response: json}));\n return resolve({response: json});\n }\n dispatch(receiveActionCreator);\n return resolve({response: json});\n}\n\n\nexport const fetchErrorHandler = (response) => {\n let code = response.status;\n let msg = response.statusText;\n\n switch (code) {\n case 403:\n Swal.fire(\"ERROR\", T.translate(\"errors.user_not_authz\"), \"warning\");\n break;\n case 401:\n Swal.fire(\"ERROR\", T.translate(\"errors.session_expired\"), \"error\");\n break;\n case 412:\n Swal.fire(\"ERROR\", msg, \"warning\");\n case 500:\n Swal.fire(\"ERROR\", T.translate(\"errors.server_error\"), \"error\");\n }\n}\n\nexport const fetchResponseHandler = (response) => {\n if (!response.ok) {\n throw response;\n } else {\n return response.json();\n }\n}\n\nexport const showMessage = (settings, callback = null) => (dispatch) => {\n dispatch(stopLoading());\n Swal.fire(settings).then((result) => {\n if (result.value && typeof callback === 'function') {\n callback();\n }\n });\n}\n\nexport const showSuccessMessage = (html) => (dispatch) => {\n dispatch(stopLoading());\n Swal.fire({\n title: T.translate(\"general.done\"),\n html: html,\n type: 'success'\n });\n}\n\nexport const downloadFileByContent = (filename, content, mime) => {\n let link = document.createElement('a');\n link.textContent = 'download';\n link.download = filename;\n link.href = `data:${mime},${encodeURIComponent(content)}`\n document.body.appendChild(link); // Required for FF\n link.click();\n document.body.removeChild(link);\n}\n\nexport const getCSV = (endpoint, params, filename, header = null) => (dispatch) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n dispatch(startLoading());\n\n return fetch(url.toString())\n .then((response) => {\n if (!response.ok) {\n throw response;\n } else {\n return response.text();\n }\n })\n .then((csv) => {\n dispatch(stopLoading());\n\n if (header) {\n csv = header + '\\r\\r' + csv;\n }\n downloadFileByContent(filename, csv, 'text/csv;charset=utf-8');\n })\n .catch(fetchErrorHandler);\n};\n\nexport const getRawCSV = (endpoint, params, header = null) => {\n\n let url = URI(endpoint);\n\n if(!isObjectEmpty(params))\n url = url.query(params);\n\n return fetch(url.toString())\n .then((response) => {\n if (!response.ok) {\n throw response;\n } else {\n return response.text();\n }\n })\n .then((csv) => {\n if (header) {\n csv = header + '\\r\\r' + csv;\n }\n\n return csv;\n })\n .catch(fetchErrorHandler);\n};\n\nexport const escapeFilterValue = (value) => {\n value = String(value);\n // escape backslash first so you don't accidentally break your own escapes\n value = value.replace(/\\\\/g, \"\\\\\\\\\");\n value = value.replace(/,/g, \"\\\\,\");\n value = value.replace(/;/g, \"\\\\;\");\n // especial case for literal +\n value = value.replace(/\\+/g, \"%2B\");\n return value;\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"spark-md5\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto-js/sha256\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto-js/enc-base64url\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto-js/enc-hex\");","import SparkMD5 from \"spark-md5\";\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nconst MAX_BYTES = 65536\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nconst MAX_UINT32 = 4294967295\nconst crypto = typeof window !== 'undefined' ? (window.crypto || window.msCrypto) : null;\nimport sha256 from 'crypto-js/sha256';\nimport Base64url from 'crypto-js/enc-base64url'\nimport Hex from 'crypto-js/enc-hex'\nexport const getRandomBytes = (size) => {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n const bytes = Buffer.allocUnsafe(size)\n if(!crypto) return a;\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (let generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n return bytes\n}\n\nexport const getSHA256 = (message, format = 'hex') => {\n\n let f = Hex;\n if(format === 'Base64url')\n f = Base64url;\n\n return sha256(message).toString(f);\n}\n\nexport const getMD5 = (file) => {\n return new Promise((resolve, reject) => {\n const chunkSize = 2 * 1024 * 1024; // 2 MB by chunk\n const spark = new SparkMD5.ArrayBuffer();\n const fileReader = new FileReader();\n let cursor = 0;\n\n fileReader.onload = e => {\n spark.append(e.target.result); \n cursor += chunkSize;\n\n if (cursor < file.size) {\n readNextChunk();\n } else {\n resolve(spark.end()); // final MD5\n }\n };\n\n fileReader.onerror = () => reject(\"Error reading the file\");\n\n function readNextChunk() {\n const slice = file.slice(cursor, cursor + chunkSize);\n fileReader.readAsArrayBuffer(slice);\n }\n\n readNextChunk();\n });\n}","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport moment from 'moment-timezone';\nimport URI from \"urijs\";\n\nexport const findElementPos = (obj) => {\n var curtop = -70;\n if (obj.offsetParent) {\n do {\n curtop += obj.offsetTop;\n } while (obj = obj.offsetParent);\n return [curtop];\n }\n};\n\nexport const epochToMoment = (atime) => {\n if(!atime) return atime;\n atime = atime * 1000;\n return moment(atime);\n};\n\nexport const epochToMomentTimeZone = (atime, time_zone) => {\n if(!atime) return atime;\n atime = atime * 1000;\n return moment(atime).tz(time_zone);\n};\n\nexport const formatEpoch = (atime, format = 'M/D/YYYY h:mm a') => {\n if(!atime) return atime;\n return epochToMoment(atime).format(format);\n};\n\nexport const parseLocationHour = (hour) => {\n let parsedHour = hour.toString();\n if(parsedHour.length < 4) parsedHour = `0${parsedHour}`;\n parsedHour = parsedHour.match(/.{2}/g);\n parsedHour = parsedHour.join(':');\n return parsedHour;\n}\n\nexport const objectToQueryString = (obj) => {\n var str = \"\";\n for (var key in obj) {\n if (str != \"\") {\n str += \"&\";\n }\n str += key + \"=\" + encodeURIComponent(obj[key]);\n }\n\n return str;\n};\n\nexport const getBackURL = () => {\n let url = URI(window.location.href);\n let query = url.search(true);\n let fragment = url.fragment();\n let backUrl = query.hasOwnProperty('BackUrl') ? query['BackUrl'] : null;\n if(backUrl != null && fragment != null && fragment != ''){\n backUrl += `#${fragment}`;\n }\n return backUrl;\n};\n\nexport const toSlug = (text) =>{\n text = text.toLowerCase();\n return text.replace(/[^a-zA-Z0-9]+/g,'_');\n}\n\nexport const getAuthCallback = () => {\n if(typeof window !== 'undefined') {\n return `${window.location.origin}/auth/callback`;\n }\n return null;\n};\n\nexport const getCurrentLocation = () => {\n let location = '';\n if(typeof window !== 'undefined') {\n location = window.location;\n // check if we are on iframe\n if (window.top)\n location = window.top.location;\n }\n return location;\n};\n\nexport const getOrigin = () => {\n if(typeof window !== 'undefined') {\n return window.location.origin;\n }\n return null;\n};\n\nexport const getCurrentPathName = () => {\n if(typeof window !== 'undefined') {\n return window.location.pathname;\n }\n return null;\n};\n\nexport const getCurrentHref = () => {\n if(typeof window !== 'undefined') {\n return window.location.href;\n }\n return null;\n};\n\nexport const getAllowedUserGroups = () => {\n if(typeof window !== 'undefined') {\n return window.ALLOWED_USER_GROUPS || '';\n }\n return null;\n};\n\nexport const buildAPIBaseUrl = (relativeUrl) => {\n if(typeof window !== 'undefined'){\n return `${window.API_BASE_URL}${relativeUrl}`;\n }\n return null``;\n};\n\nexport const putOnLocalStorage = (key, value) => {\n if(typeof window !== 'undefined') {\n window.localStorage.setItem(key, value);\n }\n};\n\nexport const getFromLocalStorage = (key, removeIt) => {\n if(typeof window !== 'undefined') {\n let val = window.localStorage.getItem(key);\n if(removeIt){\n console.log(`getFromLocalStorage removing key ${key}`);\n removeFromLocalStorage(key);\n }\n return val;\n }\n return null;\n};\n\nexport const removeFromLocalStorage = (key) => {\n if(typeof window !== 'undefined') {\n window.localStorage.removeItem(key);\n }\n}\n\nexport const isClearingSessionState = () => {\n if(typeof window !== 'undefined') {\n return window.clearing_session_state;\n }\n return false;\n};\n\nexport const setSessionClearingState = (val) => {\n if(typeof window !== 'undefined') {\n window.clearing_session_state = val;\n }\n};\n\nexport const getCurrentUserLanguage = () => {\n let language = 'en';\n if(typeof navigator !== 'undefined') {\n language = (navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage;\n }\n return language;\n};\n\nexport const scrollToError = (errors) => {\n if(Object.keys(errors).length > 0) {\n const firstError = Object.keys(errors)[0];\n const firstNode = document.getElementById(firstError);\n if (firstNode) window.scrollTo(0, findElementPos(firstNode));\n }\n};\n\nexport const hasErrors = (field, errors) => {\n if(field in errors) {\n return errors[field];\n }\n return '';\n};\n\nexport const shallowEqual = (object1, object2) => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (let key of keys1) {\n if (object1[key] !== object2[key]) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const arraysEqual = (a1, a2) =>\n a1.length === a2.length && a1.every((o, idx) => shallowEqual(o, a2[idx]));\n\nexport const isEmpty = (obj) => {\n return Object.keys(obj).length === 0;\n};\n\n\nexport const base64URLEncode = (str) => {\n return str\n .toString('base64')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '')\n}\n\nexport const retryPromise = async (\n cb,\n maxNumberOfRetries = 3\n) => {\n for (let i = 0; i < maxNumberOfRetries; i++) {\n if (await cb()) {\n return true;\n }\n }\n\n return false;\n}\n\nexport const getTimeServiceUrl = () => {\n if(typeof window !== 'undefined') {\n return window.TIMEINTERVALSINCE1970_API_URL || process.env.TIMEINTERVALSINCE1970_API_URL;\n }\n return null;\n};\n\nexport const getEventLocation = (event, summitVenueCount, summitShowLocDate = null, nowUtc = null) => {\n const shouldShowVenues = (summitShowLocDate && nowUtc) ? summitShowLocDate * 1000 < nowUtc : true;\n const locationName = [];\n const { location } = event;\n\n if (!shouldShowVenues) return 'TBA';\n\n if (!location) return 'TBA';\n\n if (summitVenueCount > 1 && location.venue?.name) locationName.push(location.venue.name);\n if (location.floor?.name) locationName.push(location.floor.name);\n if (location.name) locationName.push(location.name);\n\n return locationName.length > 0 ? locationName.join(' - ') : 'TBA';\n};\n\nexport const getEventHosts = (event) => {\n let hosts = [];\n if (event.speakers?.length > 0) {\n hosts = [...event.speakers];\n }\n if (event.moderator) hosts.push(event.moderator);\n\n return hosts;\n};\n\nconst loadImage = async url => {\n const img = document.createElement('img')\n img.src = url\n img.crossOrigin = 'anonymous'\n\n return new Promise((resolve, reject) => {\n img.onload = () => resolve(img)\n img.onerror = reject\n })\n}\n\nexport const convertSVGtoImg = async (svgUrl) => {\n const img = await loadImage(svgUrl)\n const newWidth = 100\n const newHeight = Math.floor(img.naturalHeight * 100 / img.naturalWidth)\n\n const canvas = document.createElement('canvas')\n canvas.width = newWidth\n canvas.height = newHeight\n canvas.getContext('2d').drawImage(img, 0, 0, newWidth, newHeight)\n\n const url = await canvas.toDataURL(`image/png`, 1.0)\n console.log(url, newWidth, newHeight);\n return {url, width: newWidth, height: newHeight}\n}\n","/**\n * Copyright 2018 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport { fetchErrorHandler, fetchResponseHandler, escapeFilterValue } from \"./actions\";\nimport { getAccessToken } from '../components/security/methods';\nimport { buildAPIBaseUrl } from \"./methods\";\nimport _ from 'lodash';\nexport const RECEIVE_COUNTRIES = 'RECEIVE_COUNTRIES';\nconst callDelay = 500; // milliseconds\nimport URI from \"urijs\";\nURI.escapeQuerySpace = false;\nexport const DEFAULT_PAGE_SIZE = 10;\n\nconst _fetchPublic = async (endpoint, callback, options = {}) => {\n return fetch(buildAPIBaseUrl(endpoint.toString()), options)\n .then(fetchResponseHandler)\n .then((json) => {\n if(typeof callback === 'function')\n callback(json.data);\n })\n .catch(response => {\n const code = response.status;\n if (code === 404) callback([]);\n return response;\n })\n .catch(fetchErrorHandler);\n}\n\n/**\n * @param endpoint\n * @param callback\n * @param options\n * @returns {Promise<Response | void>}\n * @private\n */\nconst _fetch = async (endpoint, callback, options = {}) => {\n\n let accessToken;\n\n try {\n accessToken = await getAccessToken();\n } catch (e) {\n if(typeof callback === 'function')\n callback(e);\n return Promise.reject();\n }\n\n endpoint.addQuery('access_token', accessToken);\n\n return _fetchPublic(endpoint, callback, options);\n}\n\n/**\n *\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryMembers = _.debounce(async (input, callback, per_page= DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/members`);\n\n endpoint.addQuery('expand', `tickets,rsvp,schedule_summit_events,all_affiliations`);\n endpoint.addQuery('order','first_name,last_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `full_name@@${input},first_name@@${input},last_name@@${input},email@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n *\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryAttendees = _.debounce(async (summitId, input, callback, per_page= DEFAULT_PAGE_SIZE) => {\n \n let endpoint = URI(`/api/v1/summits/${summitId}/attendees`);\n \n endpoint.addQuery('order','first_name,last_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n \n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `full_name=@${input},email=@${input}`);\n }\n \n _fetch(endpoint, callback);\n \n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySummits = _.debounce(async (input, callback, per_page= DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/all`);\n\n endpoint.addQuery('expand', `tickets,rsvp,schedule_summit_events,all_affiliations`);\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySpeakers = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE ) => {\n\n\n let endpoint = URI(`/api/v1/${summitId ? `summits/${summitId}/speakers`:`speakers`}`);\n\n endpoint.addQuery('expand', `member,registration_request`);\n endpoint.addQuery('order','first_name,last_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `full_name@@${input},first_name@@${input},last_name@@${input},email@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTags = _.debounce(async (summitId, input, callback, per_page = 50) => {\n\n let endpoint = URI(`/api/v1/${summitId ? `summits/${summitId}/track-tag-groups/all/allowed-tags`:`tags`}`);\n\n if(summitId)\n endpoint.addQuery('expand', `tag,track_tag_group`);\n\n endpoint.addQuery('order','tag');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `tag@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTracks = _.debounce(async (summitId, input, callback, excludedIds = [], per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/tracks`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if (excludedIds?.length > 0) {\n endpoint.addQuery('filter[]', `not_id==${excludedIds.join(\"||\")}`);\n }\n\n if (input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTrackGroups = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/track-groups`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=, *): Promise<void>)|*>}\n */\nexport const queryEvents = _.debounce(async (summitId, input, onlyPublished = false, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/events` + (onlyPublished ? '/published' : ''));\n\n endpoint.addQuery('order','title');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `title@@${input}`);\n }\n\n _fetch(endpoint, callback);\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=, *=): Promise<void>)|*>}\n */\nexport const queryEventTypes = _.debounce(async (summitId, input, callback, eventTypeClassName = null, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/event-types`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n if (eventTypeClassName) {\n eventTypeClassName = escapeFilterValue(eventTypeClassName);\n endpoint.addQuery('filter[]', `class_name==${eventTypeClassName}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryGroups = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/groups`);\n\n endpoint.addQuery('order','title,code');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `title@@${input},code@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryCompanies = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/companies`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryRegistrationCompanies = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/registration-companies`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsors = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/sponsors`);\n\n endpoint.addQuery('expand','company,sponsorship,sponsorship.type')\n endpoint.addQuery('order','id')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `company_name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsorsWithBadgeScans = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/sponsors`);\n\n endpoint.addQuery('expand','company,sponsorship,sponsorship.type');\n endpoint.addQuery('fields','id,company.name,sponsorship.type.name');\n endpoint.addQuery('relations','none,company.none,sponsorship.type.none');\n endpoint.addQuery('filter[]','badge_scans_count>0');\n endpoint.addQuery('order','+company_name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `company_name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryAccessLevels = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/summits/${summitId}/access-level-types`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryOrganizations = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/v1/organizations`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\nexport const getLanguageList = (callback, signal) => {\n return _fetchPublic(new URI(`/api/public/v1/languages`), callback, { signal });\n};\n\nexport const getCountryList = (callback, signal) => {\n return _fetchPublic(new URI(`/api/public/v1/countries`), callback, { signal });\n};\n\nlet geocoder;\n\nexport const geoCodeAddress = (address) => {\n\n if (!geocoder) geocoder = new google.maps.Geocoder();\n\n // return a Promise\n return new Promise(function(resolve,reject) {\n geocoder.geocode( { 'address': address}, function(results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n // resolve results upon a successful status\n resolve(results);\n } else {\n // reject status upon un-successful status\n reject(status);\n }\n });\n });\n};\n\nexport const geoCodeLatLng = (lat, lng) => {\n\n if (!geocoder) geocoder = new google.maps.Geocoder();\n\n let latlng = {lat: parseFloat(lat), lng: parseFloat(lng)};\n // return a Promise\n return new Promise(function(resolve,reject) {\n geocoder.geocode( { 'location': latlng}, function(results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n // resolve results upon a successful status\n resolve(results);\n } else {\n // reject status upon un-successful status\n reject(status);\n }\n });\n });\n};\n\n/**\n * @type {DebouncedFunc<(function(*, *=, *, *=, *=): Promise<void>)|*>}\n */\nexport const queryTicketTypes = _.debounce(async (summitId, filters = {}, callback, version = 'v1', per_page = DEFAULT_PAGE_SIZE) => {\n\n let endpoint = URI(`/api/${version}/summits/${summitId}/ticket-types`);\n\n endpoint.addQuery('order','name');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(filters.hasOwnProperty('name')) {\n const name = escapeFilterValue(filters.name);\n if(name && name != '')\n endpoint.addQuery('filter[]', `name@@${name}`);\n }\n\n if(filters.hasOwnProperty('audience')){\n const audience = escapeFilterValue(filters.audience);\n if(audience && audience != '')\n endpoint.addQuery('filter[]', `audience==${audience}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySponsoredProjects = _.debounce(async (input, callback, per_page = DEFAULT_PAGE_SIZE) => {\n\n\n const endpoint = URI(`/api/v1/sponsored-projects`);\n\n endpoint.addQuery('order','name')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `name@@${input}`);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryPromocodes = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PAGE_SIZE, extraFilters = []) => {\n\n\n let endpoint = URI(`/api/v1/summits/${summitId}/promo-codes`);\n\n endpoint.addQuery('order','code')\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', per_page);\n\n if(input) {\n input = escapeFilterValue(input);\n endpoint.addQuery('filter[]', `code@@${input}`);\n }\n\n //eg: filter = 'class_name==SummitRegistrationPromoCode'\n for (const filter of extraFilters) {\n endpoint.addQuery('filter[]', filter);\n }\n\n _fetch(endpoint, callback);\n\n}, callDelay);\n","export const CheckBoxQuestionType = 'CheckBox';\nexport const ComboBoxQuestionType = 'ComboBox'\nexport const CheckBoxListQuestionType = 'CheckBoxList';\nexport const RadioButtonListQuestionType = 'RadioButtonList';\nexport const AllowedMultipleValueQuestionType = [ComboBoxQuestionType, CheckBoxListQuestionType, RadioButtonListQuestionType];\nexport const AnswerValuesOperator_And = 'And';\nexport const AnswerValuesOperator_Or = 'Or';\nexport const VisibilityCondition_Equal = 'Equal';\nexport const VisibilityCondition_NotEqual = 'NotEqual';\nexport const Visibility_Visible = 'Visible';\nexport const MainQuestionClassType = 'MainQuestion';\nimport {toSlug} from \"./methods\";\n\nexport default class QuestionsSet {\n\n constructor(questions, answers = []) {\n this.questions = questions;\n this.originalAnswers = answers\n this.answers = [];\n // map answers to associate array\n for (let a of this.originalAnswers)\n this.answers[a.question_id] = a;\n this.questionByName = {}\n this.questionById = {}\n // associative array ( rule id , rule);\n this.rules = {};\n this._parseQuestions();\n }\n\n _parseQuestion = (q) => {\n this.questionByName[toSlug(q.name)] = q;\n this.questionById[parseInt(q.id)] = q;\n if(q.hasOwnProperty('sub_question_rules'))\n for (let r of q.sub_question_rules) {\n this.rules[parseInt(r.id)] = r;\n this._parseQuestion(r.sub_question);\n }\n }\n\n _parseQuestions = () => {\n for (let q of this.questions) {\n this._parseQuestion(q);\n }\n }\n\n _allowsValues = (q) => {\n return AllowedMultipleValueQuestionType.includes(q.type);\n }\n\n _allowsValue = (q, answer) => {\n let value = answer.value.split(',').map(v => parseInt(v));\n for (let av of value) {\n if (!q.values.map(e => e.id).includes(av))\n return false;\n }\n return true;\n }\n\n _getAnswerFor = (q) => {\n let id = Number.isInteger(q) ? q : q.id;\n let a = this.answers[id] || null;\n return a ? a : null;\n }\n\n _hasValue = (answer) => {\n return answer.value !== '';\n }\n\n _answerContains = (answer, val) => {\n return answer.value.split(',').includes(val);\n }\n\n _isSubQuestionVisible = (rule) => {\n let initialCondition = rule.answer_values_operator === AnswerValuesOperator_And ? true : false;\n const parentQuestionAnswer = this._getAnswerFor(rule.parent_question_id);\n if (!parentQuestionAnswer) {\n initialCondition = rule.visibility_condition === VisibilityCondition_Equal ? false : true;\n } else {\n switch (rule.visibility_condition) {\n case VisibilityCondition_Equal: {\n for (let answerValue of rule.answer_values) {\n if (rule.answer_values_operator === AnswerValuesOperator_And)\n initialCondition = initialCondition && this._answerContains(parentQuestionAnswer, answerValue);\n else\n initialCondition = initialCondition || this._answerContains(parentQuestionAnswer, answerValue);\n }\n }\n break;\n case VisibilityCondition_NotEqual: {\n for (let answerValue of rule.answer_values) {\n if (rule.answer_values_operator === AnswerValuesOperator_And)\n initialCondition = initialCondition && !this._answerContains(parentQuestionAnswer, answerValue);\n else\n initialCondition = initialCondition || !this._answerContains(parentQuestionAnswer, answerValue);\n }\n }\n break;\n }\n }\n // final visibility check\n if (rule.visibility === Visibility_Visible) {\n return initialCondition;\n }\n // not visible\n return !initialCondition;\n }\n\n _isAnswered = (q) => {\n const answer = this._getAnswerFor(q);\n\n if (q.class === MainQuestionClassType) {\n if (!q.mandatory) return true;\n if (!answer) return false;\n if (!this._hasValue(answer)) return false;\n if (this._allowsValues(q) && !this._allowsValue(q, answer))\n return false;\n return true;\n }\n\n // check parent rules ...\n for (let ruleId of q.parent_rules) {\n if (!this._isSubQuestionVisible(this.rules[ruleId])) // if question is not visible skip it\n continue;\n if (!q.mandatory) return true;\n if (!answer) return false;\n if (!this._hasValue(answer)) return false;\n if (this._allowsValues(q) && !this._allowsValue(q, answer))\n return false;\n return true;\n }\n\n return true;\n }\n\n _checkQuestion = (q) => {\n let res = this._isAnswered(q);\n if(q.hasOwnProperty('sub_question_rules'))\n for (let rule of q.sub_question_rules) {\n // check recursive all the tree till leaves ...\n res = res && this._checkQuestion(rule.sub_question);\n }\n return res;\n }\n\n _formatQuestionAnswer = (question) => {\n let res = {};\n const slug = toSlug(question.name);\n let userAnswer = this.originalAnswers.find(a => a.question_id === question.id)?.value;\n if(!userAnswer && question?.values?.length > 0){\n // check default value\n const defaultVal = question.values.find(v => v.is_default);\n if(defaultVal) userAnswer = defaultVal.id.toString();\n }\n if(userAnswer) {\n if (question.type === CheckBoxQuestionType) userAnswer = userAnswer === 'false' ? false : !!userAnswer;\n if (question.type === RadioButtonListQuestionType || question.type === ComboBoxQuestionType) userAnswer = parseInt(userAnswer);\n if (question.type === CheckBoxListQuestionType) userAnswer = userAnswer.split(',').map(ansVal => parseInt(ansVal)) || [];\n }\n\n res[slug] = userAnswer || '';\n if(question.type === CheckBoxListQuestionType && res[slug] === '') res[slug] = []\n if(question.hasOwnProperty('sub_question_rules'))\n for (let rule of question.sub_question_rules) {\n // check recursive all the tree till leaves ...\n let res1 = this._formatQuestionAnswer(rule.sub_question);\n res = {...res, ...res1};\n }\n return res;\n }\n\n formatAnswers = () => {\n let res = {}\n this.questions.forEach(q => {\n let res1 = this._formatQuestionAnswer(q);\n res = {...res,...res1};\n });\n return res;\n }\n\n completed = () => {\n let res = true;\n for (let q of this.questions) {\n res = res && this._checkQuestion(q);\n }\n return res;\n }\n\n getQuestionByName = (name) => {\n const slug = toSlug(name)\n return this.questionByName[name] || this.questionByName[slug] || null;\n }\n\n getQuestionById = (id) => {\n return this.questionById[parseInt(id)] || null;\n }\n}\n","var map = {\n\t\"./en.json\": 5553,\n\t\"./es.json\": 2706,\n\t\"./zh.json\": 4028\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9401;","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\");","module.exports = require(\"dropzone\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"idtoken-verifier\");","module.exports = require(\"lodash\");","module.exports = require(\"moment-timezone\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","module.exports = require(\"react-dnd\");","module.exports = require(\"react-rte\");","module.exports = require(\"react-select\");","module.exports = require(\"react-select/lib/Async\");","module.exports = require(\"react-select/lib/AsyncCreatable\");","module.exports = require(\"react-tooltip\");","module.exports = require(\"superagent/lib/client\");","module.exports = require(\"sweetalert2\");","module.exports = require(\"urijs\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18n-react\");","import React from 'react';\nimport T from 'i18n-react';\nimport { getCurrentUserLanguage } from '../utils/methods';\n\nexport {default as AjaxLoader} from './ajaxloader';\nexport {default as RawHTML} from './raw-html';\nexport {default as FreeTextSearch} from './free-text-search';\nexport {default as DateTimePicker} from './inputs/datetimepicker'\nexport {default as GroupedDropdown} from './inputs/grouped-dropdown'\nexport {default as UploadInput} from './inputs/upload-input'\nexport {default as UploadInputV2} from './inputs/upload-input-v2'\nexport {default as UploadInputV3} from './inputs/upload-input-v3'\nexport {default as CompanyInput} from './inputs/company-input'\nexport {default as PromocodeInput} from './inputs/promocode-input'\nexport {default as SponsorInput} from './inputs/sponsor-input'\nexport {default as OrganizationInput} from './inputs/organization-input'\nexport {default as CountryDropdown} from './inputs/country-dropdown'\nexport {default as Dropdown} from './inputs/dropdown'\nexport {default as TextEditor} from './inputs/editor-input'\nexport {default as TextArea} from './inputs/textarea-input'\nexport {default as EventInput} from './inputs/event-input'\nexport {default as GroupInput} from './inputs/group-input'\nexport {default as MemberInput} from './inputs/member-input'\nexport {default as AttendeeInput} from './inputs/attendee-input'\nexport {default as SummitInput} from './inputs/summit-input'\nexport {default as SpeakerInput} from './inputs/speaker-input'\nexport {default as OperatorInput} from './inputs/operator-input'\nexport {default as TagInput} from './inputs/tag-input'\nexport {default as Input} from './inputs/text-input'\nexport {default as Panel} from './sections/panel'\nexport {default as SimpleLinkList} from './simple-link-list'\nexport {default as SummitDropdown} from './summit-dropdown'\nexport {default as Table} from './table/Table'\nexport {default as SortableTable} from './table-sortable/SortableTable'\nexport {default as EditableTable} from './table-editable/EditableTable'\nexport {default as SelectableTable} from './table-selectable/SelectableTable'\nexport {default as SimpleForm} from './forms/simple-form'\nexport {default as RsvpForm} from './forms/rsvp-form';\nexport {default as RadioList} from './inputs/radio-list'\nexport {default as CheckboxList} from './inputs/checkbox-list'\nexport {default as ActionDropdown} from './inputs/action-dropdown'\nexport {default as CountryInput} from './inputs/country-input'\nexport {default as LanguageInput} from './inputs/language-input'\nexport {default as FreeMultiTextInput} from \"./inputs/free-multi-text-input\";\nexport {default as Exclusive} from \"./exclusive-wrapper\";\nexport {default as Clock} from \"./clock\";\nexport {default as CircleButton} from \"./circle-button\";\nexport {default as VideoStream} from \"./video-stream\";\nexport {default as AttendanceTracker} from \"./attendance-tracker\";\nexport {default as AccessLevelsInput} from './inputs/access-levels-input';\nexport {default as RegistrationCompanyInput} from './inputs/registration-company-input';\nexport {default as TicketTypesInput} from './inputs/ticket-types-input.js'\nexport {default as SponsoredProjectInput} from './inputs/sponsored-project-input.js'\nexport {default as SteppedSelect} from './inputs/stepped-select/index.jsx'\nexport {default as SummitDaysSelect} from './inputs/summit-days-select'\nexport {default as SummitVenuesSelect} from './inputs/summit-venues-select'\nexport {default as BulkActionsSelector} from './bulk-actions-selector'\nexport {default as ScheduleBuilderView} from './schedule-builder-view'\n\n// this 5 includes 3rd party deps\n// export {default as ExtraQuestionsForm } from './extra-questions/index.js';\n// export {default as GMap} from './google-map';\n// export {default as TextEditorV2} from './inputs/editor-input-v2'\n// export {default as TextEditorV3} from './inputs/editor-input-v3'\n// export {default as CompanyInputV2} from './inputs/company-input-v2.js'\n\nlet language = getCurrentUserLanguage();\n\n// language would be something like es-ES or es_ES\n// However we store our files with format es.json or en.json\n// therefore retrieve only the first 2 digits\n\nif (language.length > 2) {\n language = language.split(\"-\")[0];\n language = language.split(\"_\")[0];\n}\n\ntry {\n T.setTexts(require(`../i18n/${language}.json`));\n} catch (e) {\n T.setTexts(require(`../i18n/en.json`));\n}\n"],"names":["root","factory","exports","module","define","amd","this","show","relative","color","size","children","styles","display","width","height","position","zIndex","margin","cursor","backgroundColor","top","left","styleSpinner","fontSize","styleSpinnerContainer","textAlign","right","bottom","styleBackground","background","opacity","className","style","AttendanceTracker","React","async","apiBaseUrl","summitId","sourceId","sourceName","props","location","getLocation","accessToken","getAccessToken","http","send","access_token","type","source_id","end","console","log","e","navigator","sendBeacon","window","encodeURIComponent","href","componentDidMount","trackEnter","onBeforeUnload","addEventListener","componentWillUnmount","trackLeave","removeEventListener","render","propTypes","PropTypes","isRequired","defaultProps","ScheduleAdminsBulkActionsSelector","onPerformBulkAction","selectedBulkAction","actionTypeSelect","value","onSelectedBulkAction","onSelectAll","bulkOptions","onClick","ref","select","T","map","option","idx","key","label","bind","title","CircleButton","event","isScheduled","nowUtc","addToSchedule","removeFromSchedule","enterClick","alwaysShowEnter","isLiveNow","hasEnded","end_date","start_date","isLive","buttonClass","iconClass","handleClick","ev","action","preventDefault","stopPropagation","Clock","constructor","super","response","localBefore","localAfter","moment","unix","timestamp","_isMounted","setState","onTick","timeServiceUrl","getTimeServiceUrl","fetch","then","status","json","Promise","reject","catch","err","state","fragmentParser","FragmentParser","interval","manualSet","onVisibilityChange","timezone","now","nowQS","getParam","momentQS","isValid","valueOf","getServerTime","processServerTimeResponse","processServerTimeResponseError","setInterval","tick","document","visibilityState","clearInterval","marginTop","format","Exclusive","showField","name","exclusiveSections","EXCLUSIVE_SECTIONS","includes","require","QuestionType_Checkbox","QuestionType_RadioButton","InputAdapter","input","meta","question","isDisabled","rest","containerClassName","toSlug","ariaLabelledBy","id","disabled","required","onChange","placeholder","RadioButtonListAdapter","overrideCSS","DropdownAdapter","classNamePrefix","CheckBoxListAdapter","maxValues","question_answers","target","length","getValidator","undefined","ExtraQuestionsForm","extraQuestions","userAnswers","onAnswerChanges","questionContainerClassName","questionLabelContainerClassName","questionControlContainerClassName","readOnly","debug","buttonText","RequiredErrorMessage","ValidationErrorClassName","allowExtraQuestionsEdit","onError","shouldScroll2FirstError","submit","questionRefs","useRef","formRef","answers","setAnswers","useState","useEffect","formatUserAnswers","useImperativeHandle","doSubmit","current","dispatchEvent","Event","cancelable","bubbles","scroll2QuestionById","questionId","scrollToQuestion","getQuestionRef","qs","QuestionsSet","formatAnswers","Condition","when","rule","Field","subscription","checkVisibility","checkRule","Error","error","touched","submitFailed","values","answer_values","Array","isArray","res","answer_values_operator","forEach","v","parseInt","toString","ruleResult","visibility","visibility_condition","sub_question","getLabel","q","nonBreakingSpace","String","fromCharCode","replace","questions2Exclude","labelText","mandatory","dangerouslySetInnerHTML","__html","htmlFor","renderQuestion","questionValues","slug","hasOwnProperty","answer","isAnswered","Fragment","validate","component","sub_question_rules","r","options","val","max_selected_values","validateQuestion","errors","isVisible","Object","keys","getErrorFields","invalidFormFields","errorFields","push","getFirstError","sort","a","b","order","focus","scrollIntoView","behavior","block","Form","onSubmit","initialValues","handleSubmit","form","submitting","pristine","getRegisteredFields","filter","field","getFieldState","invalid","firstError","scrollToFirstError","JSON","stringify","RsvpForm","questions","question_id","handleChange","hasErrors","find","class_name","simple","is_country_selector","isMulti","is_multiselect","empty_string","is_mandatory","SimpleForm","entity","componentDidUpdate","prevProps","prevState","snapshot","scrollToError","shallowEqual","isEmpty","checked","createField","fields","f","originalHash","hash","convertToHash","strHash","params","substr","toLowerCase","split","param","trim","clearParams","getParams","deleteParam","deleteParams","setParam","serialize","FreeTextSearch","onSearchClick","onClearClick","onKeyPressed","preventEvents","doFiltering","term","onSearch","keyCode","which","onKeyPress","AccessLevelsInput","getAccessLevels","getOptionValue","getOptionLabel","accessLevel","callback","defaultOptions","resolve","queryAccessLevels","multi","has_error","loadOptions","m","ActionDropdown","actionLabel","smallDdl","smallBtn","theValue","opt","isClearable","queryFunction","queryFn","queryAttendees","_value","_setValue","attendee","_getOptionValue","first_name","last_name","_getOptionLabel","CheckboxList","otherValue","op","otherChecked","handleOtherCBChange","optionValues","theVal","isNaN","inline","allowOther","paddingLeft","marginLeft","float","CompanyInput","handleNew","getCompanies","onCreate","newValue","extraOptions","queryCompanies","newOptions","c","allowCreate","AsyncComponent","AsyncCreatableSelect","AsyncSelect","onCreateOption","CountryDropdown","setOptions","abortController","AbortController","getCountryList","signal","abort","countryList","iso_code","CountryInput","DateTimePicker","isValidDate","date","currentDate","selectedDate","validation","after","before","isBefore","isSameOrBefore","isAfter","isSameOrAfter","afterDate","subtract","beforeDate","inputProps","inputDisabled","dateFormat","timeFormat","time","autoComplete","Dropdown","selection","clearable","selectClassName","selectStyles","menu","formatOptionLabel","data","Icon","filetype","Dropzone","DropzoneJS","dropzoneRef","files","onUploadComplete","getDjsConfig","defaults","url","config","postUrl","djsConfig","extend","accept","file","done","md5","getMD5","fileSize","message","startsWith","AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR","initLogOut","maxFiles","uploadCount","autoDiscover","eventHandlers","drop","info","dropzoneNode","dropzone","setupEvents","getActiveFiles","queueDestroy","destroyInterval","destroy","djsConfigObj","postUrlConfigObj","icons","showFiletypeIcon","iconFiletypes","i","eventHandler","prototype","call","on","fileInFiles","splice","progress","bytesSent","previewElement","elem","querySelectorAll","xhr","formData","setRequestHeader","append","_this","dropzoneOnLoad","onload","uploadResponse","parse","responseText","off","TextEditor","RichTextEditor","getTextAlignClassName","getTextAlignStyles","default","editorValue","createEmptyValue","currentValue","getDerivedStateFromProps","newEditorValue","setContentFromString","getTextAlignBlockMetadata","customBlockFn","oldEditorValue","getEditorState","getCurrentContent","stringValue","blockStyleFn","maxLength","charCountLeft","EventInput","getEvents","summit","onlyPublished","queryEvents","FreeMultiTextInput","inputValue","handleInputChange","handleKeyDown","limit","components","DropdownIndicator","menuContainerStyle","onInputChange","onInputKeyDown","GroupInput","getGroups","queryGroups","OptionGroup","GroupedDropdown","LanguageInput","shouldUseId","getLanguageList","languageList","l","MemberInput","getMembers","member","queryMembers","OperatorInput","customStyle","operatorValue","setOperatorValue","setInputValue","inputValueBetween","setInputValueBetween","ddlStyles","setDDLStyles","control","provided","hasError","setHasError","evt","onlyDigits","operator","justifyContent","alignItems","eventValue","OrganizationInput","getOrganizations","queryOrganizations","org","PromocodeInput","perPage","extraFilters","code","queryPromocodes","DEFAULT_PAGE_SIZE","RadioList","description","NullValue","RegistrationCompanyInput","tabSelectsValue","createLabel","options2Show","classNamPrefix","_","isNullValue","inputId","queryRegistrationCompanies","newOption","formatCreateLabel","SpeakerInput","getSpeakers","speakerId","history","querySpeakers","speaker","MultiValueLabel","s","querySponsors","company","sponsorship","SponsoredProjectInput","getSponsoredProjects","querySponsoredProjects","currentOptionKey","findIndex","valueLabel","onClickMinus","onClickPlus","days","onDayChanged","selectedOption","SummitInput","getSummits","querySummits","venues","onVenueChanged","parsedValue","optionRenderer","TagInput","tagValue","t","tag","getTags","nextValue","newTag","queryTags","orderedTags","__isNew__","Input","container_class_name","node","defaultValue","TextArea","Math","max","isBackSpace","TicketTypesInput","getTicketTypes","ticketType","version","optionsLimit","filters","audience","queryTicketTypes","UploadInputV2","mediaType","allowed_extensions","ext","join","max_size","onRemove","canAdd","timeOut","parallelChunkUploads","getAllowedExtensions","getMaxSize","allowedExt","getDefaultAllowedExtensions","maxSize","getDefaultMaxSize","canUpload","removedfile","djsConfigSet","paramName","maxFilesize","timeout","chunking","retryChunks","addRemoveLinks","acceptedFiles","componentConfig","media_type","media_upload","canDelete","getDropzone","src","private_url","public_url","filename","previewSrc","pop","path","substring","alt","placeholderSrc","file_icon","DropzoneV3","onAddedFile","onUploadProgress","onFileRemoved","onFileCompleted","onFileError","onDropzoneReady","combinedEventHandlers","init","dz","addedfile","uploadprogress","success","helpText","dropzoneInstanceRef","uploadingFiles","setUploadingFiles","errorFiles","setErrorFiles","useCallback","useMemo","showDropzone","dictDefaultMessage","formatFileSize","bytes","round","formatExtensionsDisplay","exts","toUpperCase","Boolean","slice","handleRemove","handleDropzoneReady","handleAddedFile","prev","complete","handleUploadProgress","handleFileRemoved","handleFileCompleted","some","handleFileError","handleDismissError","dzFile","removeFile","handleDeleteUploading","wrappedOnUploadComplete","dzId","dzData","extDisplay","fileRowSx","py","mb","Box","Typography","variant","fontWeight","gutterBottom","sx","UploadFile","Alert","severity","borderRadius","renderDropzone","mt","index","mr","minWidth","flex","overflow","textOverflow","whiteSpace","LinearProgress","gap","IconButton","Delete","CheckCircle","ErrorOutline","Close","elevation","handleUpload","handleError","showRemove","setShowRemove","logoPreview","setLogoPreview","preview","logoPreviewTmp","fileName","test","fileHasPreview","pdf_icon","mov_icon","mp4_icon","csv_icon","getPreviewIcon","onDrop","fileRejections","onMouseEnter","onMouseLeave","isCancelled","imgSrc","setImgSrc","customClass","setCustomClass","img","Image","onerror","replaceNewLine","DraggableItemTypes","UNSCHEDULEEVENT","SCHEDULEEVENT","TBALocation","SlotSizeOptions","PixelsPerMinute","step","initialTop","initialHeight","minHeight","maxHeight","canResize","allowResize","allowDrag","onResized","onUnPublishEvent","onEditEvent","onClickSelected","selectedPublishedEvents","onMoveEvent","collected","drag","useDrag","item","is_published","duration","collect","monitor","isDragging","canDrag","static","resizeInfo","setResizeInfo","resizing","lastYPos","setSize","isSelected","canEdit","isResizable","popoverHoverFocus","Popover","onMouseMove","newYPos","pageY","deltaY","steps","abs","sign","newHeight","newTop","maxHeightTmp","onMouseUp","onMouseDown","getAttribute","box","getBoundingClientRect","clientY","OverlayTrigger","trigger","placement","overlay","eventTitleBlock","TimeSlot","timeLabel","TimeSlotContainer","currentDay","currentSummit","events","timeSlot","pixelsPerMinute","canDropEvent","onDroppedEvent","divId","collectedProps","useDrop","isOver","canDrop","SummitEvent","canMove","placeHolderStyle","minutesContainers","container_height","renderMinutesContainer","listRef","prevIntervalRef","timeSlotsList","setTimeSlotsList","newScrollTop","setNewScrollTop","scheduleEventContainer","scrollTop","slotChangeRatio","createSlots","startTime","endTime","onScheduleEvent","eventId","getBoundingBox","filteredEvents","minutes","floor","startDateTime","time_zone","add","endDateTime","auxEvent","auxEventStartDateTime","tz","auxEventEndDateTime","shift","getMaxHeight","ReactDOM","calculateInitialTop","eventStartDateTime","utc","dayStartDateTime","diff","calculateInitialHeight","tmpList","startTimeTZ","endTimeTZ","slot","clone","last_edited","StyleSheet","create","header","headlineWrapper","flexDirection","headline","logo","marginRight","subtitle","padding","textTransform","eventList","eventWrapper","border","locationWrapper","marginBottom","footer","leftCol","maxWidth","speakers","trackWrapper","rightCol","tagsWrapper","flexWrap","SchedulePrintView","imgData","setImgData","sortedEvents","venue","locations","summitStart","epochToMomentTimeZone","time_zone_id","summitEnd","_imgData","convertSVGtoImg","getPngLogo","Document","Page","View","Text","eventDate","eventStartTime","eventEndTime","venueCount","loc","locationStr","getEventLocation","start_showing_venues_date","eventColorStyle","eventColor","borderLeft","wrap","track","moderator","speakerTags","getEventHosts","sp","tags","downloadPdf","setDownloadPdf","PDFDownloadLink","blob","loading","trackSpaceTime","scheduleEvents","selectedEvents","currentVenue","slotSize","hideBulkSelect","currentLocation","summitLocalStartDate","summitLocalEndDate","currentAuxDay","allowedDays","location_id","allowed_timeframes","at","day","getDaysOptions","allowedLocationIds","st","isNotVenue","isAllowed","rooms","subOption","getVenuesOptions","slotSizeOptions","open","close","summitTZ","allowedTimeFrame","tf","parseLocationHour","opening_hour","closing_hour","getTimeframe","onSlotSizeChange","showPrint","customBulkOptions","onMoveSingleEvent","Panel","theId","theClass","AUTH_ERROR_MISSING_AUTH_INFO","AUTH_ERROR_MISSING_REFRESH_TOKEN","AUTH_ERROR_ACCESS_TOKEN_EXPIRED","AUTH_ERROR_LOCK_ACQUIRE_ERROR","AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR","Lock","SuperTokensLock","GET_TOKEN_SILENTLY_LOCK_KEY","RESPONSE_TYPE_CODE","AUTH_INFO","ID_TOKEN","createNonce","len","possible","nonce","charAt","random","processRefreshToken","flow","refreshToken","useOAuth2RefreshToken","clearAuthInfo","fn","maxRetries","baseDelayMs","attempt","delay","pow","setTimeout","retryWithBackoff","refreshAccessToken","expires_in","refresh_token","id_token","storeAuthInfo","_getAccessToken","authInfo","getAuthInfo","expiresIn","accessTokenUpdatedAt","getOAuth2Flow","timeElapsedSecs","locks","request","lock","retryPromise","acquireLock","releaseLock","baseUrl","getOAuth2IDPBaseUrl","oauth2ClientId","getOAuth2ClientId","payload","encodeURI","controller","timeoutId","method","headers","body","networkError","clearTimeout","ok","statusText","setSessionClearingState","parseError","new_refresh_token","idToken","formerAuthInfo","Date","Cookies","secure","sameSite","putOnLocalStorage","getFromLocalStorage","removeFromLocalStorage","getIdToken","OAUTH2_CLIENT_ID","OAUTH2_FLOW","OAUTH2_USE_REFRESH_TOKEN","IDP_BASE_URL","getCurrentLocation","URI","postLogOutUri","getOrigin","queryParams","id_token_hint","query","getLogoutUrl","SimpleLinkList","getOptions","handleLink","filterOption","getNewOptionData","isValidNewOption","actions","search","optionLabel","selectValue","selectOptions","labelKey","optionFound","onCreateTag","candidate","allowDuplicates","columns","disabledAdd","valueKey","tableOptions","delete","edit","custom","itemA","sortCol","itemB","SummitDropdown","summitValue","summits","actionClass","summitOptions","bigClass","EditableTableHeading","is_edit","shouldUseTextArea","EditableActionsTableCell","is_editing","onDelete","onSave","save","onEdit","onCancel","cancel","EditableTableRow","even","role","EditableTable","rows","new_row","editRow","saveRow","deleteClick","onChangeCell","editRowCancel","saveNewRow","handleNewChange","onChangeNewCell","row","editing_row","Swal","text","showCancelButton","confirmButtonColor","confirmButtonText","result","rowIdx","tableClass","textArea","col","colWidth","warn","cells","columnKey","createRow","addNew","cell_value","createNewRow","Tooltip","delayShow","SelectableTableHeading","handleSort","getSortClass","sortable","sortDir","onSort","columnIndex","sortFunc","SelectableTableRow","handleEdit","handleSelect","shouldDisplayAction","onSelected","rowClass","SelectableActionsTableCell","handleAction","tooltip","icon","getSortDir","SelectableTable","disableSelectAll","onSelectedAll","selectedAll","actionsHeader","SortableTableHeading","SortableActionsTableCell","SortableTableRow","moveCard","dropItem","findRow","originalIndex","refRow","handlerId","getHandlerId","hover","dragIndex","hoverIndex","hoverBoundingRect","hoverMiddleY","hoverClientY","getClientOffset","y","_item","droppedId","didDrop","SortableTable","dropCallback","orderField","idField","setRows","newRow","setNewRow","renderRow","moveRow","onDropItem","TableCell","sortRows","rows2Sort","x","indexOf","prevRows","update","$splice","newOrder","sortedRows","shouldRenderNewRow","DndProvider","backend","HTML5Backend","renderNewRow","newRowTmp","TableHeading","TableRow","ActionsTableCell","colStyles","YoutubeVideoComponent","videoSrcURL","videoTitle","frameBorder","allow","allowFullScreen","LiveVideoPlayer","player","videojs","videoNode","dispose","layout","isLiveVideo","match","checkLiveVideo","videoJsOptions","autoplay","controls","fluid","sources","_event","_summit","getId","isPublished","getMinutesDuration","siblings","calculateNewDates","isValidEndDate","endDate","_endDate","summitEndDate","startDate","isValidStartDate","_startDate","durationInMinutes","summitStartDate","isValidTitle","createAction","fetchErrorHandler","msg","fetchResponseHandler","escapeFilterValue","crypto","msCrypto","chunkSize","spark","SparkMD5","fileReader","FileReader","readNextChunk","readAsArrayBuffer","atime","hour","parsedHour","origin","buildAPIBaseUrl","relativeUrl","API_BASE_URL","localStorage","setItem","removeIt","getItem","removeItem","clearing_session_state","getCurrentUserLanguage","language","languages","userLanguage","firstNode","getElementById","scrollTo","obj","curtop","offsetParent","offsetTop","findElementPos","object1","object2","keys1","keys2","cb","maxNumberOfRetries","TIMEINTERVALSINCE1970_API_URL","process","env","summitVenueCount","summitShowLocDate","shouldShowVenues","locationName","hosts","createElement","crossOrigin","loadImage","svgUrl","newWidth","naturalHeight","naturalWidth","canvas","getContext","drawImage","toDataURL","callDelay","_fetchPublic","endpoint","_fetch","addQuery","per_page","excludedIds","eventTypeClassName","ComboBoxQuestionType","CheckBoxListQuestionType","RadioButtonListQuestionType","AllowedMultipleValueQuestionType","AnswerValuesOperator_And","VisibilityCondition_Equal","questionByName","questionById","rules","_parseQuestion","av","Number","isInteger","initialCondition","parentQuestionAnswer","_getAnswerFor","parent_question_id","answerValue","_answerContains","class","_hasValue","_allowsValues","_allowsValue","ruleId","parent_rules","_isSubQuestionVisible","_isAnswered","_checkQuestion","userAnswer","originalAnswers","defaultVal","is_default","ansVal","res1","_formatQuestionAnswer","_parseQuestions","webpackContext","req","webpackContextResolve","__webpack_require__","o","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","defineProperty","enumerable","get","prop","Symbol","toStringTag"],"sourceRoot":""}
|