openstack-uicore-foundation 5.0.5 → 5.0.6
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/mui/editable-table.js +1 -1
- package/lib/components/mui/editable-table.js.map +1 -1
- package/lib/components/mui/formik-inputs/additional-input-list.js +1 -1
- package/lib/components/mui/formik-inputs/additional-input-list.js.map +1 -1
- package/lib/components/mui/formik-inputs/additional-input.js +1 -1
- package/lib/components/mui/formik-inputs/additional-input.js.map +1 -1
- package/lib/components/mui/show-confirm-dialog.js +1 -1
- package/lib/components/mui/show-confirm-dialog.js.map +1 -1
- package/lib/components/mui/sortable-table.js +1 -1
- package/lib/components/mui/sortable-table.js.map +1 -1
- package/lib/components/mui/table.js +1 -1
- package/lib/components/mui/table.js.map +1 -1
- package/package.json +1 -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/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/./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/mui/FormItemTable/components/ItemTableField.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Settings\"","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/GlobalQuantityField.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/UnderlyingAlertNote.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/index.js","webpack://openstack-uicore-foundation/./src/components/mui/ItemSettingsModal/index.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogContentText\"","webpack://openstack-uicore-foundation/./src/components/mui/NotesModal/index.js","webpack://openstack-uicore-foundation/external commonjs \"react-redux\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/CheckCircle\"","webpack://openstack-uicore-foundation/./src/components/mui/SnackbarNotification/Context.js","webpack://openstack-uicore-foundation/./src/components/mui/SnackbarNotification/index.js","webpack://openstack-uicore-foundation/./src/components/mui/checkbox-list.js","webpack://openstack-uicore-foundation/./src/components/mui/chip-list.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Notifications\"","webpack://openstack-uicore-foundation/./src/components/mui/chip-notify.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers\"","webpack://openstack-uicore-foundation/./src/components/mui/chip-select-input.js","webpack://openstack-uicore-foundation/./src/components/mui/confirm-dialog.js","webpack://openstack-uicore-foundation/./src/components/mui/custom-alert.js","webpack://openstack-uicore-foundation/./src/components/mui/dnd-list.js","webpack://openstack-uicore-foundation/./src/components/mui/dropdown-checkbox.js","webpack://openstack-uicore-foundation/./src/components/mui/editable-table/mui-table-editable.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input-list.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Add\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/meta-field-values.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/company-input-mui.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/item-price-tiers.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-async-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox-group.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/DatePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-datepicker.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-discountfield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-radio.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-file-size-field.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-pricefield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-quantity-field.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-radio-group.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select-group.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-summit-addon-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-switch.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-textfield.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/TimePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-timepicker.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-upload.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-sponsor-input.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/sponsorship-input-mui.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/sponsorship-summit-select-mui.js","webpack://openstack-uicore-foundation/./src/components/mui/infinite-table/styles.module.less?f766","webpack://openstack-uicore-foundation/./src/components/mui/infinite-table/index.js","webpack://openstack-uicore-foundation/./src/components/mui/menu-button.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Search\"","webpack://openstack-uicore-foundation/./src/components/mui/search-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-dom\"","webpack://openstack-uicore-foundation/./src/components/mui/showConfirmDialog.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/UnfoldMore\"","webpack://openstack-uicore-foundation/./src/components/mui/sortable-table/styles.module.less?adcf","webpack://openstack-uicore-foundation/./src/components/mui/sortable-table/mui-table-sortable.js","webpack://openstack-uicore-foundation/./src/components/mui/sponsor-addon-select.js","webpack://openstack-uicore-foundation/./src/components/mui/summit-addon-select.js","webpack://openstack-uicore-foundation/./src/components/mui/summits-dropdown.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Check\"","webpack://openstack-uicore-foundation/./src/components/mui/table/mui-table.module.less?e9a1","webpack://openstack-uicore-foundation/./src/components/mui/table/mui-table.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/./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/./src/utils/constants.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/money.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 \"@mui/icons-material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Clear\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Close\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Delete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Edit\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/ExpandMore\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Autocomplete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Box\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Button\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/CircularProgress\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Dialog\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogActions\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogContent\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogTitle\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Paper\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Table\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableBody\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableCell\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableContainer\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableHead\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TablePagination\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableRow\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableSortLabel\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TextField\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/utils\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/AdapterMoment\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/LocalizationProvider\"","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 \"formik\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react\"","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-beautiful-dnd\"","webpack://openstack-uicore-foundation/external commonjs \"react-dnd\"","webpack://openstack-uicore-foundation/external commonjs \"react-dom/client\"","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/./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 {queryPromocodes} from '../../utils/query-actions';\nimport {DEFAULT_PER_PAGE} from '../../utils/constants';\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_PER_PAGE,\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","/**\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, file.size > 0 ? bytesSent / file.size * 100 : 0);\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 * 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 '0 KB';\n if (bytes >= 1024 * 1024) return `${Math.round(bytes / (1024 * 1024))} MB`;\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 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","/**\n * Copyright 2026 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 { MenuItem } from \"@mui/material\";\nimport MuiFormikCheckbox from \"../../formik-inputs/mui-formik-checkbox\";\nimport MuiFormikDropdownCheckbox from \"../../formik-inputs/mui-formik-dropdown-checkbox\";\nimport MuiFormikDropdownRadio from \"../../formik-inputs/mui-formik-dropdown-radio\";\nimport MuiFormikDatepicker from \"../../formik-inputs/mui-formik-datepicker\";\nimport MuiFormikTimepicker from \"../../formik-inputs/mui-formik-timepicker\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\nimport MuiFormikSelect from \"../../formik-inputs/mui-formik-select\";\n\nconst ItemTableField = ({\n rowId,\n field,\n timeZone,\n label = \"\",\n disabled = false\n}) => {\n const name = `i-${rowId}-c-${field.class_field}-f-${field.type_id}`;\n const commonProps = { name, label, disabled };\n\n switch (field.type) {\n case \"CheckBox\":\n return <MuiFormikCheckbox {...commonProps} />;\n case \"CheckBoxList\":\n return (\n <MuiFormikDropdownCheckbox\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"RadioButtonList\":\n return (\n <MuiFormikDropdownRadio\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"DateTime\":\n return <MuiFormikDatepicker {...commonProps} />;\n case \"Time\":\n return <MuiFormikTimepicker {...commonProps} timeZone={timeZone} />;\n case \"Quantity\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n type=\"number\"\n slotProps={{\n htmlInput: {\n min: field.minimum_quantity,\n ...(field.maximum_quantity > 0\n ? { max: field.maximum_quantity }\n : {})\n }\n }}\n />\n );\n case \"ComboBox\":\n return (\n <MuiFormikSelect {...commonProps} size=\"small\">\n {field.values.map((v) => (\n <MenuItem key={`ddopt-${v.id}`} value={v.id}>\n {v.value}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n );\n case \"Text\":\n return <MuiFormikTextField {...commonProps} fullWidth size=\"small\" />;\n case \"TextArea\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n multiline\n rows={3}\n />\n );\n }\n};\n\nexport default ItemTableField;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Settings\");","/**\n * Copyright 2026 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 } from \"react\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\n\nconst GlobalQuantityField = ({\n row,\n extraColumns,\n value,\n disabled = false\n}) => {\n const name = `i-${row.form_item_id}-c-global-f-quantity`;\n // eslint-disable-next-line\n const [field, meta, helpers] = useField(name);\n\n // using readOnly since formik won't validate disabled fields\n const isReadOnly =\n extraColumns.filter((eq) => eq.type === \"Quantity\").length > 0;\n\n useEffect(() => {\n helpers.setValue(value);\n helpers.setTouched(true);\n }, [value]);\n\n return (\n <MuiFormikTextField\n name={name}\n fullWidth\n size=\"small\"\n type=\"number\"\n disabled={disabled}\n slotProps={{\n htmlInput: {\n readOnly: isReadOnly,\n min: 0,\n ...(row.quantity_limit_per_sponsor\n ? { max: row.quantity_limit_per_sponsor }\n : {})\n }\n }}\n sx={\n isReadOnly\n ? {\n \"& .MuiInputBase-root\": {\n backgroundColor: \"action.disabledBackground\",\n color: \"text.disabled\",\n pointerEvents: \"none\"\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"action.disabled\"\n }\n }\n : {}\n }\n />\n );\n};\n\nexport default GlobalQuantityField;\n","/**\n * Copyright 2026 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 { Typography } from \"@mui/material\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst UnderlyingAlertNote = ({ showAdditionalItems }) => {\n if (!showAdditionalItems) return null;\n\n return (\n <Typography\n variant=\"body2\"\n component=\"p\"\n sx={{ color: \"error.warning\", fontSize: \"0.8rem\" }}\n >\n <ErrorIcon\n color=\"error\"\n sx={{\n fontSize: \"1rem\",\n top: \"0.2rem\",\n position: \"relative\"\n }}\n />{\" \"}\n {T.translate(\"sponsor_edit_form.additional_info\")}\n </Typography>\n );\n};\n\nexport default UnderlyingAlertNote;\n","/**\n * Copyright 2026 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, { useCallback, useMemo } from \"react\";\nimport {\n IconButton,\n MenuItem,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { currencyAmountFromCents } from \"../../../utils/money\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\nimport GlobalQuantityField from \"./components/GlobalQuantityField\";\nimport ItemTableField from \"./components/ItemTableField\";\nimport MuiFormikSelect from \"../formik-inputs/mui-formik-select\";\nimport MuiFormikPriceField from \"../formik-inputs/mui-formik-pricefield\";\nimport MuiFormikDiscountField from \"../formik-inputs/mui-formik-discountfield\";\nimport UnderlyingAlertNote from \"./components/UnderlyingAlertNote\";\n\nconst FormItemTable = ({\n data,\n currentApplicableRate,\n timeZone,\n values,\n onNotesClick,\n onSettingsClick\n}) => {\n const valuesStr = JSON.stringify(values);\n const extraColumns =\n data[0]?.meta_fields?.filter((mf) => mf.class_field === \"Form\") || [];\n const fixedColumns = 10;\n const totalColumns = extraColumns.length + fixedColumns;\n\n const calculateQuantity = useCallback(\n (row) => {\n const qtyEXC = extraColumns.filter((exc) => exc.type === \"Quantity\");\n const globalQty = values[`i-${row.form_item_id}-c-global-f-quantity`];\n const itemLevelQty = qtyEXC.reduce((res, exc) => {\n const start = res > 0 ? res : 1;\n return (\n start *\n (values?.[\n `i-${row.form_item_id}-c-${exc.class_field}-f-${exc.type_id}`\n ] || 0)\n );\n }, 0);\n\n return qtyEXC.length > 0 ? itemLevelQty : globalQty;\n },\n [valuesStr, extraColumns]\n );\n\n const calculateRowTotal = (row) => {\n const qty =\n values[`i-${row.form_item_id}-c-global-f-quantity`] ||\n calculateQuantity(row);\n\n if (currentApplicableRate === \"expired\") return 0;\n\n const customRate = values[`i-${row.form_item_id}-c-global-f-custom_rate`];\n const rate = customRate || row.rates[currentApplicableRate];\n\n if (rate == null || qty == null) return 0;\n\n return qty * rate;\n };\n\n const hasItemFields = (row) =>\n row.meta_fields.filter((mf) => mf.class_field === \"Item\").length > 0;\n\n const itemFieldsIncomplete = (row) => {\n const requiredFields = row.meta_fields.filter(\n (mf) => mf.class_field === \"Item\" && mf.is_required\n );\n const hasMissingFields = requiredFields.some((mf) => {\n const value = values[`i-${row.form_item_id}-c-item-f-${mf.type_id}`];\n return value === undefined || value === null || value === \"\";\n });\n\n return requiredFields.length > 0 && hasMissingFields;\n };\n\n const formatRate = (rate) => {\n if (rate == null) return T.translate(\"general.n_a\");\n return currencyAmountFromCents(rate);\n };\n\n const totalAmount = useMemo(() => {\n const subtotal = data.reduce((acc, row) => acc + calculateRowTotal(row), 0);\n const discount =\n values.discount_type === DISCOUNT_TYPES.AMOUNT\n ? values.discount_amount\n : subtotal * (values.discount_amount / ONE_HUNDRED / ONE_HUNDRED); // bps to fraction\n\n return subtotal - Math.round(discount);\n }, [data, valuesStr, currentApplicableRate]);\n\n const handleEdit = (row) => {\n onNotesClick(row);\n };\n\n const handleEditItemFields = (row) => {\n onSettingsClick(row);\n };\n\n return (\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n <TableRow sx={{ backgroundColor: \"#EAEDF4\" }}>\n <TableCell>\n {T.translate(\"sponsor_edit_form.code\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.description\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.custom_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.early_bird_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.standard_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.onsite_rate\")}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`colhead-${exc.type_id}`}>{exc.name}</TableCell>\n ))}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.qty\")}\n </TableCell>\n <TableCell sx={{ minWidth: 40 }} />\n {/* item level extra field */}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.total\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.notes\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.map((row) => (\n <TableRow key={`datarow-${row.form_item_id}`}>\n <TableCell>{row.code}</TableCell>\n <TableCell sx={{ position: \"relative\" }}>\n <div>{row.name}</div>\n <UnderlyingAlertNote\n showAdditionalItems={\n hasItemFields(row) && itemFieldsIncomplete(row)\n }\n />\n </TableCell>\n <TableCell>\n <MuiFormikPriceField\n name={`i-${row.form_item_id}-c-global-f-custom_rate`}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n inputProps={{ step: 0.01 }}\n />\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"early_bird\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.early_bird)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"standard\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.standard)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"onsite\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.onsite)}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`datacell-${row.form_item_id}-${exc.type_id}`}>\n <ItemTableField\n field={exc}\n rowId={row.form_item_id}\n timeZone={timeZone}\n />\n </TableCell>\n ))}\n <TableCell>\n <GlobalQuantityField\n row={row}\n extraColumns={extraColumns}\n value={calculateQuantity(row)}\n />\n </TableCell>\n <TableCell align=\"center\">\n {hasItemFields(row) && (\n <IconButton\n size=\"small\"\n aria-label=\"settings\"\n onClick={() => handleEditItemFields(row)}\n >\n <SettingsIcon fontSize=\"large\" color=\"warning\" />\n </IconButton>\n )}\n </TableCell>\n <TableCell>\n {currencyAmountFromCents(calculateRowTotal(row))}\n </TableCell>\n <TableCell align=\"center\">\n <IconButton\n size=\"large\"\n aria-label=\"edit\"\n onClick={() => handleEdit(row)}\n >\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.discount\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 5).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-discountcell`}\n />\n ))}\n <TableCell>\n <MuiFormikSelect name=\"discount_type\" label=\"\" size=\"small\">\n {Object.values(DISCOUNT_TYPES).map((p) => (\n <MenuItem key={`ddopt-${p}`} value={p}>\n {p}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </TableCell>\n <TableCell />\n <TableCell>\n <MuiFormikDiscountField\n name=\"discount_amount\"\n discountType={values.discount_type}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n />\n </TableCell>\n <TableCell />\n </TableRow>\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.total_on_caps\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 3).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-totalcell`}\n />\n ))}\n <TableCell sx={{ fontWeight: 500 }}>\n {currencyAmountFromCents(totalAmount)}\n </TableCell>\n <TableCell />\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n );\n};\n\nexport default FormItemTable;\n","/**\n * Copyright 2026 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 T from \"i18n-react/dist/i18n-react\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { Divider, IconButton, Typography } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport ItemTableField from \"../FormItemTable/components/ItemTableField\";\n\nconst ItemSettingsModal = ({ item, timeZone, open, onClose }) => {\n const itemFields =\n item?.meta_fields.filter((f) => f.class_field === \"Item\") || [];\n\n const handleSave = () => {\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>{T.translate(\"general.settings\")}</DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n sx={(theme) => ({\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme.palette.grey[500]\n })}\n >\n <CloseIcon />\n </IconButton>\n <Divider />\n <DialogContent>\n <Typography\n variant=\"body2\"\n component=\"div\"\n sx={{ marginBottom: \"20px\" }}\n >\n {item?.name}\n </Typography>\n <Divider\n sx={{\n marginBottom: \"20px\",\n marginLeft: \"-24px\",\n marginRight: \"-24px\"\n }}\n />\n {itemFields.map((exc) => (\n <React.Fragment key={`item-field-${exc.type_id}`}>\n <ItemTableField\n field={exc}\n rowId={item.form_item_id}\n timeZone={timeZone}\n label={exc.name}\n />\n </React.Fragment>\n ))}\n </DialogContent>\n <DialogActions>\n <Button onClick={handleSave} variant=\"contained\" fullWidth>\n {T.translate(\"general.save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nItemSettingsModal.propTypes = {\n item: PropTypes.object.isRequired,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired\n};\n\nexport default ItemSettingsModal;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/DialogContentText\");","/**\n * Copyright 2026 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 T from \"i18n-react/dist/i18n-react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { useField } from \"formik\";\nimport { Divider, IconButton, TextField } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nconst NotesModal = ({ item, open, onClose }) => {\n const name = `i-${item?.form_item_id}-c-global-f-notes`;\n // eslint-disable-next-line\n const [field, meta, helpers] = useField(name);\n const [notes, setNotes] = useState(\"\");\n\n useEffect(() => {\n setNotes(field.value || \"\");\n }, [field?.value]);\n\n const handleSave = () => {\n helpers.setValue(notes);\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>\n {T.translate(\"sponsor_edit_form.notes\")}\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n sx={(theme) => ({\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme.palette.grey[500]\n })}\n >\n <CloseIcon />\n </IconButton>\n <Divider />\n <DialogContent>\n <DialogContentText>{item?.name}</DialogContentText>\n <TextField\n name={name}\n onChange={(ev) => setNotes(ev.target.value)}\n value={notes}\n margin=\"normal\"\n multiline\n fullWidth\n rows={4}\n placeholder={T.translate(\n \"sponsor_edit_form.notes_placeholder\"\n )}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={handleSave} variant=\"contained\" fullWidth>\n {T.translate(\"general.save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nNotesModal.propTypes = {\n item: PropTypes.object,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired\n};\n\nexport default NotesModal;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-redux\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/CheckCircle\");","/**\n * Copyright 2026 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 { createContext, useContext } from \"react\";\n\nconst SnackbarNotificationContext = createContext(null);\n\nexport const useSnackbarMessage = () => useContext(SnackbarNotificationContext);\n\nexport default SnackbarNotificationContext;\n","/**\n * Copyright 2026 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, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Alert, Snackbar, Typography } from \"@mui/material\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport SnackbarNotificationContext from \"./Context\";\nimport { NOTIFICATION_TIMEOUT } from \"../../../utils/constants\";\nimport { empty } from \"../../../utils/methods\";\nimport { clearSnackbarMessage } from \"../../../utils/actions\";\n\n/*\n This component works in two ways:\n - useSnackbarMessage hook that returns successMessage and errorMessage methods to trigger the snackbar.\n - snackbarErrorHandler and snackbarSuccessHandler actions from base-actions that change the base reducer\n */\n\nconst SnackbarNotification = ({\n children,\n snackbarMessage,\n clearSnackbarMessage\n}) => {\n const [open, setOpen] = useState(false);\n const [msgData, setMsgData] = useState({});\n // this two methods are for on-demand messaging\n const successMessage = (msg) => setMsgData({ html: msg, type: \"success\" });\n const errorMessage = (msg) => setMsgData({ html: msg, type: \"warning\" });\n const messageContext = useMemo(() => ({ successMessage, errorMessage }), []);\n\n const clearMessage = () => {\n setMsgData({});\n clearSnackbarMessage();\n };\n\n const onClose = () => {\n setOpen(false);\n setTimeout(clearMessage, NOTIFICATION_TIMEOUT);\n };\n\n useEffect(() => {\n if (!empty(msgData.html)) {\n setOpen(true);\n } else {\n setOpen(false);\n }\n }, [msgData]);\n\n // when snackbarMessage changes in base-reducer, we trigger the snackbar\n useEffect(() => {\n if (!empty(snackbarMessage?.html)) {\n setMsgData(snackbarMessage);\n }\n }, [snackbarMessage]);\n\n return (\n <SnackbarNotificationContext.Provider value={messageContext}>\n <Snackbar\n open={open}\n onClose={onClose}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n autoHideDuration={NOTIFICATION_TIMEOUT}\n >\n <Alert\n onClose={onClose}\n severity={msgData.type}\n variant=\"filled\"\n sx={{ width: \"100%\", backgroundColor: `${msgData.type}.light` }}\n iconMapping={{\n success: <CheckCircleIcon fontSize=\"inherit\" />,\n error: <ErrorIcon fontSize=\"inherit\" />\n }}\n >\n <Typography\n variant=\"body1\"\n component=\"div\"\n dangerouslySetInnerHTML={{ __html: msgData.html }}\n />\n </Alert>\n </Snackbar>\n {children}\n </SnackbarNotificationContext.Provider>\n );\n};\n\nSnackbarNotification.propTypes = {\n children: PropTypes.node,\n snackbarMessage: PropTypes.object\n};\n\nconst mapStateToProps = ({ baseState }) => ({\n snackbarMessage: baseState.snackbarMessage\n});\n\nexport default connect(mapStateToProps, { clearSnackbarMessage })(\n SnackbarNotification\n);\n","/**\n * Copyright 2026 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 {\n Checkbox,\n FormControlLabel,\n FormGroup,\n Box,\n Divider\n} from \"@mui/material\";\n\nconst CheckBoxList = ({\n items = [],\n onChange,\n loadMoreData,\n boxHeight = \"400px\",\n allItemsLabel = \"Select All\",\n noItemsLabel = \"No items found\"\n}) => {\n const [selectedItems, setSelectedItems] = useState([]);\n const [isAllSelected, setIsAllSelected] = useState(false);\n const allItemIds = items.map((item) => item.id);\n\n const handleScroll = (event) => {\n const { scrollTop, scrollHeight, clientHeight } = event.target;\n // eslint-disable-next-line no-magic-numbers\n if (scrollTop + clientHeight >= scrollHeight - 20 && loadMoreData) {\n loadMoreData();\n }\n };\n\n const handleItemChange = (itemId) => {\n let selected = [];\n if (isAllSelected) {\n selected = allItemIds.filter((id) => id !== itemId);\n } else if (selectedItems.includes(itemId)) {\n selected = selectedItems.filter((id) => id !== itemId);\n } else {\n selected = [...selectedItems, itemId];\n }\n\n setSelectedItems(selected);\n // if user selects an item, then allSelected should be unchecked\n setIsAllSelected(false);\n onChange(selected);\n };\n\n const handleAllChange = () => {\n // if user selects all, we should remove all other selections\n setSelectedItems([]);\n setIsAllSelected(!isAllSelected);\n onChange([], !isAllSelected);\n };\n\n return (\n <Box\n sx={{\n width: \"100%\",\n height: boxHeight,\n overflow: \"auto\",\n border: \"1px solid #ccc\",\n padding: 2\n }}\n onScroll={handleScroll}\n >\n {items.length === 0 ? (\n <p>{noItemsLabel}</p>\n ) : (\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox checked={isAllSelected} onChange={handleAllChange} />\n }\n label={allItemsLabel}\n />\n <Divider sx={{ mb: 2 }} />\n {items.map((item) => (\n <FormControlLabel\n key={item.id}\n control={\n <Checkbox\n checked={selectedItems.includes(item.id) || isAllSelected}\n onChange={() => handleItemChange(item.id)}\n />\n }\n label={item.name}\n />\n ))}\n </FormGroup>\n )}\n </Box>\n );\n};\n\nexport default CheckBoxList;\n","/**\n * Copyright 2026 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 { Box, Chip, Tooltip, Typography } from \"@mui/material\";\n\nconst ChipList = ({ chips, maxLength }) => {\n const shownItems = chips.slice(0, maxLength);\n const rest = chips.slice(maxLength);\n\n return (\n <Box>\n {shownItems.map((chip) => (\n <Chip key={`chip-${chip}`} label={chip} size=\"small\" sx={{ mr: 1 }} />\n ))}\n {rest.length > 0 && (\n <Tooltip\n title={rest.map((r) => (\n <Typography key={`cl-tt-${r}`} variant=\"body1\" component=\"div\">\n {r}\n </Typography>\n ))}\n arrow\n >\n <Chip label=\"...\" size=\"small\" sx={{ cursor: \"pointer\" }} />\n </Tooltip>\n )}\n </Box>\n );\n};\n\nexport default ChipList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Notifications\");","/**\n * Copyright 2026 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 { Chip } from \"@mui/material\";\nimport NotificationsIcon from \"@mui/icons-material/Notifications\";\n\nconst ChipNotify = ({ label, color = \"warning\", Icon = NotificationsIcon, ...props }) => (\n <Chip\n icon={<Icon />}\n color={color}\n label={label.toUpperCase()}\n variant=\"outlined\"\n {...props}\n />\n);\n\nexport default ChipNotify;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers\");","/**\n * Copyright 2026 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 {\n Box,\n Chip,\n FormControl,\n IconButton,\n InputAdornment,\n InputLabel,\n MenuItem,\n OutlinedInput,\n Select\n} from \"@mui/material\";\nimport { ClearIcon } from \"@mui/x-date-pickers\";\n\nconst ChipSelectInput = ({\n availableOptions = [],\n canAdd = false,\n canEdit = false,\n inputLabel = \"\",\n currentSettings = null,\n onGetSettingsMeta,\n onGetSettings,\n onUpsertSettings,\n renderSelectedOptions,\n denormalizeSettings\n}) => {\n const [selectedColumns, setSelectedColumns] = useState([]);\n const [isDirty, setIsDirty] = useState(false);\n\n // get current selected options\n useEffect(() => {\n if (onGetSettings) {\n onGetSettings();\n }\n }, [onGetSettings]);\n\n useEffect(() => {\n if (currentSettings) {\n if (onGetSettingsMeta) {\n onGetSettingsMeta();\n }\n\n if (currentSettings && renderSelectedOptions && denormalizeSettings) {\n const selectedColumnsTmp = renderSelectedOptions(\n denormalizeSettings(currentSettings.columns)\n ).map((c) => c.value);\n setSelectedColumns(selectedColumnsTmp);\n }\n }\n }, [currentSettings]);\n\n const submitNewColumns = (newValue) => {\n setSelectedColumns(newValue);\n onUpsertSettings(newValue);\n setIsDirty(false);\n };\n\n const handleColumnChange = (value) => {\n setSelectedColumns(value);\n setIsDirty(true);\n };\n\n const handleRemoveItem = (value) => {\n const newValues = selectedColumns.filter((c) => c !== value);\n setSelectedColumns(newValues);\n onUpsertSettings(newValues);\n };\n\n if (!canAdd || !canEdit || availableOptions.length === 0) {\n return null;\n }\n\n return (\n <Box>\n <FormControl fullWidth>\n <InputLabel id=\"multi-select-label\">{inputLabel}</InputLabel>\n <Select\n labelId=\"multi-select-label\"\n id=\"multi-select\"\n multiple\n fullWidth\n value={selectedColumns}\n onChange={(ev) => handleColumnChange(ev.target.value)}\n onClose={() => (isDirty ? submitNewColumns(selectedColumns) : null)}\n input={<OutlinedInput label={inputLabel} />}\n renderValue={(selected) => (\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 0.5 }}>\n {selected.map((value) => {\n const op = availableOptions.find((opt) => opt.value === value);\n if (!op) return null;\n return (\n <Chip\n key={op.value}\n label={op.label}\n onDelete={() => {\n handleRemoveItem(op.value);\n }}\n deleteIcon={\n <ClearIcon\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n />\n }\n />\n );\n })}\n </Box>\n )}\n endAdornment={\n selectedColumns.length > 0 && (\n <InputAdornment sx={{ marginRight: \"10px\" }} position=\"end\">\n <IconButton\n onClick={() => {\n submitNewColumns([]);\n }}\n >\n <ClearIcon />\n </IconButton>\n </InputAdornment>\n )\n }\n >\n {availableOptions.map(({ value, label }) => (\n <MenuItem key={value} value={value}>\n {label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n );\n};\n\nexport default ChipSelectInput;\n","/**\n * Copyright 2026 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 {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Typography\n} from \"@mui/material\";\nimport { CheckCircle, Error, Info, Warning } from \"@mui/icons-material\";\n\nconst iconMap = {\n warning: <Warning color=\"warning\" />,\n success: <CheckCircle color=\"success\" />,\n error: <Error color=\"error\" />,\n info: <Info color=\"info\" />\n};\n\nconst ConfirmDialog = ({\n open,\n title,\n text,\n iconType = \"\",\n onConfirm,\n onCancel,\n confirmButtonText = \"Confirm\",\n confirmButtonColor = \"primary\",\n cancelButtonText = \"Cancel\",\n cancelButtonColor = \"primary\"\n}) => (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle sx={{ p: 2 }} component=\"div\">\n <Typography variant=\"h5\">{title}</Typography>\n </DialogTitle>\n <Divider />\n <DialogContent sx={{ p: 2 }}>\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {iconMap[iconType] && (\n <div style={{ marginRight: 10 }}>{iconMap[iconType]}</div>\n )}\n <Typography variant=\"body1\">{text}</Typography>\n </div>\n </DialogContent>\n <Divider sx={{ margin: \"10px 0px 10px 0px\" }} />\n <DialogActions>\n <Button\n fullWidth\n onClick={onCancel}\n color={cancelButtonColor}\n variant=\"outlined\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {cancelButtonText}\n </Button>\n <Button\n fullWidth\n onClick={onConfirm}\n color={confirmButtonColor}\n variant=\"contained\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nConfirmDialog.propTypes = {\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n iconType: PropTypes.string,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n confirmButtonText: PropTypes.string,\n confirmButtonColor: PropTypes.string,\n cancelButtonText: PropTypes.string,\n cancelButtonColor: PropTypes.string\n};\n\nConfirmDialog.defaultProps = {\n open: false,\n iconType: \"warning\",\n confirmButtonText: \"Confirm\",\n confirmButtonColor: \"primary\",\n cancelButtonText: \"Cancel\",\n cancelButtonColor: \"default\"\n};\n\nexport default ConfirmDialog;\n","/**\n * Copyright 2026 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 { Alert } from \"@mui/material\";\n\nconst CustomAlert = ({ severity = \"info\", message = \"\", hideIcon = false }) => (\n <Alert\n severity={severity}\n icon={!hideIcon}\n sx={{\n justifyContent: \"start\",\n alignItems: \"center\",\n mb: 2\n }}\n >\n {message}\n </Alert>\n);\n\nexport default CustomAlert;\n","/**\n * Copyright 2026 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 { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport { Box } from \"@mui/material\";\n\nconst reorder = (list, startIndex, endIndex, updateOrderKey) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n return result.map((item, index) => ({\n ...item,\n [updateOrderKey]: index + 1\n }));\n};\n\nconst DragAndDropList = ({\n items,\n onReorder,\n renderItem,\n idKey,\n updateOrderKey,\n droppableId\n}) => {\n const handleDragEnd = (result) => {\n if (!result.destination) return;\n\n const newItems = reorder(\n items,\n result.source.index,\n result.destination.index,\n updateOrderKey\n );\n onReorder(newItems, result);\n };\n\n return (\n <DragDropContext onDragEnd={handleDragEnd}>\n <Droppable droppableId={droppableId}>\n {(provided) => (\n <Box\n ref={provided.innerRef}\n {...provided.droppableProps}\n sx={{ width: \"100%\" }}\n >\n {items.map((item, index) => (\n <Draggable\n key={String(item[idKey] || `new-${index}`)}\n draggableId={String(item[idKey] || `new-${index}`)}\n index={index}\n >\n {(provided, snapshot) => (\n <Box\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n sx={{\n background: snapshot.isDragging ? \"#f0f0f0\" : \"inherit\",\n transition: \"background 0.2s ease\"\n }}\n >\n {renderItem(item, index, provided, snapshot)}\n </Box>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </Box>\n )}\n </Droppable>\n </DragDropContext>\n );\n};\n\nDragAndDropList.propTypes = {\n items: PropTypes.array.isRequired,\n onReorder: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n idKey: PropTypes.string,\n updateOrderKey: PropTypes.string,\n droppableId: PropTypes.string\n};\n\nDragAndDropList.defaultProps = {\n idKey: \"id\",\n updateOrderKey: \"order\",\n droppableId: \"droppable\"\n};\n\nexport default DragAndDropList;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n Divider,\n FormControl,\n InputLabel,\n ListItemText,\n MenuItem,\n OutlinedInput,\n Select\n} from \"@mui/material\";\n\nconst DropdownCheckbox = ({\n name,\n label,\n allLabel,\n value = [],\n options,\n onChange,\n ...rest\n}) => {\n const handleChange = (ev) => {\n const rawValue = ev.target.value;\n const selected = Array.isArray(rawValue)\n ? rawValue\n : typeof rawValue === \"string\"\n ? rawValue.split(\",\")\n : [];\n\n if (selected.includes(\"all\")) {\n if (!value.includes(\"all\")) {\n // if all changed from unselected to selected we remove the rest of selections\n onChange({ target: { name, value: [\"all\"] } });\n } else if (selected.length > 1) {\n // if all was selected and now select an item, we remove \"all\" from selections\n onChange({\n target: { name, value: selected.filter((v) => v !== \"all\") }\n });\n } else {\n onChange({ target: { name, value: [\"all\"] } });\n }\n } else {\n // else if \"all\" is not selected we just send selection\n onChange({ target: { name, value: selected } });\n }\n };\n\n return (\n <FormControl fullWidth margin=\"normal\">\n <InputLabel id={`${name}_label`}>{label}</InputLabel>\n <Select\n labelId={`${name}_label`}\n name={name}\n multiple\n value={value}\n onChange={handleChange}\n {...rest}\n input={<OutlinedInput label={label} />}\n renderValue={(selected) => {\n if (selected.includes(\"all\")) {\n return allLabel; // Display allLabel when all options are selected\n }\n const selectedNames = options\n .filter(({ id }) => selected.includes(id))\n .map(({ name: opName }) => opName);\n return selectedNames.join(\", \");\n }}\n >\n <MenuItem key=\"all\" value=\"all\">\n <Checkbox checked={value.includes(\"all\")} />\n <ListItemText primary={allLabel} />\n </MenuItem>\n <Divider />\n {options.map(({ name: opName, id }) => (\n <MenuItem key={id} value={id}>\n <Checkbox checked={value.includes(id)} />\n <ListItemText primary={opName} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default DropdownCheckbox;\n","/**\n * Copyright 2026 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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport { IconButton, TextField } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nimport {\n DEFAULT_PER_PAGE,\n FIFTY_PER_PAGE,\n TWENTY_PER_PAGE\n} from \"../../../utils/constants\";\nimport showConfirmDialog from \"../showConfirmDialog\";\n\nconst ARCHIVED_CELL_SX = {\n backgroundColor: \"background.light\",\n color: \"text.disabled\"\n};\n\nconst validateValue = (value, validation) => {\n if (!validation) return { isValid: true };\n\n // validate with yup schema\n if (\n validation.schema &&\n typeof validation.schema.validateSync === \"function\"\n ) {\n try {\n validation.schema.validateSync(value);\n return { isValid: true, message: null };\n } catch (err) {\n return { isValid: false, message: err.message };\n }\n }\n\n return { isValid: true };\n};\n\n// Updated component to handle editable cells with hover edit icon\nconst EditableCell = ({ value, isEditing, onBlur, validation }) => {\n const [inputValue, setInputValue] = React.useState(value);\n const [isHovering, setIsHovering] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n React.useEffect(() => {\n setInputValue(value);\n setError(null);\n }, [value]);\n\n const handleValidationAndSave = (newValue) => {\n const { isValid, message } = validateValue(newValue, validation);\n\n if (isValid) {\n setError(null);\n onBlur(newValue, true);\n } else {\n setError(message);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleValidationAndSave(inputValue);\n }\n };\n\n if (isEditing) {\n return (\n <TextField\n autoFocus\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n if (error) setError(null);\n }}\n onBlur={() => {\n handleValidationAndSave(inputValue);\n }}\n onKeyDown={handleKeyDown}\n size=\"small\"\n fullWidth\n variant=\"standard\"\n error={!!error}\n helperText={error}\n />\n );\n }\n\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n width: \"100%\",\n height: \"100%\"\n }}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n >\n <span style={{ flex: 1 }}>{value}</span>\n {isHovering && (\n <EditIcon\n fontSize=\"small\"\n sx={{\n opacity: 0.5,\n position: \"absolute\",\n right: 0,\n \"&:hover\": {\n opacity: 1\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MuiTableEditable = ({\n columns = [],\n data = [],\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1, disableProp: null },\n getName = (item) => item.name,\n onEdit,\n onArchive,\n onDelete,\n onCellChange, // New prop for handling cell value changes\n deleteDialogBody\n}) => {\n // State to track which cell is currently being edited\n const [editingCell, setEditingCell] = React.useState(null);\n\n const handleChangePage = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleChangeRowsPerPage = (ev) => {\n onPerPageChange(ev.target.value);\n };\n\n const basePerPageOptions = [\n DEFAULT_PER_PAGE,\n TWENTY_PER_PAGE,\n FIFTY_PER_PAGE\n ];\n\n const customPerPageOptions = basePerPageOptions.includes(perPage)\n ? basePerPageOptions\n : [...basePerPageOptions, perPage].sort((a, b) => a - b);\n\n const { sortCol, sortDir } = options;\n\n const getArchivedCellSx = (row) =>\n options.disableProp && row[options.disableProp] ? ARCHIVED_CELL_SX : null;\n\n const getCellSx = (row, baseSx = {}) => ({\n ...baseSx,\n ...(getArchivedCellSx(row) || {})\n });\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: deleteDialogBody\n ? deleteDialogBody(getName(item))\n : `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n const isEditable = (col, row) =>\n typeof col.editable === \"function\" ? col.editable(row) : !!col.editable;\n\n // Handler for starting edit mode on a cell\n const handleCellClick = (row, columnKey) => {\n // Check if the column is editable\n const column = columns.find((col) => col.columnKey === columnKey);\n if (column && isEditable(column, row)) {\n setEditingCell({ rowId: row.id, columnKey });\n }\n };\n\n // Handler for saving changes when editing is complete\n const handleCellBlur = (rowId, columnKey, newValue, isValid) => {\n if (onCellChange && isValid) {\n onCellChange(rowId, columnKey, newValue);\n }\n setEditingCell(null);\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n {onEdit && <TableCell sx={{ width: 40 }} />}\n {onArchive && <TableCell sx={{ width: 80 }} />}\n {onDelete && <TableCell sx={{ width: 40 }} />}\n </TableRow>\n </TableHead>\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row) => (\n <TableRow key={row.id}>\n {columns.map((col) => (\n <TableCell\n key={`${row.id}-${col.columnKey}`}\n onClick={() => handleCellClick(row, col.columnKey)}\n sx={getCellSx(row, {\n cursor: isEditable(col, row) ? \"pointer\" : \"default\",\n padding: isEditable(col, row) ? \"8px 16px\" : undefined // Ensure enough space for the edit icon\n })}\n >\n {isEditable(col, row) ? (\n <EditableCell\n value={row[col.columnKey]}\n isEditing={\n editingCell &&\n editingCell.rowId === row.id &&\n editingCell.columnKey === col.columnKey\n }\n onBlur={(newValue, isValid) =>\n handleCellBlur(\n row.id,\n col.columnKey,\n newValue,\n isValid\n )\n }\n validation={col.validation}\n />\n ) : col.render ? (\n col.render(row)\n ) : (\n row[col.columnKey]\n )}\n </TableCell>\n ))}\n {onEdit && (\n <TableCell sx={getCellSx(row)}>\n <IconButton\n onClick={() => onEdit(row)}\n size=\"small\"\n aria-label={T.translate(\"general.edit\")}\n >\n <EditIcon />\n </IconButton>\n </TableCell>\n )}\n {onArchive && (\n <TableCell align=\"center\" sx={{ width: 80 }}>\n <Button\n variant=\"text\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => onArchive(row)}\n sx={{\n fontSize: \"1.3rem\",\n fontWeight: 500,\n lineHeight: \"2.2rem\",\n padding: \"4px 5px\"\n }}\n >\n {row.is_archived\n ? T.translate(\"general.unarchive\")\n : T.translate(\"general.archive\")}\n </Button>\n </TableCell>\n )}\n {onDelete && (\n <TableCell sx={getCellSx(row)}>\n <IconButton\n onClick={() => handleDelete(row)}\n size=\"small\"\n aria-label={T.translate(\"general.delete\")}\n >\n <DeleteIcon />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={customPerPageOptions}\n component=\"div\"\n count={totalRows ?? data.length}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={{\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n }}\n />\n </Paper>\n </Box>\n );\n};\n\nexport default MuiTableEditable;\n","/**\n * Copyright 2026 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 } from \"react\";\nimport { useFormikContext, getIn } from \"formik\";\nimport T from \"i18n-react\";\nimport AdditionalInput from \"./additional-input\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\nimport { METAFIELD_TYPES_WITH_OPTIONS } from \"../../../../utils/constants\";\n\nconst DEFAULT_META_FIELD = {\n name: \"\",\n type: \"\",\n is_required: false,\n minimum_quantity: 0,\n maximum_quantity: 0,\n values: []\n};\n\nconst AdditionalInputList = ({ name, onDelete, onDeleteValue, entityId }) => {\n const { values, setFieldValue, errors, setFieldTouched } = useFormikContext();\n\n const metaFields = values[name] || [];\n\n useEffect(() => {\n if (metaFields.length === 0) {\n setFieldValue(name, [\n { ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` }\n ]);\n }\n }, [metaFields.length]);\n\n const handleAddItem = () => {\n setFieldValue(name, [\n ...metaFields,\n { ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` }\n ]);\n };\n\n const handleRemove = async (item, index) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: `${T.translate(\"additional_inputs.delete_warning\")} ${\n item.name\n }`,\n type: \"warning\",\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (!isConfirmed) return;\n\n const removeFromUI = () => {\n const newValues = metaFields.filter((_, idx) => idx !== index);\n if (newValues.length === 0) {\n newValues.push({ ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` });\n }\n setFieldValue(name, newValues);\n setFieldTouched(name, [], false);\n };\n\n if (item.id && onDelete) {\n onDelete(entityId, item.id)\n .then(() => removeFromUI())\n .catch((err) => console.error(\"Error deleting field from API\", err));\n } else {\n removeFromUI();\n }\n };\n\n const areMetafieldsIncomplete = () => {\n const fieldErrors = getIn(errors, name);\n if (fieldErrors && Array.isArray(fieldErrors)) {\n const hasRealErrors = fieldErrors.some(\n (err) => err && Object.keys(err).length > 0\n );\n if (hasRealErrors) return true;\n }\n\n return metaFields.some((field) => {\n if (!field.name?.trim() || !field.type) return true;\n if (METAFIELD_TYPES_WITH_OPTIONS.includes(field.type)) {\n if (!field.values || field.values.length === 0) return true;\n const hasIncompleteValues = field.values.some(\n (v) => !v.name?.trim() || !v.value?.trim()\n );\n if (hasIncompleteValues) return true;\n }\n\n return false;\n });\n };\n\n return (\n <>\n {metaFields.map((item, itemIdx) => (\n <AdditionalInput\n key={item.id || item._key}\n item={item}\n itemIdx={itemIdx}\n baseName={name}\n onAdd={handleAddItem}\n onDelete={handleRemove}\n onDeleteValue={onDeleteValue}\n entityId={entityId}\n isAddDisabled={areMetafieldsIncomplete()}\n />\n ))}\n </>\n );\n};\n\nexport default AdditionalInputList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Add\");","/**\n * Copyright 2026 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 { useFormikContext } from \"formik\";\nimport { Box, Button, Grid2, Divider, IconButton } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DragAndDropList from \"../../dnd-list\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\nimport MuiFormikTextField from \"../mui-formik-textfield\";\nimport MuiFormikCheckbox from \"../mui-formik-checkbox\";\n\nconst MetaFieldValues = ({\n field,\n fieldIndex,\n baseName = \"meta_fields\",\n onMetaFieldTypeValueDeleted,\n entityId\n}) => {\n const { values, setFieldValue } = useFormikContext();\n\n const metaFields = values[baseName] || [];\n const sortedValues = [...field.values].sort((a, b) => a.order - b.order);\n\n const buildValueFieldName = (valueIndex, fieldName) =>\n `${baseName}[${fieldIndex}].values[${valueIndex}].${fieldName}`;\n\n const onReorder = (newValues) => {\n const newMetaFields = [...metaFields];\n newMetaFields[fieldIndex].values = newValues;\n setFieldValue(baseName, newMetaFields);\n };\n\n const handleAddValue = () => {\n const newFields = [...metaFields];\n newFields[fieldIndex].values.push({\n value: \"\",\n name: \"\",\n is_default: false\n });\n setFieldValue(baseName, newFields);\n };\n\n const handleDefaultChange = (valueIndex, checked) => {\n const newFields = [...metaFields];\n if (checked) {\n newFields[fieldIndex].values.forEach((v) => {\n v.is_default = false;\n });\n }\n newFields[fieldIndex].values[valueIndex].is_default = checked;\n setFieldValue(baseName, newFields);\n };\n\n const isMetafieldValueIncomplete = () => {\n if (field.values.length > 0) {\n return field.values.some((v) => !v.name?.trim() || !v.value?.trim());\n }\n return false;\n };\n\n const handleRemoveValue = async (metaFieldValue, valueIndex) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: T.translate(\"meta_fields.delete_value_warning\"),\n type: \"warning\",\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (!isConfirmed) return;\n\n const removeValueFromFields = () => {\n const newFields = [...metaFields];\n newFields[fieldIndex].values = newFields[fieldIndex].values.filter(\n (_, index) => index !== valueIndex\n );\n setFieldValue(baseName, newFields);\n };\n\n if (field.id && metaFieldValue.id && onMetaFieldTypeValueDeleted) {\n onMetaFieldTypeValueDeleted(entityId, field.id, metaFieldValue.id).then(\n () => removeValueFromFields()\n );\n } else {\n removeValueFromFields();\n }\n };\n\n const renderMetaFieldValue = (val, sortedIndex, provided, snapshot) => {\n const originalIndex = field.values.findIndex(\n (v) => (v.id && v.id === val.id) || v === val\n );\n const valueIndex = originalIndex !== -1 ? originalIndex : sortedIndex;\n\n return (\n <Box key={val.id || `value-${valueIndex}`}>\n <Grid2\n container\n spacing={2}\n sx={{\n alignItems: \"start\",\n background: snapshot?.isDragging ? \"#ebebeb\" : \"inherit\",\n boxShadow: snapshot?.isDragging\n ? \"0px 5px 15px rgba(0,0,0,0.3)\"\n : \"none\",\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n transform: snapshot?.isDragging ? \"scale(1.02)\" : \"none\",\n py: 2\n }}\n >\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildValueFieldName(valueIndex, \"name\")}\n placeholder={T.translate(\n \"meta_fields.placeholders.name\"\n )}\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildValueFieldName(valueIndex, \"value\")}\n placeholder={T.translate(\n \"meta_fields.placeholders.value\"\n )}\n margin=\"none\"\n fullWidth\n InputProps={{\n endAdornment: (\n <IconButton\n onClick={() => handleRemoveValue(val, valueIndex)}\n aria-label=\"remove value\"\n >\n <CloseIcon />\n </IconButton>\n )\n }}\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikCheckbox\n name={buildValueFieldName(valueIndex, \"is_default\")}\n label={T.translate(\"meta_fields.is_default\")}\n onChange={(e) =>\n handleDefaultChange(valueIndex, e.target.checked)\n }\n />\n </Grid2>\n </Grid2>\n <Divider />\n </Box>\n );\n };\n\n return (\n <Box>\n <DragAndDropList\n items={sortedValues}\n onReorder={onReorder}\n renderItem={renderMetaFieldValue}\n idKey=\"id\"\n updateOrderKey=\"order\"\n droppableId={`droppable-values-${fieldIndex}`}\n />\n <Grid2 container spacing={2} sx={{ mt: 2 }} offset={4}>\n <Button\n startIcon={<AddIcon />}\n disabled={isMetafieldValueIncomplete()}\n onClick={handleAddValue}\n variant=\"text\"\n >\n {T.translate(\"meta_fields.add_value\")}\n </Button>\n </Grid2>\n </Box>\n );\n};\n\nexport default MetaFieldValues;\n","/**\n * Copyright 2026 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 {\n Box,\n Button,\n Divider,\n FormHelperText,\n Grid2,\n InputLabel,\n MenuItem\n} from \"@mui/material\";\nimport { useFormikContext, getIn } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport MetaFieldValues from \"./meta-field-values\";\nimport MuiFormikTextField from \"../mui-formik-textfield\";\nimport MuiFormikSelect from \"../mui-formik-select\";\nimport MuiFormikCheckbox from \"../mui-formik-checkbox\";\nimport {\n METAFIELD_TYPES,\n METAFIELD_TYPES_WITH_OPTIONS\n} from \"../../../../utils/constants\";\n\nconst AdditionalInput = ({\n item,\n itemIdx,\n baseName,\n onAdd,\n onDelete,\n onDeleteValue,\n entityId,\n isAddDisabled\n}) => {\n const { errors, touched, values } = useFormikContext();\n\n const buildFieldName = (fieldName) => `${baseName}[${itemIdx}].${fieldName}`;\n const currentType = getIn(values, buildFieldName(\"type\"));\n\n const fieldErrors = getIn(errors, `${baseName}[${itemIdx}]`);\n const fieldTouched = getIn(touched, `${baseName}[${itemIdx}]`);\n\n const showValuesError =\n fieldTouched?.values &&\n fieldErrors?.values &&\n typeof fieldErrors.values === \"string\";\n\n return (\n <Grid2 container spacing={2} sx={{ alignItems: \"center\" }}>\n <Grid2 size={11}>\n <Box\n sx={{\n border: \"1px solid #0000001F\",\n borderRadius: \"4px\",\n p: 2,\n my: 2\n }}\n >\n <Grid2 container spacing={2} sx={{ alignItems: \"start\" }}>\n <Grid2 size={4}>\n <InputLabel htmlFor={buildFieldName(\"name\")}>\n {T.translate(\"additional_inputs.title\")}\n </InputLabel>\n <MuiFormikTextField\n name={buildFieldName(\"name\")}\n margin=\"none\"\n placeholder={T.translate(\n \"additional_inputs.placeholders.title\"\n )}\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <InputLabel htmlFor={buildFieldName(\"type\")}>\n {T.translate(\"additional_inputs.type\")}\n </InputLabel>\n <MuiFormikSelect\n name={buildFieldName(\"type\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.type\"\n )}\n >\n {METAFIELD_TYPES.map((fieldType) => (\n <MenuItem key={fieldType} value={fieldType}>\n {fieldType}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </Grid2>\n <Grid2 size={4} sx={{ alignSelf: \"end\" }}>\n <MuiFormikCheckbox\n name={buildFieldName(\"is_required\")}\n label={T.translate(\"additional_inputs.required\")}\n />\n </Grid2>\n </Grid2>\n {METAFIELD_TYPES_WITH_OPTIONS.includes(currentType) && (\n <>\n <Divider sx={{ mt: 2 }} />\n <MetaFieldValues\n field={item}\n fieldIndex={itemIdx}\n baseName={baseName}\n onMetaFieldTypeValueDeleted={onDeleteValue}\n entityId={entityId}\n />\n {showValuesError && (\n <FormHelperText error sx={{ mt: 1 }}>\n {fieldErrors.values}\n </FormHelperText>\n )}\n </>\n )}\n {currentType === \"Quantity\" && (\n <Grid2 container spacing={2} sx={{ alignItems: \"start\", mt: 2 }}>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildFieldName(\"minimum_quantity\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.minimum_quantity\"\n )}\n type=\"number\"\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildFieldName(\"maximum_quantity\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.maximum_quantity\"\n )}\n type=\"number\"\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n </Grid2>\n )}\n </Box>\n </Grid2>\n <Grid2 size={1}>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n <Button\n variant=\"outlined\"\n aria-label=\"delete\"\n sx={{\n width: 40,\n height: 40,\n minWidth: \"auto\",\n borderRadius: \"50%\",\n padding: 0\n }}\n onClick={() => onDelete(item, itemIdx)}\n >\n <DeleteIcon />\n </Button>\n <Button\n variant=\"contained\"\n aria-label=\"add\"\n disabled={isAddDisabled}\n sx={{\n width: 40,\n height: 40,\n minWidth: \"auto\",\n borderRadius: \"50%\",\n padding: 0\n }}\n onClick={onAdd}\n >\n <AddIcon />\n </Button>\n </Box>\n </Grid2>\n </Grid2>\n );\n};\n\nexport default AdditionalInput;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete, { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { useField } from \"formik\";\nimport { queryCompanies } from \"../../../utils/query-actions\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst filter = createFilterOptions();\n\nconst CompanyInputMUI = ({\n id,\n name,\n placeholder,\n plainValue,\n isMulti = false,\n allowCreate = false,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [isDebouncing, setIsDebouncing] = useState(false);\n\n const { value } = field;\n const error = meta.touched && meta.error;\n\n const fetchOptions = async (input) => {\n if (!input) {\n setOptions([]);\n return;\n }\n\n setIsDebouncing(false);\n setLoading(true);\n\n const normalize = (results) =>\n results.map((r) => ({\n value: r.id.toString(),\n label: r.name\n }));\n\n await queryCompanies(input, (results) => {\n setOptions(normalize(results));\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (inputValue) {\n setIsDebouncing(true);\n const delayDebounce = setTimeout(() => {\n fetchOptions(inputValue);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n setIsDebouncing(false);\n }, [inputValue]);\n\n const selectedValue = useMemo(() => {\n if (!value) return isMulti ? [] : null;\n\n if (isMulti) {\n return value.map((v) =>\n plainValue\n ? { value: v, label: v }\n : { value: v.id?.toString(), label: v.name }\n );\n }\n return plainValue\n ? { value, label: value }\n : { value: value.id?.toString(), label: value.name };\n }, [value, plainValue, isMulti]);\n\n const handleChange = (_, newValue) => {\n let theValue;\n\n if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {\n theValue = isMulti ? [] : plainValue ? \"\" : { id: \"\", name: \"\" };\n } else if (isMulti) {\n theValue = plainValue\n ? newValue.map((v) => v.label)\n : newValue.map((v) => ({\n id: parseInt(v.value),\n name: v.label\n }));\n } else {\n theValue = plainValue\n ? newValue.inputValue || newValue.label\n : {\n id: newValue.inputValue ? 0 : parseInt(newValue.value),\n name: newValue.inputValue || newValue.label\n };\n }\n\n helpers.setValue(theValue);\n };\n\n const handleFilterOptions = (options, params) => {\n const filtered = filter(options, params);\n\n if (!allowCreate || loading || isDebouncing) return filtered;\n\n const { inputValue } = params;\n const isExisting = options.some(\n (option) => inputValue.toLowerCase() === option.label.toLowerCase()\n );\n\n if (inputValue !== \"\" && !isExisting) {\n filtered.push({\n inputValue,\n value: null,\n label: `Create \"${inputValue}\"`\n });\n }\n return filtered;\n };\n\n const getOptionLabel = (option) => {\n if (option.inputValue) {\n return option.inputValue;\n }\n return option.label || \"\";\n };\n\n return (\n <Autocomplete\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n options={options}\n value={selectedValue}\n getOptionLabel={getOptionLabel}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(_, newInputValue) => {\n setInputValue(newInputValue);\n }}\n filterOptions={handleFilterOptions}\n multiple={isMulti}\n onChange={handleChange}\n loading={loading}\n fullWidth\n popupIcon={<ExpandMoreIcon />}\n renderOption={(props, option) => (\n <li {...props} key={option.value ?? `create-${option.inputValue}`}>\n {option.label}\n </li>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n name={field.name}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={error || \"\"}\n slotProps={{\n ...params.InputProps,\n inputLabel: { shrink: false },\n sx: {\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n },\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n }}\n />\n )}\n {...rest}\n />\n );\n};\n\nCompanyInputMUI.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool,\n isMulti: PropTypes.bool,\n allowCreate: PropTypes.bool\n};\n\nexport default CompanyInputMUI;\n","/**\n * Copyright 2026 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\";\nimport { useFormikContext } from \"formik\";\nimport {\n Box,\n Checkbox,\n FormControlLabel,\n Grid2,\n InputLabel,\n TextField\n} from \"@mui/material\";\nimport MuiFormikPriceField from \"./mui-formik-pricefield\";\nimport { RATE_FIELDS } from \"../../../utils/constants\";\nimport { isRateEnabled } from \"../../../utils/methods\";\n\nconst TIERS = [\n { field: RATE_FIELDS.EARLY_BIRD, label: \"rates.early_bird_rate\" },\n { field: RATE_FIELDS.STANDARD, label: \"rates.standard_rate\" },\n { field: RATE_FIELDS.ONSITE, label: \"rates.onsite_rate\" }\n];\n\nconst ItemPriceTiers = ({ readOnly = false }) => {\n const { values, setFieldValue } = useFormikContext();\n\n const enabled = {\n [RATE_FIELDS.EARLY_BIRD]: isRateEnabled(values[RATE_FIELDS.EARLY_BIRD]),\n [RATE_FIELDS.STANDARD]: isRateEnabled(values[RATE_FIELDS.STANDARD]),\n [RATE_FIELDS.ONSITE]: isRateEnabled(values[RATE_FIELDS.ONSITE])\n };\n\n const handleToggle = (field, checked) => {\n setFieldValue(field, checked ? null : 0);\n };\n\n return (\n <Grid2 container spacing={2} size={12}>\n {TIERS.map(({ field, label }) => {\n const isEnabled = enabled[field];\n return (\n <Grid2 key={field} size={4}>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n }}\n >\n <InputLabel htmlFor={field}>{T.translate(label)}</InputLabel>\n <FormControlLabel\n control={\n <Checkbox\n checked={!isEnabled}\n onChange={(ev) => handleToggle(field, ev.target.checked)}\n size=\"small\"\n disabled={readOnly}\n inputProps={{\n \"aria-label\": `${T.translate(label)} ${T.translate(\n \"general.not_available\"\n )}`\n }}\n />\n }\n label={T.translate(\"general.not_available\")}\n />\n </Box>\n <Box>\n {isEnabled ? (\n <MuiFormikPriceField\n name={field}\n fullWidth\n disabled={readOnly}\n />\n ) : (\n <TextField\n disabled\n value={T.translate(\"general.not_available\")}\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n />\n )}\n </Box>\n </Grid2>\n );\n })}\n </Grid2>\n );\n};\n\nexport default ItemPriceTiers;\n","/**\n * Copyright 2026 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 {\n Autocomplete,\n TextField,\n Checkbox,\n CircularProgress\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst MuiFormikAsyncAutocomplete = ({\n name,\n queryFunction,\n multiple = false,\n placeholder = \"Select...\",\n plainValue = false,\n hiddenOptions = [],\n formatOption = (item) => ({ value: item.id.toString(), label: item.name }),\n formatSelectedValue = null,\n queryParams = [],\n isMulti = false\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n\n const value = field.value || (multiple ? [] : null);\n const error = meta.touched && meta.error;\n\n const fetchOptions = async (input = \"\") => {\n setLoading(true);\n try {\n await queryFunction(input, ...queryParams, (results) => {\n const normalized = results\n .filter((r) => !hiddenOptions.includes(r.id))\n .map(formatOption);\n setOptions(normalized);\n setLoading(false);\n });\n } catch (err) {\n console.error(\"Error fetching options:\", err);\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (searchTerm) {\n const delayDebounce = setTimeout(() => {\n fetchOptions(searchTerm);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n }, [searchTerm]);\n\n // preload empty\n useEffect(() => {\n fetchOptions(\"\");\n }, []);\n\n const handleChange = (event, selected) => {\n if (!multiple) {\n const selectedValue = plainValue ? selected?.value || \"\" : selected;\n helpers.setValue(selectedValue);\n return;\n }\n\n const selectedItems = plainValue\n ? selected.map((s) => s.value)\n : selected.map((s) =>\n formatSelectedValue\n ? formatSelectedValue(s)\n : { id: parseInt(s.value), name: s.label }\n );\n\n helpers.setValue(selectedItems);\n };\n\n return (\n <Autocomplete\n options={options}\n value={value}\n onChange={handleChange}\n loading={loading}\n multiple={isMulti}\n fullWidth\n getOptionLabel={(option) => option.label || \"\"}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(e, newInput) => setSearchTerm(newInput)}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={error || \"\"}\n slotProps={{\n input: {\n ...params.InputProps,\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n },\n inputLabel: { shrink: false }\n }}\n sx={{\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n }}\n />\n )}\n renderOption={(props, option, { selected }) => (\n <li {...props}>\n {multiple && <Checkbox checked={selected} sx={{ mr: 1 }} />}\n {option.label}\n </li>\n )}\n />\n );\n};\n\nexport default MuiFormikAsyncAutocomplete;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n FormLabel\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport { INT_BASE } from \"../../../utils/constants\";\n\nconst MuiFormikCheckboxGroup = ({ name, label, options, ...props }) => {\n const [field, meta, helpers] = useField({ name });\n\n // Ensure field.value is an array\n const values = Array.isArray(field.value) ? field.value : [];\n\n const handleChange = (ev) => {\n const { value, checked } = ev.target;\n\n if (checked) {\n // Add the value to the array if it's checked\n helpers.setValue([...values, parseInt(value, INT_BASE)]);\n } else {\n // Remove the value from the array if it's unchecked\n helpers.setValue(\n values.filter((val) => val !== parseInt(value, INT_BASE))\n );\n }\n };\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n {label && <FormLabel id=\"checkbox-group-label\">{label}</FormLabel>}\n <FormGroup\n aria-labelledby=\"checkbox-group-label\"\n row\n name={name}\n {...props}\n >\n {options.map((op) => (\n <FormControlLabel\n key={`chk-box-${op.value}`}\n control={\n <Checkbox\n checked={values.includes(op.value)}\n onChange={handleChange}\n value={op.value}\n sx={{ \"& .MuiSvgIcon-root\": { fontSize: 24 } }}\n />\n }\n label={op.label}\n />\n ))}\n </FormGroup>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckboxGroup.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n options: PropTypes.array.isRequired\n};\n\nexport default MuiFormikCheckboxGroup;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikCheckbox = ({ name, label, ...props }) => {\n const [field, meta] = useField({ name, type: \"checkbox\" });\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Checkbox\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckbox.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikCheckbox;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/DatePicker\");","/**\n * Copyright 2026 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 { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { useField } from \"formik\";\n\nconst MuiFormikDatepicker = ({\n name,\n label,\n required,\n disabled = false,\n ...props\n}) => {\n const [field, meta, helpers] = useField(name);\n const requiredLabel = `${label} *`;\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DatePicker\n value={field.value}\n onChange={helpers.setValue}\n slotProps={{\n textField: {\n name,\n label: required ? requiredLabel : label,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n fullWidth: true,\n disabled\n },\n day: {\n sx: {\n fontSize: \"1.2rem\",\n fontWeight: 600\n }\n },\n layout: {\n sx: {\n \"& .MuiDayCalendar-weekDayLabel\": {\n fontSize: \"1rem\"\n }\n }\n }\n }}\n margin=\"normal\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikDatepicker.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool\n};\n\nexport default MuiFormikDatepicker;","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport { InputAdornment } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikDiscountField = ({\n name,\n label,\n discountType,\n inCents = false,\n disabled = false,\n ...props\n}) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const emptyValue = meta.initialValue === null ? null : 0;\n\n const getDisplayValue = () => {\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n return inCents ? field.value / ONE_HUNDRED : field.value;\n };\n\n const adornment =\n discountType === DISCOUNT_TYPES.RATE\n ? {\n endAdornment: <InputAdornment position=\"end\">%</InputAdornment>\n }\n : {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n };\n\n const inputProps =\n discountType === DISCOUNT_TYPES.RATE\n ? { max: 100, inputMode: \"numeric\", step: 1 }\n : { inputMode: \"decimal\", step: 1 };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newDiscount = inCents ? numericValue * ONE_HUNDRED : numericValue;\n\n helpers.setValue(newDiscount);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n value={getDisplayValue()}\n onChange={handleChange}\n type=\"number\"\n disabled={disabled}\n slotProps={{\n input: {\n ...adornment\n },\n htmlInput: {\n min: 0,\n ...inputProps\n }\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikDiscountField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikDiscountField;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n Divider,\n FormControl,\n ListItemText,\n MenuItem,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownCheckbox = ({ name, options, ...rest }) => {\n const [field, meta, helpers] = useField(name);\n const allSelected = options.every(({ value }) =>\n field.value?.includes(value)\n );\n\n const handleChange = (event) => {\n const { value } = event.target;\n\n // If \"all\" was clicked\n if (value.includes(\"all\")) {\n if (allSelected) {\n helpers.setValue([]);\n } else {\n helpers.setValue(options.map((opt) => opt.value));\n }\n } else {\n helpers.setValue(value);\n }\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n multiple\n value={field.value || []}\n onChange={handleChange}\n onBlur={field.onBlur}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected?.length) {\n return rest.placeholder || \"\";\n }\n if (allSelected) {\n return T.translate(\"general.all\");\n }\n const selectedNames = options\n .filter(({ value }) => selected?.includes(value))\n .map(({ label }) => label);\n return selectedNames.join(\", \");\n }}\n >\n <MenuItem key=\"all\" value=\"all\">\n <Checkbox checked={allSelected} />\n <ListItemText primary={T.translate(\"general.all\")} />\n </MenuItem>\n <Divider />\n {options.map(({ label, value }) => (\n <MenuItem key={`ckbx-ddl-${value}`} value={value}>\n <Checkbox checked={field.value?.includes(value)} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownCheckbox;\n","/**\n * Copyright 2026 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 {\n FormControl,\n ListItemText,\n MenuItem,\n Radio,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownRadio = ({ name, options, placeholder, ...rest }) => {\n const finalPlaceholder =\n placeholder || T.translate(\"general.select_an_option\");\n const [field, meta, helpers] = useField(name);\n\n const handleChange = (event) => {\n helpers.setValue(event.target.value);\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n value={field.value || \"\"}\n onChange={handleChange}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected) {\n return <em>{finalPlaceholder}</em>;\n }\n const selectedOption = options.find(\n ({ value }) => value === selected\n );\n return selectedOption ? selectedOption.label : \"\";\n }}\n >\n {options.map(({ label, value }) => (\n <MenuItem key={`radio-ddl-${value}`} value={value}>\n <Radio checked={field.value === value} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownRadio;\n","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport { InputAdornment } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport { BYTES_PER_MB } from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\", \".\", \",\"];\n\nconst bytesToMb = (bytes) => Math.floor(bytes / BYTES_PER_MB);\n\nconst MuiFormikFilesizeField = ({ name, label, ...props }) => {\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n\n const emptyValue = meta.initialValue === null ? null : 0;\n\n const getDisplayValue = () => {\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n return bytesToMb(field.value);\n };\n\n const handleChange = (e) => {\n const mbValue = e.target.value;\n\n if (mbValue === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const bytes = Number(mbValue) * BYTES_PER_MB;\n helpers.setValue(bytes);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n // Block \"0\" as first character — only 1-9 are valid leading digits.\n // When value is empty or already \"0\", prevent any \"0\" keypress.\n if (e.key === \"0\" && (e.target.value === \"\" || e.target.value === \"0\")) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n type=\"number\"\n value={getDisplayValue()}\n onChange={handleChange}\n slotProps={{\n input: {\n endAdornment: <InputAdornment position=\"end\">MB</InputAdornment>\n },\n htmlInput: {\n min: 0,\n inputMode: \"numeric\",\n step: 1\n }\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikFilesizeField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikFilesizeField;\n","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport {InputAdornment} from \"@mui/material\";\nimport {useField} from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport {DECIMAL_DIGITS, ONE_HUNDRED} from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikPriceField = ({\n name,\n label,\n inCents = false,\n inputProps = {step: 0.01},\n ...props\n }) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [focusedValue, setFocusedValue] = useState(\"\");\n\n // emptyValue is always 0 when editing this field, null is handled by N/A checkbox\n const emptyValue = 0;\n\n const getRawString = () => {\n if (cleared || field.value == null) return \"\";\n if (field.value === 0) return \"0\";\n const raw = inCents ? field.value / ONE_HUNDRED : field.value;\n return String(Number(raw.toFixed(DECIMAL_DIGITS)));\n };\n\n const getDisplayValue = () => {\n if (isFocused) return focusedValue;\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n const str = getRawString();\n const dotIdx = str.indexOf(\".\");\n if (dotIdx === -1) return `${str}.00`;\n if (str.length - dotIdx - 1 === 1) return `${str}0`;\n return str;\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n setFocusedValue(getRawString());\n };\n\n const handleBlur = (e) => {\n setIsFocused(false);\n if (props.onBlur) props.onBlur(e);\n };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n setFocusedValue(newVal);\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newPrice = inCents\n ? Math.round(numericValue * ONE_HUNDRED)\n : numericValue;\n\n helpers.setValue(newPrice);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n type=\"number\"\n value={getDisplayValue()}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n slotProps={{\n input: {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n }\n }}\n inputProps={{\n min: 0,\n inputMode: \"decimal\",\n ...inputProps\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikPriceField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikPriceField;\n","/**\n * Copyright 2026 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 MuiFormikTextField from \"./mui-formik-textfield\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikQuantityField = ({ ...props }) => (\n <MuiFormikTextField\n type=\"number\"\n onKeyDown={(e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n }\n }}\n inputProps={{\n min: 0,\n inputMode: \"numeric\"\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n);\n\nMuiFormikQuantityField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikQuantityField;\n","/**\n * Copyright 2026 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 {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikRadioGroup = ({\n name,\n label,\n marginWrapper = \"normal\",\n options,\n ...props\n}) => {\n const [field, meta] = useField({ name });\n\n return (\n <FormControl\n fullWidth\n margin={marginWrapper}\n error={meta.touched && Boolean(meta.error)}\n >\n {label && <FormLabel id=\"radio-group-label\">{label}</FormLabel>}\n <RadioGroup\n aria-labelledby=\"radio-group-label\"\n defaultValue={field.value}\n name={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {options.map((op) => (\n <FormControlLabel\n key={`radio-box-${op.value}`}\n value={op.value}\n control={\n <Radio\n sx={{\n \"& .MuiSvgIcon-root\": {\n fontSize: 24\n }\n }}\n />\n }\n label={op.label}\n />\n ))}\n </RadioGroup>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikRadioGroup.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n marginWrapper: PropTypes.string,\n options: PropTypes.array.isRequired\n};\n\nexport default MuiFormikRadioGroup;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport {\n MenuItem,\n Checkbox,\n ListItemText,\n CircularProgress,\n Select,\n OutlinedInput,\n Box,\n ListSubheader,\n Divider\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport PropTypes from \"prop-types\";\nimport { useField } from \"formik\";\n\nconst getCustomIcon = (loading) => () =>\n (\n <Box sx={{ display: \"flex\", alignItems: \"center\", pr: 1 }}>\n {loading && <CircularProgress size={16} sx={{ mr: 1 }} />}\n <ExpandMoreIcon />\n </Box>\n );\n\nconst MuiFormikSelectGroup = ({\n name,\n queryFunction,\n queryParams = [],\n placeholder = \"Select options\",\n showSelectAll = false,\n selectAllLabel = \"Select All\",\n getOptionLabel = (item) => item.name,\n getOptionValue = (item) => item.id,\n noOptionsLabel = \"No items\",\n getGroupId = null,\n getGroupLabel = null,\n disabled = false\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [groupedOptions, setGroupedOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const isAllSelected =\n Array.isArray(field.value) && field.value.includes(\"all\");\n const value = isAllSelected ? options : field.value || [];\n const error = meta.touched && meta.error;\n\n const fetchOptions = async () => {\n setLoading(true);\n try {\n await queryFunction(...queryParams, (results) => {\n setOptions(results);\n\n if (getGroupId && getGroupLabel) {\n // using map no avoid duplicate groups\n const groupsMap = new Map();\n\n results.forEach((item) => {\n const groupId = getGroupId(item);\n const groupLabel = getGroupLabel(item);\n\n if (!groupsMap.has(groupId)) {\n groupsMap.set(groupId, {\n id: groupId,\n label: groupLabel,\n options: []\n });\n }\n\n groupsMap.get(groupId).options.push(item);\n });\n\n setGroupedOptions(Array.from(groupsMap.values()));\n } else {\n setGroupedOptions([\n {\n id: \"default\",\n label: null,\n options: results\n }\n ]);\n }\n setLoading(false);\n });\n } catch (error) {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchOptions();\n }, []);\n\n const handleChange = (event) => {\n const selectedValues = event.target.value;\n\n if (selectedValues.includes(\"selectAll\")) {\n const currentValues = Array.isArray(value)\n ? value.map(getOptionValue)\n : [];\n\n if (isAllSelected || currentValues.length === options.length) {\n helpers.setValue([]);\n } else {\n helpers.setValue([\"all\"]);\n }\n return;\n }\n\n const filteredValues = selectedValues.filter((val) => val !== \"selectAll\");\n\n const selectedItems = filteredValues\n .map((val) => {\n const found = options.find((item) => getOptionValue(item) === val);\n return found;\n })\n .filter(Boolean);\n\n helpers.setValue(selectedItems);\n };\n\n const selectedValues = isAllSelected\n ? options.map(getOptionValue)\n : Array.isArray(value)\n ? value.map((item) => getOptionValue(item))\n : [];\n\n const renderGroupedOptions = () =>\n groupedOptions\n .map((group, groupIndex) => [\n group.label && (\n <ListSubheader\n key={`header-${group.id}`}\n sx={{\n fontWeight: 400,\n fontSize: \"14px\",\n color: \"#00000061\",\n lineHeight: \"24px\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.17px\",\n pointerEvents: \"none\"\n }}\n >\n {group.label}\n </ListSubheader>\n ),\n ...group.options.map((option) => {\n const optionValue = getOptionValue(option);\n const isChecked = selectedValues.includes(optionValue);\n\n return (\n <MenuItem\n key={optionValue}\n value={optionValue}\n sx={{ pl: 2 }}\n onClick={() => {\n let newValues;\n if (isAllSelected) {\n newValues = options\n .filter((opt) => getOptionValue(opt) !== optionValue)\n .map(getOptionValue);\n } else {\n newValues = isChecked\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n }\n handleChange({ target: { value: newValues } });\n }}\n >\n <Checkbox\n checked={isChecked}\n sx={{\n p: 1,\n \"& svg\": {\n fontSize: 24\n }\n }}\n />\n <ListItemText\n primary={getOptionLabel(option)}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"150%\",\n letterSpacing: \"0.15px\"\n }\n }\n }}\n />\n </MenuItem>\n );\n }),\n group.label && groupIndex < groupedOptions.length - 1 && (\n <Divider key={`divider-${group.id}`} />\n )\n ])\n .flat()\n .filter(Boolean);\n\n const renderMenuContent = () => {\n if (loading) {\n return (\n <MenuItem disabled>\n <CircularProgress size={20} />\n </MenuItem>\n );\n }\n\n if (options.length === 0) {\n return (\n <MenuItem disabled>\n <ListItemText\n primary={noOptionsLabel}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\",\n color: \"#00000061\"\n }\n }\n }}\n />\n </MenuItem>\n );\n }\n\n return (\n <>\n {showSelectAll && (\n <>\n <MenuItem\n value=\"selectAll\"\n sx={{\n backgroundColor: \"#fafafa\",\n \"&:hover\": {\n backgroundColor: \"#f0f0f0\"\n }\n }}\n onClick={() => {\n // custom event value to select all\n handleChange({ target: { value: [\"selectAll\"] } });\n }}\n >\n <Checkbox\n checked={isAllSelected}\n indeterminate={selectedValues.length > 0 && !isAllSelected}\n sx={{\n p: 1,\n \"& svg\": {\n fontSize: 24\n }\n }}\n />\n <ListItemText\n primary={selectAllLabel}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\"\n }\n }\n }}\n />\n </MenuItem>\n <Divider />\n </>\n )}\n {renderGroupedOptions()}\n </>\n );\n };\n\n const IconWithLoading = useMemo(() => getCustomIcon(loading), [loading]);\n\n return (\n <>\n <Select\n multiple\n fullWidth\n value={selectedValues}\n onChange={handleChange}\n input={<OutlinedInput />}\n displayEmpty\n disabled={disabled || loading}\n renderValue={(selected) => {\n if (!selected || selected.length === 0) {\n return (\n <span style={{ color: \"#aaa\" }}>\n {loading ? \"Loading...\" : placeholder}\n </span>\n );\n }\n return selected\n .map((val) => {\n const item = options.find((opt) => getOptionValue(opt) === val);\n return item ? getOptionLabel(item) : val;\n })\n .join(\", \");\n }}\n error={Boolean(error)}\n IconComponent={IconWithLoading}\n >\n {renderMenuContent()}\n </Select>\n {error && (\n <div\n style={{\n color: \"#d32f2f\",\n fontSize: \"0.75rem\",\n marginTop: \"3px\"\n }}\n >\n {error}\n </div>\n )}\n </>\n );\n};\n\nMuiFormikSelectGroup.propTypes = {\n name: PropTypes.string.isRequired,\n queryFunction: PropTypes.func.isRequired,\n queryParams: PropTypes.array,\n placeholder: PropTypes.string,\n showSelectAll: PropTypes.bool,\n selectAllLabel: PropTypes.string,\n getOptionLabel: PropTypes.func,\n getOptionValue: PropTypes.func,\n getGroupId: PropTypes.func,\n getGroupLabel: PropTypes.func,\n noOptionsLabel: PropTypes.string,\n disabled: PropTypes.bool\n};\n\nexport default MuiFormikSelectGroup;\n","/**\n * Copyright 2026 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 {\n Select,\n FormHelperText,\n FormControl,\n InputAdornment,\n IconButton,\n InputLabel\n} from \"@mui/material\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSelect = ({\n name,\n label,\n placeholder,\n children,\n isClearable,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const handleClear = (ev) => {\n ev.stopPropagation();\n helpers.setValue(\"\");\n };\n\n const hasValue = field?.value && field.value !== \"\";\n const shouldShrink = hasValue || Boolean(placeholder);\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n {label && (\n <InputLabel htmlFor={name} id={`${name}-label`} shrink={shouldShrink}>\n {label}\n </InputLabel>\n )}\n <Select\n name={name}\n id={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n labelId={`${name}-label`}\n label={label}\n notched={shouldShrink}\n displayEmpty\n renderValue={(selected) => {\n if (!selected || selected === \"\") {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return selected;\n }}\n endAdornment={\n isClearable && field.value ? (\n <InputAdornment position=\"end\" sx={{ mr: 2 }}>\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {children}\n </Select>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSelect.propTypes = {\n name: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n placeholder: PropTypes.string,\n isClearable: PropTypes.bool\n};\n\nexport default MuiFormikSelect;\n","/**\n * Copyright 2026 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 { useField } from \"formik\";\nimport SummitAddonSelect from \"../summit-addon-select\";\n\nconst MuiFormikSummitAddonSelect = ({\n name,\n summitId,\n placeholder = \"Select...\",\n inputProps = {}\n}) => {\n const [field, meta, helpers] = useField(name);\n\n return (\n <SummitAddonSelect\n value={field.value || \"\"}\n summitId={summitId}\n onChange={helpers.setValue}\n placeholder={placeholder}\n inputProps={{\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n ...inputProps\n }}\n />\n );\n};\n\nMuiFormikSummitAddonSelect.propTypes = {\n name: PropTypes.string.isRequired,\n summitId: PropTypes.number.isRequired,\n placeholder: PropTypes.string,\n inputProps: PropTypes.object\n};\n\nexport default MuiFormikSummitAddonSelect;\n","/**\n * Copyright 2026 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 {\n FormControl,\n FormControlLabel,\n FormHelperText,\n Switch\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSwitch = ({ name, label, ...props }) => {\n const [field, meta] = useField({ name });\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Switch\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSwitch.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikSwitch;\n","/**\n * Copyright 2026 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 { Box, TextField, Typography } from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikTextField = ({\n name,\n label,\n maxLength,\n required = false,\n ...props\n}) => {\n const [field, meta] = useField(name);\n const currentLength = field.value?.length || 0;\n\n let finalLabel = \"\";\n\n if (label) {\n finalLabel = required ? `${label} *` : label;\n }\n\n return (\n <Box>\n <TextField\n name={name}\n label={finalLabel}\n {...field}\n onBlur={field.onBlur}\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n helperText={meta.touched && meta.error}\n slotProps={{\n htmlInput: {\n maxLength\n }\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n {maxLength && (\n <Typography sx={{ fontSize: \"1.2rem\", color: \"#00000099\", pl: 2 }}>\n {`${maxLength - currentLength} characters left`}\n </Typography>\n )}\n </Box>\n );\n};\n\nMuiFormikTextField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n maxLength: PropTypes.number,\n required: PropTypes.bool\n};\n\nexport default MuiFormikTextField;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/TimePicker\");","/**\n * Copyright 2026 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 { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { TimePicker } from \"@mui/x-date-pickers/TimePicker\";\n\nimport { useField } from \"formik\";\n\nconst MuiFormikTimepicker = ({\n name,\n minTime,\n maxTime,\n timeZone,\n disabled = false\n}) => {\n const [field, meta, helpers] = useField(name);\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <TimePicker\n value={field.value}\n onChange={helpers.setValue}\n minTime={minTime}\n maxTime={maxTime}\n timezone={timeZone}\n label={timeZone}\n views={[\"hours\", \"minutes\"]}\n slotProps={{\n textField: {\n name,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n size: \"small\",\n fullWidth: true,\n disabled,\n sx: {\n \"& .MuiPickersSectionList-root\": {\n width: \"100%\"\n },\n \"& .MuiFormHelperText-root\": {\n marginLeft: \"4px\",\n marginRight: \"4px\"\n }\n }\n }\n }}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikTimepicker.propTypes = {\n name: PropTypes.string.isRequired\n};\n\nexport default MuiFormikTimepicker;\n","/**\n * Copyright 2026 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 { FormHelperText } from \"@mui/material\";\nimport UploadInputV2 from \"../../inputs/upload-input-v2\";\nimport { useField } from \"formik\";\nimport {\n ALLOWED_INVENTORY_IMAGE_FORMATS,\n MAX_INVENTORY_IMAGE_UPLOAD_SIZE,\n MAX_INVENTORY_IMAGES_UPLOAD_QTY\n} from \"../../../utils/constants\";\n\nconst MuiFormikUpload = ({\n id,\n name,\n onDelete,\n maxFiles = MAX_INVENTORY_IMAGES_UPLOAD_QTY\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const mediaType = {\n max_size: MAX_INVENTORY_IMAGE_UPLOAD_SIZE,\n max_uploads_qty: maxFiles,\n type: {\n allowed_extensions: ALLOWED_INVENTORY_IMAGE_FORMATS\n }\n };\n\n const getInputValue = () =>\n field.value?.length > 0\n ? field.value.map((img) => ({\n ...img,\n filename:\n img.file_name ?? img.filename ?? img.file_path ?? img.file_url\n }))\n : [];\n\n const buildFileObject = (response) => {\n const file = {};\n if (response.id !== undefined) file.id = response.id;\n if (response.name) file.file_name = response.name;\n if (response.md5) file.md5 = response.md5;\n if (response.mime_type) file.mime_type = response.mime_type;\n if (response.source_bucket) file.bucket = response.source_bucket;\n if (response.size) file.size = response.size;\n if (response.path && response.name)\n file.file_path = `${response.path}${response.name}`;\n return file;\n };\n\n const handleUploadComplete = (response) => {\n if (response) {\n const image = buildFileObject(response);\n helpers.setValue([...(field.value || []), image]);\n helpers.setTouched(true);\n }\n };\n\n const handleRemove = (imageFile) => {\n const updated = (field.value || []).filter(\n (i) => i.filename !== imageFile.name\n );\n helpers.setValue(updated);\n if (onDelete) {\n onDelete(imageFile.id);\n }\n };\n\n const canAddMore = () => (field.value?.length || 0) < maxFiles;\n\n return (\n <>\n {meta.touched && meta.error && (\n <FormHelperText error>{meta.error}</FormHelperText>\n )}\n <UploadInputV2\n id={id}\n name={name}\n onUploadComplete={handleUploadComplete}\n value={getInputValue()}\n mediaType={mediaType}\n onRemove={handleRemove}\n postUrl={`${window.FILE_UPLOAD_API_BASE_URL}/api/v1/files/upload`}\n djsConfig={{ withCredentials: true }}\n maxFiles={maxFiles}\n canAdd={canAddMore()}\n parallelChunkUploads\n />\n </>\n );\n};\n\nMuiFormikUpload.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n onDelete: PropTypes.func,\n maxFiles: PropTypes.number\n};\n\nexport default MuiFormikUpload;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { useField } from \"formik\";\nimport { querySponsorsV2 } from \"../../../utils/query-actions\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst MuiSponsorInput = ({\n id,\n name,\n placeholder,\n plainValue,\n isMulti = false,\n summitId,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const { value } = field;\n const error = meta.touched && meta.error;\n\n const fetchOptions = async (input) => {\n if (!input) {\n setOptions([]);\n return;\n }\n\n setLoading(true);\n\n const normalize = (results) =>\n results.map((r) => ({\n value: r.id.toString(),\n label: r.name\n }));\n\n await querySponsorsV2(input, summitId, (results) => {\n setOptions(normalize(results));\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (inputValue) {\n const delayDebounce = setTimeout(() => {\n fetchOptions(inputValue);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n }, [inputValue]);\n\n const selectedValue = useMemo(() => {\n if (!value) return isMulti ? [] : null;\n\n if (isMulti) {\n return value.map((v) =>\n plainValue\n ? { value: v, label: v }\n : { value: v.id?.toString(), label: v.name }\n );\n }\n return plainValue\n ? { value, label: value }\n : { value: value.id?.toString(), label: value.name };\n }, [value, plainValue, isMulti]);\n\n const handleChange = (_, newValue) => {\n let theValue;\n\n if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {\n theValue = isMulti ? [] : plainValue ? \"\" : { id: \"\", name: \"\" };\n } else if (isMulti) {\n theValue = plainValue\n ? newValue.map((v) => v.label)\n : newValue.map((v) => ({\n id: parseInt(v.value),\n name: v.label\n }));\n } else {\n theValue = plainValue\n ? newValue.label\n : { id: parseInt(newValue.value), name: newValue.label };\n }\n\n helpers.setValue(theValue);\n };\n\n const errorMessage =\n error && (typeof error === \"string\" ? error : error[Object.keys(error)[0]]);\n\n return (\n <Autocomplete\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n options={options}\n value={selectedValue}\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(_, newInputValue) => {\n setInputValue(newInputValue);\n }}\n multiple={isMulti}\n onChange={handleChange}\n loading={loading}\n fullWidth\n popupIcon={<ExpandMoreIcon />}\n renderInput={(params) => (\n <TextField\n {...params}\n name={field.name}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={errorMessage || \"\"}\n slotProps={{\n ...params.InputProps,\n inputLabel: { shrink: false },\n sx: {\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n },\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n }}\n />\n )}\n {...rest}\n />\n );\n};\n\nMuiSponsorInput.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool,\n isMulti: PropTypes.bool\n};\n\nexport default MuiSponsorInput;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { useField } from \"formik\";\nimport { querySponsorships } from \"../../../utils/query-actions\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst SponsorshipTypeInputMUI = ({\n id,\n name,\n placeholder,\n plainValue,\n isMulti = false,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const { value } = field;\n const error = meta.touched && meta.error;\n\n const errorMessage =\n typeof error === \"object\" ? error?.id || error?.name || \"\" : error;\n\n const fetchOptions = async (input) => {\n if (!input) {\n setOptions([]);\n return;\n }\n\n setLoading(true);\n\n const normalize = (results) =>\n results.map((r) => ({\n value: r.id.toString(),\n label: r.name\n }));\n\n await querySponsorships(input, (results) => {\n setOptions(normalize(results));\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (inputValue) {\n const delayDebounce = setTimeout(() => {\n fetchOptions(inputValue);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n }, [inputValue]);\n\n const selectedValue = useMemo(() => {\n if (!value) return isMulti ? [] : null;\n\n if (isMulti) {\n return value.map((v) =>\n plainValue\n ? { value: v, label: v }\n : { value: v.id?.toString(), label: v.name }\n );\n }\n return plainValue\n ? { value, label: value }\n : { value: value.id?.toString(), label: value.name };\n }, [value, plainValue, isMulti]);\n\n const handleChange = (_, newValue) => {\n let theValue;\n\n if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {\n theValue = isMulti ? [] : plainValue ? \"\" : { id: \"\", name: \"\" };\n } else if (isMulti) {\n theValue = plainValue\n ? newValue.map((v) => v.label)\n : newValue.map((v) => ({\n id: parseInt(v.value),\n name: v.label\n }));\n } else {\n theValue = plainValue\n ? newValue.label\n : { id: parseInt(newValue.value), name: newValue.label };\n }\n\n helpers.setValue(theValue);\n };\n\n return (\n <Autocomplete\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n options={options}\n value={selectedValue}\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(_, newInputValue) => {\n setInputValue(newInputValue);\n }}\n multiple={isMulti}\n onChange={handleChange}\n loading={loading}\n fullWidth\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={errorMessage || \"\"}\n slotProps={{\n ...params.InputProps,\n inputLabel: { shrink: false },\n sx: {\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n },\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n }}\n />\n )}\n {...rest}\n />\n );\n};\n\nSponsorshipTypeInputMUI.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool,\n isMulti: PropTypes.bool\n};\n\nexport default SponsorshipTypeInputMUI;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport {\n MenuItem,\n Checkbox,\n ListItemText,\n CircularProgress,\n Select,\n OutlinedInput,\n Box\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport PropTypes from \"prop-types\";\nimport { useField } from \"formik\";\nimport { querySponsorshipsBySummit } from \"../../../utils/query-actions\";\n\nconst getCustomIcon = (loading) => {\n const Icon = () => (\n <Box sx={{ display: \"flex\", alignItems: \"center\", pr: 1 }}>\n {loading && <CircularProgress size={16} sx={{ mr: 1 }} />}\n <ExpandMoreIcon />\n </Box>\n );\n return Icon;\n};\n\nconst SponsorshipsBySummitSelectMUI = ({\n name,\n summitId,\n placeholder,\n plainValue,\n hiddenOptions = []\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const value = field.value || [];\n const error = meta.touched && meta.error;\n\n const fetchOptions = async () => {\n setLoading(true);\n await querySponsorshipsBySummit(\"\", summitId, (results) => {\n const normalized = results\n .filter((r) => !hiddenOptions.includes(r.id))\n .map((r) => ({\n value: r.id.toString(),\n label: r.type.name\n }));\n setOptions(normalized);\n setLoading(false);\n });\n };\n\n useEffect(() => {\n fetchOptions();\n }, []);\n\n const handleChange = (event) => {\n const selected = event.target.value;\n const selectedItems = plainValue\n ? selected\n : selected.map((id) => {\n const match = options.find((o) => o.value === id);\n return { id: parseInt(match.value), name: match.label };\n });\n\n helpers.setValue(selectedItems);\n };\n\n const selectedValues = plainValue\n ? value\n : value.map((v) => v.id?.toString());\n\n const IconWithLoading = useMemo(() => getCustomIcon(loading), [loading]);\n\n return (\n <>\n <Select\n multiple\n fullWidth\n value={selectedValues}\n onChange={handleChange}\n input={<OutlinedInput />}\n displayEmpty\n renderValue={(selected) => {\n if (selected.length === 0) {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return options\n .filter((opt) => selected.includes(opt.value))\n .map((opt) => opt.label)\n .join(\", \");\n }}\n error={Boolean(error)}\n IconComponent={IconWithLoading}\n >\n {loading ? (\n <MenuItem disabled>\n <CircularProgress size={20} />\n </MenuItem>\n ) : (\n options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n <Checkbox\n checked={selectedValues.includes(option.value)}\n sx={{\n p: 1,\n \"& svg\": {\n fontSize: 24\n }\n }}\n />\n <ListItemText\n primary={option.label}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"150%\",\n letterSpacing: \"0.15px\"\n }\n }\n }}\n />\n </MenuItem>\n ))\n )}\n </Select>\n {error && (\n <div\n style={{\n color: \"#d32f2f\",\n fontSize: \"0.75rem\",\n marginTop: \"3px\"\n }}\n >\n {error}\n </div>\n )}\n </>\n );\n};\n\nSponsorshipsBySummitSelectMUI.propTypes = {\n name: PropTypes.string.isRequired,\n summitId: PropTypes.number.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool\n};\n\nexport default SponsorshipsBySummitSelectMUI;\n","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"sYyWOBs7DxfIdU_ztAqL\"};","/**\n * Copyright 2026 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 * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { visuallyHidden } from \"@mui/utils\";\nimport Box from \"@mui/material/Box\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport Paper from \"@mui/material/Paper\";\nimport TableRow from \"@mui/material/TableRow\";\nimport styles from \"./styles.module.less\";\nimport { MILLISECONDS_TO_SECONDS } from \"../../../utils/constants\";\n\nconst MuiInfiniteTable = ({\n boxHeight = \"400px\",\n columns = [],\n data = [],\n loadMoreData,\n onRowEdit,\n onSort,\n options = { sortCol: \"\", sortDir: \"\" }\n}) => {\n const { sortCol, sortDir } = options;\n\n const isLoadingRef = React.useRef(false);\n\n const handleScroll = (event) => {\n if (isLoadingRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = event.target;\n // eslint-disable-next-line no-magic-numbers\n if (scrollTop + clientHeight >= scrollHeight - 20) {\n isLoadingRef.current = true;\n loadMoreData();\n\n setTimeout(() => {\n isLoadingRef.current = false;\n }, MILLISECONDS_TO_SECONDS);\n }\n };\n\n return (\n <Box\n sx={{ width: \"100%\", height: boxHeight, overflow: \"auto\" }}\n onScroll={handleScroll}\n >\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === 1\n ? \"asc\"\n : \"desc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === \"-1\"\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row, rowIndex) => (\n <TableRow key={row.id || rowIndex}>\n {columns.map((col) => {\n const cellContent = col.render\n ? col.render(row, { onRowEdit })\n : row[col.columnKey];\n\n const cellClassName = col.className\n ? styles[col.className] || col.className\n : \"\";\n\n return (\n <TableCell\n key={col.columnKey}\n align={col.align ?? \"left\"}\n className={cellClassName}\n >\n {cellContent}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n\n {/* No items */}\n {data.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} align=\"center\">\n {T.translate(\"mui_table.no_data\")}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Paper>\n </Box>\n );\n};\n\nMuiInfiniteTable.propTypes = {\n boxHeight: PropTypes.string,\n columns: PropTypes.array,\n data: PropTypes.array,\n loadMoreData: PropTypes.func,\n onRowEdit: PropTypes.func,\n onSort: PropTypes.func,\n options: PropTypes.object\n};\n\nexport default MuiInfiniteTable;\n","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport { Badge, Button, Menu, MenuItem } from \"@mui/material\";\n\nconst MenuButton = ({\n buttonId,\n menuId,\n menuItems,\n hasBadge,\n children,\n ...rest\n}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedItems, setSelectedItems] = useState([]);\n\n const handleButtonClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleOptionClick = (item) => {\n if (hasBadge) {\n const newOptions = selectedItems.includes(item.label)\n ? selectedItems.filter((key) => key !== item.label)\n : [...selectedItems, item.label];\n item.onClick();\n setSelectedItems(newOptions);\n }\n item.onClick();\n handleClose();\n };\n\n const badgeCount = hasBadge ? selectedItems.length : undefined;\n\n return (\n <>\n <Button\n id={buttonId}\n aria-controls={anchorEl ? menuId : undefined}\n aria-haspopup=\"true\"\n aria-expanded={anchorEl ? \"true\" : undefined}\n onClick={handleButtonClick}\n sx={{ color: anchorEl ? \"--variant-textColor\" : \"#000\" }}\n {...rest}\n >\n {hasBadge ? (\n <Badge\n badgeContent={badgeCount}\n sx={{\n \"& .MuiBadge-badge\": {\n backgroundColor: \"black\",\n color: \"white\",\n right: \"65%\"\n }\n }}\n >\n {children}\n </Badge>\n ) : (\n children\n )}\n </Button>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={handleClose}\n MenuListProps={{\n \"aria-labelledby\": buttonId\n }}\n slotProps={{\n paper: {\n sx: { minWidth: 220 }\n }\n }}\n >\n {menuItems.map((item) => {\n const isSelected = hasBadge && selectedItems.includes(item.label);\n return (\n <MenuItem\n key={`${item.label}`}\n onClick={() => handleOptionClick(item)}\n sx={{\n borderBottom: 1,\n borderColor: \"divider\",\n \"&:last-of-type\": { borderBottom: 0 },\n color: isSelected ? \"--variant-textColor\" : \"#000\"\n }}\n >\n {item.label}\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n};\n\nMenuButton.propTypes = {\n buttonId: PropTypes.string,\n menuId: PropTypes.string,\n menuItems: PropTypes.array.isRequired,\n hasBadge: PropTypes.bool\n};\n\nexport default MenuButton;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Search\");","/**\n * Copyright 2026 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, useRef } from \"react\";\nimport { TextField, IconButton, InputAdornment } from \"@mui/material\";\nimport SearchIcon from \"@mui/icons-material/Search\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { debounce } from \"lodash\";\nimport { DEBOUNCE_WAIT } from \"../../utils/constants\";\n\nconst SearchInput = ({ term, onSearch, placeholder = \"Search...\", debounced }) => {\n const [searchTerm, setSearchTerm] = useState(term);\n\n const onSearchRef = useRef(onSearch);\n useEffect(() => {\n onSearchRef.current = onSearch;\n }, [onSearch]);\n\n const onSearchDebouncedRef = useRef(\n debounce((value) => onSearchRef.current(value), DEBOUNCE_WAIT)\n );\n\n useEffect(() => {\n setSearchTerm(term || \"\");\n }, [term]);\n\n useEffect(() => () => onSearchDebouncedRef.current?.cancel(), []);\n\n const handleClear = () => {\n onSearchDebouncedRef.current?.cancel();\n setSearchTerm(\"\");\n onSearch(\"\");\n };\n\n const handleChange = (value) => {\n setSearchTerm(value);\n if (debounced) onSearchDebouncedRef.current?.(value);\n };\n\n const handleKeyDown = (ev) => {\n if (!debounced && ev.key === \"Enter\") {\n onSearch(searchTerm);\n }\n };\n\n return (\n <TextField\n variant=\"outlined\"\n value={searchTerm}\n placeholder={placeholder}\n slotProps={{\n input: { \n startAdornment: debounced && (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ color: \"#0000008F\" }} />\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n {searchTerm ? (\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" sx={{ color: \"#0000008F\" }} />\n </IconButton>\n ) : \n (\n !debounced && <SearchIcon\n sx={{ mr: 1, color: \"#0000008F\", position: \"absolute\", right: 0 }}\n />\n )}\n </InputAdornment>\n )\n }\n }}\n onChange={(ev) => handleChange(ev.target.value)}\n onKeyDown={handleKeyDown}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n height: \"36px\"\n }\n }}\n />\n );\n};\n\nexport default SearchInput;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","/**\n * Copyright 2026 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 ReactDOM from \"react-dom\";\nimport React from \"react\";\nimport ConfirmDialog from \"./confirm-dialog\";\n\n// React 18+ uses createRoot from react-dom/client; React 17 does not have this module\nlet createRoot;\ntry {\n ({ createRoot } = require(\"react-dom/client\"));\n} catch (_) {\n // React 17 — createRoot not available, will fall back to ReactDOM.render\n}\n\nconst showConfirmDialog = ({\n title,\n text,\n iconType = \"\",\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n confirmButtonColor = \"primary\",\n cancelButtonColor = \"primary\"\n}) =>\n new Promise((resolve) => {\n const container = document.createElement(\"div\");\n document.body.appendChild(container);\n\n let root = null;\n\n const close = (answer) => {\n if (root) {\n root.unmount();\n } else {\n ReactDOM.unmountComponentAtNode(container);\n }\n container.remove();\n resolve(answer);\n };\n\n const handleConfirm = () => close(true);\n const handleCancel = () => close(false);\n\n const element = (\n <ConfirmDialog\n open\n title={title}\n text={text}\n iconType={iconType}\n confirmButtonText={confirmButtonText}\n cancelButtonText={cancelButtonText}\n confirmButtonColor={confirmButtonColor}\n cancelButtonColor={cancelButtonColor}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n );\n\n if (createRoot) {\n root = createRoot(container);\n root.render(element);\n } else {\n ReactDOM.render(element, container);\n }\n });\n\nexport default showConfirmDialog;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/UnfoldMore\");","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"pAjoKOwibtPxYWEmjS7g\"};","/**\n * Copyright 2026 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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport UnfoldMoreIcon from \"@mui/icons-material/UnfoldMore\";\nimport { IconButton } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nimport styles from \"./styles.module.less\";\n\nimport {\n DEFAULT_PER_PAGE,\n FIFTY_PER_PAGE,\n TWENTY_PER_PAGE\n} from \"../../../utils/constants\";\nimport showConfirmDialog from \"../showConfirmDialog\";\n\nconst MuiTableSortable = ({\n columns = [],\n data = [],\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1 },\n getName = (item) => item.name,\n onEdit,\n onDelete,\n deleteDialogTitle = null,\n deleteDialogBody = null,\n onReorder,\n idKey = \"id\",\n updateOrderKey = \"order\"\n}) => {\n const handleChangePage = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleChangeRowsPerPage = (ev) => {\n onPerPageChange(ev.target.value);\n };\n\n const basePerPageOptions = [\n DEFAULT_PER_PAGE,\n TWENTY_PER_PAGE,\n FIFTY_PER_PAGE\n ];\n\n const customPerPageOptions = basePerPageOptions.includes(perPage)\n ? basePerPageOptions\n : [...basePerPageOptions, perPage].sort((a, b) => a - b);\n\n const { sortCol, sortDir } = options;\n\n const handleDragEnd = (result) => {\n if (!result.destination || result.source.index === result.destination.index)\n return;\n\n const reordered = [...data];\n const [movedItem] = reordered.splice(result.source.index, 1);\n reordered.splice(result.destination.index, 0, movedItem);\n\n // change value based on updateOrderKey\n if (updateOrderKey) {\n reordered.forEach((item, idx) => {\n item[updateOrderKey] = idx + 1;\n });\n }\n\n const movedItemId = movedItem.id;\n const newOrder = reordered.find(\n (item) => item[idKey || \"id\"] === movedItemId\n )?.[updateOrderKey];\n\n onReorder?.(reordered, movedItemId, newOrder);\n };\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: deleteDialogTitle || T.translate(\"general.are_you_sure\"),\n text:\n typeof deleteDialogBody === \"function\"\n ? deleteDialogBody(getName(item))\n : deleteDialogBody ||\n `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n {onEdit && <TableCell sx={{ width: 40 }} />}\n {onDelete && <TableCell sx={{ width: 40 }} />}\n {onReorder && <TableCell sx={{ width: 40 }} />}\n </TableRow>\n </TableHead>\n\n {/* TABLE BODY */}\n <DragDropContext onDragEnd={handleDragEnd}>\n <Droppable droppableId=\"mui-table-droppable\">\n {(droppableProvided) => (\n <TableBody\n ref={droppableProvided.innerRef}\n {...droppableProvided.droppableProps}\n >\n {data.map((row, rowIndex) => (\n <Draggable\n key={row[idKey] || rowIndex}\n draggableId={String(row[idKey] || rowIndex)}\n index={rowIndex}\n >\n {(provided, snapshot) => (\n <TableRow\n ref={provided.innerRef}\n {...provided.draggableProps}\n sx={{\n ...(snapshot.isDragging\n ? {\n display: \"table\",\n width: \"100%\",\n tableLayout: \"fixed\",\n backgroundColor: \"#f0f0f0\",\n transform: \"scale(1.01)\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n zIndex: 1,\n position: \"relative\",\n transition:\n \"transform 0.2s ease, background-color 0.2s ease\"\n }\n : {\n transition: \"background-color 0.2s ease\"\n })\n }}\n >\n {/* Main content columns */}\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n align={col.align ?? \"left\"}\n className={`${\n col.dottedBorder && styles.dottedBorderLeft\n } ${col.className}`}\n >\n {col.render?.(row) || row[col.columnKey]}\n </TableCell>\n ))}\n {/* Edit column */}\n {onEdit && (\n <TableCell\n align=\"center\"\n sx={{ width: 40 }}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n size=\"large\"\n onClick={() => onEdit(row)}\n >\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n {/* Delete column */}\n {onDelete && (\n <TableCell\n align=\"center\"\n sx={{ width: 40 }}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n size=\"large\"\n onClick={() => handleDelete(row)}\n >\n <DeleteIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n {/* Re order column */}\n {onReorder && (\n <TableCell\n align=\"center\"\n sx={{ width: 40 }}\n className={styles.dottedBorderLeft}\n {...provided.dragHandleProps}\n >\n <IconButton size=\"large\">\n <UnfoldMoreIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n )}\n </Draggable>\n ))}\n {droppableProvided.placeholder}\n {data.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} align=\"center\">\n {T.translate(\"mui_table.no_items\")}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n )}\n </Droppable>\n </DragDropContext>\n </Table>\n </TableContainer>\n\n {/* PAGINATION */}\n {onPerPageChange && onPageChange && (\n <TablePagination\n component=\"div\"\n count={totalRows}\n rowsPerPageOptions={customPerPageOptions}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={{\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n }}\n />\n )}\n </Paper>\n </Box>\n );\n};\n\nexport default MuiTableSortable;\n","/**\n * Copyright 2026 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 { MenuItem, Select } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport { querySponsorAddons } from \"../../utils/query-actions\";\n\nconst SponsorAddonSelect = ({\n value,\n summitId,\n sponsor,\n placeholder = \"Select...\",\n onChange,\n inputProps = {}\n}) => {\n const [options, setOptions] = useState([]);\n const sponsorshipIds = sponsor.sponsorships.map((e) => e.id);\n\n useEffect(() => {\n querySponsorAddons(summitId, sponsor.id, sponsorshipIds, (results) => {\n const normalized = results.map((r) => ({\n value: r.id,\n label: r.name\n }));\n setOptions(normalized);\n });\n }, []);\n\n const handleChange = (ev) => {\n const addon = options.find((o) => o.value === ev.target.value);\n onChange({ id: addon.value, name: addon.label });\n };\n\n return (\n <Select\n fullWidth\n value={value}\n onChange={handleChange}\n displayEmpty\n renderValue={(selected) => {\n if (!selected) {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n const match = options.find((opt) => opt.value === selected);\n return match ? match.label : selected;\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...inputProps}\n >\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n );\n};\n\nSponsorAddonSelect.propTypes = {\n value: PropTypes.number,\n summitId: PropTypes.number.isRequired,\n sponsor: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n onChange: PropTypes.func.isRequired\n};\n\nexport default SponsorAddonSelect;\n","/**\n * Copyright 2026 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 { MenuItem, Select } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport { querySummitAddons } from \"../../utils/query-actions\";\n\nconst SummitAddonSelect = ({\n value,\n summitId,\n placeholder = \"Select...\",\n onChange,\n inputProps = {}\n}) => {\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n querySummitAddons(summitId, (results) => {\n const normalized = results.map((r) => ({\n value: r,\n label: r\n }));\n setOptions(normalized);\n });\n }, []);\n\n const handleChange = (event) => {\n onChange(event.target.value);\n };\n\n return (\n <Select\n fullWidth\n value={value}\n onChange={handleChange}\n displayEmpty\n renderValue={(selected) => {\n if (!selected) {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n const match = options.find((opt) => opt.value === selected);\n return match ? match.label : selected;\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...inputProps}\n >\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n );\n};\n\nSummitAddonSelect.propTypes = {\n value: PropTypes.string,\n summitId: PropTypes.number.isRequired,\n placeholder: PropTypes.string,\n onChange: PropTypes.func.isRequired\n};\n\nexport default SummitAddonSelect;\n","/**\n * Copyright 2026 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 {FormControl, InputLabel, MenuItem, Select} from \"@mui/material\";\nimport T from \"i18n-react\";\nimport {fetchAllSummits} from \"../../utils/query-actions\";\n\nconst SummitsDropdown = ({\n onlyActive = false,\n label = \"Search by show\",\n onChange,\n summits,\n excludeSummitIds = []\n }) => {\n const [summitOptions, setSummitOptions] = useState(summits);\n\n useEffect(() => {\n if (summits.length === 0) {\n fetchAllSummits(onlyActive).then((summits) => {\n const summitOptions = summits.filter(\n (s) => excludeSummitIds.indexOf(s.id) === -1);\n setSummitOptions(summitOptions);\n });\n }\n }, []);\n\n\n return (\n <FormControl fullWidth>\n <InputLabel>{label}</InputLabel>\n <Select\n label={T.translate(\"general.select_summit\")}\n fullWidth\n variant=\"outlined\"\n onChange={(ev) => onChange(ev.target.value)}\n >\n {summitOptions.map((s) => (\n <MenuItem key={`summits-ddl-${s.id}`} value={s.id}>\n {s.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default SummitsDropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Check\");","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"mx3fuojj3xuUbN9ch3eB\"};","/**\n * Copyright 2026 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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { isBoolean } from \"lodash\";\nimport {\n Box,\n Button,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow,\n TableSortLabel\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { visuallyHidden } from \"@mui/utils\";\nimport {\n DEFAULT_PER_PAGE,\n FIFTY_PER_PAGE,\n TWENTY_PER_PAGE\n} from \"../../../utils/constants\";\nimport showConfirmDialog from \"../showConfirmDialog\";\nimport styles from \"./mui-table.module.less\";\n\nconst ARCHIVED_CELL_SX = {\n backgroundColor: \"background.light\",\n color: \"text.disabled\"\n};\n\nconst MuiTable = ({\n columns = [],\n data = [],\n children,\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1, disableProp: null }, // disableProp is the prop that will disable the row\n getName = (item) => item.name,\n onEdit,\n onArchive,\n onDelete,\n canDelete = () => true,\n deleteDialogTitle = null,\n deleteDialogBody = null,\n deleteDialogConfirmText = null,\n confirmButtonColor = null\n}) => {\n const handleChangePage = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleChangeRowsPerPage = (ev) => {\n onPerPageChange(ev.target.value);\n };\n\n const basePerPageOptions = [\n DEFAULT_PER_PAGE,\n TWENTY_PER_PAGE,\n FIFTY_PER_PAGE\n ];\n\n const initialPerPage = React.useRef(perPage);\n\n let customPerPageOptions = basePerPageOptions.includes(initialPerPage.current)\n ? basePerPageOptions\n : [...basePerPageOptions, initialPerPage.current].sort((a, b) => a - b);\n\n // remove per page selection if no action passed\n if (!onPerPageChange) {\n customPerPageOptions = [initialPerPage.current];\n }\n\n const { sortCol, sortDir } = options;\n\n const getArchivedCellSx = (row) =>\n options.disableProp && row[options.disableProp] ? ARCHIVED_CELL_SX : null;\n\n const getCellSx = (row, baseSx = {}) => ({\n ...baseSx,\n ...(getArchivedCellSx(row) || {})\n });\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: deleteDialogTitle || T.translate(\"general.are_you_sure\"),\n text:\n typeof deleteDialogBody === \"function\"\n ? deleteDialogBody(getName(item))\n : deleteDialogBody ||\n `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: confirmButtonColor || \"#DD6B55\",\n confirmButtonText:\n deleteDialogConfirmText || T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n const renderCell = (row, col) => {\n if (col.render) {\n return col.render(row);\n }\n\n if (isBoolean(row[col.columnKey])) {\n return row[col.columnKey] ? (\n <CheckIcon fontSize=\"large\" />\n ) : (\n <CloseIcon fontSize=\"large\" />\n );\n }\n\n return row[col.columnKey];\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n {onEdit && <TableCell sx={{ width: 40 }} />}\n {onArchive && <TableCell sx={{ width: 80 }} />}\n {onDelete && <TableCell sx={{ width: 40 }} />}\n </TableRow>\n </TableHead>\n\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row) => (\n <TableRow key={row.id}>\n {/* Main content columns */}\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n align={col.align ?? \"left\"}\n className={`${\n col.dottedBorder && styles.dottedBorderLeft\n } ${col.className}`}\n sx={getCellSx(row)}\n >\n {renderCell(row, col)}\n </TableCell>\n ))}\n {/* Edit column */}\n {onEdit && (\n <TableCell\n align=\"center\"\n className={styles.dottedBorderLeft}\n sx={getCellSx(row, { width: 40 })}\n >\n <IconButton size=\"large\" onClick={() => onEdit(row)}>\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n {/* Archive column */}\n {onArchive && (\n <TableCell\n align=\"center\"\n sx={{ width: 80 }}\n className={styles.dottedBorderLeft}\n >\n <Button\n variant=\"text\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => onArchive(row)}\n sx={{\n fontSize: \"1.3rem\",\n fontWeight: 500,\n lineHeight: \"2.2rem\",\n padding: \"4px 5px\"\n }}\n >\n {row.is_archived\n ? T.translate(\"general.unarchive\")\n : T.translate(\"general.archive\")}\n </Button>\n </TableCell>\n )}\n {/* Delete column */}\n {onDelete && (\n <TableCell\n align=\"center\"\n className={styles.dottedBorderLeft}\n sx={getCellSx(row, { width: 40 })}\n >\n {canDelete(row) && (\n <IconButton\n size=\"large\"\n onClick={() => handleDelete(row)}\n >\n <DeleteIcon fontSize=\"large\" />\n </IconButton>\n )}\n </TableCell>\n )}\n </TableRow>\n ))}\n {/* Here we inject extra rows passed as children */}\n {children}\n {data.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} align=\"center\">\n {T.translate(\"mui_table.no_items\")}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n\n {/* PAGINATION */}\n {perPage && currentPage && (\n <TablePagination\n component=\"div\"\n count={totalRows}\n rowsPerPageOptions={customPerPageOptions}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={{\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n }}\n />\n )}\n </Paper>\n </Box>\n );\n};\n\nexport default MuiTable;\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","/**\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 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 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 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'\nlet http = request;\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 * @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';\nconst BACK_ULR_PARAM_NAME = 'BackUrl';\n\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 * @param backUrlParamName\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 backUrlParamName = BACK_ULR_PARAM_NAME\n ) => {\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 += `?${backUrlParamName}=${encodeURIComponent(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\n/**\n\n * @param code\n * @param backUrl\n * @param backUrlParamName\n * @returns {Promise<{access_token: *, refresh_token: *, id_token: *, expires_in: *, error: *, error_description: *}>}\n */\nexport const emitAccessToken = async (code, backUrl = null, backUrlParamName = BACK_ULR_PARAM_NAME) => {\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 += `?${backUrlParamName}=${encodeURIComponent(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 const summitValue = summit?.value !== undefined ? summit : this.state.summitValue;\n\n this.setState({ summitValue });\n }\n\n handleClick(ev) {\n ev.preventDefault();\n if ( this.state?.summitValue?.value !== undefined )\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?.value === undefined;\n\n\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';\nimport {CODE_200} from \"./constants\";\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';\nexport const SET_SNACKBAR_MESSAGE = \"SET_SNACKBAR_MESSAGE\";\nexport const CLEAR_SNACKBAR_MESSAGE = \"CLEAR_SNACKBAR_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\nexport const clearSnackbarMessage = () => (dispatch) => {\n dispatch(createAction(CLEAR_SNACKBAR_MESSAGE)({}));\n};\n\nexport const setSnackbarMessage = (message) => (dispatch) => {\n dispatch(createAction(SET_SNACKBAR_MESSAGE)(message));\n};\n\nexport const snackbarErrorHandler = (err, res) => (dispatch, state) => {\n authErrorHandler(err, res, setSnackbarMessage)(dispatch, state);\n};\n\nexport const snackbarSuccessHandler = (message) => (dispatch, state) =>\n setSnackbarMessage({ ...message, type: \"success\", code: CODE_200 })(\n dispatch,\n state\n );\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","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\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\nexport const isRateEnabled = (value) =>\n value !== null && value !== undefined && value !== \"\";\n\n/**\n * Returns true if value is null, undefined, empty/whitespace string,\n * empty array, or empty object.\n */\nexport const empty = (value) => {\n if (value === null || value === undefined) return true;\n if (typeof value === \"string\") return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") return Object.keys(value).length === 0;\n return false;\n};\n","/**\n * Copyright 2025 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 {\n CENTS_FACTOR,\n THREE_DECIMAL_PLACES,\n TWO_DECIMAL_PLACES,\n ZERO_INT,\n ONE_CENT\n} from \"./constants\";\n\nconst CURRENCY_SYMBOL = {\n USD: \"$\",\n EUR: \"€\",\n GBP: \"£\",\n CAD: \"C$\",\n AUD: \"A$\",\n NZD: \"NZ$\",\n CHF: \"CHF\",\n ARS: \"AR$\",\n BRL: \"R$\",\n MXN: \"MX$\",\n};\n\n/**\n * Convert a decimal money amount to integer cents safely (no floating point math).\n *\n * Why this exists:\n * - `Math.round(parseFloat(x) * 100)` can be wrong due to IEEE-754 floating point errors\n * (e.g. 1.005 * 100 may become 100.499999..., rounding down unexpectedly).\n *\n * Input:\n * - number or string (recommended: string from API/UI)\n * - Examples: \"12.34\", \"1,234.56\", \"1234,56\", 12.34\n *\n * Output:\n * - Number cents (exact), e.g. \"12.34\" -> 1234\n *\n * Rounding:\n * - Half-up to 2 decimals (>= 0.005 USD rounds up by 1 cent).\n *\n * Notes:\n * - Amounts are assumed to be NON-negative (per your requirement).\n * - Throws on invalid formats (does not silently return 0).\n */\nexport function amountToCents(amount) {\n if (amount == null) throw new Error(\"amount is required\");\n\n let s = String(amount).trim();\n\n // Normalize common separators:\n // - \"1,234.56\" => \"1234.56\" (remove thousands separators)\n // - \"1234,56\" => \"1234.56\" (convert decimal comma to dot)\n if (s.includes(\",\") && s.includes(\".\")) {\n s = s.replace(/,/g, \"\");\n } else if (s.includes(\",\") && !s.includes(\".\")) {\n s = s.replace(\",\", \".\");\n }\n\n // Validate: digits optionally followed by '.' and more digits\n if (!/^\\d+(\\.\\d+)?$/.test(s)) {\n throw new Error(`Invalid money format: \"${amount}\"`);\n }\n\n const [intPart, fracRaw = \"\"] = s.split(\".\");\n\n // Pad at least 3 fractional digits so we can:\n // - take 2 digits for cents\n // - take the 3rd digit to decide rounding\n const fracPadded = (`${fracRaw }000`);\n\n const tenths = fracPadded[0] ?? \"0\"; // 1st decimal digit\n const hundredths = fracPadded[1] ?? \"0\"; // 2nd decimal digit (cents)\n const thousandths = fracPadded[2] ?? \"0\"; // 3rd decimal digit (rounding decision)\n\n // If there are more than 3 decimals, we track if any non-zero exists after the 3rd.\n // This can matter for policies like bankers rounding; here it's mainly informational.\n const trailing =\n fracRaw.length > THREE_DECIMAL_PLACES\n ? fracRaw.slice(THREE_DECIMAL_PLACES)\n : \"\";\n const hasTrailingNonZero = /[1-9]/.test(trailing);\n\n // Build cents as integer: (dollars * 100) + (first two decimal digits)\n let cents = BigInt(intPart) * CENTS_FACTOR + BigInt(tenths + hundredths);\n\n // Half-up rounding:\n // - If the 3rd digit is >= 5, round up by 1 cent.\n // - If there are more digits beyond the 3rd, \"5xxx\" should also round up.\n const roundUp = thousandths > \"5\" || thousandths === \"5\" || (thousandths === \"5\" && hasTrailingNonZero);\n\n if (roundUp) cents += ONE_CENT;\n\n return Number(cents);\n}\n\n/**\n * Convert an amount in cents to a decimal string (e.g. 1234 -> \"12.34\") safely.\n *\n * Why:\n * - Avoids floating point math (cents / 100) which can lose precision for large integers\n * or if cents is already imprecise as a JS Number.\n *\n * Input:\n * - Accepts: bigint | number | string (digits)\n * - Assumes NON-negative cents (per your requirement).\n *\n * Output:\n * - Always returns a string with exactly 2 decimal places.\n */\nexport function amountFromCents(cents) {\n let c;\n\n // Normalize input to BigInt safely\n if (typeof cents === \"bigint\") {\n c = cents;\n } else if (typeof cents === \"number\") {\n // Ensure it's a safe integer before converting to BigInt\n if (!Number.isSafeInteger(cents)) {\n throw new Error(\"cents must be a safe integer Number (or pass BigInt/string).\");\n }\n c = BigInt(cents);\n } else if (typeof cents === \"string\") {\n const s = cents.trim();\n if (!/^\\d+$/.test(s)) {\n throw new Error(\"cents string must contain digits only (e.g., '1234').\");\n }\n c = BigInt(s);\n } else {\n throw new Error(\"cents must be a bigint, number, or numeric string.\");\n }\n\n if (c < ZERO_INT) {\n throw new Error(\"cents must be non-negative.\");\n }\n\n const amount = c / CENTS_FACTOR;\n const remainder = c % CENTS_FACTOR;\n\n // Always pad remainder to 2 digits\n return `${amount.toString()}.${remainder.toString().padStart(TWO_DECIMAL_PLACES, \"0\")}`;\n}\n\n/**\n * @param cents\n * @param currency\n * @returns {string}\n */\nexport function currencyAmountFromCents(cents, currency = \"USD\"){\n if (typeof cents !== \"number\" || !Number.isInteger(cents)) {\n throw new Error(\"cents must be an integer number\");\n }\n\n const amount = amountFromCents(cents); // \"12.34\"\n const symbol = CURRENCY_SYMBOL[currency] ?? \"$\";\n return `${symbol}${amount}`;\n}\n\n/**\n * Converts a price string into cents.\n * @param {string} priceString - The price (e.g., $0.30).\n * @returns {number} - The amount converted to cents (e.g., 30).\n */\nexport const parsePrice = (priceString) => {\n if (priceString == null) throw new Error(\"priceString is required\");\n\n let s = String(priceString).trim();\n\n // Reject negatives explicitly (per your requirement).\n if (s.includes(\"-\")) throw new Error(\"Negative amounts are not allowed\");\n\n // Keep only digits and separators. Remove currency symbols/letters/spaces.\n s = s.replace(/[^\\d.,]/g, \"\");\n if (!s) throw new Error(`Invalid price: \"${priceString}\"`);\n\n // Delegate exact cents conversion (no floats)\n return amountToCents(s); // <- your safe BigInt cents converter\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';\nimport moment from 'moment-timezone'\n\nexport const RECEIVE_COUNTRIES = 'RECEIVE_COUNTRIES';\nimport URI from \"urijs\";\nimport {DEBOUNCE_WAIT, DEFAULT_PER_PAGE, MAX_PER_PAGE} from \"./constants\";\n\nURI.escapeQuerySpace = false;\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\nconst _fetchPromise = async (endpoint, options = {}) => {\n let accessToken;\n\n try {\n accessToken = await getAccessToken();\n } catch (e) {\n return Promise.reject(e);\n }\n\n endpoint.addQuery('access_token', accessToken);\n\n return fetch(buildAPIBaseUrl(endpoint.toString()), options)\n .then(fetchResponseHandler)\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_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n *\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryAttendees = _.debounce(async (summitId, input, callback, per_page= DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySummits = _.debounce(async (input, callback, per_page= DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n\nexport const fetchAllSummits = async (onlyActive) => {\n\n let endpoint = URI(`/api/v2/summits/all`);\n\n endpoint.addQuery('fields', 'id,name,start_date,end_date');\n endpoint.addQuery('expand', 'none');\n endpoint.addQuery('relations', 'none');\n endpoint.addQuery('order','-start_date');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', MAX_PER_PAGE);\n\n if (onlyActive) {\n const now = moment().tz(\"UTC\").unix();\n endpoint.addQuery('filter[]', `end_date>=${now}`);\n }\n\n return _fetchPromise(endpoint)\n .then((json) => json.data);\n};\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySpeakers = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE ) => {\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}, DEBOUNCE_WAIT);\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTracks = _.debounce(async (summitId, input, callback, excludedIds = [], per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTrackGroups = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=, *): Promise<void>)|*>}\n */\nexport const queryEvents = _.debounce(async (summitId, input, onlyPublished = false, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=, *=): Promise<void>)|*>}\n */\nexport const queryEventTypes = _.debounce(async (summitId, input, callback, eventTypeClassName = null, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryGroups = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryCompanies = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryRegistrationCompanies = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsors = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\nexport const querySponsorsV2 = _.debounce(async (input, summitId, callback) => {\n const endpoint = URI(\n `/api/v2/summits/${summitId}/sponsors`\n );\n const escapedInput = escapeFilterValue(input);\n endpoint.addQuery(\"fields\", \"id,company.name,company.id\");\n endpoint.addQuery(\"relations\", \"company\");\n endpoint.addQuery(\"expand\", \"company\");\n if (escapedInput) {\n endpoint.addQuery(\"filter\", `company_name=@${escapedInput}`);\n }\n _fetchPromise(endpoint)\n .then((json) => {\n const options = [...json.data].map((sp) => ({\n id: sp.id,\n name: sp.company.name\n }));\n callback(options);\n })\n .catch(fetchErrorHandler);\n}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsorsWithBadgeScans = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryAccessLevels = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryOrganizations = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\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_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySponsoredProjects = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryPromocodes = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE, 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}, DEBOUNCE_WAIT);\n\n\nexport const querySponsorAddons = async (\n summitId,\n sponsorId,\n sponsorshipIds,\n callback\n) => {\n try {\n const promises = sponsorshipIds.map((sponsorshipId) => {\n const endpoint = URI(\n `/api/v1/summits/${summitId}/sponsors/${sponsorId}/sponsorships/${sponsorshipId}/add-ons`\n );\n endpoint.addQuery(\n \"fields\",\n \"id,name,sponsorship.type,sponsorship.type.id,sponsorship.type.type.name\"\n );\n endpoint.addQuery(\n \"expand\",\n \"sponsorship,sponsorship.type,sponsorship.type.type\"\n );\n endpoint.addQuery(\"relations\", \"sponsorship.none\");\n return _fetchPromise(endpoint)\n .then(fetchResponseHandler)\n .then((json) => json.data)\n .catch((error) => {\n fetchErrorHandler(error);\n return [];\n });\n });\n const results = await Promise.all(promises);\n const allAddons = results.flat();\n callback(allAddons);\n } catch (error) {\n fetchErrorHandler(error);\n }\n};\n\n\nexport const querySummitAddons = async (\n summitId,\n callback\n) => {\n const endpoint = URI(\n `/api/v1/summits/${summitId}/add-ons/metadata`\n );\n endpoint.addQuery(\"page\", 1);\n endpoint.addQuery(\"per_page\", MAX_PER_PAGE);\n\n _fetch(endpoint, callback);\n};\n\n\nexport const querySponsorships = _.debounce(async (input, callback) => {\n const endpoint = URI(`/api/v1/sponsorship-types`);\n input = escapeFilterValue(input);\n if (input) {\n endpoint.addQuery(\"filter\", `name=@${input}`);\n }\n _fetch(endpoint, callback);\n}, DEBOUNCE_WAIT);\n\n\nexport const querySponsorshipsBySummit = _.debounce(\n async (input, summitId, callback) => {\n const endpoint = URI(\n `/api/v1/summits/${summitId}/sponsorships-types`\n );\n input = escapeFilterValue(input);\n endpoint.addQuery(\"page\", 1);\n endpoint.addQuery(\"per_page\", MAX_PER_PAGE);\n endpoint.addQuery(\"expand\", \"type\");\n endpoint.addQuery(\"order\", \"+name\");\n if (input) {\n endpoint.addQuery(\"filter\", `name=@${input}`);\n }\n _fetch(endpoint, callback);\n },\n DEBOUNCE_WAIT\n);\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(\"@mui/icons-material\");","module.exports = require(\"@mui/icons-material/Clear\");","module.exports = require(\"@mui/icons-material/Close\");","module.exports = require(\"@mui/icons-material/Delete\");","module.exports = require(\"@mui/icons-material/Edit\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/icons-material/ExpandMore\");","module.exports = require(\"@mui/material\");","module.exports = require(\"@mui/material/Autocomplete\");","module.exports = require(\"@mui/material/Box\");","module.exports = require(\"@mui/material/Button\");","module.exports = require(\"@mui/material/CircularProgress\");","module.exports = require(\"@mui/material/Dialog\");","module.exports = require(\"@mui/material/DialogActions\");","module.exports = require(\"@mui/material/DialogContent\");","module.exports = require(\"@mui/material/DialogTitle\");","module.exports = require(\"@mui/material/Paper\");","module.exports = require(\"@mui/material/Table\");","module.exports = require(\"@mui/material/TableBody\");","module.exports = require(\"@mui/material/TableCell\");","module.exports = require(\"@mui/material/TableContainer\");","module.exports = require(\"@mui/material/TableHead\");","module.exports = require(\"@mui/material/TablePagination\");","module.exports = require(\"@mui/material/TableRow\");","module.exports = require(\"@mui/material/TableSortLabel\");","module.exports = require(\"@mui/material/TextField\");","module.exports = require(\"@mui/utils\");","module.exports = require(\"@mui/x-date-pickers/AdapterMoment\");","module.exports = require(\"@mui/x-date-pickers/LocalizationProvider\");","module.exports = require(\"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\");","module.exports = require(\"dropzone\");","module.exports = require(\"formik\");","module.exports = require(\"i18n-react\");","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-beautiful-dnd\");","module.exports = require(\"react-dnd\");","module.exports = require(\"react-dom/client\");","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};","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// mui components\nexport {default as MuiCheckboxList} from './mui/checkbox-list'\nexport {default as MuiChipList} from './mui/chip-list'\nexport {default as MuiChipNotify} from './mui/chip-notify'\nexport {default as MuiChipSelectInput} from './mui/chip-select-input'\nexport {default as MuiConfirmDialog} from './mui/confirm-dialog'\nexport {default as MuiCustomAlert} from './mui/custom-alert'\nexport {default as MuiDndList} from './mui/dnd-list'\nexport {default as MuiDropdownCheckbox} from './mui/dropdown-checkbox'\nexport {default as MuiMenuButton} from './mui/menu-button'\nexport {default as MuiSearchInput} from './mui/search-input'\nexport {default as MuiShowConfirmDialog} from './mui/showConfirmDialog'\nexport {default as MuiSponsorAddonSelect} from './mui/sponsor-addon-select'\nexport {default as MuiSummitAddonSelect} from './mui/summit-addon-select'\nexport {default as MuiSummitsDropdown} from './mui/summits-dropdown'\nexport {default as MuiFormItemTable} from './mui/FormItemTable'\nexport {default as MuiItemSettingsModal} from './mui/ItemSettingsModal'\nexport {default as MuiNotesModal} from './mui/NotesModal'\nexport {default as MuiSnackbarNotification} from './mui/SnackbarNotification'\nexport {default as MuiInfiniteTable} from './mui/infinite-table'\nexport {default as MuiEditableTable} from './mui/editable-table/mui-table-editable'\nexport {default as MuiSortableTable} from './mui/sortable-table/mui-table-sortable'\nexport {default as MuiTable} from './mui/table/mui-table'\nexport {default as MuiAdditionalInput} from './mui/formik-inputs/additional-input/additional-input'\nexport {default as MuiAdditionalInputList} from './mui/formik-inputs/additional-input/additional-input-list'\nexport {default as MuiFormikAsyncSelect} from './mui/formik-inputs/mui-formik-async-select'\nexport {default as MuiFormikCheckboxGroup} from './mui/formik-inputs/mui-formik-checkbox-group'\nexport {default as MuiFormikCheckbox} from './mui/formik-inputs/mui-formik-checkbox'\nexport {default as MuiFormikDatepicker} from './mui/formik-inputs/mui-formik-datepicker'\nexport {default as MuiFormikDiscountField} from './mui/formik-inputs/mui-formik-discountfield'\nexport {default as MuiFormikDropdownCheckbox} from './mui/formik-inputs/mui-formik-dropdown-checkbox'\nexport {default as MuiFormikDropdownRadio} from './mui/formik-inputs/mui-formik-dropdown-radio'\nexport {default as MuiFormikFileSizeField} from './mui/formik-inputs/mui-formik-file-size-field'\nexport {default as MuiFormikPriceField} from './mui/formik-inputs/mui-formik-pricefield'\nexport {default as MuiFormikQuantityField} from './mui/formik-inputs/mui-formik-quantity-field'\nexport {default as MuiFormikRadioGroup} from './mui/formik-inputs/mui-formik-radio-group'\nexport {default as MuiFormikSelectGroup} from './mui/formik-inputs/mui-formik-select-group'\nexport {default as MuiFormikSelect} from './mui/formik-inputs/mui-formik-select'\nexport {default as MuiFormikSummitAddonSelect} from './mui/formik-inputs/mui-formik-summit-addon-select'\nexport {default as MuiFormikSwitch} from './mui/formik-inputs/mui-formik-switch'\nexport {default as MuiFormikTextField} from './mui/formik-inputs/mui-formik-textfield'\nexport {default as MuiFormikTimepicker} from './mui/formik-inputs/mui-formik-timepicker'\nexport {default as MuiFormikUpload} from './mui/formik-inputs/mui-formik-upload'\nexport {default as MuiCompanyInput} from './mui/formik-inputs/company-input-mui'\nexport {default as MuiItemPriceTiers} from './mui/formik-inputs/item-price-tiers'\nexport {default as MuiSponsorInput} from './mui/formik-inputs/mui-sponsor-input'\nexport {default as MuiSponsorshipInput} from './mui/formik-inputs/sponsorship-input-mui'\nexport {default as MuiSponsorshipSummitSelect} from './mui/formik-inputs/sponsorship-summit-select-mui'\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_PER_PAGE","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","handleUpload","handleError","showRemove","setShowRemove","logoPreview","setLogoPreview","preview","logoPreviewTmp","fileName","test","fileHasPreview","pdf_icon","mov_icon","mp4_icon","csv_icon","getPreviewIcon","onDrop","fileRejections","onMouseEnter","onMouseLeave","rowId","timeZone","commonProps","class_field","type_id","fullWidth","slotProps","htmlInput","min","minimum_quantity","maximum_quantity","MenuItem","multiline","rows","row","extraColumns","form_item_id","helpers","useField","isReadOnly","eq","setValue","setTouched","quantity_limit_per_sponsor","pointerEvents","borderColor","showAdditionalItems","currentApplicableRate","onNotesClick","onSettingsClick","valuesStr","meta_fields","mf","totalColumns","calculateQuantity","qtyEXC","exc","globalQty","itemLevelQty","reduce","calculateRowTotal","qty","rate","rates","hasItemFields","itemFieldsIncomplete","requiredFields","is_required","hasMissingFields","formatRate","currencyAmountFromCents","totalAmount","subtotal","acc","discount","discount_type","DISCOUNT_TYPES","AMOUNT","discount_amount","ONE_HUNDRED","TableContainer","Paper","Table","TableHead","TableRow","TableCell","TableBody","inCents","step","early_bird","standard","onsite","ItemTableField","align","handleEditItemFields","handleEdit","fill","p","discountType","ItemSettingsModal","item","open","onClose","itemFields","maxWidth","theme","palette","grey","Divider","marginBottom","marginRight","NotesModal","notes","setNotes","TextField","SnackbarNotificationContext","createContext","SnackbarNotification","snackbarMessage","clearSnackbarMessage","setOpen","msgData","setMsgData","successMessage","msg","html","errorMessage","messageContext","clearMessage","setTimeout","NOTIFICATION_TIMEOUT","empty","Provider","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","iconMapping","connect","baseState","items","loadMoreData","boxHeight","allItemsLabel","noItemsLabel","selectedItems","setSelectedItems","isAllSelected","setIsAllSelected","allItemIds","border","padding","onScroll","scrollTop","scrollHeight","clientHeight","FormGroup","FormControlLabel","Checkbox","itemId","selected","handleItemChange","chips","shownItems","chip","Chip","Tooltip","arrow","NotificationsIcon","icon","availableOptions","canEdit","inputLabel","currentSettings","onGetSettingsMeta","onGetSettings","onUpsertSettings","renderSelectedOptions","denormalizeSettings","selectedColumns","setSelectedColumns","isDirty","setIsDirty","selectedColumnsTmp","columns","submitNewColumns","FormControl","InputLabel","Select","labelId","multiple","handleColumnChange","OutlinedInput","renderValue","flexWrap","onDelete","newValues","handleRemoveItem","deleteIcon","ClearIcon","onMouseDown","endAdornment","InputAdornment","iconMap","warning","Warning","Info","ConfirmDialog","text","iconType","onConfirm","onCancel","confirmButtonText","confirmButtonColor","cancelButtonText","cancelButtonColor","Dialog","DialogTitle","DialogContent","DialogActions","Button","hideIcon","DragAndDropList","onReorder","renderItem","idKey","updateOrderKey","droppableId","DragDropContext","onDragEnd","result","destination","newItems","list","startIndex","endIndex","from","removed","reorder","source","Droppable","innerRef","droppableProps","Draggable","draggableId","draggableProps","dragHandleProps","isDragging","transition","allLabel","rawValue","opName","ListItemText","primary","ARCHIVED_CELL_SX","EditableCell","isEditing","onBlur","isHovering","setIsHovering","setError","handleValidationAndSave","schema","validateSync","validateValue","autoFocus","onKeyDown","helperText","totalRows","currentPage","onPageChange","onPerPageChange","onSort","sortCol","sortDir","disableProp","getName","onEdit","onArchive","onCellChange","deleteDialogBody","editingCell","setEditingCell","basePerPageOptions","TWENTY_PER_PAGE","FIFTY_PER_PAGE","customPerPageOptions","getCellSx","baseSx","getArchivedCellSx","isEditable","col","editable","elevation","boxShadow","columnKey","sortable","active","direction","header","visuallyHidden","column","handleCellClick","handleCellBlur","lineHeight","is_archived","showConfirmDialog","showCancelButton","handleDelete","rowsPerPageOptions","count","rowsPerPage","page","newPage","onRowsPerPageChange","labelRowsPerPage","DEFAULT_META_FIELD","onDeleteValue","entityId","setFieldValue","setFieldTouched","useFormikContext","metaFields","_key","Date","handleAddItem","removeFromUI","areMetafieldsIncomplete","fieldErrors","getIn","METAFIELD_TYPES_WITH_OPTIONS","itemIdx","baseName","onAdd","isAddDisabled","fieldIndex","onMetaFieldTypeValueDeleted","sortedValues","buildValueFieldName","valueIndex","fieldName","newMetaFields","sortedIndex","originalIndex","Grid2","container","spacing","transform","InputProps","metaFieldValue","removeValueFromFields","newFields","handleRemoveValue","is_default","handleDefaultChange","offset","startIcon","isMetafieldValueIncomplete","buildFieldName","currentType","fieldTouched","showValuesError","my","METAFIELD_TYPES","fieldType","alignSelf","FormHelperText","flexDirection","createFilterOptions","CompanyInputMUI","plainValue","loading","setLoading","isDebouncing","setIsDebouncing","delayDebounce","results","normalize","fetchOptions","DEBOUNCE_WAIT_250","clearTimeout","selectedValue","onOpen","isOptionEqualToValue","newInputValue","filterOptions","filtered","isExisting","popupIcon","renderOption","renderInput","shrink","TIERS","RATE_FIELDS","EARLY_BIRD","STANDARD","ONSITE","enabled","isRateEnabled","isEnabled","handleToggle","hiddenOptions","formatOption","formatSelectedValue","queryParams","searchTerm","setSearchTerm","normalized","Autocomplete","newInput","CircularProgress","MuiFormikCheckboxGroup","INT_BASE","FormLabel","MuiFormikCheckbox","MuiFormikDatepicker","requiredLabel","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","textField","day","layout","BLOCKED_KEYS","MuiFormikDiscountField","cleared","setCleared","emptyValue","initialValue","adornment","RATE","startAdornment","inputMode","getDisplayValue","newVal","numericValue","Number","newDiscount","allSelected","every","displayEmpty","finalPlaceholder","Radio","MuiFormikFilesizeField","floor","BYTES_PER_MB","bytesToMb","mbValue","MuiFormikPriceField","isFocused","setIsFocused","focusedValue","setFocusedValue","getRawString","raw","toFixed","DECIMAL_DIGITS","str","dotIdx","indexOf","newPrice","onFocus","MuiFormikQuantityField","nativeEvent","stopImmediatePropagation","MuiFormikRadioGroup","marginWrapper","RadioGroup","MuiFormikSelectGroup","showSelectAll","selectAllLabel","noOptionsLabel","getGroupId","getGroupLabel","groupedOptions","setGroupedOptions","groupsMap","Map","groupId","groupLabel","has","set","get","selectedValues","currentValues","IconWithLoading","pr","getCustomIcon","IconComponent","indeterminate","group","groupIndex","ListSubheader","textTransform","letterSpacing","optionValue","isChecked","pl","fontStyle","flat","renderGroupedOptions","renderMenuContent","MuiFormikSelect","shouldShrink","notched","MuiFormikSummitAddonSelect","MuiFormikSwitch","Switch","MuiFormikTextField","currentLength","finalLabel","MuiFormikTimepicker","minTime","maxTime","TimePicker","views","MuiFormikUpload","MAX_INVENTORY_IMAGES_UPLOAD_QTY","MAX_INVENTORY_IMAGE_UPLOAD_SIZE","max_uploads_qty","ALLOWED_INVENTORY_IMAGE_FORMATS","image","file_name","mime_type","source_bucket","bucket","file_path","buildFileObject","img","file_url","getInputValue","imageFile","updated","FILE_UPLOAD_API_BASE_URL","withCredentials","canAddMore","MuiSponsorInput","querySponsorsV2","SponsorshipTypeInputMUI","querySponsorships","SponsorshipsBySummitSelectMUI","querySponsorshipsBySummit","match","o","MuiInfiniteTable","onRowEdit","isLoadingRef","MILLISECONDS_TO_SECONDS","rowIndex","cellContent","cellClassName","colSpan","MenuButton","buttonId","menuId","menuItems","hasBadge","anchorEl","setAnchorEl","handleClose","badgeCount","currentTarget","Badge","badgeContent","Menu","MenuListProps","paper","isSelected","handleOptionClick","borderBottom","debounced","onSearchRef","onSearchDebouncedRef","debounce","DEBOUNCE_WAIT","cancel","createRoot","createElement","body","appendChild","close","unmount","ReactDOM","remove","element","deleteDialogTitle","reordered","movedItem","movedItemId","newOrder","droppableProvided","tableLayout","dottedBorder","SponsorAddonSelect","sponsor","sponsorshipIds","sponsorships","querySponsorAddons","addon","SummitAddonSelect","querySummitAddons","onlyActive","summits","excludeSummitIds","summitOptions","setSummitOptions","fetchAllSummits","deleteDialogConfirmText","initialPerPage","TableSortLabel","isBoolean","renderCell","TablePagination","isCancelled","imgSrc","setImgSrc","customClass","setCustomClass","Image","onerror","replaceNewLine","DraggableItemTypes","UNSCHEDULEEVENT","SCHEDULEEVENT","TBALocation","SlotSizeOptions","PixelsPerMinute","initialTop","initialHeight","minHeight","maxHeight","canResize","allowResize","allowDrag","onResized","onUnPublishEvent","onEditEvent","onClickSelected","selectedPublishedEvents","onMoveEvent","collected","drag","useDrag","is_published","duration","collect","monitor","canDrag","static","resizeInfo","setResizeInfo","resizing","lastYPos","setSize","isResizable","popoverHoverFocus","Popover","onMouseMove","newYPos","pageY","deltaY","steps","abs","sign","newHeight","newTop","maxHeightTmp","onMouseUp","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","slotChangeRatio","createSlots","startTime","endTime","onScheduleEvent","eventId","getBoundingBox","filteredEvents","minutes","startDateTime","time_zone","add","endDateTime","auxEvent","auxEventStartDateTime","tz","auxEventEndDateTime","shift","getMaxHeight","calculateInitialTop","eventStartDateTime","utc","dayStartDateTime","diff","calculateInitialHeight","tmpList","startTimeTZ","endTimeTZ","slot","clone","last_edited","StyleSheet","create","headlineWrapper","headline","logo","subtitle","eventList","eventWrapper","locationWrapper","footer","leftCol","speakers","trackWrapper","rightCol","tagsWrapper","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","trackSpaceTime","scheduleEvents","selectedEvents","currentVenue","slotSize","hideBulkSelect","currentLocation","summitLocalStartDate","summitLocalEndDate","currentAuxDay","allowedDays","location_id","allowed_timeframes","at","getDaysOptions","allowedLocationIds","st","isNotVenue","isAllowed","rooms","subOption","getVenuesOptions","slotSizeOptions","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","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","networkError","ok","statusText","setSessionClearingState","parseError","new_refresh_token","idToken","formerAuthInfo","Cookies","secure","sameSite","putOnLocalStorage","getFromLocalStorage","removeFromLocalStorage","getIdToken","OAUTH2_CLIENT_ID","OAUTH2_FLOW","OAUTH2_USE_REFRESH_TOKEN","IDP_BASE_URL","getCurrentLocation","URI","postLogOutUri","getOrigin","id_token_hint","query","getLogoutUrl","SimpleLinkList","getOptions","handleLink","filterOption","getNewOptionData","isValidNewOption","actions","search","optionLabel","selectValue","selectOptions","labelKey","optionFound","onCreateTag","candidate","allowDuplicates","disabledAdd","valueKey","tableOptions","delete","edit","custom","itemA","itemB","SummitDropdown","summitValue","actionClass","bigClass","EditableTableHeading","is_edit","shouldUseTextArea","EditableActionsTableCell","is_editing","onSave","save","EditableTableRow","even","role","EditableTable","new_row","editRow","saveRow","deleteClick","onChangeCell","editRowCancel","saveNewRow","handleNewChange","onChangeNewCell","editing_row","Swal","rowIdx","tableClass","textArea","colWidth","warn","cells","createRow","addNew","cell_value","createNewRow","delayShow","SelectableTableHeading","handleSort","getSortClass","columnIndex","sortFunc","SelectableTableRow","handleSelect","shouldDisplayAction","onSelected","rowClass","SelectableActionsTableCell","handleAction","tooltip","getSortDir","SelectableTable","disableSelectAll","onSelectedAll","selectedAll","actionsHeader","SortableTableHeading","SortableActionsTableCell","SortableTableRow","moveCard","dropItem","findRow","refRow","handlerId","getHandlerId","hover","dragIndex","hoverIndex","hoverBoundingRect","hoverMiddleY","hoverClientY","getClientOffset","y","_item","droppedId","didDrop","SortableTable","dropCallback","orderField","idField","setRows","newRow","setNewRow","renderRow","moveRow","onDropItem","sortRows","rows2Sort","x","prevRows","update","$splice","sortedRows","shouldRenderNewRow","DndProvider","backend","HTML5Backend","renderNewRow","newRowTmp","TableHeading","ActionsTableCell","colStyles","YoutubeVideoComponent","videoSrcURL","videoTitle","frameBorder","allow","allowFullScreen","LiveVideoPlayer","player","videojs","videoNode","dispose","isLiveVideo","checkLiveVideo","videoJsOptions","autoplay","controls","fluid","sources","_event","_summit","getId","isPublished","getMinutesDuration","siblings","calculateNewDates","isValidEndDate","endDate","_endDate","summitEndDate","startDate","isValidStartDate","_startDate","durationInMinutes","summitStartDate","isValidTitle","createAction","dispatch","fetchErrorHandler","fetchResponseHandler","escapeFilterValue","CENTS_FACTOR","TWO_DECIMAL_PLACES","ZERO_INT","MAX_PER_PAGE","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","crossOrigin","loadImage","svgUrl","newWidth","naturalHeight","naturalWidth","canvas","getContext","drawImage","toDataURL","CURRENCY_SYMBOL","USD","EUR","GBP","CAD","AUD","NZD","CHF","ARS","BRL","MXN","cents","currency","isInteger","amount","isSafeInteger","BigInt","remainder","padStart","amountFromCents","_fetchPublic","endpoint","_fetchPromise","addQuery","_fetch","per_page","excludedIds","eventTypeClassName","escapedInput","sponsorId","promises","sponsorshipId","all","ComboBoxQuestionType","CheckBoxListQuestionType","RadioButtonListQuestionType","AllowedMultipleValueQuestionType","AnswerValuesOperator_And","VisibilityCondition_Equal","questionByName","questionById","rules","_parseQuestion","av","initialCondition","parentQuestionAnswer","_getAnswerFor","parent_question_id","answerValue","_answerContains","class","_hasValue","_allowsValues","_allowsValue","ruleId","parent_rules","_isSubQuestionVisible","_isAnswered","_checkQuestion","userAnswer","originalAnswers","defaultVal","ansVal","res1","_formatQuestionAnswer","_parseQuestions","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","defineProperty","enumerable","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/./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/mui/FormItemTable/components/ItemTableField.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Settings\"","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/GlobalQuantityField.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/UnderlyingAlertNote.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/index.js","webpack://openstack-uicore-foundation/./src/components/mui/ItemSettingsModal/index.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogContentText\"","webpack://openstack-uicore-foundation/./src/components/mui/NotesModal/index.js","webpack://openstack-uicore-foundation/external commonjs \"react-redux\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/CheckCircle\"","webpack://openstack-uicore-foundation/./src/components/mui/SnackbarNotification/Context.js","webpack://openstack-uicore-foundation/./src/components/mui/SnackbarNotification/index.js","webpack://openstack-uicore-foundation/./src/components/mui/checkbox-list.js","webpack://openstack-uicore-foundation/./src/components/mui/chip-list.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Notifications\"","webpack://openstack-uicore-foundation/./src/components/mui/chip-notify.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers\"","webpack://openstack-uicore-foundation/./src/components/mui/chip-select-input.js","webpack://openstack-uicore-foundation/./src/components/mui/confirm-dialog.js","webpack://openstack-uicore-foundation/./src/components/mui/custom-alert.js","webpack://openstack-uicore-foundation/./src/components/mui/dnd-list.js","webpack://openstack-uicore-foundation/./src/components/mui/dropdown-checkbox.js","webpack://openstack-uicore-foundation/./src/components/mui/editable-table/mui-table-editable.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input-list.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Add\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/meta-field-values.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/company-input-mui.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/item-price-tiers.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-async-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox-group.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/DatePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-datepicker.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-discountfield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-radio.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-file-size-field.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-pricefield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-quantity-field.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-radio-group.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select-group.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-summit-addon-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-switch.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-textfield.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/TimePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-timepicker.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-upload.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-sponsor-input.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/sponsorship-input-mui.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/sponsorship-summit-select-mui.js","webpack://openstack-uicore-foundation/./src/components/mui/infinite-table/styles.module.less?f766","webpack://openstack-uicore-foundation/./src/components/mui/infinite-table/index.js","webpack://openstack-uicore-foundation/./src/components/mui/menu-button.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Search\"","webpack://openstack-uicore-foundation/./src/components/mui/search-input.js","webpack://openstack-uicore-foundation/external commonjs \"react-dom\"","webpack://openstack-uicore-foundation/./src/components/mui/showConfirmDialog.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/UnfoldMore\"","webpack://openstack-uicore-foundation/./src/components/mui/sortable-table/styles.module.less?adcf","webpack://openstack-uicore-foundation/./src/components/mui/sortable-table/mui-table-sortable.js","webpack://openstack-uicore-foundation/./src/components/mui/sponsor-addon-select.js","webpack://openstack-uicore-foundation/./src/components/mui/summit-addon-select.js","webpack://openstack-uicore-foundation/./src/components/mui/summits-dropdown.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Check\"","webpack://openstack-uicore-foundation/./src/components/mui/table/mui-table.module.less?e9a1","webpack://openstack-uicore-foundation/./src/components/mui/table/mui-table.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/./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/./src/utils/constants.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/money.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 \"@mui/icons-material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Clear\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Close\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Delete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Edit\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/ExpandMore\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Autocomplete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Box\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Button\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/CircularProgress\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Dialog\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogActions\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogContent\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/DialogTitle\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Paper\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Table\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableBody\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableCell\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableContainer\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableHead\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TablePagination\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableRow\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableSortLabel\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TextField\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/utils\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/AdapterMoment\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/LocalizationProvider\"","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 \"formik\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react\"","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-beautiful-dnd\"","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/./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 {queryPromocodes} from '../../utils/query-actions';\nimport {DEFAULT_PER_PAGE} from '../../utils/constants';\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_PER_PAGE,\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","/**\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, file.size > 0 ? bytesSent / file.size * 100 : 0);\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 * 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 '0 KB';\n if (bytes >= 1024 * 1024) return `${Math.round(bytes / (1024 * 1024))} MB`;\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 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","/**\n * Copyright 2026 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 { MenuItem } from \"@mui/material\";\nimport MuiFormikCheckbox from \"../../formik-inputs/mui-formik-checkbox\";\nimport MuiFormikDropdownCheckbox from \"../../formik-inputs/mui-formik-dropdown-checkbox\";\nimport MuiFormikDropdownRadio from \"../../formik-inputs/mui-formik-dropdown-radio\";\nimport MuiFormikDatepicker from \"../../formik-inputs/mui-formik-datepicker\";\nimport MuiFormikTimepicker from \"../../formik-inputs/mui-formik-timepicker\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\nimport MuiFormikSelect from \"../../formik-inputs/mui-formik-select\";\n\nconst ItemTableField = ({\n rowId,\n field,\n timeZone,\n label = \"\",\n disabled = false\n}) => {\n const name = `i-${rowId}-c-${field.class_field}-f-${field.type_id}`;\n const commonProps = { name, label, disabled };\n\n switch (field.type) {\n case \"CheckBox\":\n return <MuiFormikCheckbox {...commonProps} />;\n case \"CheckBoxList\":\n return (\n <MuiFormikDropdownCheckbox\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"RadioButtonList\":\n return (\n <MuiFormikDropdownRadio\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"DateTime\":\n return <MuiFormikDatepicker {...commonProps} />;\n case \"Time\":\n return <MuiFormikTimepicker {...commonProps} timeZone={timeZone} />;\n case \"Quantity\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n type=\"number\"\n slotProps={{\n htmlInput: {\n min: field.minimum_quantity,\n ...(field.maximum_quantity > 0\n ? { max: field.maximum_quantity }\n : {})\n }\n }}\n />\n );\n case \"ComboBox\":\n return (\n <MuiFormikSelect {...commonProps} size=\"small\">\n {field.values.map((v) => (\n <MenuItem key={`ddopt-${v.id}`} value={v.id}>\n {v.value}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n );\n case \"Text\":\n return <MuiFormikTextField {...commonProps} fullWidth size=\"small\" />;\n case \"TextArea\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n multiline\n rows={3}\n />\n );\n }\n};\n\nexport default ItemTableField;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Settings\");","/**\n * Copyright 2026 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 } from \"react\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\n\nconst GlobalQuantityField = ({\n row,\n extraColumns,\n value,\n disabled = false\n}) => {\n const name = `i-${row.form_item_id}-c-global-f-quantity`;\n // eslint-disable-next-line\n const [field, meta, helpers] = useField(name);\n\n // using readOnly since formik won't validate disabled fields\n const isReadOnly =\n extraColumns.filter((eq) => eq.type === \"Quantity\").length > 0;\n\n useEffect(() => {\n helpers.setValue(value);\n helpers.setTouched(true);\n }, [value]);\n\n return (\n <MuiFormikTextField\n name={name}\n fullWidth\n size=\"small\"\n type=\"number\"\n disabled={disabled}\n slotProps={{\n htmlInput: {\n readOnly: isReadOnly,\n min: 0,\n ...(row.quantity_limit_per_sponsor\n ? { max: row.quantity_limit_per_sponsor }\n : {})\n }\n }}\n sx={\n isReadOnly\n ? {\n \"& .MuiInputBase-root\": {\n backgroundColor: \"action.disabledBackground\",\n color: \"text.disabled\",\n pointerEvents: \"none\"\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"action.disabled\"\n }\n }\n : {}\n }\n />\n );\n};\n\nexport default GlobalQuantityField;\n","/**\n * Copyright 2026 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 { Typography } from \"@mui/material\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst UnderlyingAlertNote = ({ showAdditionalItems }) => {\n if (!showAdditionalItems) return null;\n\n return (\n <Typography\n variant=\"body2\"\n component=\"p\"\n sx={{ color: \"error.warning\", fontSize: \"0.8rem\" }}\n >\n <ErrorIcon\n color=\"error\"\n sx={{\n fontSize: \"1rem\",\n top: \"0.2rem\",\n position: \"relative\"\n }}\n />{\" \"}\n {T.translate(\"sponsor_edit_form.additional_info\")}\n </Typography>\n );\n};\n\nexport default UnderlyingAlertNote;\n","/**\n * Copyright 2026 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, { useCallback, useMemo } from \"react\";\nimport {\n IconButton,\n MenuItem,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { currencyAmountFromCents } from \"../../../utils/money\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\nimport GlobalQuantityField from \"./components/GlobalQuantityField\";\nimport ItemTableField from \"./components/ItemTableField\";\nimport MuiFormikSelect from \"../formik-inputs/mui-formik-select\";\nimport MuiFormikPriceField from \"../formik-inputs/mui-formik-pricefield\";\nimport MuiFormikDiscountField from \"../formik-inputs/mui-formik-discountfield\";\nimport UnderlyingAlertNote from \"./components/UnderlyingAlertNote\";\n\nconst FormItemTable = ({\n data,\n currentApplicableRate,\n timeZone,\n values,\n onNotesClick,\n onSettingsClick\n}) => {\n const valuesStr = JSON.stringify(values);\n const extraColumns =\n data[0]?.meta_fields?.filter((mf) => mf.class_field === \"Form\") || [];\n const fixedColumns = 10;\n const totalColumns = extraColumns.length + fixedColumns;\n\n const calculateQuantity = useCallback(\n (row) => {\n const qtyEXC = extraColumns.filter((exc) => exc.type === \"Quantity\");\n const globalQty = values[`i-${row.form_item_id}-c-global-f-quantity`];\n const itemLevelQty = qtyEXC.reduce((res, exc) => {\n const start = res > 0 ? res : 1;\n return (\n start *\n (values?.[\n `i-${row.form_item_id}-c-${exc.class_field}-f-${exc.type_id}`\n ] || 0)\n );\n }, 0);\n\n return qtyEXC.length > 0 ? itemLevelQty : globalQty;\n },\n [valuesStr, extraColumns]\n );\n\n const calculateRowTotal = (row) => {\n const qty =\n values[`i-${row.form_item_id}-c-global-f-quantity`] ||\n calculateQuantity(row);\n\n if (currentApplicableRate === \"expired\") return 0;\n\n const customRate = values[`i-${row.form_item_id}-c-global-f-custom_rate`];\n const rate = customRate || row.rates[currentApplicableRate];\n\n if (rate == null || qty == null) return 0;\n\n return qty * rate;\n };\n\n const hasItemFields = (row) =>\n row.meta_fields.filter((mf) => mf.class_field === \"Item\").length > 0;\n\n const itemFieldsIncomplete = (row) => {\n const requiredFields = row.meta_fields.filter(\n (mf) => mf.class_field === \"Item\" && mf.is_required\n );\n const hasMissingFields = requiredFields.some((mf) => {\n const value = values[`i-${row.form_item_id}-c-item-f-${mf.type_id}`];\n return value === undefined || value === null || value === \"\";\n });\n\n return requiredFields.length > 0 && hasMissingFields;\n };\n\n const formatRate = (rate) => {\n if (rate == null) return T.translate(\"general.n_a\");\n return currencyAmountFromCents(rate);\n };\n\n const totalAmount = useMemo(() => {\n const subtotal = data.reduce((acc, row) => acc + calculateRowTotal(row), 0);\n const discount =\n values.discount_type === DISCOUNT_TYPES.AMOUNT\n ? values.discount_amount\n : subtotal * (values.discount_amount / ONE_HUNDRED / ONE_HUNDRED); // bps to fraction\n\n return subtotal - Math.round(discount);\n }, [data, valuesStr, currentApplicableRate]);\n\n const handleEdit = (row) => {\n onNotesClick(row);\n };\n\n const handleEditItemFields = (row) => {\n onSettingsClick(row);\n };\n\n return (\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n <TableRow sx={{ backgroundColor: \"#EAEDF4\" }}>\n <TableCell>\n {T.translate(\"sponsor_edit_form.code\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.description\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.custom_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.early_bird_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.standard_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.onsite_rate\")}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`colhead-${exc.type_id}`}>{exc.name}</TableCell>\n ))}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.qty\")}\n </TableCell>\n <TableCell sx={{ minWidth: 40 }} />\n {/* item level extra field */}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.total\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.notes\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.map((row) => (\n <TableRow key={`datarow-${row.form_item_id}`}>\n <TableCell>{row.code}</TableCell>\n <TableCell sx={{ position: \"relative\" }}>\n <div>{row.name}</div>\n <UnderlyingAlertNote\n showAdditionalItems={\n hasItemFields(row) && itemFieldsIncomplete(row)\n }\n />\n </TableCell>\n <TableCell>\n <MuiFormikPriceField\n name={`i-${row.form_item_id}-c-global-f-custom_rate`}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n inputProps={{ step: 0.01 }}\n />\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"early_bird\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.early_bird)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"standard\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.standard)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"onsite\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.onsite)}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`datacell-${row.form_item_id}-${exc.type_id}`}>\n <ItemTableField\n field={exc}\n rowId={row.form_item_id}\n timeZone={timeZone}\n />\n </TableCell>\n ))}\n <TableCell>\n <GlobalQuantityField\n row={row}\n extraColumns={extraColumns}\n value={calculateQuantity(row)}\n />\n </TableCell>\n <TableCell align=\"center\">\n {hasItemFields(row) && (\n <IconButton\n size=\"small\"\n aria-label=\"settings\"\n onClick={() => handleEditItemFields(row)}\n >\n <SettingsIcon fontSize=\"large\" color=\"warning\" />\n </IconButton>\n )}\n </TableCell>\n <TableCell>\n {currencyAmountFromCents(calculateRowTotal(row))}\n </TableCell>\n <TableCell align=\"center\">\n <IconButton\n size=\"large\"\n aria-label=\"edit\"\n onClick={() => handleEdit(row)}\n >\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.discount\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 5).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-discountcell`}\n />\n ))}\n <TableCell>\n <MuiFormikSelect name=\"discount_type\" label=\"\" size=\"small\">\n {Object.values(DISCOUNT_TYPES).map((p) => (\n <MenuItem key={`ddopt-${p}`} value={p}>\n {p}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </TableCell>\n <TableCell />\n <TableCell>\n <MuiFormikDiscountField\n name=\"discount_amount\"\n discountType={values.discount_type}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n />\n </TableCell>\n <TableCell />\n </TableRow>\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.total_on_caps\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 3).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-totalcell`}\n />\n ))}\n <TableCell sx={{ fontWeight: 500 }}>\n {currencyAmountFromCents(totalAmount)}\n </TableCell>\n <TableCell />\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n );\n};\n\nexport default FormItemTable;\n","/**\n * Copyright 2026 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 T from \"i18n-react/dist/i18n-react\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { Divider, IconButton, Typography } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport ItemTableField from \"../FormItemTable/components/ItemTableField\";\n\nconst ItemSettingsModal = ({ item, timeZone, open, onClose }) => {\n const itemFields =\n item?.meta_fields.filter((f) => f.class_field === \"Item\") || [];\n\n const handleSave = () => {\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>{T.translate(\"general.settings\")}</DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n sx={(theme) => ({\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme.palette.grey[500]\n })}\n >\n <CloseIcon />\n </IconButton>\n <Divider />\n <DialogContent>\n <Typography\n variant=\"body2\"\n component=\"div\"\n sx={{ marginBottom: \"20px\" }}\n >\n {item?.name}\n </Typography>\n <Divider\n sx={{\n marginBottom: \"20px\",\n marginLeft: \"-24px\",\n marginRight: \"-24px\"\n }}\n />\n {itemFields.map((exc) => (\n <React.Fragment key={`item-field-${exc.type_id}`}>\n <ItemTableField\n field={exc}\n rowId={item.form_item_id}\n timeZone={timeZone}\n label={exc.name}\n />\n </React.Fragment>\n ))}\n </DialogContent>\n <DialogActions>\n <Button onClick={handleSave} variant=\"contained\" fullWidth>\n {T.translate(\"general.save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nItemSettingsModal.propTypes = {\n item: PropTypes.object.isRequired,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired\n};\n\nexport default ItemSettingsModal;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/DialogContentText\");","/**\n * Copyright 2026 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 T from \"i18n-react/dist/i18n-react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { useField } from \"formik\";\nimport { Divider, IconButton, TextField } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nconst NotesModal = ({ item, open, onClose }) => {\n const name = `i-${item?.form_item_id}-c-global-f-notes`;\n // eslint-disable-next-line\n const [field, meta, helpers] = useField(name);\n const [notes, setNotes] = useState(\"\");\n\n useEffect(() => {\n setNotes(field.value || \"\");\n }, [field?.value]);\n\n const handleSave = () => {\n helpers.setValue(notes);\n onClose();\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>\n {T.translate(\"sponsor_edit_form.notes\")}\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n sx={(theme) => ({\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme.palette.grey[500]\n })}\n >\n <CloseIcon />\n </IconButton>\n <Divider />\n <DialogContent>\n <DialogContentText>{item?.name}</DialogContentText>\n <TextField\n name={name}\n onChange={(ev) => setNotes(ev.target.value)}\n value={notes}\n margin=\"normal\"\n multiline\n fullWidth\n rows={4}\n placeholder={T.translate(\n \"sponsor_edit_form.notes_placeholder\"\n )}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={handleSave} variant=\"contained\" fullWidth>\n {T.translate(\"general.save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nNotesModal.propTypes = {\n item: PropTypes.object,\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired\n};\n\nexport default NotesModal;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-redux\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/CheckCircle\");","/**\n * Copyright 2026 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 { createContext, useContext } from \"react\";\n\nconst SnackbarNotificationContext = createContext(null);\n\nexport const useSnackbarMessage = () => useContext(SnackbarNotificationContext);\n\nexport default SnackbarNotificationContext;\n","/**\n * Copyright 2026 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, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Alert, Snackbar, Typography } from \"@mui/material\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport SnackbarNotificationContext from \"./Context\";\nimport { NOTIFICATION_TIMEOUT } from \"../../../utils/constants\";\nimport { empty } from \"../../../utils/methods\";\nimport { clearSnackbarMessage } from \"../../../utils/actions\";\n\n/*\n This component works in two ways:\n - useSnackbarMessage hook that returns successMessage and errorMessage methods to trigger the snackbar.\n - snackbarErrorHandler and snackbarSuccessHandler actions from base-actions that change the base reducer\n */\n\nconst SnackbarNotification = ({\n children,\n snackbarMessage,\n clearSnackbarMessage\n}) => {\n const [open, setOpen] = useState(false);\n const [msgData, setMsgData] = useState({});\n // this two methods are for on-demand messaging\n const successMessage = (msg) => setMsgData({ html: msg, type: \"success\" });\n const errorMessage = (msg) => setMsgData({ html: msg, type: \"warning\" });\n const messageContext = useMemo(() => ({ successMessage, errorMessage }), []);\n\n const clearMessage = () => {\n setMsgData({});\n clearSnackbarMessage();\n };\n\n const onClose = () => {\n setOpen(false);\n setTimeout(clearMessage, NOTIFICATION_TIMEOUT);\n };\n\n useEffect(() => {\n if (!empty(msgData.html)) {\n setOpen(true);\n } else {\n setOpen(false);\n }\n }, [msgData]);\n\n // when snackbarMessage changes in base-reducer, we trigger the snackbar\n useEffect(() => {\n if (!empty(snackbarMessage?.html)) {\n setMsgData(snackbarMessage);\n }\n }, [snackbarMessage]);\n\n return (\n <SnackbarNotificationContext.Provider value={messageContext}>\n <Snackbar\n open={open}\n onClose={onClose}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n autoHideDuration={NOTIFICATION_TIMEOUT}\n >\n <Alert\n onClose={onClose}\n severity={msgData.type}\n variant=\"filled\"\n sx={{ width: \"100%\", backgroundColor: `${msgData.type}.light` }}\n iconMapping={{\n success: <CheckCircleIcon fontSize=\"inherit\" />,\n error: <ErrorIcon fontSize=\"inherit\" />\n }}\n >\n <Typography\n variant=\"body1\"\n component=\"div\"\n dangerouslySetInnerHTML={{ __html: msgData.html }}\n />\n </Alert>\n </Snackbar>\n {children}\n </SnackbarNotificationContext.Provider>\n );\n};\n\nSnackbarNotification.propTypes = {\n children: PropTypes.node,\n snackbarMessage: PropTypes.object\n};\n\nconst mapStateToProps = ({ baseState }) => ({\n snackbarMessage: baseState.snackbarMessage\n});\n\nexport default connect(mapStateToProps, { clearSnackbarMessage })(\n SnackbarNotification\n);\n","/**\n * Copyright 2026 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 {\n Checkbox,\n FormControlLabel,\n FormGroup,\n Box,\n Divider\n} from \"@mui/material\";\n\nconst CheckBoxList = ({\n items = [],\n onChange,\n loadMoreData,\n boxHeight = \"400px\",\n allItemsLabel = \"Select All\",\n noItemsLabel = \"No items found\"\n}) => {\n const [selectedItems, setSelectedItems] = useState([]);\n const [isAllSelected, setIsAllSelected] = useState(false);\n const allItemIds = items.map((item) => item.id);\n\n const handleScroll = (event) => {\n const { scrollTop, scrollHeight, clientHeight } = event.target;\n // eslint-disable-next-line no-magic-numbers\n if (scrollTop + clientHeight >= scrollHeight - 20 && loadMoreData) {\n loadMoreData();\n }\n };\n\n const handleItemChange = (itemId) => {\n let selected = [];\n if (isAllSelected) {\n selected = allItemIds.filter((id) => id !== itemId);\n } else if (selectedItems.includes(itemId)) {\n selected = selectedItems.filter((id) => id !== itemId);\n } else {\n selected = [...selectedItems, itemId];\n }\n\n setSelectedItems(selected);\n // if user selects an item, then allSelected should be unchecked\n setIsAllSelected(false);\n onChange(selected);\n };\n\n const handleAllChange = () => {\n // if user selects all, we should remove all other selections\n setSelectedItems([]);\n setIsAllSelected(!isAllSelected);\n onChange([], !isAllSelected);\n };\n\n return (\n <Box\n sx={{\n width: \"100%\",\n height: boxHeight,\n overflow: \"auto\",\n border: \"1px solid #ccc\",\n padding: 2\n }}\n onScroll={handleScroll}\n >\n {items.length === 0 ? (\n <p>{noItemsLabel}</p>\n ) : (\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox checked={isAllSelected} onChange={handleAllChange} />\n }\n label={allItemsLabel}\n />\n <Divider sx={{ mb: 2 }} />\n {items.map((item) => (\n <FormControlLabel\n key={item.id}\n control={\n <Checkbox\n checked={selectedItems.includes(item.id) || isAllSelected}\n onChange={() => handleItemChange(item.id)}\n />\n }\n label={item.name}\n />\n ))}\n </FormGroup>\n )}\n </Box>\n );\n};\n\nexport default CheckBoxList;\n","/**\n * Copyright 2026 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 { Box, Chip, Tooltip, Typography } from \"@mui/material\";\n\nconst ChipList = ({ chips, maxLength }) => {\n const shownItems = chips.slice(0, maxLength);\n const rest = chips.slice(maxLength);\n\n return (\n <Box>\n {shownItems.map((chip) => (\n <Chip key={`chip-${chip}`} label={chip} size=\"small\" sx={{ mr: 1 }} />\n ))}\n {rest.length > 0 && (\n <Tooltip\n title={rest.map((r) => (\n <Typography key={`cl-tt-${r}`} variant=\"body1\" component=\"div\">\n {r}\n </Typography>\n ))}\n arrow\n >\n <Chip label=\"...\" size=\"small\" sx={{ cursor: \"pointer\" }} />\n </Tooltip>\n )}\n </Box>\n );\n};\n\nexport default ChipList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Notifications\");","/**\n * Copyright 2026 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 { Chip } from \"@mui/material\";\nimport NotificationsIcon from \"@mui/icons-material/Notifications\";\n\nconst ChipNotify = ({ label, color = \"warning\", Icon = NotificationsIcon, ...props }) => (\n <Chip\n icon={<Icon />}\n color={color}\n label={label.toUpperCase()}\n variant=\"outlined\"\n {...props}\n />\n);\n\nexport default ChipNotify;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers\");","/**\n * Copyright 2026 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 {\n Box,\n Chip,\n FormControl,\n IconButton,\n InputAdornment,\n InputLabel,\n MenuItem,\n OutlinedInput,\n Select\n} from \"@mui/material\";\nimport { ClearIcon } from \"@mui/x-date-pickers\";\n\nconst ChipSelectInput = ({\n availableOptions = [],\n canAdd = false,\n canEdit = false,\n inputLabel = \"\",\n currentSettings = null,\n onGetSettingsMeta,\n onGetSettings,\n onUpsertSettings,\n renderSelectedOptions,\n denormalizeSettings\n}) => {\n const [selectedColumns, setSelectedColumns] = useState([]);\n const [isDirty, setIsDirty] = useState(false);\n\n // get current selected options\n useEffect(() => {\n if (onGetSettings) {\n onGetSettings();\n }\n }, [onGetSettings]);\n\n useEffect(() => {\n if (currentSettings) {\n if (onGetSettingsMeta) {\n onGetSettingsMeta();\n }\n\n if (currentSettings && renderSelectedOptions && denormalizeSettings) {\n const selectedColumnsTmp = renderSelectedOptions(\n denormalizeSettings(currentSettings.columns)\n ).map((c) => c.value);\n setSelectedColumns(selectedColumnsTmp);\n }\n }\n }, [currentSettings]);\n\n const submitNewColumns = (newValue) => {\n setSelectedColumns(newValue);\n onUpsertSettings(newValue);\n setIsDirty(false);\n };\n\n const handleColumnChange = (value) => {\n setSelectedColumns(value);\n setIsDirty(true);\n };\n\n const handleRemoveItem = (value) => {\n const newValues = selectedColumns.filter((c) => c !== value);\n setSelectedColumns(newValues);\n onUpsertSettings(newValues);\n };\n\n if (!canAdd || !canEdit || availableOptions.length === 0) {\n return null;\n }\n\n return (\n <Box>\n <FormControl fullWidth>\n <InputLabel id=\"multi-select-label\">{inputLabel}</InputLabel>\n <Select\n labelId=\"multi-select-label\"\n id=\"multi-select\"\n multiple\n fullWidth\n value={selectedColumns}\n onChange={(ev) => handleColumnChange(ev.target.value)}\n onClose={() => (isDirty ? submitNewColumns(selectedColumns) : null)}\n input={<OutlinedInput label={inputLabel} />}\n renderValue={(selected) => (\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 0.5 }}>\n {selected.map((value) => {\n const op = availableOptions.find((opt) => opt.value === value);\n if (!op) return null;\n return (\n <Chip\n key={op.value}\n label={op.label}\n onDelete={() => {\n handleRemoveItem(op.value);\n }}\n deleteIcon={\n <ClearIcon\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n />\n }\n />\n );\n })}\n </Box>\n )}\n endAdornment={\n selectedColumns.length > 0 && (\n <InputAdornment sx={{ marginRight: \"10px\" }} position=\"end\">\n <IconButton\n onClick={() => {\n submitNewColumns([]);\n }}\n >\n <ClearIcon />\n </IconButton>\n </InputAdornment>\n )\n }\n >\n {availableOptions.map(({ value, label }) => (\n <MenuItem key={value} value={value}>\n {label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n );\n};\n\nexport default ChipSelectInput;\n","/**\n * Copyright 2026 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 {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Typography\n} from \"@mui/material\";\nimport { CheckCircle, Error, Info, Warning } from \"@mui/icons-material\";\n\nconst iconMap = {\n warning: <Warning color=\"warning\" />,\n success: <CheckCircle color=\"success\" />,\n error: <Error color=\"error\" />,\n info: <Info color=\"info\" />\n};\n\nconst ConfirmDialog = ({\n open,\n title,\n text,\n iconType = \"\",\n onConfirm,\n onCancel,\n confirmButtonText = \"Confirm\",\n confirmButtonColor = \"primary\",\n cancelButtonText = \"Cancel\",\n cancelButtonColor = \"primary\"\n}) => (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle sx={{ p: 2 }} component=\"div\">\n <Typography variant=\"h5\">{title}</Typography>\n </DialogTitle>\n <Divider />\n <DialogContent sx={{ p: 2 }}>\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {iconMap[iconType] && (\n <div style={{ marginRight: 10 }}>{iconMap[iconType]}</div>\n )}\n <Typography variant=\"body1\">{text}</Typography>\n </div>\n </DialogContent>\n <Divider sx={{ margin: \"10px 0px 10px 0px\" }} />\n <DialogActions>\n <Button\n fullWidth\n onClick={onCancel}\n color={cancelButtonColor}\n variant=\"outlined\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {cancelButtonText}\n </Button>\n <Button\n fullWidth\n onClick={onConfirm}\n color={confirmButtonColor}\n variant=\"contained\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nConfirmDialog.propTypes = {\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n iconType: PropTypes.string,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n confirmButtonText: PropTypes.string,\n confirmButtonColor: PropTypes.string,\n cancelButtonText: PropTypes.string,\n cancelButtonColor: PropTypes.string\n};\n\nConfirmDialog.defaultProps = {\n open: false,\n iconType: \"warning\",\n confirmButtonText: \"Confirm\",\n confirmButtonColor: \"primary\",\n cancelButtonText: \"Cancel\",\n cancelButtonColor: \"default\"\n};\n\nexport default ConfirmDialog;\n","/**\n * Copyright 2026 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 { Alert } from \"@mui/material\";\n\nconst CustomAlert = ({ severity = \"info\", message = \"\", hideIcon = false }) => (\n <Alert\n severity={severity}\n icon={!hideIcon}\n sx={{\n justifyContent: \"start\",\n alignItems: \"center\",\n mb: 2\n }}\n >\n {message}\n </Alert>\n);\n\nexport default CustomAlert;\n","/**\n * Copyright 2026 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 { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport { Box } from \"@mui/material\";\n\nconst reorder = (list, startIndex, endIndex, updateOrderKey) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n return result.map((item, index) => ({\n ...item,\n [updateOrderKey]: index + 1\n }));\n};\n\nconst DragAndDropList = ({\n items,\n onReorder,\n renderItem,\n idKey,\n updateOrderKey,\n droppableId\n}) => {\n const handleDragEnd = (result) => {\n if (!result.destination) return;\n\n const newItems = reorder(\n items,\n result.source.index,\n result.destination.index,\n updateOrderKey\n );\n onReorder(newItems, result);\n };\n\n return (\n <DragDropContext onDragEnd={handleDragEnd}>\n <Droppable droppableId={droppableId}>\n {(provided) => (\n <Box\n ref={provided.innerRef}\n {...provided.droppableProps}\n sx={{ width: \"100%\" }}\n >\n {items.map((item, index) => (\n <Draggable\n key={String(item[idKey] || `new-${index}`)}\n draggableId={String(item[idKey] || `new-${index}`)}\n index={index}\n >\n {(provided, snapshot) => (\n <Box\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n sx={{\n background: snapshot.isDragging ? \"#f0f0f0\" : \"inherit\",\n transition: \"background 0.2s ease\"\n }}\n >\n {renderItem(item, index, provided, snapshot)}\n </Box>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </Box>\n )}\n </Droppable>\n </DragDropContext>\n );\n};\n\nDragAndDropList.propTypes = {\n items: PropTypes.array.isRequired,\n onReorder: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n idKey: PropTypes.string,\n updateOrderKey: PropTypes.string,\n droppableId: PropTypes.string\n};\n\nDragAndDropList.defaultProps = {\n idKey: \"id\",\n updateOrderKey: \"order\",\n droppableId: \"droppable\"\n};\n\nexport default DragAndDropList;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n Divider,\n FormControl,\n InputLabel,\n ListItemText,\n MenuItem,\n OutlinedInput,\n Select\n} from \"@mui/material\";\n\nconst DropdownCheckbox = ({\n name,\n label,\n allLabel,\n value = [],\n options,\n onChange,\n ...rest\n}) => {\n const handleChange = (ev) => {\n const rawValue = ev.target.value;\n const selected = Array.isArray(rawValue)\n ? rawValue\n : typeof rawValue === \"string\"\n ? rawValue.split(\",\")\n : [];\n\n if (selected.includes(\"all\")) {\n if (!value.includes(\"all\")) {\n // if all changed from unselected to selected we remove the rest of selections\n onChange({ target: { name, value: [\"all\"] } });\n } else if (selected.length > 1) {\n // if all was selected and now select an item, we remove \"all\" from selections\n onChange({\n target: { name, value: selected.filter((v) => v !== \"all\") }\n });\n } else {\n onChange({ target: { name, value: [\"all\"] } });\n }\n } else {\n // else if \"all\" is not selected we just send selection\n onChange({ target: { name, value: selected } });\n }\n };\n\n return (\n <FormControl fullWidth margin=\"normal\">\n <InputLabel id={`${name}_label`}>{label}</InputLabel>\n <Select\n labelId={`${name}_label`}\n name={name}\n multiple\n value={value}\n onChange={handleChange}\n {...rest}\n input={<OutlinedInput label={label} />}\n renderValue={(selected) => {\n if (selected.includes(\"all\")) {\n return allLabel; // Display allLabel when all options are selected\n }\n const selectedNames = options\n .filter(({ id }) => selected.includes(id))\n .map(({ name: opName }) => opName);\n return selectedNames.join(\", \");\n }}\n >\n <MenuItem key=\"all\" value=\"all\">\n <Checkbox checked={value.includes(\"all\")} />\n <ListItemText primary={allLabel} />\n </MenuItem>\n <Divider />\n {options.map(({ name: opName, id }) => (\n <MenuItem key={id} value={id}>\n <Checkbox checked={value.includes(id)} />\n <ListItemText primary={opName} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default DropdownCheckbox;\n","/**\n * Copyright 2026 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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport { IconButton, TextField } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nimport {\n DEFAULT_PER_PAGE,\n FIFTY_PER_PAGE,\n TWENTY_PER_PAGE\n} from \"../../../utils/constants\";\nimport showConfirmDialog from \"../showConfirmDialog\";\n\nconst ARCHIVED_CELL_SX = {\n backgroundColor: \"background.light\",\n color: \"text.disabled\"\n};\n\nconst validateValue = (value, validation) => {\n if (!validation) return { isValid: true };\n\n // validate with yup schema\n if (\n validation.schema &&\n typeof validation.schema.validateSync === \"function\"\n ) {\n try {\n validation.schema.validateSync(value);\n return { isValid: true, message: null };\n } catch (err) {\n return { isValid: false, message: err.message };\n }\n }\n\n return { isValid: true };\n};\n\n// Updated component to handle editable cells with hover edit icon\nconst EditableCell = ({ value, isEditing, onBlur, validation }) => {\n const [inputValue, setInputValue] = React.useState(value);\n const [isHovering, setIsHovering] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n React.useEffect(() => {\n setInputValue(value);\n setError(null);\n }, [value]);\n\n const handleValidationAndSave = (newValue) => {\n const { isValid, message } = validateValue(newValue, validation);\n\n if (isValid) {\n setError(null);\n onBlur(newValue, true);\n } else {\n setError(message);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleValidationAndSave(inputValue);\n }\n };\n\n if (isEditing) {\n return (\n <TextField\n autoFocus\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n if (error) setError(null);\n }}\n onBlur={() => {\n handleValidationAndSave(inputValue);\n }}\n onKeyDown={handleKeyDown}\n size=\"small\"\n fullWidth\n variant=\"standard\"\n error={!!error}\n helperText={error}\n />\n );\n }\n\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n width: \"100%\",\n height: \"100%\"\n }}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n >\n <span style={{ flex: 1 }}>{value}</span>\n {isHovering && (\n <EditIcon\n fontSize=\"small\"\n sx={{\n opacity: 0.5,\n position: \"absolute\",\n right: 0,\n \"&:hover\": {\n opacity: 1\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MuiTableEditable = ({\n columns = [],\n data = [],\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1, disableProp: null },\n getName = (item) => item.name,\n onEdit,\n onArchive,\n onDelete,\n onCellChange, // New prop for handling cell value changes\n deleteDialogBody\n}) => {\n // State to track which cell is currently being edited\n const [editingCell, setEditingCell] = React.useState(null);\n\n const handleChangePage = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleChangeRowsPerPage = (ev) => {\n onPerPageChange(ev.target.value);\n };\n\n const basePerPageOptions = [\n DEFAULT_PER_PAGE,\n TWENTY_PER_PAGE,\n FIFTY_PER_PAGE\n ];\n\n const customPerPageOptions = basePerPageOptions.includes(perPage)\n ? basePerPageOptions\n : [...basePerPageOptions, perPage].sort((a, b) => a - b);\n\n const { sortCol, sortDir } = options;\n\n const getArchivedCellSx = (row) =>\n options.disableProp && row[options.disableProp] ? ARCHIVED_CELL_SX : null;\n\n const getCellSx = (row, baseSx = {}) => ({\n ...baseSx,\n ...(getArchivedCellSx(row) || {})\n });\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: deleteDialogBody\n ? deleteDialogBody(getName(item))\n : `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n const isEditable = (col, row) =>\n typeof col.editable === \"function\" ? col.editable(row) : !!col.editable;\n\n // Handler for starting edit mode on a cell\n const handleCellClick = (row, columnKey) => {\n // Check if the column is editable\n const column = columns.find((col) => col.columnKey === columnKey);\n if (column && isEditable(column, row)) {\n setEditingCell({ rowId: row.id, columnKey });\n }\n };\n\n // Handler for saving changes when editing is complete\n const handleCellBlur = (rowId, columnKey, newValue, isValid) => {\n if (onCellChange && isValid) {\n onCellChange(rowId, columnKey, newValue);\n }\n setEditingCell(null);\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n {onEdit && <TableCell sx={{ width: 40 }} />}\n {onArchive && <TableCell sx={{ width: 80 }} />}\n {onDelete && <TableCell sx={{ width: 40 }} />}\n </TableRow>\n </TableHead>\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row) => (\n <TableRow key={row.id}>\n {columns.map((col) => (\n <TableCell\n key={`${row.id}-${col.columnKey}`}\n onClick={() => handleCellClick(row, col.columnKey)}\n sx={getCellSx(row, {\n cursor: isEditable(col, row) ? \"pointer\" : \"default\",\n padding: isEditable(col, row) ? \"8px 16px\" : undefined // Ensure enough space for the edit icon\n })}\n >\n {isEditable(col, row) ? (\n <EditableCell\n value={row[col.columnKey]}\n isEditing={\n editingCell &&\n editingCell.rowId === row.id &&\n editingCell.columnKey === col.columnKey\n }\n onBlur={(newValue, isValid) =>\n handleCellBlur(\n row.id,\n col.columnKey,\n newValue,\n isValid\n )\n }\n validation={col.validation}\n />\n ) : col.render ? (\n col.render(row)\n ) : (\n row[col.columnKey]\n )}\n </TableCell>\n ))}\n {onEdit && (\n <TableCell sx={getCellSx(row)}>\n <IconButton\n onClick={() => onEdit(row)}\n size=\"small\"\n aria-label={T.translate(\"general.edit\")}\n >\n <EditIcon />\n </IconButton>\n </TableCell>\n )}\n {onArchive && (\n <TableCell align=\"center\" sx={{ width: 80 }}>\n <Button\n variant=\"text\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => onArchive(row)}\n sx={{\n fontSize: \"1.3rem\",\n fontWeight: 500,\n lineHeight: \"2.2rem\",\n padding: \"4px 5px\"\n }}\n >\n {row.is_archived\n ? T.translate(\"general.unarchive\")\n : T.translate(\"general.archive\")}\n </Button>\n </TableCell>\n )}\n {onDelete && (\n <TableCell sx={getCellSx(row)}>\n <IconButton\n onClick={() => handleDelete(row)}\n size=\"small\"\n aria-label={T.translate(\"general.delete\")}\n >\n <DeleteIcon />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n <TablePagination\n rowsPerPageOptions={customPerPageOptions}\n component=\"div\"\n count={totalRows ?? data.length}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={{\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n }}\n />\n </Paper>\n </Box>\n );\n};\n\nexport default MuiTableEditable;\n","/**\n * Copyright 2026 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 } from \"react\";\nimport { useFormikContext, getIn } from \"formik\";\nimport T from \"i18n-react\";\nimport AdditionalInput from \"./additional-input\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\nimport { METAFIELD_TYPES_WITH_OPTIONS } from \"../../../../utils/constants\";\n\nconst DEFAULT_META_FIELD = {\n name: \"\",\n type: \"\",\n is_required: false,\n minimum_quantity: 0,\n maximum_quantity: 0,\n values: []\n};\n\nconst AdditionalInputList = ({ name, onDelete, onDeleteValue, entityId }) => {\n const { values, setFieldValue, errors, setFieldTouched } = useFormikContext();\n\n const metaFields = values[name] || [];\n\n useEffect(() => {\n if (metaFields.length === 0) {\n setFieldValue(name, [\n { ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` }\n ]);\n }\n }, [metaFields.length]);\n\n const handleAddItem = () => {\n setFieldValue(name, [\n ...metaFields,\n { ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` }\n ]);\n };\n\n const handleRemove = async (item, index) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: `${T.translate(\"additional_inputs.delete_warning\")} ${\n item.name\n }`,\n type: \"warning\",\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (!isConfirmed) return;\n\n const removeFromUI = () => {\n const newValues = metaFields.filter((_, idx) => idx !== index);\n if (newValues.length === 0) {\n newValues.push({ ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` });\n }\n setFieldValue(name, newValues);\n setFieldTouched(name, [], false);\n };\n\n if (item.id && onDelete) {\n onDelete(entityId, item.id)\n .then(() => removeFromUI())\n .catch((err) => console.error(\"Error deleting field from API\", err));\n } else {\n removeFromUI();\n }\n };\n\n const areMetafieldsIncomplete = () => {\n const fieldErrors = getIn(errors, name);\n if (fieldErrors && Array.isArray(fieldErrors)) {\n const hasRealErrors = fieldErrors.some(\n (err) => err && Object.keys(err).length > 0\n );\n if (hasRealErrors) return true;\n }\n\n return metaFields.some((field) => {\n if (!field.name?.trim() || !field.type) return true;\n if (METAFIELD_TYPES_WITH_OPTIONS.includes(field.type)) {\n if (!field.values || field.values.length === 0) return true;\n const hasIncompleteValues = field.values.some(\n (v) => !v.name?.trim() || !v.value?.trim()\n );\n if (hasIncompleteValues) return true;\n }\n\n return false;\n });\n };\n\n return (\n <>\n {metaFields.map((item, itemIdx) => (\n <AdditionalInput\n key={item.id || item._key}\n item={item}\n itemIdx={itemIdx}\n baseName={name}\n onAdd={handleAddItem}\n onDelete={handleRemove}\n onDeleteValue={onDeleteValue}\n entityId={entityId}\n isAddDisabled={areMetafieldsIncomplete()}\n />\n ))}\n </>\n );\n};\n\nexport default AdditionalInputList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Add\");","/**\n * Copyright 2026 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 { useFormikContext } from \"formik\";\nimport { Box, Button, Grid2, Divider, IconButton } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DragAndDropList from \"../../dnd-list\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\nimport MuiFormikTextField from \"../mui-formik-textfield\";\nimport MuiFormikCheckbox from \"../mui-formik-checkbox\";\n\nconst MetaFieldValues = ({\n field,\n fieldIndex,\n baseName = \"meta_fields\",\n onMetaFieldTypeValueDeleted,\n entityId\n}) => {\n const { values, setFieldValue } = useFormikContext();\n\n const metaFields = values[baseName] || [];\n const sortedValues = [...field.values].sort((a, b) => a.order - b.order);\n\n const buildValueFieldName = (valueIndex, fieldName) =>\n `${baseName}[${fieldIndex}].values[${valueIndex}].${fieldName}`;\n\n const onReorder = (newValues) => {\n const newMetaFields = [...metaFields];\n newMetaFields[fieldIndex].values = newValues;\n setFieldValue(baseName, newMetaFields);\n };\n\n const handleAddValue = () => {\n const newFields = [...metaFields];\n newFields[fieldIndex].values.push({\n value: \"\",\n name: \"\",\n is_default: false\n });\n setFieldValue(baseName, newFields);\n };\n\n const handleDefaultChange = (valueIndex, checked) => {\n const newFields = [...metaFields];\n if (checked) {\n newFields[fieldIndex].values.forEach((v) => {\n v.is_default = false;\n });\n }\n newFields[fieldIndex].values[valueIndex].is_default = checked;\n setFieldValue(baseName, newFields);\n };\n\n const isMetafieldValueIncomplete = () => {\n if (field.values.length > 0) {\n return field.values.some((v) => !v.name?.trim() || !v.value?.trim());\n }\n return false;\n };\n\n const handleRemoveValue = async (metaFieldValue, valueIndex) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: T.translate(\"meta_fields.delete_value_warning\"),\n type: \"warning\",\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (!isConfirmed) return;\n\n const removeValueFromFields = () => {\n const newFields = [...metaFields];\n newFields[fieldIndex].values = newFields[fieldIndex].values.filter(\n (_, index) => index !== valueIndex\n );\n setFieldValue(baseName, newFields);\n };\n\n if (field.id && metaFieldValue.id && onMetaFieldTypeValueDeleted) {\n onMetaFieldTypeValueDeleted(entityId, field.id, metaFieldValue.id).then(\n () => removeValueFromFields()\n );\n } else {\n removeValueFromFields();\n }\n };\n\n const renderMetaFieldValue = (val, sortedIndex, provided, snapshot) => {\n const originalIndex = field.values.findIndex(\n (v) => (v.id && v.id === val.id) || v === val\n );\n const valueIndex = originalIndex !== -1 ? originalIndex : sortedIndex;\n\n return (\n <Box key={val.id || `value-${valueIndex}`}>\n <Grid2\n container\n spacing={2}\n sx={{\n alignItems: \"start\",\n background: snapshot?.isDragging ? \"#ebebeb\" : \"inherit\",\n boxShadow: snapshot?.isDragging\n ? \"0px 5px 15px rgba(0,0,0,0.3)\"\n : \"none\",\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n transform: snapshot?.isDragging ? \"scale(1.02)\" : \"none\",\n py: 2\n }}\n >\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildValueFieldName(valueIndex, \"name\")}\n placeholder={T.translate(\n \"meta_fields.placeholders.name\"\n )}\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildValueFieldName(valueIndex, \"value\")}\n placeholder={T.translate(\n \"meta_fields.placeholders.value\"\n )}\n margin=\"none\"\n fullWidth\n InputProps={{\n endAdornment: (\n <IconButton\n onClick={() => handleRemoveValue(val, valueIndex)}\n aria-label=\"remove value\"\n >\n <CloseIcon />\n </IconButton>\n )\n }}\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikCheckbox\n name={buildValueFieldName(valueIndex, \"is_default\")}\n label={T.translate(\"meta_fields.is_default\")}\n onChange={(e) =>\n handleDefaultChange(valueIndex, e.target.checked)\n }\n />\n </Grid2>\n </Grid2>\n <Divider />\n </Box>\n );\n };\n\n return (\n <Box>\n <DragAndDropList\n items={sortedValues}\n onReorder={onReorder}\n renderItem={renderMetaFieldValue}\n idKey=\"id\"\n updateOrderKey=\"order\"\n droppableId={`droppable-values-${fieldIndex}`}\n />\n <Grid2 container spacing={2} sx={{ mt: 2 }} offset={4}>\n <Button\n startIcon={<AddIcon />}\n disabled={isMetafieldValueIncomplete()}\n onClick={handleAddValue}\n variant=\"text\"\n >\n {T.translate(\"meta_fields.add_value\")}\n </Button>\n </Grid2>\n </Box>\n );\n};\n\nexport default MetaFieldValues;\n","/**\n * Copyright 2026 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 {\n Box,\n Button,\n Divider,\n FormHelperText,\n Grid2,\n InputLabel,\n MenuItem\n} from \"@mui/material\";\nimport { useFormikContext, getIn } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport MetaFieldValues from \"./meta-field-values\";\nimport MuiFormikTextField from \"../mui-formik-textfield\";\nimport MuiFormikSelect from \"../mui-formik-select\";\nimport MuiFormikCheckbox from \"../mui-formik-checkbox\";\nimport {\n METAFIELD_TYPES,\n METAFIELD_TYPES_WITH_OPTIONS\n} from \"../../../../utils/constants\";\n\nconst AdditionalInput = ({\n item,\n itemIdx,\n baseName,\n onAdd,\n onDelete,\n onDeleteValue,\n entityId,\n isAddDisabled\n}) => {\n const { errors, touched, values } = useFormikContext();\n\n const buildFieldName = (fieldName) => `${baseName}[${itemIdx}].${fieldName}`;\n const currentType = getIn(values, buildFieldName(\"type\"));\n\n const fieldErrors = getIn(errors, `${baseName}[${itemIdx}]`);\n const fieldTouched = getIn(touched, `${baseName}[${itemIdx}]`);\n\n const showValuesError =\n fieldTouched?.values &&\n fieldErrors?.values &&\n typeof fieldErrors.values === \"string\";\n\n return (\n <Grid2 container spacing={2} sx={{ alignItems: \"center\" }}>\n <Grid2 size={11}>\n <Box\n sx={{\n border: \"1px solid #0000001F\",\n borderRadius: \"4px\",\n p: 2,\n my: 2\n }}\n >\n <Grid2 container spacing={2} sx={{ alignItems: \"start\" }}>\n <Grid2 size={4}>\n <InputLabel htmlFor={buildFieldName(\"name\")}>\n {T.translate(\"additional_inputs.title\")}\n </InputLabel>\n <MuiFormikTextField\n name={buildFieldName(\"name\")}\n margin=\"none\"\n placeholder={T.translate(\n \"additional_inputs.placeholders.title\"\n )}\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <InputLabel htmlFor={buildFieldName(\"type\")}>\n {T.translate(\"additional_inputs.type\")}\n </InputLabel>\n <MuiFormikSelect\n name={buildFieldName(\"type\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.type\"\n )}\n >\n {METAFIELD_TYPES.map((fieldType) => (\n <MenuItem key={fieldType} value={fieldType}>\n {fieldType}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </Grid2>\n <Grid2 size={4} sx={{ alignSelf: \"end\" }}>\n <MuiFormikCheckbox\n name={buildFieldName(\"is_required\")}\n label={T.translate(\"additional_inputs.required\")}\n />\n </Grid2>\n </Grid2>\n {METAFIELD_TYPES_WITH_OPTIONS.includes(currentType) && (\n <>\n <Divider sx={{ mt: 2 }} />\n <MetaFieldValues\n field={item}\n fieldIndex={itemIdx}\n baseName={baseName}\n onMetaFieldTypeValueDeleted={onDeleteValue}\n entityId={entityId}\n />\n {showValuesError && (\n <FormHelperText error sx={{ mt: 1 }}>\n {fieldErrors.values}\n </FormHelperText>\n )}\n </>\n )}\n {currentType === \"Quantity\" && (\n <Grid2 container spacing={2} sx={{ alignItems: \"start\", mt: 2 }}>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildFieldName(\"minimum_quantity\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.minimum_quantity\"\n )}\n type=\"number\"\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildFieldName(\"maximum_quantity\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.maximum_quantity\"\n )}\n type=\"number\"\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n </Grid2>\n )}\n </Box>\n </Grid2>\n <Grid2 size={1}>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n <Button\n variant=\"outlined\"\n aria-label=\"delete\"\n sx={{\n width: 40,\n height: 40,\n minWidth: \"auto\",\n borderRadius: \"50%\",\n padding: 0\n }}\n onClick={() => onDelete(item, itemIdx)}\n >\n <DeleteIcon />\n </Button>\n <Button\n variant=\"contained\"\n aria-label=\"add\"\n disabled={isAddDisabled}\n sx={{\n width: 40,\n height: 40,\n minWidth: \"auto\",\n borderRadius: \"50%\",\n padding: 0\n }}\n onClick={onAdd}\n >\n <AddIcon />\n </Button>\n </Box>\n </Grid2>\n </Grid2>\n );\n};\n\nexport default AdditionalInput;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete, { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { useField } from \"formik\";\nimport { queryCompanies } from \"../../../utils/query-actions\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst filter = createFilterOptions();\n\nconst CompanyInputMUI = ({\n id,\n name,\n placeholder,\n plainValue,\n isMulti = false,\n allowCreate = false,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [isDebouncing, setIsDebouncing] = useState(false);\n\n const { value } = field;\n const error = meta.touched && meta.error;\n\n const fetchOptions = async (input) => {\n if (!input) {\n setOptions([]);\n return;\n }\n\n setIsDebouncing(false);\n setLoading(true);\n\n const normalize = (results) =>\n results.map((r) => ({\n value: r.id.toString(),\n label: r.name\n }));\n\n await queryCompanies(input, (results) => {\n setOptions(normalize(results));\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (inputValue) {\n setIsDebouncing(true);\n const delayDebounce = setTimeout(() => {\n fetchOptions(inputValue);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n setIsDebouncing(false);\n }, [inputValue]);\n\n const selectedValue = useMemo(() => {\n if (!value) return isMulti ? [] : null;\n\n if (isMulti) {\n return value.map((v) =>\n plainValue\n ? { value: v, label: v }\n : { value: v.id?.toString(), label: v.name }\n );\n }\n return plainValue\n ? { value, label: value }\n : { value: value.id?.toString(), label: value.name };\n }, [value, plainValue, isMulti]);\n\n const handleChange = (_, newValue) => {\n let theValue;\n\n if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {\n theValue = isMulti ? [] : plainValue ? \"\" : { id: \"\", name: \"\" };\n } else if (isMulti) {\n theValue = plainValue\n ? newValue.map((v) => v.label)\n : newValue.map((v) => ({\n id: parseInt(v.value),\n name: v.label\n }));\n } else {\n theValue = plainValue\n ? newValue.inputValue || newValue.label\n : {\n id: newValue.inputValue ? 0 : parseInt(newValue.value),\n name: newValue.inputValue || newValue.label\n };\n }\n\n helpers.setValue(theValue);\n };\n\n const handleFilterOptions = (options, params) => {\n const filtered = filter(options, params);\n\n if (!allowCreate || loading || isDebouncing) return filtered;\n\n const { inputValue } = params;\n const isExisting = options.some(\n (option) => inputValue.toLowerCase() === option.label.toLowerCase()\n );\n\n if (inputValue !== \"\" && !isExisting) {\n filtered.push({\n inputValue,\n value: null,\n label: `Create \"${inputValue}\"`\n });\n }\n return filtered;\n };\n\n const getOptionLabel = (option) => {\n if (option.inputValue) {\n return option.inputValue;\n }\n return option.label || \"\";\n };\n\n return (\n <Autocomplete\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n options={options}\n value={selectedValue}\n getOptionLabel={getOptionLabel}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(_, newInputValue) => {\n setInputValue(newInputValue);\n }}\n filterOptions={handleFilterOptions}\n multiple={isMulti}\n onChange={handleChange}\n loading={loading}\n fullWidth\n popupIcon={<ExpandMoreIcon />}\n renderOption={(props, option) => (\n <li {...props} key={option.value ?? `create-${option.inputValue}`}>\n {option.label}\n </li>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n name={field.name}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={error || \"\"}\n slotProps={{\n ...params.InputProps,\n inputLabel: { shrink: false },\n sx: {\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n },\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n }}\n />\n )}\n {...rest}\n />\n );\n};\n\nCompanyInputMUI.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool,\n isMulti: PropTypes.bool,\n allowCreate: PropTypes.bool\n};\n\nexport default CompanyInputMUI;\n","/**\n * Copyright 2026 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\";\nimport { useFormikContext } from \"formik\";\nimport {\n Box,\n Checkbox,\n FormControlLabel,\n Grid2,\n InputLabel,\n TextField\n} from \"@mui/material\";\nimport MuiFormikPriceField from \"./mui-formik-pricefield\";\nimport { RATE_FIELDS } from \"../../../utils/constants\";\nimport { isRateEnabled } from \"../../../utils/methods\";\n\nconst TIERS = [\n { field: RATE_FIELDS.EARLY_BIRD, label: \"rates.early_bird_rate\" },\n { field: RATE_FIELDS.STANDARD, label: \"rates.standard_rate\" },\n { field: RATE_FIELDS.ONSITE, label: \"rates.onsite_rate\" }\n];\n\nconst ItemPriceTiers = ({ readOnly = false }) => {\n const { values, setFieldValue } = useFormikContext();\n\n const enabled = {\n [RATE_FIELDS.EARLY_BIRD]: isRateEnabled(values[RATE_FIELDS.EARLY_BIRD]),\n [RATE_FIELDS.STANDARD]: isRateEnabled(values[RATE_FIELDS.STANDARD]),\n [RATE_FIELDS.ONSITE]: isRateEnabled(values[RATE_FIELDS.ONSITE])\n };\n\n const handleToggle = (field, checked) => {\n setFieldValue(field, checked ? null : 0);\n };\n\n return (\n <Grid2 container spacing={2} size={12}>\n {TIERS.map(({ field, label }) => {\n const isEnabled = enabled[field];\n return (\n <Grid2 key={field} size={4}>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n }}\n >\n <InputLabel htmlFor={field}>{T.translate(label)}</InputLabel>\n <FormControlLabel\n control={\n <Checkbox\n checked={!isEnabled}\n onChange={(ev) => handleToggle(field, ev.target.checked)}\n size=\"small\"\n disabled={readOnly}\n inputProps={{\n \"aria-label\": `${T.translate(label)} ${T.translate(\n \"general.not_available\"\n )}`\n }}\n />\n }\n label={T.translate(\"general.not_available\")}\n />\n </Box>\n <Box>\n {isEnabled ? (\n <MuiFormikPriceField\n name={field}\n fullWidth\n disabled={readOnly}\n />\n ) : (\n <TextField\n disabled\n value={T.translate(\"general.not_available\")}\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n />\n )}\n </Box>\n </Grid2>\n );\n })}\n </Grid2>\n );\n};\n\nexport default ItemPriceTiers;\n","/**\n * Copyright 2026 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 {\n Autocomplete,\n TextField,\n Checkbox,\n CircularProgress\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst MuiFormikAsyncAutocomplete = ({\n name,\n queryFunction,\n multiple = false,\n placeholder = \"Select...\",\n plainValue = false,\n hiddenOptions = [],\n formatOption = (item) => ({ value: item.id.toString(), label: item.name }),\n formatSelectedValue = null,\n queryParams = [],\n isMulti = false\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n\n const value = field.value || (multiple ? [] : null);\n const error = meta.touched && meta.error;\n\n const fetchOptions = async (input = \"\") => {\n setLoading(true);\n try {\n await queryFunction(input, ...queryParams, (results) => {\n const normalized = results\n .filter((r) => !hiddenOptions.includes(r.id))\n .map(formatOption);\n setOptions(normalized);\n setLoading(false);\n });\n } catch (err) {\n console.error(\"Error fetching options:\", err);\n setLoading(false);\n }\n };\n\n useEffect(() => {\n if (searchTerm) {\n const delayDebounce = setTimeout(() => {\n fetchOptions(searchTerm);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n }, [searchTerm]);\n\n // preload empty\n useEffect(() => {\n fetchOptions(\"\");\n }, []);\n\n const handleChange = (event, selected) => {\n if (!multiple) {\n const selectedValue = plainValue ? selected?.value || \"\" : selected;\n helpers.setValue(selectedValue);\n return;\n }\n\n const selectedItems = plainValue\n ? selected.map((s) => s.value)\n : selected.map((s) =>\n formatSelectedValue\n ? formatSelectedValue(s)\n : { id: parseInt(s.value), name: s.label }\n );\n\n helpers.setValue(selectedItems);\n };\n\n return (\n <Autocomplete\n options={options}\n value={value}\n onChange={handleChange}\n loading={loading}\n multiple={isMulti}\n fullWidth\n getOptionLabel={(option) => option.label || \"\"}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(e, newInput) => setSearchTerm(newInput)}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={error || \"\"}\n slotProps={{\n input: {\n ...params.InputProps,\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n },\n inputLabel: { shrink: false }\n }}\n sx={{\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n }}\n />\n )}\n renderOption={(props, option, { selected }) => (\n <li {...props}>\n {multiple && <Checkbox checked={selected} sx={{ mr: 1 }} />}\n {option.label}\n </li>\n )}\n />\n );\n};\n\nexport default MuiFormikAsyncAutocomplete;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n FormLabel\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport { INT_BASE } from \"../../../utils/constants\";\n\nconst MuiFormikCheckboxGroup = ({ name, label, options, ...props }) => {\n const [field, meta, helpers] = useField({ name });\n\n // Ensure field.value is an array\n const values = Array.isArray(field.value) ? field.value : [];\n\n const handleChange = (ev) => {\n const { value, checked } = ev.target;\n\n if (checked) {\n // Add the value to the array if it's checked\n helpers.setValue([...values, parseInt(value, INT_BASE)]);\n } else {\n // Remove the value from the array if it's unchecked\n helpers.setValue(\n values.filter((val) => val !== parseInt(value, INT_BASE))\n );\n }\n };\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n {label && <FormLabel id=\"checkbox-group-label\">{label}</FormLabel>}\n <FormGroup\n aria-labelledby=\"checkbox-group-label\"\n row\n name={name}\n {...props}\n >\n {options.map((op) => (\n <FormControlLabel\n key={`chk-box-${op.value}`}\n control={\n <Checkbox\n checked={values.includes(op.value)}\n onChange={handleChange}\n value={op.value}\n sx={{ \"& .MuiSvgIcon-root\": { fontSize: 24 } }}\n />\n }\n label={op.label}\n />\n ))}\n </FormGroup>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckboxGroup.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n options: PropTypes.array.isRequired\n};\n\nexport default MuiFormikCheckboxGroup;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikCheckbox = ({ name, label, ...props }) => {\n const [field, meta] = useField({ name, type: \"checkbox\" });\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Checkbox\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckbox.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikCheckbox;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/DatePicker\");","/**\n * Copyright 2026 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 { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { useField } from \"formik\";\n\nconst MuiFormikDatepicker = ({\n name,\n label,\n required,\n disabled = false,\n ...props\n}) => {\n const [field, meta, helpers] = useField(name);\n const requiredLabel = `${label} *`;\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DatePicker\n value={field.value}\n onChange={helpers.setValue}\n slotProps={{\n textField: {\n name,\n label: required ? requiredLabel : label,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n fullWidth: true,\n disabled\n },\n day: {\n sx: {\n fontSize: \"1.2rem\",\n fontWeight: 600\n }\n },\n layout: {\n sx: {\n \"& .MuiDayCalendar-weekDayLabel\": {\n fontSize: \"1rem\"\n }\n }\n }\n }}\n margin=\"normal\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikDatepicker.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool\n};\n\nexport default MuiFormikDatepicker;","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport { InputAdornment } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikDiscountField = ({\n name,\n label,\n discountType,\n inCents = false,\n disabled = false,\n ...props\n}) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const emptyValue = meta.initialValue === null ? null : 0;\n\n const getDisplayValue = () => {\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n return inCents ? field.value / ONE_HUNDRED : field.value;\n };\n\n const adornment =\n discountType === DISCOUNT_TYPES.RATE\n ? {\n endAdornment: <InputAdornment position=\"end\">%</InputAdornment>\n }\n : {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n };\n\n const inputProps =\n discountType === DISCOUNT_TYPES.RATE\n ? { max: 100, inputMode: \"numeric\", step: 1 }\n : { inputMode: \"decimal\", step: 1 };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newDiscount = inCents ? numericValue * ONE_HUNDRED : numericValue;\n\n helpers.setValue(newDiscount);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n value={getDisplayValue()}\n onChange={handleChange}\n type=\"number\"\n disabled={disabled}\n slotProps={{\n input: {\n ...adornment\n },\n htmlInput: {\n min: 0,\n ...inputProps\n }\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikDiscountField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikDiscountField;\n","/**\n * Copyright 2026 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 {\n Checkbox,\n Divider,\n FormControl,\n ListItemText,\n MenuItem,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownCheckbox = ({ name, options, ...rest }) => {\n const [field, meta, helpers] = useField(name);\n const allSelected = options.every(({ value }) =>\n field.value?.includes(value)\n );\n\n const handleChange = (event) => {\n const { value } = event.target;\n\n // If \"all\" was clicked\n if (value.includes(\"all\")) {\n if (allSelected) {\n helpers.setValue([]);\n } else {\n helpers.setValue(options.map((opt) => opt.value));\n }\n } else {\n helpers.setValue(value);\n }\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n multiple\n value={field.value || []}\n onChange={handleChange}\n onBlur={field.onBlur}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected?.length) {\n return rest.placeholder || \"\";\n }\n if (allSelected) {\n return T.translate(\"general.all\");\n }\n const selectedNames = options\n .filter(({ value }) => selected?.includes(value))\n .map(({ label }) => label);\n return selectedNames.join(\", \");\n }}\n >\n <MenuItem key=\"all\" value=\"all\">\n <Checkbox checked={allSelected} />\n <ListItemText primary={T.translate(\"general.all\")} />\n </MenuItem>\n <Divider />\n {options.map(({ label, value }) => (\n <MenuItem key={`ckbx-ddl-${value}`} value={value}>\n <Checkbox checked={field.value?.includes(value)} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownCheckbox;\n","/**\n * Copyright 2026 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 {\n FormControl,\n ListItemText,\n MenuItem,\n Radio,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownRadio = ({ name, options, placeholder, ...rest }) => {\n const finalPlaceholder =\n placeholder || T.translate(\"general.select_an_option\");\n const [field, meta, helpers] = useField(name);\n\n const handleChange = (event) => {\n helpers.setValue(event.target.value);\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n value={field.value || \"\"}\n onChange={handleChange}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected) {\n return <em>{finalPlaceholder}</em>;\n }\n const selectedOption = options.find(\n ({ value }) => value === selected\n );\n return selectedOption ? selectedOption.label : \"\";\n }}\n >\n {options.map(({ label, value }) => (\n <MenuItem key={`radio-ddl-${value}`} value={value}>\n <Radio checked={field.value === value} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownRadio;\n","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport { InputAdornment } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport { BYTES_PER_MB } from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\", \".\", \",\"];\n\nconst bytesToMb = (bytes) => Math.floor(bytes / BYTES_PER_MB);\n\nconst MuiFormikFilesizeField = ({ name, label, ...props }) => {\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n\n const emptyValue = meta.initialValue === null ? null : 0;\n\n const getDisplayValue = () => {\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n return bytesToMb(field.value);\n };\n\n const handleChange = (e) => {\n const mbValue = e.target.value;\n\n if (mbValue === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const bytes = Number(mbValue) * BYTES_PER_MB;\n helpers.setValue(bytes);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n // Block \"0\" as first character — only 1-9 are valid leading digits.\n // When value is empty or already \"0\", prevent any \"0\" keypress.\n if (e.key === \"0\" && (e.target.value === \"\" || e.target.value === \"0\")) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n type=\"number\"\n value={getDisplayValue()}\n onChange={handleChange}\n slotProps={{\n input: {\n endAdornment: <InputAdornment position=\"end\">MB</InputAdornment>\n },\n htmlInput: {\n min: 0,\n inputMode: \"numeric\",\n step: 1\n }\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikFilesizeField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikFilesizeField;\n","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport {InputAdornment} from \"@mui/material\";\nimport {useField} from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport {DECIMAL_DIGITS, ONE_HUNDRED} from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikPriceField = ({\n name,\n label,\n inCents = false,\n inputProps = {step: 0.01},\n ...props\n }) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [focusedValue, setFocusedValue] = useState(\"\");\n\n // emptyValue is always 0 when editing this field, null is handled by N/A checkbox\n const emptyValue = 0;\n\n const getRawString = () => {\n if (cleared || field.value == null) return \"\";\n if (field.value === 0) return \"0\";\n const raw = inCents ? field.value / ONE_HUNDRED : field.value;\n return String(Number(raw.toFixed(DECIMAL_DIGITS)));\n };\n\n const getDisplayValue = () => {\n if (isFocused) return focusedValue;\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n const str = getRawString();\n const dotIdx = str.indexOf(\".\");\n if (dotIdx === -1) return `${str}.00`;\n if (str.length - dotIdx - 1 === 1) return `${str}0`;\n return str;\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n setFocusedValue(getRawString());\n };\n\n const handleBlur = (e) => {\n setIsFocused(false);\n if (props.onBlur) props.onBlur(e);\n };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n setFocusedValue(newVal);\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newPrice = inCents\n ? Math.round(numericValue * ONE_HUNDRED)\n : numericValue;\n\n helpers.setValue(newPrice);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n type=\"number\"\n value={getDisplayValue()}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n slotProps={{\n input: {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n }\n }}\n inputProps={{\n min: 0,\n inputMode: \"decimal\",\n ...inputProps\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikPriceField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikPriceField;\n","/**\n * Copyright 2026 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 MuiFormikTextField from \"./mui-formik-textfield\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikQuantityField = ({ ...props }) => (\n <MuiFormikTextField\n type=\"number\"\n onKeyDown={(e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.nativeEvent.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n }\n }}\n inputProps={{\n min: 0,\n inputMode: \"numeric\"\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n);\n\nMuiFormikQuantityField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikQuantityField;\n","/**\n * Copyright 2026 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 {\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikRadioGroup = ({\n name,\n label,\n marginWrapper = \"normal\",\n options,\n ...props\n}) => {\n const [field, meta] = useField({ name });\n\n return (\n <FormControl\n fullWidth\n margin={marginWrapper}\n error={meta.touched && Boolean(meta.error)}\n >\n {label && <FormLabel id=\"radio-group-label\">{label}</FormLabel>}\n <RadioGroup\n aria-labelledby=\"radio-group-label\"\n defaultValue={field.value}\n name={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {options.map((op) => (\n <FormControlLabel\n key={`radio-box-${op.value}`}\n value={op.value}\n control={\n <Radio\n sx={{\n \"& .MuiSvgIcon-root\": {\n fontSize: 24\n }\n }}\n />\n }\n label={op.label}\n />\n ))}\n </RadioGroup>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikRadioGroup.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n marginWrapper: PropTypes.string,\n options: PropTypes.array.isRequired\n};\n\nexport default MuiFormikRadioGroup;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport {\n MenuItem,\n Checkbox,\n ListItemText,\n CircularProgress,\n Select,\n OutlinedInput,\n Box,\n ListSubheader,\n Divider\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport PropTypes from \"prop-types\";\nimport { useField } from \"formik\";\n\nconst getCustomIcon = (loading) => () =>\n (\n <Box sx={{ display: \"flex\", alignItems: \"center\", pr: 1 }}>\n {loading && <CircularProgress size={16} sx={{ mr: 1 }} />}\n <ExpandMoreIcon />\n </Box>\n );\n\nconst MuiFormikSelectGroup = ({\n name,\n queryFunction,\n queryParams = [],\n placeholder = \"Select options\",\n showSelectAll = false,\n selectAllLabel = \"Select All\",\n getOptionLabel = (item) => item.name,\n getOptionValue = (item) => item.id,\n noOptionsLabel = \"No items\",\n getGroupId = null,\n getGroupLabel = null,\n disabled = false\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [groupedOptions, setGroupedOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const isAllSelected =\n Array.isArray(field.value) && field.value.includes(\"all\");\n const value = isAllSelected ? options : field.value || [];\n const error = meta.touched && meta.error;\n\n const fetchOptions = async () => {\n setLoading(true);\n try {\n await queryFunction(...queryParams, (results) => {\n setOptions(results);\n\n if (getGroupId && getGroupLabel) {\n // using map no avoid duplicate groups\n const groupsMap = new Map();\n\n results.forEach((item) => {\n const groupId = getGroupId(item);\n const groupLabel = getGroupLabel(item);\n\n if (!groupsMap.has(groupId)) {\n groupsMap.set(groupId, {\n id: groupId,\n label: groupLabel,\n options: []\n });\n }\n\n groupsMap.get(groupId).options.push(item);\n });\n\n setGroupedOptions(Array.from(groupsMap.values()));\n } else {\n setGroupedOptions([\n {\n id: \"default\",\n label: null,\n options: results\n }\n ]);\n }\n setLoading(false);\n });\n } catch (error) {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchOptions();\n }, []);\n\n const handleChange = (event) => {\n const selectedValues = event.target.value;\n\n if (selectedValues.includes(\"selectAll\")) {\n const currentValues = Array.isArray(value)\n ? value.map(getOptionValue)\n : [];\n\n if (isAllSelected || currentValues.length === options.length) {\n helpers.setValue([]);\n } else {\n helpers.setValue([\"all\"]);\n }\n return;\n }\n\n const filteredValues = selectedValues.filter((val) => val !== \"selectAll\");\n\n const selectedItems = filteredValues\n .map((val) => {\n const found = options.find((item) => getOptionValue(item) === val);\n return found;\n })\n .filter(Boolean);\n\n helpers.setValue(selectedItems);\n };\n\n const selectedValues = isAllSelected\n ? options.map(getOptionValue)\n : Array.isArray(value)\n ? value.map((item) => getOptionValue(item))\n : [];\n\n const renderGroupedOptions = () =>\n groupedOptions\n .map((group, groupIndex) => [\n group.label && (\n <ListSubheader\n key={`header-${group.id}`}\n sx={{\n fontWeight: 400,\n fontSize: \"14px\",\n color: \"#00000061\",\n lineHeight: \"24px\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.17px\",\n pointerEvents: \"none\"\n }}\n >\n {group.label}\n </ListSubheader>\n ),\n ...group.options.map((option) => {\n const optionValue = getOptionValue(option);\n const isChecked = selectedValues.includes(optionValue);\n\n return (\n <MenuItem\n key={optionValue}\n value={optionValue}\n sx={{ pl: 2 }}\n onClick={() => {\n let newValues;\n if (isAllSelected) {\n newValues = options\n .filter((opt) => getOptionValue(opt) !== optionValue)\n .map(getOptionValue);\n } else {\n newValues = isChecked\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n }\n handleChange({ target: { value: newValues } });\n }}\n >\n <Checkbox\n checked={isChecked}\n sx={{\n p: 1,\n \"& svg\": {\n fontSize: 24\n }\n }}\n />\n <ListItemText\n primary={getOptionLabel(option)}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"150%\",\n letterSpacing: \"0.15px\"\n }\n }\n }}\n />\n </MenuItem>\n );\n }),\n group.label && groupIndex < groupedOptions.length - 1 && (\n <Divider key={`divider-${group.id}`} />\n )\n ])\n .flat()\n .filter(Boolean);\n\n const renderMenuContent = () => {\n if (loading) {\n return (\n <MenuItem disabled>\n <CircularProgress size={20} />\n </MenuItem>\n );\n }\n\n if (options.length === 0) {\n return (\n <MenuItem disabled>\n <ListItemText\n primary={noOptionsLabel}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\",\n color: \"#00000061\"\n }\n }\n }}\n />\n </MenuItem>\n );\n }\n\n return (\n <>\n {showSelectAll && (\n <>\n <MenuItem\n value=\"selectAll\"\n sx={{\n backgroundColor: \"#fafafa\",\n \"&:hover\": {\n backgroundColor: \"#f0f0f0\"\n }\n }}\n onClick={() => {\n // custom event value to select all\n handleChange({ target: { value: [\"selectAll\"] } });\n }}\n >\n <Checkbox\n checked={isAllSelected}\n indeterminate={selectedValues.length > 0 && !isAllSelected}\n sx={{\n p: 1,\n \"& svg\": {\n fontSize: 24\n }\n }}\n />\n <ListItemText\n primary={selectAllLabel}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\"\n }\n }\n }}\n />\n </MenuItem>\n <Divider />\n </>\n )}\n {renderGroupedOptions()}\n </>\n );\n };\n\n const IconWithLoading = useMemo(() => getCustomIcon(loading), [loading]);\n\n return (\n <>\n <Select\n multiple\n fullWidth\n value={selectedValues}\n onChange={handleChange}\n input={<OutlinedInput />}\n displayEmpty\n disabled={disabled || loading}\n renderValue={(selected) => {\n if (!selected || selected.length === 0) {\n return (\n <span style={{ color: \"#aaa\" }}>\n {loading ? \"Loading...\" : placeholder}\n </span>\n );\n }\n return selected\n .map((val) => {\n const item = options.find((opt) => getOptionValue(opt) === val);\n return item ? getOptionLabel(item) : val;\n })\n .join(\", \");\n }}\n error={Boolean(error)}\n IconComponent={IconWithLoading}\n >\n {renderMenuContent()}\n </Select>\n {error && (\n <div\n style={{\n color: \"#d32f2f\",\n fontSize: \"0.75rem\",\n marginTop: \"3px\"\n }}\n >\n {error}\n </div>\n )}\n </>\n );\n};\n\nMuiFormikSelectGroup.propTypes = {\n name: PropTypes.string.isRequired,\n queryFunction: PropTypes.func.isRequired,\n queryParams: PropTypes.array,\n placeholder: PropTypes.string,\n showSelectAll: PropTypes.bool,\n selectAllLabel: PropTypes.string,\n getOptionLabel: PropTypes.func,\n getOptionValue: PropTypes.func,\n getGroupId: PropTypes.func,\n getGroupLabel: PropTypes.func,\n noOptionsLabel: PropTypes.string,\n disabled: PropTypes.bool\n};\n\nexport default MuiFormikSelectGroup;\n","/**\n * Copyright 2026 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 {\n Select,\n FormHelperText,\n FormControl,\n InputAdornment,\n IconButton,\n InputLabel\n} from \"@mui/material\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSelect = ({\n name,\n label,\n placeholder,\n children,\n isClearable,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const handleClear = (ev) => {\n ev.stopPropagation();\n helpers.setValue(\"\");\n };\n\n const hasValue = field?.value && field.value !== \"\";\n const shouldShrink = hasValue || Boolean(placeholder);\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n {label && (\n <InputLabel htmlFor={name} id={`${name}-label`} shrink={shouldShrink}>\n {label}\n </InputLabel>\n )}\n <Select\n name={name}\n id={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n labelId={`${name}-label`}\n label={label}\n notched={shouldShrink}\n displayEmpty\n renderValue={(selected) => {\n if (!selected || selected === \"\") {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return selected;\n }}\n endAdornment={\n isClearable && field.value ? (\n <InputAdornment position=\"end\" sx={{ mr: 2 }}>\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {children}\n </Select>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSelect.propTypes = {\n name: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n placeholder: PropTypes.string,\n isClearable: PropTypes.bool\n};\n\nexport default MuiFormikSelect;\n","/**\n * Copyright 2026 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 { useField } from \"formik\";\nimport SummitAddonSelect from \"../summit-addon-select\";\n\nconst MuiFormikSummitAddonSelect = ({\n name,\n summitId,\n placeholder = \"Select...\",\n inputProps = {}\n}) => {\n const [field, meta, helpers] = useField(name);\n\n return (\n <SummitAddonSelect\n value={field.value || \"\"}\n summitId={summitId}\n onChange={helpers.setValue}\n placeholder={placeholder}\n inputProps={{\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n ...inputProps\n }}\n />\n );\n};\n\nMuiFormikSummitAddonSelect.propTypes = {\n name: PropTypes.string.isRequired,\n summitId: PropTypes.number.isRequired,\n placeholder: PropTypes.string,\n inputProps: PropTypes.object\n};\n\nexport default MuiFormikSummitAddonSelect;\n","/**\n * Copyright 2026 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 {\n FormControl,\n FormControlLabel,\n FormHelperText,\n Switch\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSwitch = ({ name, label, ...props }) => {\n const [field, meta] = useField({ name });\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Switch\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSwitch.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikSwitch;\n","/**\n * Copyright 2026 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 { Box, TextField, Typography } from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikTextField = ({\n name,\n label,\n maxLength,\n required = false,\n ...props\n}) => {\n const [field, meta] = useField(name);\n const currentLength = field.value?.length || 0;\n\n let finalLabel = \"\";\n\n if (label) {\n finalLabel = required ? `${label} *` : label;\n }\n\n return (\n <Box>\n <TextField\n name={name}\n label={finalLabel}\n {...field}\n onBlur={field.onBlur}\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n helperText={meta.touched && meta.error}\n slotProps={{\n htmlInput: {\n maxLength\n }\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n {maxLength && (\n <Typography sx={{ fontSize: \"1.2rem\", color: \"#00000099\", pl: 2 }}>\n {`${maxLength - currentLength} characters left`}\n </Typography>\n )}\n </Box>\n );\n};\n\nMuiFormikTextField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n maxLength: PropTypes.number,\n required: PropTypes.bool\n};\n\nexport default MuiFormikTextField;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/TimePicker\");","/**\n * Copyright 2026 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 { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { TimePicker } from \"@mui/x-date-pickers/TimePicker\";\n\nimport { useField } from \"formik\";\n\nconst MuiFormikTimepicker = ({\n name,\n minTime,\n maxTime,\n timeZone,\n disabled = false\n}) => {\n const [field, meta, helpers] = useField(name);\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <TimePicker\n value={field.value}\n onChange={helpers.setValue}\n minTime={minTime}\n maxTime={maxTime}\n timezone={timeZone}\n label={timeZone}\n views={[\"hours\", \"minutes\"]}\n slotProps={{\n textField: {\n name,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n size: \"small\",\n fullWidth: true,\n disabled,\n sx: {\n \"& .MuiPickersSectionList-root\": {\n width: \"100%\"\n },\n \"& .MuiFormHelperText-root\": {\n marginLeft: \"4px\",\n marginRight: \"4px\"\n }\n }\n }\n }}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikTimepicker.propTypes = {\n name: PropTypes.string.isRequired\n};\n\nexport default MuiFormikTimepicker;\n","/**\n * Copyright 2026 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 { FormHelperText } from \"@mui/material\";\nimport UploadInputV2 from \"../../inputs/upload-input-v2\";\nimport { useField } from \"formik\";\nimport {\n ALLOWED_INVENTORY_IMAGE_FORMATS,\n MAX_INVENTORY_IMAGE_UPLOAD_SIZE,\n MAX_INVENTORY_IMAGES_UPLOAD_QTY\n} from \"../../../utils/constants\";\n\nconst MuiFormikUpload = ({\n id,\n name,\n onDelete,\n maxFiles = MAX_INVENTORY_IMAGES_UPLOAD_QTY\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const mediaType = {\n max_size: MAX_INVENTORY_IMAGE_UPLOAD_SIZE,\n max_uploads_qty: maxFiles,\n type: {\n allowed_extensions: ALLOWED_INVENTORY_IMAGE_FORMATS\n }\n };\n\n const getInputValue = () =>\n field.value?.length > 0\n ? field.value.map((img) => ({\n ...img,\n filename:\n img.file_name ?? img.filename ?? img.file_path ?? img.file_url\n }))\n : [];\n\n const buildFileObject = (response) => {\n const file = {};\n if (response.id !== undefined) file.id = response.id;\n if (response.name) file.file_name = response.name;\n if (response.md5) file.md5 = response.md5;\n if (response.mime_type) file.mime_type = response.mime_type;\n if (response.source_bucket) file.bucket = response.source_bucket;\n if (response.size) file.size = response.size;\n if (response.path && response.name)\n file.file_path = `${response.path}${response.name}`;\n return file;\n };\n\n const handleUploadComplete = (response) => {\n if (response) {\n const image = buildFileObject(response);\n helpers.setValue([...(field.value || []), image]);\n helpers.setTouched(true);\n }\n };\n\n const handleRemove = (imageFile) => {\n const updated = (field.value || []).filter(\n (i) => i.filename !== imageFile.name\n );\n helpers.setValue(updated);\n if (onDelete) {\n onDelete(imageFile.id);\n }\n };\n\n const canAddMore = () => (field.value?.length || 0) < maxFiles;\n\n return (\n <>\n {meta.touched && meta.error && (\n <FormHelperText error>{meta.error}</FormHelperText>\n )}\n <UploadInputV2\n id={id}\n name={name}\n onUploadComplete={handleUploadComplete}\n value={getInputValue()}\n mediaType={mediaType}\n onRemove={handleRemove}\n postUrl={`${window.FILE_UPLOAD_API_BASE_URL}/api/v1/files/upload`}\n djsConfig={{ withCredentials: true }}\n maxFiles={maxFiles}\n canAdd={canAddMore()}\n parallelChunkUploads\n />\n </>\n );\n};\n\nMuiFormikUpload.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n onDelete: PropTypes.func,\n maxFiles: PropTypes.number\n};\n\nexport default MuiFormikUpload;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { useField } from \"formik\";\nimport { querySponsorsV2 } from \"../../../utils/query-actions\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst MuiSponsorInput = ({\n id,\n name,\n placeholder,\n plainValue,\n isMulti = false,\n summitId,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const { value } = field;\n const error = meta.touched && meta.error;\n\n const fetchOptions = async (input) => {\n if (!input) {\n setOptions([]);\n return;\n }\n\n setLoading(true);\n\n const normalize = (results) =>\n results.map((r) => ({\n value: r.id.toString(),\n label: r.name\n }));\n\n await querySponsorsV2(input, summitId, (results) => {\n setOptions(normalize(results));\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (inputValue) {\n const delayDebounce = setTimeout(() => {\n fetchOptions(inputValue);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n }, [inputValue]);\n\n const selectedValue = useMemo(() => {\n if (!value) return isMulti ? [] : null;\n\n if (isMulti) {\n return value.map((v) =>\n plainValue\n ? { value: v, label: v }\n : { value: v.id?.toString(), label: v.name }\n );\n }\n return plainValue\n ? { value, label: value }\n : { value: value.id?.toString(), label: value.name };\n }, [value, plainValue, isMulti]);\n\n const handleChange = (_, newValue) => {\n let theValue;\n\n if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {\n theValue = isMulti ? [] : plainValue ? \"\" : { id: \"\", name: \"\" };\n } else if (isMulti) {\n theValue = plainValue\n ? newValue.map((v) => v.label)\n : newValue.map((v) => ({\n id: parseInt(v.value),\n name: v.label\n }));\n } else {\n theValue = plainValue\n ? newValue.label\n : { id: parseInt(newValue.value), name: newValue.label };\n }\n\n helpers.setValue(theValue);\n };\n\n const errorMessage =\n error && (typeof error === \"string\" ? error : error[Object.keys(error)[0]]);\n\n return (\n <Autocomplete\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n options={options}\n value={selectedValue}\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(_, newInputValue) => {\n setInputValue(newInputValue);\n }}\n multiple={isMulti}\n onChange={handleChange}\n loading={loading}\n fullWidth\n popupIcon={<ExpandMoreIcon />}\n renderInput={(params) => (\n <TextField\n {...params}\n name={field.name}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={errorMessage || \"\"}\n slotProps={{\n ...params.InputProps,\n inputLabel: { shrink: false },\n sx: {\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n },\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n }}\n />\n )}\n {...rest}\n />\n );\n};\n\nMuiSponsorInput.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool,\n isMulti: PropTypes.bool\n};\n\nexport default MuiSponsorInput;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { useField } from \"formik\";\nimport { querySponsorships } from \"../../../utils/query-actions\";\nimport { DEBOUNCE_WAIT_250 } from \"../../../utils/constants\";\n\nconst SponsorshipTypeInputMUI = ({\n id,\n name,\n placeholder,\n plainValue,\n isMulti = false,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const { value } = field;\n const error = meta.touched && meta.error;\n\n const errorMessage =\n typeof error === \"object\" ? error?.id || error?.name || \"\" : error;\n\n const fetchOptions = async (input) => {\n if (!input) {\n setOptions([]);\n return;\n }\n\n setLoading(true);\n\n const normalize = (results) =>\n results.map((r) => ({\n value: r.id.toString(),\n label: r.name\n }));\n\n await querySponsorships(input, (results) => {\n setOptions(normalize(results));\n setLoading(false);\n });\n };\n\n useEffect(() => {\n if (inputValue) {\n const delayDebounce = setTimeout(() => {\n fetchOptions(inputValue);\n }, DEBOUNCE_WAIT_250);\n return () => clearTimeout(delayDebounce);\n }\n }, [inputValue]);\n\n const selectedValue = useMemo(() => {\n if (!value) return isMulti ? [] : null;\n\n if (isMulti) {\n return value.map((v) =>\n plainValue\n ? { value: v, label: v }\n : { value: v.id?.toString(), label: v.name }\n );\n }\n return plainValue\n ? { value, label: value }\n : { value: value.id?.toString(), label: value.name };\n }, [value, plainValue, isMulti]);\n\n const handleChange = (_, newValue) => {\n let theValue;\n\n if (!newValue || (Array.isArray(newValue) && newValue.length === 0)) {\n theValue = isMulti ? [] : plainValue ? \"\" : { id: \"\", name: \"\" };\n } else if (isMulti) {\n theValue = plainValue\n ? newValue.map((v) => v.label)\n : newValue.map((v) => ({\n id: parseInt(v.value),\n name: v.label\n }));\n } else {\n theValue = plainValue\n ? newValue.label\n : { id: parseInt(newValue.value), name: newValue.label };\n }\n\n helpers.setValue(theValue);\n };\n\n return (\n <Autocomplete\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n options={options}\n value={selectedValue}\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n onInputChange={(_, newInputValue) => {\n setInputValue(newInputValue);\n }}\n multiple={isMulti}\n onChange={handleChange}\n loading={loading}\n fullWidth\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={placeholder}\n variant=\"outlined\"\n error={Boolean(error)}\n helperText={errorMessage || \"\"}\n slotProps={{\n ...params.InputProps,\n inputLabel: { shrink: false },\n sx: {\n \"& input::placeholder\": {\n color: \"#00000061\",\n opacity: 1\n }\n },\n endAdornment: (\n <>\n {loading && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps?.endAdornment}\n </>\n )\n }}\n />\n )}\n {...rest}\n />\n );\n};\n\nSponsorshipTypeInputMUI.propTypes = {\n id: PropTypes.string,\n name: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool,\n isMulti: PropTypes.bool\n};\n\nexport default SponsorshipTypeInputMUI;\n","/**\n * Copyright 2026 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, useMemo } from \"react\";\nimport {\n MenuItem,\n Checkbox,\n ListItemText,\n CircularProgress,\n Select,\n OutlinedInput,\n Box\n} from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport PropTypes from \"prop-types\";\nimport { useField } from \"formik\";\nimport { querySponsorshipsBySummit } from \"../../../utils/query-actions\";\n\nconst getCustomIcon = (loading) => {\n const Icon = () => (\n <Box sx={{ display: \"flex\", alignItems: \"center\", pr: 1 }}>\n {loading && <CircularProgress size={16} sx={{ mr: 1 }} />}\n <ExpandMoreIcon />\n </Box>\n );\n return Icon;\n};\n\nconst SponsorshipsBySummitSelectMUI = ({\n name,\n summitId,\n placeholder,\n plainValue,\n hiddenOptions = []\n}) => {\n const [field, meta, helpers] = useField(name);\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const value = field.value || [];\n const error = meta.touched && meta.error;\n\n const fetchOptions = async () => {\n setLoading(true);\n await querySponsorshipsBySummit(\"\", summitId, (results) => {\n const normalized = results\n .filter((r) => !hiddenOptions.includes(r.id))\n .map((r) => ({\n value: r.id.toString(),\n label: r.type.name\n }));\n setOptions(normalized);\n setLoading(false);\n });\n };\n\n useEffect(() => {\n fetchOptions();\n }, []);\n\n const handleChange = (event) => {\n const selected = event.target.value;\n const selectedItems = plainValue\n ? selected\n : selected.map((id) => {\n const match = options.find((o) => o.value === id);\n return { id: parseInt(match.value), name: match.label };\n });\n\n helpers.setValue(selectedItems);\n };\n\n const selectedValues = plainValue\n ? value\n : value.map((v) => v.id?.toString());\n\n const IconWithLoading = useMemo(() => getCustomIcon(loading), [loading]);\n\n return (\n <>\n <Select\n multiple\n fullWidth\n value={selectedValues}\n onChange={handleChange}\n input={<OutlinedInput />}\n displayEmpty\n renderValue={(selected) => {\n if (selected.length === 0) {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return options\n .filter((opt) => selected.includes(opt.value))\n .map((opt) => opt.label)\n .join(\", \");\n }}\n error={Boolean(error)}\n IconComponent={IconWithLoading}\n >\n {loading ? (\n <MenuItem disabled>\n <CircularProgress size={20} />\n </MenuItem>\n ) : (\n options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n <Checkbox\n checked={selectedValues.includes(option.value)}\n sx={{\n p: 1,\n \"& svg\": {\n fontSize: 24\n }\n }}\n />\n <ListItemText\n primary={option.label}\n slotProps={{\n primary: {\n sx: {\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"150%\",\n letterSpacing: \"0.15px\"\n }\n }\n }}\n />\n </MenuItem>\n ))\n )}\n </Select>\n {error && (\n <div\n style={{\n color: \"#d32f2f\",\n fontSize: \"0.75rem\",\n marginTop: \"3px\"\n }}\n >\n {error}\n </div>\n )}\n </>\n );\n};\n\nSponsorshipsBySummitSelectMUI.propTypes = {\n name: PropTypes.string.isRequired,\n summitId: PropTypes.number.isRequired,\n placeholder: PropTypes.string,\n plainValue: PropTypes.bool\n};\n\nexport default SponsorshipsBySummitSelectMUI;\n","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"sYyWOBs7DxfIdU_ztAqL\"};","/**\n * Copyright 2026 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 * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { visuallyHidden } from \"@mui/utils\";\nimport Box from \"@mui/material/Box\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport Paper from \"@mui/material/Paper\";\nimport TableRow from \"@mui/material/TableRow\";\nimport styles from \"./styles.module.less\";\nimport { MILLISECONDS_TO_SECONDS } from \"../../../utils/constants\";\n\nconst MuiInfiniteTable = ({\n boxHeight = \"400px\",\n columns = [],\n data = [],\n loadMoreData,\n onRowEdit,\n onSort,\n options = { sortCol: \"\", sortDir: \"\" }\n}) => {\n const { sortCol, sortDir } = options;\n\n const isLoadingRef = React.useRef(false);\n\n const handleScroll = (event) => {\n if (isLoadingRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = event.target;\n // eslint-disable-next-line no-magic-numbers\n if (scrollTop + clientHeight >= scrollHeight - 20) {\n isLoadingRef.current = true;\n loadMoreData();\n\n setTimeout(() => {\n isLoadingRef.current = false;\n }, MILLISECONDS_TO_SECONDS);\n }\n };\n\n return (\n <Box\n sx={{ width: \"100%\", height: boxHeight, overflow: \"auto\" }}\n onScroll={handleScroll}\n >\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === 1\n ? \"asc\"\n : \"desc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === \"-1\"\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row, rowIndex) => (\n <TableRow key={row.id || rowIndex}>\n {columns.map((col) => {\n const cellContent = col.render\n ? col.render(row, { onRowEdit })\n : row[col.columnKey];\n\n const cellClassName = col.className\n ? styles[col.className] || col.className\n : \"\";\n\n return (\n <TableCell\n key={col.columnKey}\n align={col.align ?? \"left\"}\n className={cellClassName}\n >\n {cellContent}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n\n {/* No items */}\n {data.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} align=\"center\">\n {T.translate(\"mui_table.no_data\")}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Paper>\n </Box>\n );\n};\n\nMuiInfiniteTable.propTypes = {\n boxHeight: PropTypes.string,\n columns: PropTypes.array,\n data: PropTypes.array,\n loadMoreData: PropTypes.func,\n onRowEdit: PropTypes.func,\n onSort: PropTypes.func,\n options: PropTypes.object\n};\n\nexport default MuiInfiniteTable;\n","/**\n * Copyright 2026 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 PropTypes from \"prop-types\";\nimport { Badge, Button, Menu, MenuItem } from \"@mui/material\";\n\nconst MenuButton = ({\n buttonId,\n menuId,\n menuItems,\n hasBadge,\n children,\n ...rest\n}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedItems, setSelectedItems] = useState([]);\n\n const handleButtonClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleOptionClick = (item) => {\n if (hasBadge) {\n const newOptions = selectedItems.includes(item.label)\n ? selectedItems.filter((key) => key !== item.label)\n : [...selectedItems, item.label];\n item.onClick();\n setSelectedItems(newOptions);\n }\n item.onClick();\n handleClose();\n };\n\n const badgeCount = hasBadge ? selectedItems.length : undefined;\n\n return (\n <>\n <Button\n id={buttonId}\n aria-controls={anchorEl ? menuId : undefined}\n aria-haspopup=\"true\"\n aria-expanded={anchorEl ? \"true\" : undefined}\n onClick={handleButtonClick}\n sx={{ color: anchorEl ? \"--variant-textColor\" : \"#000\" }}\n {...rest}\n >\n {hasBadge ? (\n <Badge\n badgeContent={badgeCount}\n sx={{\n \"& .MuiBadge-badge\": {\n backgroundColor: \"black\",\n color: \"white\",\n right: \"65%\"\n }\n }}\n >\n {children}\n </Badge>\n ) : (\n children\n )}\n </Button>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={handleClose}\n MenuListProps={{\n \"aria-labelledby\": buttonId\n }}\n slotProps={{\n paper: {\n sx: { minWidth: 220 }\n }\n }}\n >\n {menuItems.map((item) => {\n const isSelected = hasBadge && selectedItems.includes(item.label);\n return (\n <MenuItem\n key={`${item.label}`}\n onClick={() => handleOptionClick(item)}\n sx={{\n borderBottom: 1,\n borderColor: \"divider\",\n \"&:last-of-type\": { borderBottom: 0 },\n color: isSelected ? \"--variant-textColor\" : \"#000\"\n }}\n >\n {item.label}\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n};\n\nMenuButton.propTypes = {\n buttonId: PropTypes.string,\n menuId: PropTypes.string,\n menuItems: PropTypes.array.isRequired,\n hasBadge: PropTypes.bool\n};\n\nexport default MenuButton;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Search\");","/**\n * Copyright 2026 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, useRef } from \"react\";\nimport { TextField, IconButton, InputAdornment } from \"@mui/material\";\nimport SearchIcon from \"@mui/icons-material/Search\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { debounce } from \"lodash\";\nimport { DEBOUNCE_WAIT } from \"../../utils/constants\";\n\nconst SearchInput = ({ term, onSearch, placeholder = \"Search...\", debounced }) => {\n const [searchTerm, setSearchTerm] = useState(term);\n\n const onSearchRef = useRef(onSearch);\n useEffect(() => {\n onSearchRef.current = onSearch;\n }, [onSearch]);\n\n const onSearchDebouncedRef = useRef(\n debounce((value) => onSearchRef.current(value), DEBOUNCE_WAIT)\n );\n\n useEffect(() => {\n setSearchTerm(term || \"\");\n }, [term]);\n\n useEffect(() => () => onSearchDebouncedRef.current?.cancel(), []);\n\n const handleClear = () => {\n onSearchDebouncedRef.current?.cancel();\n setSearchTerm(\"\");\n onSearch(\"\");\n };\n\n const handleChange = (value) => {\n setSearchTerm(value);\n if (debounced) onSearchDebouncedRef.current?.(value);\n };\n\n const handleKeyDown = (ev) => {\n if (!debounced && ev.key === \"Enter\") {\n onSearch(searchTerm);\n }\n };\n\n return (\n <TextField\n variant=\"outlined\"\n value={searchTerm}\n placeholder={placeholder}\n slotProps={{\n input: { \n startAdornment: debounced && (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ color: \"#0000008F\" }} />\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n {searchTerm ? (\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" sx={{ color: \"#0000008F\" }} />\n </IconButton>\n ) : \n (\n !debounced && <SearchIcon\n sx={{ mr: 1, color: \"#0000008F\", position: \"absolute\", right: 0 }}\n />\n )}\n </InputAdornment>\n )\n }\n }}\n onChange={(ev) => handleChange(ev.target.value)}\n onKeyDown={handleKeyDown}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n height: \"36px\"\n }\n }}\n />\n );\n};\n\nexport default SearchInput;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","/**\n * Copyright 2026 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 ReactDOM from \"react-dom\";\nimport React from \"react\";\nimport ConfirmDialog from \"./confirm-dialog\";\n\n// Lazy-loaded createRoot for React 18+.\n// Cached after first call so the dynamic import only runs once.\nlet createRootFn = undefined; // undefined = not yet checked\n\nasync function getCreateRoot() {\n if (createRootFn !== undefined) return createRootFn;\n try {\n // webpackIgnore prevents webpack from resolving this at build time,\n // so consuming projects on React 16/17 won't get a \"Module not found\" error.\n const mod = await import(/* webpackIgnore: true */ \"react-dom/client\");\n createRootFn = mod.createRoot || null;\n } catch (_) {\n createRootFn = null;\n }\n return createRootFn;\n}\n\nconst showConfirmDialog = ({\n title,\n text,\n iconType = \"\",\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n confirmButtonColor = \"primary\",\n cancelButtonColor = \"primary\"\n}) =>\n new Promise((resolve) => {\n const container = document.createElement(\"div\");\n document.body.appendChild(container);\n\n let root = null;\n\n const close = (answer) => {\n if (root) {\n root.unmount();\n } else {\n ReactDOM.unmountComponentAtNode(container);\n }\n container.remove();\n resolve(answer);\n };\n\n const handleConfirm = () => close(true);\n const handleCancel = () => close(false);\n\n const element = (\n <ConfirmDialog\n open\n title={title}\n text={text}\n iconType={iconType}\n confirmButtonText={confirmButtonText}\n cancelButtonText={cancelButtonText}\n confirmButtonColor={confirmButtonColor}\n cancelButtonColor={cancelButtonColor}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n );\n\n getCreateRoot().then((createRoot) => {\n if (createRoot) {\n root = createRoot(container);\n root.render(element);\n } else {\n ReactDOM.render(element, container);\n }\n });\n });\n\nexport default showConfirmDialog;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/UnfoldMore\");","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"pAjoKOwibtPxYWEmjS7g\"};","/**\n * Copyright 2026 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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport UnfoldMoreIcon from \"@mui/icons-material/UnfoldMore\";\nimport { IconButton } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nimport styles from \"./styles.module.less\";\n\nimport {\n DEFAULT_PER_PAGE,\n FIFTY_PER_PAGE,\n TWENTY_PER_PAGE\n} from \"../../../utils/constants\";\nimport showConfirmDialog from \"../showConfirmDialog\";\n\nconst MuiTableSortable = ({\n columns = [],\n data = [],\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1 },\n getName = (item) => item.name,\n onEdit,\n onDelete,\n deleteDialogTitle = null,\n deleteDialogBody = null,\n onReorder,\n idKey = \"id\",\n updateOrderKey = \"order\"\n}) => {\n const handleChangePage = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleChangeRowsPerPage = (ev) => {\n onPerPageChange(ev.target.value);\n };\n\n const basePerPageOptions = [\n DEFAULT_PER_PAGE,\n TWENTY_PER_PAGE,\n FIFTY_PER_PAGE\n ];\n\n const customPerPageOptions = basePerPageOptions.includes(perPage)\n ? basePerPageOptions\n : [...basePerPageOptions, perPage].sort((a, b) => a - b);\n\n const { sortCol, sortDir } = options;\n\n const handleDragEnd = (result) => {\n if (!result.destination || result.source.index === result.destination.index)\n return;\n\n const reordered = [...data];\n const [movedItem] = reordered.splice(result.source.index, 1);\n reordered.splice(result.destination.index, 0, movedItem);\n\n // change value based on updateOrderKey\n if (updateOrderKey) {\n reordered.forEach((item, idx) => {\n item[updateOrderKey] = idx + 1;\n });\n }\n\n const movedItemId = movedItem.id;\n const newOrder = reordered.find(\n (item) => item[idKey || \"id\"] === movedItemId\n )?.[updateOrderKey];\n\n onReorder?.(reordered, movedItemId, newOrder);\n };\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: deleteDialogTitle || T.translate(\"general.are_you_sure\"),\n text:\n typeof deleteDialogBody === \"function\"\n ? deleteDialogBody(getName(item))\n : deleteDialogBody ||\n `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n {onEdit && <TableCell sx={{ width: 40 }} />}\n {onDelete && <TableCell sx={{ width: 40 }} />}\n {onReorder && <TableCell sx={{ width: 40 }} />}\n </TableRow>\n </TableHead>\n\n {/* TABLE BODY */}\n <DragDropContext onDragEnd={handleDragEnd}>\n <Droppable droppableId=\"mui-table-droppable\">\n {(droppableProvided) => (\n <TableBody\n ref={droppableProvided.innerRef}\n {...droppableProvided.droppableProps}\n >\n {data.map((row, rowIndex) => (\n <Draggable\n key={row[idKey] || rowIndex}\n draggableId={String(row[idKey] || rowIndex)}\n index={rowIndex}\n >\n {(provided, snapshot) => (\n <TableRow\n ref={provided.innerRef}\n {...provided.draggableProps}\n sx={{\n ...(snapshot.isDragging\n ? {\n display: \"table\",\n width: \"100%\",\n tableLayout: \"fixed\",\n backgroundColor: \"#f0f0f0\",\n transform: \"scale(1.01)\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n zIndex: 1,\n position: \"relative\",\n transition:\n \"transform 0.2s ease, background-color 0.2s ease\"\n }\n : {\n transition: \"background-color 0.2s ease\"\n })\n }}\n >\n {/* Main content columns */}\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n align={col.align ?? \"left\"}\n className={`${\n col.dottedBorder && styles.dottedBorderLeft\n } ${col.className}`}\n >\n {col.render?.(row) || row[col.columnKey]}\n </TableCell>\n ))}\n {/* Edit column */}\n {onEdit && (\n <TableCell\n align=\"center\"\n sx={{ width: 40 }}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n size=\"large\"\n onClick={() => onEdit(row)}\n >\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n {/* Delete column */}\n {onDelete && (\n <TableCell\n align=\"center\"\n sx={{ width: 40 }}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n size=\"large\"\n onClick={() => handleDelete(row)}\n >\n <DeleteIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n {/* Re order column */}\n {onReorder && (\n <TableCell\n align=\"center\"\n sx={{ width: 40 }}\n className={styles.dottedBorderLeft}\n {...provided.dragHandleProps}\n >\n <IconButton size=\"large\">\n <UnfoldMoreIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n )}\n </Draggable>\n ))}\n {droppableProvided.placeholder}\n {data.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} align=\"center\">\n {T.translate(\"mui_table.no_items\")}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n )}\n </Droppable>\n </DragDropContext>\n </Table>\n </TableContainer>\n\n {/* PAGINATION */}\n {onPerPageChange && onPageChange && (\n <TablePagination\n component=\"div\"\n count={totalRows}\n rowsPerPageOptions={customPerPageOptions}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={{\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n }}\n />\n )}\n </Paper>\n </Box>\n );\n};\n\nexport default MuiTableSortable;\n","/**\n * Copyright 2026 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 { MenuItem, Select } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport { querySponsorAddons } from \"../../utils/query-actions\";\n\nconst SponsorAddonSelect = ({\n value,\n summitId,\n sponsor,\n placeholder = \"Select...\",\n onChange,\n inputProps = {}\n}) => {\n const [options, setOptions] = useState([]);\n const sponsorshipIds = sponsor.sponsorships.map((e) => e.id);\n\n useEffect(() => {\n querySponsorAddons(summitId, sponsor.id, sponsorshipIds, (results) => {\n const normalized = results.map((r) => ({\n value: r.id,\n label: r.name\n }));\n setOptions(normalized);\n });\n }, []);\n\n const handleChange = (ev) => {\n const addon = options.find((o) => o.value === ev.target.value);\n onChange({ id: addon.value, name: addon.label });\n };\n\n return (\n <Select\n fullWidth\n value={value}\n onChange={handleChange}\n displayEmpty\n renderValue={(selected) => {\n if (!selected) {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n const match = options.find((opt) => opt.value === selected);\n return match ? match.label : selected;\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...inputProps}\n >\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n );\n};\n\nSponsorAddonSelect.propTypes = {\n value: PropTypes.number,\n summitId: PropTypes.number.isRequired,\n sponsor: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n onChange: PropTypes.func.isRequired\n};\n\nexport default SponsorAddonSelect;\n","/**\n * Copyright 2026 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 { MenuItem, Select } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport { querySummitAddons } from \"../../utils/query-actions\";\n\nconst SummitAddonSelect = ({\n value,\n summitId,\n placeholder = \"Select...\",\n onChange,\n inputProps = {}\n}) => {\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n querySummitAddons(summitId, (results) => {\n const normalized = results.map((r) => ({\n value: r,\n label: r\n }));\n setOptions(normalized);\n });\n }, []);\n\n const handleChange = (event) => {\n onChange(event.target.value);\n };\n\n return (\n <Select\n fullWidth\n value={value}\n onChange={handleChange}\n displayEmpty\n renderValue={(selected) => {\n if (!selected) {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n const match = options.find((opt) => opt.value === selected);\n return match ? match.label : selected;\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...inputProps}\n >\n {options.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n );\n};\n\nSummitAddonSelect.propTypes = {\n value: PropTypes.string,\n summitId: PropTypes.number.isRequired,\n placeholder: PropTypes.string,\n onChange: PropTypes.func.isRequired\n};\n\nexport default SummitAddonSelect;\n","/**\n * Copyright 2026 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 {FormControl, InputLabel, MenuItem, Select} from \"@mui/material\";\nimport T from \"i18n-react\";\nimport {fetchAllSummits} from \"../../utils/query-actions\";\n\nconst SummitsDropdown = ({\n onlyActive = false,\n label = \"Search by show\",\n onChange,\n summits,\n excludeSummitIds = []\n }) => {\n const [summitOptions, setSummitOptions] = useState(summits);\n\n useEffect(() => {\n if (summits.length === 0) {\n fetchAllSummits(onlyActive).then((summits) => {\n const summitOptions = summits.filter(\n (s) => excludeSummitIds.indexOf(s.id) === -1);\n setSummitOptions(summitOptions);\n });\n }\n }, []);\n\n\n return (\n <FormControl fullWidth>\n <InputLabel>{label}</InputLabel>\n <Select\n label={T.translate(\"general.select_summit\")}\n fullWidth\n variant=\"outlined\"\n onChange={(ev) => onChange(ev.target.value)}\n >\n {summitOptions.map((s) => (\n <MenuItem key={`summits-ddl-${s.id}`} value={s.id}>\n {s.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default SummitsDropdown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Check\");","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"mx3fuojj3xuUbN9ch3eB\"};","/**\n * Copyright 2026 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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { isBoolean } from \"lodash\";\nimport {\n Box,\n Button,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow,\n TableSortLabel\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { visuallyHidden } from \"@mui/utils\";\nimport {\n DEFAULT_PER_PAGE,\n FIFTY_PER_PAGE,\n TWENTY_PER_PAGE\n} from \"../../../utils/constants\";\nimport showConfirmDialog from \"../showConfirmDialog\";\nimport styles from \"./mui-table.module.less\";\n\nconst ARCHIVED_CELL_SX = {\n backgroundColor: \"background.light\",\n color: \"text.disabled\"\n};\n\nconst MuiTable = ({\n columns = [],\n data = [],\n children,\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1, disableProp: null }, // disableProp is the prop that will disable the row\n getName = (item) => item.name,\n onEdit,\n onArchive,\n onDelete,\n canDelete = () => true,\n deleteDialogTitle = null,\n deleteDialogBody = null,\n deleteDialogConfirmText = null,\n confirmButtonColor = null\n}) => {\n const handleChangePage = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleChangeRowsPerPage = (ev) => {\n onPerPageChange(ev.target.value);\n };\n\n const basePerPageOptions = [\n DEFAULT_PER_PAGE,\n TWENTY_PER_PAGE,\n FIFTY_PER_PAGE\n ];\n\n const initialPerPage = React.useRef(perPage);\n\n let customPerPageOptions = basePerPageOptions.includes(initialPerPage.current)\n ? basePerPageOptions\n : [...basePerPageOptions, initialPerPage.current].sort((a, b) => a - b);\n\n // remove per page selection if no action passed\n if (!onPerPageChange) {\n customPerPageOptions = [initialPerPage.current];\n }\n\n const { sortCol, sortDir } = options;\n\n const getArchivedCellSx = (row) =>\n options.disableProp && row[options.disableProp] ? ARCHIVED_CELL_SX : null;\n\n const getCellSx = (row, baseSx = {}) => ({\n ...baseSx,\n ...(getArchivedCellSx(row) || {})\n });\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: deleteDialogTitle || T.translate(\"general.are_you_sure\"),\n text:\n typeof deleteDialogBody === \"function\"\n ? deleteDialogBody(getName(item))\n : deleteDialogBody ||\n `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: confirmButtonColor || \"#DD6B55\",\n confirmButtonText:\n deleteDialogConfirmText || T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n const renderCell = (row, col) => {\n if (col.render) {\n return col.render(row);\n }\n\n if (isBoolean(row[col.columnKey])) {\n return row[col.columnKey] ? (\n <CheckIcon fontSize=\"large\" />\n ) : (\n <CloseIcon fontSize=\"large\" />\n );\n }\n\n return row[col.columnKey];\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n {onEdit && <TableCell sx={{ width: 40 }} />}\n {onArchive && <TableCell sx={{ width: 80 }} />}\n {onDelete && <TableCell sx={{ width: 40 }} />}\n </TableRow>\n </TableHead>\n\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row) => (\n <TableRow key={row.id}>\n {/* Main content columns */}\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n align={col.align ?? \"left\"}\n className={`${\n col.dottedBorder && styles.dottedBorderLeft\n } ${col.className}`}\n sx={getCellSx(row)}\n >\n {renderCell(row, col)}\n </TableCell>\n ))}\n {/* Edit column */}\n {onEdit && (\n <TableCell\n align=\"center\"\n className={styles.dottedBorderLeft}\n sx={getCellSx(row, { width: 40 })}\n >\n <IconButton size=\"large\" onClick={() => onEdit(row)}>\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n )}\n {/* Archive column */}\n {onArchive && (\n <TableCell\n align=\"center\"\n sx={{ width: 80 }}\n className={styles.dottedBorderLeft}\n >\n <Button\n variant=\"text\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => onArchive(row)}\n sx={{\n fontSize: \"1.3rem\",\n fontWeight: 500,\n lineHeight: \"2.2rem\",\n padding: \"4px 5px\"\n }}\n >\n {row.is_archived\n ? T.translate(\"general.unarchive\")\n : T.translate(\"general.archive\")}\n </Button>\n </TableCell>\n )}\n {/* Delete column */}\n {onDelete && (\n <TableCell\n align=\"center\"\n className={styles.dottedBorderLeft}\n sx={getCellSx(row, { width: 40 })}\n >\n {canDelete(row) && (\n <IconButton\n size=\"large\"\n onClick={() => handleDelete(row)}\n >\n <DeleteIcon fontSize=\"large\" />\n </IconButton>\n )}\n </TableCell>\n )}\n </TableRow>\n ))}\n {/* Here we inject extra rows passed as children */}\n {children}\n {data.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} align=\"center\">\n {T.translate(\"mui_table.no_items\")}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n\n {/* PAGINATION */}\n {perPage && currentPage && (\n <TablePagination\n component=\"div\"\n count={totalRows}\n rowsPerPageOptions={customPerPageOptions}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={{\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n }}\n />\n )}\n </Paper>\n </Box>\n );\n};\n\nexport default MuiTable;\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","/**\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 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 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 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'\nlet http = request;\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 * @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';\nconst BACK_ULR_PARAM_NAME = 'BackUrl';\n\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 * @param backUrlParamName\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 backUrlParamName = BACK_ULR_PARAM_NAME\n ) => {\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 += `?${backUrlParamName}=${encodeURIComponent(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\n/**\n\n * @param code\n * @param backUrl\n * @param backUrlParamName\n * @returns {Promise<{access_token: *, refresh_token: *, id_token: *, expires_in: *, error: *, error_description: *}>}\n */\nexport const emitAccessToken = async (code, backUrl = null, backUrlParamName = BACK_ULR_PARAM_NAME) => {\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 += `?${backUrlParamName}=${encodeURIComponent(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 const summitValue = summit?.value !== undefined ? summit : this.state.summitValue;\n\n this.setState({ summitValue });\n }\n\n handleClick(ev) {\n ev.preventDefault();\n if ( this.state?.summitValue?.value !== undefined )\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?.value === undefined;\n\n\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';\nimport {CODE_200} from \"./constants\";\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';\nexport const SET_SNACKBAR_MESSAGE = \"SET_SNACKBAR_MESSAGE\";\nexport const CLEAR_SNACKBAR_MESSAGE = \"CLEAR_SNACKBAR_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\nexport const clearSnackbarMessage = () => (dispatch) => {\n dispatch(createAction(CLEAR_SNACKBAR_MESSAGE)({}));\n};\n\nexport const setSnackbarMessage = (message) => (dispatch) => {\n dispatch(createAction(SET_SNACKBAR_MESSAGE)(message));\n};\n\nexport const snackbarErrorHandler = (err, res) => (dispatch, state) => {\n authErrorHandler(err, res, setSnackbarMessage)(dispatch, state);\n};\n\nexport const snackbarSuccessHandler = (message) => (dispatch, state) =>\n setSnackbarMessage({ ...message, type: \"success\", code: CODE_200 })(\n dispatch,\n state\n );\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","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\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\nexport const isRateEnabled = (value) =>\n value !== null && value !== undefined && value !== \"\";\n\n/**\n * Returns true if value is null, undefined, empty/whitespace string,\n * empty array, or empty object.\n */\nexport const empty = (value) => {\n if (value === null || value === undefined) return true;\n if (typeof value === \"string\") return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") return Object.keys(value).length === 0;\n return false;\n};\n","/**\n * Copyright 2025 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 {\n CENTS_FACTOR,\n THREE_DECIMAL_PLACES,\n TWO_DECIMAL_PLACES,\n ZERO_INT,\n ONE_CENT\n} from \"./constants\";\n\nconst CURRENCY_SYMBOL = {\n USD: \"$\",\n EUR: \"€\",\n GBP: \"£\",\n CAD: \"C$\",\n AUD: \"A$\",\n NZD: \"NZ$\",\n CHF: \"CHF\",\n ARS: \"AR$\",\n BRL: \"R$\",\n MXN: \"MX$\",\n};\n\n/**\n * Convert a decimal money amount to integer cents safely (no floating point math).\n *\n * Why this exists:\n * - `Math.round(parseFloat(x) * 100)` can be wrong due to IEEE-754 floating point errors\n * (e.g. 1.005 * 100 may become 100.499999..., rounding down unexpectedly).\n *\n * Input:\n * - number or string (recommended: string from API/UI)\n * - Examples: \"12.34\", \"1,234.56\", \"1234,56\", 12.34\n *\n * Output:\n * - Number cents (exact), e.g. \"12.34\" -> 1234\n *\n * Rounding:\n * - Half-up to 2 decimals (>= 0.005 USD rounds up by 1 cent).\n *\n * Notes:\n * - Amounts are assumed to be NON-negative (per your requirement).\n * - Throws on invalid formats (does not silently return 0).\n */\nexport function amountToCents(amount) {\n if (amount == null) throw new Error(\"amount is required\");\n\n let s = String(amount).trim();\n\n // Normalize common separators:\n // - \"1,234.56\" => \"1234.56\" (remove thousands separators)\n // - \"1234,56\" => \"1234.56\" (convert decimal comma to dot)\n if (s.includes(\",\") && s.includes(\".\")) {\n s = s.replace(/,/g, \"\");\n } else if (s.includes(\",\") && !s.includes(\".\")) {\n s = s.replace(\",\", \".\");\n }\n\n // Validate: digits optionally followed by '.' and more digits\n if (!/^\\d+(\\.\\d+)?$/.test(s)) {\n throw new Error(`Invalid money format: \"${amount}\"`);\n }\n\n const [intPart, fracRaw = \"\"] = s.split(\".\");\n\n // Pad at least 3 fractional digits so we can:\n // - take 2 digits for cents\n // - take the 3rd digit to decide rounding\n const fracPadded = (`${fracRaw }000`);\n\n const tenths = fracPadded[0] ?? \"0\"; // 1st decimal digit\n const hundredths = fracPadded[1] ?? \"0\"; // 2nd decimal digit (cents)\n const thousandths = fracPadded[2] ?? \"0\"; // 3rd decimal digit (rounding decision)\n\n // If there are more than 3 decimals, we track if any non-zero exists after the 3rd.\n // This can matter for policies like bankers rounding; here it's mainly informational.\n const trailing =\n fracRaw.length > THREE_DECIMAL_PLACES\n ? fracRaw.slice(THREE_DECIMAL_PLACES)\n : \"\";\n const hasTrailingNonZero = /[1-9]/.test(trailing);\n\n // Build cents as integer: (dollars * 100) + (first two decimal digits)\n let cents = BigInt(intPart) * CENTS_FACTOR + BigInt(tenths + hundredths);\n\n // Half-up rounding:\n // - If the 3rd digit is >= 5, round up by 1 cent.\n // - If there are more digits beyond the 3rd, \"5xxx\" should also round up.\n const roundUp = thousandths > \"5\" || thousandths === \"5\" || (thousandths === \"5\" && hasTrailingNonZero);\n\n if (roundUp) cents += ONE_CENT;\n\n return Number(cents);\n}\n\n/**\n * Convert an amount in cents to a decimal string (e.g. 1234 -> \"12.34\") safely.\n *\n * Why:\n * - Avoids floating point math (cents / 100) which can lose precision for large integers\n * or if cents is already imprecise as a JS Number.\n *\n * Input:\n * - Accepts: bigint | number | string (digits)\n * - Assumes NON-negative cents (per your requirement).\n *\n * Output:\n * - Always returns a string with exactly 2 decimal places.\n */\nexport function amountFromCents(cents) {\n let c;\n\n // Normalize input to BigInt safely\n if (typeof cents === \"bigint\") {\n c = cents;\n } else if (typeof cents === \"number\") {\n // Ensure it's a safe integer before converting to BigInt\n if (!Number.isSafeInteger(cents)) {\n throw new Error(\"cents must be a safe integer Number (or pass BigInt/string).\");\n }\n c = BigInt(cents);\n } else if (typeof cents === \"string\") {\n const s = cents.trim();\n if (!/^\\d+$/.test(s)) {\n throw new Error(\"cents string must contain digits only (e.g., '1234').\");\n }\n c = BigInt(s);\n } else {\n throw new Error(\"cents must be a bigint, number, or numeric string.\");\n }\n\n if (c < ZERO_INT) {\n throw new Error(\"cents must be non-negative.\");\n }\n\n const amount = c / CENTS_FACTOR;\n const remainder = c % CENTS_FACTOR;\n\n // Always pad remainder to 2 digits\n return `${amount.toString()}.${remainder.toString().padStart(TWO_DECIMAL_PLACES, \"0\")}`;\n}\n\n/**\n * @param cents\n * @param currency\n * @returns {string}\n */\nexport function currencyAmountFromCents(cents, currency = \"USD\"){\n if (typeof cents !== \"number\" || !Number.isInteger(cents)) {\n throw new Error(\"cents must be an integer number\");\n }\n\n const amount = amountFromCents(cents); // \"12.34\"\n const symbol = CURRENCY_SYMBOL[currency] ?? \"$\";\n return `${symbol}${amount}`;\n}\n\n/**\n * Converts a price string into cents.\n * @param {string} priceString - The price (e.g., $0.30).\n * @returns {number} - The amount converted to cents (e.g., 30).\n */\nexport const parsePrice = (priceString) => {\n if (priceString == null) throw new Error(\"priceString is required\");\n\n let s = String(priceString).trim();\n\n // Reject negatives explicitly (per your requirement).\n if (s.includes(\"-\")) throw new Error(\"Negative amounts are not allowed\");\n\n // Keep only digits and separators. Remove currency symbols/letters/spaces.\n s = s.replace(/[^\\d.,]/g, \"\");\n if (!s) throw new Error(`Invalid price: \"${priceString}\"`);\n\n // Delegate exact cents conversion (no floats)\n return amountToCents(s); // <- your safe BigInt cents converter\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';\nimport moment from 'moment-timezone'\n\nexport const RECEIVE_COUNTRIES = 'RECEIVE_COUNTRIES';\nimport URI from \"urijs\";\nimport {DEBOUNCE_WAIT, DEFAULT_PER_PAGE, MAX_PER_PAGE} from \"./constants\";\n\nURI.escapeQuerySpace = false;\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\nconst _fetchPromise = async (endpoint, options = {}) => {\n let accessToken;\n\n try {\n accessToken = await getAccessToken();\n } catch (e) {\n return Promise.reject(e);\n }\n\n endpoint.addQuery('access_token', accessToken);\n\n return fetch(buildAPIBaseUrl(endpoint.toString()), options)\n .then(fetchResponseHandler)\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_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n *\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryAttendees = _.debounce(async (summitId, input, callback, per_page= DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySummits = _.debounce(async (input, callback, per_page= DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n\nexport const fetchAllSummits = async (onlyActive) => {\n\n let endpoint = URI(`/api/v2/summits/all`);\n\n endpoint.addQuery('fields', 'id,name,start_date,end_date');\n endpoint.addQuery('expand', 'none');\n endpoint.addQuery('relations', 'none');\n endpoint.addQuery('order','-start_date');\n endpoint.addQuery('page', 1);\n endpoint.addQuery('per_page', MAX_PER_PAGE);\n\n if (onlyActive) {\n const now = moment().tz(\"UTC\").unix();\n endpoint.addQuery('filter[]', `end_date>=${now}`);\n }\n\n return _fetchPromise(endpoint)\n .then((json) => json.data);\n};\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySpeakers = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE ) => {\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}, DEBOUNCE_WAIT);\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTracks = _.debounce(async (summitId, input, callback, excludedIds = [], per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryTrackGroups = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=, *): Promise<void>)|*>}\n */\nexport const queryEvents = _.debounce(async (summitId, input, onlyPublished = false, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=, *=): Promise<void>)|*>}\n */\nexport const queryEventTypes = _.debounce(async (summitId, input, callback, eventTypeClassName = null, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryGroups = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryCompanies = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryRegistrationCompanies = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsors = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\nexport const querySponsorsV2 = _.debounce(async (input, summitId, callback) => {\n const endpoint = URI(\n `/api/v2/summits/${summitId}/sponsors`\n );\n const escapedInput = escapeFilterValue(input);\n endpoint.addQuery(\"fields\", \"id,company.name,company.id\");\n endpoint.addQuery(\"relations\", \"company\");\n endpoint.addQuery(\"expand\", \"company\");\n if (escapedInput) {\n endpoint.addQuery(\"filter\", `company_name=@${escapedInput}`);\n }\n _fetchPromise(endpoint)\n .then((json) => {\n const options = [...json.data].map((sp) => ({\n id: sp.id,\n name: sp.company.name\n }));\n callback(options);\n })\n .catch(fetchErrorHandler);\n}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const querySponsorsWithBadgeScans = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryAccessLevels = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const queryOrganizations = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\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_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *=): Promise<void>)|*>}\n */\nexport const querySponsoredProjects = _.debounce(async (input, callback, per_page = DEFAULT_PER_PAGE) => {\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}, DEBOUNCE_WAIT);\n\n/**\n * @type {DebouncedFunc<(function(*, *, *, *=): Promise<void>)|*>}\n */\nexport const queryPromocodes = _.debounce(async (summitId, input, callback, per_page = DEFAULT_PER_PAGE, 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}, DEBOUNCE_WAIT);\n\n\nexport const querySponsorAddons = async (\n summitId,\n sponsorId,\n sponsorshipIds,\n callback\n) => {\n try {\n const promises = sponsorshipIds.map((sponsorshipId) => {\n const endpoint = URI(\n `/api/v1/summits/${summitId}/sponsors/${sponsorId}/sponsorships/${sponsorshipId}/add-ons`\n );\n endpoint.addQuery(\n \"fields\",\n \"id,name,sponsorship.type,sponsorship.type.id,sponsorship.type.type.name\"\n );\n endpoint.addQuery(\n \"expand\",\n \"sponsorship,sponsorship.type,sponsorship.type.type\"\n );\n endpoint.addQuery(\"relations\", \"sponsorship.none\");\n return _fetchPromise(endpoint)\n .then(fetchResponseHandler)\n .then((json) => json.data)\n .catch((error) => {\n fetchErrorHandler(error);\n return [];\n });\n });\n const results = await Promise.all(promises);\n const allAddons = results.flat();\n callback(allAddons);\n } catch (error) {\n fetchErrorHandler(error);\n }\n};\n\n\nexport const querySummitAddons = async (\n summitId,\n callback\n) => {\n const endpoint = URI(\n `/api/v1/summits/${summitId}/add-ons/metadata`\n );\n endpoint.addQuery(\"page\", 1);\n endpoint.addQuery(\"per_page\", MAX_PER_PAGE);\n\n _fetch(endpoint, callback);\n};\n\n\nexport const querySponsorships = _.debounce(async (input, callback) => {\n const endpoint = URI(`/api/v1/sponsorship-types`);\n input = escapeFilterValue(input);\n if (input) {\n endpoint.addQuery(\"filter\", `name=@${input}`);\n }\n _fetch(endpoint, callback);\n}, DEBOUNCE_WAIT);\n\n\nexport const querySponsorshipsBySummit = _.debounce(\n async (input, summitId, callback) => {\n const endpoint = URI(\n `/api/v1/summits/${summitId}/sponsorships-types`\n );\n input = escapeFilterValue(input);\n endpoint.addQuery(\"page\", 1);\n endpoint.addQuery(\"per_page\", MAX_PER_PAGE);\n endpoint.addQuery(\"expand\", \"type\");\n endpoint.addQuery(\"order\", \"+name\");\n if (input) {\n endpoint.addQuery(\"filter\", `name=@${input}`);\n }\n _fetch(endpoint, callback);\n },\n DEBOUNCE_WAIT\n);\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(\"@mui/icons-material\");","module.exports = require(\"@mui/icons-material/Clear\");","module.exports = require(\"@mui/icons-material/Close\");","module.exports = require(\"@mui/icons-material/Delete\");","module.exports = require(\"@mui/icons-material/Edit\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/icons-material/ExpandMore\");","module.exports = require(\"@mui/material\");","module.exports = require(\"@mui/material/Autocomplete\");","module.exports = require(\"@mui/material/Box\");","module.exports = require(\"@mui/material/Button\");","module.exports = require(\"@mui/material/CircularProgress\");","module.exports = require(\"@mui/material/Dialog\");","module.exports = require(\"@mui/material/DialogActions\");","module.exports = require(\"@mui/material/DialogContent\");","module.exports = require(\"@mui/material/DialogTitle\");","module.exports = require(\"@mui/material/Paper\");","module.exports = require(\"@mui/material/Table\");","module.exports = require(\"@mui/material/TableBody\");","module.exports = require(\"@mui/material/TableCell\");","module.exports = require(\"@mui/material/TableContainer\");","module.exports = require(\"@mui/material/TableHead\");","module.exports = require(\"@mui/material/TablePagination\");","module.exports = require(\"@mui/material/TableRow\");","module.exports = require(\"@mui/material/TableSortLabel\");","module.exports = require(\"@mui/material/TextField\");","module.exports = require(\"@mui/utils\");","module.exports = require(\"@mui/x-date-pickers/AdapterMoment\");","module.exports = require(\"@mui/x-date-pickers/LocalizationProvider\");","module.exports = require(\"awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css\");","module.exports = require(\"dropzone\");","module.exports = require(\"formik\");","module.exports = require(\"i18n-react\");","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-beautiful-dnd\");","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};","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// mui components\nexport {default as MuiCheckboxList} from './mui/checkbox-list'\nexport {default as MuiChipList} from './mui/chip-list'\nexport {default as MuiChipNotify} from './mui/chip-notify'\nexport {default as MuiChipSelectInput} from './mui/chip-select-input'\nexport {default as MuiConfirmDialog} from './mui/confirm-dialog'\nexport {default as MuiCustomAlert} from './mui/custom-alert'\nexport {default as MuiDndList} from './mui/dnd-list'\nexport {default as MuiDropdownCheckbox} from './mui/dropdown-checkbox'\nexport {default as MuiMenuButton} from './mui/menu-button'\nexport {default as MuiSearchInput} from './mui/search-input'\nexport {default as MuiShowConfirmDialog} from './mui/showConfirmDialog'\nexport {default as MuiSponsorAddonSelect} from './mui/sponsor-addon-select'\nexport {default as MuiSummitAddonSelect} from './mui/summit-addon-select'\nexport {default as MuiSummitsDropdown} from './mui/summits-dropdown'\nexport {default as MuiFormItemTable} from './mui/FormItemTable'\nexport {default as MuiItemSettingsModal} from './mui/ItemSettingsModal'\nexport {default as MuiNotesModal} from './mui/NotesModal'\nexport {default as MuiSnackbarNotification} from './mui/SnackbarNotification'\nexport {default as MuiInfiniteTable} from './mui/infinite-table'\nexport {default as MuiEditableTable} from './mui/editable-table/mui-table-editable'\nexport {default as MuiSortableTable} from './mui/sortable-table/mui-table-sortable'\nexport {default as MuiTable} from './mui/table/mui-table'\nexport {default as MuiAdditionalInput} from './mui/formik-inputs/additional-input/additional-input'\nexport {default as MuiAdditionalInputList} from './mui/formik-inputs/additional-input/additional-input-list'\nexport {default as MuiFormikAsyncSelect} from './mui/formik-inputs/mui-formik-async-select'\nexport {default as MuiFormikCheckboxGroup} from './mui/formik-inputs/mui-formik-checkbox-group'\nexport {default as MuiFormikCheckbox} from './mui/formik-inputs/mui-formik-checkbox'\nexport {default as MuiFormikDatepicker} from './mui/formik-inputs/mui-formik-datepicker'\nexport {default as MuiFormikDiscountField} from './mui/formik-inputs/mui-formik-discountfield'\nexport {default as MuiFormikDropdownCheckbox} from './mui/formik-inputs/mui-formik-dropdown-checkbox'\nexport {default as MuiFormikDropdownRadio} from './mui/formik-inputs/mui-formik-dropdown-radio'\nexport {default as MuiFormikFileSizeField} from './mui/formik-inputs/mui-formik-file-size-field'\nexport {default as MuiFormikPriceField} from './mui/formik-inputs/mui-formik-pricefield'\nexport {default as MuiFormikQuantityField} from './mui/formik-inputs/mui-formik-quantity-field'\nexport {default as MuiFormikRadioGroup} from './mui/formik-inputs/mui-formik-radio-group'\nexport {default as MuiFormikSelectGroup} from './mui/formik-inputs/mui-formik-select-group'\nexport {default as MuiFormikSelect} from './mui/formik-inputs/mui-formik-select'\nexport {default as MuiFormikSummitAddonSelect} from './mui/formik-inputs/mui-formik-summit-addon-select'\nexport {default as MuiFormikSwitch} from './mui/formik-inputs/mui-formik-switch'\nexport {default as MuiFormikTextField} from './mui/formik-inputs/mui-formik-textfield'\nexport {default as MuiFormikTimepicker} from './mui/formik-inputs/mui-formik-timepicker'\nexport {default as MuiFormikUpload} from './mui/formik-inputs/mui-formik-upload'\nexport {default as MuiCompanyInput} from './mui/formik-inputs/company-input-mui'\nexport {default as MuiItemPriceTiers} from './mui/formik-inputs/item-price-tiers'\nexport {default as MuiSponsorInput} from './mui/formik-inputs/mui-sponsor-input'\nexport {default as MuiSponsorshipInput} from './mui/formik-inputs/sponsorship-input-mui'\nexport {default as MuiSponsorshipSummitSelect} from './mui/formik-inputs/sponsorship-summit-select-mui'\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_PER_PAGE","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","handleUpload","handleError","showRemove","setShowRemove","logoPreview","setLogoPreview","preview","logoPreviewTmp","fileName","test","fileHasPreview","pdf_icon","mov_icon","mp4_icon","csv_icon","getPreviewIcon","onDrop","fileRejections","onMouseEnter","onMouseLeave","rowId","timeZone","commonProps","class_field","type_id","fullWidth","slotProps","htmlInput","min","minimum_quantity","maximum_quantity","MenuItem","multiline","rows","row","extraColumns","form_item_id","helpers","useField","isReadOnly","eq","setValue","setTouched","quantity_limit_per_sponsor","pointerEvents","borderColor","showAdditionalItems","currentApplicableRate","onNotesClick","onSettingsClick","valuesStr","meta_fields","mf","totalColumns","calculateQuantity","qtyEXC","exc","globalQty","itemLevelQty","reduce","calculateRowTotal","qty","rate","rates","hasItemFields","itemFieldsIncomplete","requiredFields","is_required","hasMissingFields","formatRate","currencyAmountFromCents","totalAmount","subtotal","acc","discount","discount_type","DISCOUNT_TYPES","AMOUNT","discount_amount","ONE_HUNDRED","TableContainer","Paper","Table","TableHead","TableRow","TableCell","TableBody","inCents","step","early_bird","standard","onsite","ItemTableField","align","handleEditItemFields","handleEdit","fill","p","discountType","ItemSettingsModal","item","open","onClose","itemFields","maxWidth","theme","palette","grey","Divider","marginBottom","marginRight","NotesModal","notes","setNotes","TextField","SnackbarNotificationContext","createContext","SnackbarNotification","snackbarMessage","clearSnackbarMessage","setOpen","msgData","setMsgData","successMessage","msg","html","errorMessage","messageContext","clearMessage","setTimeout","NOTIFICATION_TIMEOUT","empty","Provider","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","iconMapping","connect","baseState","items","loadMoreData","boxHeight","allItemsLabel","noItemsLabel","selectedItems","setSelectedItems","isAllSelected","setIsAllSelected","allItemIds","border","padding","onScroll","scrollTop","scrollHeight","clientHeight","FormGroup","FormControlLabel","Checkbox","itemId","selected","handleItemChange","chips","shownItems","chip","Chip","Tooltip","arrow","NotificationsIcon","icon","availableOptions","canEdit","inputLabel","currentSettings","onGetSettingsMeta","onGetSettings","onUpsertSettings","renderSelectedOptions","denormalizeSettings","selectedColumns","setSelectedColumns","isDirty","setIsDirty","selectedColumnsTmp","columns","submitNewColumns","FormControl","InputLabel","Select","labelId","multiple","handleColumnChange","OutlinedInput","renderValue","flexWrap","onDelete","newValues","handleRemoveItem","deleteIcon","ClearIcon","onMouseDown","endAdornment","InputAdornment","iconMap","warning","Warning","Info","ConfirmDialog","text","iconType","onConfirm","onCancel","confirmButtonText","confirmButtonColor","cancelButtonText","cancelButtonColor","Dialog","DialogTitle","DialogContent","DialogActions","Button","hideIcon","DragAndDropList","onReorder","renderItem","idKey","updateOrderKey","droppableId","DragDropContext","onDragEnd","result","destination","newItems","list","startIndex","endIndex","from","removed","reorder","source","Droppable","innerRef","droppableProps","Draggable","draggableId","draggableProps","dragHandleProps","isDragging","transition","allLabel","rawValue","opName","ListItemText","primary","ARCHIVED_CELL_SX","EditableCell","isEditing","onBlur","isHovering","setIsHovering","setError","handleValidationAndSave","schema","validateSync","validateValue","autoFocus","onKeyDown","helperText","totalRows","currentPage","onPageChange","onPerPageChange","onSort","sortCol","sortDir","disableProp","getName","onEdit","onArchive","onCellChange","deleteDialogBody","editingCell","setEditingCell","basePerPageOptions","TWENTY_PER_PAGE","FIFTY_PER_PAGE","customPerPageOptions","getCellSx","baseSx","getArchivedCellSx","isEditable","col","editable","elevation","boxShadow","columnKey","sortable","active","direction","header","visuallyHidden","column","handleCellClick","handleCellBlur","lineHeight","is_archived","showConfirmDialog","showCancelButton","handleDelete","rowsPerPageOptions","count","rowsPerPage","page","newPage","onRowsPerPageChange","labelRowsPerPage","DEFAULT_META_FIELD","onDeleteValue","entityId","setFieldValue","setFieldTouched","useFormikContext","metaFields","_key","Date","handleAddItem","removeFromUI","areMetafieldsIncomplete","fieldErrors","getIn","METAFIELD_TYPES_WITH_OPTIONS","itemIdx","baseName","onAdd","isAddDisabled","fieldIndex","onMetaFieldTypeValueDeleted","sortedValues","buildValueFieldName","valueIndex","fieldName","newMetaFields","sortedIndex","originalIndex","Grid2","container","spacing","transform","InputProps","metaFieldValue","removeValueFromFields","newFields","handleRemoveValue","is_default","handleDefaultChange","offset","startIcon","isMetafieldValueIncomplete","buildFieldName","currentType","fieldTouched","showValuesError","my","METAFIELD_TYPES","fieldType","alignSelf","FormHelperText","flexDirection","createFilterOptions","CompanyInputMUI","plainValue","loading","setLoading","isDebouncing","setIsDebouncing","delayDebounce","results","normalize","fetchOptions","DEBOUNCE_WAIT_250","clearTimeout","selectedValue","onOpen","isOptionEqualToValue","newInputValue","filterOptions","filtered","isExisting","popupIcon","renderOption","renderInput","shrink","TIERS","RATE_FIELDS","EARLY_BIRD","STANDARD","ONSITE","enabled","isRateEnabled","isEnabled","handleToggle","hiddenOptions","formatOption","formatSelectedValue","queryParams","searchTerm","setSearchTerm","normalized","Autocomplete","newInput","CircularProgress","MuiFormikCheckboxGroup","INT_BASE","FormLabel","MuiFormikCheckbox","MuiFormikDatepicker","requiredLabel","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","textField","day","layout","BLOCKED_KEYS","MuiFormikDiscountField","cleared","setCleared","emptyValue","initialValue","adornment","RATE","startAdornment","inputMode","getDisplayValue","newVal","numericValue","Number","newDiscount","allSelected","every","displayEmpty","finalPlaceholder","Radio","MuiFormikFilesizeField","floor","BYTES_PER_MB","bytesToMb","mbValue","MuiFormikPriceField","isFocused","setIsFocused","focusedValue","setFocusedValue","getRawString","raw","toFixed","DECIMAL_DIGITS","str","dotIdx","indexOf","newPrice","onFocus","MuiFormikQuantityField","nativeEvent","stopImmediatePropagation","MuiFormikRadioGroup","marginWrapper","RadioGroup","MuiFormikSelectGroup","showSelectAll","selectAllLabel","noOptionsLabel","getGroupId","getGroupLabel","groupedOptions","setGroupedOptions","groupsMap","Map","groupId","groupLabel","has","set","get","selectedValues","currentValues","IconWithLoading","pr","getCustomIcon","IconComponent","indeterminate","group","groupIndex","ListSubheader","textTransform","letterSpacing","optionValue","isChecked","pl","fontStyle","flat","renderGroupedOptions","renderMenuContent","MuiFormikSelect","shouldShrink","notched","MuiFormikSummitAddonSelect","MuiFormikSwitch","Switch","MuiFormikTextField","currentLength","finalLabel","MuiFormikTimepicker","minTime","maxTime","TimePicker","views","MuiFormikUpload","MAX_INVENTORY_IMAGES_UPLOAD_QTY","MAX_INVENTORY_IMAGE_UPLOAD_SIZE","max_uploads_qty","ALLOWED_INVENTORY_IMAGE_FORMATS","image","file_name","mime_type","source_bucket","bucket","file_path","buildFileObject","img","file_url","getInputValue","imageFile","updated","FILE_UPLOAD_API_BASE_URL","withCredentials","canAddMore","MuiSponsorInput","querySponsorsV2","SponsorshipTypeInputMUI","querySponsorships","SponsorshipsBySummitSelectMUI","querySponsorshipsBySummit","match","o","MuiInfiniteTable","onRowEdit","isLoadingRef","MILLISECONDS_TO_SECONDS","rowIndex","cellContent","cellClassName","colSpan","MenuButton","buttonId","menuId","menuItems","hasBadge","anchorEl","setAnchorEl","handleClose","badgeCount","currentTarget","Badge","badgeContent","Menu","MenuListProps","paper","isSelected","handleOptionClick","borderBottom","debounced","onSearchRef","onSearchDebouncedRef","debounce","DEBOUNCE_WAIT","cancel","createRootFn","createElement","body","appendChild","close","unmount","ReactDOM","remove","element","mod","import","createRoot","getCreateRoot","deleteDialogTitle","reordered","movedItem","movedItemId","newOrder","droppableProvided","tableLayout","dottedBorder","SponsorAddonSelect","sponsor","sponsorshipIds","sponsorships","querySponsorAddons","addon","SummitAddonSelect","querySummitAddons","onlyActive","summits","excludeSummitIds","summitOptions","setSummitOptions","fetchAllSummits","deleteDialogConfirmText","initialPerPage","TableSortLabel","isBoolean","renderCell","TablePagination","isCancelled","imgSrc","setImgSrc","customClass","setCustomClass","Image","onerror","replaceNewLine","DraggableItemTypes","UNSCHEDULEEVENT","SCHEDULEEVENT","TBALocation","SlotSizeOptions","PixelsPerMinute","initialTop","initialHeight","minHeight","maxHeight","canResize","allowResize","allowDrag","onResized","onUnPublishEvent","onEditEvent","onClickSelected","selectedPublishedEvents","onMoveEvent","collected","drag","useDrag","is_published","duration","collect","monitor","canDrag","static","resizeInfo","setResizeInfo","resizing","lastYPos","setSize","isResizable","popoverHoverFocus","Popover","onMouseMove","newYPos","pageY","deltaY","steps","abs","sign","newHeight","newTop","maxHeightTmp","onMouseUp","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","slotChangeRatio","createSlots","startTime","endTime","onScheduleEvent","eventId","getBoundingBox","filteredEvents","minutes","startDateTime","time_zone","add","endDateTime","auxEvent","auxEventStartDateTime","tz","auxEventEndDateTime","shift","getMaxHeight","calculateInitialTop","eventStartDateTime","utc","dayStartDateTime","diff","calculateInitialHeight","tmpList","startTimeTZ","endTimeTZ","slot","clone","last_edited","StyleSheet","create","headlineWrapper","headline","logo","subtitle","eventList","eventWrapper","locationWrapper","footer","leftCol","speakers","trackWrapper","rightCol","tagsWrapper","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","trackSpaceTime","scheduleEvents","selectedEvents","currentVenue","slotSize","hideBulkSelect","currentLocation","summitLocalStartDate","summitLocalEndDate","currentAuxDay","allowedDays","location_id","allowed_timeframes","at","getDaysOptions","allowedLocationIds","st","isNotVenue","isAllowed","rooms","subOption","getVenuesOptions","slotSizeOptions","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","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","networkError","ok","statusText","setSessionClearingState","parseError","new_refresh_token","idToken","formerAuthInfo","Cookies","secure","sameSite","putOnLocalStorage","getFromLocalStorage","removeFromLocalStorage","getIdToken","OAUTH2_CLIENT_ID","OAUTH2_FLOW","OAUTH2_USE_REFRESH_TOKEN","IDP_BASE_URL","getCurrentLocation","URI","postLogOutUri","getOrigin","id_token_hint","query","getLogoutUrl","SimpleLinkList","getOptions","handleLink","filterOption","getNewOptionData","isValidNewOption","actions","search","optionLabel","selectValue","selectOptions","labelKey","optionFound","onCreateTag","candidate","allowDuplicates","disabledAdd","valueKey","tableOptions","delete","edit","custom","itemA","itemB","SummitDropdown","summitValue","actionClass","bigClass","EditableTableHeading","is_edit","shouldUseTextArea","EditableActionsTableCell","is_editing","onSave","save","EditableTableRow","even","role","EditableTable","new_row","editRow","saveRow","deleteClick","onChangeCell","editRowCancel","saveNewRow","handleNewChange","onChangeNewCell","editing_row","Swal","rowIdx","tableClass","textArea","colWidth","warn","cells","createRow","addNew","cell_value","createNewRow","delayShow","SelectableTableHeading","handleSort","getSortClass","columnIndex","sortFunc","SelectableTableRow","handleSelect","shouldDisplayAction","onSelected","rowClass","SelectableActionsTableCell","handleAction","tooltip","getSortDir","SelectableTable","disableSelectAll","onSelectedAll","selectedAll","actionsHeader","SortableTableHeading","SortableActionsTableCell","SortableTableRow","moveCard","dropItem","findRow","refRow","handlerId","getHandlerId","hover","dragIndex","hoverIndex","hoverBoundingRect","hoverMiddleY","hoverClientY","getClientOffset","y","_item","droppedId","didDrop","SortableTable","dropCallback","orderField","idField","setRows","newRow","setNewRow","renderRow","moveRow","onDropItem","sortRows","rows2Sort","x","prevRows","update","$splice","sortedRows","shouldRenderNewRow","DndProvider","backend","HTML5Backend","renderNewRow","newRowTmp","TableHeading","ActionsTableCell","colStyles","YoutubeVideoComponent","videoSrcURL","videoTitle","frameBorder","allow","allowFullScreen","LiveVideoPlayer","player","videojs","videoNode","dispose","isLiveVideo","checkLiveVideo","videoJsOptions","autoplay","controls","fluid","sources","_event","_summit","getId","isPublished","getMinutesDuration","siblings","calculateNewDates","isValidEndDate","endDate","_endDate","summitEndDate","startDate","isValidStartDate","_startDate","durationInMinutes","summitStartDate","isValidTitle","createAction","dispatch","fetchErrorHandler","fetchResponseHandler","escapeFilterValue","CENTS_FACTOR","TWO_DECIMAL_PLACES","ZERO_INT","MAX_PER_PAGE","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","crossOrigin","loadImage","svgUrl","newWidth","naturalHeight","naturalWidth","canvas","getContext","drawImage","toDataURL","CURRENCY_SYMBOL","USD","EUR","GBP","CAD","AUD","NZD","CHF","ARS","BRL","MXN","cents","currency","isInteger","amount","isSafeInteger","BigInt","remainder","padStart","amountFromCents","_fetchPublic","endpoint","_fetchPromise","addQuery","_fetch","per_page","excludedIds","eventTypeClassName","escapedInput","sponsorId","promises","sponsorshipId","all","ComboBoxQuestionType","CheckBoxListQuestionType","RadioButtonListQuestionType","AllowedMultipleValueQuestionType","AnswerValuesOperator_And","VisibilityCondition_Equal","questionByName","questionById","rules","_parseQuestion","av","initialCondition","parentQuestionAnswer","_getAnswerFor","parent_question_id","answerValue","_answerContains","class","_hasValue","_allowsValues","_allowsValue","ruleId","parent_rules","_isSubQuestionVisible","_isAnswered","_checkQuestion","userAnswer","originalAnswers","defaultVal","ansVal","res1","_formatQuestionAnswer","_parseQuestions","webpackContext","req","webpackContextResolve","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","defineProperty","enumerable","prop","Symbol","toStringTag"],"sourceRoot":""}
|