@clickview/curator 1.0.15-rc.3 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/projects/curator/webpack/universalModuleDefinition","file://C:/ClickView Projects/@clickview/packages/projects/curator/webpack/bootstrap","file://C:/ClickView Projects/@clickview/node_modules/formik/dist/formik.esm.js","file://C:/ClickView Projects/@clickview/node_modules/formik/node_modules/deepmerge/dist/es.js","file://C:/ClickView Projects/@clickview/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_DataView.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Hash.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_ListCache.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Map.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_MapCache.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Promise.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Set.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Stack.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Symbol.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_Uint8Array.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_WeakMap.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_arrayEach.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_arrayFilter.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_arrayLikeKeys.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_arrayMap.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_arrayPush.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_assignValue.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_assocIndexOf.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseAssign.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseAssignIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseAssignValue.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseClone.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseCreate.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseGetAllKeys.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseGetTag.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseIsArguments.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseIsMap.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseIsNative.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseIsSet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseIsTypedArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseKeys.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseKeysIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseTimes.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseToString.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_baseUnary.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_cloneArrayBuffer.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_cloneBuffer.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_cloneDataView.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_cloneRegExp.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_cloneSymbol.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_cloneTypedArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_copyArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_copyObject.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_copySymbols.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_copySymbolsIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_coreJsData.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_defineProperty.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_freeGlobal.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getAllKeys.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getAllKeysIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getMapData.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getNative.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getPrototype.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getRawTag.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getSymbols.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getSymbolsIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getTag.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_getValue.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_hashClear.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_hashDelete.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_hashGet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_hashHas.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_hashSet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_initCloneArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_initCloneByTag.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_initCloneObject.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_isIndex.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_isKeyable.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_isMasked.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_isPrototype.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_listCacheClear.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_listCacheDelete.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_listCacheGet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_listCacheHas.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_listCacheSet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_mapCacheClear.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_mapCacheDelete.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_mapCacheGet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_mapCacheHas.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_mapCacheSet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_memoizeCapped.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_nativeCreate.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_nativeKeys.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_nativeKeysIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_nodeUtil.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_objectToString.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_overArg.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_root.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_stackClear.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_stackDelete.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_stackGet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_stackHas.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_stackSet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_stringToPath.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_toKey.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/_toSource.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/clone.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/cloneDeep.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/eq.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isArguments.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isArrayLike.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isBuffer.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isFunction.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isLength.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isMap.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isObject.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isObjectLike.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isPlainObject.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isSet.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isSymbol.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/isTypedArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/keys.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/keysIn.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/memoize.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/stubArray.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/stubFalse.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/toPath.js","file://C:/ClickView Projects/@clickview/node_modules/lodash-es/toString.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/InlineLexer.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/Lexer.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/Parser.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/Renderer.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/Slugger.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/TextRenderer.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/defaults.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/helpers.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/marked.js","file://C:/ClickView Projects/@clickview/node_modules/marked/src/rules.js","file://C:/ClickView Projects/@clickview/node_modules/object-assign/index.js","file://C:/ClickView Projects/@clickview/node_modules/prop-types/checkPropTypes.js","file://C:/ClickView Projects/@clickview/node_modules/prop-types/factoryWithTypeCheckers.js","file://C:/ClickView Projects/@clickview/node_modules/prop-types/index.js","file://C:/ClickView Projects/@clickview/node_modules/prop-types/lib/ReactPropTypesSecret.js","file://C:/ClickView Projects/@clickview/node_modules/react-autosuggest/dist/Autosuggest.js","file://C:/ClickView Projects/@clickview/node_modules/react-autosuggest/dist/index.js","file://C:/ClickView Projects/@clickview/node_modules/react-autosuggest/dist/theme.js","file://C:/ClickView Projects/@clickview/node_modules/react-autowhatever/dist/Autowhatever.js","file://C:/ClickView Projects/@clickview/node_modules/react-autowhatever/dist/Item.js","file://C:/ClickView Projects/@clickview/node_modules/react-autowhatever/dist/ItemsList.js","file://C:/ClickView Projects/@clickview/node_modules/react-autowhatever/dist/SectionTitle.js","file://C:/ClickView Projects/@clickview/node_modules/react-autowhatever/dist/compareObjects.js","file://C:/ClickView Projects/@clickview/node_modules/react-autowhatever/dist/index.js","file://C:/ClickView Projects/@clickview/node_modules/react-fast-compare/index.js","file://C:/ClickView Projects/@clickview/node_modules/react-is/cjs/react-is.development.js","file://C:/ClickView Projects/@clickview/node_modules/react-is/index.js","file://C:/ClickView Projects/@clickview/node_modules/react-themeable/dist/index.js","file://C:/ClickView Projects/@clickview/node_modules/react-themeable/node_modules/object-assign/index.js","file://C:/ClickView Projects/@clickview/node_modules/reselect/es/index.js","file://C:/ClickView Projects/@clickview/node_modules/scheduler/cjs/scheduler.development.js","file://C:/ClickView Projects/@clickview/node_modules/scheduler/index.js","file://C:/ClickView Projects/@clickview/node_modules/section-iterator/dist/index.js","file://C:/ClickView Projects/@clickview/node_modules/shallow-equal/arrays/index.js","file://C:/ClickView Projects/@clickview/node_modules/tiny-warning/dist/tiny-warning.esm.js","file://C:/ClickView Projects/@clickview/node_modules/webpack/buildin/global.js","file://C:/ClickView Projects/@clickview/node_modules/webpack/buildin/harmony-module.js","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/Analytics.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/AnalyticsHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/EventFirehose.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/GlobalChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/AnalyticsTypes.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/models/AnalyticsEvent.ts","file://C:/ClickView Projects/@clickview/packages/libs/analytics/src/services/ContextService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/Caches.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/CommonChannels.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/CommonServices.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/constants/DataProviders.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/AppLink.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseAppRouter.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseApplication.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseBehavior.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseCollection.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseCollectionView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseLayoutView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseNestedModel.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/BaseView.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/EventNames.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/LayoutService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/ListenToRadio.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/LocationUtils.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/Middleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/Shell.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/core/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/DataServiceErrorType.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/HttpStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/enums/HttpVerbs.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/errors/DevError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/interfaces/DataServiceError.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/BaseAlertService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/BaseDataService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/EnvironmentVariables.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/InstanceManager.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/LanguageService.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/caches/FifoMemoryCache.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/services/data-providers/AjaxDataProvider.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/ConcurrencyHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/DataServiceErrorHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/FunctionHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/backbone/utils/UrlHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/core/ReactApplication.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/core/ReactLayoutView.tsx","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightHelpers.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightMiddleware.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightReducer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/FlightSimulator.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/constants/Actions.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/constants/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/data-layers/AjaxRequest.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/data-layers/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/enums/RequestStatus.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/Denormalizer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/Normalizer.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/normalizer/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/SimulatorHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/StateHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/flight/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseBulkFetch.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseFetch.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseInstance.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/hooks/UseService.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/ArrayHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/FetchHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/ObjectHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/RandomHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TimeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/common/src/react/utils/TypeHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/actions/ActionButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/actions/Actions.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","webpack://@clickview/curator/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/actions/actions.scss?6ece","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/Alert.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/AlertContent.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/AlertList.tsx","webpack://@clickview/curator/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/alert/alert.scss?009a","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/app-link/AppLink.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/div-button/DivButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/icon-button/IconButton.tsx","webpack://@clickview/curator/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/icon-button/icon-button.scss?a5ca","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/pagination/Pagination.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/Popup.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/PopupButtons.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/popup/PopupLoadingSpinner.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/SearchBar.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/SearchInput.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/SearchUtils.tsx","webpack://@clickview/curator/C:/ClickView Projects/@clickview/packages/libs/shared/src/components/search-bar/search-bar.scss?6e89","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/spinner-button/SpinnerButton.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/svg-container/SvgContainer.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/text/Text.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/components/tooltip/Tooltip.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/CacheDurations.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/ImageSizes.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/constants/LayoutRegions.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/ClassificationType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/GlanceFormat.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/Images.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/MasterType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/MediaQueries.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/enums/ThemeType.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/flight-requests/UserRequests.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseAlerts.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseCanSubmitForm.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseMediaQuery.tsx","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseReorderedItems.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/ImportedSvgs.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/add-to-playlist.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/close.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/delete.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/edit-clickview.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/edit.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/expand.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/minus.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/more.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/new-window.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/no-edit.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/plus.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/preview.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/search.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/share.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/up-down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/upload.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/visible-off.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/actions/visible-on.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/arrow-left.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/arrow-right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/caret.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-down.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-left.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-right.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/chevron-up.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/enter.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/arrows/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/archive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/bell.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/bookmark.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/broadcast.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/calendar.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/cog.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/compass.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-excel.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-img.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-pdf.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-ppt.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-word.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file-zip.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/file.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/folder.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/handle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/heart-outline.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/heart.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/history.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/interactive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/link.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/playlist.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/publisher-archive.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/resources.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/series.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/star-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/star.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/subject.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/tag.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/time.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/video.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/objects/white-wave.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/close-caption.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/contract.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/full-screen.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/mute.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/next.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/pause.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/play-circle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/play.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/previous.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-240.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-480.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/quality-hd.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/player/volume.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/settings.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check-circle-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check-circle.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/check.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/close-caption-badge.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/index.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/info.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/lock.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/question.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/verified.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/visible-off.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/visible-on.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/warning-o.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/images/svg/status/warning.svg","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/CollectionHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/FormHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/ImageHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/ReorderHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/StateHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/utils/SvgHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/CompaniesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/components/edit-company/EditCompany.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/components/edit-company/EditCompanyForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/components/edit-company/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/flight-requests/CompanyRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/utils/CompanyValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/companies/CompaniesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/companies/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/edit-company/EditCompanyView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/edit-company/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/new-company/NewCompanyView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/companies/views/new-company/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/DomainOptionsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/DefaultValueField.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/components/edit-domain-option-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/data-requests/DomainOptionRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/data-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/interfaces/models/DomainOption.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/interfaces/models/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/utils/validation/DomainOptionValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/delete-domain-option/DeleteDomainOptionView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/delete-domain-option/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/domain-options/DomainOptionsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/domain-options/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/edit-domain-option/EditDomainOptionView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/edit-domain-option/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/new-domain-option/NewDomainOptionView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/domain-options/views/new-domain-option/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/PeopleApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/components/edit-person/EditPerson.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/components/edit-person/EditPersonForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/components/edit-person/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/flight-requests/PersonRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/utils/PersonValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/edit-person/EditPersonView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/edit-person/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/new-person/NewPersonView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/new-person/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/people/PeopleView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/people/views/people/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/PlaylistsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist-nav/EditPlaylistNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/edit-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/playlist-search/PlaylistSearch.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/components/playlist-search/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/context/PlaylistsAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/context/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/flight-requests/CuratorPlaylistRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/utils/PlaylistNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/utils/validation/PlaylistValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/delete-playlist/DeletePlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/delete-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-audiences/EditPlaylistAudiencesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-subjects/EditPlaylistSubjectsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-videos/EditPlaylistVideosView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist-videos/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist/EditPlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/edit-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/new-playlist/NewPlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/new-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/playlist-search-results/PlaylistSearchResultsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/playlist-search-results/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/playlists/PlaylistsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/playlists/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/remove-video/RemoveVideoView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/playlists/views/remove-video/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/SeriesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/components/edit-series-details/EditSeriesDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/components/edit-series-details/EditSeriesDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/components/edit-series-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/components/edit-series-nav/EditSeriesNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/components/edit-series-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/context/SeriesAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/context/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/flight-requests/CuratorSeriesRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/utils/SeriesNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/utils/validation/SeriesValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/edit-series-audiences/EditSeriesAudiencesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/edit-series-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/edit-series-subjects/EditSeriesSubjectsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/edit-series-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/edit-series/EditSeriesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/edit-series/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/new-series/NewSeriesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/series/views/new-series/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/SubjectsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/audience-levels/AudienceLevels.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/audience-levels/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-audience-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-object-audiences/EditObjectAudiences.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/edit-object-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/select-audiences/SelectAudiences.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/audiences/select-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberList.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/classification-member-list/usePinnedVideo.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-nav/EditClassificationNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/edit-classification-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/select-classifications/SelectClassifications.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/classifications/select-classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/levels/edit-level-details/EditLevelDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/levels/edit-level-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/levels/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/levels/select-levels/SelectLevels.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/levels/select-levels/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/presentations/edit-presentation-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/presentations/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/presentations/presentation-select/PresentationSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/presentations/presentation-select/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/add-subject-members/AddSubjectMembers.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/add-subject-members/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-object-subjects/EditObjectSubjects.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-object-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-nav/EditSubjectNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/edit-subject-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/select-subjects/SelectSubjects.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/select-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-classifications/SubjectClassifications.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberList.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberListHeader.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/subjects/subject-member-list/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/top-nav/TopNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/components/top-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/context/PresentationContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/context/SubjectsAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/context/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/enums/OwnerType.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/enums/SubjectMemberType.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/enums/SubjectNodeType.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/hooks/UseSetDefaultPresentation.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/hooks/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/services/SubjectDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/services/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/SubjectMemberHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/SubjectsNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/validation/AudienceValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/validation/ClassificationValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/validation/LevelValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/validation/PresentationValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/validation/SubjectValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/delete-audience/DeleteAudienceView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/delete-audience/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audience/EditAudienceView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audience/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audiences-list/EditAudiencesListView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/edit-audiences-list/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/new-audience/NewAudienceView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/audiences/new-audience/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavUtils.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavView.tsx","webpack://@clickview/curator/./src/apps/subjects/views/classifications/classification-nav/classification-nav.scss?0e30","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/classification-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/delete-classification/DeleteClassificationView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/delete-classification/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification-members/EditClassificationMembersView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification-members/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification/EditClassificationView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/edit-classification/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/new-classification/NewClassificationView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/new-classification/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/remove-classification-member/RemoveClassificationMemberView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/classifications/remove-classification-member/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/edit-level/EditLevelView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/edit-level/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/edit-levels-list/EditLevelsListView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/edit-levels-list/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/new-level/NewLevelView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/levels/new-level/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentation/EditPresentationView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentations-list/EditPresentationsListView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/edit-presentations-list/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/new-presentation/NewPresentationView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/new-presentation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/select-presentation/SelectPresentationView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/presentations/select-presentation/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersUtils.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/add-subject-members/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/delete-subject/DeleteSubjectView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/delete-subject/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersUtils.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject-members/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject/EditSubjectView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/edit-subject/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/new-subject/NewSubjectView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/new-subject/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/remove-subject-member/RemoveSubjectMemberView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/remove-subject-member/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-classifications/SubjectClassificationsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-nav/SubjectNavView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/subjects/subject-nav/index.ts","webpack://@clickview/curator/./src/apps/subjects/views/subjects/subject-nav/subject-nav.scss?c038","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/top-nav/TopNavView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/subjects/views/top-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/ThemesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/components/edit-theme/EditTheme.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/components/edit-theme/ThemeValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/components/edit-theme/edit-data/EditGlanceData.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/components/edit-theme/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/context/ThemesAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/flight-requests/ThemeRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/delete-theme/DeleteThemeView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/delete-theme/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/edit-theme/EditThemeView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/edit-theme/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/new-theme/NewThemeView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/new-theme/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/themes/ThemesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/themes/views/themes/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/VideosApplication.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/EditGlance.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/EditVideoDetails.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/VideoDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/components/edit-video-details/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/components/edit-video-nav/EditVideoNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/components/edit-video-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/context/VideosAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/context/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/flight-requests/CuratorVideoRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/utils/VideoNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/utils/VideoValidation.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video-aliases/EditVideoAliasesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video-aliases/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video-audiences/EditVideoAudiencesView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video-subjects/EditVideoSubjectsView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video/EditVideoView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/edit-video/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/apps/videos/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/aliases/AddAlias.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/aliases/AliasList.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/aliases/Aliases.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/aliases/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/back-button/BackButton.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/back-button/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/checkbox/Checkbox.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/checkbox/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/forms/file-select/FileSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/forms/file-select/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/forms/image-select/ImageSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/forms/image-select/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/forms/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/image-cropper/ImageCropper.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/image-cropper/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-collection/ObjectCollection.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-collection/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-header/ObjectHeader.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-header/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-list-nav/ObjectListNav.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-list-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-list/ObjectList.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/object-list/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/rating-select/RatingSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/rating-select/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tabs/Tabs.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tabs/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree-select/TreeSelect.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree-select/TreeSelectHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree-select/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree/Tree.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree/TreeNode.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree/TreeNodeLink.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/tree/index.ts","webpack://@clickview/curator/./src/shared/components/tree/tree.scss?3414","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/video-list/SortableVideoList.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/video-list/VideoItem.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/video-list/VideoList.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/components/video-list/index.ts","webpack://@clickview/curator/./src/shared/components/video-list/video-list.scss?b09f","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/CuratorActions.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/DataPrefixes.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/FileExtensions.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/Layouts.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/RadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/constants/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/context/ImageStorageContext.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/context/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/enums/CurationStatus.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/enums/CuratorGroup.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/flight-requests/AliasRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/flight-requests/RatingRequests.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/layouts/curator-layout/CuratorLayout.hbs","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/layouts/curator-layout/CuratorLayoutView.tsx","webpack://@clickview/curator/./src/shared/layouts/curator-layout/curator-layout.scss?5cf2","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/layouts/curator-layout/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/layouts/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/layouts/primitives/LayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/layouts/primitives/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/services/CuratorAppNavService.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/services/ImageUploadDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/services/LanguageDataService.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/services/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/CuratorCollectionHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/ImageSelectHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/NavHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/PermissionsHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/PropHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/StringHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/TreeHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/UserHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/views/image-upload/ImageUploadView.tsx","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/views/image-upload/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/src/shared/views/index.ts","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"FontAwesome\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"Backbone\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"Marionette\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"Cropper\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"DOMPurify\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"Handlebars\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"Polyglot\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"React\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"ReactBootstrap\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"ReactDOM\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"ReactRedux\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"SortableHOC\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"ReactTransitionGroup\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"_\"","file://C:/ClickView Projects/@clickview/packages/projects/curator/external \"Yup\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+B;AACyI;AAC/H;AACP;AACkB;AAChB;AACE;AACD;AAC6B;AACP;AACf;;AAE5C;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8CAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,gEAAM;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,+DAAK;AACjB;AACA;AACA,kBAAkB,gEAAM;;AAExB,QAAQ,0BAA0B;AAClC;AACA;;AAEA;AACA,qCAAqC,+DAAK;AAC1C,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sDAAsD,0BAA0B;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2DAAa;AACb;AACA;AACA;AACA,eAAe,wDAAU;AACzB,cAAc,KAAqC,GAAG,4DAAS,6HAA6H,SAAgB;AAC5M;AACA;;AAEA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA,wBAAwB;AACxB;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,sBAAsB,oDAAM;AAC5B,sBAAsB,oDAAM;AAC5B,uBAAuB,oDAAM;AAC7B,sBAAsB,oDAAM;AAC5B,kBAAkB,oDAAM;AACxB,sBAAsB,oDAAM,GAAG;AAC/B,EAAE,uDAAS;AACX,QAAQ,IAAqC;AAC7C,iDAAiD,KAAqC,GAAG,4DAAS,uJAAuJ,SAAgB;AACzQ;AACA,GAAG;AACH,EAAE,uDAAS;AACX;AACA;AACA;AACA;AACA,GAAG;;AAEH,0BAA0B,wDAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,2BAA2B,yDAAW;AACtC;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT,cAAc,IAAqC;AACnD;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;AACH,4BAA4B,yDAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT,cAAc,IAAqC;AACnD;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,sCAAsC,yDAAW;AACjD;AACA;AACA,KAAK;AACL,GAAG;AACH,iCAAiC,yDAAW;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO,IAAI;AACX,KAAK;AACL,GAAG;AACH,0BAA0B,yDAAW;AACrC,mHAAmH,kDAAkD;AACrK;AACA;AACA;AACA,2BAA2B,iDAAS;AACpC;AACA,OAAO;AACP;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA,WAAW,0EAAwB,CAAC,qDAAW;AAC/C;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,aAAa,yDAAO;AACpB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH,EAAE,uDAAS;AACX;AACA;AACA;AACA,GAAG;AACH,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE,uDAAS;AACX,6DAA6D,yDAAO;AACpE;AACA;AACA;AACA,GAAG;AACH,EAAE,uDAAS;AACX,6DAA6D,yDAAO;AACpE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,uDAAS;AACX,6DAA6D,yDAAO;AACpE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,EAAE,uDAAS;AACX,6DAA6D,yDAAO;AACpE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA;AACA,GAAG;AACH,wBAAwB,yDAAW;AACnC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,sBAAsB,yDAAW;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,aAAoB;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,qBAAqB,yDAAW;AAChC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,oBAAoB,yDAAW;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,aAAoB;AACtC;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH,mBAAmB,yDAAW;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,uBAAuB,yDAAW;AAClC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,KAAqC;AAC7C;;AAEA;AACA,uFAAuF,KAAqC,GAAG,4DAAS,qNAAqN,SAAgB;AAC7W;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,qBAAqB,yDAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,yDAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH,cAAc,qDAAO;AACrB,YAAY,yDAAO;AACnB,GAAG;AACH,gBAAgB,qDAAO;AACvB;AACA,GAAG;;AAEH,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uDAAS;AACX,QAAQ,IAAqC;AAC7C,uBAAuB,KAAqC,GAAG,4DAAS,iMAAiM,eAAe,kBAAkB,eAAe,cAAc,SAAgB;AACvV;AACA,GAAG;AACH,SAAS,2DAAa;AACtB;AACA,GAAG,cAAc,2DAAa,2IAA2I,8CAAQ;AACjL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uJAAuJ;AACvJ;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,+CAA+C,uEAAa;AAC5D;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO,UAAU,uEAAa;AAC9B;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yDAAS,2BAA2B;AACzE,KAAK;AACL,uBAAuB,yDAAS;AAChC,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kKAAkK,qDAAe,GAAG,+CAAS;;AAE7L;AACA,YAAY,oDAAM;AAClB;AACA;AACA,GAAG;AACH,SAAS,yDAAW;AACpB,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uDAAS;AACX;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,MAAM,IAAqC;AAC3C,cAAc,KAAqC,GAAG,4DAAS,wHAAwH,SAAgB;AACvM;;AAEA;AACA,6BAA6B,KAAqC,GAAG,4DAAS,uGAAuG,SAAgB;AACrM;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,EAAE,uDAAS;AACX,QAAQ,IAAqC;AAC7C,iBAAiB,KAAqC,GAAG,4DAAS,qNAAqN,EAAE,YAAY,SAAS,uCAAuC,EAAE,kBAAkB,SAAS,aAAa,SAAgB;AAC/Y,mDAAmD,KAAqC,GAAG,4DAAS,wGAAwG,iCAAiC,SAAgB;AAC7P,0DAA0D,KAAqC,GAAG,4DAAS,+GAA+G,wCAAwC,SAAgB;AAClR,6DAA6D,KAAqC,GAAG,4DAAS,8FAA8F,sCAAsC,SAAgB;AAClQ;AACA,GAAG;AACH;AACA;AACA,EAAE,uDAAS;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA,KAAK;AACL;;AAEA;AACA,+BAA+B;AAC/B;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,2DAAa;AAC1B;AACA,OAAO;AACP;;AAEA,WAAW,2DAAa;AACxB;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;;AAEA,WAAW,2DAAa;AACxB;AACA,KAAK;AACL;;AAEA,SAAS,2DAAa,uBAAuB;AAC7C;;AAEA;AACA;AACA,wDAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,SAAS,2DAAa;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wDAAwD;AACxD;AACA,WAAW;AACX;;AAEA;AACA,iBAAiB,2DAAa,8BAA8B;AAC5D;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,2DAAa,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK,CAAC,+CAAS;;AAEf;AACA,WAAW,8DAAoB;AAC/B;AACA;;AAEA;AACA;AACA,WAAW,2DAAa;AACxB,kBAAkB,KAAqC,GAAG,4DAAS,8NAA8N,SAAgB;AACjT,aAAa,2DAAa,uBAAuB;AACjD;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA,SAAS,8DAAoB;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,iCAAiC;AACjC;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,oDAAoD,mEAAS;AAC7D,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA,KAAK;;AAEL,uBAAuB,2DAAa,yIAAyI,8CAAQ;AACrL;;AAEA;AACA,CAAC,CAAC,+CAAS;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4JAA4J,2DAAa;AACzK;;AAEA;AACA,CAAC,CAAC,+CAAS;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAqC,GAAG,4DAAS,gHAAgH,aAAa,EAAE,aAAa,0BAA0B,SAAgB;AACtP,8BAA8B,KAAqC,GAAG,4DAAS,2GAA2G,2CAA2C,SAAgB;AACrP,iDAAiD,KAAqC,GAAG,4DAAS,oHAAoH,qCAAqC,SAAgB;AAC3Q,wDAAwD,KAAqC,GAAG,4DAAS,2HAA2H,4CAA4C,SAAgB;AAChS,2DAA2D,KAAqC,GAAG,4DAAS,0GAA0G,0CAA0C,SAAgB;AAChR;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,2DAAa;AAC5B;AACA,SAAS;AACT;;AAEA,aAAa,2DAAa;AAC1B;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA,aAAa,2DAAa;AAC1B;AACA,OAAO;AACP;;AAEA,WAAW,2DAAa,uBAAuB;AAC/C;;AAEA;AACA,CAAC,CAAC,+CAAS;AACX;;AAEwa;AACxa;;;;;;;;;;;;;AC7rDA;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE,IAAI;AACN;;AAEA;;AAEe,0EAAW,EAAC;;;;;;;;;;;;;ACxFd;;AAEb,cAAc,mBAAO,CAAC,yDAAU;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACtGA;AAAA;AAAA;AAAwC;AACV;;AAE9B;AACA,eAAe,6DAAS,CAAC,gDAAI;;AAEd,uEAAQ,EAAC;;;;;;;;;;;;;ACNxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwC;AACE;AACN;AACA;AACA;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,qDAAS;AAChC,2BAA2B,sDAAU;AACrC,qBAAqB,mDAAO;AAC5B,qBAAqB,mDAAO;AAC5B,qBAAqB,mDAAO;;AAEb,mEAAI,EAAC;;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AACE;AACN;AACA;AACA;;AAE9C;AACA;AA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;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,6DAAQ;AACf;AACA;AACA,cAAc,4DAAO;AACrB;AACA,aAAa,mEAAc;AAC3B;AACA,aAAa,6DAAS;AACtB;AACA,GAAG;AACH,cAAc,2DAAM;AACpB;;AAEA,QAAQ,6DAAQ;AAChB,aAAa,+DAAW;AACxB;AACA;AACA,sCAAsC,GAAG,oEAAe;AACxD;AACA;AACA,YAAY,iEAAa,QAAQ,gEAAY;AAC7C,YAAY,+DAAW,QAAQ,8DAAU;AACzC;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,mEAAc;AAC7B;AACA;AACA;AACA,wBAAwB,iDAAK;AAC7B;AACA;AACA;AACA;AACA;;AAEA,MAAM,0DAAK;AACX;AACA;AACA,KAAK;AACL,GAAG,UAAU,0DAAK;AAClB;AACA;AACA,KAAK;AACL;;AAEA;AACA,gBAAgB,yDAAY,GAAG,sDAAU;AACzC,yBAAyB,iDAAI;;AAE7B;AACA,EAAE,6DAAS;AACX;AACA;AACA;AACA;AACA;AACA,IAAI,+DAAW;AACf,GAAG;AACH;AACA;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;ACpKzB;AAAA;AAAqC;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,SAAS,4DAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc,yEAAU,EAAC;;;;;;;;;;;;;AC7B1B;AAAA;AAAA;AAAwC;AACL;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA,SAAS,2DAAO,oBAAoB,6DAAS;AAC7C;;AAEe,6EAAc,EAAC;;;;;;;;;;;;;ACnB9B;AAAA;AAAA;AAAA;AAAkC;AACM;AACU;;AAElD;AACA;AACA;;AAEA;AACA,qBAAqB,kDAAM,GAAG,kDAAM;;AAEpC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,6DAAS;AACf,MAAM,kEAAc;AACpB;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;AC3B1B;AAAA;AAAA;AAA0C;AACG;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,SAAS,gEAAY,WAAW,8DAAU;AAC1C;;AAEe,8EAAe,EAAC;;;;;;;;;;;;;ACjB/B;AAAA;AAAA;AAAkC;AACW;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,SAAS,gEAAY,WAAW,0DAAM;AACtC;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;ACjBzB;AAAA;AAAA;AAAA;AAAA;AAAyC;AACH;AACD;AACC;;AAEtC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,OAAO,4DAAQ,WAAW,4DAAQ;AAClC;AACA;AACA,gBAAgB,8DAAU;AAC1B,sBAAsB,4DAAQ;AAC9B;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC9C5B;AAAA;AAAA;AAAkC;AACW;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,SAAS,gEAAY,WAAW,0DAAM;AACtC;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;ACjBzB;AAAA;AAAA;AAAA;AAA0C;AACL;AACQ;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,SAAS,gEAAY;AACrB,IAAI,4DAAQ,mCAAmC,8DAAU;AACzD;;AAEe,+EAAgB,EAAC;;;;;;;;;;;;;AC3DhC;AAAA;AAAA;AAA4C;AACF;;AAE1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA,OAAO,+DAAW;AAClB,WAAW,8DAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;AC7BxB;AAAA;AAAA;AAAA;AAAqC;AACO;AACE;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA,OAAO,4DAAQ;AACf,WAAW,gEAAY;AACvB;AACA,gBAAgB,+DAAW;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;AChC1B;AAAA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;ACnBzB;AAAA;AAAA;AAAA;AAAA;AAAkC;AACI;AACH;AACE;;AAErC;AACA;;AAEA;AACA,kBAAkB,kDAAM,GAAG,kDAAM;AACjC;;AAEA;AACA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B,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;AChB1B;AAAA;AAA8C;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA,MAAM,wDAAY;AAClB;AACA;AACA;AACA;AACA;;AAEe,sEAAO,EAAC;;;;;;;;;;;;;AC7BvB;AAAA;AAA8C;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,SAAS,wDAAY;AACrB;;AAEe,sEAAO,EAAC;;;;;;;;;;;;;ACtBvB;AAAA;AAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,eAAe,wDAAY;AAC3B;AACA;;AAEe,sEAAO,EAAC;;;;;;;;;;;;;ACtBvB;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,6EAAc,EAAC;;;;;;;;;;;;;ACzB9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsD;AACN;AACJ;AACA;AACQ;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,oEAAgB;;AAE7B;AACA;AACA;;AAEA;AACA,aAAa,iEAAa;;AAE1B;AACA;AACA;AACA,aAAa,mEAAe;;AAE5B;AACA;;AAEA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;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;ACzBxB;AAAA;AAAwC;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6DAAS;AAClB;;AAEe,oEAAK,EAAC;;;;;;;;;;;;;ACnCrB;AAAA;AAAwC;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6DAAS;AAClB;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;AC5BzB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,iEAAE,EAAC;;;;;;;;;;;;;ACpClB;AAAA;AAAA;AAAoD;AACP;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,kBAAkB,mEAAe,aAAa,kBAAkB,EAAE,MAAM,2DAAe;AACvF,SAAS,gEAAY;AACrB;AACA;;AAEe,0EAAW,EAAC;;;;;;;;;;;;;ACnC3B;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,sEAAO,EAAC;;;;;;;;;;;;;ACzBvB;AAAA;AAAA;AAAyC;AACJ;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAQ,mBAAmB,8DAAU;AAC/D;;AAEe,0EAAW,EAAC;;;;;;;;;;;;;AChC3B;AAAA;AAAA;AAA8B;AACS;;AAEvC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,gDAAI;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qDAAS;;AAE3B,uEAAQ,EAAC;;;;;;;;;;;;;;ACrCxB;AAAA;AAAA;AAA0C;AACL;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,4DAAQ;AACf;AACA;AACA;AACA;AACA,YAAY,8DAAU;AACtB;AACA;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;ACpC1B;AAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;AClCxB;AAAA;AAAA;AAAA;AAAwC;AACA;AACF;;AAEtC;AACA,gBAAgB,oDAAQ,IAAI,oDAAQ;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAS,cAAc,qDAAS;;AAEzC,oEAAK,EAAC;;;;;;;;;;;;;AC1BrB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;AC9BxB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,2EAAY,EAAC;;;;;;;;;;;;;AC5B5B;AAAA;AAAA;AAAA;AAA0C;AACI;AACD;;AAE7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,gEAAY,WAAW,8DAAU;AACxC;AACA;AACA,cAAc,gEAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,4EAAa,EAAC;;;;;;;;;;;;;AC7D7B;AAAA;AAAA;AAAA;AAAwC;AACA;AACF;;AAEtC;AACA,gBAAgB,oDAAQ,IAAI,oDAAQ;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAS,cAAc,qDAAS;;AAEzC,oEAAK,EAAC;;;;;;;;;;;;;AC1BrB;AAAA;AAAA;AAA0C;AACG;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,gEAAY,WAAW,8DAAU;AACtC;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAA;AAAsD;AACd;AACF;;AAEtC;AACA,uBAAuB,oDAAQ,IAAI,oDAAQ;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6DAAS,qBAAqB,4DAAgB;;AAErE,2EAAY,EAAC;;;;;;;;;;;;;AC1B5B;AAAA;AAAA;AAAA;AAAgD;AACV;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+DAAW,WAAW,iEAAa,WAAW,4DAAQ;AAC/D;;AAEe,mEAAI,EAAC;;;;;;;;;;;;;ACpCpB;AAAA;AAAA;AAAA;AAAgD;AACN;AACC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+DAAW,WAAW,iEAAa,iBAAiB,8DAAU;AACvE;;AAEe,qEAAM,EAAC;;;;;;;;;;;;;AC/BtB;AAAA;AAAsC;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oDAAQ;AACjD;AACA;;AAEA;AACA,gBAAgB,oDAAQ;;AAET,sEAAO,EAAC;;;;;;;;;;;;;ACxEvB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;ACtBzB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,wEAAS,EAAC;;;;;;;;;;;;;ACjBzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACE;AACL;AACE;AACS;AACd;AACK;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2DAAO;AACb,WAAW,4DAAQ,QAAQ,iDAAK;AAChC;AACA,SAAS,4DAAQ,oBAAoB,6DAAS,CAAC,gEAAY,CAAC,4DAAQ;AACpE;;AAEe,qEAAM,EAAC;;;;;;;;;;;;;AChCtB;AAAA;AAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gEAAY;AAC1C;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;AC3BxB,iBAAiB,mBAAO,CAAC,mEAAe;AACxC,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C,OAAO,SAAS,GAAG,mBAAO,CAAC,6DAAY;AACvC;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;;;;;;;;;;;ACpSA,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C,OAAO,QAAQ,GAAG,mBAAO,CAAC,6DAAY;AACtC;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mCAAmC,EAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D,iCAAiC,IAAI;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACjZA,iBAAiB,mBAAO,CAAC,mEAAe;AACxC,gBAAgB,mBAAO,CAAC,iEAAc;AACtC,oBAAoB,mBAAO,CAAC,yEAAkB;AAC9C,qBAAqB,mBAAO,CAAC,2EAAmB;AAChD,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB,+BAA+B;AAC9D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,8BAA8B;AACjD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,mBAAmB,6BAA6B;AAChD;;AAEA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7MA,OAAO,WAAW,GAAG,mBAAO,CAAC,mEAAe;AAC5C;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,WAAW,EAAE;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,gDAAgD;AAChD;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,kBAAkB,6BAA6B;;AAE/C;AACA;AACA;AACA;;AAEA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA,QAAQ,kBAAkB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClPA,cAAc,mBAAO,CAAC,6DAAY;AAClC,eAAe,mBAAO,CAAC,+DAAa;AACpC,iBAAiB,mBAAO,CAAC,mEAAe;AACxC,qBAAqB,mBAAO,CAAC,2EAAmB;AAChD,oBAAoB,mBAAO,CAAC,yEAAkB;AAC9C,gBAAgB,mBAAO,CAAC,iEAAc;AACtC;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;AAC1B;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,mEAAe;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,UAAU,mBAAmB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;;;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,iEAAc;;AAE1B;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf,cAAc,IAAI,GAAG,GAAG,GAAG,GAAG,mCAAmC,IAAI;AACrE,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG;AACnD,eAAe,IAAI,GAAG,IAAI;AAC1B,mBAAmB,IAAI;AACvB,aAAa,IAAI,6BAA6B,GAAG;AACjD,YAAY,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA,+CAA+C,GAAG;AAClD,oGAAoG,GAAG;AACvG,oFAAoF,GAAG;AACvF;AACA,WAAW,IAAI;AACf;AACA;AACA,0BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,IAAI;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,GAAG,SAAS,GAAG,WAAW,GAAG;AACrE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,IAAI,EAAE,IAAI;AACnC;AACA,4BAA4B,IAAI;AAChC,wBAAwB,IAAI,KAAK,GAAG,GAAG,GAAG;AAC1C,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA,uCAAuC,GAAG;AAC1C,gEAAgE,GAAG;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,IAAI;AACtB;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA,8BAA8B,IAAI;AAClC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,kCAAkC,eAAe,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,+DAA+D,GAAG,UAAU,GAAG;AAC/E;;AAEA;AACA;AACA,2CAA2C,WAAW,EAAE;AACxD;;AAEA,yCAAyC,eAAe,EAAE;;AAE1D,yCAAyC,KAAK;AAC9C,2CAA2C,EAAE,kCAAkC,KAAK,6CAA6C,KAAK;AACtI;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB;;AAExB;AACA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA,0BAA0B,oCAAoC,UAAU;AACxE;AACA,2FAA2F,GAAG,+BAA+B,GAAG,gCAAgC,GAAG,aAAa,GAAG,6BAA6B,GAAG;AACnN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB,gCAAgC,GAAG;AACnC;AACA,6BAA6B,GAAG;AAChC,gBAAgB,IAAI;AACpB;AACA,CAAC;;AAED;AACA;AACA;AACA;;;;;;;;;;;;;AC/OA;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,IAAI,IAAqC;AACzC,6BAA6B,mBAAO,CAAC,gGAA4B;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,cAAc,mBAAO,CAAC,yDAAU;AAChC,aAAa,mBAAO,CAAC,mEAAe;;AAEpC,2BAA2B,mBAAO,CAAC,gGAA4B;AAC/D,qBAAqB,mBAAO,CAAC,4EAAkB;;AAE/C;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,6BAA6B;AAC7B,QAAQ;AACR;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,KAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,KAAqC,4FAA4F,SAAM;AAC7I;AACA;;AAEA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC9kBA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,IAAqC;AACzC,gBAAgB,mBAAO,CAAC,yDAAU;;AAElC;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,8FAA2B;AACtD,CAAC,MAAM,EAIN;;;;;;;;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA;;;;;;;;;;;;;ACXa;;AAEb;AACA;AACA,CAAC;;AAED,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,aAAa,mBAAO,CAAC,oBAAO;;AAE5B;;AAEA,iBAAiB,mBAAO,CAAC,6DAAY;;AAErC;;AAEA,cAAc,mBAAO,CAAC,iFAAsB;;AAE5C;;AAEA,yBAAyB,mBAAO,CAAC,kFAAoB;;AAErD;;AAEA,aAAa,mBAAO,CAAC,sEAAS;;AAE9B,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP,mDAAmD;AACnD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA,yBAAyB,qCAAqC;AAC9D;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;;AAEA;AACA,2CAA2C,wCAAwC;AACnF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,qCAAqC,+BAA+B;AACpE;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA,yCAAyC,wCAAwC;AACjF,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;;AAEA;AACA;AACA,eAAe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;;AAEA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,wCAAwC,+CAA+C;AACvF;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,8B;;;;;;;;;;;;AC1yBa;;AAEb,iBAAiB,mBAAO,CAAC,kFAAe,U;;;;;;;;;;;;ACF3B;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;;;;;;ACzDa;;AAEb;AACA;AACA,CAAC;;AAED,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P,kCAAkC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAErpB,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,aAAa,mBAAO,CAAC,oBAAO;;AAE5B;;AAEA,iBAAiB,mBAAO,CAAC,6DAAY;;AAErC;;AAEA,uBAAuB,mBAAO,CAAC,8EAAkB;;AAEjD;;AAEA,sBAAsB,mBAAO,CAAC,4EAAiB;;AAE/C;;AAEA,oBAAoB,mBAAO,CAAC,qFAAgB;;AAE5C;;AAEA,iBAAiB,mBAAO,CAAC,+EAAa;;AAEtC;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yCAAyC,2GAA2G;AACpJ;AACA;;AAEA;AACA,uCAAuC,+FAA+F;AACtI;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA,+CAA+C;;AAE/C;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;A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ACzC;AACA;;AAEA,iCAAiC,SAAS;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,+CAA+C,YAAY;AAC3D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AC7Da;;AAEb,iBAAiB,mBAAO,CAAC,qFAAgB,U;;;;;;;;;;;;ACF5B;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,WAAW;AACjC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oBAAoB,WAAW;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;;;AAIb,IAAI,IAAqC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;ACpLa;;AAEb,IAAI,KAAqC,EAAE,EAE1C;AACD,mBAAmB,mBAAO,CAAC,iGAA+B;AAC1D;;;;;;;;;;;;;ACNa;;AAEb;AACA;AACA,CAAC;;AAED,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,sCAAsC,uCAAuC,kBAAkB;;AAE/F,kCAAkC,0BAA0B,0CAA0C,gBAAgB,uBAAuB,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAE7L,oBAAoB,mBAAO,CAAC,gGAAe;;AAE3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,uFAAuF,aAAa;AACpG;AACA;;AAEA;AACA;AACA,KAAK;;AAEL,wFAAwF,+HAA+H,IAAI,gEAAgE;AAC3R;AACA;;AAEA,oC;;;;;;;;;;;;ACzCa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEO;AACP,8FAA8F,aAAa;AAC3G;AACA;;AAEA;AACA,uEAAuE,eAAe;AACtF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,qBAAqB,YAAY;AACjC;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEA;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,wEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;AACA;AACA,KAAK,IAAI;AACT,GAAG;AACH,C;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;;;AAIb,IAAI,IAAqC;AACzC;AACA;;AAEA,8CAA8C,cAAc;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;;AAGA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,KAAK,EAAE;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C;;AAE1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH;;AAEpH;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mCAAmC;;AAEnC,oCAAoC;;AAEpC;AACA;AACA,iCAAiC;;AAEjC,sCAAsC;;AAEtC;AACA,oBAAoB;;AAEpB,sBAAsB;;AAEtB;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;AChgCa;;AAEb,IAAI,KAAqC,EAAE,EAE1C;AACD,mBAAmB,mBAAO,CAAC,oGAAgC;AAC3D;;;;;;;;;;;;;ACNa;;AAEb,kCAAkC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAErpB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD,CAnED,EAAY,SAAS,KAAT,SAAS,MAArB,E;;;;;;;;;;;ACvFA,kBAAkB,6lB;;;;;;;;;;;ACAlB,kBAAkB,4V;;;;;;;;;;;ACAlB,kBAAkB,ylB;;;;;;;;;;;ACAlB,kBAAkB,+E;;;;;;;;;;;ACAlB,kBAAkB,igL;;;;;;;;;;;ACAlB,kBAAkB,wb;;;;;;;;;;;ACAlB,kBAAkB,6O;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA,kBAAkB,6D;;;;;;;;;;;ACAlB,kBAAkB,8L;;;;;;;;;;;ACAlB,kBAAkB,wb;;;;;;;;;;;ACAlB,kBAAkB,imB;;;;;;;;;;;ACAlB,kBAAkB,mL;;;;;;;;;;;ACAlB,kBAAkB,irB;;;;;;;;;;;ACAlB,kBAAkB,gF;;;;;;;;;;;ACAlB,kBAAkB,0qB;;;;;;;;;;;ACAlB,kBAAkB,sO;;;;;;;;;;;ACAlB,kBAAkB,6G;;;;;;;;;;;ACAlB,kBAAkB,gZ;;;;;;;;;;;ACAlB,kBAAkB,qsB;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,oU;;;;;;;;;;;ACAlB,kBAAkB,wU;;;;;;;;;;;ACAlB,kBAAkB,uF;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,sR;;;;;;;;;;;ACAlB,kBAAkB,mR;;;;;;;;;;;ACAlB,kBAAkB,gS;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA,kBAAkB,wsB;;;;;;;;;;;ACAlB,kBAAkB,qgB;;;;;;;;;;;ACAlB,kBAAkB,wL;;;;;;;;;;;ACAlB,kBAAkB,8Z;;;;;;;;;;;ACAlB,kBAAkB,2Q;;;;;;;;;;;ACAlB,kBAAkB,u/B;;;;;;;;;;;ACAlB,kBAAkB,8qZ;;;;;;;;;;;ACAlB,kBAAkB,mQ;;;;;;;;;;;ACAlB,kBAAkB,4Z;;;;;;;;;;;ACAlB,kBAAkB,q4C;;;;;;;;;;;ACAlB,kBAAkB,wkB;;;;;;;;;;;ACAlB,kBAAkB,yR;;;;;;;;;;;ACAlB,kBAAkB,yW;;;;;;;;;;;ACAlB,kBAAkB,2N;;;;;;;;;;;ACAlB,kBAAkB,gW;;;;;;;;;;;ACAlB,kBAAkB,8R;;;;;;;;;;;ACAlB,kBAAkB,onB;;;;;;;;;;;ACAlB,kBAAkB,wQ;;;;;;;;;;;ACAlB,kBAAkB,u2B;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA,kBAAkB,mO;;;;;;;;;;;ACAlB,kBAAkB,ozB;;;;;;;;;;;ACAlB,kBAAkB,+0D;;;;;;;;;;;ACAlB,kBAAkB,y4D;;;;;;;;;;;ACAlB,kBAAkB,+nB;;;;;;;;;;;ACAlB,kBAAkB,yyB;;;;;;;;;;;ACAlB,kBAAkB,uc;;;;;;;;;;;ACAlB,kBAAkB,mT;;;;;;;;;;;ACAlB,kBAAkB,ypB;;;;;;;;;;;ACAlB,kBAAkB,+qD;;;;;;;;;;;ACAlB,kBAAkB,mc;;;;;;;;;;;ACAlB,kBAAkB,qW;;;;;;;;;;;ACAlB,kBAAkB,mnB;;;;;;;;;;;ACAlB,kBAAkB,w2B;;;;;;;;;;;ACAlB,kBAAkB,kK;;;;;;;;;;;ACAlB,kBAAkB,yK;;;;;;;;;;;;ACAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZA,kBAAkB,8Z;;;;;;;;;;;ACAlB,kBAAkB,6Q;;;;;;;;;;;ACAlB,kBAAkB,0R;;;;;;;;;;;ACAlB,kB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","file":"curator-app.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"Backbone\"), require(\"Marionette\"), require(\"Handlebars\"), require(\"React\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"_\"), require(\"Cropper\"), require(\"FontAwesome\"), require(\"DOMPurify\"), require(\"Polyglot\"), require(\"ReactBootstrap\"), require(\"Yup\"), require(\"SortableHOC\"), require(\"ReactTransitionGroup\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"Backbone\", \"Marionette\", \"Handlebars\", \"React\", \"ReactDOM\", \"ReactRedux\", \"_\", \"Cropper\", \"FontAwesome\", \"DOMPurify\", \"Polyglot\", \"ReactBootstrap\", \"Yup\", \"SortableHOC\", \"ReactTransitionGroup\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/curator\"] = factory(require(\"Backbone\"), require(\"Marionette\"), require(\"Handlebars\"), require(\"React\"), require(\"ReactDOM\"), require(\"ReactRedux\"), require(\"_\"), require(\"Cropper\"), require(\"FontAwesome\"), require(\"DOMPurify\"), require(\"Polyglot\"), require(\"ReactBootstrap\"), require(\"Yup\"), require(\"SortableHOC\"), require(\"ReactTransitionGroup\"));\n\telse\n\t\troot[\"@clickview/curator\"] = factory(root[\"Backbone\"], root[\"Marionette\"], root[\"Handlebars\"], root[\"React\"], root[\"ReactDOM\"], root[\"ReactRedux\"], root[\"_\"], root[\"Cropper\"], root[\"FontAwesome\"], root[\"DOMPurify\"], root[\"Polyglot\"], root[\"ReactBootstrap\"], root[\"Yup\"], root[\"SortableHOC\"], root[\"ReactTransitionGroup\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_backbone__, __WEBPACK_EXTERNAL_MODULE_backbone_marionette__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_cropperjs__, __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__, __WEBPACK_EXTERNAL_MODULE_dompurify__, __WEBPACK_EXTERNAL_MODULE_node_polyglot__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE_yup__, __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__, __WEBPACK_EXTERNAL_MODULE_react_transition_group__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","import * as React from 'react';\nimport { Children, createContext, useContext, useRef, useEffect, useReducer, useCallback, useMemo, createElement, useLayoutEffect, forwardRef, Component } from 'react';\nimport isEqual from 'react-fast-compare';\nimport deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport clone from 'lodash-es/clone';\nimport toPath from 'lodash-es/toPath';\nimport invariant from 'tiny-warning';\nimport { unstable_runWithPriority, LowPriority } from 'scheduler';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport cloneDeep from 'lodash-es/cloneDeep';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\nvar isObject = function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n};\nvar isInteger = function isInteger(obj) {\n return String(Math.floor(Number(obj))) === obj;\n};\nvar isString = function isString(obj) {\n return Object.prototype.toString.call(obj) === '[object String]';\n};\nvar isNaN$1 = function isNaN(obj) {\n return obj !== obj;\n};\nvar isEmptyChildren = function isEmptyChildren(children) {\n return Children.count(children) === 0;\n};\nvar isPromise = function isPromise(value) {\n return isObject(value) && isFunction(value.then);\n};\nvar isInputEvent = function isInputEvent(value) {\n return value && isObject(value) && isObject(value.target);\n};\nfunction getActiveElement(doc) {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nfunction getIn(obj, key, def, p) {\n if (p === void 0) {\n p = 0;\n }\n\n var path = toPath(key);\n\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n\n return obj === undefined ? def : obj;\n}\nfunction setIn(obj, path, value) {\n var res = clone(obj);\n var resVal = res;\n var i = 0;\n var pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n var currentPath = pathArray[i];\n var currentObj = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n var nextPath = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\nfunction setNestedObjectValues(object, value, visited, response) {\n if (visited === void 0) {\n visited = new WeakMap();\n }\n\n if (response === void 0) {\n response = {};\n }\n\n for (var _i = 0, _Object$keys = Object.keys(object); _i < _Object$keys.length; _i++) {\n var k = _Object$keys[_i];\n var val = object[k];\n\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n\nvar FormikContext =\n/*#__PURE__*/\ncreateContext(undefined);\nvar FormikProvider = FormikContext.Provider;\nvar FormikConsumer = FormikContext.Consumer;\nfunction useFormikContext() {\n var formik = useContext(FormikContext);\n !!!formik ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Formik context is undefined, please verify you are calling useFormikContext() as child of a <Formik> component.\") : invariant(false) : void 0;\n return formik;\n}\n\nfunction formikReducer(state, msg) {\n switch (msg.type) {\n case 'SET_VALUES':\n return _extends({}, state, {\n values: msg.payload\n });\n\n case 'SET_TOUCHED':\n return _extends({}, state, {\n touched: msg.payload\n });\n\n case 'SET_ERRORS':\n return _extends({}, state, {\n errors: msg.payload\n });\n\n case 'SET_STATUS':\n return _extends({}, state, {\n status: msg.payload\n });\n\n case 'SET_ISSUBMITTING':\n return _extends({}, state, {\n isSubmitting: msg.payload\n });\n\n case 'SET_ISVALIDATING':\n return _extends({}, state, {\n isValidating: msg.payload\n });\n\n case 'SET_FIELD_VALUE':\n return _extends({}, state, {\n values: setIn(state.values, msg.payload.field, msg.payload.value)\n });\n\n case 'SET_FIELD_TOUCHED':\n return _extends({}, state, {\n touched: setIn(state.touched, msg.payload.field, msg.payload.value)\n });\n\n case 'SET_FIELD_ERROR':\n return _extends({}, state, {\n errors: setIn(state.errors, msg.payload.field, msg.payload.value)\n });\n\n case 'RESET_FORM':\n return _extends({}, state, msg.payload);\n\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n\n case 'SUBMIT_ATTEMPT':\n return _extends({}, state, {\n touched: setNestedObjectValues(state.values, true),\n isSubmitting: true,\n submitCount: state.submitCount + 1\n });\n\n case 'SUBMIT_FAILURE':\n return _extends({}, state, {\n isSubmitting: false\n });\n\n case 'SUBMIT_SUCCESS':\n return _extends({}, state, {\n isSubmitting: false\n });\n\n default:\n return state;\n }\n}\n\nvar emptyErrors = {};\nvar emptyTouched = {};\nfunction useFormik(_ref) {\n var _ref$validateOnChange = _ref.validateOnChange,\n validateOnChange = _ref$validateOnChange === void 0 ? true : _ref$validateOnChange,\n _ref$validateOnBlur = _ref.validateOnBlur,\n validateOnBlur = _ref$validateOnBlur === void 0 ? true : _ref$validateOnBlur,\n _ref$validateOnMount = _ref.validateOnMount,\n validateOnMount = _ref$validateOnMount === void 0 ? false : _ref$validateOnMount,\n isInitialValid = _ref.isInitialValid,\n _ref$enableReinitiali = _ref.enableReinitialize,\n enableReinitialize = _ref$enableReinitiali === void 0 ? false : _ref$enableReinitiali,\n onSubmit = _ref.onSubmit,\n rest = _objectWithoutPropertiesLoose(_ref, [\"validateOnChange\", \"validateOnBlur\", \"validateOnMount\", \"isInitialValid\", \"enableReinitialize\", \"onSubmit\"]);\n\n var props = _extends({\n validateOnChange: validateOnChange,\n validateOnBlur: validateOnBlur,\n validateOnMount: validateOnMount,\n onSubmit: onSubmit\n }, rest);\n\n var initialValues = useRef(props.initialValues);\n var initialErrors = useRef(props.initialErrors || emptyErrors);\n var initialTouched = useRef(props.initialTouched || emptyTouched);\n var initialStatus = useRef(props.initialStatus);\n var isMounted = useRef(false);\n var fieldRegistry = useRef({});\n useEffect(function () {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof isInitialValid === 'undefined') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.') : invariant(false) : void 0;\n }\n }, []);\n useEffect(function () {\n isMounted.current = true;\n return function () {\n isMounted.current = false;\n };\n }, []);\n\n var _React$useReducer = useReducer(formikReducer, {\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0\n }),\n state = _React$useReducer[0],\n dispatch = _React$useReducer[1];\n\n var runValidateHandler = useCallback(function (values, field) {\n return new Promise(function (resolve, reject) {\n var maybePromisedErrors = props.validate(values, field);\n\n if (maybePromisedErrors == null) {\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n maybePromisedErrors.then(function (errors) {\n resolve(errors || emptyErrors);\n }, function (actualException) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"Warning: An unhandled error was caught during validation in <Formik validate />\", actualException);\n }\n\n reject(actualException);\n });\n } else {\n resolve(maybePromisedErrors);\n }\n });\n }, [props.validate]);\n var runValidationSchema = useCallback(function (values, field) {\n var validationSchema = props.validationSchema;\n var schema = isFunction(validationSchema) ? validationSchema(field) : validationSchema;\n var promise = field && schema.validateAt ? schema.validateAt(field, values) : validateYupSchema(values, schema);\n return new Promise(function (resolve, reject) {\n promise.then(function () {\n resolve(emptyErrors);\n }, function (err) {\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"Warning: An unhandled error was caught during validation in <Formik validationSchema />\", err);\n }\n\n reject(err);\n }\n });\n });\n }, [props.validationSchema]);\n var runSingleFieldLevelValidation = useCallback(function (field, value) {\n return new Promise(function (resolve) {\n return resolve(fieldRegistry.current[field].validate(value));\n });\n }, []);\n var runFieldLevelValidations = useCallback(function (values) {\n var fieldKeysWithValidation = Object.keys(fieldRegistry.current).filter(function (f) {\n return isFunction(fieldRegistry.current[f].validate);\n });\n var fieldValidations = fieldKeysWithValidation.length > 0 ? fieldKeysWithValidation.map(function (f) {\n return runSingleFieldLevelValidation(f, getIn(values, f));\n }) : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')];\n return Promise.all(fieldValidations).then(function (fieldErrorsList) {\n return fieldErrorsList.reduce(function (prev, curr, index) {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n\n return prev;\n }, {});\n });\n }, [runSingleFieldLevelValidation]);\n var runAllValidations = useCallback(function (values) {\n return Promise.all([runFieldLevelValidations(values), props.validationSchema ? runValidationSchema(values) : {}, props.validate ? runValidateHandler(values) : {}]).then(function (_ref2) {\n var fieldErrors = _ref2[0],\n schemaErrors = _ref2[1],\n validateErrors = _ref2[2];\n var combinedErrors = deepmerge.all([fieldErrors, schemaErrors, validateErrors], {\n arrayMerge: arrayMerge\n });\n return combinedErrors;\n });\n }, [props.validate, props.validationSchema, runFieldLevelValidations, runValidateHandler, runValidationSchema]);\n var validateFormWithLowPriority = useEventCallback(function (values) {\n if (values === void 0) {\n values = state.values;\n }\n\n return unstable_runWithPriority(LowPriority, function () {\n return runAllValidations(values).then(function (combinedErrors) {\n if (!!isMounted.current) {\n dispatch({\n type: 'SET_ERRORS',\n payload: combinedErrors\n });\n }\n\n return combinedErrors;\n });\n });\n });\n var validateFormWithHighPriority = useEventCallback(function (values) {\n if (values === void 0) {\n values = state.values;\n }\n\n dispatch({\n type: 'SET_ISVALIDATING',\n payload: true\n });\n return runAllValidations(values).then(function (combinedErrors) {\n if (!!isMounted.current) {\n dispatch({\n type: 'SET_ISVALIDATING',\n payload: false\n });\n\n if (!isEqual(state.errors, combinedErrors)) {\n dispatch({\n type: 'SET_ERRORS',\n payload: combinedErrors\n });\n }\n }\n\n return combinedErrors;\n });\n });\n useEffect(function () {\n if (validateOnMount && isMounted.current === true) {\n validateFormWithLowPriority(props.initialValues);\n }\n }, [props.initialValues, validateOnMount, validateFormWithLowPriority]);\n var resetForm = useCallback(function (nextState) {\n var values = nextState && nextState.values ? nextState.values : initialValues.current;\n var errors = nextState && nextState.errors ? nextState.errors : initialErrors.current ? initialErrors.current : props.initialErrors || {};\n var touched = nextState && nextState.touched ? nextState.touched : initialTouched.current ? initialTouched.current : props.initialTouched || {};\n var status = nextState && nextState.status ? nextState.status : initialStatus.current ? initialStatus.current : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors: errors,\n touched: touched,\n status: status,\n values: values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount: !!nextState && !!nextState.submitCount && typeof nextState.submitCount === 'number' ? nextState.submitCount : 0\n }\n });\n }, [props.initialErrors, props.initialStatus, props.initialTouched]);\n useEffect(function () {\n if (enableReinitialize && isMounted.current === true && !isEqual(initialValues.current, props.initialValues)) {\n initialValues.current = props.initialValues;\n resetForm();\n }\n }, [enableReinitialize, props.initialValues, resetForm]);\n useEffect(function () {\n if (enableReinitialize && isMounted.current === true && !isEqual(initialErrors.current, props.initialErrors)) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n useEffect(function () {\n if (enableReinitialize && isMounted.current === true && !isEqual(initialTouched.current, props.initialTouched)) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n useEffect(function () {\n if (enableReinitialize && isMounted.current === true && !isEqual(initialStatus.current, props.initialStatus)) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n var validateField = useEventCallback(function (name) {\n if (isFunction(fieldRegistry.current[name].validate)) {\n var value = getIn(state.values, name);\n var maybePromise = fieldRegistry.current[name].validate(value);\n\n if (isPromise(maybePromise)) {\n dispatch({\n type: 'SET_ISVALIDATING',\n payload: true\n });\n return maybePromise.then(function (x) {\n return x;\n }).then(function (error) {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: error\n }\n });\n dispatch({\n type: 'SET_ISVALIDATING',\n payload: false\n });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise\n }\n });\n return Promise.resolve(maybePromise);\n }\n } else {\n return Promise.resolve();\n }\n });\n var registerField = useCallback(function (name, _ref3) {\n var validate = _ref3.validate;\n fieldRegistry.current[name] = {\n validate: validate\n };\n }, []);\n var unregisterField = useCallback(function (name) {\n delete fieldRegistry.current[name];\n }, []);\n var setTouched = useEventCallback(function (touched) {\n dispatch({\n type: 'SET_TOUCHED',\n payload: touched\n });\n return validateOnBlur ? validateFormWithLowPriority(state.values) : Promise.resolve();\n });\n var setErrors = useCallback(function (errors) {\n dispatch({\n type: 'SET_ERRORS',\n payload: errors\n });\n }, []);\n var setValues = useEventCallback(function (values) {\n dispatch({\n type: 'SET_VALUES',\n payload: values\n });\n return validateOnChange ? validateFormWithLowPriority(values) : Promise.resolve();\n });\n var setFieldError = useCallback(function (field, value) {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: field,\n value: value\n }\n });\n }, []);\n var setFieldValue = useEventCallback(function (field, value, shouldValidate) {\n if (shouldValidate === void 0) {\n shouldValidate = true;\n }\n\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field: field,\n value: value\n }\n });\n return validateOnChange && shouldValidate ? validateFormWithLowPriority(setIn(state.values, field, value)) : Promise.resolve();\n });\n var executeChange = useCallback(function (eventOrTextValue, maybePath) {\n var field = maybePath;\n var val = eventOrTextValue;\n var parsed;\n\n if (!isString(eventOrTextValue)) {\n if (eventOrTextValue.persist) {\n eventOrTextValue.persist();\n }\n\n var _eventOrTextValue$tar = eventOrTextValue.target,\n type = _eventOrTextValue$tar.type,\n name = _eventOrTextValue$tar.name,\n id = _eventOrTextValue$tar.id,\n value = _eventOrTextValue$tar.value,\n checked = _eventOrTextValue$tar.checked,\n outerHTML = _eventOrTextValue$tar.outerHTML,\n options = _eventOrTextValue$tar.options,\n multiple = _eventOrTextValue$tar.multiple;\n field = maybePath ? maybePath : name ? name : id;\n\n if (!field && process.env.NODE_ENV !== \"production\") {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange'\n });\n }\n\n val = /number|range/.test(type) ? (parsed = parseFloat(value), isNaN(parsed) ? '' : parsed) : /checkbox/.test(type) ? getValueForCheckbox(getIn(state.values, field), checked, value) : !!multiple ? getSelectedValues(options) : value;\n }\n\n if (field) {\n setFieldValue(field, val);\n }\n }, [setFieldValue, state.values]);\n var handleChange = useCallback(function (eventOrPath) {\n if (isString(eventOrPath)) {\n return function (event) {\n return executeChange(event, eventOrPath);\n };\n } else {\n executeChange(eventOrPath);\n }\n }, [executeChange]);\n var setFieldTouched = useEventCallback(function (field, touched, shouldValidate) {\n if (touched === void 0) {\n touched = true;\n }\n\n if (shouldValidate === void 0) {\n shouldValidate = true;\n }\n\n dispatch({\n type: 'SET_FIELD_TOUCHED',\n payload: {\n field: field,\n value: touched\n }\n });\n return validateOnBlur && shouldValidate ? validateFormWithLowPriority(state.values) : Promise.resolve();\n });\n var executeBlur = useCallback(function (e, path) {\n if (e.persist) {\n e.persist();\n }\n\n var _e$target = e.target,\n name = _e$target.name,\n id = _e$target.id,\n outerHTML = _e$target.outerHTML;\n var field = path ? path : name ? name : id;\n\n if (!field && process.env.NODE_ENV !== \"production\") {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handleblur-e-any--void',\n handlerName: 'handleBlur'\n });\n }\n\n setFieldTouched(field, true);\n }, [setFieldTouched]);\n var handleBlur = useCallback(function (eventOrString) {\n if (isString(eventOrString)) {\n return function (event) {\n return executeBlur(event, eventOrString);\n };\n } else {\n executeBlur(eventOrString);\n }\n }, [executeBlur]);\n var setFormikState = useCallback(function (stateOrCb) {\n if (isFunction(stateOrCb)) {\n dispatch({\n type: 'SET_FORMIK_STATE',\n payload: stateOrCb\n });\n } else {\n dispatch({\n type: 'SET_FORMIK_STATE',\n payload: function payload() {\n return stateOrCb;\n }\n });\n }\n }, []);\n var setStatus = useCallback(function (status) {\n dispatch({\n type: 'SET_STATUS',\n payload: status\n });\n }, []);\n var setSubmitting = useCallback(function (isSubmitting) {\n dispatch({\n type: 'SET_ISSUBMITTING',\n payload: isSubmitting\n });\n }, []);\n var imperativeMethods = {\n resetForm: resetForm,\n validateForm: validateFormWithHighPriority,\n validateField: validateField,\n setErrors: setErrors,\n setFieldError: setFieldError,\n setFieldTouched: setFieldTouched,\n setFieldValue: setFieldValue,\n setStatus: setStatus,\n setSubmitting: setSubmitting,\n setTouched: setTouched,\n setValues: setValues,\n setFormikState: setFormikState\n };\n var executeSubmit = useEventCallback(function () {\n return onSubmit(state.values, imperativeMethods);\n });\n var submitForm = useEventCallback(function () {\n dispatch({\n type: 'SUBMIT_ATTEMPT'\n });\n return validateFormWithHighPriority().then(function (combinedErrors) {\n var isActuallyValid = Object.keys(combinedErrors).length === 0;\n\n if (isActuallyValid) {\n var promiseOrUndefined = executeSubmit();\n\n if (promiseOrUndefined === undefined) {\n return;\n }\n\n return Promise.resolve(promiseOrUndefined).then(function () {\n if (!!isMounted.current) {\n dispatch({\n type: 'SUBMIT_SUCCESS'\n });\n }\n })[\"catch\"](function (_errors) {\n if (!!isMounted.current) {\n dispatch({\n type: 'SUBMIT_FAILURE'\n });\n throw _errors;\n }\n });\n } else if (!!isMounted.current) {\n dispatch({\n type: 'SUBMIT_FAILURE'\n });\n return;\n }\n\n return;\n });\n });\n var handleSubmit = useEventCallback(function (e) {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n if (process.env.NODE_ENV !== \"production\" && typeof document !== 'undefined') {\n var activeElement = getActiveElement();\n\n if (activeElement !== null && activeElement instanceof HTMLButtonElement) {\n !(activeElement.attributes && activeElement.attributes.getNamedItem('type')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You submitted a Formik form using a button with an unspecified `type` attribute. Most browsers default button elements to `type=\"submit\"`. If this is not a submit button, please add `type=\"button\"`.') : invariant(false) : void 0;\n }\n }\n\n submitForm();\n });\n var handleReset = useEventCallback(function (e) {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n if (props.onReset) {\n var maybePromisedOnReset = props.onReset(state.values, imperativeMethods);\n\n if (isPromise(maybePromisedOnReset)) {\n maybePromisedOnReset.then(resetForm);\n } else {\n resetForm();\n }\n } else {\n resetForm();\n }\n });\n var getFieldMeta = useCallback(function (name) {\n return {\n value: getIn(state.values, name),\n error: getIn(state.errors, name),\n touched: !!getIn(state.touched, name),\n initialValue: getIn(initialValues.current, name),\n initialTouched: !!getIn(initialTouched.current, name),\n initialError: getIn(initialErrors.current, name)\n };\n }, [state.errors, state.touched, state.values]);\n var getFieldProps = useCallback(function (nameOrOptions) {\n var isAnObject = isObject(nameOrOptions);\n var name = isAnObject ? nameOrOptions.name : nameOrOptions;\n var valueState = getIn(state.values, name);\n var field = {\n name: name,\n value: valueState,\n onChange: handleChange,\n onBlur: handleBlur\n };\n\n if (isAnObject) {\n var type = nameOrOptions.type,\n valueProp = nameOrOptions.value,\n is = nameOrOptions.as,\n multiple = nameOrOptions.multiple;\n\n if (type === 'checkbox') {\n if (valueProp === undefined) {\n field.checked = !!valueState;\n } else {\n field.checked = !!(Array.isArray(valueState) && ~valueState.indexOf(valueProp));\n field.value = valueProp;\n }\n } else if (type === 'radio') {\n field.checked = valueState === valueProp;\n field.value = valueProp;\n } else if (is === 'select' && multiple) {\n field.value = field.value || [];\n field.multiple = true;\n }\n }\n\n return field;\n }, [handleBlur, handleChange, state.values]);\n var dirty = useMemo(function () {\n return !isEqual(initialValues.current, state.values);\n }, [state.values]);\n var isValid = useMemo(function () {\n return typeof isInitialValid !== 'undefined' ? dirty ? state.errors && Object.keys(state.errors).length === 0 : isInitialValid !== false && isFunction(isInitialValid) ? isInitialValid(props) : isInitialValid : state.errors && Object.keys(state.errors).length === 0;\n }, [isInitialValid, dirty, state.errors, props]);\n\n var ctx = _extends({}, state, {\n initialValues: initialValues.current,\n initialErrors: initialErrors.current,\n initialTouched: initialTouched.current,\n initialStatus: initialStatus.current,\n handleBlur: handleBlur,\n handleChange: handleChange,\n handleReset: handleReset,\n handleSubmit: handleSubmit,\n resetForm: resetForm,\n setErrors: setErrors,\n setFormikState: setFormikState,\n setFieldTouched: setFieldTouched,\n setFieldValue: setFieldValue,\n setFieldError: setFieldError,\n setStatus: setStatus,\n setSubmitting: setSubmitting,\n setTouched: setTouched,\n setValues: setValues,\n submitForm: submitForm,\n validateForm: validateFormWithHighPriority,\n validateField: validateField,\n isValid: isValid,\n dirty: dirty,\n unregisterField: unregisterField,\n registerField: registerField,\n getFieldProps: getFieldProps,\n getFieldMeta: getFieldMeta,\n validateOnBlur: validateOnBlur,\n validateOnChange: validateOnChange,\n validateOnMount: validateOnMount\n });\n\n return ctx;\n}\nfunction Formik(props) {\n var formikbag = useFormik(props);\n var component = props.component,\n children = props.children,\n render = props.render;\n useEffect(function () {\n if (process.env.NODE_ENV !== \"production\") {\n !!props.render ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Formik render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Formik render={(props) => ...} /> with <Formik>{(props) => ...}</Formik>\") : invariant(false) : void 0;\n }\n }, []);\n return createElement(FormikProvider, {\n value: formikbag\n }, component ? createElement(component, formikbag) : render ? render(formikbag) : children ? isFunction(children) ? children(formikbag) : !isEmptyChildren(children) ? Children.only(children) : null : null);\n}\n\nfunction warnAboutMissingIdentifier(_ref4) {\n var htmlContent = _ref4.htmlContent,\n documentationAnchorLink = _ref4.documentationAnchorLink,\n handlerName = _ref4.handlerName;\n console.warn(\"Warning: Formik called `\" + handlerName + \"`, but you forgot to pass an `id` or `name` attribute to your input:\\n \" + htmlContent + \"\\n Formik cannot determine which value to update. For more info see https://github.com/jaredpalmer/formik#\" + documentationAnchorLink + \"\\n \");\n}\n\nfunction yupToFormErrors(yupError) {\n var errors = {};\n\n if (yupError.inner) {\n if (yupError.inner.length === 0) {\n return setIn(errors, yupError.path, yupError.message);\n }\n\n for (var _iterator = yupError.inner, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref5 = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref5 = _i.value;\n }\n\n var err = _ref5;\n\n if (!getIn(errors, err.path)) {\n errors = setIn(errors, err.path, err.message);\n }\n }\n }\n\n return errors;\n}\nfunction validateYupSchema(values, schema, sync, context) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (context === void 0) {\n context = {};\n }\n\n var validateData = prepareDataForValidation(values);\n return schema[sync ? 'validateSync' : 'validate'](validateData, {\n abortEarly: false,\n context: context\n });\n}\nfunction prepareDataForValidation(values) {\n var data = {};\n\n for (var k in values) {\n if (values.hasOwnProperty(k)) {\n var key = String(k);\n\n if (Array.isArray(values[key]) === true) {\n data[key] = values[key].map(function (value) {\n if (Array.isArray(value) === true || isPlainObject(value)) {\n return prepareDataForValidation(value);\n } else {\n return value !== '' ? value : undefined;\n }\n });\n } else if (isPlainObject(values[key])) {\n data[key] = prepareDataForValidation(values[key]);\n } else {\n data[key] = values[key] !== '' ? values[key] : undefined;\n }\n }\n }\n\n return data;\n}\n\nfunction arrayMerge(target, source, options) {\n var destination = target.slice();\n source.forEach(function (e, i) {\n if (typeof destination[i] === 'undefined') {\n var cloneRequested = options.clone !== false;\n var shouldClone = cloneRequested && options.isMergeableObject(e);\n destination[i] = shouldClone ? deepmerge(Array.isArray(e) ? [] : {}, e, options) : e;\n } else if (options.isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, options);\n } else if (target.indexOf(e) === -1) {\n destination.push(e);\n }\n });\n return destination;\n}\n\nfunction getSelectedValues(options) {\n return Array.from(options).filter(function (el) {\n return el.selected;\n }).map(function (el) {\n return el.value;\n });\n}\n\nfunction getValueForCheckbox(currentValue, checked, valueProp) {\n if (valueProp == 'true' || valueProp == 'false') {\n return !!checked;\n }\n\n if (checked && valueProp) {\n return Array.isArray(currentValue) ? currentValue.concat(valueProp) : [valueProp];\n }\n\n if (!Array.isArray(currentValue)) {\n return !currentValue;\n }\n\n var index = currentValue.indexOf(valueProp);\n\n if (index < 0) {\n return currentValue;\n }\n\n return currentValue.slice(0, index).concat(currentValue.slice(index + 1));\n}\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction useEventCallback(fn) {\n var ref = useRef(fn);\n useIsomorphicLayoutEffect(function () {\n ref.current = fn;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return ref.current.apply(void 0, args);\n }, []);\n}\n\nfunction useField(propsOrFieldName) {\n var formik = useFormikContext();\n var getFieldProps = formik.getFieldProps,\n getFieldMeta = formik.getFieldMeta,\n registerField = formik.registerField,\n unregisterField = formik.unregisterField;\n var isAnObject = isObject(propsOrFieldName);\n var fieldName = isAnObject ? propsOrFieldName.name : propsOrFieldName;\n var validateFn = isAnObject ? propsOrFieldName.validate : undefined;\n useEffect(function () {\n if (fieldName) {\n registerField(fieldName, {\n validate: validateFn\n });\n }\n\n return function () {\n if (fieldName) {\n unregisterField(fieldName);\n }\n };\n }, [registerField, unregisterField, fieldName, validateFn]);\n\n if (process.env.NODE_ENV !== \"production\") {\n !formik ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'useField() / <Field /> must be used underneath a <Formik> component or withFormik() higher order component') : invariant(false) : void 0;\n }\n\n if (isObject(propsOrFieldName)) {\n !propsOrFieldName.name ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid field name. Either pass `useField` a string or an object containing a `name` key.') : invariant(false) : void 0;\n return [getFieldProps(propsOrFieldName), getFieldMeta(propsOrFieldName.name)];\n }\n\n return [getFieldProps({\n name: propsOrFieldName\n }), getFieldMeta(propsOrFieldName)];\n}\nfunction Field(_ref) {\n var validate = _ref.validate,\n name = _ref.name,\n render = _ref.render,\n children = _ref.children,\n is = _ref.as,\n component = _ref.component,\n props = _objectWithoutPropertiesLoose(_ref, [\"validate\", \"name\", \"render\", \"children\", \"as\", \"component\"]);\n\n var _useFormikContext = useFormikContext(),\n _validate = _useFormikContext.validate,\n _validationSchema = _useFormikContext.validationSchema,\n formik = _objectWithoutPropertiesLoose(_useFormikContext, [\"validate\", \"validationSchema\"]);\n\n useEffect(function () {\n if (process.env.NODE_ENV !== \"production\") {\n !!render ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<Field render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Field name=\\\"\" + name + \"\\\" render={({field, form}) => ...} /> with <Field name=\\\"\" + name + \"\\\">{({field, form, meta}) => ...}</Field>\") : invariant(false) : void 0;\n !!(is && children && isFunction(children)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <Field as> and <Field children> as a function in the same <Field> component; <Field as> will be ignored.') : invariant(false) : void 0;\n !!(component && children && isFunction(children)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <Field component> and <Field children> as a function in the same <Field> component; <Field component> will be ignored.') : invariant(false) : void 0;\n !!(render && children && !isEmptyChildren(children)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <Field render> and <Field children> in the same <Field> component; <Field children> will be ignored') : invariant(false) : void 0;\n }\n }, []);\n var registerField = formik.registerField,\n unregisterField = formik.unregisterField;\n useEffect(function () {\n registerField(name, {\n validate: validate\n });\n return function () {\n unregisterField(name);\n };\n }, [registerField, unregisterField, name, validate]);\n var field = formik.getFieldProps(_extends({\n name: name\n }, props));\n var meta = formik.getFieldMeta(name);\n var legacyBag = {\n field: field,\n form: formik\n };\n\n if (render) {\n return render(_extends({}, legacyBag, {\n meta: meta\n }));\n }\n\n if (isFunction(children)) {\n return children(_extends({}, legacyBag, {\n meta: meta\n }));\n }\n\n if (component) {\n if (typeof component === 'string') {\n var innerRef = props.innerRef,\n rest = _objectWithoutPropertiesLoose(props, [\"innerRef\"]);\n\n return createElement(component, _extends({\n ref: innerRef\n }, field, rest), children);\n }\n\n return createElement(component, _extends({\n field: field,\n form: formik\n }, props), children);\n }\n\n var asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n var _innerRef = props.innerRef,\n _rest = _objectWithoutPropertiesLoose(props, [\"innerRef\"]);\n\n return createElement(asElement, _extends({\n ref: _innerRef\n }, field, _rest), children);\n }\n\n return createElement(asElement, _extends({}, field, props), children);\n}\n\nvar Form =\n/*#__PURE__*/\nforwardRef(function (props, ref) {\n var action = props.action,\n rest = _objectWithoutPropertiesLoose(props, [\"action\"]);\n\n var _action = action || '#';\n\n var _useFormikContext = useFormikContext(),\n handleReset = _useFormikContext.handleReset,\n handleSubmit = _useFormikContext.handleSubmit;\n\n return createElement(\"form\", Object.assign({\n onSubmit: handleSubmit,\n ref: ref,\n onReset: handleReset,\n action: _action\n }, rest));\n});\nForm.displayName = 'Form';\n\nfunction withFormik(_ref) {\n var _ref$mapPropsToValues = _ref.mapPropsToValues,\n mapPropsToValues = _ref$mapPropsToValues === void 0 ? function (vanillaProps) {\n var val = {};\n\n for (var k in vanillaProps) {\n if (vanillaProps.hasOwnProperty(k) && typeof vanillaProps[k] !== 'function') {\n val[k] = vanillaProps[k];\n }\n }\n\n return val;\n } : _ref$mapPropsToValues,\n config = _objectWithoutPropertiesLoose(_ref, [\"mapPropsToValues\"]);\n\n return function createFormik(Component$1) {\n var componentDisplayName = Component$1.displayName || Component$1.name || Component$1.constructor && Component$1.constructor.name || 'Component';\n\n var C =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(C, _React$Component);\n\n function C() {\n var _this;\n\n _this = _React$Component.apply(this, arguments) || this;\n\n _this.validate = function (values) {\n return config.validate(values, _this.props);\n };\n\n _this.validationSchema = function () {\n return isFunction(config.validationSchema) ? config.validationSchema(_this.props) : config.validationSchema;\n };\n\n _this.handleSubmit = function (values, actions) {\n return config.handleSubmit(values, _extends({}, actions, {\n props: _this.props\n }));\n };\n\n _this.renderFormComponent = function (formikProps) {\n return createElement(Component$1, Object.assign({}, _this.props, formikProps));\n };\n\n return _this;\n }\n\n var _proto = C.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n return createElement(Formik, Object.assign({}, props, config, {\n validate: config.validate && this.validate,\n validationSchema: config.validationSchema && this.validationSchema,\n initialValues: mapPropsToValues(this.props),\n initialStatus: config.mapPropsToStatus && config.mapPropsToStatus(this.props),\n initialErrors: config.mapPropsToErrors && config.mapPropsToErrors(this.props),\n initialTouched: config.mapPropsToTouched && config.mapPropsToTouched(this.props),\n onSubmit: this.handleSubmit,\n children: this.renderFormComponent\n }));\n };\n\n return C;\n }(Component);\n\n C.displayName = \"WithFormik(\" + componentDisplayName + \")\";\n return hoistNonReactStatics(C, Component$1);\n };\n}\n\nfunction connect(Comp) {\n var C = function C(props) {\n return createElement(FormikConsumer, null, function (formik) {\n !!!formik ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Formik context is undefined, please verify you are rendering <Form>, <Field>, <FastField>, <FieldArray>, or your custom context-using component as a child of a <Formik> component. Component name: \" + Comp.name) : invariant(false) : void 0;\n return createElement(Comp, Object.assign({}, props, {\n formik: formik\n }));\n });\n };\n\n var componentDisplayName = Comp.displayName || Comp.name || Comp.constructor && Comp.constructor.name || 'Component';\n C.WrappedComponent = Comp;\n C.displayName = \"FormikConnect(\" + componentDisplayName + \")\";\n return hoistNonReactStatics(C, Comp);\n}\n\nvar move = function move(array, from, to) {\n var copy = copyArrayLike(array);\n var value = copy[from];\n copy.splice(from, 1);\n copy.splice(to, 0, value);\n return copy;\n};\nvar swap = function swap(arrayLike, indexA, indexB) {\n var copy = copyArrayLike(arrayLike);\n var a = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = a;\n return copy;\n};\nvar insert = function insert(arrayLike, index, value) {\n var copy = copyArrayLike(arrayLike);\n copy.splice(index, 0, value);\n return copy;\n};\nvar replace = function replace(arrayLike, index, value) {\n var copy = copyArrayLike(arrayLike);\n copy[index] = value;\n return copy;\n};\n\nvar copyArrayLike = function copyArrayLike(arrayLike) {\n if (!arrayLike) {\n return [];\n } else if (Array.isArray(arrayLike)) {\n return [].concat(arrayLike);\n } else {\n var maxIndex = Object.keys(arrayLike).map(function (key) {\n return parseInt(key);\n }).reduce(function (max, el) {\n return el > max ? el : max;\n }, 0);\n return Array.from(_extends({}, arrayLike, {\n length: maxIndex + 1\n }));\n }\n};\n\nvar FieldArrayInner =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(FieldArrayInner, _React$Component);\n\n function FieldArrayInner(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n\n _this.updateArrayField = function (fn, alterTouched, alterErrors) {\n var _this$props = _this.props,\n name = _this$props.name,\n validateOnChange = _this$props.validateOnChange,\n _this$props$formik = _this$props.formik,\n setFormikState = _this$props$formik.setFormikState,\n validateForm = _this$props$formik.validateForm;\n setFormikState(function (prevState) {\n var updateErrors = typeof alterErrors === 'function' ? alterErrors : fn;\n var updateTouched = typeof alterTouched === 'function' ? alterTouched : fn;\n return _extends({}, prevState, {\n values: setIn(prevState.values, name, fn(getIn(prevState.values, name))),\n errors: alterErrors ? setIn(prevState.errors, name, updateErrors(getIn(prevState.errors, name))) : prevState.errors,\n touched: alterTouched ? setIn(prevState.touched, name, updateTouched(getIn(prevState.touched, name))) : prevState.touched\n });\n }, function () {\n if (validateOnChange) {\n validateForm();\n }\n });\n };\n\n _this.push = function (value) {\n return _this.updateArrayField(function (arrayLike) {\n return [].concat(copyArrayLike(arrayLike), [cloneDeep(value)]);\n }, false, false);\n };\n\n _this.handlePush = function (value) {\n return function () {\n return _this.push(value);\n };\n };\n\n _this.swap = function (indexA, indexB) {\n return _this.updateArrayField(function (array) {\n return swap(array, indexA, indexB);\n }, true, true);\n };\n\n _this.handleSwap = function (indexA, indexB) {\n return function () {\n return _this.swap(indexA, indexB);\n };\n };\n\n _this.move = function (from, to) {\n return _this.updateArrayField(function (array) {\n return move(array, from, to);\n }, true, true);\n };\n\n _this.handleMove = function (from, to) {\n return function () {\n return _this.move(from, to);\n };\n };\n\n _this.insert = function (index, value) {\n return _this.updateArrayField(function (array) {\n return insert(array, index, value);\n }, function (array) {\n return insert(array, index, null);\n }, function (array) {\n return insert(array, index, null);\n });\n };\n\n _this.handleInsert = function (index, value) {\n return function () {\n return _this.insert(index, value);\n };\n };\n\n _this.replace = function (index, value) {\n return _this.updateArrayField(function (array) {\n return replace(array, index, value);\n }, false, false);\n };\n\n _this.handleReplace = function (index, value) {\n return function () {\n return _this.replace(index, value);\n };\n };\n\n _this.unshift = function (value) {\n var length = -1;\n\n _this.updateArrayField(function (array) {\n var arr = array ? [value].concat(array) : [value];\n\n if (length < 0) {\n length = arr.length;\n }\n\n return arr;\n }, function (array) {\n var arr = array ? [null].concat(array) : [null];\n\n if (length < 0) {\n length = arr.length;\n }\n\n return arr;\n }, function (array) {\n var arr = array ? [null].concat(array) : [null];\n\n if (length < 0) {\n length = arr.length;\n }\n\n return arr;\n });\n\n return length;\n };\n\n _this.handleUnshift = function (value) {\n return function () {\n return _this.unshift(value);\n };\n };\n\n _this.handleRemove = function (index) {\n return function () {\n return _this.remove(index);\n };\n };\n\n _this.handlePop = function () {\n return function () {\n return _this.pop();\n };\n };\n\n _this.remove = _this.remove.bind(_assertThisInitialized(_this));\n _this.pop = _this.pop.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = FieldArrayInner.prototype;\n\n _proto.remove = function remove(index) {\n var result;\n this.updateArrayField(function (array) {\n var copy = array ? copyArrayLike(array) : [];\n\n if (!result) {\n result = copy[index];\n }\n\n if (isFunction(copy.splice)) {\n copy.splice(index, 1);\n }\n\n return copy;\n }, true, true);\n return result;\n };\n\n _proto.pop = function pop() {\n var result;\n this.updateArrayField(function (array) {\n var tmp = array;\n\n if (!result) {\n result = tmp && tmp.pop && tmp.pop();\n }\n\n return tmp;\n }, true, true);\n return result;\n };\n\n _proto.render = function render() {\n var arrayHelpers = {\n push: this.push,\n pop: this.pop,\n swap: this.swap,\n move: this.move,\n insert: this.insert,\n replace: this.replace,\n unshift: this.unshift,\n remove: this.remove,\n handlePush: this.handlePush,\n handlePop: this.handlePop,\n handleSwap: this.handleSwap,\n handleMove: this.handleMove,\n handleInsert: this.handleInsert,\n handleReplace: this.handleReplace,\n handleUnshift: this.handleUnshift,\n handleRemove: this.handleRemove\n };\n\n var _this$props2 = this.props,\n component = _this$props2.component,\n render = _this$props2.render,\n children = _this$props2.children,\n name = _this$props2.name,\n _this$props2$formik = _this$props2.formik,\n _validate = _this$props2$formik.validate,\n _validationSchema = _this$props2$formik.validationSchema,\n restOfFormik = _objectWithoutPropertiesLoose(_this$props2$formik, [\"validate\", \"validationSchema\"]);\n\n var props = _extends({}, arrayHelpers, {\n form: restOfFormik,\n name: name\n });\n\n return component ? createElement(component, props) : render ? render(props) : children ? typeof children === 'function' ? children(props) : !isEmptyChildren(children) ? Children.only(children) : null : null;\n };\n\n return FieldArrayInner;\n}(Component);\n\nFieldArrayInner.defaultProps = {\n validateOnChange: true\n};\nvar FieldArray =\n/*#__PURE__*/\nconnect(FieldArrayInner);\n\nvar ErrorMessageImpl =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ErrorMessageImpl, _React$Component);\n\n function ErrorMessageImpl() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = ErrorMessageImpl.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(props) {\n if (getIn(this.props.formik.errors, this.props.name) !== getIn(props.formik.errors, this.props.name) || getIn(this.props.formik.touched, this.props.name) !== getIn(props.formik.touched, this.props.name) || Object.keys(this.props).length !== Object.keys(props).length) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n component = _this$props.component,\n formik = _this$props.formik,\n render = _this$props.render,\n children = _this$props.children,\n name = _this$props.name,\n rest = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"formik\", \"render\", \"children\", \"name\"]);\n\n var touch = getIn(formik.touched, name);\n var error = getIn(formik.errors, name);\n return !!touch && !!error ? render ? isFunction(render) ? render(error) : null : children ? isFunction(children) ? children(error) : null : component ? createElement(component, rest, error) : error : null;\n };\n\n return ErrorMessageImpl;\n}(Component);\n\nvar ErrorMessage =\n/*#__PURE__*/\nconnect(ErrorMessageImpl);\n\nvar FastField =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(FastField, _React$Component);\n\n function FastField(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n var render = props.render,\n children = props.children,\n component = props.component,\n is = props.as,\n name = props.name;\n !!render ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"<FastField render> has been deprecated. Please use a child callback function instead: <FastField name={\" + name + \"}>{props => ...}</FastField> instead.\") : invariant(false) : void 0;\n !!(component && render) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <FastField component> and <FastField render> in the same <FastField> component; <FastField component> will be ignored') : invariant(false) : void 0;\n !!(is && children && isFunction(children)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <FastField as> and <FastField children> as a function in the same <FastField> component; <FastField as> will be ignored.') : invariant(false) : void 0;\n !!(component && children && isFunction(children)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <FastField component> and <FastField children> as a function in the same <FastField> component; <FastField component> will be ignored.') : invariant(false) : void 0;\n !!(render && children && !isEmptyChildren(children)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'You should not use <FastField render> and <FastField children> in the same <FastField> component; <FastField children> will be ignored') : invariant(false) : void 0;\n return _this;\n }\n\n var _proto = FastField.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(props, _state, context) {\n if (this.props.shouldUpdate) {\n return this.props.shouldUpdate(props, this.props);\n } else if (getIn(this.context.values, this.props.name) !== getIn(context.values, this.props.name) || getIn(this.context.errors, this.props.name) !== getIn(context.errors, this.props.name) || getIn(this.context.touched, this.props.name) !== getIn(context.touched, this.props.name) || Object.keys(this.props).length !== Object.keys(props).length || this.context.isSubmitting !== context.isSubmitting) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.context.registerField(this.props.name, {\n validate: this.props.validate\n });\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.context.unregisterField(prevProps.name);\n this.context.registerField(this.props.name, {\n validate: this.props.validate\n });\n }\n\n if (this.props.validate !== prevProps.validate) {\n this.context.registerField(this.props.name, {\n validate: this.props.validate\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.context.unregisterField(this.props.name);\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n validate = _this$props.validate,\n name = _this$props.name,\n render = _this$props.render,\n is = _this$props.as,\n children = _this$props.children,\n component = _this$props.component,\n shouldUpdate = _this$props.shouldUpdate,\n props = _objectWithoutPropertiesLoose(_this$props, [\"validate\", \"name\", \"render\", \"as\", \"children\", \"component\", \"shouldUpdate\"]);\n\n var formik = this.context;\n\n var _validate = formik.validate,\n _validationSchema = formik.validationSchema,\n restOfFormik = _objectWithoutPropertiesLoose(formik, [\"validate\", \"validationSchema\"]);\n\n var field = {\n value: props.type === 'radio' || props.type === 'checkbox' ? props.value : getIn(formik.values, name),\n name: name,\n onChange: formik.handleChange,\n onBlur: formik.handleBlur\n };\n var meta = {\n value: getIn(formik.values, name),\n error: getIn(formik.errors, name),\n touched: !!getIn(formik.touched, name),\n initialValue: getIn(formik.initialValues, name),\n initialTouched: !!getIn(formik.initialTouched, name),\n initialError: getIn(formik.initialErrors, name)\n };\n var bag = {\n field: field,\n meta: meta,\n form: restOfFormik\n };\n\n if (render) {\n return render(bag);\n }\n\n if (isFunction(children)) {\n return children(bag);\n }\n\n if (component) {\n if (typeof component === 'string') {\n var innerRef = props.innerRef,\n rest = _objectWithoutPropertiesLoose(props, [\"innerRef\"]);\n\n return createElement(component, _extends({\n ref: innerRef\n }, field, rest), children);\n }\n\n return createElement(component, _extends({\n field: field,\n form: formik\n }, props), children);\n }\n\n var asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n var _innerRef = props.innerRef,\n _rest = _objectWithoutPropertiesLoose(props, [\"innerRef\"]);\n\n return createElement(asElement, _extends({\n ref: _innerRef\n }, field, _rest), children);\n }\n\n return createElement(asElement, _extends({}, field, props), children);\n };\n\n return FastField;\n}(Component);\nFastField.contextType = FormikContext;\n\nexport { ErrorMessage, FastField, Field, FieldArray, Form, Formik, FormikConsumer, FormikContext, FormikProvider, connect, getActiveElement, getIn, insert, isEmptyChildren, isFunction, isInputEvent, isInteger, isNaN$1 as isNaN, isObject, isPromise, isString, move, prepareDataForValidation, replace, setIn, setNestedObjectValues, swap, useField, useFormik, useFormikContext, validateYupSchema, withFormik, yupToFormErrors };\n//# sourceMappingURL=formik.esm.js.map\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","const Renderer = require('./Renderer.js');\nconst { defaults } = require('./defaults.js');\nconst { inline } = require('./rules.js');\nconst {\n findClosingBracket,\n escape\n} = require('./helpers.js');\n\n/**\n * Inline Lexer & Compiler\n */\nmodule.exports = class InlineLexer {\n constructor(links, options) {\n this.options = options || defaults;\n this.links = links;\n this.rules = inline.normal;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.pedantic) {\n this.rules = inline.pedantic;\n } else if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n }\n }\n\n /**\n * Expose Inline Rules\n */\n static get rules() {\n return inline;\n }\n\n /**\n * Static Lexing/Compiling Method\n */\n static output(src, links, options) {\n const inline = new InlineLexer(links, options);\n return inline.output(src);\n }\n\n /**\n * Lexing/Compiling\n */\n output(src) {\n let out = '',\n link,\n text,\n href,\n title,\n cap,\n prevCapZero;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += escape(cap[1]);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^<a /i.test(cap[0])) {\n this.inLink = true;\n } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n }\n\n static escapes(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n }\n\n /**\n * Compile Link\n */\n outputLink(cap, link) {\n const href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n }\n\n /**\n * Smartypants Transformations\n */\n smartypants(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n }\n\n /**\n * Mangle Links\n */\n mangle(text) {\n if (!this.options.mangle) return text;\n const l = text.length;\n let out = '',\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n};\n","const { defaults } = require('./defaults.js');\nconst { block } = require('./rules.js');\nconst {\n rtrim,\n splitCells,\n escape\n} = require('./helpers.js');\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n }\n\n /**\n * Expose Block Rules\n */\n static get rules() {\n return block;\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n token(src, top) {\n src = src.replace(/^ +$/gm, '');\n let next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n const lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n};\n","const Renderer = require('./Renderer.js');\nconst Slugger = require('./Slugger.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst { defaults } = require('./defaults.js');\nconst {\n merge,\n unescape\n} = require('./helpers.js');\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n constructor(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n };\n\n /**\n * Parse Loop\n */\n parse(tokens) {\n this.inline = new InlineLexer(tokens.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n tokens.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = tokens.reverse();\n\n let out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n };\n\n /**\n * Next Token\n */\n next() {\n this.token = this.tokens.pop();\n return this.token;\n };\n\n /**\n * Preview Next Token\n */\n peek() {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n\n /**\n * Parse Text Tokens\n */\n parseText() {\n let body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n };\n\n /**\n * Parse Current Token\n */\n tok() {\n let body = '';\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n let header = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n const ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n const loose = this.token.loose;\n const checked = this.token.checked;\n const task = this.token.task;\n\n if (this.token.task) {\n if (loose) {\n if (this.peek().type === 'text') {\n const nextToken = this.peek();\n nextToken.text = this.renderer.checkbox(checked) + ' ' + nextToken.text;\n } else {\n this.tokens.push({\n type: 'text',\n text: this.renderer.checkbox(checked)\n });\n }\n } else {\n body += this.renderer.checkbox(checked);\n }\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n const errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n };\n};\n","const { defaults } = require('./defaults.js');\nconst {\n cleanUrl,\n escape\n} = require('./helpers.js');\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n };\n\n blockquote(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n };\n\n html(html) {\n return html;\n };\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + slugger.slug(raw)\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n }\n // ignore IDs\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n };\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n };\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n };\n\n listitem(text) {\n return '<li>' + text + '</li>\\n';\n };\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n };\n\n paragraph(text) {\n return '<p>' + text + '</p>\\n';\n };\n\n table(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n };\n\n tablerow(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n };\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n };\n\n // span level renderer\n strong(text) {\n return '<strong>' + text + '</strong>';\n };\n\n em(text) {\n return '<em>' + text + '</em>';\n };\n\n codespan(text) {\n return '<code>' + text + '</code>';\n };\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n };\n\n del(text) {\n return '<del>' + text + '</del>';\n };\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n };\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n };\n\n text(text) {\n return text;\n };\n};\n","/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n };\n};\n","/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n","const Lexer = require('./Lexer.js');\nconst Parser = require('./Parser.js');\nconst Renderer = require('./Renderer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst Slugger = require('./Slugger.js');\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = require('./helpers.js');\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = require('./defaults.js');\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n","const {\n noopTest,\n edit,\n merge\n} = require('./helpers.js');\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}|~{3,})([^`~\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?>\\\\n*' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\\\\n*' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|</(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?-->/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} +')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}|~{3,})[^`\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*]|\\b_|$)|[^ ](?= {2,}\\n))|(?= {2,}\\n))/\n};\n\n// list of punctuation marks from common mark spec\n// without ` and ] to workaround Rule 17 (inline code blocks/links)\ninline._punctuation = '!\"#$%&\\'()*+,\\\\-./:;<=>?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*~]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))|(?= {2,}\\n|[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))/\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n});\n\nmodule.exports = {\n block,\n inline\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _arrays = require('shallow-equal/arrays');\n\nvar _arrays2 = _interopRequireDefault(_arrays);\n\nvar _reactAutowhatever = require('react-autowhatever');\n\nvar _reactAutowhatever2 = _interopRequireDefault(_reactAutowhatever);\n\nvar _theme = require('./theme');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar alwaysTrue = function alwaysTrue() {\n return true;\n};\nvar defaultShouldRenderSuggestions = function defaultShouldRenderSuggestions(value) {\n return value.trim().length > 0;\n};\nvar defaultRenderSuggestionsContainer = function defaultRenderSuggestionsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return _react2.default.createElement(\n 'div',\n containerProps,\n children\n );\n};\n\nvar Autosuggest = function (_Component) {\n _inherits(Autosuggest, _Component);\n\n function Autosuggest(_ref2) {\n var alwaysRenderSuggestions = _ref2.alwaysRenderSuggestions;\n\n _classCallCheck(this, Autosuggest);\n\n var _this = _possibleConstructorReturn(this, (Autosuggest.__proto__ || Object.getPrototypeOf(Autosuggest)).call(this));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n isFocused: false,\n isCollapsed: !alwaysRenderSuggestions,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null\n };\n\n _this.justPressedUpDown = false;\n _this.justMouseEntered = false;\n\n _this.pressedSuggestion = null;\n return _this;\n }\n\n _createClass(Autosuggest, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n document.addEventListener('mousedown', this.onDocumentMouseDown);\n document.addEventListener('mouseup', this.onDocumentMouseUp);\n\n this.input = this.autowhatever.input;\n this.suggestionsContainer = this.autowhatever.itemsContainer;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if ((0, _arrays2.default)(nextProps.suggestions, this.props.suggestions)) {\n if (nextProps.highlightFirstSuggestion && nextProps.suggestions.length > 0 && this.justPressedUpDown === false && this.justMouseEntered === false) {\n this.highlightFirstSuggestion();\n }\n } else {\n if (this.willRenderSuggestions(nextProps)) {\n if (this.state.isCollapsed && !this.justSelectedSuggestion) {\n this.revealSuggestions();\n }\n } else {\n this.resetHighlightedSuggestion();\n }\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _props = this.props,\n suggestions = _props.suggestions,\n onSuggestionHighlighted = _props.onSuggestionHighlighted,\n highlightFirstSuggestion = _props.highlightFirstSuggestion;\n\n\n if (!(0, _arrays2.default)(suggestions, prevProps.suggestions) && suggestions.length > 0 && highlightFirstSuggestion) {\n this.highlightFirstSuggestion();\n return;\n }\n\n if (onSuggestionHighlighted) {\n var highlightedSuggestion = this.getHighlightedSuggestion();\n var prevHighlightedSuggestion = prevState.highlightedSuggestion;\n\n if (highlightedSuggestion != prevHighlightedSuggestion) {\n onSuggestionHighlighted({\n suggestion: highlightedSuggestion\n });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('mousedown', this.onDocumentMouseDown);\n document.removeEventListener('mouseup', this.onDocumentMouseUp);\n }\n }, {\n key: 'updateHighlightedSuggestion',\n value: function updateHighlightedSuggestion(sectionIndex, suggestionIndex, prevValue) {\n var _this2 = this;\n\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n\n\n if (suggestionIndex === null) {\n valueBeforeUpDown = null;\n } else if (valueBeforeUpDown === null && typeof prevValue !== 'undefined') {\n valueBeforeUpDown = prevValue;\n }\n\n return {\n highlightedSectionIndex: sectionIndex,\n highlightedSuggestionIndex: suggestionIndex,\n highlightedSuggestion: suggestionIndex === null ? null : _this2.getSuggestion(sectionIndex, suggestionIndex),\n valueBeforeUpDown: valueBeforeUpDown\n };\n });\n }\n }, {\n key: 'resetHighlightedSuggestion',\n value: function resetHighlightedSuggestion() {\n var shouldResetValueBeforeUpDown = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n\n\n return {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: shouldResetValueBeforeUpDown ? null : valueBeforeUpDown\n };\n });\n }\n }, {\n key: 'revealSuggestions',\n value: function revealSuggestions() {\n this.setState({\n isCollapsed: false\n });\n }\n }, {\n key: 'closeSuggestions',\n value: function closeSuggestions() {\n this.setState({\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: true\n });\n }\n }, {\n key: 'getSuggestion',\n value: function getSuggestion(sectionIndex, suggestionIndex) {\n var _props2 = this.props,\n suggestions = _props2.suggestions,\n multiSection = _props2.multiSection,\n getSectionSuggestions = _props2.getSectionSuggestions;\n\n\n if (multiSection) {\n return getSectionSuggestions(suggestions[sectionIndex])[suggestionIndex];\n }\n\n return suggestions[suggestionIndex];\n }\n }, {\n key: 'getHighlightedSuggestion',\n value: function getHighlightedSuggestion() {\n var _state = this.state,\n highlightedSectionIndex = _state.highlightedSectionIndex,\n highlightedSuggestionIndex = _state.highlightedSuggestionIndex;\n\n\n if (highlightedSuggestionIndex === null) {\n return null;\n }\n\n return this.getSuggestion(highlightedSectionIndex, highlightedSuggestionIndex);\n }\n }, {\n key: 'getSuggestionValueByIndex',\n value: function getSuggestionValueByIndex(sectionIndex, suggestionIndex) {\n var getSuggestionValue = this.props.getSuggestionValue;\n\n\n return getSuggestionValue(this.getSuggestion(sectionIndex, suggestionIndex));\n }\n }, {\n key: 'getSuggestionIndices',\n value: function getSuggestionIndices(suggestionElement) {\n var sectionIndex = suggestionElement.getAttribute('data-section-index');\n var suggestionIndex = suggestionElement.getAttribute('data-suggestion-index');\n\n return {\n sectionIndex: typeof sectionIndex === 'string' ? parseInt(sectionIndex, 10) : null,\n suggestionIndex: parseInt(suggestionIndex, 10)\n };\n }\n }, {\n key: 'findSuggestionElement',\n value: function findSuggestionElement(startNode) {\n var node = startNode;\n\n do {\n if (node.getAttribute('data-suggestion-index') !== null) {\n return node;\n }\n\n node = node.parentNode;\n } while (node !== null);\n\n console.error('Clicked element:', startNode); // eslint-disable-line no-console\n throw new Error(\"Couldn't find suggestion element\");\n }\n }, {\n key: 'maybeCallOnChange',\n value: function maybeCallOnChange(event, newValue, method) {\n var _props$inputProps = this.props.inputProps,\n value = _props$inputProps.value,\n onChange = _props$inputProps.onChange;\n\n\n if (newValue !== value) {\n onChange(event, { newValue: newValue, method: method });\n }\n }\n }, {\n key: 'willRenderSuggestions',\n value: function willRenderSuggestions(props) {\n var suggestions = props.suggestions,\n inputProps = props.inputProps,\n shouldRenderSuggestions = props.shouldRenderSuggestions;\n var value = inputProps.value;\n\n\n return suggestions.length > 0 && shouldRenderSuggestions(value);\n }\n }, {\n key: 'getQuery',\n value: function getQuery() {\n var inputProps = this.props.inputProps;\n var value = inputProps.value;\n var valueBeforeUpDown = this.state.valueBeforeUpDown;\n\n\n return (valueBeforeUpDown === null ? value : valueBeforeUpDown).trim();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props3 = this.props,\n suggestions = _props3.suggestions,\n renderInputComponent = _props3.renderInputComponent,\n onSuggestionsFetchRequested = _props3.onSuggestionsFetchRequested,\n renderSuggestion = _props3.renderSuggestion,\n inputProps = _props3.inputProps,\n multiSection = _props3.multiSection,\n renderSectionTitle = _props3.renderSectionTitle,\n id = _props3.id,\n getSectionSuggestions = _props3.getSectionSuggestions,\n theme = _props3.theme,\n getSuggestionValue = _props3.getSuggestionValue,\n alwaysRenderSuggestions = _props3.alwaysRenderSuggestions,\n highlightFirstSuggestion = _props3.highlightFirstSuggestion;\n var _state2 = this.state,\n isFocused = _state2.isFocused,\n isCollapsed = _state2.isCollapsed,\n highlightedSectionIndex = _state2.highlightedSectionIndex,\n highlightedSuggestionIndex = _state2.highlightedSuggestionIndex,\n valueBeforeUpDown = _state2.valueBeforeUpDown;\n\n var shouldRenderSuggestions = alwaysRenderSuggestions ? alwaysTrue : this.props.shouldRenderSuggestions;\n var value = inputProps.value,\n _onFocus = inputProps.onFocus,\n _onKeyDown = inputProps.onKeyDown;\n\n var willRenderSuggestions = this.willRenderSuggestions(this.props);\n var isOpen = alwaysRenderSuggestions || isFocused && !isCollapsed && willRenderSuggestions;\n var items = isOpen ? suggestions : [];\n var autowhateverInputProps = _extends({}, inputProps, {\n onFocus: function onFocus(event) {\n if (!_this3.justSelectedSuggestion && !_this3.justClickedOnSuggestionsContainer) {\n var shouldRender = shouldRenderSuggestions(value);\n\n _this3.setState({\n isFocused: true,\n isCollapsed: !shouldRender\n });\n\n _onFocus && _onFocus(event);\n\n if (shouldRender) {\n onSuggestionsFetchRequested({ value: value, reason: 'input-focused' });\n }\n }\n },\n onBlur: function onBlur(event) {\n if (_this3.justClickedOnSuggestionsContainer) {\n _this3.input.focus();\n return;\n }\n\n _this3.blurEvent = event;\n\n if (!_this3.justSelectedSuggestion) {\n _this3.onBlur();\n _this3.onSuggestionsClearRequested();\n }\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n\n var shouldRender = shouldRenderSuggestions(value);\n\n _this3.maybeCallOnChange(event, value, 'type');\n\n if (_this3.suggestionsContainer) {\n _this3.suggestionsContainer.scrollTop = 0;\n }\n\n _this3.setState(_extends({}, highlightFirstSuggestion ? {} : {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null\n }, {\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n }));\n\n if (shouldRender) {\n onSuggestionsFetchRequested({ value: value, reason: 'input-changed' });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n },\n onKeyDown: function onKeyDown(event, data) {\n var keyCode = event.keyCode;\n\n\n switch (keyCode) {\n case 40: // ArrowDown\n case 38:\n // ArrowUp\n if (isCollapsed) {\n if (shouldRenderSuggestions(value)) {\n onSuggestionsFetchRequested({\n value: value,\n reason: 'suggestions-revealed'\n });\n _this3.revealSuggestions();\n }\n } else if (suggestions.length > 0) {\n var newHighlightedSectionIndex = data.newHighlightedSectionIndex,\n newHighlightedItemIndex = data.newHighlightedItemIndex;\n\n\n var newValue = void 0;\n\n if (newHighlightedItemIndex === null) {\n // valueBeforeUpDown can be null if, for example, user\n // hovers on the first suggestion and then pressed Up.\n // If that happens, use the original input value.\n newValue = valueBeforeUpDown === null ? value : valueBeforeUpDown;\n } else {\n newValue = _this3.getSuggestionValueByIndex(newHighlightedSectionIndex, newHighlightedItemIndex);\n }\n\n _this3.updateHighlightedSuggestion(newHighlightedSectionIndex, newHighlightedItemIndex, value);\n _this3.maybeCallOnChange(event, newValue, keyCode === 40 ? 'down' : 'up');\n }\n\n event.preventDefault(); // Prevents the cursor from moving\n\n _this3.justPressedUpDown = true;\n\n setTimeout(function () {\n _this3.justPressedUpDown = false;\n });\n\n break;\n\n // Enter\n case 13:\n {\n // See #388\n if (event.keyCode === 229) {\n break;\n }\n\n var highlightedSuggestion = _this3.getHighlightedSuggestion();\n\n if (isOpen && !alwaysRenderSuggestions) {\n _this3.closeSuggestions();\n }\n\n if (highlightedSuggestion != null) {\n var _newValue = getSuggestionValue(highlightedSuggestion);\n\n _this3.maybeCallOnChange(event, _newValue, 'enter');\n\n _this3.onSuggestionSelected(event, {\n suggestion: highlightedSuggestion,\n suggestionValue: _newValue,\n suggestionIndex: highlightedSuggestionIndex,\n sectionIndex: highlightedSectionIndex,\n method: 'enter'\n });\n\n _this3.justSelectedSuggestion = true;\n\n setTimeout(function () {\n _this3.justSelectedSuggestion = false;\n });\n }\n\n break;\n }\n\n // Escape\n case 27:\n {\n if (isOpen) {\n // If input.type === 'search', the browser clears the input\n // when Escape is pressed. We want to disable this default\n // behaviour so that, when suggestions are shown, we just hide\n // them, without clearing the input.\n event.preventDefault();\n }\n\n var willCloseSuggestions = isOpen && !alwaysRenderSuggestions;\n\n if (valueBeforeUpDown === null) {\n // Didn't interact with Up/Down\n if (!willCloseSuggestions) {\n var _newValue2 = '';\n\n _this3.maybeCallOnChange(event, _newValue2, 'escape');\n\n if (shouldRenderSuggestions(_newValue2)) {\n onSuggestionsFetchRequested({\n value: _newValue2,\n reason: 'escape-pressed'\n });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n }\n } else {\n // Interacted with Up/Down\n _this3.maybeCallOnChange(event, valueBeforeUpDown, 'escape');\n }\n\n if (willCloseSuggestions) {\n _this3.onSuggestionsClearRequested();\n _this3.closeSuggestions();\n } else {\n _this3.resetHighlightedSuggestion();\n }\n\n break;\n }\n }\n\n _onKeyDown && _onKeyDown(event);\n }\n });\n var renderSuggestionData = {\n query: this.getQuery()\n };\n\n return _react2.default.createElement(_reactAutowhatever2.default, {\n multiSection: multiSection,\n items: items,\n renderInputComponent: renderInputComponent,\n renderItemsContainer: this.renderSuggestionsContainer,\n renderItem: renderSuggestion,\n renderItemData: renderSuggestionData,\n renderSectionTitle: renderSectionTitle,\n getSectionItems: getSectionSuggestions,\n highlightedSectionIndex: highlightedSectionIndex,\n highlightedItemIndex: highlightedSuggestionIndex,\n inputProps: autowhateverInputProps,\n itemProps: this.itemProps,\n theme: (0, _theme.mapToAutowhateverTheme)(theme),\n id: id,\n ref: this.storeAutowhateverRef\n });\n }\n }]);\n\n return Autosuggest;\n}(_react.Component);\n\nAutosuggest.propTypes = {\n suggestions: _propTypes2.default.array.isRequired,\n onSuggestionsFetchRequested: function onSuggestionsFetchRequested(props, propName) {\n var onSuggestionsFetchRequested = props[propName];\n\n if (typeof onSuggestionsFetchRequested !== 'function') {\n throw new Error(\"'onSuggestionsFetchRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsFetchRequestedProp\");\n }\n },\n onSuggestionsClearRequested: function onSuggestionsClearRequested(props, propName) {\n var onSuggestionsClearRequested = props[propName];\n\n if (props.alwaysRenderSuggestions === false && typeof onSuggestionsClearRequested !== 'function') {\n throw new Error(\"'onSuggestionsClearRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsClearRequestedProp\");\n }\n },\n onSuggestionSelected: _propTypes2.default.func,\n onSuggestionHighlighted: _propTypes2.default.func,\n renderInputComponent: _propTypes2.default.func,\n renderSuggestionsContainer: _propTypes2.default.func,\n getSuggestionValue: _propTypes2.default.func.isRequired,\n renderSuggestion: _propTypes2.default.func.isRequired,\n inputProps: function inputProps(props, propName) {\n var inputProps = props[propName];\n\n if (!inputProps.hasOwnProperty('value')) {\n throw new Error(\"'inputProps' must have 'value'.\");\n }\n\n if (!inputProps.hasOwnProperty('onChange')) {\n throw new Error(\"'inputProps' must have 'onChange'.\");\n }\n },\n shouldRenderSuggestions: _propTypes2.default.func,\n alwaysRenderSuggestions: _propTypes2.default.bool,\n multiSection: _propTypes2.default.bool,\n renderSectionTitle: function renderSectionTitle(props, propName) {\n var renderSectionTitle = props[propName];\n\n if (props.multiSection === true && typeof renderSectionTitle !== 'function') {\n throw new Error(\"'renderSectionTitle' must be implemented. See: https://github.com/moroshko/react-autosuggest#renderSectionTitleProp\");\n }\n },\n getSectionSuggestions: function getSectionSuggestions(props, propName) {\n var getSectionSuggestions = props[propName];\n\n if (props.multiSection === true && typeof getSectionSuggestions !== 'function') {\n throw new Error(\"'getSectionSuggestions' must be implemented. See: https://github.com/moroshko/react-autosuggest#getSectionSuggestionsProp\");\n }\n },\n focusInputOnSuggestionClick: _propTypes2.default.bool,\n highlightFirstSuggestion: _propTypes2.default.bool,\n theme: _propTypes2.default.object,\n id: _propTypes2.default.string\n};\nAutosuggest.defaultProps = {\n renderSuggestionsContainer: defaultRenderSuggestionsContainer,\n shouldRenderSuggestions: defaultShouldRenderSuggestions,\n alwaysRenderSuggestions: false,\n multiSection: false,\n focusInputOnSuggestionClick: true,\n highlightFirstSuggestion: false,\n theme: _theme.defaultTheme,\n id: '1'\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this4 = this;\n\n this.onDocumentMouseDown = function (event) {\n _this4.justClickedOnSuggestionsContainer = false;\n\n var node = event.detail && event.detail.target || // This is for testing only. Please show me a better way to emulate this.\n event.target;\n\n while (node !== null && node !== document) {\n if (node.getAttribute('data-suggestion-index') !== null) {\n // Suggestion was clicked\n return;\n }\n\n if (node === _this4.suggestionsContainer) {\n // Something else inside suggestions container was clicked\n _this4.justClickedOnSuggestionsContainer = true;\n return;\n }\n\n node = node.parentNode;\n }\n };\n\n this.storeAutowhateverRef = function (autowhatever) {\n if (autowhatever !== null) {\n _this4.autowhatever = autowhatever;\n }\n };\n\n this.onSuggestionMouseEnter = function (event, _ref3) {\n var sectionIndex = _ref3.sectionIndex,\n itemIndex = _ref3.itemIndex;\n\n _this4.updateHighlightedSuggestion(sectionIndex, itemIndex);\n\n if (event.target === _this4.pressedSuggestion) {\n _this4.justSelectedSuggestion = true;\n }\n\n _this4.justMouseEntered = true;\n\n setTimeout(function () {\n _this4.justMouseEntered = false;\n });\n };\n\n this.highlightFirstSuggestion = function () {\n _this4.updateHighlightedSuggestion(_this4.props.multiSection ? 0 : null, 0);\n };\n\n this.onDocumentMouseUp = function () {\n if (_this4.pressedSuggestion && !_this4.justSelectedSuggestion) {\n _this4.input.focus();\n }\n _this4.pressedSuggestion = null;\n };\n\n this.onSuggestionMouseDown = function (event) {\n // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n if (!_this4.justSelectedSuggestion) {\n _this4.justSelectedSuggestion = true;\n _this4.pressedSuggestion = event.target;\n }\n };\n\n this.onSuggestionsClearRequested = function () {\n var onSuggestionsClearRequested = _this4.props.onSuggestionsClearRequested;\n\n\n onSuggestionsClearRequested && onSuggestionsClearRequested();\n };\n\n this.onSuggestionSelected = function (event, data) {\n var _props4 = _this4.props,\n alwaysRenderSuggestions = _props4.alwaysRenderSuggestions,\n onSuggestionSelected = _props4.onSuggestionSelected,\n onSuggestionsFetchRequested = _props4.onSuggestionsFetchRequested;\n\n\n onSuggestionSelected && onSuggestionSelected(event, data);\n\n if (alwaysRenderSuggestions) {\n onSuggestionsFetchRequested({\n value: data.suggestionValue,\n reason: 'suggestion-selected'\n });\n } else {\n _this4.onSuggestionsClearRequested();\n }\n\n _this4.resetHighlightedSuggestion();\n };\n\n this.onSuggestionClick = function (event) {\n var _props5 = _this4.props,\n alwaysRenderSuggestions = _props5.alwaysRenderSuggestions,\n focusInputOnSuggestionClick = _props5.focusInputOnSuggestionClick;\n\n var _getSuggestionIndices = _this4.getSuggestionIndices(_this4.findSuggestionElement(event.target)),\n sectionIndex = _getSuggestionIndices.sectionIndex,\n suggestionIndex = _getSuggestionIndices.suggestionIndex;\n\n var clickedSuggestion = _this4.getSuggestion(sectionIndex, suggestionIndex);\n var clickedSuggestionValue = _this4.props.getSuggestionValue(clickedSuggestion);\n\n _this4.maybeCallOnChange(event, clickedSuggestionValue, 'click');\n _this4.onSuggestionSelected(event, {\n suggestion: clickedSuggestion,\n suggestionValue: clickedSuggestionValue,\n suggestionIndex: suggestionIndex,\n sectionIndex: sectionIndex,\n method: 'click'\n });\n\n if (!alwaysRenderSuggestions) {\n _this4.closeSuggestions();\n }\n\n if (focusInputOnSuggestionClick === true) {\n _this4.input.focus();\n } else {\n _this4.onBlur();\n }\n\n setTimeout(function () {\n _this4.justSelectedSuggestion = false;\n });\n };\n\n this.onBlur = function () {\n var _props6 = _this4.props,\n inputProps = _props6.inputProps,\n shouldRenderSuggestions = _props6.shouldRenderSuggestions;\n var value = inputProps.value,\n onBlur = inputProps.onBlur;\n\n var highlightedSuggestion = _this4.getHighlightedSuggestion();\n var shouldRender = shouldRenderSuggestions(value);\n\n _this4.setState({\n isFocused: false,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n });\n\n onBlur && onBlur(_this4.blurEvent, { highlightedSuggestion: highlightedSuggestion });\n };\n\n this.onSuggestionMouseLeave = function (event) {\n _this4.resetHighlightedSuggestion(false); // shouldResetValueBeforeUpDown\n\n if (_this4.justSelectedSuggestion && event.target === _this4.pressedSuggestion) {\n _this4.justSelectedSuggestion = false;\n }\n };\n\n this.onSuggestionTouchStart = function () {\n _this4.justSelectedSuggestion = true;\n // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n // todo: gets released so onSuggestionMouseDown won't fire in chrome\n };\n\n this.onSuggestionTouchMove = function () {\n _this4.justSelectedSuggestion = false;\n _this4.pressedSuggestion = null;\n _this4.input.focus();\n };\n\n this.itemProps = function (_ref4) {\n var sectionIndex = _ref4.sectionIndex,\n itemIndex = _ref4.itemIndex;\n\n return {\n 'data-section-index': sectionIndex,\n 'data-suggestion-index': itemIndex,\n onMouseEnter: _this4.onSuggestionMouseEnter,\n onMouseLeave: _this4.onSuggestionMouseLeave,\n onMouseDown: _this4.onSuggestionMouseDown,\n onTouchStart: _this4.onSuggestionTouchStart,\n onTouchMove: _this4.onSuggestionTouchMove,\n onClick: _this4.onSuggestionClick\n };\n };\n\n this.renderSuggestionsContainer = function (_ref5) {\n var containerProps = _ref5.containerProps,\n children = _ref5.children;\n var renderSuggestionsContainer = _this4.props.renderSuggestionsContainer;\n\n\n return renderSuggestionsContainer({\n containerProps: containerProps,\n children: children,\n query: _this4.getQuery()\n });\n };\n};\n\nexports.default = Autosuggest;","'use strict';\n\nmodule.exports = require('./Autosuggest').default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar defaultTheme = exports.defaultTheme = {\n container: 'react-autosuggest__container',\n containerOpen: 'react-autosuggest__container--open',\n input: 'react-autosuggest__input',\n inputOpen: 'react-autosuggest__input--open',\n inputFocused: 'react-autosuggest__input--focused',\n suggestionsContainer: 'react-autosuggest__suggestions-container',\n suggestionsContainerOpen: 'react-autosuggest__suggestions-container--open',\n suggestionsList: 'react-autosuggest__suggestions-list',\n suggestion: 'react-autosuggest__suggestion',\n suggestionFirst: 'react-autosuggest__suggestion--first',\n suggestionHighlighted: 'react-autosuggest__suggestion--highlighted',\n sectionContainer: 'react-autosuggest__section-container',\n sectionContainerFirst: 'react-autosuggest__section-container--first',\n sectionTitle: 'react-autosuggest__section-title'\n};\n\nvar mapToAutowhateverTheme = exports.mapToAutowhateverTheme = function mapToAutowhateverTheme(theme) {\n var result = {};\n\n for (var key in theme) {\n switch (key) {\n case 'suggestionsContainer':\n result['itemsContainer'] = theme[key];\n break;\n\n case 'suggestionsContainerOpen':\n result['itemsContainerOpen'] = theme[key];\n break;\n\n case 'suggestion':\n result['item'] = theme[key];\n break;\n\n case 'suggestionFirst':\n result['itemFirst'] = theme[key];\n break;\n\n case 'suggestionHighlighted':\n result['itemHighlighted'] = theme[key];\n break;\n\n case 'suggestionsList':\n result['itemsList'] = theme[key];\n break;\n\n default:\n result[key] = theme[key];\n }\n }\n\n return result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _sectionIterator = require('section-iterator');\n\nvar _sectionIterator2 = _interopRequireDefault(_sectionIterator);\n\nvar _reactThemeable = require('react-themeable');\n\nvar _reactThemeable2 = _interopRequireDefault(_reactThemeable);\n\nvar _SectionTitle = require('./SectionTitle');\n\nvar _SectionTitle2 = _interopRequireDefault(_SectionTitle);\n\nvar _ItemsList = require('./ItemsList');\n\nvar _ItemsList2 = _interopRequireDefault(_ItemsList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar emptyObject = {};\nvar defaultRenderInputComponent = function defaultRenderInputComponent(props) {\n return _react2.default.createElement('input', props);\n};\nvar defaultRenderItemsContainer = function defaultRenderItemsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return _react2.default.createElement(\n 'div',\n containerProps,\n children\n );\n};\nvar defaultTheme = {\n container: 'react-autowhatever__container',\n containerOpen: 'react-autowhatever__container--open',\n input: 'react-autowhatever__input',\n inputOpen: 'react-autowhatever__input--open',\n inputFocused: 'react-autowhatever__input--focused',\n itemsContainer: 'react-autowhatever__items-container',\n itemsContainerOpen: 'react-autowhatever__items-container--open',\n itemsList: 'react-autowhatever__items-list',\n item: 'react-autowhatever__item',\n itemFirst: 'react-autowhatever__item--first',\n itemHighlighted: 'react-autowhatever__item--highlighted',\n sectionContainer: 'react-autowhatever__section-container',\n sectionContainerFirst: 'react-autowhatever__section-container--first',\n sectionTitle: 'react-autowhatever__section-title'\n};\n\nvar Autowhatever = function (_Component) {\n _inherits(Autowhatever, _Component);\n\n function Autowhatever(props) {\n _classCallCheck(this, Autowhatever);\n\n var _this = _possibleConstructorReturn(this, (Autowhatever.__proto__ || Object.getPrototypeOf(Autowhatever)).call(this, props));\n\n _this.storeInputReference = function (input) {\n if (input !== null) {\n _this.input = input;\n }\n };\n\n _this.storeItemsContainerReference = function (itemsContainer) {\n if (itemsContainer !== null) {\n _this.itemsContainer = itemsContainer;\n }\n };\n\n _this.onHighlightedItemChange = function (highlightedItem) {\n _this.highlightedItem = highlightedItem;\n };\n\n _this.getItemId = function (sectionIndex, itemIndex) {\n if (itemIndex === null) {\n return null;\n }\n\n var id = _this.props.id;\n\n var section = sectionIndex === null ? '' : 'section-' + sectionIndex;\n\n return 'react-autowhatever-' + id + '-' + section + '-item-' + itemIndex;\n };\n\n _this.onFocus = function (event) {\n var inputProps = _this.props.inputProps;\n\n\n _this.setState({\n isInputFocused: true\n });\n\n inputProps.onFocus && inputProps.onFocus(event);\n };\n\n _this.onBlur = function (event) {\n var inputProps = _this.props.inputProps;\n\n\n _this.setState({\n isInputFocused: false\n });\n\n inputProps.onBlur && inputProps.onBlur(event);\n };\n\n _this.onKeyDown = function (event) {\n var _this$props = _this.props,\n inputProps = _this$props.inputProps,\n highlightedSectionIndex = _this$props.highlightedSectionIndex,\n highlightedItemIndex = _this$props.highlightedItemIndex;\n\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n {\n var nextPrev = event.key === 'ArrowDown' ? 'next' : 'prev';\n\n var _this$sectionIterator = _this.sectionIterator[nextPrev]([highlightedSectionIndex, highlightedItemIndex]),\n _this$sectionIterator2 = _slicedToArray(_this$sectionIterator, 2),\n newHighlightedSectionIndex = _this$sectionIterator2[0],\n newHighlightedItemIndex = _this$sectionIterator2[1];\n\n inputProps.onKeyDown(event, { newHighlightedSectionIndex: newHighlightedSectionIndex, newHighlightedItemIndex: newHighlightedItemIndex });\n break;\n }\n\n default:\n inputProps.onKeyDown(event, { highlightedSectionIndex: highlightedSectionIndex, highlightedItemIndex: highlightedItemIndex });\n }\n };\n\n _this.highlightedItem = null;\n\n _this.state = {\n isInputFocused: false\n };\n\n _this.setSectionsItems(props);\n _this.setSectionIterator(props);\n _this.setTheme(props);\n return _this;\n }\n\n _createClass(Autowhatever, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.ensureHighlightedItemIsVisible();\n }\n\n // eslint-disable-next-line camelcase, react/sort-comp\n\n }, {\n key: 'UNSAFE_componentWillReceiveProps',\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.items !== this.props.items) {\n this.setSectionsItems(nextProps);\n }\n\n if (nextProps.items !== this.props.items || nextProps.multiSection !== this.props.multiSection) {\n this.setSectionIterator(nextProps);\n }\n\n if (nextProps.theme !== this.props.theme) {\n this.setTheme(nextProps);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.ensureHighlightedItemIsVisible();\n }\n }, {\n key: 'setSectionsItems',\n value: function setSectionsItems(props) {\n if (props.multiSection) {\n this.sectionsItems = props.items.map(function (section) {\n return props.getSectionItems(section);\n });\n this.sectionsLengths = this.sectionsItems.map(function (items) {\n return items.length;\n });\n this.allSectionsAreEmpty = this.sectionsLengths.every(function (itemsCount) {\n return itemsCount === 0;\n });\n }\n }\n }, {\n key: 'setSectionIterator',\n value: function setSectionIterator(props) {\n this.sectionIterator = (0, _sectionIterator2.default)({\n multiSection: props.multiSection,\n data: props.multiSection ? this.sectionsLengths : props.items.length\n });\n }\n }, {\n key: 'setTheme',\n value: function setTheme(props) {\n this.theme = (0, _reactThemeable2.default)(props.theme);\n }\n }, {\n key: 'renderSections',\n value: function renderSections() {\n var _this2 = this;\n\n if (this.allSectionsAreEmpty) {\n return null;\n }\n\n var theme = this.theme;\n var _props = this.props,\n id = _props.id,\n items = _props.items,\n renderItem = _props.renderItem,\n renderItemData = _props.renderItemData,\n renderSectionTitle = _props.renderSectionTitle,\n highlightedSectionIndex = _props.highlightedSectionIndex,\n highlightedItemIndex = _props.highlightedItemIndex,\n itemProps = _props.itemProps;\n\n\n return items.map(function (section, sectionIndex) {\n var keyPrefix = 'react-autowhatever-' + id + '-';\n var sectionKeyPrefix = keyPrefix + 'section-' + sectionIndex + '-';\n var isFirstSection = sectionIndex === 0;\n\n // `key` is provided by theme()\n /* eslint-disable react/jsx-key */\n return _react2.default.createElement(\n 'div',\n theme(sectionKeyPrefix + 'container', 'sectionContainer', isFirstSection && 'sectionContainerFirst'),\n _react2.default.createElement(_SectionTitle2.default, {\n section: section,\n renderSectionTitle: renderSectionTitle,\n theme: theme,\n sectionKeyPrefix: sectionKeyPrefix\n }),\n _react2.default.createElement(_ItemsList2.default, {\n items: _this2.sectionsItems[sectionIndex],\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n sectionIndex: sectionIndex,\n highlightedItemIndex: highlightedSectionIndex === sectionIndex ? highlightedItemIndex : null,\n onHighlightedItemChange: _this2.onHighlightedItemChange,\n getItemId: _this2.getItemId,\n theme: theme,\n keyPrefix: keyPrefix,\n ref: _this2.storeItemsListReference\n })\n );\n /* eslint-enable react/jsx-key */\n });\n }\n }, {\n key: 'renderItems',\n value: function renderItems() {\n var items = this.props.items;\n\n\n if (items.length === 0) {\n return null;\n }\n\n var theme = this.theme;\n var _props2 = this.props,\n id = _props2.id,\n renderItem = _props2.renderItem,\n renderItemData = _props2.renderItemData,\n highlightedSectionIndex = _props2.highlightedSectionIndex,\n highlightedItemIndex = _props2.highlightedItemIndex,\n itemProps = _props2.itemProps;\n\n\n return _react2.default.createElement(_ItemsList2.default, {\n items: items,\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n highlightedItemIndex: highlightedSectionIndex === null ? highlightedItemIndex : null,\n onHighlightedItemChange: this.onHighlightedItemChange,\n getItemId: this.getItemId,\n theme: theme,\n keyPrefix: 'react-autowhatever-' + id + '-'\n });\n }\n }, {\n key: 'ensureHighlightedItemIsVisible',\n value: function ensureHighlightedItemIsVisible() {\n var highlightedItem = this.highlightedItem;\n\n\n if (!highlightedItem) {\n return;\n }\n\n var itemsContainer = this.itemsContainer;\n\n var itemOffsetRelativeToContainer = highlightedItem.offsetParent === itemsContainer ? highlightedItem.offsetTop : highlightedItem.offsetTop - itemsContainer.offsetTop;\n\n var scrollTop = itemsContainer.scrollTop; // Top of the visible area\n\n if (itemOffsetRelativeToContainer < scrollTop) {\n // Item is off the top of the visible area\n scrollTop = itemOffsetRelativeToContainer;\n } else if (itemOffsetRelativeToContainer + highlightedItem.offsetHeight > scrollTop + itemsContainer.offsetHeight) {\n // Item is off the bottom of the visible area\n scrollTop = itemOffsetRelativeToContainer + highlightedItem.offsetHeight - itemsContainer.offsetHeight;\n }\n\n if (scrollTop !== itemsContainer.scrollTop) {\n itemsContainer.scrollTop = scrollTop;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var theme = this.theme;\n var _props3 = this.props,\n id = _props3.id,\n multiSection = _props3.multiSection,\n renderInputComponent = _props3.renderInputComponent,\n renderItemsContainer = _props3.renderItemsContainer,\n highlightedSectionIndex = _props3.highlightedSectionIndex,\n highlightedItemIndex = _props3.highlightedItemIndex;\n var isInputFocused = this.state.isInputFocused;\n\n var renderedItems = multiSection ? this.renderSections() : this.renderItems();\n var isOpen = renderedItems !== null;\n var ariaActivedescendant = this.getItemId(highlightedSectionIndex, highlightedItemIndex);\n var itemsContainerId = 'react-autowhatever-' + id;\n var containerProps = _extends({\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n 'aria-owns': itemsContainerId,\n 'aria-expanded': isOpen\n }, theme('react-autowhatever-' + id + '-container', 'container', isOpen && 'containerOpen'), this.props.containerProps);\n var inputComponent = renderInputComponent(_extends({\n type: 'text',\n value: '',\n autoComplete: 'off',\n 'aria-autocomplete': 'list',\n 'aria-controls': itemsContainerId,\n 'aria-activedescendant': ariaActivedescendant\n }, theme('react-autowhatever-' + id + '-input', 'input', isOpen && 'inputOpen', isInputFocused && 'inputFocused'), this.props.inputProps, {\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.props.inputProps.onKeyDown && this.onKeyDown,\n ref: this.storeInputReference\n }));\n var itemsContainer = renderItemsContainer({\n containerProps: _extends({\n id: itemsContainerId,\n role: 'listbox'\n }, theme('react-autowhatever-' + id + '-items-container', 'itemsContainer', isOpen && 'itemsContainerOpen'), {\n ref: this.storeItemsContainerReference\n }),\n children: renderedItems\n });\n\n return _react2.default.createElement(\n 'div',\n containerProps,\n inputComponent,\n itemsContainer\n );\n }\n }]);\n\n return Autowhatever;\n}(_react.Component);\n\nAutowhatever.propTypes = {\n id: _propTypes2.default.string, // Used in aria-* attributes. If multiple Autowhatever's are rendered on a page, they must have unique ids.\n multiSection: _propTypes2.default.bool, // Indicates whether a multi section layout should be rendered.\n renderInputComponent: _propTypes2.default.func, // When specified, it is used to render the input element.\n renderItemsContainer: _propTypes2.default.func, // Renders the items container.\n items: _propTypes2.default.array.isRequired, // Array of items or sections to render.\n renderItem: _propTypes2.default.func, // This function renders a single item.\n renderItemData: _propTypes2.default.object, // Arbitrary data that will be passed to renderItem()\n renderSectionTitle: _propTypes2.default.func, // This function gets a section and renders its title.\n getSectionItems: _propTypes2.default.func, // This function gets a section and returns its items, which will be passed into `renderItem` for rendering.\n containerProps: _propTypes2.default.object, // Arbitrary container props\n inputProps: _propTypes2.default.object, // Arbitrary input props\n itemProps: _propTypes2.default.oneOfType([// Arbitrary item props\n _propTypes2.default.object, _propTypes2.default.func]),\n highlightedSectionIndex: _propTypes2.default.number, // Section index of the highlighted item\n highlightedItemIndex: _propTypes2.default.number, // Highlighted item index (within a section)\n theme: _propTypes2.default.oneOfType([// Styles. See: https://github.com/markdalgleish/react-themeable\n _propTypes2.default.object, _propTypes2.default.array])\n};\nAutowhatever.defaultProps = {\n id: '1',\n multiSection: false,\n renderInputComponent: defaultRenderInputComponent,\n renderItemsContainer: defaultRenderItemsContainer,\n renderItem: function renderItem() {\n throw new Error('`renderItem` must be provided');\n },\n renderItemData: emptyObject,\n renderSectionTitle: function renderSectionTitle() {\n throw new Error('`renderSectionTitle` must be provided');\n },\n getSectionItems: function getSectionItems() {\n throw new Error('`getSectionItems` must be provided');\n },\n containerProps: emptyObject,\n inputProps: emptyObject,\n itemProps: emptyObject,\n highlightedSectionIndex: null,\n highlightedItemIndex: null,\n theme: defaultTheme\n};\nexports.default = Autowhatever;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _compareObjects = require('./compareObjects');\n\nvar _compareObjects2 = _interopRequireDefault(_compareObjects);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Item = function (_Component) {\n _inherits(Item, _Component);\n\n function Item() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Item);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Item.__proto__ || Object.getPrototypeOf(Item)).call.apply(_ref, [this].concat(args))), _this), _this.storeItemReference = function (item) {\n if (item !== null) {\n _this.item = item;\n }\n }, _this.onMouseEnter = function (event) {\n var _this$props = _this.props,\n sectionIndex = _this$props.sectionIndex,\n itemIndex = _this$props.itemIndex;\n\n\n _this.props.onMouseEnter(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _this.onMouseLeave = function (event) {\n var _this$props2 = _this.props,\n sectionIndex = _this$props2.sectionIndex,\n itemIndex = _this$props2.itemIndex;\n\n\n _this.props.onMouseLeave(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _this.onMouseDown = function (event) {\n var _this$props3 = _this.props,\n sectionIndex = _this$props3.sectionIndex,\n itemIndex = _this$props3.itemIndex;\n\n\n _this.props.onMouseDown(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _this.onClick = function (event) {\n var _this$props4 = _this.props,\n sectionIndex = _this$props4.sectionIndex,\n itemIndex = _this$props4.itemIndex;\n\n\n _this.props.onClick(event, { sectionIndex: sectionIndex, itemIndex: itemIndex });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Item, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects2.default)(nextProps, this.props, ['renderItemData']);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n isHighlighted = _props.isHighlighted,\n item = _props.item,\n renderItem = _props.renderItem,\n renderItemData = _props.renderItemData,\n restProps = _objectWithoutProperties(_props, ['isHighlighted', 'item', 'renderItem', 'renderItemData']);\n\n delete restProps.sectionIndex;\n delete restProps.itemIndex;\n\n if (typeof restProps.onMouseEnter === 'function') {\n restProps.onMouseEnter = this.onMouseEnter;\n }\n\n if (typeof restProps.onMouseLeave === 'function') {\n restProps.onMouseLeave = this.onMouseLeave;\n }\n\n if (typeof restProps.onMouseDown === 'function') {\n restProps.onMouseDown = this.onMouseDown;\n }\n\n if (typeof restProps.onClick === 'function') {\n restProps.onClick = this.onClick;\n }\n\n return _react2.default.createElement(\n 'li',\n _extends({ role: 'option' }, restProps, { ref: this.storeItemReference }),\n renderItem(item, _extends({ isHighlighted: isHighlighted }, renderItemData))\n );\n }\n }]);\n\n return Item;\n}(_react.Component);\n\nItem.propTypes = {\n sectionIndex: _propTypes2.default.number,\n isHighlighted: _propTypes2.default.bool.isRequired,\n itemIndex: _propTypes2.default.number.isRequired,\n item: _propTypes2.default.any.isRequired,\n renderItem: _propTypes2.default.func.isRequired,\n renderItemData: _propTypes2.default.object.isRequired,\n onMouseEnter: _propTypes2.default.func,\n onMouseLeave: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func,\n onClick: _propTypes2.default.func\n};\nexports.default = Item;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Item = require('./Item');\n\nvar _Item2 = _interopRequireDefault(_Item);\n\nvar _compareObjects = require('./compareObjects');\n\nvar _compareObjects2 = _interopRequireDefault(_compareObjects);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ItemsList = function (_Component) {\n _inherits(ItemsList, _Component);\n\n function ItemsList() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ItemsList);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ItemsList.__proto__ || Object.getPrototypeOf(ItemsList)).call.apply(_ref, [this].concat(args))), _this), _this.storeHighlightedItemReference = function (highlightedItem) {\n _this.props.onHighlightedItemChange(highlightedItem === null ? null : highlightedItem.item);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ItemsList, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects2.default)(nextProps, this.props, ['itemProps']);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n items = _props.items,\n itemProps = _props.itemProps,\n renderItem = _props.renderItem,\n renderItemData = _props.renderItemData,\n sectionIndex = _props.sectionIndex,\n highlightedItemIndex = _props.highlightedItemIndex,\n getItemId = _props.getItemId,\n theme = _props.theme,\n keyPrefix = _props.keyPrefix;\n\n var sectionPrefix = sectionIndex === null ? keyPrefix : keyPrefix + 'section-' + sectionIndex + '-';\n var isItemPropsFunction = typeof itemProps === 'function';\n\n return _react2.default.createElement(\n 'ul',\n _extends({ role: 'listbox' }, theme(sectionPrefix + 'items-list', 'itemsList')),\n items.map(function (item, itemIndex) {\n var isFirst = itemIndex === 0;\n var isHighlighted = itemIndex === highlightedItemIndex;\n var itemKey = sectionPrefix + 'item-' + itemIndex;\n var itemPropsObj = isItemPropsFunction ? itemProps({ sectionIndex: sectionIndex, itemIndex: itemIndex }) : itemProps;\n var allItemProps = _extends({\n id: getItemId(sectionIndex, itemIndex),\n 'aria-selected': isHighlighted\n }, theme(itemKey, 'item', isFirst && 'itemFirst', isHighlighted && 'itemHighlighted'), itemPropsObj);\n\n if (isHighlighted) {\n allItemProps.ref = _this2.storeHighlightedItemReference;\n }\n\n // `key` is provided by theme()\n /* eslint-disable react/jsx-key */\n return _react2.default.createElement(_Item2.default, _extends({}, allItemProps, {\n sectionIndex: sectionIndex,\n isHighlighted: isHighlighted,\n itemIndex: itemIndex,\n item: item,\n renderItem: renderItem,\n renderItemData: renderItemData\n }));\n /* eslint-enable react/jsx-key */\n })\n );\n }\n }]);\n\n return ItemsList;\n}(_react.Component);\n\nItemsList.propTypes = {\n items: _propTypes2.default.array.isRequired,\n itemProps: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]),\n renderItem: _propTypes2.default.func.isRequired,\n renderItemData: _propTypes2.default.object.isRequired,\n sectionIndex: _propTypes2.default.number,\n highlightedItemIndex: _propTypes2.default.number,\n onHighlightedItemChange: _propTypes2.default.func.isRequired,\n getItemId: _propTypes2.default.func.isRequired,\n theme: _propTypes2.default.func.isRequired,\n keyPrefix: _propTypes2.default.string.isRequired\n};\nItemsList.defaultProps = {\n sectionIndex: null\n};\nexports.default = ItemsList;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _compareObjects = require('./compareObjects');\n\nvar _compareObjects2 = _interopRequireDefault(_compareObjects);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SectionTitle = function (_Component) {\n _inherits(SectionTitle, _Component);\n\n function SectionTitle() {\n _classCallCheck(this, SectionTitle);\n\n return _possibleConstructorReturn(this, (SectionTitle.__proto__ || Object.getPrototypeOf(SectionTitle)).apply(this, arguments));\n }\n\n _createClass(SectionTitle, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects2.default)(nextProps, this.props);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n section = _props.section,\n renderSectionTitle = _props.renderSectionTitle,\n theme = _props.theme,\n sectionKeyPrefix = _props.sectionKeyPrefix;\n\n var sectionTitle = renderSectionTitle(section);\n\n if (!sectionTitle) {\n return null;\n }\n\n return _react2.default.createElement(\n 'div',\n theme(sectionKeyPrefix + 'title', 'sectionTitle'),\n sectionTitle\n );\n }\n }]);\n\n return SectionTitle;\n}(_react.Component);\n\nSectionTitle.propTypes = {\n section: _propTypes2.default.any.isRequired,\n renderSectionTitle: _propTypes2.default.func.isRequired,\n theme: _propTypes2.default.func.isRequired,\n sectionKeyPrefix: _propTypes2.default.string.isRequired\n};\nexports.default = SectionTitle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = compareObjects;\nfunction compareObjects(objA, objB) {\n var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n if (objA === objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (aKeys.length !== bKeys.length) {\n return true;\n }\n\n var keysMap = {};\n var i = void 0,\n len = void 0;\n\n for (i = 0, len = keys.length; i < len; i++) {\n keysMap[keys[i]] = true;\n }\n\n for (i = 0, len = aKeys.length; i < len; i++) {\n var key = aKeys[i];\n var aValue = objA[key];\n var bValue = objB[key];\n\n if (aValue === bValue) {\n continue;\n }\n\n if (!keysMap[key] || aValue === null || bValue === null || (typeof aValue === 'undefined' ? 'undefined' : _typeof(aValue)) !== 'object' || (typeof bValue === 'undefined' ? 'undefined' : _typeof(bValue)) !== 'object') {\n return true;\n }\n\n var aValueKeys = Object.keys(aValue);\n var bValueKeys = Object.keys(bValue);\n\n if (aValueKeys.length !== bValueKeys.length) {\n return true;\n }\n\n for (var n = 0, length = aValueKeys.length; n < length; n++) {\n var aValueKey = aValueKeys[n];\n\n if (aValue[aValueKey] !== bValue[aValueKey]) {\n return true;\n }\n }\n }\n\n return false;\n}","'use strict';\n\nmodule.exports = require('./Autowhatever').default;","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar truthy = function truthy(x) {\n return x;\n};\n\nexports['default'] = function (input) {\n var _ref = Array.isArray(input) && input.length === 2 ? input : [input, null];\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var theme = _ref2[0];\n var classNameDecorator = _ref2[1];\n\n return function (key) {\n for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n names[_key - 1] = arguments[_key];\n }\n\n var styles = names.map(function (name) {\n return theme[name];\n }).filter(truthy);\n\n return typeof styles[0] === 'string' || typeof classNameDecorator === 'function' ? { key: key, className: classNameDecorator ? classNameDecorator.apply(undefined, _toConsumableArray(styles)) : styles.join(' ') } : { key: key, style: _objectAssign2['default'].apply(undefined, [{}].concat(_toConsumableArray(styles))) };\n };\n};\n\nmodule.exports = exports['default'];","'use strict';\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction ownEnumerableKeys(obj) {\n\tvar keys = Object.getOwnPropertyNames(obj);\n\n\tif (Object.getOwnPropertySymbols) {\n\t\tkeys = keys.concat(Object.getOwnPropertySymbols(obj));\n\t}\n\n\treturn keys.filter(function (key) {\n\t\treturn propIsEnumerable.call(obj, key);\n\t});\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = ownEnumerableKeys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n","function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","/** @license React v0.17.0\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar enableSchedulerDebugging = false;\nvar enableIsInputPending = false;\nvar enableMessageLoopImplementation = true;\nvar enableProfiling = true;\n\n// works by scheduling a requestAnimationFrame, storing the time for the start\n// of the frame, then scheduling a postMessage which gets scheduled after paint.\n// Within the postMessage handler do as much work as possible until time + frame\n// rate. By separating the idle call into a separate event tick we ensure that\n// layout, paint and other browser work is counted against the available time.\n// The frame rate is dynamically adjusted.\n\nvar requestHostCallback;\n\nvar requestHostTimeout;\nvar cancelHostTimeout;\nvar shouldYieldToHost;\nvar requestPaint;\n\n\n\nif ( // If Scheduler runs in a non-DOM environment, it falls back to a naive\n// implementation using setTimeout.\ntypeof window === 'undefined' || // Check if MessageChannel is supported, too.\ntypeof MessageChannel !== 'function') {\n // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,\n // fallback to a naive implementation.\n var _callback = null;\n var _timeoutID = null;\n\n var _flushCallback = function () {\n if (_callback !== null) {\n try {\n var currentTime = exports.unstable_now();\n var hasRemainingTime = true;\n\n _callback(hasRemainingTime, currentTime);\n\n _callback = null;\n } catch (e) {\n setTimeout(_flushCallback, 0);\n throw e;\n }\n }\n };\n\n var initialTime = Date.now();\n\n exports.unstable_now = function () {\n return Date.now() - initialTime;\n };\n\n requestHostCallback = function (cb) {\n if (_callback !== null) {\n // Protect against re-entrancy.\n setTimeout(requestHostCallback, 0, cb);\n } else {\n _callback = cb;\n setTimeout(_flushCallback, 0);\n }\n };\n\n requestHostTimeout = function (cb, ms) {\n _timeoutID = setTimeout(cb, ms);\n };\n\n cancelHostTimeout = function () {\n clearTimeout(_timeoutID);\n };\n\n shouldYieldToHost = function () {\n return false;\n };\n\n requestPaint = exports.unstable_forceFrameRate = function () {};\n} else {\n // Capture local references to native APIs, in case a polyfill overrides them.\n var performance = window.performance;\n var _Date = window.Date;\n var _setTimeout = window.setTimeout;\n var _clearTimeout = window.clearTimeout;\n var requestAnimationFrame = window.requestAnimationFrame;\n var cancelAnimationFrame = window.cancelAnimationFrame;\n\n if (typeof console !== 'undefined') {\n // TODO: Remove fb.me link\n if (typeof requestAnimationFrame !== 'function') {\n console.error(\"This browser doesn't support requestAnimationFrame. \" + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');\n }\n\n if (typeof cancelAnimationFrame !== 'function') {\n console.error(\"This browser doesn't support cancelAnimationFrame. \" + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');\n }\n }\n\n if (typeof performance === 'object' && typeof performance.now === 'function') {\n exports.unstable_now = function () {\n return performance.now();\n };\n } else {\n var _initialTime = _Date.now();\n\n exports.unstable_now = function () {\n return _Date.now() - _initialTime;\n };\n }\n\n var isRAFLoopRunning = false;\n var isMessageLoopRunning = false;\n var scheduledHostCallback = null;\n var rAFTimeoutID = -1;\n var taskTimeoutID = -1;\n var frameLength = enableMessageLoopImplementation ? // We won't attempt to align with the vsync. Instead we'll yield multiple\n // times per frame, often enough to keep it responsive even at really\n // high frame rates > 120.\n 5 : // Use a heuristic to measure the frame rate and yield at the end of the\n // frame. We start out assuming that we run at 30fps but then the\n // heuristic tracking will adjust this value to a faster fps if we get\n // more frequent animation frames.\n 33.33;\n var prevRAFTime = -1;\n var prevRAFInterval = -1;\n var frameDeadline = 0;\n var fpsLocked = false; // TODO: Make this configurable\n // TODO: Adjust this based on priority?\n\n var maxFrameLength = 300;\n var needsPaint = false;\n\n if (enableIsInputPending && navigator !== undefined && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined) {\n var scheduling = navigator.scheduling;\n\n shouldYieldToHost = function () {\n var currentTime = exports.unstable_now();\n\n if (currentTime >= frameDeadline) {\n // There's no time left in the frame. We may want to yield control of\n // the main thread, so the browser can perform high priority tasks. The\n // main ones are painting and user input. If there's a pending paint or\n // a pending input, then we should yield. But if there's neither, then\n // we can yield less often while remaining responsive. We'll eventually\n // yield regardless, since there could be a pending paint that wasn't\n // accompanied by a call to `requestPaint`, or other main thread tasks\n // like network events.\n if (needsPaint || scheduling.isInputPending()) {\n // There is either a pending paint or a pending input.\n return true;\n } // There's no pending input. Only yield if we've reached the max\n // frame length.\n\n\n return currentTime >= frameDeadline + maxFrameLength;\n } else {\n // There's still time left in the frame.\n return false;\n }\n };\n\n requestPaint = function () {\n needsPaint = true;\n };\n } else {\n // `isInputPending` is not available. Since we have no way of knowing if\n // there's pending input, always yield at the end of the frame.\n shouldYieldToHost = function () {\n return exports.unstable_now() >= frameDeadline;\n }; // Since we yield every frame regardless, `requestPaint` has no effect.\n\n\n requestPaint = function () {};\n }\n\n exports.unstable_forceFrameRate = function (fps) {\n if (fps < 0 || fps > 125) {\n console.error('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported');\n return;\n }\n\n if (fps > 0) {\n frameLength = Math.floor(1000 / fps);\n fpsLocked = true;\n } else {\n // reset the framerate\n frameLength = 33.33;\n fpsLocked = false;\n }\n };\n\n var performWorkUntilDeadline = function () {\n if (enableMessageLoopImplementation) {\n if (scheduledHostCallback !== null) {\n var currentTime = exports.unstable_now(); // Yield after `frameLength` ms, regardless of where we are in the vsync\n // cycle. This means there's always time remaining at the beginning of\n // the message event.\n\n frameDeadline = currentTime + frameLength;\n var hasTimeRemaining = true;\n\n try {\n var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n\n if (!hasMoreWork) {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n } else {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n port.postMessage(null);\n }\n } catch (error) {\n // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n port.postMessage(null);\n throw error;\n }\n } else {\n isMessageLoopRunning = false;\n } // Yielding to the browser will give it a chance to paint, so we can\n // reset this.\n\n\n needsPaint = false;\n } else {\n if (scheduledHostCallback !== null) {\n var _currentTime = exports.unstable_now();\n\n var _hasTimeRemaining = frameDeadline - _currentTime > 0;\n\n try {\n var _hasMoreWork = scheduledHostCallback(_hasTimeRemaining, _currentTime);\n\n if (!_hasMoreWork) {\n scheduledHostCallback = null;\n }\n } catch (error) {\n // If a scheduler task throws, exit the current browser task so the\n // error can be observed, and post a new task as soon as possible\n // so we can continue where we left off.\n port.postMessage(null);\n throw error;\n }\n } // Yielding to the browser will give it a chance to paint, so we can\n // reset this.\n\n\n needsPaint = false;\n }\n };\n\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n var onAnimationFrame = function (rAFTime) {\n if (scheduledHostCallback === null) {\n // No scheduled work. Exit.\n prevRAFTime = -1;\n prevRAFInterval = -1;\n isRAFLoopRunning = false;\n return;\n } // Eagerly schedule the next animation callback at the beginning of the\n // frame. If the scheduler queue is not empty at the end of the frame, it\n // will continue flushing inside that callback. If the queue *is* empty,\n // then it will exit immediately. Posting the callback at the start of the\n // frame ensures it's fired within the earliest possible frame. If we\n // waited until the end of the frame to post the callback, we risk the\n // browser skipping a frame and not firing the callback until the frame\n // after that.\n\n\n isRAFLoopRunning = true;\n requestAnimationFrame(function (nextRAFTime) {\n _clearTimeout(rAFTimeoutID);\n\n onAnimationFrame(nextRAFTime);\n }); // requestAnimationFrame is throttled when the tab is backgrounded. We\n // don't want to stop working entirely. So we'll fallback to a timeout loop.\n // TODO: Need a better heuristic for backgrounded work.\n\n var onTimeout = function () {\n frameDeadline = exports.unstable_now() + frameLength / 2;\n performWorkUntilDeadline();\n rAFTimeoutID = _setTimeout(onTimeout, frameLength * 3);\n };\n\n rAFTimeoutID = _setTimeout(onTimeout, frameLength * 3);\n\n if (prevRAFTime !== -1 && // Make sure this rAF time is different from the previous one. This check\n // could fail if two rAFs fire in the same frame.\n rAFTime - prevRAFTime > 0.1) {\n var rAFInterval = rAFTime - prevRAFTime;\n\n if (!fpsLocked && prevRAFInterval !== -1) {\n // We've observed two consecutive frame intervals. We'll use this to\n // dynamically adjust the frame rate.\n //\n // If one frame goes long, then the next one can be short to catch up.\n // If two frames are short in a row, then that's an indication that we\n // actually have a higher frame rate than what we're currently\n // optimizing. For example, if we're running on 120hz display or 90hz VR\n // display. Take the max of the two in case one of them was an anomaly\n // due to missed frame deadlines.\n if (rAFInterval < frameLength && prevRAFInterval < frameLength) {\n frameLength = rAFInterval < prevRAFInterval ? prevRAFInterval : rAFInterval;\n\n if (frameLength < 8.33) {\n // Defensive coding. We don't support higher frame rates than 120hz.\n // If the calculated frame length gets lower than 8, it is probably\n // a bug.\n frameLength = 8.33;\n }\n }\n }\n\n prevRAFInterval = rAFInterval;\n }\n\n prevRAFTime = rAFTime;\n frameDeadline = rAFTime + frameLength; // We use the postMessage trick to defer idle work until after the repaint.\n\n port.postMessage(null);\n };\n\n requestHostCallback = function (callback) {\n scheduledHostCallback = callback;\n\n if (enableMessageLoopImplementation) {\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n port.postMessage(null);\n }\n } else {\n if (!isRAFLoopRunning) {\n // Start a rAF loop.\n isRAFLoopRunning = true;\n requestAnimationFrame(function (rAFTime) {\n onAnimationFrame(rAFTime);\n });\n }\n }\n };\n\n requestHostTimeout = function (callback, ms) {\n taskTimeoutID = _setTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n };\n\n cancelHostTimeout = function () {\n _clearTimeout(taskTimeoutID);\n\n taskTimeoutID = -1;\n };\n}\n\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n siftUp(heap, node, index);\n}\nfunction peek(heap) {\n var first = heap[0];\n return first === undefined ? null : first;\n}\nfunction pop(heap) {\n var first = heap[0];\n\n if (first !== undefined) {\n var last = heap.pop();\n\n if (last !== first) {\n heap[0] = last;\n siftDown(heap, last, 0);\n }\n\n return first;\n } else {\n return null;\n }\n}\n\nfunction siftUp(heap, node, i) {\n var index = i;\n\n while (true) {\n var parentIndex = Math.floor((index - 1) / 2);\n var parent = heap[parentIndex];\n\n if (parent !== undefined && compare(parent, node) > 0) {\n // The parent is larger. Swap positions.\n heap[parentIndex] = node;\n heap[index] = parent;\n index = parentIndex;\n } else {\n // The parent is smaller. Exit.\n return;\n }\n }\n}\n\nfunction siftDown(heap, node, i) {\n var index = i;\n var length = heap.length;\n\n while (index < length) {\n var leftIndex = (index + 1) * 2 - 1;\n var left = heap[leftIndex];\n var rightIndex = leftIndex + 1;\n var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n if (left !== undefined && compare(left, node) < 0) {\n if (right !== undefined && compare(right, left) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n heap[index] = left;\n heap[leftIndex] = node;\n index = leftIndex;\n }\n } else if (right !== undefined && compare(right, node) < 0) {\n heap[index] = right;\n heap[rightIndex] = node;\n index = rightIndex;\n } else {\n // Neither child is smaller. Exit.\n return;\n }\n }\n}\n\nfunction compare(a, b) {\n // Compare sort index first, then task id.\n var diff = a.sortIndex - b.sortIndex;\n return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar NoPriority = 0;\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nvar runIdCounter = 0;\nvar mainThreadIdCounter = 0;\nvar profilingStateSize = 4;\nvar sharedProfilingBuffer = enableProfiling ? // $FlowFixMe Flow doesn't know about SharedArrayBuffer\ntypeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer\ntypeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9\n: null;\nvar profilingState = enableProfiling && sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks\n\nvar PRIORITY = 0;\nvar CURRENT_TASK_ID = 1;\nvar CURRENT_RUN_ID = 2;\nvar QUEUE_SIZE = 3;\n\nif (enableProfiling) {\n profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue\n // array might include canceled tasks.\n\n profilingState[QUEUE_SIZE] = 0;\n profilingState[CURRENT_TASK_ID] = 0;\n} // Bytes per element is 4\n\n\nvar INITIAL_EVENT_LOG_SIZE = 131072;\nvar MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes\n\nvar eventLogSize = 0;\nvar eventLogBuffer = null;\nvar eventLog = null;\nvar eventLogIndex = 0;\nvar TaskStartEvent = 1;\nvar TaskCompleteEvent = 2;\nvar TaskErrorEvent = 3;\nvar TaskCancelEvent = 4;\nvar TaskRunEvent = 5;\nvar TaskYieldEvent = 6;\nvar SchedulerSuspendEvent = 7;\nvar SchedulerResumeEvent = 8;\n\nfunction logEvent(entries) {\n if (eventLog !== null) {\n var offset = eventLogIndex;\n eventLogIndex += entries.length;\n\n if (eventLogIndex + 1 > eventLogSize) {\n eventLogSize *= 2;\n\n if (eventLogSize > MAX_EVENT_LOG_SIZE) {\n console.error(\"Scheduler Profiling: Event log exceeded maximum size. Don't \" + 'forget to call `stopLoggingProfilingEvents()`.');\n stopLoggingProfilingEvents();\n return;\n }\n\n var newEventLog = new Int32Array(eventLogSize * 4);\n newEventLog.set(eventLog);\n eventLogBuffer = newEventLog.buffer;\n eventLog = newEventLog;\n }\n\n eventLog.set(entries, offset);\n }\n}\n\nfunction startLoggingProfilingEvents() {\n eventLogSize = INITIAL_EVENT_LOG_SIZE;\n eventLogBuffer = new ArrayBuffer(eventLogSize * 4);\n eventLog = new Int32Array(eventLogBuffer);\n eventLogIndex = 0;\n}\nfunction stopLoggingProfilingEvents() {\n var buffer = eventLogBuffer;\n eventLogSize = 0;\n eventLogBuffer = null;\n eventLog = null;\n eventLogIndex = 0;\n return buffer;\n}\nfunction markTaskStart(task, ms) {\n if (enableProfiling) {\n profilingState[QUEUE_SIZE]++;\n\n if (eventLog !== null) {\n // performance.now returns a float, representing milliseconds. When the\n // event is logged, it's coerced to an int. Convert to microseconds to\n // maintain extra degrees of precision.\n logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]);\n }\n }\n}\nfunction markTaskCompleted(task, ms) {\n if (enableProfiling) {\n profilingState[PRIORITY] = NoPriority;\n profilingState[CURRENT_TASK_ID] = 0;\n profilingState[QUEUE_SIZE]--;\n\n if (eventLog !== null) {\n logEvent([TaskCompleteEvent, ms * 1000, task.id]);\n }\n }\n}\nfunction markTaskCanceled(task, ms) {\n if (enableProfiling) {\n profilingState[QUEUE_SIZE]--;\n\n if (eventLog !== null) {\n logEvent([TaskCancelEvent, ms * 1000, task.id]);\n }\n }\n}\nfunction markTaskErrored(task, ms) {\n if (enableProfiling) {\n profilingState[PRIORITY] = NoPriority;\n profilingState[CURRENT_TASK_ID] = 0;\n profilingState[QUEUE_SIZE]--;\n\n if (eventLog !== null) {\n logEvent([TaskErrorEvent, ms * 1000, task.id]);\n }\n }\n}\nfunction markTaskRun(task, ms) {\n if (enableProfiling) {\n runIdCounter++;\n profilingState[PRIORITY] = task.priorityLevel;\n profilingState[CURRENT_TASK_ID] = task.id;\n profilingState[CURRENT_RUN_ID] = runIdCounter;\n\n if (eventLog !== null) {\n logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]);\n }\n }\n}\nfunction markTaskYield(task, ms) {\n if (enableProfiling) {\n profilingState[PRIORITY] = NoPriority;\n profilingState[CURRENT_TASK_ID] = 0;\n profilingState[CURRENT_RUN_ID] = 0;\n\n if (eventLog !== null) {\n logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]);\n }\n }\n}\nfunction markSchedulerSuspended(ms) {\n if (enableProfiling) {\n mainThreadIdCounter++;\n\n if (eventLog !== null) {\n logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]);\n }\n }\n}\nfunction markSchedulerUnsuspended(ms) {\n if (enableProfiling) {\n if (eventLog !== null) {\n logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]);\n }\n }\n}\n\n/* eslint-disable no-var */\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\n\nvar isSchedulerPaused = false;\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false;\n\nfunction advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n var timer = peek(timerQueue);\n\n while (timer !== null) {\n if (timer.callback === null) {\n // Timer was cancelled.\n pop(timerQueue);\n } else if (timer.startTime <= currentTime) {\n // Timer fired. Transfer to the task queue.\n pop(timerQueue);\n timer.sortIndex = timer.expirationTime;\n push(taskQueue, timer);\n\n if (enableProfiling) {\n markTaskStart(timer, currentTime);\n timer.isQueued = true;\n }\n } else {\n // Remaining timers are pending.\n return;\n }\n\n timer = peek(timerQueue);\n }\n}\n\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (peek(taskQueue) !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n }\n }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n if (enableProfiling) {\n markSchedulerUnsuspended(initialTime);\n } // We'll need a host callback the next time work is scheduled.\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n isPerformingWork = true;\n var previousPriorityLevel = currentPriorityLevel;\n\n try {\n if (enableProfiling) {\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } catch (error) {\n if (currentTask !== null) {\n var currentTime = exports.unstable_now();\n markTaskErrored(currentTask, currentTime);\n currentTask.isQueued = false;\n }\n\n throw error;\n }\n } else {\n // No catch in prod codepath.\n return workLoop(hasTimeRemaining, initialTime);\n }\n } finally {\n currentTask = null;\n currentPriorityLevel = previousPriorityLevel;\n isPerformingWork = false;\n\n if (enableProfiling) {\n var _currentTime = exports.unstable_now();\n\n markSchedulerSuspended(_currentTime);\n }\n }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n var currentTime = initialTime;\n advanceTimers(currentTime);\n currentTask = peek(taskQueue);\n\n while (currentTask !== null && !(enableSchedulerDebugging && isSchedulerPaused)) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n // This currentTask hasn't expired, and we've reached the deadline.\n break;\n }\n\n var callback = currentTask.callback;\n\n if (callback !== null) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n markTaskRun(currentTask, currentTime);\n var continuationCallback = callback(didUserCallbackTimeout);\n currentTime = exports.unstable_now();\n\n if (typeof continuationCallback === 'function') {\n currentTask.callback = continuationCallback;\n markTaskYield(currentTask, currentTime);\n } else {\n if (enableProfiling) {\n markTaskCompleted(currentTask, currentTime);\n currentTask.isQueued = false;\n }\n\n if (currentTask === peek(taskQueue)) {\n pop(taskQueue);\n }\n }\n\n advanceTimers(currentTime);\n } else {\n pop(taskQueue);\n }\n\n currentTask = peek(taskQueue);\n } // Return whether there's additional work\n\n\n if (currentTask !== null) {\n return true;\n } else {\n var firstTimer = peek(timerQueue);\n\n if (firstTimer !== null) {\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n\n return false;\n }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n}\n\nfunction unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n}\n\nfunction timeoutForPriorityLevel(priorityLevel) {\n switch (priorityLevel) {\n case ImmediatePriority:\n return IMMEDIATE_PRIORITY_TIMEOUT;\n\n case UserBlockingPriority:\n return USER_BLOCKING_PRIORITY;\n\n case IdlePriority:\n return IDLE_PRIORITY;\n\n case LowPriority:\n return LOW_PRIORITY_TIMEOUT;\n\n case NormalPriority:\n default:\n return NORMAL_PRIORITY_TIMEOUT;\n }\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n var timeout;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n\n timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel);\n } else {\n timeout = timeoutForPriorityLevel(priorityLevel);\n startTime = currentTime;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: startTime,\n expirationTime: expirationTime,\n sortIndex: -1\n };\n\n if (enableProfiling) {\n newTask.isQueued = false;\n }\n\n if (startTime > currentTime) {\n // This is a delayed task.\n newTask.sortIndex = startTime;\n push(timerQueue, newTask);\n\n if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n newTask.sortIndex = expirationTime;\n push(taskQueue, newTask);\n\n if (enableProfiling) {\n markTaskStart(newTask, currentTime);\n newTask.isQueued = true;\n } // Schedule a host callback, if needed. If we're already performing work,\n // wait until the next time we yield.\n\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n return newTask;\n}\n\nfunction unstable_pauseExecution() {\n isSchedulerPaused = true;\n}\n\nfunction unstable_continueExecution() {\n isSchedulerPaused = false;\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n}\n\nfunction unstable_getFirstCallbackNode() {\n return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n if (enableProfiling) {\n if (task.isQueued) {\n var currentTime = exports.unstable_now();\n markTaskCanceled(task, currentTime);\n task.isQueued = false;\n }\n } // Null out the callback to indicate the task has been canceled. (Can't\n // remove from the queue because you can't remove arbitrary nodes from an\n // array based heap, only the first one.)\n\n\n task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n}\n\nfunction unstable_shouldYield() {\n var currentTime = exports.unstable_now();\n advanceTimers(currentTime);\n var firstTask = peek(taskQueue);\n return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost();\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling = enableProfiling ? {\n startLoggingProfilingEvents: startLoggingProfilingEvents,\n stopLoggingProfilingEvents: stopLoggingProfilingEvents,\n sharedProfilingBuffer: sharedProfilingBuffer\n} : null;\n\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_next = unstable_next;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_wrapCallback = unstable_wrapCallback;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_shouldYield = unstable_shouldYield;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_Profiling = unstable_Profiling;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nmodule.exports = function (_ref) {\n var data = _ref.data;\n var multiSection = _ref.multiSection;\n\n function nextNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = 0;\n } else {\n sectionIndex++;\n }\n\n while (sectionIndex < data.length && data[sectionIndex] === 0) {\n sectionIndex++;\n }\n\n return sectionIndex === data.length ? null : sectionIndex;\n }\n\n function prevNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = data.length - 1;\n } else {\n sectionIndex--;\n }\n\n while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n sectionIndex--;\n }\n\n return sectionIndex === -1 ? null : sectionIndex;\n }\n\n function next(position) {\n var _position = _slicedToArray(position, 2);\n\n var sectionIndex = _position[0];\n var itemIndex = _position[1];\n\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, 0];\n }\n\n return [sectionIndex, itemIndex + 1];\n }\n\n if (data === 0 || itemIndex === data - 1) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, 0];\n }\n\n return [null, itemIndex + 1];\n }\n\n function prev(position) {\n var _position2 = _slicedToArray(position, 2);\n\n var sectionIndex = _position2[0];\n var itemIndex = _position2[1];\n\n\n if (multiSection) {\n if (itemIndex === null || itemIndex === 0) {\n sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n\n if (sectionIndex === null) {\n return [null, null];\n }\n\n return [sectionIndex, data[sectionIndex] - 1];\n }\n\n return [sectionIndex, itemIndex - 1];\n }\n\n if (data === 0 || itemIndex === 0) {\n return [null, null];\n }\n\n if (itemIndex === null) {\n return [null, data - 1];\n }\n\n return [null, itemIndex - 1];\n }\n\n function isLast(position) {\n return next(position)[1] === null;\n }\n\n return {\n next: next,\n prev: prev,\n isLast: isLast\n };\n};\n","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqualArrays;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { Radio } from 'backbone';\r\nimport { EventFirehose } from 'libs/analytics/constants/EventFirehose';\r\nimport { GlobalChannels } from 'libs/analytics/constants/GlobalChannels';\r\nimport { AnalyticsEvent, AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\r\nimport { AnalyticsEventType, ActionContext, EventVersion } from 'libs/analytics/interfaces';\r\n\r\nexport const Analytics = {\r\n\r\n /**\r\n * Push/emit all events along the analytics firehose\r\n * @param eventType\r\n * @param data Data to be passed to AnalyticsClient\r\n */\r\n log<TType extends AnalyticsEventType, TData extends AnalyticsDataPayload>\r\n (eventType: TType, data: TData, actionContext?: ActionContext, eventVersion?: EventVersion): void {\r\n const channel = Radio.channel(GlobalChannels.ANALYTICS);\r\n channel.trigger(EventFirehose.Inlet,\r\n new AnalyticsEvent<TType, TData>(eventType, data, actionContext, eventVersion));\r\n },\r\n};\r\n","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\n\r\nimport {\r\n LocationContext, EntityType, ActionContext, UserAction,\r\n AnalyticsOptions, ActionDescriptor, InteractionTypeDescriptor,\r\n SearchQueryType, InteractionType\r\n} from 'libs/analytics/interfaces';\r\nimport { ContextService } from 'libs/analytics/services/ContextService';\r\n\r\nimport { Analytics } from './Analytics';\r\n\r\nfunction getCurrentProductArea(): string {\r\n const { appLink } = ContextService.getCurrentContext();\r\n\r\n if (!_.isObject(appLink))\r\n Core.ErrorHelper.throw(new DevError('Applink does not exist. Check current context.'));\r\n\r\n return colonCaseToKebabCase(appLink.application);\r\n}\r\n\r\nfunction getActionContext(options: AnalyticsOptions = {}): ActionContext {\r\n const { location, entity, workflowPhase = null, descriptor = null } = options;\r\n\r\n if (!location)\r\n Core.ErrorHelper.throw(new DevError(`location must be set.`));\r\n\r\n if (!entity)\r\n Core.ErrorHelper.throw(new DevError(`entity must be set.`));\r\n\r\n return {\r\n productArea: getCurrentProductArea(),\r\n location,\r\n entity,\r\n descriptor,\r\n workflowPhase\r\n };\r\n}\r\n\r\nfunction isValidData(data: ObjectHash | ObjectHash[]): boolean {\r\n // When logging a collection, all child entities must be objects\r\n if (_.isArray(data) && _.every(data, (val: any) => _.isObject(val)))\r\n return true;\r\n\r\n if (_.isObject(data))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nfunction getCurrentLocation(): string {\r\n return Core.LocationUtils.GetCurrentPath() + Core.LocationUtils.GetCurrentQueryString();\r\n}\r\n\r\n// For converting applink strings to kebab case e.g. \"content:updates\" -> \"content-updates\"\r\nfunction colonCaseToKebabCase(app: string): string {\r\n return app.replace(':', '-');\r\n}\r\n\r\nexport const AnalyticsHelper = {\r\n logUserAction(data: ObjectHash | ObjectHash[], analyticsOptions: AnalyticsOptions): void {\r\n if (!isValidData(data) || !_.isObject(analyticsOptions)) return;\r\n\r\n const { userAction, action, eventVersion } = AnalyticsHelper.buildUserActionEvent(analyticsOptions);\r\n\r\n Analytics.log(userAction, data, action, eventVersion);\r\n },\r\n\r\n logNavigate(appLink: Core.AppLink, options: ObjectHash): void {\r\n const data = {\r\n currentLocation: getCurrentLocation(),\r\n appLink,\r\n ...options\r\n };\r\n\r\n Analytics.log(UserAction.Navigate, data);\r\n },\r\n\r\n mergeOptions(baseOptions: AnalyticsOptions, newOptions: AnalyticsOptions): AnalyticsOptions {\r\n return _.extend({}, baseOptions, newOptions);\r\n },\r\n\r\n buildActionContext(options: AnalyticsOptions = {}): ActionContext {\r\n return getActionContext(options);\r\n },\r\n\r\n buildUserActionEvent(options: AnalyticsOptions = {}): ObjectHash {\r\n const { actionType, eventVersion } = options;\r\n\r\n const userAction: UserAction = actionType;\r\n const action: ActionContext = getActionContext(options);\r\n\r\n return { userAction, action, eventVersion };\r\n },\r\n\r\n buildCurrentLocation(): string {\r\n return getCurrentLocation();\r\n },\r\n\r\n /**\r\n * Search logging helpers\r\n */\r\n\r\n /**\r\n * Create a search event that is depenedent on whether we page loaded into search\r\n * or used the search bar directly.\r\n */\r\n buildSearchEvent(query: string, descriptor: ActionDescriptor): ObjectHash {\r\n return {\r\n data: { query },\r\n action: getActionContext({ entity: EntityType.Video, location: LocationContext.SearchBar, descriptor })\r\n };\r\n },\r\n\r\n buildInstantSearchEvent(query: string, suggestion: ObjectHash, source: string): ObjectHash {\r\n let entity;\r\n\r\n if (source === SearchQueryType.Series)\r\n entity = EntityType.Series;\r\n\r\n if (source === SearchQueryType.Folder)\r\n entity = EntityType.Folder;\r\n\r\n if (source === SearchQueryType.Tags)\r\n entity = EntityType.Tag;\r\n\r\n if (source === SearchQueryType.Video)\r\n entity = EntityType.Video;\r\n\r\n const data: ObjectHash = {\r\n instant: {},\r\n query\r\n };\r\n\r\n if (suggestion.id) data.instant.selectedId = suggestion.id;\r\n if (suggestion.name) data.instant.selectedName = suggestion.name;\r\n\r\n return {\r\n data,\r\n action: getActionContext({ entity, location: LocationContext.SearchBar })\r\n };\r\n },\r\n\r\n /**\r\n * Resources Helpers\r\n */\r\n\r\n /**\r\n * Map our general InteractionType to an appropriate anayltics descriptor type. \r\n * The reason we do this is to maintain a seperation between analytics metadata and\r\n * actual domain data.\r\n * @param type \r\n */\r\n mapInteractionType(type: InteractionType): InteractionTypeDescriptor {\r\n switch (type) {\r\n case InteractionType.DragDrop:\r\n return InteractionTypeDescriptor.DragDrop;\r\n\r\n case InteractionType.FileSelect:\r\n return InteractionTypeDescriptor.FileSelect;\r\n\r\n default:\r\n return;\r\n }\r\n }\r\n};","export enum EventFirehose {\r\n Inlet = 'event:inlet',\r\n Outlet = 'event:outlet',\r\n}","export const GlobalChannels = {\r\n ANALYTICS: 'global:analytics'\r\n};","export enum Services {\r\n Analytics = 'AnalyticsService',\r\n Context = 'ContextService',\r\n}","export type AnalyticsEventType = UserAction;\r\n\r\nexport interface AnalyticsOptions {\r\n actionType?: UserAction;\r\n productArea?: string;\r\n entity?: EntityType;\r\n location?: LocationContext;\r\n descriptor?: ActionDescriptor;\r\n workflowPhase?: WorkflowPhase;\r\n eventVersion?: EventVersion;\r\n}\r\n\r\nexport interface ActionContext {\r\n productArea: string;\r\n entity: EntityType;\r\n location: LocationContext;\r\n descriptor: ActionDescriptor;\r\n workflowPhase: WorkflowPhase;\r\n}\r\n\r\n/**\r\n * All events recorded are captured within the following action names\r\n */\r\nexport enum UserAction {\r\n /**\r\n * The following events are listed in CollectionApi\r\n */\r\n Stream = 'cv_product_stream',\r\n WebPlayerStream = 'cv_product_webplayer_stream',\r\n Login = 'cv_product_login',\r\n LoginSsoRedirect = 'cv_product_login_sso_redirect',\r\n LoginFailed = 'cv_product_login_failed',\r\n Search = 'cv_product_search',\r\n InstantSearch = 'cv_product_search',\r\n SearchEmptyResult = 'cv_product_search_empty_result',\r\n Filter = 'cv_product_search_filter',\r\n SearchLanding = 'cv_product_search_landing',\r\n Share = 'cv_product_share',\r\n WorkspaceAdd = 'cv_product_tv_add',\r\n\r\n /**\r\n * The following events are unlisted in CollectionApi\r\n */\r\n Rename = 'cv_product_rename',\r\n Move = 'cv_product_move',\r\n Sort = 'cv_product_sort',\r\n Create = 'cv_product_create',\r\n Delete = 'cv_product_delete',\r\n Associate = 'cv_product_associate',\r\n Dissociate = 'cv_product_dissociate',\r\n Edit = 'cv_product_edit',\r\n Approve = 'cv_product_approve',\r\n Reject = 'cv_product_reject',\r\n Disable = 'cv_product_disable',\r\n Upload = 'cv_product_upload',\r\n Download = 'cv_product_download',\r\n Navigate = 'cv_product_navigate',\r\n Click = 'cv_product_click',\r\n Suggest = 'cv_product_suggest',\r\n EditAssoc = 'cv_product_edit_assoc',\r\n Play = 'cv_product_play',\r\n Favourite = 'cv_product_favourite',\r\n Follow = 'cv_product_follow',\r\n Prefer = 'cv_product_prefer',\r\n\r\n SetAccess = 'cv_product_set_access',\r\n AddToLocalCache = 'cv_product_add_to_lc',\r\n\r\n\r\n /**\r\n * Capture migration specific events in dedicated collection.\r\n * The assumption here is that at some point in the distant future\r\n * we will not longer care about these collections and it doesn't need to\r\n * be part of the more general collections set.\r\n */\r\n ResolveWarning = 'cv_product_resolve_warning',\r\n DismissWarning = 'cv_product_dismiss_warning'\r\n}\r\n\r\nexport enum EntityType {\r\n Folder = 'folder',\r\n Video = 'video',\r\n Rating = 'rating',\r\n Series = 'series',\r\n Library = 'library',\r\n Resource = 'resource',\r\n Tag = 'tag',\r\n Subtitle = 'subtitle',\r\n Chapter = 'chapter',\r\n Restriction = 'restriction',\r\n Interactive = 'interactive',\r\n PDF = 'pdf',\r\n CustomerSetting = 'customer_setting',\r\n StaffRequest = 'staff_request',\r\n Logo = 'logo',\r\n Pagination = 'pagination',\r\n Thumbnail = 'thumbnail',\r\n Banner = 'banner',\r\n Link = 'link', // Note: only use this for events on `Link` object types. Not just any anchor tag\r\n Playlist = 'playlist',\r\n Person = 'person',\r\n Company = 'company',\r\n Classroom = 'classroom',\r\n ClassroomGroup = 'classroom_group',\r\n Classification = 'classification',\r\n ShareLink = 'share_link',\r\n Upload = 'upload',\r\n SearchResults = 'search_results',\r\n Audience = 'audience',\r\n\r\n /**\r\n * `user` cannot be the value here because when we log these events to Snowflake, the event object\r\n * puts the current user's data under the `user` key. If we were to log events with `user` as the entity\r\n * name, this data would be overwritten and lost.\r\n */\r\n User = 'target_user',\r\n}\r\n\r\nexport enum LocationContext {\r\n TopNav = 'top_nav',\r\n LeftNav = 'left_nav',\r\n Popup = 'popup',\r\n Banner = 'banner',\r\n VideoList = 'video_list',\r\n VideoListItem = 'video_list_item',\r\n VideoListHeader = 'video_header',\r\n VideoThumbnail = 'video_thumbnail',\r\n VideoItemPreview = 'video_item_preview',\r\n VideoDetails = 'video_details',\r\n VideoDetailsHeader = 'video_details_header',\r\n EditVideoDetails = 'edit_video_details',\r\n EditVideoChapters = 'edit_video_chapters',\r\n EditVideoResources = 'edit_video_resources',\r\n VideoUpload = 'video_upload',\r\n VideoRequest = 'video_request',\r\n Pagination = 'pagination',\r\n SearchBar = 'search_bar',\r\n InstantSearch = 'instant_search',\r\n SearchFilters = 'search_filters',\r\n LibraryHeader = 'library_header',\r\n LibraryTiles = 'library_tiles',\r\n StaffRequestDetails = 'staff_request_details',\r\n SubFolderList = 'sub_folder_list',\r\n AwaitingReviewVideoListHeader = 'awaiting_review_video_list_header',\r\n AwaitingReviewVideoItem = 'awaiting_review_video_item',\r\n PastReleasesHeader = 'past_releases_header',\r\n MigrationWarnings = 'migration_warnings',\r\n PlaylistListHeader = 'playlist_list_header',\r\n PlaylistListItem = 'playlist_list_item',\r\n\r\n TeacherManager = 'teacher_manager',\r\n TeacherManagerListItem = 'teacher_manager_list_item',\r\n StudentManager = 'student_manager',\r\n StudentManagerListItem = 'student_manager_list_item',\r\n\r\n ClassroomsList = 'classrooms_list',\r\n ClassroomsListItem = 'classrooms_list_item',\r\n ClassroomOverview = 'classroom_overview',\r\n ClassroomOverviewStudentListItem = 'classroom_overview_student_list_item',\r\n ManageClassroomStudents = 'manage_classroom_students',\r\n ManageClassroomStudentListItem = 'manage_classroom_student_list_item',\r\n ManageClassroomGroups = 'manage_classroom_groups',\r\n ManageClassroomGroupListItem = 'manage_classroom_group_list_item',\r\n\r\n PlayPage = 'play_page',\r\n FloatingPlayer = 'floating_player',\r\n\r\n ContentUpdatesClassificationBanner = 'content_updates_classification_banner',\r\n PreferencesSettings = 'preferences_settings',\r\n\r\n MyUploads = 'my_uploads'\r\n}\r\n\r\nexport enum WorkflowPhase {\r\n Start = 'start',\r\n Complete = 'complete',\r\n Save = 'save',\r\n Discard = 'discard',\r\n}\r\n\r\n/**\r\n * Action descriptor sub-types\r\n */\r\nexport enum PageDescriptor {\r\n PageLoad = 'page_load'\r\n}\r\n\r\nexport enum OperationDescriptor {\r\n Single = 'single',\r\n Bulk = 'bulk',\r\n All = 'all'\r\n}\r\n\r\nexport enum SortDescriptor {\r\n ProductionYear = 'production_year',\r\n Alphabetical = 'alphabetical'\r\n}\r\n\r\nexport enum FilterDescriptor {\r\n Content = 'content',\r\n Quality = 'quality',\r\n Duration = 'duration',\r\n Reset = 'reset'\r\n}\r\n\r\nexport enum DirectSearchDescriptor {\r\n Submit = 'submit',\r\n ShowAll = 'show_all',\r\n Recent = 'recent',\r\n SearchIcon = 'search_icon',\r\n}\r\n\r\nexport enum PlaybackDescriptor {\r\n Start = 'start',\r\n Finish = 'finish',\r\n Terminate = 'terminate',\r\n Play = 'play',\r\n Pause = 'pause',\r\n Playback = 'playback',\r\n NextChapter = 'next_chapter',\r\n PreviousChapter = 'previous_chapter',\r\n FullScreenEnter = 'full_screen_enter',\r\n FullScreenExit = 'full_screen_exit',\r\n}\r\n\r\nexport enum ClickDescriptor {\r\n TogglePreview = 'toggle_preview',\r\n NavigateHome = 'navigate_home',\r\n OpenInStaffView = 'open_in_staff_view',\r\n Thumbnail = 'thumbnail',\r\n Title = 'title',\r\n ToggleHideValidListings = 'toggle_hide_valid_listings',\r\n LaunchImmersiveReader = 'launch_immersive_reader',\r\n CopyEmbedHtml = 'copy_embed_html',\r\n Close = 'close',\r\n Open = 'open'\r\n}\r\n\r\nexport enum CustomerSettingDescriptor {\r\n LibraryReview = 'library_review'\r\n}\r\n\r\nexport enum InteractionTypeDescriptor {\r\n FileSelect = 'file_select',\r\n DragDrop = 'drag_drop',\r\n}\r\n\r\nexport enum SuggestionDescriptor {\r\n Edit = 'edit'\r\n}\r\n\r\nexport enum AssocDescriptor {\r\n Image = 'image',\r\n User = 'user'\r\n}\r\n\r\nexport enum ToggleDescriptor {\r\n On = 'on',\r\n Off = 'off'\r\n}\r\n\r\n/**\r\n * Action descriptors give further context to UserActions\r\n */\r\nexport type ActionDescriptor = OperationDescriptor |\r\n SortDescriptor |\r\n FilterDescriptor |\r\n DirectSearchDescriptor |\r\n PageDescriptor |\r\n PlaybackDescriptor |\r\n CustomerSettingDescriptor |\r\n SuggestionDescriptor |\r\n InteractionTypeDescriptor |\r\n AssocDescriptor |\r\n ClickDescriptor |\r\n ToggleDescriptor;\r\n\r\n/**\r\n * Placeholder values to be used in circumstances where we need\r\n * to simply signify that a change has occurred. Particularly if it is\r\n * being collected as a set of other changes.\r\n */\r\nexport enum EventDefaultValue {\r\n EntityRemoved = 'cv_entity_removed',\r\n ValueUpdated = 'cv_value_updated'\r\n}\r\n\r\nexport enum InteractionType {\r\n FileSelect = 'file_select',\r\n DragDrop = 'drag_drop'\r\n}\r\n\r\nexport enum SearchQueryType {\r\n Video = 'videos',\r\n Folder = 'categories',\r\n Series = 'series',\r\n Tags = 'tags'\r\n}\r\n\r\nexport enum EventVersion {\r\n V1 = 1\r\n}","export * from './AnalyticsTypes';\r\nexport * from './User';\r\nexport * from './Config';\r\nexport * from './Owner';\r\nexport * from './Folder';\r\nexport * from './HashObject';\r\nexport * from './Playlist';\r\nexport * from './Resource';\r\nexport * from './Rating';\r\nexport * from './Region';\r\nexport * from './RegionalUrl';\r\nexport * from './Series';\r\nexport * from './Subtitle';\r\nexport * from './Video';\r\nexport * from './primitives/BaseObject';","import { Core } from 'libs/common/core';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ObjectHash } from 'backbone';\r\nimport { AnalyticsEventType, ActionContext } from 'libs/analytics/interfaces';\r\nimport { EventVersion } from 'libs/analytics/interfaces';\r\n\r\ninterface Enrichment {\r\n [prop: string]: string;\r\n}\r\n\r\nexport interface DataObjectPayload extends ObjectHash {}\r\nexport interface DataCollectionPayload extends Array<ObjectHash> {}\r\n\r\nexport type AnalyticsDataPayload = DataObjectPayload | DataCollectionPayload;\r\n\r\nconst DEFAULT_EVENT_VERSION = EventVersion.V1;\r\n\r\n/**\r\n * Base AnalyticsEvent Object. \r\n * Acts as a wrapper for our events, encapsulating the event type\r\n * and a data payload.\r\n */\r\nexport class AnalyticsEvent<TType extends AnalyticsEventType, TPayload extends AnalyticsDataPayload> {\r\n public type: TType;\r\n public data: TPayload;\r\n public actionContext: ActionContext;\r\n public eventVersion: EventVersion;\r\n\r\n public constructor(type: TType, data: TPayload, actionContext?: ActionContext, eventVersion?: EventVersion) {\r\n this.type = type;\r\n this.data = data;\r\n this.actionContext = actionContext;\r\n this.eventVersion = eventVersion || DEFAULT_EVENT_VERSION;\r\n }\r\n\r\n /**\r\n * Utility function that allows us to create type guards.\r\n * @param type EventType\r\n */\r\n public isType(type: TType): this is TType {\r\n return type === this.type;\r\n }\r\n\r\n /**\r\n * Mix different enrichments into the base AnalyticsEvent object \r\n * to keep it as flat as possible.\r\n * \r\n * @param key Top level enrichment name \r\n * @param value Either a string or set of KV Pairs\r\n */\r\n public enrich(key: string, value: string | Enrichment ): void {\r\n this.validateKey(key);\r\n\r\n (this as any)[key] = value;\r\n }\r\n\r\n public get(key: string): string | Enrichment {\r\n if (!key)\r\n return;\r\n\r\n if (!(this as any)[key])\r\n return;\r\n\r\n return (this as any)[key];\r\n }\r\n\r\n /**\r\n * Check that the incoming enrichment doesn't clash with\r\n * a pre-existing enrichement. \r\n * \r\n * @param key \r\n */\r\n private validateKey(key: string): void {\r\n if (key === 'type' || key === 'data')\r\n Core.ErrorHelper.throw(new DevError(`${key} is not a valid key`));\r\n\r\n if ((this as any)[key])\r\n Core.ErrorHelper.throw(new DevError(`Event already contains an enrichment named ${key}`));\r\n }\r\n}\r\n\r\n/**\r\n * Alias our analytics type to make our function signatures and typings a little cleaner\r\n */\r\nexport type CoreAnalyticsType = AnalyticsEvent<AnalyticsEventType, AnalyticsDataPayload>;","import * as _ from 'underscore';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { Services } from 'libs/analytics/constants/Services';\r\n\r\ninterface ApplicationContext {\r\n pageLoad: boolean;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport interface AppContextServiceOptions {\r\n}\r\n\r\nconst NAV_HISTORY_LENGTH = 5;\r\n\r\nexport class StaticContextService extends Core.Service {\r\n private static instance: StaticContextService;\r\n\r\n private contextHistory: ApplicationContext[] = [];\r\n\r\n public get name(): string {\r\n return Services.Context;\r\n }\r\n\r\n public static get Instance(): StaticContextService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTE, this.setContext);\r\n }\r\n\r\n private setContext(appLink: Core.AppLink): void {\r\n if (this.contextHistory.length >= NAV_HISTORY_LENGTH)\r\n this.contextHistory.unshift();\r\n\r\n this.contextHistory.push({\r\n pageLoad: !this.contextHistory.length,\r\n appLink\r\n });\r\n }\r\n\r\n public getCurrentContext(): ApplicationContext {\r\n if (!this.contextHistory.length) return;\r\n return this.contextHistory[this.contextHistory.length - 1];\r\n }\r\n\r\n public fromPageLoad(): boolean {\r\n return this.contextHistory.length === 1;\r\n }\r\n}\r\n\r\nexport const ContextService: StaticContextService = new StaticContextService();","export enum Caches {\r\n Fifo = 'FifoMemoryCache'\r\n}","export const CommonChannels = {\r\n SHELL: 'global:shell',\r\n ALERT: 'global:alert',\r\n POPUP: 'global:popup',\r\n};","export const CommonServices = {\r\n ALERT: 'AlertService',\r\n SCROLL: 'ScrollService',\r\n LANGUAGE: 'LanguageService'\r\n};","export enum DataProviders {\r\n Ajax = 'AjaxDataProvider',\r\n Notifications = 'NotificationsSignalRDataProvider'\r\n}","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EventNames } from './EventNames';\r\n\r\n/**\r\n * Used to match on params in a backbone route.\r\n * (e.g. matches :id in /videos/:id)\r\n * Borrowed directly from backbone.\r\n */\r\nconst routeParamMatcher = /((\\(\\?)?:\\w+)|(\\*\\w+)/;\r\n\r\n/**\r\n * Used to strip out parenths in optional sections of routes.\r\n * (e.g. /videos(/edit) will become /videos/edit)\r\n */\r\nconst parenthMatcher = /[\\(\\)]/g;\r\n\r\n/**\r\n * Excludes optional trailing slashes\r\n * (e.g. /videos/123(/) would become /videos/123)\r\n */\r\nconst optionalSlashMatcher = /\\(\\/\\)/g;\r\n\r\n/**\r\n * Removes trailing slashes. A more efficient way of\r\n * doing .endsWith('/')\r\n */\r\nconst trailingSlashMatcher = /\\/$/;\r\n\r\n\r\nexport interface AppLink {\r\n application: string;\r\n action: string;\r\n args?: (string | number)[];\r\n params?: string | ObjectHash;\r\n}\r\n\r\nexport interface AppLinkHash {\r\n [selector: string]: AppLink;\r\n}\r\n\r\nexport interface AppLinkOptions {\r\n replace?: boolean;\r\n}\r\n\r\nexport const AppLinkUtility = {\r\n routingStarted(): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ROUTING_START);\r\n },\r\n routingEnded(): void {\r\n if (!AppLinkUtility.hasActiveRoute())\r\n return;\r\n\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ROUTING_END);\r\n },\r\n hasActiveRoute(): boolean {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n return channel.request(EventNames.HAS_ACTIVE_ROUTE);\r\n }\r\n};\r\n\r\nconst triggerAppLink = (appLink: AppLink, options: AppLinkOptions = {}) => {\r\n (options as any).usedHelper = true;\r\n\r\n const { application, action } = appLink;\r\n Radio.channel(application).trigger(action, appLink, options);\r\n};\r\n\r\nexport const AppLinkHelper = {\r\n\r\n /**\r\n * Build a href string from an AppLink object \r\n * @param appLink \r\n */\r\n getHref(appLink: AppLink): string {\r\n if (!appLink)\r\n return '';\r\n\r\n const { application, action, args, params } = appLink;\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n return `/${shellChannel.request(EventNames.ROUTE_LOOKUP, `${application}:${action}`, args, params)}`;\r\n },\r\n\r\n /**\r\n * This is the reverse process of extracting params out of a route.\r\n * (e.g. Will take the route '/videos/:id' and an array of args = [123]\r\n * and return '/videos/123')\r\n */\r\n buildRoute(route: string, appLink: AppLink): string {\r\n if (!appLink) return route;\r\n\r\n let args: any[] = appLink.args;\r\n let params: string | ObjectHash = appLink.params;\r\n\r\n _.each(args, arg => { route = route.replace(routeParamMatcher, arg || ''); });\r\n route = route.replace(optionalSlashMatcher, '');\r\n route = route.replace(parenthMatcher, '');\r\n route = route.replace(trailingSlashMatcher, '');\r\n\r\n if (!params)\r\n return route;\r\n\r\n const queryParams = LocationUtils.SerializeQueryParams(params);\r\n\r\n if (!queryParams.length)\r\n return route;\r\n\r\n return `${route}?${queryParams}`;\r\n },\r\n\r\n /**\r\n * Manually trigger an AppLink\r\n * @param appLink \r\n */\r\n trigger(appLink: AppLink, options?: AppLinkOptions): void {\r\n if (!appLink)\r\n return;\r\n\r\n if (!AppLinkUtility.hasActiveRoute()) {\r\n triggerAppLink(appLink, options);\r\n return;\r\n }\r\n\r\n /**\r\n * If there is currently an applink executing, we wait till that\r\n * execution is over before triggering the next applink.\r\n * \r\n * This will prevent the url being update to the first applink after\r\n * the second applink has run\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.once('routing:end', () => {\r\n triggerAppLink(appLink, options);\r\n });\r\n },\r\n\r\n getCurrentAppLink(): AppLink {\r\n return Radio.channel(CommonChannels.SHELL)\r\n .request(EventNames.CURRENT_ROUTE);\r\n }\r\n};","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { Shell } from './Shell';\r\nimport { BaseApplication, BaseApplicationOptions } from './BaseApplication';\r\nimport { AppLink, AppLinkUtility, AppLinkOptions, AppLinkHelper } from './AppLink';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { MiddlewareFunction, Middleware } from './Middleware';\r\nimport { EventNames } from './EventNames';\r\nimport { CoreError, ErrorHelper } from './BaseError';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nexport interface ExecuteRouteOptions {\r\n isAppRoute: boolean;\r\n}\r\n\r\n/**\r\n * Used to split lowerCamelCase method names into words.\r\n */\r\nconst splitter = /([A-Z])/g;\r\n\r\n/**\r\n * Used to split event names into words.\r\n */\r\nconst reverseSplitter = /(^|:)(\\w)/gi;\r\n\r\n/**\r\n * This should only ever be used by the shell\r\n * creating a new instance of the AppRoute\r\n */\r\nexport interface BaseAppRouterOptions extends Marionette.AppRouterOptions {\r\n appConstructor: typeof BaseApplication;\r\n\r\n /**\r\n * These will be passed into the appConstructor\r\n * when creating an instance of the Application\r\n */\r\n appOptions?: BaseApplicationOptions;\r\n shell: Shell;\r\n}\r\n\r\n/**\r\n * Every Application must have an AppRouter\r\n */\r\nexport class BaseAppRouter extends Marionette.AppRouter {\r\n /**\r\n * A hash of urls to method names on the Application.\r\n * Exactly the same implementation as Backbone Router routes\r\n * except the methods exist on the Application.\r\n * See http://backbonejs.org/#Router-routes\r\n */\r\n protected appRoutes?: Marionette.AppRoutes;\r\n\r\n protected appLinks?: string[];\r\n\r\n protected externalRoutes?: Marionette.AppRoutes;\r\n\r\n /**\r\n * The channelName used to trigger the appLinks\r\n * on backbone.radio. This will match the Application's\r\n * channelName.\r\n */\r\n protected channelName?: string;\r\n\r\n /**\r\n * These are async middleware functions that are run\r\n * before any route on this router is executed.\r\n * \r\n * They can be used to prevent access to a router using\r\n * asyncronous code.\r\n */\r\n protected filters: MiddlewareFunction<AppLink>[];\r\n\r\n /**\r\n * See BaseAppRouterOptions above.\r\n */\r\n protected options?: BaseAppRouterOptions;\r\n\r\n constructor(options?: BaseAppRouterOptions) {\r\n super(options);\r\n\r\n this.bindDisposal();\r\n this.processInternalRoutes();\r\n this.processExternalRoutes();\r\n this.processAppLinks();\r\n }\r\n\r\n private bindDisposal(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTE, (appLink: AppLink) => {\r\n if (appLink.application !== this.channelName) this.destroyApp();\r\n });\r\n }\r\n\r\n private addRouteLookup(eventName: string, route: string): void {\r\n /**\r\n * Create route look ups for each appRoute so that\r\n * anchor tags using appLinks can generate the correct href.\r\n * These are added to the shell so that all routes can be\r\n * easily found.\r\n */\r\n this.options.shell.addRouteLookup(\r\n `${this.channelName}:${eventName}`, (eventArgs?: any[], params?: string | ObjectHash) => {\r\n return AppLinkHelper.buildRoute(route, {\r\n application: this.channelName,\r\n action: eventName,\r\n args: eventArgs,\r\n params });\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Creates all the reverse route lookups\r\n * and binds all the appLinks to the radio channel\r\n */\r\n private processInternalRoutes(): void {\r\n _.each(_.keys(this.appRoutes), route => {\r\n const methodName = this.appRoutes[route];\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.addRouteLookup(eventName, route);\r\n\r\n /**\r\n * Adds an event listener on the application's channel\r\n * so that other parts of the application can directly trigger\r\n * routes without the use of window.navigate. This decouples\r\n * the application from the url bar in a browser.\r\n */\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n this.executeRoute(appLink, { isAppRoute: true }, () => {\r\n const params = _.extend({}, this.controller.getAndClearDefaultQueryParams(), appLink.params);\r\n appLink.params = params;\r\n\r\n LocationUtils.UpdateUrl(route, appLink, options);\r\n });\r\n });\r\n });\r\n }\r\n\r\n private processExternalRoutes(): void {\r\n if (!this.externalRoutes)\r\n return;\r\n\r\n _.each(_.keys(this.externalRoutes), route => {\r\n const methodName = this.externalRoutes[route];\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.addRouteLookup(eventName, route);\r\n\r\n /**\r\n * External routes are triggered exactly the same as other appLinks but take the user\r\n * to a different page on the same website using a PageLoad.\r\n */\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n LocationUtils.PageLoad(AppLinkHelper.getHref(appLink));\r\n });\r\n });\r\n }\r\n\r\n private processAppLinks(): void {\r\n if (!this.appLinks)\r\n return;\r\n\r\n _.each(this.appLinks, methodName => {\r\n const eventName = this.toEventName(methodName);\r\n\r\n this.listenTo(this.channelName, eventName, (appLink: AppLink, options: AppLinkOptions) => {\r\n if (!options || !(options as any).usedHelper)\r\n ErrorHelper.throw(new CoreError('Please use Core.AppLinkHelper.trigger({}) to trigger appLinks.'));\r\n\r\n this.executeRoute(appLink, { isAppRoute: false });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * This is the heart of the AppRouter. Every single route both page loads\r\n * and appLinks will go through this method.\r\n *\r\n * This will return false if onBeforeAction returns false\r\n * and the window history will not be altered.\r\n */\r\n private executeRoute(appLink: AppLink, options: ExecuteRouteOptions, done?: () => void): void {\r\n this.validateAppLink(appLink);\r\n\r\n const methodName = this.toMethodName(appLink.action);\r\n\r\n /**\r\n * AppLinkUtility lets us ensure that no other appLink\r\n * is fired and executed while this appLink is executing.\r\n */\r\n AppLinkUtility.routingStarted();\r\n\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n\r\n /**\r\n * Prevent a navigate event where the Shell has been locked\r\n */\r\n if (this.options.shell.isNavLocked()) {\r\n shellChannel.trigger(EventNames.NAV_IS_LOCKED, appLink);\r\n AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n const middleware = new Middleware<AppLink>();\r\n\r\n /**\r\n * Each of the filters defined on the router is run through\r\n * before we execute this route. Any filter can prevent the route from\r\n * executing by not calling next, instead calling AppLinkUtility.routingEnded(); \r\n * and throwing an error.\r\n */\r\n _.each(this.filters, filter => middleware.use(filter));\r\n\r\n middleware.go(appLink, () => {\r\n /**\r\n * Let the entire application know that the page is moving\r\n * to a new route. Also informs which application we're moving to.\r\n * \r\n * Options will let the application know if this appLink has an associated route\r\n */\r\n shellChannel.trigger(EventNames.ROUTE, appLink, options);\r\n\r\n /**\r\n * Instantiate the app if it had not already been created.\r\n */\r\n this.createApp();\r\n const app = this.controller;\r\n\r\n /**\r\n * Ensure the action is defined on the application\r\n */\r\n if (!_.isFunction(app[methodName])) {\r\n AppLinkUtility.routingEnded();\r\n ErrorHelper.throw(new CoreError(`${methodName} does not exist on the ${_.result(app, 'name')}.`));\r\n }\r\n\r\n /**\r\n * Check if the application wants to trigger the action\r\n * by calling onBeforeAction. If onBeforeAction returns falls\r\n * onActionCancelled is triggered on the application.\r\n */\r\n if (app.triggerMethod('before:action') === false) {\r\n app.triggerMethod('action:cancelled');\r\n AppLinkUtility.routingEnded();\r\n return;\r\n }\r\n\r\n /**\r\n * Ask the application to load it's layout.\r\n * onLoadLayout is defined in Core.Application\r\n * and should not be extended.\r\n */\r\n app.triggerMethod('load:layout');\r\n\r\n /**\r\n * Call the application's action passing the \r\n * deserialized query params as the last argument.\r\n */\r\n app[methodName].apply(app, [ ...(appLink.args || []), appLink.params || {} ]);\r\n\r\n if (_.isFunction(done))\r\n done();\r\n\r\n AppLinkUtility.routingEnded();\r\n });\r\n }\r\n\r\n /**\r\n * Instantiates and starts the application if there was\r\n * not already an instance.\r\n *\r\n * Why is the application stores on this.controller?\r\n * In Marionette AppRouters hold reference to a controller\r\n * which in turn is responsibile for maintaining reference to an application.\r\n * We've restructured this architecture so that AppRouters directly hold\r\n * the instance of the Application, but are still leveraging Marionette's\r\n * use of appRoutes on the controller.\r\n */\r\n private createApp(): void {\r\n if (this.controller) return;\r\n\r\n this.controller = new this.options.appConstructor(this.options.appOptions);\r\n this.controller.start();\r\n }\r\n\r\n private destroyApp(): void {\r\n if (!this.controller) return;\r\n\r\n const app = this.controller as BaseApplication;\r\n app.destroy();\r\n delete this.controller;\r\n }\r\n\r\n /**\r\n * Overriding Marionette.AppRouter's _addAppRoute so that\r\n * execute route is called instead of the method directly.\r\n *\r\n * We do this so that executeRoute can be called for every single\r\n * route, whether it's a page load or an appLink. This will make it easier\r\n * to modify the action\r\n */\r\n private _addAppRoute(controller: BaseApplication, route: string, methodName: string): void {\r\n this.route(route, methodName, (...args: any[]) => {\r\n const appLink: AppLink = {\r\n application: this.channelName,\r\n action: this.toEventName(methodName),\r\n args: args.slice(0, args.length - 1),\r\n params: LocationUtils.DeserializeQueryParams(args[args.length - 1])\r\n };\r\n\r\n this.executeRoute(appLink, { isAppRoute: true }, () => {\r\n LocationUtils.UpdateQuery(_.extend(this.controller.getAndClearDefaultQueryParams(), appLink.params));\r\n });\r\n });\r\n }\r\n\r\n private toEventName(methodName: string): string {\r\n return methodName.replace(splitter, ':$1').toLowerCase();\r\n }\r\n\r\n private toMethodName(eventName: string): string {\r\n const titleCase = eventName.replace(reverseSplitter, (match: string, prefix: string, name: string) => {\r\n return name.toUpperCase();\r\n });\r\n return titleCase[0].toLowerCase() + titleCase.slice(1, titleCase.length);\r\n }\r\n\r\n private validateAppLink(appLink: AppLink): void {\r\n if (!appLink.application || !appLink.action) {\r\n AppLinkUtility.routingEnded();\r\n ErrorHelper.throw(new CoreError('Invalid AppLink'));\r\n }\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { Shell } from './Shell';\r\nimport { BaseLayoutView, BaseLayoutViewOptions } from './BaseLayoutView';\r\nimport { LayoutService, LayoutOptions } from './LayoutService';\r\nimport { BaseAppRouter } from './BaseAppRouter';\r\nimport { CoreView } from './BaseView';\r\nimport { EventNames } from './EventNames';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseApplicationOptions extends Marionette.ApplicationOptions {\r\n shell: Shell;\r\n layoutService: LayoutService;\r\n channelName?: string;\r\n}\r\n\r\nexport class BaseApplication extends Marionette.Application {\r\n /**\r\n * Layout service is used to retreive the layout on each route\r\n */\r\n private layoutService: LayoutService;\r\n\r\n /** \r\n * The layout that should be used to render all content into the DOM\r\n */\r\n protected layout?: BaseLayoutView;\r\n\r\n /**\r\n * This is specified by all children of Core.Application\r\n * to determine which layout to load in from layout service,\r\n * and what options to instantiate it with.\r\n */\r\n protected layoutOptions: LayoutOptions<BaseLayoutViewOptions>;\r\n\r\n /**\r\n * A reference to the shell is always kept as a \r\n * way to both render the layout into the dom\r\n * and keep reference to global services\r\n */\r\n protected shell: Shell;\r\n\r\n /**\r\n * An instance of the Core.AppRouter is created\r\n * for each Application in order to listen to applink\r\n * events. The application instance is only then instantiated\r\n * when the Application route is hit\r\n */\r\n public static router: typeof BaseAppRouter;\r\n\r\n /** \r\n * Provides the ability to define useful error messages.\r\n */\r\n public name: string;\r\n\r\n /** When overridden determines which options are \r\n * mixed into the instance */\r\n public props: string[];\r\n\r\n /**\r\n * Used by application actions to set default options.\r\n */\r\n private defaultQueryParams: ObjectHash;\r\n\r\n /** \r\n * Shell and layoutService will be mixed into each instance\r\n * of Core.Applicataion\r\n */\r\n public get defaultProps(): string[] {\r\n return [ 'shell', 'layoutService' ];\r\n }\r\n\r\n /**\r\n * The constructor will merge in props and ensure any required properties\r\n * are defined\r\n * @constructor\r\n */\r\n constructor(options?: BaseApplicationOptions) {\r\n super(options);\r\n\r\n /** merge in any properties we want added to `this` */\r\n this.mergeOptions(options, [ ...this.defaultProps, ...(this.props || []) ]);\r\n\r\n if (!_.result(this, 'name'))\r\n ErrorHelper.throw(new CoreError('BaseApplication must define a name'));\r\n\r\n if (!_.result(this, 'channelName'))\r\n ErrorHelper.throw(new CoreError('BaseApplication must define a channelName'));\r\n\r\n this.listenTo(this.getGlobalRadioChannel('popup'), EventNames.SHOW_POPUP, this.onShowPopup);\r\n this.listenTo(this.getGlobalRadioChannel('alert'), 'show:alert', this.onShowAlert);\r\n }\r\n\r\n private getGlobalRadioChannel(prop: string): Radio.Channel {\r\n const globalChannels = this.shell.getGlobalRadioChannels();\r\n const channelName = globalChannels[prop.toUpperCase()];\r\n\r\n if (!channelName)\r\n ErrorHelper.throw(new CoreError(`Global channel ${channelName} does not exist`));\r\n\r\n return Radio.channel(channelName);\r\n }\r\n\r\n /**\r\n * This method is triggered by Core.AppRouter when it loads\r\n * in a route for this application. It will swap in the appropriate \r\n * layout before hitting the application's action.\r\n * \r\n */\r\n private onLoadLayout(): void {\r\n if (!this.layoutOptions || !this.layoutOptions.name) return;\r\n var options = _.extend({}, this.layoutOptions.options || {}, { store: this.shell.store });\r\n this.layout = this.layoutService.getLayout(_.extend(this.layoutOptions, { options }));\r\n\r\n if (!this.layout)\r\n ErrorHelper.throw(new CoreError(\r\n `Layout: ${this.layoutOptions.name} does not exist or was not registered`\r\n ));\r\n\r\n this.shell.showView(this.layout);\r\n\r\n /**\r\n * This is triggered so that applications can render in \r\n * any layout-esk components that need to be slightly more\r\n * application specific than a layout can handle. \r\n * For example the top navigation, where the application\r\n * needs to specify which item is highlighted.\r\n */\r\n this.triggerMethod('layout:loaded');\r\n }\r\n\r\n private onShowPopup(view: CoreView): void {\r\n if (!this.layout.getRegion('popup'))\r\n ErrorHelper.throw(new CoreError('Your application layout must define a popup region'));\r\n\r\n this.layout.showChildView('popup', view);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash): void {\r\n const { ctor, collection } = options;\r\n\r\n const region = this.layout.getRegion('alert');\r\n\r\n if (!region)\r\n ErrorHelper.throw(new CoreError('Your application layout must define an alert region'));\r\n\r\n // Only construct the alert view if an instance doesn not already\r\n // exist in the current region.\r\n if (region.hasView())\r\n return;\r\n\r\n this.layout.showChildView('alert', new ctor({ collection }));\r\n }\r\n\r\n protected setDefaultQueryParams(params: ObjectHash): void {\r\n /**\r\n * If an action calls another action within a single route\r\n * workflow setDefaultQueryParams may be called more than once\r\n * so we need to preserve all values passed it.\r\n * The last values will always override the first ones.\r\n */\r\n if (this.defaultQueryParams)\r\n params = _.extend(this.defaultQueryParams, params);\r\n\r\n this.defaultQueryParams = params;\r\n }\r\n\r\n public getAndClearDefaultQueryParams(): ObjectHash {\r\n const params = this.defaultQueryParams;\r\n delete this.defaultQueryParams;\r\n return params || {};\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as Marionette from 'backbone.marionette';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseBehavior extends Marionette.Behavior{\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as Backbone from 'backbone';\r\nimport { BaseModel } from './BaseModel';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseCollection<TModel extends BaseModel = BaseModel> extends Backbone.Collection<TModel> {\r\n public parent?: BaseModel | BaseCollection;\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseCollection } from './BaseCollection';\r\nimport { CoreView } from './BaseView';\r\nimport { BaseModel } from './BaseModel';\r\nimport * as _ from 'underscore';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseCollectionViewOptions<TModel extends BaseModel = BaseModel>\r\n extends Marionette.CollectionViewOptions<TModel>\r\n{\r\n channelName?: string;\r\n}\r\n\r\nexport class BaseCollectionView<\r\n TModel extends BaseModel = BaseModel,\r\n TView extends CoreView<TModel> = CoreView<TModel>,\r\n TCollection extends BaseCollection<TModel> = BaseCollection<TModel>\r\n> extends Marionette.CollectionView<TModel, TView, TCollection> {\r\n protected options: BaseCollectionViewOptions<TModel>;\r\n\r\n constructor(options?: BaseCollectionViewOptions<TModel>) {\r\n super(options);\r\n\r\n if (!_.result(this, 'name')) {\r\n ErrorHelper.throw(new CoreError(`Error: View with cid:${this.cid} requires a name.`));\r\n }\r\n }\r\n\r\n public serializeModel(): any {\r\n if (!this.model) {\r\n return {};\r\n }\r\n return this.model.toJSON();\r\n }\r\n public serializeCollection(): any[] {\r\n if (!this.collection) {\r\n return [];\r\n }\r\n return this.collection.toJSON();\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\nimport { EventNames } from './EventNames';\r\n\r\nexport class BaseError extends Error {\r\n public name: string;\r\n\r\n constructor(message: string) {\r\n super(message);\r\n }\r\n}\r\n\r\n/**\r\n * You can use these if you want to leverage the convenience \r\n * of the error set up without actually throwing the error\r\n */\r\nexport abstract class SilentError extends BaseError {\r\n public get name(): string {\r\n return 'SilentError';\r\n }\r\n}\r\n\r\nexport class CoreError extends Error {\r\n public get name(): string {\r\n return 'CoreError';\r\n }\r\n}\r\n\r\nconst ErrorHelper = {\r\n throw(error: BaseError): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger(EventNames.ERROR, error);\r\n\r\n if (!(error instanceof SilentError) && !EnvironmentVariables.isDevelopment)\r\n throw error;\r\n }\r\n};\r\n\r\nexport { ErrorHelper };","import * as _ from 'underscore';\r\n\r\nimport { BaseView, BaseViewOptions } from './BaseView';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { Store } from 'redux';\r\n\r\nexport interface BaseLayoutViewOptions extends BaseViewOptions {\r\n store?: Store;\r\n}\r\n\r\nexport class BaseLayoutView extends BaseView {\r\n protected options: BaseLayoutViewOptions;\r\n\r\n constructor(options: BaseLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public static getCacheKey(options: BaseLayoutViewOptions): string {\r\n ErrorHelper.throw(new DevError(`Must define getCacheKey for ${this.name}.`));\r\n\r\n return;\r\n }\r\n\r\n public unmountRegion(regionName: string): void {\r\n this.trigger(`unmount:${regionName}`);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { BaseCollection } from './BaseCollection';\r\nimport { ListenToRadio } from './ListenToRadio';\r\n\r\nexport class BaseModel extends Backbone.Model {\r\n public parent?: BaseModel | BaseCollection;\r\n public collection: BaseCollection;\r\n\r\n /**\r\n * Mechanism to allow properties/functions to be attached to\r\n * the instance of a model at runtime. \r\n * @param propertyHash \r\n * \r\n * I feel like this implementation is a bit naive, \r\n * but it will suffice for the time being - Mike\r\n */\r\n private mixin(propertyHash: Backbone.ObjectHash): void {\r\n const proto = this as any;\r\n\r\n for (let prop in propertyHash) {\r\n\r\n if (proto.hasOwnProperty(prop)) {\r\n const currentProperty = proto[prop];\r\n proto[prop] = _.extend({}, currentProperty, propertyHash[prop]);\r\n return;\r\n }\r\n\r\n proto[prop] = propertyHash[prop];\r\n }\r\n }\r\n\r\n /**\r\n * Helper to facilitate model validation at runtime \r\n * @param validation \r\n */\r\n public addValidation(validation: any): void {\r\n this.mixin({ validation });\r\n }\r\n\r\n /**\r\n * Backbone Validation mixin functions\r\n */\r\n\r\n public preValidate: (attr: any, value: any) => any;\r\n\r\n /* \r\n * Override the base validate parameters to make attributes optional.\r\n * Backbone Validation will default to validating all attributes where\r\n * an attributes hash is not passed.\r\n */\r\n public validate(attributes?: any, options?: any): any {\r\n super.validate.call(this, attributes, options);\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ModelSetOptions, ObjectHash } from 'backbone';\r\n\r\nimport { BaseModel } from './BaseModel';\r\nimport { BaseCollection } from './BaseCollection';\r\n\r\ninterface Association {\r\n new (...args: any[]): (BaseCollection | BaseModel);\r\n}\r\n\r\nexport interface BaseNestedModelOptions extends ModelSetOptions {\r\n unset?: boolean;\r\n}\r\n\r\nexport class BaseNestedModel extends BaseModel {\r\n [name: string]: any;\r\n\r\n protected associations: {\r\n [name: string]: Association;\r\n };\r\n\r\n public set(key: string | object, value?: any | ModelSetOptions, options?: BaseNestedModelOptions): BaseNestedModel {\r\n let attr, attrs: any;\r\n\r\n if (key === null) return this;\r\n\r\n if (typeof key === 'object') {\r\n attrs = key;\r\n options = value;\r\n } else {\r\n attrs = {};\r\n attrs[key] = value;\r\n }\r\n\r\n options || (options = {});\r\n\r\n // if(!this._validate(attrs, options)) return false;\r\n\r\n for (attr in attrs) {\r\n if (_.has(this.associations, attr))\r\n attrs[attr] = this.setAssociation(attr, attrs[attr], options);\r\n }\r\n\r\n return super.set.call(this, attrs, options);\r\n }\r\n\r\n public get(attributeName: string): any {\r\n var splitIndex = attributeName.indexOf('.');\r\n\r\n if (splitIndex === -1) return super.get.call(this, attributeName);\r\n\r\n const assoc = attributeName.substr(0, splitIndex);\r\n const nestedModel = this.attributes[assoc];\r\n\r\n if (!nestedModel || !_.isFunction(nestedModel.get))\r\n return super.get.call(this, attributeName);\r\n\r\n const propName = attributeName.substr(splitIndex + 1);\r\n return nestedModel.get(propName);\r\n }\r\n\r\n public setAssociation(\r\n key: string, value: any, options: BaseNestedModelOptions\r\n ): BaseModel | BaseCollection<BaseModel> {\r\n const assocFn = this.associations[key];\r\n const previous = this.attributes[key];\r\n\r\n if (!_.isFunction(assocFn)) return value;\r\n\r\n if (options.unset) {\r\n previous && delete previous.parent;\r\n delete this[key];\r\n return previous;\r\n }\r\n\r\n if (previous) {\r\n if (previous instanceof BaseModel) previous.set(value, options);\r\n if (previous instanceof BaseCollection) previous.set(value, options);\r\n\r\n if (!options.silent) this.trigger(`change:${key}`, this, value, options);\r\n\r\n return previous;\r\n }\r\n\r\n const associatedModel =\r\n value instanceof BaseModel ? value : new assocFn(value, { parse: true });\r\n\r\n associatedModel.parent = this;\r\n\r\n this[key] = associatedModel;\r\n\r\n return associatedModel;\r\n }\r\n\r\n public toJSON(...args: any[]): ObjectHash {\r\n const json = super.toJSON.apply(this, args);\r\n\r\n _.each(this.associations, (assoc: any, key: string) => {\r\n if (_.has(json, key) && _.isFunction(json[key].toJSON))\r\n json[key] = json[key].toJSON();\r\n else\r\n json[key] = new assoc().toJSON();\r\n });\r\n\r\n return json;\r\n }\r\n\r\n public toFlatJSON(...args: any[]): ObjectHash {\r\n return _.omit(super.toJSON.apply(this, args), _.keys(this.associations));\r\n }\r\n}\r\n","import * as Marionette from 'backbone.marionette';\r\n\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\nexport interface BaseServiceOptions extends Marionette.ObjectOptions {}\r\n\r\nexport class BaseService extends Marionette.Object {\r\n public name: string;\r\n\r\n public constructor(options?: BaseServiceOptions) {\r\n super(options);\r\n\r\n if (!this.name)\r\n ErrorHelper.throw(new CoreError('Your service must be named.'));\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { StickitBinding } from 'libs/common/backbone/interfaces/StickitBinding';\r\n\r\nimport { BaseModel } from './BaseModel';\r\n\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\nimport { AppLinkHash, AppLinkHelper } from './AppLink';\r\n\r\ninterface UIHash {\r\n [selector: string]: any;\r\n}\r\n\r\nexport interface RequiredResourceHash {\r\n [propName: string]: RequiredResourceDefinition;\r\n}\r\n\r\nexport interface RequiredResourceDefinition<T = any> {\r\n dataServiceName: string;\r\n eventName: string;\r\n getData: (instance: any) => T;\r\n getInstance: (context: Backbone.Events) => any;\r\n beforeOnBeforeRender: boolean;\r\n}\r\n\r\nexport interface BaseViewOptions<TModel extends BaseModel = BaseModel> extends Marionette.ViewOptions<TModel> {\r\n channelName?: string;\r\n}\r\n\r\nexport class CoreView<TModel extends BaseModel = BaseModel> extends Marionette.View<TModel> {\r\n /**\r\n * This is of the name class. It should be used on\r\n * all warnings and errors to make debugging easier.\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Takes a Handlebars template function.\r\n */\r\n public template: any;\r\n\r\n /**\r\n * Specify the properties you want to be\r\n * taken from `options` and added to the context.\r\n */\r\n public props: string[];\r\n\r\n /**\r\n * This is what the page title will be set to\r\n * when this view is rendered.\r\n */\r\n public title: string | boolean;\r\n\r\n /**\r\n * The default properties that will be taken\r\n * from `options` and added to the context.\r\n */\r\n private get defaultProps(): string[] {\r\n return [ 'shell', 'layoutService' ];\r\n }\r\n\r\n public viewModel: BaseModel;\r\n\r\n private static ViewDataExtensions: (Function | Backbone.ObjectHash)[] = [];\r\n\r\n /**\r\n * Update instance options to include defaults. Passing options\r\n * to the view via the ctor will always override defaults.\r\n * @param options\r\n */\r\n private _setOptions(options: any): void {\r\n this.options = _.extend({}, _.result(this, 'defaults'), options);\r\n }\r\n\r\n /**\r\n * Mix in the class name into the dom attributes to\r\n * help us out with debugging\r\n */\r\n private _setAttributes(attributes: any): void {\r\n if (EnvironmentVariables.isDevelopment) {\r\n _.extend(attributes, {\r\n ['cv-classname']: this.name\r\n });\r\n }\r\n\r\n this.$el.attr(attributes);\r\n }\r\n\r\n private uiStorage: Backbone.ObjectHash;\r\n public get ui(): Backbone.ObjectHash {\r\n if (this.uiStorage)\r\n return this.uiStorage;\r\n\r\n this.uiStorage = this.elements;\r\n return this.uiStorage;\r\n }\r\n public set ui(value: Backbone.ObjectHash) {\r\n this.uiStorage = value;\r\n }\r\n\r\n public get elements(): Backbone.ObjectHash {\r\n return null;\r\n }\r\n\r\n protected defaults: Backbone.ObjectHash;\r\n protected options: BaseViewOptions<TModel>;\r\n\r\n /**\r\n * Base class for all views to inherit from.\r\n * @constructor\r\n */\r\n constructor(options?: BaseViewOptions<TModel>) {\r\n super(options);\r\n\r\n const props = [ ...this.defaultProps, ...(this.props || []) ];\r\n\r\n // Merge props into the view instance\r\n this.mergeOptions(options, props);\r\n\r\n if (!_.result(this, 'name')) {\r\n ErrorHelper.throw(new CoreError(`Error: View with cid:${this.cid} requires a name.`));\r\n }\r\n }\r\n\r\n public appLinks: AppLinkHash;\r\n public normalizeUIKeys: (hash: UIHash) => UIHash;\r\n\r\n // Allow projects to add their own view data\r\n public static AddViewDataExtension(ext: Function | Backbone.ObjectHash): void {\r\n CoreView.ViewDataExtensions.push(ext);\r\n }\r\n\r\n public serializeModel(): any {\r\n if (!this.model) {\r\n return {};\r\n }\r\n return this.model.toJSON();\r\n }\r\n\r\n public serializeCollection(): any[] {\r\n if (!this.collection) {\r\n return [];\r\n }\r\n return this.collection.toJSON();\r\n }\r\n\r\n /**\r\n * This is a utility that can be used if your\r\n * className is dynamic between renders.\r\n * Simply call this.resetClassName() in\r\n * onRender()\r\n */\r\n protected resetClassName(): void {\r\n this.$el.attr('class', _.result(this, 'className'));\r\n }\r\n\r\n public serializeData(): any {\r\n const modelData = super.serializeData();\r\n const viewOptions = _.result(this, 'viewOptions');\r\n\r\n const result = _.extend({}, modelData, { options: viewOptions });\r\n\r\n if (!CoreView.ViewDataExtensions.length)\r\n return result;\r\n\r\n return _.extend(result, ..._.map(CoreView.ViewDataExtensions, (ext: Function | Backbone.ObjectHash) => {\r\n return ext instanceof Function\r\n ? ext(this)\r\n : ext;\r\n }));\r\n }\r\n\r\n // View options will be passed to our template by default\r\n protected viewOptions(): Backbone.ObjectHash {\r\n return this.options;\r\n }\r\n\r\n /**\r\n * Ensures that multiple click events arent bound\r\n * if the view is getting re-rendered.\r\n */\r\n private undelegateAppLinks(): void {\r\n if (this.$el) this.$el.off(`.appLinks${this.cid}`);\r\n }\r\n\r\n /**\r\n * This will take the appLinks hash defined on a view and used it to add\r\n * hrefs to the anchor tags and provide the application linking.\r\n */\r\n protected renderAppLinks(): void {\r\n let appLinks = this.appLinks;\r\n\r\n if (!appLinks) return;\r\n\r\n const events: any = {};\r\n\r\n /**\r\n * This allows appLinks to be defined with the\r\n * Marionette 'click @ui.myAnchorTag' syntax.\r\n */\r\n appLinks = this.normalizeUIKeys(appLinks);\r\n\r\n this.undelegateAppLinks();\r\n\r\n _.each(_.keys(appLinks), (key: string) => {\r\n let selector = key;\r\n const link = appLinks[key];\r\n\r\n /**\r\n * Gets the routeLookup from the shell. These\r\n * are added to the shell by\r\n * Core.AppRouter.processAppEvents() when the shell starts\r\n */\r\n const href = AppLinkHelper.getHref(link);\r\n\r\n /**\r\n * This allows an appLink to be defined on a view's root\r\n * element. This prevents us from over complicating the dom\r\n * structure if our view is simply an anchor tag on it's own.\r\n *\r\n * E.g.\r\n * tagName: 'a',\r\n * appLinks: {\r\n * '[this]': {\r\n * application: 'example:application',\r\n * action: 'details:page'\r\n * }\r\n * }\r\n */\r\n if (selector === '[this]') {\r\n selector = null;\r\n }\r\n\r\n const $el = selector ? this.$el.find(key) : this.$el;\r\n\r\n /**\r\n * We only create appLinks on anchor tags.\r\n * This is so we can support browser functions\r\n * such as open in a new window and so we can create\r\n * a strong SEO profile.\r\n */\r\n if (!$el.is('a') && !$el.is('button')) return;\r\n\r\n /**\r\n * Adds the href to the anchor tag if an actual route\r\n * exists.\r\n */\r\n if (href && href !== '/')\r\n $el.attr('href', href);\r\n\r\n /**\r\n * Bind click events on the anchor tag. Which will prevent the default\r\n * browser action of page loading to the href and instead\r\n * trigger an appLink to do a same page route.\r\n *\r\n * This callback must be a regular function rather than an\r\n * arrow function because of the way delegate() sets context\r\n */\r\n this.delegate(`click.appLinks${this.cid}`, selector, function(event: JQuery.Event): void {\r\n event.preventDefault();\r\n\r\n AppLinkHelper.trigger(link);\r\n });\r\n });\r\n }\r\n\r\n private hasPartialLoadingRegions(): boolean {\r\n /**\r\n * Defining const self = this as any so that we can\r\n * reference private variables\r\n */\r\n const self = this as any;\r\n\r\n if (self._hasPartialLoadingRegions !== undefined) {\r\n return self._hasPartialLoadingRegions;\r\n }\r\n\r\n self._hasPartialLoadingRegions = _.some(\r\n self.regions, ((r: any) => (\r\n _.has(r, 'partialLoading')\r\n )));\r\n\r\n return self._hasPartialLoadingRegions;\r\n }\r\n\r\n protected renderPartialLoading(region?: string): void {\r\n /**\r\n * PartialLoadingHelper is listening to this event\r\n * and will render the views partial loading regions\r\n * when the event is fired.\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger('render:partial:loading', this, region);\r\n }\r\n\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n\r\n public render(): CoreView<TModel> {\r\n /**\r\n * Defining const self = this as any so that we can\r\n * reference private variables\r\n */\r\n const self = this as any;\r\n\r\n if (self._isDestroyed) {\r\n return this;\r\n }\r\n\r\n /**\r\n * Fetch required resources before onBeforeRender\r\n */\r\n let shouldRender = this.processRequriedResources(true);\r\n\r\n /**\r\n * Run onBeforeRender if there are no required resources,\r\n * or if the require resources have fetched\r\n */\r\n if (shouldRender)\r\n shouldRender = self.triggerMethod('before:render', this);\r\n\r\n /**\r\n * We do this because if onBeforeRender returns nothing we should render\r\n */\r\n if (shouldRender !== false)\r\n shouldRender = true;\r\n\r\n /**\r\n * Fetch required resources after onBeforeRender\r\n * Resources that shouldn't block any fetches being made in onBeforeRender\r\n * are fetched here\r\n */\r\n shouldRender = shouldRender && this.processRequriedResources(false);\r\n\r\n if (shouldRender === false) {\r\n if (self._partialLoadingRendered || !self.hasPartialLoadingRegions()) {\r\n return this;\r\n }\r\n\r\n self._partialLoadingRendered = true;\r\n self._reInitRegions();\r\n self._renderTemplate();\r\n self.renderPartialLoading();\r\n return this;\r\n }\r\n\r\n if (self._isRendered || self._partialLoadingRendered) {\r\n self._reInitRegions();\r\n }\r\n\r\n this.setTitle();\r\n self._renderTemplate();\r\n self.bindUIElements();\r\n this.renderAppLinks();\r\n\r\n self._partialLoadingRendered = false;\r\n self._isRendered = true;\r\n self.triggerMethod('render', this);\r\n\r\n return this;\r\n }\r\n\r\n /** backbone.stickit stuff that is mixed in at run time.\r\n *\r\n * TODO: This should ideally be handled higher up that BaseView,\r\n * (yet another one of those TODOs that is likely\r\n * to sit here till the end of time. - Sha)\r\n */\r\n public bindings: { [selector: string]: StickitBinding };\r\n public stickit: (model?: BaseModel, options?: any) => void;\r\n public addbinding: (model: BaseModel, selector: string, configuration: any) => void;\r\n public unstickit: (model?: BaseModel, options?: any) => void;\r\n\r\n protected processRequriedResources(beforeOnBeforeRender: boolean): boolean { return true; }\r\n\r\n protected setTitle(): void { }\r\n}\r\n\r\nexport class BaseView<TModel extends BaseModel = BaseModel> extends CoreView<TModel> {\r\n private boundListeners: any;\r\n private resourceInstances: any;\r\n\r\n public requiredResources: {[propName: string]: RequiredResourceDefinition};\r\n\r\n constructor(options?: BaseViewOptions<TModel>) {\r\n super(options);\r\n\r\n this.boundListeners = {};\r\n this.resourceInstances = {};\r\n }\r\n\r\n protected processRequriedResources(beforeOnBeforeRender: boolean): boolean {\r\n const requiredResourceKeys = _.keys(this.requiredResources);\r\n\r\n if (!requiredResourceKeys.length)\r\n return true;\r\n\r\n const self = this as any;\r\n let shouldRender = true;\r\n\r\n _.each(requiredResourceKeys, key => {\r\n const requiredResource = this.requiredResources[key];\r\n\r\n if (requiredResource.beforeOnBeforeRender !== beforeOnBeforeRender)\r\n return;\r\n\r\n const dataServiceName = requiredResource.dataServiceName;\r\n\r\n if (!this.resourceInstances[dataServiceName]) {\r\n this.resourceInstances[dataServiceName] = requiredResource.getInstance(this);\r\n }\r\n\r\n if (!this.boundListeners[`${dataServiceName}:${requiredResource.eventName}`]) {\r\n this.listenTo(this.resourceInstances[dataServiceName].channelName, requiredResource.eventName, this.render);\r\n this.boundListeners[`${dataServiceName}:${requiredResource.eventName}`] = true;\r\n }\r\n\r\n self[key] = requiredResource.getData(this.resourceInstances[dataServiceName]);\r\n\r\n shouldRender = shouldRender && !!self[key];\r\n });\r\n return shouldRender;\r\n }\r\n\r\n public setTitle(): void {\r\n /**\r\n * A view can opt out of a page title by setting\r\n * this.title to false.\r\n */\r\n if (!_.isString(this.title) && this.title !== false)\r\n ErrorHelper.throw(new DevError(`Must define a title for ${this.name}.`));\r\n\r\n /**\r\n * PageTitleService is listening to this event\r\n * and will render the views partial loading regions\r\n * when the event is fired.\r\n */\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.trigger('set:page:title', this.title);\r\n }\r\n}\r\n\r\nexport class BaseComponent<TModel extends BaseModel = BaseModel> extends CoreView<TModel> { }","const EventNames = {\r\n SHOW_POPUP: 'show:popup',\r\n ROUTE: 'route',\r\n LOCK_NAV: 'lock:nav',\r\n UNLOCK_NAV: 'unlock:nav',\r\n NAV_IS_LOCKED: 'navigation:islocked',\r\n NAV_UNLOCKED_BY_USER: 'navigation:unlocked:by:user',\r\n ROUTING_START: 'routing:start',\r\n ROUTING_END: 'routing:end',\r\n HAS_ACTIVE_ROUTE: 'has:active:route',\r\n ROUTE_LOOKUP: 'route:look:up',\r\n URL_CHANGE: 'url:change',\r\n ERROR: 'error',\r\n CURRENT_ROUTE: 'route:current'\r\n};\r\n\r\nexport { EventNames };","import * as _ from 'underscore';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseLayoutView, BaseLayoutViewOptions } from './BaseLayoutView';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { ErrorHelper, CoreError } from './BaseError';\r\n\r\ninterface Layouts {\r\n [name: string]: typeof BaseLayoutView;\r\n}\r\n\r\nexport interface LayoutOptions<T extends BaseLayoutViewOptions> {\r\n name: string;\r\n options?: T;\r\n}\r\n\r\nexport interface LayoutServiceOptions extends Marionette.ObjectOptions {\r\n requiredRegions?: string[];\r\n}\r\n\r\nexport class LayoutService extends Marionette.Object {\r\n private layouts: Layouts;\r\n private currentLayout: BaseLayoutView;\r\n private currentLayoutCacheKey: string;\r\n private requiredRegions: string[];\r\n public options: LayoutServiceOptions;\r\n\r\n constructor(options: LayoutServiceOptions) {\r\n super(options);\r\n this.layouts = {};\r\n this.requiredRegions = options.requiredRegions;\r\n }\r\n\r\n private clearLayout(): void {\r\n if (!this.currentLayout)\r\n return;\r\n\r\n this.currentLayout.destroy();\r\n delete this.currentLayout;\r\n delete this.currentLayoutCacheKey;\r\n }\r\n\r\n public registerLayout(name: string, layout: typeof BaseLayoutView): this {\r\n this.checkRequiredRegions(layout);\r\n this.layouts[name] = layout;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Either return the existing instance of a layout\r\n * or create the layout and cache it before returning.\r\n */\r\n public getLayout<T extends BaseLayoutViewOptions>(layoutOptions: LayoutOptions<T>): BaseLayoutView {\r\n const { name, options = {} } = layoutOptions;\r\n\r\n if (!this.layouts[name])\r\n ErrorHelper.throw(new CoreError(`${name} was not registered as a template.`));\r\n\r\n const cacheKey = this.layouts[name].getCacheKey(options);\r\n\r\n if (this.currentLayoutCacheKey === cacheKey && this.currentLayout) {\r\n this.currentLayout.triggerMethod('layout:requested', options);\r\n return this.currentLayout;\r\n }\r\n\r\n this.clearLayout();\r\n\r\n this.currentLayoutCacheKey = cacheKey;\r\n\r\n this.currentLayout = new this.layouts[name](options);\r\n this.listenToOnce(this.currentLayout, 'destroy', this.clearLayout);\r\n\r\n return this.currentLayout;\r\n }\r\n\r\n /**\r\n * Every layout that is registered must have all required/mandatory regions\r\n */\r\n private checkRequiredRegions(layout: typeof BaseLayoutView): void {\r\n _.each(this.requiredRegions, regionName => {\r\n if (!_.has(_.result(layout.prototype, 'regions'), regionName))\r\n ErrorHelper.throw(new CoreError(`Layout: ${layout.prototype.name} must define an ${regionName} region.`));\r\n });\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}\r\n","import { Radio } from 'backbone';\r\n\r\nfunction ListenToRadio(\r\n obj: string | Backbone.Events, events: string, callback: Function, originalListenTo: Function\r\n): any {\r\n let listenObj = obj;\r\n\r\n if (typeof(obj) === 'string')\r\n listenObj = Radio.channel(obj);\r\n\r\n return originalListenTo.call(this, listenObj, events, callback);\r\n}\r\n\r\nexport { ListenToRadio };","import * as _ from 'underscore';\r\nimport * as Backbone from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash, History, history } from 'backbone';\r\nimport { AppLinkHelper, AppLink, AppLinkUtility } from './AppLink';\r\n\r\nimport { EventNames } from './EventNames';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\n/**\r\n * This is the only file in the entire project\r\n * that should ever reference window.location.\r\n */\r\nconst LocationUtils = {\r\n GetQuery(): ObjectHash {\r\n return LocationUtils.DeserializeQueryParams((window.location.search).substring(1));\r\n },\r\n UpdateQuery(params: ObjectHash): void {\r\n if (!params)\r\n return;\r\n\r\n const currentQuery = LocationUtils.GetQuery();\r\n let query = LocationUtils.SerializeQueryParams(_.extend(currentQuery, params));\r\n\r\n if (query)\r\n query = `?${query}`;\r\n\r\n LocationUtils.UpdateUrl(`${LocationUtils.GetCurrentPath()}${query}`, null, { replace: true, trigger: false });\r\n },\r\n UpdateUrl(route: string, appLink: AppLink, options?: ObjectHash): void {\r\n const url = AppLinkHelper.buildRoute(route, appLink);\r\n\r\n Backbone.history.navigate(url, options);\r\n\r\n Radio.channel(CommonChannels.SHELL)\r\n .trigger(EventNames.URL_CHANGE, appLink, options);\r\n },\r\n SerializeQueryParams(params: string | ObjectHash): string {\r\n if (!params)\r\n return '';\r\n\r\n if (typeof(params) === 'string')\r\n return params;\r\n\r\n return $.param(params, true);\r\n },\r\n DeserializeQueryParams(params: string): ObjectHash {\r\n if (!params)\r\n return {};\r\n\r\n return _.reduce(params.split('&'), (queryParams: ObjectHash, param: string) => {\r\n const kvp = param.split('=');\r\n const key = kvp[0];\r\n const value = kvp.length > 0 ? decodeURIComponent(kvp[1]) : '';\r\n\r\n if (!queryParams[key]) {\r\n queryParams[key] = value;\r\n return queryParams;\r\n }\r\n\r\n if (queryParams[key] instanceof Array) {\r\n queryParams[key].push(value);\r\n return queryParams;\r\n }\r\n\r\n queryParams[key] = [ queryParams[key], value ];\r\n return queryParams;\r\n }, {});\r\n },\r\n StartHistory(): void {\r\n if (History.started) history.stop();\r\n history.start({ pushState: true });\r\n },\r\n PageLoad(href: string, newTab: boolean = false): void {\r\n if (!newTab) {\r\n window.location.href = href;\r\n return;\r\n }\r\n\r\n window.open(href, '_blank');\r\n },\r\n Redirect(href: string, replace: boolean = true): void {\r\n const redirect = () => replace\r\n ? window.location.replace(href)\r\n : window.location.href = href;\r\n\r\n /**\r\n * If there is currently an applink executing, we wait till that\r\n * execution is over before redirecting.\r\n * \r\n * This will prevent the wrong url being replaced.\r\n */\r\n if (AppLinkUtility.hasActiveRoute())\r\n Radio.channel(CommonChannels.SHELL).once('routing:end', redirect);\r\n else\r\n redirect();\r\n },\r\n Reload(force: boolean = true): void {\r\n window.location.reload(force);\r\n },\r\n GetCurrentPath(): string {\r\n return window.location.pathname;\r\n },\r\n GetCurrentQueryString(): string {\r\n return window.location.search;\r\n },\r\n GetCurrentUrl(): string {\r\n return window.location.href;\r\n },\r\n GetCurrentReferrer(): string {\r\n return document.referrer;\r\n },\r\n SetPageTitle(title: string): void {\r\n document.title = title;\r\n }\r\n};\r\n\r\nexport { LocationUtils };","export interface MiddlewareNext<T> {\r\n (options: T): void;\r\n}\r\n\r\nexport interface MiddlewareFunction<T> {\r\n (options: T, next: MiddlewareNext<T>): void;\r\n}\r\n\r\nexport class Middleware<T> {\r\n public use(fn: MiddlewareFunction<T>): void {\r\n const wrapper = (stack: any) => {\r\n return (options: T, next: MiddlewareNext<T>) => {\r\n return stack(options, () => fn(options, next));\r\n };\r\n };\r\n\r\n this.go = wrapper(this.go);\r\n }\r\n\r\n public go(options: T, next: MiddlewareNext<T>): void {\r\n next(options);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { BaseApplication } from './BaseApplication';\r\nimport { BaseAppRouterOptions } from './BaseAppRouter';\r\nimport { LayoutService } from './LayoutService';\r\nimport { AppLinkUtility, AppLink } from './AppLink';\r\nimport { ListenToRadio } from './ListenToRadio';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { BaseError, ErrorHelper, CoreError } from './BaseError';\r\nimport { EventNames } from './EventNames';\r\nimport { LocationUtils } from './LocationUtils';\r\nimport { BaseLayoutView } from './BaseLayoutView';\r\nimport { Store } from 'redux';\r\n\r\ninterface RouteLookup {\r\n [name: string]: (eventArgs?: any[], params?: string | ObjectHash) => string;\r\n}\r\n\r\ninterface ErrorHandler {\r\n errorType: Function & { prototype: BaseError };\r\n handler: (error: BaseError) => void;\r\n}\r\n\r\n/**\r\n * Maintain high-level shell state that spans across multiple applications.\r\n * Do NOT hold any low-level application-specific state here, use the\r\n * ViewModelService instead.\r\n */\r\ninterface ShellState {\r\n navLock: boolean;\r\n activeRoute: boolean;\r\n currentAppLink: AppLink;\r\n}\r\n\r\ninterface InitializationStep {\r\n (shell: Shell, next: InitializationStep): void;\r\n}\r\n\r\ninterface StartUpSet {\r\n (shell: Shell, options: any, next: StartUpSet): void;\r\n}\r\n\r\n\r\nclass ApplicationMeta {\r\n private application: typeof BaseApplication;\r\n private options?: ObjectHash;\r\n\r\n constructor(application: typeof BaseApplication, options?: ObjectHash) {\r\n this.application = application;\r\n this.options = options || {};\r\n }\r\n\r\n public get Application(): typeof BaseApplication {\r\n return this.application;\r\n }\r\n\r\n public get Options(): ObjectHash {\r\n return this.options;\r\n }\r\n}\r\n\r\nexport interface ShellOptions extends Marionette.ApplicationOptions {}\r\n\r\nexport class Shell extends Marionette.Application {\r\n /**\r\n * Used to retreive and cache layout views.\r\n */\r\n private layoutService: LayoutService;\r\n\r\n private applications: ApplicationMeta[];\r\n private routeLookup: RouteLookup;\r\n\r\n private shellState: ShellState;\r\n\r\n public initialize(options?: ShellOptions): void {\r\n this.mergeOptions(options, ['layoutService']);\r\n\r\n this.applications = [];\r\n this.routeLookup = {};\r\n this.shellState = {\r\n navLock: false,\r\n activeRoute: false,\r\n currentAppLink: null\r\n };\r\n this.errorHandlers = [];\r\n }\r\n\r\n private bindListeners(): void {\r\n this.bindRouteLookup();\r\n this.bindNavLockListeners();\r\n this.bindAppLinkListeners();\r\n this.bindErrorHandlers();\r\n this.bindErrorListener();\r\n }\r\n\r\n private bindNavLockListeners(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.LOCK_NAV, () => this.shellState.navLock = true);\r\n this.listenTo(CommonChannels.SHELL, EventNames.UNLOCK_NAV, () => this.shellState.navLock = false);\r\n }\r\n\r\n private bindAppLinkListeners(): void {\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_START, () => this.shellState.activeRoute = true);\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTING_END, () => this.shellState.activeRoute = false);\r\n\r\n this.listenTo(CommonChannels.SHELL, EventNames.ROUTE,\r\n (appLink: AppLink) => this.shellState.currentAppLink = appLink);\r\n\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n channel.reply(EventNames.HAS_ACTIVE_ROUTE, _.bind(this.hasActiveRoute, this));\r\n channel.reply(EventNames.CURRENT_ROUTE, () => this.shellState.currentAppLink);\r\n }\r\n\r\n private bindErrorHandlers(): void {\r\n window.addEventListener('error', () => {\r\n /**\r\n * If an error is unintentially thrown within a route executing,\r\n * this error listener will make sure all the application's applinks\r\n * don't freeze up.\r\n */\r\n AppLinkUtility.routingEnded();\r\n });\r\n }\r\n\r\n private bindErrorListener(): void {\r\n const channel = Radio.channel(CommonChannels.SHELL);\r\n this.listenTo(channel, EventNames.ERROR, this.handleError);\r\n }\r\n\r\n /**\r\n * Using all the routeLookups passed in during AppRouter initialization\r\n * we create a bunch of channel replies on the shell channel.\r\n * \r\n * Both Core.AppRouter and Core.View use this to reverse engineer\r\n * the application routes and regenerate urls with a list of arguments.\r\n * \r\n * These need to exist on the shell rather than on the Core.AppRouter\r\n * because consumers of this reply wont know which instance of Core.AppRoute\r\n * to call.\r\n */\r\n private bindRouteLookup(): void {\r\n const shellChannel = Radio.channel(CommonChannels.SHELL);\r\n shellChannel.reply(\r\n EventNames.ROUTE_LOOKUP,\r\n (name: string, eventArgs: any[], params: string | ObjectHash): string => {\r\n if (this.routeLookup[name])\r\n return this.routeLookup[name](eventArgs, params);\r\n\r\n return '';\r\n },\r\n this\r\n );\r\n }\r\n\r\n public addRouteLookup(name: string, func: () => string): void {\r\n this.routeLookup[name] = func;\r\n }\r\n\r\n public registerApplication(application: typeof BaseApplication, options?: ObjectHash): this {\r\n this.applications.push(new ApplicationMeta(application, options));\r\n return this;\r\n }\r\n\r\n public getGlobalRadioChannels(): ObjectHash {\r\n return CommonChannels;\r\n }\r\n\r\n public isNavLocked(): boolean {\r\n return this.shellState.navLock;\r\n }\r\n\r\n public start(options?: any): void {\r\n /**\r\n * We ensure options is at least an empty object\r\n * so that any start up steps can add to it asyncronously\r\n * (For example adding the version number from a DataService)\r\n */\r\n options || (options = {});\r\n this.runInitializationSteps(this, (shell: Shell, next: InitializationStep) => {\r\n this.runStartUpSteps(this, options, (shell1: Shell, options1: any, next1: StartUpSet) => {\r\n super.start(options);\r\n });\r\n });\r\n }\r\n\r\n public hasActiveRoute(): boolean {\r\n return this.shellState.activeRoute;\r\n }\r\n\r\n /**\r\n * On Shell start up an instance of each Applications router is instantiated\r\n * so that it can listen to application events or route in the current page\r\n */\r\n public onStart(): void {\r\n _.each(this.applications, meta => {\r\n const options: BaseAppRouterOptions = {\r\n appConstructor: meta.Application,\r\n shell: this,\r\n appOptions: {\r\n /* For some reason region is not optional in \r\n * Marionette.ApplicationOptions when it should be */\r\n region: '',\r\n shell: this,\r\n layoutService: this.layoutService,\r\n ...meta.Options\r\n }\r\n };\r\n\r\n new meta.Application.router(options);\r\n });\r\n\r\n /**\r\n * During each AppRouters initialization, it will have added each of it's \r\n * routes to the route lookup via addRouteLookup(). So we now call \r\n * bindRouteLookup so that the View's appLinks and the AppRouter's\r\n * update route can generate urls.\r\n */\r\n this.bindListeners();\r\n\r\n LocationUtils.StartHistory();\r\n }\r\n\r\n /**\r\n * these are based on node/express middleware: \r\n * https://gist.github.com/darrenscerri/5c3b3dcbe4d370435cfa\r\n * \r\n * Initialization steps should be used to do stuff like register \r\n * services with the instance manager, register analytics clients\r\n * and enrichers, add any data provider middle ware and register layouts\r\n */\r\n public addInitializationStep(fn: InitializationStep): Shell {\r\n this.runInitializationSteps = ((stack: any) => (ev: any, next: any) =>\r\n stack(ev, () => fn(ev, next)))(this.runInitializationSteps);\r\n\r\n return this;\r\n }\r\n\r\n private runInitializationSteps(shell: Shell, next: any): void {\r\n next(shell);\r\n }\r\n\r\n public addStartUpStep(fn: StartUpSet): Shell {\r\n this.runStartUpSteps = ((stack: any) => (ev: any, options: any, next: any) =>\r\n stack(ev, options, () => fn(ev, options, next)))(this.runStartUpSteps);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Start up steps should be used to inject options into the shell\r\n * or run any other code that we want to run just before the application starts\r\n */\r\n private runStartUpSteps(shell: Shell, options: any, next: any): void {\r\n next(shell, options);\r\n }\r\n\r\n public registerLayout(name: string, layout: typeof BaseLayoutView): Shell {\r\n this.layoutService.registerLayout(name, layout);\r\n return this;\r\n }\r\n\r\n private errorHandlers: ErrorHandler[];\r\n\r\n public registerErrorHandler<T extends BaseError>(\r\n errorType: Function & { prototype: T }, handler: (error: T) => void\r\n ): Shell {\r\n if (!errorType) {\r\n ErrorHelper.throw(new CoreError('An error must have a name in order to register a handler for it.'));\r\n }\r\n\r\n if (_.any(this.errorHandlers, eh => eh.errorType === errorType))\r\n ErrorHelper.throw(new CoreError(`An error handler for ${errorType.prototype.name} has already been defined.`));\r\n\r\n this.errorHandlers.push({ errorType, handler });\r\n\r\n return this;\r\n }\r\n\r\n public handleError(error: BaseError): void {\r\n const errorHandler = _.find(this.errorHandlers, eh => error instanceof eh.errorType);\r\n if (errorHandler && errorHandler.handler)\r\n errorHandler.handler(error);\r\n }\r\n\r\n public store: Store;\r\n public registerStore(store: Store): void {\r\n this.store = store;\r\n }\r\n\r\n public listenTo(object: any, eventMap: Backbone.EventMap): this;\r\n public listenTo(obj: string | Backbone.Events, events: string, callback: Function): this;\r\n public listenTo(...args: any): this {\r\n return ListenToRadio.call(this, args[0], args[1], args[2], super.listenTo);\r\n }\r\n}","export { AppLink, AppLinkOptions, AppLinkHash, AppLinkHelper, AppLinkUtility } from './AppLink';\r\nexport { BaseApplication as Application } from './BaseApplication';\r\nexport { BaseAppRouter as AppRouter, ExecuteRouteOptions } from './BaseAppRouter';\r\nexport { BaseBehavior as Behavior } from './BaseBehavior';\r\nexport { BaseCollection as Collection } from './BaseCollection';\r\nexport {\r\n BaseCollectionView as CollectionView,\r\n BaseCollectionViewOptions as CollectionViewOptions,\r\n BaseCollectionView as ComponentCollection,\r\n BaseCollectionViewOptions as ComponentCollectionOptions,\r\n} from './BaseCollectionView';\r\nexport { BaseError as Error, ErrorHelper, SilentError } from './BaseError';\r\nexport { BaseLayoutView as LayoutView, BaseLayoutViewOptions as LayoutViewOptions } from './BaseLayoutView';\r\nexport {\r\n BaseNestedModel as NestedModel,\r\n BaseNestedModelOptions as NestedModelOptions\r\n} from './BaseNestedModel';\r\nexport {\r\n BaseService as Service,\r\n BaseServiceOptions as ServiceOptions\r\n} from './BaseService';\r\nexport { BaseModel as Model } from './BaseModel';\r\nexport {\r\n BaseView as View,\r\n BaseViewOptions as ViewOptions ,\r\n BaseComponent as Component,\r\n BaseViewOptions as ComponentOptions,\r\n RequiredResourceDefinition, RequiredResourceHash\r\n} from './BaseView';\r\nexport { EventNames } from './EventNames';\r\nexport { LayoutService, LayoutOptions } from './LayoutService';\r\nexport { Middleware, MiddlewareFunction, MiddlewareNext } from './Middleware';\r\nexport { LocationUtils } from './LocationUtils';\r\nexport { Shell } from './Shell';\r\nexport * from './Types';\r\n","export enum DataServiceErrorType {\r\n Unknown, // ??\r\n BadRequest, // 400\r\n Unauthorized, // 401\r\n Forbidden, // 403\r\n NotFound, // 404\r\n InternalServer // 500\r\n}","export enum HttpStatus {\r\n Ok = 200,\r\n NoContent = 204,\r\n BadRequest = 400,\r\n Unauthorized = 401,\r\n Forbidden = 403,\r\n NotFound = 404,\r\n Conflict = 409,\r\n InternalServer = 500\r\n}","export enum HttpVerbs {\r\n GET = 'GET',\r\n POST = 'POST',\r\n PUT = 'PUT',\r\n DELETE = 'DELETE'\r\n}\r\n","import { BaseError } from 'libs/common/backbone/core/BaseError';\r\n\r\nexport class DevError extends BaseError {\r\n public get name(): string {\r\n return 'DevError';\r\n }\r\n}","import * as Core from './core';\r\n\r\nexport { Core };\r\n","import { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\n\r\nexport interface DataServiceError {\r\n type: DataServiceErrorType;\r\n message: string;\r\n code: number;\r\n}\r\n\r\nexport const DefaultDataServiceError: DataServiceError = {\r\n type: DataServiceErrorType.Unknown,\r\n message: '',\r\n code: 0\r\n};\r\n","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { AppLink } from 'libs/common/backbone/core/AppLink';\r\nimport { BaseView } from 'libs/common/backbone/core/BaseView';\r\nimport { BaseCollectionView } from 'libs/common/backbone/core/BaseCollectionView';\r\nimport { BaseCollection } from 'libs/common/backbone/core/BaseCollection';\r\nimport { BaseModel } from 'libs/common/backbone/core/BaseModel';\r\nimport { BaseComponent } from 'libs/common/backbone/core/BaseView';\r\nimport { ViewCtor } from 'libs/common/backbone/core/Types';\r\nimport { BaseService, BaseServiceOptions } from 'libs/common/backbone/core/BaseService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport enum AlertType {\r\n Success = 'success',\r\n Warning = 'warning',\r\n Fail = 'danger',\r\n Info = 'info'\r\n}\r\n\r\nexport enum DefaultAlertHeading {\r\n Success = 'Success! 🙌',\r\n Warning = 'Whoops...',\r\n Fail = 'Oops...',\r\n Info = 'FYI'\r\n}\r\n\r\nexport interface BaseAlert {\r\n id?: string;\r\n type: AlertType;\r\n heading: string;\r\n message?: string;\r\n appLink?: AppLink;\r\n appLinkText?: string;\r\n appLinkClassName?: string;\r\n timeout?: number;\r\n}\r\n\r\nexport interface DefaultAlertCallback {\r\n (message?: string, options?: ObjectHash): void;\r\n}\r\n\r\nexport interface BaseAlertOptions {\r\n useXHR: boolean;\r\n}\r\n\r\ntype View = BaseView | BaseCollectionView | BaseComponent;\r\n\r\ninterface AlertProps {\r\n alerts: BaseAlert[];\r\n removeAlert: (id: string) => void;\r\n}\r\n\r\nexport interface BaseAlertServiceOptions extends BaseServiceOptions {\r\n maxAlerts?: number;\r\n defaultSuccessAlert: BaseAlert;\r\n defaultErrorAlert: BaseAlert;\r\n alertViewCtor?: ViewCtor<View> | ((props: AlertProps) => React.ReactElement);\r\n}\r\n\r\nexport class BaseAlertService extends BaseService {\r\n private options: BaseAlertServiceOptions;\r\n private alertCollection: BaseCollection;\r\n\r\n public constructor(options: BaseAlertServiceOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.alertCollection = new BaseCollection();\r\n\r\n this.listenTo(CommonChannels.ALERT, 'remove:alert', this.removeAlert);\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.ALERT;\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n maxAlerts: 3\r\n };\r\n }\r\n\r\n /**\r\n * As it's not known which application is currently in scope,\r\n * we emit a render event to construct the alert collection view\r\n * if required. If the current application already has a alert\r\n * view rendered, it will simply be ignored.\r\n */\r\n private showAlerts(): void {\r\n const channel = Radio.channel(CommonChannels.ALERT);\r\n\r\n let options = { collection: this.alertCollection };\r\n\r\n if (this.options.alertViewCtor)\r\n options = _.extend({}, options, { ctor: this.options.alertViewCtor });\r\n\r\n channel.trigger('show:alert', options);\r\n }\r\n\r\n public removeAlert(id: string): void {\r\n this.alertCollection.remove(id);\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public createAlert(alertData: BaseAlert): void {\r\n if (this.alertCollection.length === this.options.maxAlerts)\r\n this.alertCollection.shift();\r\n\r\n if (!alertData.id)\r\n alertData = _.extend({}, alertData, { id: this.generateUniqueAlertId() });\r\n\r\n this.alertCollection.push(new BaseModel(alertData));\r\n\r\n this.showAlerts();\r\n }\r\n\r\n public clearAllAlerts(): void {\r\n this.alertCollection.reset(null);\r\n }\r\n\r\n public success(successAlert: string | BaseAlert | BaseAlertOptions): DefaultAlertCallback {\r\n // Construct alert object from string\r\n if (typeof successAlert === 'string')\r\n return _.bind(() =>\r\n this.createAlert(_.extend({}, this.options.defaultSuccessAlert, { message: successAlert })), this);\r\n\r\n // Construct alert object from our XHR response\r\n if ((successAlert as BaseAlertOptions).useXHR) {\r\n return _.bind((data: any, textStatus: any) =>\r\n this.createAlert(_.extend({}, this.options.defaultSuccessAlert, { message: textStatus })), this);\r\n }\r\n\r\n // Use alert passed as an argument \r\n return _.bind(() => this.createAlert(_.extend({}, this.options.defaultSuccessAlert, successAlert)), this);\r\n }\r\n\r\n public error(errorAlert: string | BaseAlert | BaseAlertOptions): DefaultAlertCallback {\r\n // Construct alert object from string\r\n if (typeof errorAlert === 'string')\r\n return _.bind(() =>\r\n this.createAlert(_.extend({}, this.options.defaultErrorAlert, { message: errorAlert })), this);\r\n\r\n // Construct alert object from our XHR response\r\n if ((errorAlert as BaseAlertOptions).useXHR) {\r\n return _.bind((error: DataServiceError) =>\r\n this.createAlert(_.extend({}, this.options.defaultErrorAlert, { message: error.message })), this);\r\n }\r\n\r\n // Use alert passed as an argument \r\n return _.bind(() => this.createAlert(_.extend({}, this.options.defaultErrorAlertIL_DEFAULT, errorAlert)), this);\r\n }\r\n\r\n private generateUniqueAlertId(): string {\r\n return _.uniqueId('alert_');\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Cursors, OffsetPagination, LegacyPagination } from 'libs/common/backbone/interfaces/Pagination';\r\nimport { DataProvider } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { DataServiceGetRequest, DataServiceCreateRequest, DataServiceUpdateRequest, DataServiceDeleteRequest } from 'libs/common/backbone/interfaces/DataServiceRequests';\r\nimport { DataCache } from 'libs/common/backbone/interfaces/DataCache';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\nimport { BaseDataServiceRequest, DataServiceCacheOptions, DataServiceRequestOptions, RequestSignatures, DataServiceClearAndGetRequest } from 'libs/common/backbone/interfaces/DataServiceRequests';\r\nimport { ChainableDataService } from 'libs/common/backbone/interfaces/ChainableDataService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseAlertService } from './BaseAlertService';\r\n\r\n\r\nexport interface BaseDataServiceOptions {\r\n dataProvider: DataProvider;\r\n cache: DataCache;\r\n bootstrapData?: ObjectHash;\r\n defaultErrorHandler?: (...args: any[]) => any;\r\n alertService: BaseAlertService;\r\n}\r\n\r\nexport class BaseDataService extends BaseService {\r\n private bootstrapData: ObjectHash;\r\n\r\n /**\r\n * This is what is used to actually fetch the data.\r\n * This can be an AjaxDataProvider, a SignalRDataProvider\r\n * or a LocalStorageDataProvider.\r\n */\r\n private dataProvider: DataProvider;\r\n\r\n /**\r\n * Store fetched data.\r\n */\r\n private cache: DataCache;\r\n\r\n /**\r\n * Maintain a hash of dataRequestSignatures to ensure\r\n * that we only bind listeners for the first data event\r\n * for a given eventprefix. \r\n */\r\n private dataRequestSignatures: RequestSignatures;\r\n\r\n /**\r\n * Default errorHandler attached as a callback to the errorEvent fired on the dataProvider's dataChannel.\r\n * Will not be bound if an alternative errorHandler is passed in as an option when making a data request\r\n * or if false is passed in as the errorHandler option.\r\n */\r\n private defaultErrorHandler: (...args: any[]) => any;\r\n\r\n /**\r\n * A reference to the consuming applications alert service.\r\n */\r\n protected alertService: BaseAlertService;\r\n\r\n /**\r\n * Specify the properties you want to be\r\n * taken from `options` and added to the context.\r\n */\r\n public props: string[];\r\n\r\n /**\r\n * The default properties that will be taken\r\n * from `options` and added to the context.\r\n */\r\n private get defaultProps(): string[] {\r\n return [ 'dataProvider', 'cache', 'bootstrapData', 'defaultErrorHandler', 'alertService' ];\r\n }\r\n\r\n constructor(options: BaseDataServiceOptions) {\r\n super(options);\r\n\r\n if (!_.result(this, 'name'))\r\n ErrorHelper.throw(new DevError(\r\n 'Must provide a name when extending BaseDataService'\r\n ));\r\n\r\n if (!_.result(this, 'channelName'))\r\n ErrorHelper.throw(new DevError(\r\n `Must provide a channelName for ${_.result(this, 'name')}`\r\n ));\r\n\r\n const props = [ ...this.defaultProps, ...(this.props || []) ];\r\n this.dataRequestSignatures = {};\r\n\r\n this.mergeOptions(options, props);\r\n }\r\n\r\n protected getCursors(cacheKey: string): Cursors {\r\n const cachedObj = this.cache.get(cacheKey);\r\n return cachedObj ? cachedObj.cursors : {};\r\n }\r\n\r\n protected clearCacheAndGet<T>(options: DataServiceClearAndGetRequest<T>): void {\r\n const {\r\n callback, errorCallback, eventPrefix\r\n } = options;\r\n\r\n const { syncEvent, errorEvent } = this.getEventNames(eventPrefix);\r\n\r\n const cachedObj = this.cache.get(eventPrefix);\r\n\r\n /**\r\n * If there is already an open request, simply bind the callback\r\n */\r\n if (cachedObj && cachedObj.openRequest) {\r\n\r\n const onSuccess = (data: any) => {\r\n if (_.isFunction(errorCallback))\r\n this.stopListening(this.getChannel(), errorEvent, errorCallback);\r\n\r\n _.isFunction(callback) && callback(data);\r\n };\r\n\r\n\r\n const onError = () => {\r\n if (_.isFunction(callback))\r\n this.stopListening(this.getChannel(), syncEvent, callback);\r\n\r\n _.isFunction(errorCallback) && errorCallback();\r\n };\r\n\r\n this.listenToOnce(this.getChannel(), syncEvent, onSuccess);\r\n this.listenToOnce(this.getChannel(), errorEvent, onError);\r\n\r\n return;\r\n }\r\n\r\n this.cache.remove(options.eventPrefix);\r\n this.get<T>(options);\r\n }\r\n\r\n protected get<T>(options: DataServiceGetRequest<T>): T {\r\n const {\r\n callback, errorCallback, eventPrefix, resource, formatData,\r\n expiryTime, successHandler, errorHandler, bootstrapName\r\n } = options;\r\n\r\n const {\r\n syncEvent, requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const timestamp = this.currentTimestamp();\r\n\r\n /**\r\n * If we have data bootstrapped in load it into the cache so \r\n * we don't fetch the first time\r\n */\r\n if (this.bootstrapData && this.bootstrapData[bootstrapName]) {\r\n this.cacheData(eventPrefix, this.bootstrapData[bootstrapName], formatData, { openRequest: false, timestamp });\r\n delete this.bootstrapData[bootstrapName];\r\n }\r\n\r\n const cachedObj = this.cache.get(eventPrefix);\r\n\r\n let cachedData: any;\r\n\r\n if (cachedObj)\r\n cachedData = cachedObj.data;\r\n\r\n const hasOpenRequest = cachedObj && cachedObj.openRequest;\r\n const isExpired = this.isExpired(eventPrefix, expiryTime);\r\n\r\n /**\r\n * If there is an open request for the current event prefix\r\n * bind a listener to fire the callback once we have our data.\r\n */\r\n if (hasOpenRequest) {\r\n const onSuccess = (data: any) => {\r\n if (_.isFunction(errorCallback))\r\n this.stopListening(this.getChannel(), errorEvent, errorCallback);\r\n\r\n _.isFunction(callback) && callback(data);\r\n };\r\n\r\n const onError = () => {\r\n if (_.isFunction(callback))\r\n this.stopListening(this.getChannel(), syncEvent, callback);\r\n\r\n _.isFunction(errorCallback) && errorCallback();\r\n };\r\n\r\n this.listenToOnce(channel, syncEvent, onSuccess);\r\n this.listenToOnce(channel, errorEvent, onError);\r\n }\r\n\r\n /**\r\n * If we have not yet requested the data, the data is stale, \r\n * or the data has been pushed out of our cache. We request the data.\r\n */\r\n if (!this.cache.has(eventPrefix) || isExpired) {\r\n\r\n channel.trigger(requestEvent);\r\n\r\n /**\r\n * Set up data listeners to trigger once the read call completes\r\n */\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n cacheOptions: { timestamp },\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n /**\r\n * We load the cache with the timestamp and the fact that \r\n * we have an open request, but with no data. This will let\r\n * other calls coming in while a request is open bind\r\n * to the sync event.\r\n */\r\n this.cacheData<T>(eventPrefix, null, null, { openRequest: true, timestamp });\r\n\r\n this.dataProvider.read<T>(resource, {\r\n channel: this.getTransportChannel(),\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n if (cachedData && _.isFunction(callback) && !isExpired)\r\n callback(cachedData);\r\n\r\n if (cachedData)\r\n return cachedData;\r\n }\r\n\r\n protected create<T>(options: DataServiceCreateRequest<T>): void {\r\n const {\r\n eventPrefix, resource, data, formatData, callback, errorCallback,\r\n invalidationKeys, successHandler, errorHandler\r\n } = options;\r\n\r\n const {\r\n requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(options.eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n\r\n channel.trigger(requestEvent);\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.create<T>(resource, data, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n protected update<T>(options: DataServiceUpdateRequest<T>): void {\r\n const {\r\n data, callback, errorCallback, resource, formatData, eventPrefix,\r\n invalidationKeys, errorHandler, successHandler\r\n } = options;\r\n\r\n const {\r\n requestEvent, successEvent, errorEvent\r\n } = this.getEventNames(options.eventPrefix);\r\n\r\n const channel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n\r\n channel.trigger(requestEvent);\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n formatData,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.update<T>(resource, data, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n protected delete(options: DataServiceDeleteRequest): void {\r\n const {\r\n eventPrefix, resource, callback, errorCallback, invalidationKeys, successHandler, errorHandler\r\n } = options;\r\n\r\n const { successEvent, errorEvent } = this.getEventNames(eventPrefix);\r\n\r\n const dataChannel = this.getTransportChannel();\r\n const cacheOptions: DataServiceCacheOptions = { noCache: true, clearCacheKey: true };\r\n\r\n this.listenToResponse({\r\n eventPrefix,\r\n invalidationKeys,\r\n callback,\r\n errorCallback,\r\n cacheOptions,\r\n successHandler,\r\n errorHandler\r\n });\r\n\r\n this.dataProvider.delete(resource, {\r\n channel: dataChannel,\r\n successEvent,\r\n errorEvent\r\n });\r\n }\r\n\r\n private listenToResponse<T>(options: DataServiceRequestOptions): void {\r\n const {\r\n eventPrefix, formatData,\r\n callback, errorCallback,\r\n successHandler, errorHandler,\r\n invalidationKeys, cacheOptions = {}\r\n } = options;\r\n\r\n const {\r\n syncEvent, requestEvent,\r\n successEvent, errorEvent,\r\n successAlertEvent, errorAlertEvent\r\n } = this.getEventNames(eventPrefix);\r\n\r\n const appChannel = this.getChannel();\r\n const dataChannel = this.getTransportChannel();\r\n const alertChannel = this.getAlertChannel();\r\n\r\n if (_.isFunction(callback))\r\n this.listenToOnce(appChannel, syncEvent, callback);\r\n\r\n if (_.isFunction(errorCallback))\r\n this.listenToOnce(appChannel, errorEvent, errorCallback);\r\n\r\n /**\r\n * Bind Alert handlers to the dataChannel\r\n */\r\n\r\n this.stopListening(alertChannel, successAlertEvent);\r\n this.stopListening(alertChannel, errorAlertEvent);\r\n\r\n if (_.isFunction(successHandler))\r\n this.listenToOnce(alertChannel, successAlertEvent, successHandler);\r\n\r\n if (_.isFunction(errorHandler))\r\n this.listenToOnce(alertChannel, errorAlertEvent, errorHandler);\r\n\r\n /**\r\n * AlertService.error({ useXHR: true }) will be bound as the errorHandler unless an\r\n * alternative error handler was passed in or if false is passed in.\r\n */\r\n if (!_.isFunction(errorHandler) && errorHandler !== false && _.isFunction(this.defaultErrorHandler))\r\n this.listenToOnce(alertChannel, errorAlertEvent, this.defaultErrorHandler);\r\n\r\n /**\r\n * Check whether we've already bound the request signature for the \r\n * current data event. We only need to setup the listeners for the first\r\n * request for a given eventprent.\r\n */\r\n if (this.hasRequestSignature(eventPrefix))\r\n return;\r\n\r\n /**\r\n * Subsequent data event requests that match the same\r\n * signature will only have the app-level events bound and will listen\r\n * to the transport channel event that was previously bound.\r\n */\r\n this.setRequestSignature(eventPrefix);\r\n\r\n /**\r\n * All request methods currently utilise this callback once the DataProvider\r\n * triggers the successEvent.\r\n */\r\n const onSuccess = (data: any, ...args: any[]) => {\r\n /**\r\n * Unbind errorCallback\r\n */\r\n this.stopListening(appChannel, errorEvent, errorCallback);\r\n\r\n alertChannel.trigger(successAlertEvent, data, ...args);\r\n\r\n const formattedData = cacheOptions.noCache\r\n ? this.formatData<T>(data, formatData)\r\n : this.cacheData<T>(eventPrefix, data, formatData);\r\n\r\n if (cacheOptions.clearCacheKey)\r\n this.cache.remove(eventPrefix);\r\n\r\n /**\r\n * Let everyone know their pie is ready.\r\n */\r\n appChannel.trigger(syncEvent, formattedData);\r\n\r\n if (invalidationKeys && invalidationKeys.length)\r\n this.cache.invalidate(invalidationKeys, (cacheKey: string) => appChannel.trigger(`${cacheKey}:invalidate`));\r\n };\r\n\r\n /**\r\n * All request methods will utilise this callback once the DataProvider\r\n * triggers the errorEvent.\r\n */\r\n const onError = (...args: any[]) => {\r\n /**\r\n * Unbind success callback\r\n */\r\n this.stopListening(appChannel, syncEvent, callback);\r\n\r\n const parsedError = this.dataProvider.parseError(...args);\r\n alertChannel.trigger(errorAlertEvent, parsedError);\r\n appChannel.trigger(errorEvent, parsedError);\r\n\r\n if (cacheOptions.noCache)\r\n return;\r\n\r\n /**\r\n * Cache the null response so that openRequest\r\n * will be updated from true to false.\r\n */\r\n this.cacheData<T>(eventPrefix, null, null);\r\n };\r\n\r\n /**\r\n * Listen on data channel for responses from our\r\n * data provider.\r\n */\r\n this.listenTo(dataChannel, successEvent, onSuccess);\r\n this.listenTo(dataChannel, errorEvent, onError);\r\n }\r\n\r\n private cacheData<T>(cacheKey: string, data: any,\r\n formatData: (data: any) => any, options: DataServiceCacheOptions = {}): T {\r\n\r\n let { openRequest = false, timestamp } = options;\r\n\r\n if (!timestamp)\r\n timestamp = this.currentTimestamp();\r\n\r\n const cursors = this.processPagination(data);\r\n\r\n /**\r\n * Format and cache out data.\r\n */\r\n const formattedData = this.formatData<T>(data, formatData);\r\n\r\n this.cache.set(cacheKey, {\r\n data: formattedData,\r\n timestamp,\r\n cursors,\r\n openRequest\r\n });\r\n\r\n return formattedData;\r\n }\r\n\r\n private processPagination(data: ObjectHash): Cursors {\r\n if (!data) return;\r\n\r\n const { pagination } = data;\r\n\r\n if (!pagination)\r\n return;\r\n\r\n if (pagination.cursors)\r\n return pagination.cursors;\r\n\r\n if (!_.isUndefined(pagination.offset) && !_.isUndefined(pagination.pageSize))\r\n return this.convertOffsetPaginationToCursors(pagination);\r\n\r\n if (pagination.page)\r\n return this.convertLegacyPaginationToCursors(pagination);\r\n }\r\n\r\n private formatData<T>(data: any, formatData: (data: any) => any): T {\r\n return _.isFunction(formatData) ? formatData(data) : data;\r\n }\r\n\r\n /**\r\n * Used to syncronously execute dataService operations.\r\n * This will mainly be used if we need to update a model\r\n * or collection after an api call.\r\n */\r\n protected chain(): ChainableDataService {\r\n /**\r\n * Used as a FIFO buffer with pop and shift.\r\n */\r\n const callbacks: Function[] = [];\r\n\r\n const safeRun = (callback: Function, data?: any) => {\r\n if (_.isFunction(callback))\r\n callback(data);\r\n };\r\n\r\n const base = (options: BaseDataServiceRequest, operation: string) => {\r\n\r\n const callback = () => {\r\n /**\r\n * Store reference to the original callback\r\n */\r\n const oldCallback = options.callback;\r\n\r\n /**\r\n * Replace the original callback with a callback\r\n * that calls both the orignal callback and the \r\n * next operation in the stack.\r\n */\r\n options.callback = (data: any) => {\r\n safeRun(oldCallback, data);\r\n safeRun(callbacks.shift());\r\n };\r\n\r\n /**\r\n * Run out operation with our new options\r\n */\r\n (this as any)[operation](options);\r\n };\r\n\r\n /**\r\n * Push operation into the FIFO stack\r\n */\r\n callbacks.push(callback);\r\n\r\n return chainable;\r\n };\r\n\r\n /**\r\n * We return this object at the end of each function\r\n * in order to enable continuous chaining\r\n */\r\n const chainable = {\r\n func(callback: any): ChainableDataService {\r\n callbacks.push(() => {\r\n callback(callbacks.shift() || (() => {}));\r\n });\r\n return chainable;\r\n },\r\n get<T>(options: DataServiceGetRequest<T>): ChainableDataService {\r\n return base(options, 'get');\r\n },\r\n create<T>(options: DataServiceCreateRequest<T>): ChainableDataService {\r\n return base(options, 'create');\r\n },\r\n update<T>(options: DataServiceUpdateRequest<T>): ChainableDataService {\r\n return base(options, 'update');\r\n },\r\n delete(options: DataServiceDeleteRequest): ChainableDataService {\r\n return base(options, 'delete');\r\n },\r\n\r\n /**\r\n * This should be the last thing called when using chain\r\n * and will simply kick off the first function in the FIFO buffer\r\n */\r\n run(): void {\r\n safeRun(callbacks.shift());\r\n }\r\n };\r\n\r\n return chainable;\r\n }\r\n\r\n protected invalidateCache(invalidationKeys?: string[]): void {\r\n if (!invalidationKeys || !invalidationKeys.length)\r\n return;\r\n\r\n this.cache.invalidate(invalidationKeys);\r\n }\r\n\r\n private currentTimestamp(): number {\r\n return new Date().valueOf();\r\n }\r\n\r\n private isExpired(key: string, expiryTime: number): boolean {\r\n if (!expiryTime)\r\n return false;\r\n\r\n const cachedObj = this.cache.get(key);\r\n\r\n if (!cachedObj || !cachedObj.timestamp) return true;\r\n\r\n const millisecondMultiplier = 1000;\r\n\r\n const lastTime = cachedObj.timestamp;\r\n const expiryTimeMilliseconds = expiryTime * millisecondMultiplier;\r\n\r\n return lastTime < (this.currentTimestamp() - expiryTimeMilliseconds);\r\n }\r\n\r\n private getEventNames(eventPrefix: string): {[key: string]: string} {\r\n return {\r\n syncEvent: `${eventPrefix}:sync`,\r\n requestEvent: `${eventPrefix}:request`,\r\n successEvent: `${eventPrefix}:success`,\r\n errorEvent: `${eventPrefix}:error`,\r\n successAlertEvent: `${eventPrefix}:success:alert`,\r\n errorAlertEvent: `${eventPrefix}:error:alert`,\r\n };\r\n }\r\n\r\n private getTransportChannel(): Radio.Channel {\r\n return Radio.channel(`${this.channelName}:transport`);\r\n }\r\n\r\n private getAlertChannel(): Radio.Channel {\r\n return Radio.channel(`${this.channelName}:alert`);\r\n }\r\n\r\n private setRequestSignature(signature: string): void {\r\n this.dataRequestSignatures[signature] = signature;\r\n }\r\n\r\n private hasRequestSignature(signature: string): boolean {\r\n return !!this.dataRequestSignatures[signature];\r\n }\r\n\r\n private convertOffsetPaginationToCursors(pagination: OffsetPagination): Cursors {\r\n const { offset, pageSize, totalItems } = pagination;\r\n\r\n const nextPage = totalItems > 0 && offset < totalItems && offset + pageSize;\r\n const prevPage = totalItems > 0 && offset > 0 && Math.max(offset - pageSize, 0);\r\n\r\n let cursors: ObjectHash = {};\r\n\r\n if (nextPage && nextPage < totalItems)\r\n cursors.next = nextPage.toString();\r\n\r\n if (_.isNumber(prevPage))\r\n cursors.previous = prevPage.toString();\r\n\r\n if (_.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n }\r\n\r\n private convertLegacyPaginationToCursors(pagination: LegacyPagination): Cursors {\r\n const { page, totalPages } = pagination;\r\n\r\n const nextPage = _.isNumber(page) && page > 0 && page < totalPages && page + 1;\r\n const prevPage = _.isNumber(page) && page > 1 && page - 1;\r\n\r\n let cursors: ObjectHash = {};\r\n\r\n if (nextPage && nextPage <= totalPages)\r\n cursors.next = nextPage.toString();\r\n\r\n if (prevPage)\r\n cursors.previous = prevPage.toString();\r\n\r\n if (_.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n }\r\n}\r\n","import { ObjectHash } from 'backbone';\r\n\r\nclass StaticEnvironmentVariables {\r\n private static instance: StaticEnvironmentVariables;\r\n private variables: ObjectHash;\r\n\r\n constructor() {\r\n this.variables = {};\r\n }\r\n\r\n public static get Instance(): StaticEnvironmentVariables {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return 'EnvironmentVariables';\r\n }\r\n\r\n public get isDevelopment(): boolean {\r\n return this.variables.isDevelopment;\r\n }\r\n\r\n public get(name: string): any {\r\n return this.variables[name];\r\n }\r\n\r\n public setUpVariables(variables: ObjectHash): void {\r\n this.variables = variables;\r\n }\r\n}\r\n\r\nexport const EnvironmentVariables = StaticEnvironmentVariables.Instance;","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataServiceOptions, BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { BaseAlertService } from './BaseAlertService';\r\n\r\ninterface DataServiceConstructor {\r\n new (options: BaseDataServiceOptions): BaseDataService;\r\n}\r\n\r\ninterface DataServiceInstanceOptions {\r\n cache: string;\r\n dataProvider: string;\r\n bootstrapData?: ObjectHash;\r\n defaultErrorHandler?: (...args: any[]) => any;\r\n alertService: BaseAlertService;\r\n}\r\n\r\nclass StaticInstanceManager extends BaseService {\r\n private static instance: StaticInstanceManager;\r\n\r\n private constructors: {[name: string]: () => Marionette.Object};\r\n private destructors: {[name: string]: () => void};\r\n private instances: {[name: string]: any};\r\n private singletonInstances: {[name: string]: any};\r\n private referenceCounts: {[name: string]: number};\r\n\r\n private constructor() {\r\n super();\r\n\r\n this.constructors = {};\r\n this.destructors = {};\r\n this.instances = {};\r\n this.singletonInstances = {};\r\n this.referenceCounts = {};\r\n }\r\n\r\n public get name(): string {\r\n return 'InstanceManager';\r\n }\r\n\r\n public static get Instance(): StaticInstanceManager {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public registerDataService(\r\n ctor: DataServiceConstructor, options: DataServiceInstanceOptions\r\n ): this {\r\n this.validateConstructor(ctor);\r\n\r\n const name = ctor.prototype.name;\r\n\r\n this.referenceCounts[name] = 0;\r\n this.constructors[name] = () => new ctor({\r\n dataProvider: this.getInstance(options.dataProvider),\r\n cache: this.getInstance(options.cache),\r\n bootstrapData: options.bootstrapData,\r\n defaultErrorHandler: options.defaultErrorHandler,\r\n alertService: options.alertService\r\n });\r\n this.destructors[name] = () => {\r\n if (this.instances[name])\r\n this.instances[name].destroy();\r\n else\r\n ErrorHelper.throw(new DevError(`Trying to destroy a ${name} instance that has already been destroyed`));\r\n\r\n this.releaseInstance(options.dataProvider);\r\n this.releaseInstance(options.cache);\r\n };\r\n\r\n return this;\r\n }\r\n\r\n public registerInstance<TInstanceOptions>(ctor: new(...args: any[]) => any, options?: TInstanceOptions): this {\r\n this.validateConstructor(ctor);\r\n\r\n const name = ctor.prototype.name;\r\n\r\n this.referenceCounts[name] = 0;\r\n this.constructors[name] = () => new ctor(options);\r\n this.destructors[name] = () => _.isFunction(this.instances[name].destroy) && this.instances[name].destroy();\r\n\r\n return this;\r\n }\r\n\r\n public registerSingleton(instance: any): this {\r\n const name = instance.name;\r\n\r\n this.singletonInstances[name] = instance;\r\n\r\n return this;\r\n }\r\n\r\n public getInstance<T>(name: string, owner?: Backbone.Events): T {\r\n if (this.singletonInstances[name])\r\n return this.singletonInstances[name];\r\n\r\n if (!this.constructors[name])\r\n ErrorHelper.throw(new DevError(`${name} was not registered with ${this.name}`));\r\n\r\n this.referenceCounts[name]++;\r\n\r\n if (owner)\r\n this.listenTo(owner, 'destroy', () => this.releaseInstance(name));\r\n\r\n if (!this.instances[name]) {\r\n this.instances[name] = this.constructors[name]();\r\n }\r\n\r\n return this.instances[name];\r\n }\r\n\r\n public releaseInstance(name: string): this {\r\n if (!this.instances[name])\r\n return;\r\n\r\n /**\r\n * In scenarios where an application redirects to another application\r\n * within one execution cycle, an instance may be initialized, used to fetch\r\n * data and disposed of, before the instance is requested again, which will leave\r\n * a hanging open fetch request.\r\n *\r\n * By wrapping the below in a setTimeout we ensure any instance clean up\r\n * will always happen at the end of any execution cycle.\r\n */\r\n window.setTimeout(() => {\r\n this.referenceCounts[name]--;\r\n\r\n if (this.referenceCounts[name] < 1) {\r\n this.destructors[name]();\r\n delete this.instances[name];\r\n }\r\n }, 0);\r\n\r\n return this;\r\n }\r\n\r\n private validateConstructor(ctor: new(...args: any[]) => any): void {\r\n const name = ctor.prototype.name;\r\n\r\n if (!name)\r\n ErrorHelper.throw(new DevError(`Classes registered with ${this.name} must have a unique name property.`));\r\n\r\n if (this.constructors[name]) {\r\n ErrorHelper.throw(\r\n new DevError(`A class with the name: ${name} has already been registered with ${this.name}`)\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const InstanceManager = StaticInstanceManager.Instance;","import * as Polyglot from 'node-polyglot';\r\nimport * as _ from 'underscore';\r\nimport * as DOMPurify from 'dompurify';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\r\n\r\ninterface LanguageInterpolationOptions {\r\n smartCount?: number;\r\n [propName: string]: any;\r\n}\r\n\r\ninterface LanguageConfig {\r\n locale: string;\r\n phrases: ObjectHash;\r\n}\r\n\r\nclass StaticLanguageService extends BaseService {\r\n private static instance: StaticLanguageService;\r\n private polyglot: Polyglot;\r\n\r\n private cache: ObjectHash;\r\n\r\n public static get Instance(): StaticLanguageService {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public get name(): string {\r\n return CommonServices.LANGUAGE;\r\n }\r\n\r\n public setConfig(config: LanguageConfig): void {\r\n this.polyglot = new Polyglot({\r\n locale: config.locale,\r\n // TODO: Loading from rootElement is a temp fix. Figure out why this is broke. \r\n phrases: config.phrases.rootElement || config.phrases\r\n });\r\n\r\n this.cache = {};\r\n }\r\n\r\n public getPhrase(namespace: string, phraseKey: string, options?: LanguageInterpolationOptions): string {\r\n const fullKey = `${namespace}.${phraseKey}`;\r\n\r\n /**\r\n * Error handling\r\n */\r\n if (!this.polyglot)\r\n ErrorHelper.throw(new DevError('LanguageService config must be set.'));\r\n\r\n if (!this.polyglot.has(fullKey)) {\r\n if (!EnvironmentVariables.isDevelopment) {\r\n const trackJs = (window as any).trackJs;\r\n\r\n // Log language service errors to track js in production without throwing an execution-breaking error\r\n if (trackJs)\r\n trackJs.console.error(`No phrase set for ${fullKey} in language config`);\r\n\r\n return '';\r\n }\r\n\r\n ErrorHelper.throw(new DevError(`No phrase set for ${fullKey} in language config.`));\r\n }\r\n\r\n if (!options || _.isEmpty(options)) {\r\n const cachedPhrase = this.cache[fullKey];\r\n\r\n if (cachedPhrase)\r\n return cachedPhrase;\r\n\r\n const phrase = this.polyglot.t(fullKey);\r\n this.cache[fullKey] = phrase;\r\n return phrase;\r\n }\r\n\r\n const interpolationOptions = _.omit(options, 'smartCount');\r\n\r\n let sanitizedInterpolationOptions: ObjectHash = {};\r\n for (let key in interpolationOptions) {\r\n sanitizedInterpolationOptions[key] = DOMPurify.sanitize(interpolationOptions[key]);\r\n }\r\n\r\n if (_.isNumber(options.smartCount))\r\n sanitizedInterpolationOptions.smart_count = options.smartCount;\r\n\r\n const cacheKey = `${fullKey}:${_.values({ ...sanitizedInterpolationOptions }).join(':')}`;\r\n const cachedText = this.cache[cacheKey];\r\n\r\n if (cachedText)\r\n return cachedText;\r\n\r\n const text = this.polyglot.t(fullKey, sanitizedInterpolationOptions);\r\n this.cache[cacheKey] = text;\r\n return text;\r\n }\r\n\r\n public encloseNamespace(namespace: string): Function {\r\n return (phraseKey: string, options?: LanguageInterpolationOptions): string => {\r\n return this.getPhrase(namespace, phraseKey, options);\r\n };\r\n }\r\n}\r\n\r\nexport const LanguageService = StaticLanguageService.Instance;","import * as _ from 'underscore';\r\n\r\nimport { ObjectHash } from 'backbone';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DataCache } from 'libs/common/backbone/interfaces/DataCache';\r\nimport { Caches } from 'libs/common/backbone/constants/Caches';\r\nimport { BaseService } from 'libs/common/backbone/core/BaseService';\r\nimport { ErrorHelper } from 'libs/common/backbone/core/BaseError';\r\n\r\ninterface FifoMemoryCacheOptions {\r\n size: number;\r\n}\r\n\r\nexport class FifoMemoryCache extends BaseService implements DataCache {\r\n private size: number;\r\n private cache: ObjectHash;\r\n private cachedkeys: string[];\r\n\r\n constructor(options: FifoMemoryCacheOptions) {\r\n super();\r\n\r\n this.size = options.size;\r\n this.cache = {};\r\n this.cachedkeys = [];\r\n }\r\n\r\n public get name(): string {\r\n return Caches.Fifo;\r\n }\r\n\r\n private removeCacheKey(cacheKey: string): void {\r\n this.cachedkeys = _.without(this.cachedkeys, cacheKey);\r\n }\r\n\r\n public has(cacheKey: string): boolean {\r\n return !!this.cache[cacheKey];\r\n }\r\n\r\n public get(cacheKey: string): any {\r\n return this.cache[cacheKey];\r\n }\r\n\r\n public set(cacheKey: string, value: any): void {\r\n if (!cacheKey || !value) {\r\n ErrorHelper.throw(new DevError('Must provide a cache key and a value to cache in FifoMemoryCache.'));\r\n }\r\n\r\n /**\r\n * Calling set on an existing key should move it to the front\r\n * of the buffer again.\r\n */\r\n if (this.has(cacheKey))\r\n this.removeCacheKey(cacheKey);\r\n\r\n this.cachedkeys.push(cacheKey);\r\n\r\n this.cache[cacheKey] = value;\r\n\r\n if (this.cachedkeys.length > this.size)\r\n delete this.cache[this.cachedkeys.shift()];\r\n }\r\n\r\n public getOrSet(cacheKey: string, getter: () => any): any {\r\n if (this.has(cacheKey))\r\n return this.get(cacheKey);\r\n\r\n const value = getter();\r\n this.set(cacheKey, value);\r\n return value;\r\n }\r\n\r\n public remove(cacheKey: string): boolean {\r\n if (!this.has(cacheKey))\r\n return false;\r\n\r\n delete this.cache[cacheKey];\r\n this.removeCacheKey(cacheKey);\r\n return true;\r\n }\r\n\r\n public invalidate(cacheKeys: string[], callback?: (cacheKey: string) => void): void {\r\n // Create a an object hash of all the cached keys\r\n const keyHash: ObjectHash = _.object(this.cachedkeys, this.cachedkeys);\r\n let invalidationSet: string[] = [];\r\n\r\n _.each(cacheKeys, (ck: string) => {\r\n // Direct match on the key\r\n if (keyHash[ck])\r\n invalidationSet.push(ck);\r\n\r\n // Find all matches against the given cache key regex\r\n const regex = new RegExp(ck, 'i');\r\n const keysToInvalidate = _.filter(keyHash, (k: string) => regex.test(k));\r\n\r\n // Merge regex matches with direct matches\r\n invalidationSet.push(...keysToInvalidate);\r\n });\r\n\r\n if (!invalidationSet.length)\r\n return;\r\n\r\n invalidationSet = _.uniq(invalidationSet);\r\n\r\n // Delete all matches and remove cache keys\r\n _.each(invalidationSet, ik => {\r\n delete this.cache[ik];\r\n\r\n if (_.isFunction(callback))\r\n callback(ik);\r\n });\r\n\r\n this.cachedkeys = _.without(this.cachedkeys, ...invalidationSet);\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport * as Marionette from 'backbone.marionette';\r\n\r\nimport { DataServiceError, DefaultDataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\nimport { DataProvider, DataProviderResponseOptions } from 'libs/common/backbone/interfaces/DataProvider';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\r\nimport { DataServiceErrorHelper } from 'libs/common/backbone/utils/DataServiceErrorHelper';\r\n\r\ninterface MiddlewareCallback {\r\n (data: any, textStatus: any, jqXHR: any): any;\r\n}\r\n\r\ninterface MiddlewareHash {\r\n [name: string]: MiddlewareCallback;\r\n}\r\n\r\ninterface AjaxDataProviderOptions {\r\n dataServiceErrorMessageMappings: ObjectHash;\r\n defaultErrorMessageKey: string;\r\n}\r\n\r\nexport class AjaxDataProvider extends Marionette.Object implements DataProvider {\r\n private successMiddleware: MiddlewareHash;\r\n private errorMiddleware: MiddlewareHash;\r\n private dataServiceErrorMessageMappings: ObjectHash;\r\n private defaultErrorMessageKey: string;\r\n\r\n constructor(options?: AjaxDataProviderOptions) {\r\n super(options);\r\n\r\n $.ajaxSetup({\r\n cache: false,\r\n contentType: 'application/json; charset=utf-8'\r\n });\r\n\r\n this.successMiddleware = {};\r\n this.errorMiddleware = {};\r\n this.dataServiceErrorMessageMappings = options.dataServiceErrorMessageMappings;\r\n this.defaultErrorMessageKey = options.defaultErrorMessageKey;\r\n }\r\n\r\n public get name(): string {\r\n return DataProviders.Ajax;\r\n }\r\n\r\n private parseUrl(url: string): HTMLAnchorElement {\r\n const a = document.createElement('a');\r\n a.href = url;\r\n\r\n if (a.host === '') a.href = a.href;\r\n\r\n return a;\r\n }\r\n\r\n private makeHttps(url: string): string {\r\n const fullUrl = this.parseUrl(url);\r\n\r\n if (fullUrl.protocol === 'http:') fullUrl.protocol = 'https:';\r\n\r\n return fullUrl.href;\r\n }\r\n\r\n private base<T>(\r\n resource: string,\r\n data: T,\r\n method: string,\r\n opts: ObjectHash = {}\r\n ): JQuery.Promise<T> {\r\n method || (method = HttpVerbs.GET);\r\n\r\n const o = _.defaults(opts, { forceHttps: false });\r\n\r\n const options: ObjectHash = {\r\n url: resource,\r\n method: method,\r\n type: method\r\n };\r\n\r\n if (data) {\r\n options.data =\r\n method === HttpVerbs.POST || method === HttpVerbs.PUT\r\n ? JSON.stringify(data)\r\n : data;\r\n }\r\n\r\n if (o.forceHttps) options.url = this.makeHttps(options.url);\r\n\r\n if (o.traditional) options.traditional = o.traditional;\r\n\r\n /** \r\n * jQuery.jqXHR does inherit from JQuery.Promise, but the typings in \r\n * definitelytyped's jQuery are so messed up that casting to any \r\n * is just easier. \r\n * \r\n * I mean there is a JQuery.Promise, JQuery.Promise1, JQuery.Promise2 & JQuery.Promise. Jesus... 🙏\r\n */\r\n const promise = $.ajax(options);\r\n\r\n if (_.keys(this.successMiddleware).length)\r\n promise.done(_.values(this.successMiddleware));\r\n\r\n if (_.keys(this.errorMiddleware).length)\r\n promise.fail(_.values(this.errorMiddleware));\r\n\r\n return promise as any;\r\n }\r\n\r\n public create<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, obj, HttpVerbs.POST)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public read<T>(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, null, HttpVerbs.GET)\r\n .done((data: any, textStatus: any, jqXHR: any) => {\r\n channel.trigger(successEvent, data, textStatus, jqXHR);\r\n })\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) => {\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown);\r\n });\r\n }\r\n\r\n public update<T>(resource: string, obj: T, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base<T>(resource, obj, HttpVerbs.PUT)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public delete(resource: string, options: DataProviderResponseOptions): void {\r\n const { channel, successEvent, errorEvent } = options;\r\n\r\n this.base(resource, null, HttpVerbs.DELETE)\r\n .done((data: any, textStatus: any, jqXHR: any) =>\r\n channel.trigger(successEvent, data, textStatus, jqXHR))\r\n .fail((jqXHR: any, textStatus: any, errorThrown: any) =>\r\n channel.trigger(errorEvent, jqXHR, textStatus, errorThrown));\r\n }\r\n\r\n public useMiddleware(name: string, callback: MiddlewareCallback): void {\r\n if (this.successMiddleware[name])\r\n return;\r\n\r\n this.successMiddleware[name] = callback;\r\n }\r\n\r\n public useErrorMiddleware(name: string, callback: MiddlewareCallback): void {\r\n if (this.errorMiddleware[name])\r\n return;\r\n\r\n this.errorMiddleware[name] = callback;\r\n }\r\n\r\n public parseError(jqXHR: JQuery.jqXHR, textStatus: string, errorThrown: any): DataServiceError {\r\n const response = jqXHR.responseJSON;\r\n\r\n const error = DefaultDataServiceError;\r\n\r\n error.code = jqXHR.status;\r\n\r\n error.message = DataServiceErrorHelper.parseErrorMessage(\r\n this.dataServiceErrorMessageMappings, this.defaultErrorMessageKey, response);\r\n\r\n switch (jqXHR.status) {\r\n case 400:\r\n error.type = DataServiceErrorType.BadRequest;\r\n break;\r\n case 401:\r\n error.type = DataServiceErrorType.Unauthorized;\r\n break;\r\n case 403:\r\n error.type = DataServiceErrorType.Forbidden;\r\n break;\r\n case 404:\r\n error.type = DataServiceErrorType.NotFound;\r\n break;\r\n case 500:\r\n error.type = DataServiceErrorType.InternalServer;\r\n break;\r\n }\r\n\r\n return error;\r\n }\r\n}","/**\r\n * Not really for concurrency 😂\r\n * But useful in circumstances where we need to manually wait for\r\n * a sequence of callbacks or other resources to execute and don't \r\n * want the overhead of promises.\r\n */\r\nexport class ConcurrencyHelper {\r\n private value: number;\r\n\r\n constructor(initialValue: number) {\r\n this.value = initialValue;\r\n }\r\n\r\n public increment(): void {\r\n this.value += 1;\r\n }\r\n\r\n public decrement(): void {\r\n this.value -= 1;\r\n }\r\n\r\n public getValue(): number {\r\n return this.value;\r\n }\r\n}\r\n","import { ObjectHash } from 'backbone';\r\n\r\ninterface ApiErrorResponse {\r\n errorCode: string;\r\n errorSubCode: string;\r\n requestUrl: string;\r\n detailedMessage: string;\r\n requestId: string;\r\n data: ObjectHash;\r\n}\r\n\r\nexport const DataServiceErrorHelper: ObjectHash = {\r\n parseErrorMessage(errorMessageMappings: ObjectHash, defaultErrorCode: string, error: ApiErrorResponse): string {\r\n if (!error || !error.errorCode)\r\n return errorMessageMappings[defaultErrorCode];\r\n\r\n let errorMessageKey = `${error.errorCode}`;\r\n\r\n if (error.errorSubCode)\r\n errorMessageKey += `.${error.errorSubCode}`;\r\n\r\n return errorMessageMappings[errorMessageKey] || errorMessageMappings[defaultErrorCode];\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nexport const FunctionHelper = {\r\n debounce<T extends Function>(fn: T, wait: number, immediate?: boolean): T & _.Cancelable {\r\n return _.debounce<T>(fn, wait, immediate);\r\n },\r\n\r\n throttle<T extends Function>(fn: T, wait: number, options?: _.ThrottleSettings): T & _.Cancelable {\r\n return _.throttle<T>(fn, wait, options);\r\n },\r\n\r\n isFunction(object: any): object is Function {\r\n return _.isFunction(object);\r\n },\r\n\r\n useIdentity<T>(): (...args: any[]) => T {\r\n return _.identity;\r\n },\r\n\r\n memoize<T = Function>(fn: T, hashFn?: (...args: any[]) => string): T {\r\n return _.memoize(fn, hashFn);\r\n }\r\n};","import { ObjectHash } from 'backbone';\r\nimport * as _ from 'underscore';\r\n\r\ninterface FilterParams {\r\n limit?: number;\r\n cursor?: string;\r\n before?: string; // dateCreated upper limit\r\n}\r\n\r\nexport const UrlHelper = {\r\n urlBuilder(base: string, queryStringObj: ObjectHash): string {\r\n const qsValues = _.map(queryStringObj, (value, key) => {\r\n if (key && Array.isArray(value)) {\r\n const params = value.map(v => `${key}=${encodeURIComponent(v)}`);\r\n return params.join('&');\r\n }\r\n\r\n if (key && typeof value !== 'undefined')\r\n return `${key}=${encodeURIComponent(value)}`;\r\n\r\n return '';\r\n });\r\n\r\n const qs = _.reduce(qsValues, (memo, value) => {\r\n if (!value)\r\n return memo;\r\n\r\n if (!memo)\r\n return value;\r\n\r\n return `${memo}&${value}`;\r\n });\r\n\r\n if (qs)\r\n return `${base}?${qs}`;\r\n\r\n return base;\r\n },\r\n\r\n buildFilter(params: FilterParams): string {\r\n let filters: string[] = [];\r\n\r\n if (params.limit)\r\n filters.push(`limit:${params.limit}`);\r\n\r\n if (params.cursor)\r\n filters.push(`page:${params.cursor}`);\r\n\r\n if (params.before)\r\n filters.push(`dateCreated:...${params.before}`);\r\n\r\n if (!filters.length)\r\n return;\r\n\r\n return filters.join(',');\r\n },\r\n\r\n makeHttps(url: string): string {\r\n if (!_.isString(url))\r\n return url;\r\n\r\n if (url.indexOf('http://') === -1) return url;\r\n\r\n url = url.replace('http://', 'https://');\r\n\r\n return url;\r\n },\r\n\r\n safeUrlConcat(baseUrl: string, path: string): string {\r\n if (!baseUrl) return;\r\n\r\n let url = baseUrl;\r\n\r\n if (!baseUrl.endsWith('/'))\r\n url += '/';\r\n\r\n if (!path) return url;\r\n\r\n url += path.startsWith('/')\r\n ? path.slice(1)\r\n : path;\r\n\r\n return url;\r\n }\r\n};","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\n\r\nimport { BaseApplication } from 'libs/common/backbone/core/BaseApplication';\r\nimport { LayoutOptions } from 'libs/common/backbone/core/LayoutService';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from './ReactLayoutView';\r\n\r\nexport class ReactApplication extends BaseApplication {\r\n protected layout: ReactLayoutView;\r\n protected layoutOptions: LayoutOptions<ReactLayoutViewOptions>;\r\n\r\n protected onShowAlert(options: ObjectHash): void {\r\n if (!this.layoutOptions.options.alertRegion)\r\n return;\r\n\r\n const { ctor: AlertList, collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(this.layoutOptions.options.alertRegion,\r\n <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n}","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport { BaseLayoutViewOptions, BaseLayoutView } from 'libs/common/backbone/core/BaseLayoutView';\r\n\r\nexport interface ReactLayoutViewOptions extends BaseLayoutViewOptions {\r\n alertRegion?: string;\r\n}\r\n\r\nexport class ReactLayoutView extends BaseLayoutView {\r\n protected options: ReactLayoutViewOptions;\r\n\r\n private isReactComponent(component: any): boolean {\r\n return React && React.isValidElement(component);\r\n }\r\n\r\n public showChildView(regionName: string, component: any): void {\r\n if (this.isReactComponent(component)) {\r\n this.showChildReactComponent(regionName, component);\r\n return;\r\n }\r\n }\r\n\r\n private showChildReactComponent(regionName: string, component: any): void {\r\n if (this.isAttached()) {\r\n this.renderChildReactComponent(regionName, component);\r\n return;\r\n }\r\n\r\n this.listenToOnce(this, 'attach', () => this.renderChildReactComponent(regionName, component));\r\n }\r\n\r\n private renderChildReactComponent(regionName: string, component: any): void {\r\n const region = this.getRegion(regionName);\r\n\r\n const el = this.$el.find(region.el);\r\n\r\n if (!el || !el.length)\r\n return;\r\n\r\n /**\r\n * Trigger 'before:show' on region.\r\n */\r\n region.trigger('before:show');\r\n\r\n /**\r\n * Trigger 'show' on region once the component has been rendered.\r\n */\r\n ReactDOM.render(component, el[0], () => region.trigger('show'));\r\n\r\n this.listenToOnce(this, `unmount:${regionName}`, () => ReactDOM.unmountComponentAtNode(el[0]));\r\n\r\n this.listenToOnce(this, 'before:destroy', () => ReactDOM.unmountComponentAtNode(el[0]));\r\n }\r\n\r\n protected wrapWithStore(child: React.ReactElement): React.ReactElement {\r\n return (\r\n <Provider store={this.options.store}>\r\n {child}\r\n </Provider>\r\n );\r\n }\r\n}","import { useDispatch, useSelector } from 'react-redux';\r\nimport { OutputSelector, defaultMemoize, createSelectorCreator, createSelector } from 'reselect';\r\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { Actions } from './constants';\r\nimport { Request, Response, Dispatch, Resources, NormalizedEntities, Resource } from './interfaces';\r\nimport { denormalize } from './normalizer';\r\nimport { RequestStatus } from './enums';\r\nimport { useMemo } from 'react';\r\n\r\ninterface ObjOptions<T> {\r\n status: RequestStatus;\r\n statusCode?: HttpStatus;\r\n requestTime?: number;\r\n cacheDuration?: number;\r\n data?: T;\r\n}\r\n\r\nclass FlightObj<T> implements Response<T> {\r\n private requestTime: number;\r\n private cacheDuration: number;\r\n\r\n public status: RequestStatus;\r\n public statusCode: HttpStatus;\r\n public data: T;\r\n\r\n constructor(options: ObjOptions<T>) {\r\n this.status = options.status;\r\n this.requestTime = options.requestTime;\r\n this.cacheDuration = options.cacheDuration;\r\n this.data = options.data;\r\n this.statusCode = options.statusCode;\r\n }\r\n\r\n public get shouldFetch(): boolean {\r\n if (this.status === RequestStatus.None)\r\n return true;\r\n\r\n return this.isExpired;\r\n }\r\n\r\n public get isExpired(): boolean {\r\n return TimeHelper.isExpired(this.requestTime, this.cacheDuration);\r\n }\r\n\r\n public get isFetching(): boolean {\r\n return this.status === RequestStatus.Fetching;\r\n }\r\n\r\n public get hasError(): boolean {\r\n return this.status === RequestStatus.Error;\r\n }\r\n\r\n public get isComplete(): boolean {\r\n return this.status === RequestStatus.Success || this.status === RequestStatus.Error;\r\n }\r\n}\r\n\r\nfunction makeGetOptimizedResponse<T>(\r\n key: string\r\n): OutputSelector<ApplicationState, Response<T>, (r: Resource, e: NormalizedEntities) => Response<T>> {\r\n\r\n const getResource = (state: ApplicationState) => state.flightData.resources[key];\r\n\r\n const getEntities = (state: ApplicationState) => {\r\n const resource = state.flightData.resources[key];\r\n\r\n if (!resource?.entityIds) return {};\r\n\r\n return resource.entityIds.reduce((obj: any, id: string) => {\r\n obj[id] = state.flightData.entities[id];\r\n return obj;\r\n }, {});\r\n };\r\n\r\n const isEqual = (currentVal: any, previousVal: any) => {\r\n const omitValues = [ 'response', 'request' ];\r\n return ObjectHelper.isEqual(\r\n ObjectHelper.omit(currentVal, omitValues), ObjectHelper.omit(previousVal, omitValues)\r\n );\r\n };\r\n\r\n const selectorCreator = createSelectorCreator(defaultMemoize, isEqual);\r\n\r\n return selectorCreator(\r\n getResource,\r\n getEntities,\r\n (resource: Resource, entities: NormalizedEntities) => {\r\n return getResponseInternal(key, resource, entities);\r\n }\r\n );\r\n}\r\n\r\nfunction makeGetResponse<T>(\r\n key: string\r\n): OutputSelector<ApplicationState, Response<T>, (r: Resource, e: NormalizedEntities) => Response<T>> {\r\n return createSelector(\r\n (state: ApplicationState) => state.flightData.resources[key],\r\n (state: ApplicationState) => state.flightData.entities,\r\n (resource: Resource, entities: NormalizedEntities) => {\r\n return getResponseInternal(key, resource, entities);\r\n }\r\n );\r\n}\r\n\r\n\r\nfunction getResponseInternal<T>(key: string, resource: Resource, entities: NormalizedEntities): Response<T> {\r\n if (!key || !resource) {\r\n return emptyResponse();\r\n }\r\n\r\n let data = resource.response as T;\r\n if (resource.request.normalize !== false)\r\n data = denormalize(resource.response, entities) as T;\r\n\r\n return new FlightObj<T>({\r\n status: resource.status,\r\n statusCode: resource.statusCode,\r\n requestTime: resource.timestamp,\r\n cacheDuration: resource.request.expiryTime,\r\n data\r\n });\r\n}\r\n\r\nexport function emptyResponse<T>(): Response<T> {\r\n return new FlightObj<T>({\r\n status: RequestStatus.None\r\n });\r\n}\r\n\r\nexport function getResponse<T>(state: ApplicationState, key: string): Response<T> {\r\n return getResponseInternal(key, state.flightData.resources[key], state.flightData.entities);\r\n}\r\n\r\nexport function getFetch(dispatch: Dispatch, request: Request): () => void {\r\n return () => {\r\n fetch(dispatch, request);\r\n };\r\n}\r\n\r\nexport function fetch(dispatch: Dispatch, request: Request): void {\r\n dispatch({\r\n type: Actions.API_REQUEST,\r\n request\r\n });\r\n}\r\n\r\nexport function useGetFetch(request: Request): () => void {\r\n const dispatch = useDispatch();\r\n return getFetch(dispatch, request);\r\n}\r\n\r\ninterface GetResponseOptions {\r\n optimize: boolean;\r\n}\r\n\r\nexport function useGetResponse<T>(key: string, options?: GetResponseOptions): Response<T> {\r\n const memoizedGetResponse = useMemo(() => {\r\n return options?.optimize ? makeGetOptimizedResponse<T>(key) : makeGetResponse<T>(key);\r\n }, [key]);\r\n return useSelector((state: ApplicationState) => {\r\n return memoizedGetResponse(state);\r\n });\r\n}\r\n\r\nexport function useBasicFetch<T>(request: Request, options?: GetResponseOptions): Response<T> {\r\n const dispatch = useDispatch();\r\n const response = useGetResponse<T>(request && request.key, options);\r\n const fetchData = getFetch(dispatch, request);\r\n\r\n if (request && response.shouldFetch)\r\n fetchData();\r\n\r\n return response;\r\n}","import { Dispatch, Middleware, MiddlewareAPI, AnyAction } from 'redux';\r\n\r\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ApplicationState } from 'libs/common/react/interfaces/ApplicationState';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\n\r\nimport {\r\n Request,\r\n NormalizedData,\r\n ResponseAction,\r\n ErrorAction,\r\n InvalidateAction,\r\n HttpRequest,\r\n Action,\r\n UpdateAction,\r\n UpdateStateOptions\r\n} from './interfaces';\r\nimport { RequestStatus } from './enums';\r\nimport { Actions } from './constants';\r\nimport { normalize, denormalize } from './normalizer';\r\nimport { StateHelper, SimulatorHelper } from './utils';\r\n\r\ntype FlightMiddlewareApi = MiddlewareAPI<Dispatch<AnyAction>, ApplicationState>;\r\n\r\ntype FlightMiddlewareResponse = (next: Dispatch<AnyAction>) => (action: Action) => void;\r\n\r\ninterface MiddlewareOptions {\r\n fetchData: HttpRequest;\r\n bootstrappedData?: HashObject;\r\n defaultExpiryTime?: number;\r\n}\r\n\r\nexport function createMiddleware(options: MiddlewareOptions): Middleware<{}, ApplicationState, Dispatch<AnyAction>> {\r\n const { fetchData, bootstrappedData, defaultExpiryTime } = options;\r\n\r\n const FLIGHT_REQUEST_DEFAULTS = Object.freeze<Request>({\r\n key: null,\r\n url: null,\r\n type: HttpVerbs.GET,\r\n normalize: true,\r\n formatData: d => d,\r\n expiryTime: defaultExpiryTime\r\n });\r\n\r\n return function FlightMiddleware(store: FlightMiddlewareApi): FlightMiddlewareResponse {\r\n return (next: Dispatch<AnyAction>) => (action: Action) => {\r\n /**\r\n * This middleware only applies to API_REQUEST actions\r\n */\r\n if (action.type !== Actions.API_REQUEST) {\r\n next(action);\r\n return;\r\n }\r\n\r\n const state = store.getState();\r\n const {\r\n success,\r\n error,\r\n always,\r\n formatData,\r\n ...request } = Object.assign({}, FLIGHT_REQUEST_DEFAULTS, action.request);\r\n\r\n /**\r\n * As soon as next() is called on the first API_REQUEST for a particular resource\r\n * the status will be set to RequestStatus.Fetching.\r\n * For this reason we need to pull the existing resource out of the state before\r\n * we call next() so we can accurately test existing.status before it is manipulated\r\n * by this dispatch call\r\n */\r\n const existing = state.flightData.resources[request.key];\r\n\r\n next(action);\r\n\r\n /** \r\n * If our request exists and is currently fetching we do nothing\r\n */\r\n if (existing && existing.status === RequestStatus.Fetching) {\r\n return;\r\n }\r\n\r\n /**\r\n * Pull data from bootstrapped data if it's there\r\n */\r\n if (request.bootstrapName && bootstrappedData[action.request.bootstrapName]) {\r\n onSuccess(bootstrappedData[action.request.bootstrapName]);\r\n onAlways();\r\n delete bootstrappedData[action.request.bootstrapName];\r\n return;\r\n }\r\n\r\n const httpRequestOptions = {\r\n resource: request.url,\r\n type: request.type,\r\n data: request.data,\r\n success: onSuccess,\r\n error: onError,\r\n always: onAlways\r\n };\r\n\r\n /**\r\n * Call our data layer\r\n */\r\n if (SimulatorHelper.isSimulated(request))\r\n SimulatorHelper.simulateFetchData(httpRequestOptions, request);\r\n else\r\n fetchData(httpRequestOptions);\r\n\r\n /**\r\n * Middleware ends here, all functions below are simply enclosing variables from above\r\n */\r\n return;\r\n\r\n /**\r\n * Format and normalize our data before dispatching API_RESPONSE\r\n */\r\n function onSuccess(data: HashObject, xhr?: Xhr): void {\r\n const formatted = formatData(data);\r\n let response: NormalizedData = {\r\n result: formatted,\r\n entities: {}\r\n };\r\n\r\n if (request.normalize)\r\n response = normalize(formatted, request.normalizeOptions);\r\n\r\n store.dispatch<ResponseAction>({\r\n type: Actions.API_REPONSE,\r\n result: response.result,\r\n entities: response.entities,\r\n request: request,\r\n timestamp: TimeHelper.currentTimestamp(),\r\n xhr\r\n });\r\n\r\n if (request.updateState) {\r\n const updateOptions = Array.isArray(request.updateState)\r\n ? request.updateState\r\n : [request.updateState];\r\n\r\n updateOptions.forEach((u: UpdateStateOptions) => {\r\n updateState(u);\r\n });\r\n }\r\n\r\n if (!success) return;\r\n\r\n let successObj = response.result as HashObject | HashObject[];\r\n if (request.normalize) {\r\n successObj = denormalize(response.result, {\r\n ...state.flightData.entities, ...response.entities\r\n });\r\n }\r\n success(successObj);\r\n }\r\n\r\n /**\r\n * Build out our error response before dispatching API_RESPONSE\r\n */\r\n function onError(xhr?: Xhr): void {\r\n store.dispatch<ErrorAction>({\r\n type: Actions.API_ERROR,\r\n errorResponse: xhr.responseJSON,\r\n request: action.request,\r\n timestamp: TimeHelper.currentTimestamp(),\r\n xhr\r\n });\r\n error && error(xhr);\r\n }\r\n\r\n /**\r\n * If we have any invalidation keys dispatch INVALIDATE\r\n */\r\n function onAlways(): void {\r\n if (request.invalidationKeys) {\r\n store.dispatch<InvalidateAction>({\r\n type: Actions.INVALIDATE,\r\n keys: request.invalidationKeys,\r\n request\r\n });\r\n }\r\n always && always();\r\n }\r\n\r\n function updateState(updateStateOptions: UpdateStateOptions): void {\r\n const keyMap = StateHelper.getMatchingKeyMap(state.flightData, updateStateOptions.keys);\r\n\r\n /**\r\n * Filter out state to update using keyMap and denormalize where applicable. \r\n */\r\n const dataToUpdate: HashObject = {\r\n ...Object.keys(state.flightData.resources)\r\n .filter(key => keyMap[key])\r\n .reduce((obj: HashObject, key) => {\r\n const resource = state.flightData.resources[key];\r\n\r\n let data = resource.response;\r\n\r\n if (resource.request.normalize)\r\n data = denormalize(resource.response, state.flightData.entities);\r\n\r\n obj[key] = data;\r\n return obj;\r\n }, {})\r\n };\r\n\r\n const updatedData = updateStateOptions.updateData(dataToUpdate);\r\n\r\n /**\r\n * Dispatch update actions with updated data.\r\n */\r\n Object.keys(updatedData)\r\n .forEach(key => {\r\n const resource = state.flightData.resources[key];\r\n const updatedResult = updatedData[key];\r\n\r\n let data: NormalizedData = {\r\n result: updatedResult,\r\n entities: {}\r\n };\r\n\r\n if (resource.request.normalize)\r\n data = normalize(updatedResult, resource.request.normalizeOptions);\r\n\r\n store.dispatch<UpdateAction>({\r\n type: Actions.UPDATE,\r\n result: data.result,\r\n entities: data.entities,\r\n request: resource.request\r\n });\r\n });\r\n }\r\n };\r\n };\r\n}\r\n\r\n","import {\r\n FlightState,\r\n RequestAction,\r\n ResponseAction,\r\n ErrorAction,\r\n InvalidateAction,\r\n Action,\r\n UpdateAction,\r\n NormalizedEntities\r\n} from './interfaces';\r\nimport { Actions } from './constants';\r\nimport { RequestStatus } from './enums';\r\nimport { StateHelper } from './utils';\r\n\r\nfunction mergeEntitites(existingEntities: NormalizedEntities, newEntities: NormalizedEntities): NormalizedEntities {\r\n const entities = { ...existingEntities };\r\n\r\n Object.keys(newEntities).forEach(key => {\r\n if (!existingEntities[key]) {\r\n entities[key] = newEntities[key];\r\n return;\r\n }\r\n\r\n entities[key] = { ...existingEntities[key], ...newEntities[key] };\r\n });\r\n\r\n return entities;\r\n}\r\n\r\nfunction ApiRequestReducer(state: FlightState, action: RequestAction): FlightState {\r\n const request = state.resources[action.request.key];\r\n\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Fetching,\r\n response: request ? request.response : null,\r\n entityIds: request ? request.entityIds : null\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction ApiResponseReducer(state: FlightState, action: ResponseAction): FlightState {\r\n const entityIds = action.entities ? Object.keys(action.entities) : [];\r\n\r\n return {\r\n entities: mergeEntitites(state.entities, action.entities),\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Success,\r\n response: action.result,\r\n timestamp: action.timestamp,\r\n statusCode: action.xhr?.status,\r\n entityIds\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction ApiErrorReducer(state: FlightState, action: ErrorAction): FlightState {\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n request: action.request,\r\n status: RequestStatus.Error,\r\n errorResponse: action.errorResponse,\r\n timestamp: action.timestamp,\r\n statusCode: action.xhr?.status\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction InvalidateReducer(state: FlightState, action: InvalidateAction): FlightState {\r\n const invalidationMap = StateHelper.getMatchingKeyMap(state, action.keys, action.request?.key);\r\n\r\n return {\r\n entities: { ...state.entities },\r\n resources: {\r\n ...state.resources,\r\n ...Object.keys(state.resources)\r\n .filter(key => invalidationMap[key])\r\n .reduce((obj: any, key) => {\r\n const resource = state.resources[key];\r\n obj[key] = Object.assign({}, resource, {\r\n status: RequestStatus.None,\r\n });\r\n return obj;\r\n }, {})\r\n }\r\n };\r\n}\r\n\r\nfunction UpdateReducer(state: FlightState = defaultState, action: UpdateAction): FlightState {\r\n const entityIds = action.entities ? Object.keys(action.entities) : [];\r\n\r\n return {\r\n entities: mergeEntitites(state.entities, action.entities),\r\n resources: {\r\n ...state.resources,\r\n [action.request.key]: {\r\n ...state.resources[action.request.key],\r\n request: action.request,\r\n response: action.result,\r\n entityIds\r\n }\r\n }\r\n };\r\n}\r\n\r\nconst defaultState: FlightState = {\r\n resources: {},\r\n entities: {}\r\n};\r\n\r\nexport function FlightReducer(state: FlightState = defaultState, action: Action): FlightState {\r\n switch (action.type) {\r\n case Actions.API_REQUEST:\r\n return ApiRequestReducer(state, action as RequestAction);\r\n case Actions.API_REPONSE:\r\n return ApiResponseReducer(state, action as ResponseAction);\r\n case Actions.API_ERROR:\r\n return ApiErrorReducer(state, action as ErrorAction);\r\n case Actions.INVALIDATE:\r\n return InvalidateReducer(state, action as InvalidateAction);\r\n case Actions.UPDATE:\r\n return UpdateReducer(state, action as UpdateAction);\r\n }\r\n\r\n return state;\r\n}","import { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\n/**\r\n * We might need to pontentially expant this in the future\r\n * so that options can be passed in, but I'll leave it like this\r\n * for now - Sha\r\n */\r\nconst options = {\r\n idProperty: 'id'\r\n};\r\n\r\nfunction write(name: string, items: HashObject[]): HashObject[] {\r\n localStorage.setItem(name, JSON.stringify(items));\r\n return items;\r\n}\r\n\r\nfunction read(name: string): HashObject[] {\r\n const item = localStorage.getItem(name);\r\n\r\n if (!item)\r\n return null;\r\n\r\n return JSON.parse(item);\r\n}\r\n\r\nfunction getId(): string {\r\n return (Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1).toString();\r\n}\r\n\r\n/**\r\n * This is a very basic implementation and we almost definitely will\r\n * need to extend upon this, so please don't be afraid to add to it.\r\n */\r\nexport const Simulator = {\r\n getAll(name: string, init?: HashObject[]): HashObject[] {\r\n let items = read(name);\r\n\r\n if (items && items.length)\r\n return items;\r\n\r\n if (!items && init) {\r\n init.forEach(item => Simulator.create(name, item));\r\n return read(name);\r\n }\r\n\r\n return [];\r\n },\r\n\r\n get(name: string, id: string): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return null;\r\n\r\n return items.find(i => i[options.idProperty] === id);\r\n },\r\n\r\n create(name: string, item: HashObject): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n const newItem = {\r\n ...item,\r\n [options.idProperty]: item[options.idProperty] || getId()\r\n };\r\n\r\n items.push(newItem);\r\n write(name, items);\r\n return newItem;\r\n },\r\n\r\n update(name: string, item: HashObject): HashObject {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return item;\r\n\r\n const itemIndex = items.findIndex(i => i[options.idProperty] === item[options.idProperty]);\r\n items[itemIndex] = item;\r\n write(name, items);\r\n return item;\r\n },\r\n\r\n delete(name: string, ids: string | string[]): void {\r\n const items = Simulator.getAll(name);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n if (!Array.isArray(ids))\r\n ids = [ids];\r\n\r\n ids.forEach(id => {\r\n const itemIndex = items.findIndex(i => i[options.idProperty] === id);\r\n items.splice(itemIndex, 1);\r\n });\r\n\r\n write(name, items);\r\n },\r\n\r\n /**\r\n * \r\n * @param objectName - the name your object can be found under in local storage (e.g. `classrooms`).\r\n * @param objectId - the id of the object you want to associate something to.\r\n * @param assocName - the field name of your assoc, which will go on your object (e.g. `students`).\r\n * @param flightSimName - the name your assoc objects will be created under (e.g. `school:students`).\r\n * @param assocObject - the object you're creating and associating.\r\n * \r\n * Having a difficult time coming up with good param names here. Feel free to update, ty\r\n */\r\n assoc(\r\n objectName: string, objectId: string, assocName: string, flightSimName: string, assocObjects: any | any[]\r\n ): any | any[] {\r\n const isAssoccingMany = Array.isArray(assocObjects);\r\n\r\n let assocObjectsArray = isAssoccingMany ? assocObjects : [assocObjects];\r\n\r\n // If we're passing in ids instead of objects, find the objects in local storage\r\n if (typeof ArrayHelper.first(assocObjectsArray) === 'string') {\r\n assocObjectsArray = Simulator.getAll(flightSimName).filter(obj => assocObjectsArray.includes(obj.id));\r\n }\r\n\r\n // Get the full assoc objects from local storage, OR create brand new ones if they don't exist yet.\r\n const createdAssocObjects = assocObjectsArray.map((obj: any) => {\r\n if (obj.id)\r\n return obj;\r\n\r\n return Simulator.create(flightSimName, obj);\r\n });\r\n\r\n let items = Simulator.getAll(objectName);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n let item = items.find(_item => _item.id === objectId);\r\n\r\n if (!item)\r\n return;\r\n\r\n // Actually associate our objects to each other\r\n createdAssocObjects.forEach((assoc: any) => {\r\n if (!item[assocName]) {\r\n item[assocName] = isAssoccingMany ? [assoc] : assoc;\r\n\r\n return;\r\n }\r\n\r\n if (Array.isArray(item[assocName])) {\r\n // Don't re-assoc if assoc already exists\r\n if (item[assocName].find((existingAssoc: any) => existingAssoc.id === assoc.id))\r\n return;\r\n\r\n item[assocName].push(assoc);\r\n\r\n return;\r\n }\r\n\r\n item[assocName] = assoc;\r\n });\r\n\r\n // Prepare to write changes to local storage\r\n items = items.map(oldItem => {\r\n if (oldItem.id !== item.id)\r\n return oldItem;\r\n\r\n return item;\r\n });\r\n\r\n write(objectName, items);\r\n\r\n // Return the object(s) we've just assocced\r\n return isAssoccingMany ? createdAssocObjects : ArrayHelper.first(createdAssocObjects);\r\n },\r\n\r\n dissoc(objectName: string, objectId: string, assocName: string, ids: string | string[]): HashObject[] {\r\n let items = Simulator.getAll(objectName);\r\n\r\n if (!items.length)\r\n return;\r\n\r\n let item = items.find(_item => _item.id === objectId);\r\n\r\n if (!item)\r\n return;\r\n\r\n let assoc = item[assocName as any];\r\n\r\n if (!assoc)\r\n return;\r\n\r\n if (!Array.isArray(ids))\r\n ids = [ids];\r\n\r\n if (!Array.isArray(assoc))\r\n assoc = [assoc];\r\n\r\n ids.forEach(id => {\r\n const assoccedItemIndex = assoc.findIndex((a: HashObject) => a.id === id);\r\n assoc.splice(assoccedItemIndex, 1);\r\n });\r\n\r\n item[assocName as any] = assoc;\r\n items = items.map(oldItem => {\r\n if (oldItem.id !== item.id)\r\n return oldItem;\r\n\r\n return item;\r\n });\r\n\r\n write(objectName, items);\r\n\r\n return items;\r\n }\r\n};","export const Actions = {\r\n API_REQUEST: 'API_REQUEST',\r\n API_REPONSE: 'API_RESPONSE',\r\n API_ERROR: 'API_ERROR',\r\n INVALIDATE: 'INVALIDATE',\r\n UPDATE: 'UPDATE'\r\n};","export * from './Actions';","import { HttpRequestOptions } from '../interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\n\r\nfunction formatXhr(jqXHR: JQuery.jqXHR): Xhr {\r\n const { getResponseHeader, responseJSON, status } = jqXHR;\r\n\r\n return { getResponseHeader, responseJSON, status };\r\n}\r\n\r\nconst dataMethods = [ HttpVerbs.POST, HttpVerbs.PUT ];\r\n\r\nexport function ajaxRequest(options: HttpRequestOptions): void {\r\n const {\r\n resource,\r\n type,\r\n success,\r\n error,\r\n always\r\n } = options;\r\n\r\n const ajaxOptions: JQuery.AjaxSettings = {\r\n url: resource,\r\n method: type\r\n };\r\n\r\n if (dataMethods.includes(type) && options.data) {\r\n ajaxOptions.data = JSON.stringify(options.data);\r\n }\r\n\r\n $.ajax(ajaxOptions)\r\n .done((responseData: any, textStatus: any, jqXHR: JQuery.jqXHR) => {\r\n success && success(responseData, formatXhr(jqXHR));\r\n })\r\n .fail((jqXHR: JQuery.jqXHR, textStatus: any, errorThrown: any) => {\r\n error && error(formatXhr(jqXHR));\r\n })\r\n .always(() => {\r\n always && always();\r\n });\r\n}\r\n","export * from './AjaxRequest';","export enum RequestStatus {\r\n None = 'None',\r\n Fetching = 'Fetching',\r\n Success = 'Success',\r\n Error = 'Error'\r\n}","export * from './RequestStatus';","\r\nexport * from './constants';\r\nexport * from './enums';\r\nexport * from './interfaces';\r\nexport * from './data-layers';\r\nexport * from './normalizer';\r\nexport * from './FlightHelpers';\r\nexport * from './FlightMiddleware';\r\nexport * from './FlightReducer';\r\nexport * from './FlightSimulator';","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { NormalizedEntities, Normalized } from '../interfaces';\r\n\r\nfunction denormalizeString(id: string, collection: NormalizedEntities, visited: HashObject): HashObject {\r\n if (visited[id])\r\n return visited[id];\r\n\r\n visited[id] = {};\r\n const denormalized = _denormalize(collection[id], collection, visited);\r\n Object.assign(visited[id], denormalized);\r\n\r\n if (ObjectHelper.isEmpty(visited[id]))\r\n delete visited[id];\r\n\r\n return visited[id];\r\n}\r\n\r\nfunction _denormalize(\r\n data: Normalized, collection: NormalizedEntities, visited: HashObject\r\n): HashObject | HashObject[] {\r\n if (!data)\r\n return;\r\n\r\n if (typeof data === 'string') {\r\n return denormalizeString(data, collection, visited);\r\n }\r\n\r\n if (Array.isArray(data)) {\r\n return (data as HashObject[]).map(d => _denormalize(d, collection, visited));\r\n }\r\n\r\n if (typeof data === 'object') {\r\n const obj: HashObject = {};\r\n Object.keys(data).forEach(key => {\r\n obj[key] = _denormalize(data[key], collection, visited) || data[key];\r\n });\r\n return obj;\r\n }\r\n}\r\n\r\nexport function denormalize(\r\n ids: Normalized, collection: NormalizedEntities\r\n): HashObject | HashObject[] {\r\n return _denormalize(ids, collection, {});\r\n}","import { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { NormalizeOptions, NormalizedData } from '../interfaces';\r\nimport { ErrorHelper } from 'libs/common/backbone/core';\r\n\r\nconst ID_ATTRIBUTE = 'id';\r\n\r\nfunction getNormalizedId(data: HashObject, options: NormalizeOptions = {}): string {\r\n const { idAttribute = ID_ATTRIBUTE, namespace = '' } = options;\r\n\r\n if (!data[idAttribute]) {\r\n ErrorHelper.throw(new DevError('There was an issue during normalization. Object did not have an id attribute.'));\r\n }\r\n return `${namespace}__${data[idAttribute]}`;\r\n}\r\n\r\nfunction normalizeArray(data: HashObject[], collection: HashObject, options: NormalizeOptions = {}): string[] {\r\n const { idAttribute = ID_ATTRIBUTE } = options;\r\n\r\n const ids: string[] = [];\r\n data.forEach((v: HashObject) => {\r\n if (v[idAttribute])\r\n ids.push(getNormalizedId(v, options));\r\n\r\n _normalize(v, collection, options);\r\n });\r\n\r\n return ids;\r\n}\r\n\r\nfunction normalizeObject(\r\n data: HashObject, collection: HashObject, options: NormalizeOptions = {}\r\n): string | HashObject {\r\n const { idAttribute = ID_ATTRIBUTE } = options;\r\n\r\n const orig: HashObject = { ...data };\r\n\r\n Object.keys(data).forEach(key => {\r\n const value = data[key];\r\n\r\n if (!value)\r\n return;\r\n\r\n if (Array.isArray(value)) {\r\n var ids = normalizeArray(value, collection, options);\r\n if (ids.length) orig[key] = ids;\r\n return;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n var result = normalizeObject(value, collection, options);\r\n\r\n if (value[idAttribute]) {\r\n orig[key] = getNormalizedId(value, options);\r\n } else {\r\n orig[key] = result;\r\n }\r\n }\r\n });\r\n\r\n if (data[idAttribute]) {\r\n const id = getNormalizedId(data, options);\r\n collection[id] = orig;\r\n return id;\r\n }\r\n\r\n return orig;\r\n}\r\n\r\nfunction _normalize(\r\n data: HashObject | HashObject[], collection: HashObject, options: NormalizeOptions = {}\r\n): string | string [] | HashObject {\r\n if (!data)\r\n return;\r\n\r\n if (Array.isArray(data))\r\n return normalizeArray(data, collection, options);\r\n\r\n if (typeof data === 'object')\r\n return normalizeObject(data, collection, options);\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * This is a pure function, while normalize() above is not.\r\n * normalize() manipulates it's parameters. If we ever write unit tests for this\r\n * only test this function, not the above ones.\r\n */\r\nexport function normalize(data: HashObject | HashObject[], options?: NormalizeOptions): NormalizedData {\r\n\r\n const collection = {};\r\n\r\n return {\r\n result: _normalize(data, collection, options),\r\n entities: collection\r\n };\r\n}","export * from './Normalizer';\r\nexport * from './Denormalizer';","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { Request, SimulatedRequest, HttpRequestOptions } from '../interfaces';\r\n\r\n/**\r\n * Timeout has a 50% variability. So if you pass in 200\r\n * your response will happen anywhere between 100ms and 200ms\r\n */\r\nfunction getTimeout(request: Request): number {\r\n const simulatorRequest = request as SimulatedRequest;\r\n const base = simulatorRequest.timeout || 300;\r\n return base / 2 + (Math.floor(Math.random() * base / 2) + 1);\r\n}\r\n\r\nexport const SimulatorHelper = {\r\n isSimulated(request: Request): boolean {\r\n /**\r\n * If the request has the successResponse, errorResponse or noResponse properties\r\n * the SimulatedRequest interface has been used as the user\r\n * wants the requests to be simulated\r\n */\r\n const simulatorRequest = request as SimulatedRequest;\r\n return !!(simulatorRequest.successResponse\r\n || simulatorRequest.errorResponse\r\n || simulatorRequest.noResponse);\r\n },\r\n\r\n simulateFetchData(options: HttpRequestOptions, request: Request): void {\r\n const {\r\n success,\r\n error,\r\n always\r\n } = options;\r\n\r\n const simulatorRequest = request as SimulatedRequest;\r\n\r\n window.setTimeout(() => {\r\n if (simulatorRequest.noResponse)\r\n return;\r\n\r\n if (simulatorRequest.successResponse)\r\n success(simulatorRequest.successResponse(), {\r\n status: HttpStatus.Ok,\r\n getResponseHeader: (name: string) => ''\r\n });\r\n else if (simulatorRequest.errorResponse)\r\n error(simulatorRequest.errorResponse() as Xhr);\r\n\r\n always();\r\n }, getTimeout(request));\r\n }\r\n};","import { FlightState } from '../interfaces';\r\n\r\nexport const StateHelper = {\r\n /**\r\n * Returns a map of keys state.resources which match the keys param.\r\n * \r\n * @param state FlightState.\r\n * @param keys a key or array of keys to match on.\r\n * @param requestKey optionally include the current request key to exclude it from the map.\r\n */\r\n getMatchingKeyMap(state: FlightState, keys: string | string[], requestKey?: string): any {\r\n const keyArray = Array.isArray(keys) ? keys : [keys];\r\n\r\n let matchingKeys: string[] = [];\r\n\r\n keyArray.forEach(key => {\r\n const regex = new RegExp(key, 'i');\r\n const matches = Object.keys(state.resources).filter(k => regex.test(k));\r\n matchingKeys.push(...matches);\r\n });\r\n\r\n if (requestKey)\r\n matchingKeys = matchingKeys.filter(k => k !== requestKey);\r\n\r\n return matchingKeys.reduce((obj: any, key) => {\r\n obj[key] = true;\r\n return obj;\r\n }, {});\r\n }\r\n};","export * from './StateHelper';\r\nexport * from './SimulatorHelper';","import * as React from 'react';\r\n\r\nimport { FetchHelper, FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nconst getInitDataFetchedArray = (fetchOptions: FetchOptions[]) =>\r\n Array(Array.isArray(fetchOptions) ? fetchOptions.length : 0).fill(false);\r\n\r\n/**\r\n * Hook function to make multiple data calls using the useEffect hook. \r\n *\r\n * @param optionCollection - array of FetchOptions, one for each data call.\r\n * @param dependencies - values from the component (e.g. state, props and functions) that are used \r\n * inside the effect hook. The hook will only run when a dependency changes. If an empty array is\r\n * passed in, the hook will just run once. If null is passed in, the hook will run on every update.\r\n */\r\nexport function useBulkFetch(fetchOptions: FetchOptions[], dependencies: any[], shouldFetch: boolean = true): void {\r\n /**\r\n * dataFetched - array of flags used to track\r\n * data that has been fetched and to trigger\r\n * re-fetches to pull the data from the data service.\r\n */\r\n const [ dataFetched, setDataFetched ] = React.useState(getInitDataFetchedArray(fetchOptions));\r\n\r\n React.useEffect(() => {\r\n setDataFetched(getInitDataFetchedArray(fetchOptions));\r\n }, [...dependencies]);\r\n\r\n React.useEffect(() => {\r\n if (!shouldFetch)\r\n return;\r\n\r\n const cleanUpFns: (() => void)[] = [];\r\n\r\n !!fetchOptions && fetchOptions.forEach((options, idx) => {\r\n /**\r\n * \r\n * @param status - whether or not the data has been fetched.\r\n * \r\n * If dataFetched at the current index has changed, we update\r\n * the value stored in state so that FetchHelper.fetch will be\r\n * called again to pull the data from the cache and set it\r\n * on the view using useBulkFetch.\r\n */\r\n const setDataFetchedAtIdx = (status: boolean) => {\r\n if (status !== dataFetched[idx])\r\n setDataFetched(ArrayHelper.cloneAndReplaceAtIdx(dataFetched, idx, status));\r\n };\r\n\r\n /**\r\n * Fetch the requested data from the data service.\r\n */\r\n cleanUpFns.push(FetchHelper.fetch(options, setDataFetchedAtIdx));\r\n });\r\n\r\n return () => cleanUpFns.forEach(fn => fn());\r\n }, [ dataFetched, shouldFetch ]);\r\n}","import * as React from 'react';\r\n\r\nimport { FetchHelper, FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\n\r\n/**\r\n * Hook function to fetch data using the useEffect hook.\r\n * \r\n * @param options - FetchOptions\r\n * @param dependencies - values from the component (e.g. state, props and functions) that are used \r\n * inside the effect hook. The hook will only run when a dependency changes. If an empty array is\r\n * passed in, the hook will just run once. If null is passed in, the hook will run on every update.\r\n */\r\nexport function useFetch(options: FetchOptions, dependencies: any[], shouldFetch: boolean = true): void {\r\n /**\r\n * dataFetched - flag used to trigger\r\n * fetching data from the data service.\r\n */\r\n const [ dataFetched, setDataFetched ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n setDataFetched(false);\r\n }, [...dependencies]);\r\n\r\n React.useEffect(() => {\r\n if (!shouldFetch)\r\n return;\r\n\r\n /**\r\n * Fetch the requested data from the data service.\r\n */\r\n return FetchHelper.fetch(options, setDataFetched);\r\n }, [ dataFetched, shouldFetch ]);\r\n}","import * as React from 'react';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\n\r\n/**\r\n * Hook to retrieve an instance from InstanceManager.\r\n * It handles releasing the instance in the cleanup function.\r\n * @param instanceName \r\n */\r\nexport function useInstance<T>(instanceName: string): T {\r\n const instance = InstanceManager.getInstance<T>(instanceName);\r\n\r\n React.useEffect(() => {\r\n return () => InstanceManager.releaseInstance(instanceName);\r\n }), [];\r\n\r\n return instance;\r\n}","import { BaseService } from 'libs/common/backbone/core/BaseService';\r\n\r\nimport { useInstance } from './UseInstance';\r\n\r\nexport function useService<T extends BaseService>(serviceName: string): T {\r\n const service = useInstance<T>(serviceName);\r\n\r\n return service;\r\n}","import * as Flight from './flight';\r\n\r\nexport { Flight };","import * as _ from 'underscore';\r\nimport { ObjectHelper } from './ObjectHelper';\r\n\r\ntype Iterator<T, TResult = T> = (value: T, index: number, list: T[]) => TResult;\r\n\r\nexport const ArrayHelper = {\r\n first<T>(arr: T[]): T {\r\n return _.first(arr);\r\n },\r\n\r\n firstFew<T>(arr: T[], count: number): T[] {\r\n return _.first(arr, count);\r\n },\r\n\r\n last<T>(arr: T[]): T {\r\n return _.last(arr);\r\n },\r\n\r\n lastFew<T>(arr: T[], count: number): T[] {\r\n return _.last(arr, count);\r\n },\r\n\r\n max<T, TResult = T>(arr: T[], iterator?: Iterator<T, TResult>): T {\r\n return _.max(arr, iterator);\r\n },\r\n\r\n cloneAndReplaceAtIdx<T>(arr: T[], idx: number, newVal: T, defaultValue: any = null): T[] {\r\n let newArr = !!arr && arr.length ? arr.slice() : [];\r\n\r\n /**\r\n * If idx is out of bounds, fill array\r\n * with defaultValue up to idx.\r\n */\r\n if (idx + 1 > newArr.length)\r\n newArr = [ ...newArr, ...Array(idx + 1 - newArr.length).fill(defaultValue) ];\r\n\r\n newArr.splice(idx, 1, newVal);\r\n\r\n return newArr;\r\n },\r\n\r\n moveItem<T>(arr: T[], fromIdx: number, toIdx: number): T[] {\r\n const newArray = arr.slice();\r\n\r\n newArray.splice(toIdx, 0, newArray.splice(fromIdx, 1)[0]);\r\n\r\n return newArray;\r\n },\r\n\r\n isEmpty<T>(arr: T[]): boolean {\r\n return arr && !arr.length;\r\n },\r\n\r\n findIndex<T>(arr: T[], predicate: (item: T) => boolean): number {\r\n return _.findIndex(arr, predicate);\r\n },\r\n\r\n where<T, U extends {}>(arr: T[], properties: U): T[] {\r\n return _.where(arr, properties);\r\n },\r\n\r\n groupBy<T>(arr: T[], property: string): { [index: string]: T[]} {\r\n return _.groupBy(arr, property);\r\n },\r\n\r\n flatten<T>(arr: T[], shallow?: boolean): T[] {\r\n return _.flatten(arr, shallow);\r\n },\r\n\r\n intersection<T>(...arrays: T[][]): T[] {\r\n return _.intersection(...arrays);\r\n },\r\n\r\n /**\r\n * Add a value to an array, or if it is already in the array, remove it.\r\n * \r\n * @param arr array of values\r\n * @param value value to be added or removed.\r\n */\r\n addOrRemove<T = string | number>(arr: T[], value: T): T[] {\r\n const idxOfValue = arr.indexOf(value);\r\n\r\n if (idxOfValue === -1)\r\n arr.push(value);\r\n else\r\n arr.splice(idxOfValue, 1);\r\n\r\n return arr;\r\n },\r\n\r\n addOrRemoveImmutable<T>(arr: T[], value: T): T[] {\r\n const idxOfValue = arr.indexOf(value);\r\n\r\n const clonedArr = ObjectHelper.deepClone(arr);\r\n\r\n if (idxOfValue === -1)\r\n return [ ...clonedArr, value ];\r\n else\r\n return [ ...clonedArr.slice(0, idxOfValue), ...clonedArr.slice(idxOfValue + 1) ];\r\n },\r\n\r\n /**\r\n * Returns a (stably) sorted copy of list, ranked in ascending order \r\n * by the results of running each value through iteratee.\r\n * \r\n * @param arr array of values\r\n * @param iteratee an iterator function or a string name of the property to sort by.\r\n */\r\n sortBy<T extends {}, TSort = T>(arr: T[], iteratee?: Iterator<T, TSort> | keyof T): T[] {\r\n return _.sortBy<T, TSort>(arr, iteratee as Iterator<T, TSort>);\r\n },\r\n\r\n chunk<T>(array: _.Collection<T>, count: number): T[][] {\r\n return _.chunk(array, count) as T[][];\r\n },\r\n\r\n uniq<T>(array: _.List<T>): T[] {\r\n return _.uniq(array);\r\n }\r\n};","import { Radio } from 'backbone';\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces/DataServiceError';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ErrorHelper } from 'libs/common/backbone/core';\r\n\r\nexport interface FetchOptions {\r\n /**\r\n * Name of the required data service for fetchData.\r\n */\r\n dataServiceName: string;\r\n\r\n /**\r\n * @deprecated \r\n * DataChannelName is now referenced directly from the data service\r\n * instance itself. \r\n * \r\n * The channelName of the data service's dataChannel.\r\n */\r\n dataChannelName?: string;\r\n\r\n /**\r\n * The eventPrefix for the data being fetched.\r\n */\r\n eventPrefix: string;\r\n\r\n /**\r\n * Callback fn to fetch data give a data service instance.\r\n */\r\n fetchData: (dataService: BaseDataService) => any;\r\n\r\n /**\r\n * Callback fn to set the data when it is returned from the data service.\r\n * This will usually be a setState function.\r\n * \r\n * Deliberately a loose Function type so that we can use React setState setters.\r\n */\r\n setData: Function;\r\n\r\n /**\r\n * onError callback fn.\r\n */\r\n onError?: (error: DataServiceError) => void;\r\n\r\n /**\r\n * The eventPrefix for the corresponding delete event for the object being\r\n * fetched. This is used to listen to the delete event so that any cache\r\n * invalidation listeners can be unbound to prevent an attempt to re-fetch\r\n * the now deleted data.\r\n */\r\n deleteEventPrefix?: string;\r\n}\r\n\r\nexport const FetchHelper = {\r\n /**\r\n * Helper function to fetch data inside a hook. Listeners are bound to the data channel\r\n * request and sync events, then the request is sent. If data is returned it will be\r\n * set using the setData function passed in.\r\n */\r\n fetch<T extends BaseDataService>(options: FetchOptions, setDataFetched: (fetched: boolean) => void): () => void {\r\n const {\r\n dataServiceName,\r\n eventPrefix,\r\n fetchData,\r\n setData,\r\n onError,\r\n deleteEventPrefix\r\n } = options;\r\n\r\n if (!FunctionHelper.isFunction(fetchData)) {\r\n ErrorHelper.throw(new DevError('A fetchData function must be passed to fetch'));\r\n return;\r\n }\r\n\r\n if (!FunctionHelper.isFunction(setData)) {\r\n ErrorHelper.throw(new DevError('A setData function must be passed to fetch'));\r\n return;\r\n }\r\n\r\n const hasErrorCallback = onError && FunctionHelper.isFunction(onError);\r\n\r\n const dataService = InstanceManager.getInstance<T>(dataServiceName);\r\n\r\n const channel = Radio.channel(dataService.channelName);\r\n\r\n /**\r\n * Event names\r\n */\r\n const requestEventName = `${eventPrefix}:request`;\r\n const syncEventName = `${eventPrefix}:sync`;\r\n const errorEventName = `${eventPrefix}:error`;\r\n const invalidateEventName = `${eventPrefix}:invalidate`;\r\n const deleteEventName = deleteEventPrefix && `${deleteEventPrefix}:sync`;\r\n\r\n /**\r\n * If the object is fetched from elsewhere in the app we want the data to be\r\n * updated everywhere so we set dataFetched to false to trigger a re-fetch.\r\n */\r\n const onRequest = () => setDataFetched(false);\r\n\r\n const onSync = () => setDataFetched(true);\r\n\r\n /**\r\n * Trigger a re-fetch when the cached object is invalidated.\r\n */\r\n const onInvalidate = () => setDataFetched(false);\r\n\r\n /**\r\n * If the object is successfully deleted we don't want to\r\n * re-fetch it, so we unbind the invalidation listener.\r\n */\r\n const onDelete = () => channel.off(invalidateEventName, onInvalidate);\r\n\r\n /**\r\n * Bind listeners\r\n */\r\n channel.once(requestEventName, onRequest);\r\n channel.once(syncEventName, onSync);\r\n channel.once(invalidateEventName, onInvalidate);\r\n\r\n if (hasErrorCallback)\r\n channel.once(errorEventName, onError);\r\n\r\n if (deleteEventName)\r\n channel.once(deleteEventName, onDelete);\r\n\r\n const data = fetchData(dataService);\r\n\r\n if (data) {\r\n setDataFetched(true);\r\n options.setData(data);\r\n }\r\n\r\n /**\r\n * Clean up function to returned from a hook that fetches data.\r\n * It will dispose of the data service instance and unbind the listeners\r\n * bound above when the effect is cleaned up.\r\n */\r\n return () => {\r\n InstanceManager.releaseInstance(dataServiceName);\r\n\r\n channel.off(requestEventName, onRequest);\r\n channel.off(syncEventName, onSync);\r\n channel.off(invalidateEventName, onInvalidate);\r\n\r\n if (hasErrorCallback)\r\n channel.off(errorEventName, onError);\r\n\r\n if (deleteEventName)\r\n channel.off(deleteEventName, onDelete);\r\n };\r\n }\r\n};","import * as _ from 'underscore';\r\n\r\nexport const ObjectHelper = {\r\n isEmpty(obj: any): boolean {\r\n return _.isEmpty(obj);\r\n },\r\n\r\n values(obj: any): any[] {\r\n return _.values(obj);\r\n },\r\n\r\n keys(obj: any): string[] {\r\n return _.keys(obj);\r\n },\r\n\r\n deepClone(obj: any): any {\r\n const mapFn = _.isArray(obj) ? _.map : _.mapObject;\r\n\r\n return mapFn(obj, item => {\r\n if (_.isObject(item) || _.isArray(item))\r\n return ObjectHelper.deepClone(item);\r\n\r\n return item;\r\n });\r\n },\r\n\r\n getEnumKeys(obj: any): any[] {\r\n return Object.keys(obj).filter(x => !(parseInt(x) >= 0));\r\n },\r\n\r\n isObject(obj: any): boolean {\r\n return _.isObject(obj);\r\n },\r\n\r\n isEqual(obj1: any, obj2: any): boolean {\r\n return _.isEqual(obj1, obj2);\r\n },\r\n\r\n omit(obj: any, keys: string[]): any {\r\n return _.omit(obj, keys);\r\n }\r\n};","export const RandomHelper = {\r\n getRandomInt(max: number = 10000): number {\r\n return Math.floor(Math.random() * Math.floor(max));\r\n }\r\n};","const MILLISECOND_MULTIPLIER = 1000;\r\n\r\n// Time of day boundaries (in 24hr adult time)\r\nconst AFTERNOON_START = 12; // 12pm \r\nconst EVENING_START = 18; // 6pm\r\n\r\ntype TimeOfDay = 'morning' | 'afternoon' | 'evening';\r\n\r\nexport const TimeHelper = {\r\n currentTimestamp(): number {\r\n return new Date().valueOf();\r\n },\r\n\r\n isExpired(timestamp: number, cacheDuration: number): boolean {\r\n if (!cacheDuration)\r\n return false;\r\n\r\n const expiryTimeMilliseconds = cacheDuration * MILLISECOND_MULTIPLIER;\r\n\r\n return timestamp < (TimeHelper.currentTimestamp() - expiryTimeMilliseconds);\r\n },\r\n\r\n currentTimeOfDay(currentTime?: Date): TimeOfDay {\r\n if (!currentTime)\r\n currentTime = new Date();\r\n\r\n const currentHour = currentTime.getHours();\r\n\r\n if (currentHour >= AFTERNOON_START && currentHour < EVENING_START)\r\n return 'afternoon';\r\n\r\n if (currentHour >= EVENING_START)\r\n return 'evening';\r\n\r\n return 'morning';\r\n }\r\n};","export const TypeHelper = {\r\n isNumber(obj: any): boolean {\r\n return TypeHelper.isType(obj, 'number');\r\n },\r\n\r\n isString(obj: any): boolean {\r\n return TypeHelper.isType(obj, 'string');\r\n },\r\n\r\n isType(obj: any, type: string): boolean {\r\n return typeof obj === type;\r\n }\r\n};","import * as React from 'react';\r\n\r\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { ActionOptions } from './Actions';\r\n\r\ninterface ActionButtonProps {\r\n actionOptions: ActionOptions;\r\n}\r\n\r\nexport function ActionButton(props: React.PropsWithChildren<ActionButtonProps>): JSX.Element {\r\n const { onClick, appLink, svgName, tooltip } = props.actionOptions;\r\n\r\n let className = 'ml-2';\r\n\r\n if (props.actionOptions.className)\r\n className += ` ${props.actionOptions.className}`;\r\n\r\n if (tooltip) {\r\n return (\r\n <Tooltip title={tooltip}>\r\n <IconButton\r\n appLink={appLink}\r\n svgName={svgName}\r\n onClick={onClick}\r\n className={className}\r\n >\r\n {props.children}\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n if (svgName) {\r\n return (\r\n <IconButton\r\n onClick={onClick}\r\n appLink={appLink}\r\n svgName={svgName}\r\n className={className}\r\n >\r\n {props.children}\r\n </IconButton>\r\n );\r\n }\r\n\r\n if (appLink)\r\n return <AppLink onClick={onClick} appLink={appLink} className={className}>{props.children}</AppLink>;\r\n\r\n return (\r\n <button onClick={onClick} className={className}>\r\n {props.children}\r\n </button>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { ActionsDropdown } from './ActionsDropdown';\r\nimport { ActionButton } from './ActionButton';\r\n\r\nimport styles from './actions.scss';\r\n\r\nexport interface ActionOptions {\r\n label: string;\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n svgName?: string;\r\n className?: string;\r\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\r\n tooltip?: string;\r\n}\r\n\r\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\r\n\r\ninterface ActionsProps {\r\n actions: ActionOptions[];\r\n className?: string;\r\n actionsDropdownClassName?: string;\r\n sortComponent?: JSX.Element;\r\n}\r\n\r\nexport function Actions(props: ActionsProps): JSX.Element {\r\n const buttonActions: ActionOptions[] = [];\r\n const moreActions: ActionOptions[] = [];\r\n\r\n props.actions.forEach(a => {\r\n if (a.button)\r\n buttonActions.push(a);\r\n else\r\n moreActions.push(a);\r\n });\r\n\r\n let className = 'd-flex';\r\n\r\n if (props.className)\r\n className += ` ${props.className}`;\r\n\r\n return (\r\n <div className={className}>\r\n <>\r\n {!!buttonActions.length &&\r\n <span className={styles.buttonList}>\r\n {buttonActions.map((a, idx) =>\r\n <ActionButton key={idx} actionOptions={a}>\r\n {a.label}\r\n </ActionButton>\r\n )}\r\n </span>\r\n }\r\n {props.sortComponent ? props.sortComponent : '' }\r\n {!!moreActions.length &&\r\n <ActionsDropdown\r\n actions={moreActions}\r\n className={!!buttonActions.length && 'ml-2'}\r\n dropdownToggleClassName={props.actionsDropdownClassName}\r\n />\r\n }\r\n </>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './actions.scss';\r\n\r\nimport { ActionOptions } from './Actions';\r\n\r\nfunction getDropdownItemClassName(actionClassName?: string): string {\r\n let className = 'dropdown-item';\r\n\r\n if (actionClassName)\r\n className += ` ${actionClassName}`;\r\n\r\n return className;\r\n}\r\n\r\ninterface ActionsDropdownProps {\r\n actions: ActionOptions[];\r\n className?: string;\r\n dropdownToggleClassName?: string;\r\n}\r\n\r\nActionsDropdown.defaultProps = {\r\n dropdownToggleClassName: 'btn btn-light'\r\n};\r\n\r\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\r\n if (!props.actions || !props.actions.length)\r\n return <></>;\r\n\r\n // Generate unique id to avoid collisions.\r\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\r\n\r\n let dropdownToggleClassName = `px-0 ${styles.dropdownToggle}`;\r\n\r\n if (props.dropdownToggleClassName)\r\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\r\n\r\n return (\r\n <Dropdown className={props.className ? props.className : ''} alignRight>\r\n <Dropdown.Toggle as='button' type='button' id={dropdownToggleId} className={dropdownToggleClassName}>\r\n <SvgContainer svgName={cvSvgLibrary.More} size={SvgContainerSize.Small} />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n {props.actions.map((a, idx) =>\r\n <AppLink key={idx} appLink={a.appLink} className={getDropdownItemClassName(a.className)}>\r\n {a.label}\r\n </AppLink>\r\n )}\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonList\":\"cv--buttonList--2v9CT\",\"dropdownToggle\":\"cv--dropdownToggle--AYBvQ\"};","import * as React from 'react';\r\nimport { BaseAlert, AlertType } from 'libs/common/backbone/services/BaseAlertService';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AlertContent } from './AlertContent';\r\nimport styles from './alert.scss';\r\n\r\nconst ALERT_FADE_TIMER = 3000;\r\n\r\nconst getAlertSvgType = (alert: BaseAlert) => {\r\n switch (alert.type) {\r\n case AlertType.Success:\r\n return cvSvgLibrary.CheckCircleOutline;\r\n\r\n case AlertType.Fail:\r\n case AlertType.Warning:\r\n return cvSvgLibrary.Warning;\r\n\r\n case AlertType.Info:\r\n default:\r\n return cvSvgLibrary.Info;\r\n }\r\n};\r\n\r\nexport interface AlertProps {\r\n alert: BaseAlert;\r\n closeAlert: () => void;\r\n}\r\n\r\nexport function Alert({ alert, closeAlert }: AlertProps): React.ReactElement {\r\n const [ closeOnTimeout, setCloseOnTimeout ] = React.useState(true);\r\n\r\n const timeoutRef = React.useRef<number>();\r\n\r\n React.useEffect(() => {\r\n if (!closeOnTimeout) {\r\n clearTimeout(timeoutRef.current);\r\n return;\r\n }\r\n\r\n timeoutRef.current = window.setTimeout(closeAlert, ALERT_FADE_TIMER);\r\n }, [closeOnTimeout]);\r\n\r\n const typeClassName = `text-${alert.type.toLowerCase()}`;\r\n\r\n return (\r\n <li\r\n className={`bg-white mt-2 p-2 show clearfix ${styles.alertItem}`}\r\n onMouseEnter={() => setCloseOnTimeout(false)} onMouseLeave={() => setCloseOnTimeout(true)}\r\n >\r\n <AlertContent\r\n alert={alert}\r\n svgName={getAlertSvgType(alert)}\r\n svgClassName={typeClassName}\r\n closeAlert={closeAlert}\r\n />\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\nimport { sanitize } from 'dompurify';\r\n\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AlertProps } from './Alert';\r\nimport styles from './alert.scss';\r\n\r\ninterface AlertContentProps extends AlertProps {\r\n svgName: string;\r\n svgClassName: string;\r\n}\r\n\r\nexport function AlertContent(props: AlertContentProps): React.ReactElement {\r\n const { alert, svgName, svgClassName, closeAlert } = props;\r\n\r\n const { message, heading, appLink, appLinkText, appLinkClassName = '' } = alert;\r\n\r\n const sanitizedMessage = sanitize(message);\r\n\r\n return (\r\n <>\r\n <div className={`d-inline-block ${styles.icon}`}>\r\n <SvgContainer svgName={svgName} className={`svg-container ${svgClassName}`} />\r\n </div>\r\n <div className={`pl-2 d-inline-block ${styles.alertContent}`}>\r\n <p className={`p-0 m-0 pb-1 ${styles.heading}`}>{heading}</p>\r\n <p className={`p-0 m-0 ${styles.message}`} dangerouslySetInnerHTML={{ __html: sanitizedMessage }} />\r\n {!!appLink &&\r\n <AppLink className={appLinkClassName} appLink={appLink}>{appLinkText}</AppLink>\r\n }\r\n </div>\r\n <div className='close d-inline-block cursor-pointer' role='button' aria-hidden='true' onClick={closeAlert}>&times;</div>\r\n </>\r\n );\r\n}","import * as React from 'react';\r\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\n\r\nimport { Alert } from './Alert';\r\nimport styles from './alert.scss';\r\n\r\ninterface AlertListProps {\r\n alerts: BaseAlert[];\r\n removeAlert: (id: string) => void;\r\n}\r\n\r\nexport function AlertList({ alerts, removeAlert }: AlertListProps): React.ReactElement {\r\n return (\r\n <div className={styles.alertBox}>\r\n <TransitionGroup component='ul' className={`${styles.alertList} list-unstyled`}>\r\n {alerts && alerts.map((alert, idx) =>\r\n <CSSTransition key={idx} timeout={200} classNames='alert'>\r\n <Alert alert={alert} closeAlert={() => removeAlert(alert.id)} />\r\n </CSSTransition>\r\n )}\r\n </TransitionGroup>\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alertItem\":\"cv--alertItem--3ppPT\",\"alertBox\":\"cv--alertBox--2gPqV\",\"alertList\":\"cv--alertList--1_wrK\",\"icon\":\"cv--icon--2gpnl\",\"alertContent\":\"cv--alertContent--1akpi\",\"heading\":\"cv--heading--3jnJY\"};","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\n\r\nexport interface AppLinkProps {\r\n appLink: Core.AppLink;\r\n className?: string;\r\n tag?: 'a' | 'button';\r\n onClick?: (e: React.MouseEvent) => void;\r\n}\r\n\r\nexport function AppLink(props: React.PropsWithChildren<AppLinkProps>): React.ReactElement {\r\n const { appLink, className, children, tag: AppLinkTag = 'a' } = props;\r\n\r\n if (!appLink) {\r\n return (\r\n <span className={className || ''}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n let onClick = props.onClick;\r\n if (!onClick) {\r\n onClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n };\r\n }\r\n\r\n const propsToInject = {\r\n onClick,\r\n href: Core.AppLinkHelper.getHref(appLink),\r\n className\r\n };\r\n\r\n return <AppLinkTag {...propsToInject}>{children}</AppLinkTag>;\r\n}","import * as React from 'react';\r\n\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButton, PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\n\r\ninterface ConfirmationPopupProps {\r\n title: string;\r\n onClickConfirm: () => void;\r\n confirmButtonText?: string;\r\n cancelButtonText?: string;\r\n}\r\n\r\nConfirmationPopup.defaultProps = {\r\n confirmButtonText: 'Confirm',\r\n cancelButtonText: 'Cancel'\r\n};\r\n\r\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\r\n\r\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\r\n const {\r\n title,\r\n onClickConfirm,\r\n confirmButtonText,\r\n cancelButtonText,\r\n closePopup\r\n } = props;\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: cancelButtonText\r\n },\r\n {\r\n variant: 'primary',\r\n onClick: () => { setShowButtonSpinner(true); onClickConfirm(); },\r\n buttonText: confirmButtonText,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title={title} closePopup={closePopup}>\r\n <>\r\n {props.children}\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n </Popup>\r\n );\r\n}","import * as React from 'react';\r\n\r\ninterface DivButtonProps extends React.ButtonHTMLAttributes<HTMLDivElement> {\r\n onClick: (...args: any) => any;\r\n}\r\n\r\n/**\r\n * This element lets us use `div` elements as buttons without losing the accessibility of\r\n * a regular HTML button element\r\n */\r\nexport function DivButton(props: React.PropsWithChildren<DivButtonProps>): JSX.Element {\r\n return (\r\n <div\r\n role='button'\r\n tabIndex={0}\r\n className={`${props.className ? props.className : ''} cursor-pointer`}\r\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && props.onClick(e)}\r\n onClick={props.onClick}\r\n style={props.style ? props.style : {}}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nconst namespace = 'shared.formButtons';\r\n\r\nconst ENTER_KEY_CODE = 13;\r\n\r\ninterface FormButtonsProps {\r\n isNew: boolean;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function FormButtons<Values extends object>(props: FormButtonsProps): JSX.Element {\r\n const formikProps = useFormikContext<Values>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n /**\r\n * This hook listens to \"Enter\" keypress events, and submits the form if there\r\n * are no errors. This prevents any edge cases where submitting doesn't work on\r\n * Enter normally, such as when a custom component is in focus.\r\n */\r\n React.useEffect(() => {\r\n function onKeyPress(e: KeyboardEvent): void {\r\n if (e.keyCode !== ENTER_KEY_CODE || !canSubmit)\r\n return;\r\n\r\n formikProps.validateForm().then(errors => {\r\n if (!Object.keys(errors).length)\r\n formikProps.submitForm();\r\n });\r\n }\r\n\r\n window.addEventListener('keypress', onKeyPress);\r\n return () => window.removeEventListener('keypress', onKeyPress);\r\n }, [canSubmit]);\r\n\r\n let phraseKey = 'save';\r\n if (props.isNew)\r\n phraseKey = 'create';\r\n if (props.hasNext)\r\n phraseKey = 'next';\r\n\r\n return (\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n <Text namespace={namespace} phrase={phraseKey} />\r\n </SpinnerButton>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { FieldAttributes } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\r\n\r\n/**\r\n * Use this checkbox within Formik contexts\r\n */\r\nexport function FormCheckbox<Values extends object>(props: FieldAttributes<FormFieldProps<Values>>): JSX.Element {\r\n const { label, ...fieldProps } = props;\r\n\r\n return (\r\n <Form.Group>\r\n <div className='custom-control custom-checkbox'>\r\n <FieldWrapper<Values> className='custom-control-input' {...fieldProps} />\r\n <Form.Label className='custom-control-label' htmlFor={fieldProps.id}>{label}</Form.Label>\r\n </div>\r\n </Form.Group>\r\n );\r\n}\r\n\r\n","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\ninterface CharacterCounterProps<Values extends object> {\r\n fieldName: keyof Values;\r\n limit: number;\r\n}\r\n\r\nexport function CharacterCounter<Values extends object>(props: CharacterCounterProps<Values>): JSX.Element {\r\n const { values } = useFormikContext<Values>();\r\n\r\n const field = values[props.fieldName];\r\n\r\n if (typeof field !== 'string')\r\n return <></>;\r\n\r\n return (\r\n <div className='float-right text-muted'>\r\n {field.length}/{props.limit}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Field, FieldAttributes, useFormikContext, ErrorMessage, FieldProps } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\n\r\nimport { CharacterCounter } from './CharacterCounter';\r\nimport { FormCheckbox } from '../form-checkbox/FormCheckbox';\r\n\r\nexport interface FormFieldProps<Values extends object> {\r\n /**\r\n * The name prop MUST be the same as the attribute\r\n * name of the value that the field is bound to.\r\n */\r\n name: string;\r\n label?: string;\r\n children?: ((props: FieldProps) => React.ReactNode) | React.ReactNode;\r\n showCharacterCounter?: boolean;\r\n}\r\n\r\nexport function FieldWrapper<Values extends object>(\r\n props: FieldAttributes<FormFieldProps<Values>> & { className: string }\r\n): React.ReactElement {\r\n const { children, ...fieldProps } = props;\r\n\r\n return (\r\n <Field {...fieldProps}>\r\n {FunctionHelper.isFunction(children)\r\n ? (f: FieldProps) => children(f)\r\n : React.Children.count(children) ? children : null\r\n }\r\n </Field>\r\n );\r\n}\r\n\r\nexport function FormField<Values extends object>(props: FieldAttributes<FormFieldProps<Values>>): React.ReactElement {\r\n const { label, className, showCharacterCounter, ...fieldProps } = props;\r\n\r\n const { errors, touched } = useFormikContext<Values>();\r\n\r\n if (fieldProps.type === 'checkbox')\r\n return <FormCheckbox<Values> {...props} />;\r\n\r\n return (\r\n <Form.Group>\r\n {!!label && <Form.Label htmlFor={fieldProps.id}>{label}</Form.Label>}\r\n <FieldWrapper<Values>\r\n className={FormHelper.getCustomFormControlClassName(errors, touched, fieldProps.name, className)}\r\n {...fieldProps}\r\n />\r\n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\r\n <CharacterCounter\r\n fieldName={(fieldProps.name as keyof Values)}\r\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\r\n />\r\n }\r\n <ErrorMessage name={fieldProps.name}>\r\n {(errorMessage: string) => <Form.Control.Feedback type='invalid'>{errorMessage}</Form.Control.Feedback>}\r\n </ErrorMessage>\r\n </Form.Group>\r\n );\r\n}","import * as React from 'react';\r\nimport { Formik, FormikValues, FormikConfig, FormikProps, FormikHelpers, useFormikContext, FormikContextType } from 'formik';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\r\n const values = ObjectHelper.deepClone(initialValues);\r\n\r\n Object.keys(values).forEach((key: keyof Values) => {\r\n if (!values.hasOwnProperty(key))\r\n return;\r\n\r\n if (ObjectHelper.isObject(values[key]))\r\n values[key] = omitNullInitialValues(values[key]);\r\n else if (values[key] === null)\r\n delete values[key];\r\n });\r\n\r\n return values;\r\n}\r\n\r\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\r\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\r\n\r\ninterface InitialStatus {\r\n allowInitialSubmit: boolean;\r\n}\r\n\r\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\r\n initialValues: FormValues | ApiValues;\r\n onSubmit: (data: FormValues, onDone: () => void) => void;\r\n castInitialValues?: boolean; // cast to validationSchema\r\n castValuesOnSubmit?: boolean; // cast to validationSchema\r\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\r\n resetOnSubmit?: boolean;\r\n}\r\n\r\nFormWrapper.defaultProps = {\r\n castInitialValues: true,\r\n castValuesOnSubmit: true\r\n};\r\n\r\nexport function FormWrapper<\r\n FormValues extends FormikValues = FormikValues,\r\n ApiValues extends FormikValues = FormikValues,\r\n ExtraProps = {}\r\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\r\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, resetOnSubmit, ...formikProps } = props;\r\n\r\n /**\r\n * If castInitialValues is true, cast initialValues to the validationSchema.\r\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\r\n */\r\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\r\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\r\n : initialValues;\r\n\r\n const onSubmitHandler = (\r\n values: FormValues,\r\n { setSubmitting, resetForm }: FormikHelpers<FormValues>\r\n ) => {\r\n /**\r\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\r\n * This is useful for trimming inputs:\r\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\r\n */\r\n const formattedData = castValuesOnSubmit && props.validationSchema\r\n ? props.validationSchema.cast(values)\r\n : values;\r\n\r\n onSubmit(formattedData, () => {\r\n resetOnSubmit && resetForm();\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n const initialStatus: InitialStatus = {\r\n allowInitialSubmit: props.allowInitialSubmit\r\n };\r\n\r\n return (\r\n <Formik<FormValues, ExtraProps>\r\n enableReinitialize\r\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\r\n initialValues={formattedInitialValues}\r\n onSubmit={onSubmitHandler}\r\n initialStatus={initialStatus}\r\n >\r\n {FunctionHelper.isFunction(props.children)\r\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\r\n : React.Children.count(props.children) ? props.children : null\r\n }\r\n </Formik>\r\n );\r\n}\r\n\r\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\r\n return useFormikContext<T>();\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './icon-button.scss';\r\n\r\ninterface IconButtonProps {\r\n svgName: string;\r\n className?: string;\r\n appLink?: Core.AppLink;\r\n onClick?: (e: React.MouseEvent) => void;\r\n}\r\n\r\n/**\r\n * Renders a button with an svg followed by text.\r\n * The svg is required and is set using the svgName prop.\r\n * Button text is optional and can be set using props.children.\r\n */\r\nexport function IconButton(props: React.PropsWithChildren<IconButtonProps>): React.ReactElement {\r\n const { svgName, children, appLink, className, onClick } = props;\r\n\r\n let buttonClassName = `${className} ${styles.iconButton}`;\r\n\r\n if (children) {\r\n buttonClassName += ` ${styles.iconWithText}`;\r\n } else {\r\n buttonClassName += ` ${styles.iconOnly}`;\r\n }\r\n\r\n const svg = <SvgContainer svgName={svgName} className={styles.svg} />;\r\n\r\n if (!appLink) {\r\n return (\r\n <button className={buttonClassName} onClick={onClick}>\r\n {svg}\r\n {children}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <AppLink appLink={appLink} className={buttonClassName} onClick={onClick}>\r\n {svg}\r\n {children}\r\n </AppLink>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svg\":\"cv--svg--3OUhC\",\"iconButton\":\"cv--iconButton--3t3VL\",\"iconWithText\":\"cv--iconWithText--2KLHo\",\"iconOnly\":\"cv--iconOnly--2rQWb\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Cursors } from 'libs/common/backbone/interfaces';\r\n\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { LocationContext, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\r\n\r\nfunction buildCursor(appLink: Core.AppLink, cursorParam: string): Core.AppLink {\r\n if (!cursorParam)\r\n return null;\r\n\r\n return {\r\n application: appLink.application,\r\n action: appLink.action,\r\n args: appLink.args,\r\n params: Object.assign({}, appLink.params, { cursor: cursorParam })\r\n };\r\n}\r\n\r\ninterface CursorPaginationProps {\r\n cursors: Cursors;\r\n appLink: Core.AppLink;\r\n className?: string;\r\n}\r\n\r\nPagination.defaultProps = {\r\n className: 'py-2'\r\n};\r\n\r\nexport function Pagination({ appLink, cursors, className }: CursorPaginationProps): JSX.Element {\r\n function log(page: 'next' | 'previous'): void {\r\n AnalyticsHelper.logUserAction({ page }, {\r\n location: LocationContext.Pagination,\r\n entity: EntityType.Pagination,\r\n actionType: UserAction.Navigate,\r\n workflowPhase: WorkflowPhase.Complete\r\n });\r\n }\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.pagination'>\r\n <div className={className}>\r\n <AppLink\r\n appLink={buildCursor(appLink, cursors.previous)}\r\n className={`btn btn-secondary mr-1 ${!cursors.previous ? 'disabled' : ''}`}\r\n onClick={() => log('previous')}\r\n >\r\n <Text phrase='previous' />\r\n </AppLink>\r\n\r\n <AppLink\r\n appLink={buildCursor(appLink, cursors.next)}\r\n className={`btn btn-secondary ${!cursors.next ? 'disabled' : ''}`}\r\n onClick={() => log('next')}\r\n >\r\n <Text phrase='next' />\r\n </AppLink>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}\r\n\r\ninterface LocalPaginationProps {\r\n onClickNext: () => void;\r\n onClickBack: () => void;\r\n currentPage: number;\r\n totalPages: number;\r\n className?: string;\r\n}\r\n\r\nLocalPagination.defaultProps = {\r\n className: 'py-2'\r\n};\r\n\r\nexport function LocalPagination(props: LocalPaginationProps): JSX.Element {\r\n function onClickBack(): void {\r\n if (props.currentPage === 1)\r\n return;\r\n\r\n log('previous');\r\n\r\n props.onClickBack();\r\n }\r\n\r\n function onClickNext(): void {\r\n if (props.currentPage === props.totalPages)\r\n return;\r\n\r\n log('next');\r\n\r\n props.onClickNext();\r\n }\r\n\r\n function log(page: 'next' | 'previous'): void {\r\n AnalyticsHelper.logUserAction({ page }, {\r\n location: LocationContext.Pagination,\r\n entity: EntityType.Pagination,\r\n actionType: UserAction.Navigate,\r\n workflowPhase: WorkflowPhase.Complete\r\n });\r\n }\r\n\r\n return (\r\n <LanguageNamespaceContext.Provider value='shared.pagination'>\r\n <div className={props.className}>\r\n <DivButton\r\n onClick={onClickBack}\r\n className={`btn btn-secondary mr-1 cursor-pointer ${props.currentPage === 1 ? 'disabled' : ''}`}\r\n >\r\n <Text phrase='previous' />\r\n </DivButton>\r\n\r\n <DivButton\r\n onClick={onClickNext}\r\n className={`btn btn-secondary cursor-pointer ${props.currentPage === props.totalPages ? 'disabled' : ''}`}\r\n >\r\n <Text phrase='next' />\r\n </DivButton>\r\n </div>\r\n </LanguageNamespaceContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { PopupLoadingSpinner } from './PopupLoadingSpinner';\r\n\r\ninterface PopupProps {\r\n title?: string;\r\n closeButton?: boolean;\r\n closePopup: () => void;\r\n onEntered?: () => void;\r\n showLoadingSpinner?: boolean;\r\n}\r\n\r\nexport function Popup(props: React.PropsWithChildren<PopupProps>): React.ReactElement {\r\n const { title, closeButton = true, closePopup, onEntered, showLoadingSpinner } = props;\r\n\r\n const modalProps = {\r\n show: true,\r\n onHide: closePopup,\r\n ...(FunctionHelper.isFunction(onEntered) ? { onEntered } : {})\r\n };\r\n\r\n return (\r\n <Modal {...modalProps}>\r\n {!!title &&\r\n <Modal.Header closeButton={closeButton}>\r\n <Modal.Title>{title}</Modal.Title>\r\n </Modal.Header>\r\n }\r\n {showLoadingSpinner\r\n ? <PopupLoadingSpinner />\r\n : <Modal.Body>\r\n {props.children}\r\n </Modal.Body>\r\n }\r\n </Modal>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button, ButtonProps } from 'react-bootstrap';\r\n\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\nexport interface PopupButton extends ButtonProps {\r\n className?: string;\r\n onClick: () => void;\r\n buttonText: string;\r\n isSpinnerButton?: boolean;\r\n showSpinner?: boolean;\r\n}\r\n\r\nconst getButton = (props: PopupButton, idx: number) => {\r\n const {\r\n buttonText,\r\n type = 'button',\r\n isSpinnerButton,\r\n showSpinner = false,\r\n className,\r\n ...rest\r\n } = props;\r\n\r\n const btnProps = {\r\n key: idx,\r\n type,\r\n className: `ml-2${className ? ` ${className}` : ''}`,\r\n ...rest\r\n };\r\n\r\n if (isSpinnerButton)\r\n return <SpinnerButton showSpinner={showSpinner} {...btnProps}>{buttonText}</SpinnerButton>;\r\n\r\n return <Button {...btnProps}>{buttonText}</Button>;\r\n};\r\n\r\ninterface PopupButtonsProps {\r\n buttons: PopupButton[];\r\n}\r\n\r\nexport function PopupButtons({ buttons }: PopupButtonsProps): React.ReactElement {\r\n return (\r\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\r\n {buttons.map((b, idx) => getButton(b, idx))}\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nexport function PopupLoadingSpinner(): React.ReactElement {\r\n return (\r\n <div className='text-center p-5'>\r\n <Spinner as='div' animation='border' role='status' />\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\r\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\r\n\r\nimport * as SearchUtils from './SearchUtils';\r\nimport { SearchInput } from './SearchInput';\r\n\r\nconst namespace = 'shared.searchBar';\r\n\r\nconst isFunction = FunctionHelper.isFunction;\r\n\r\nexport interface SearchBarProps<T extends HashObject> {\r\n /**\r\n * Optional initial query. Useful for populating the search bar\r\n * on a search results page.\r\n */\r\n initialQuery?: string;\r\n\r\n /**\r\n * Callback function for when a suggestion is selected.\r\n */\r\n onSuggestionSelected: (suggestion: T) => void;\r\n\r\n /**\r\n * Flag to determine if the query should be updated when a\r\n * suggestion is selected. Defaults to `true` in `defaultProps`.\r\n * If true, SearchUtils.getSuggestionValue is used to update the query.\r\n */\r\n updateQueryOnSelection?: boolean;\r\n\r\n /**\r\n * Optional callback for when the search query changes.\r\n */\r\n onQueryChange?: (query: string) => void;\r\n\r\n /**\r\n * Optional callback for when the search is submitted.\r\n */\r\n onSubmit?: (query: string) => void;\r\n\r\n /**\r\n * Optional callback to get the remote resource if remote search\r\n * results are being used.\r\n */\r\n getRemoteUrl?: (query: string) => string;\r\n\r\n /**\r\n * Optional formatting function for the data returned from the remote resource.\r\n */\r\n formatRemoteSuggestions?: (data: any) => T[];\r\n\r\n /**\r\n * Optional array of recent searches.\r\n */\r\n recentSearches?: T[];\r\n\r\n /**\r\n * A label for the recent search section.\r\n * A default is provided in the i18n config.\r\n */\r\n recentSearchHeading?: string;\r\n\r\n /**\r\n * A label for the main suggestions section.\r\n * Will not be used if getSections is passed as a prop.\r\n */\r\n suggestionsHeading?: string;\r\n\r\n /**\r\n * Optional array of local data to be used as suggestion sources.\r\n */\r\n local?: T[];\r\n\r\n /**\r\n * Optional array of initial suggestions. These suggestions will be available\r\n * when no query is present. Entering a query will begin filtering suggestions.\r\n * This is useful for using SearchBar to filter a list.\r\n */\r\n initialSuggestions?: T[];\r\n\r\n /**\r\n * Key used to filter local data. This is required if local is provided,\r\n * however a default of 'name' is set in `defaultProps`.\r\n */\r\n valueKey?: keyof T;\r\n\r\n /**\r\n * Optional function to filter suggestions from local data.\r\n * SearchUtils.getLocalSuggestions will be used by default.\r\n */\r\n getLocalSuggestions?: (query: string, local: T[]) => T[];\r\n\r\n /**\r\n * Optional function for splitting suggestions into sections.\r\n * Doesn't apply to recent searches (SuggestionType.Recent).\r\n */\r\n getSections?: (suggestions: T[]) => SearchUtils.SuggestionSection<T>[];\r\n\r\n /**\r\n * Placeholder for the search input.\r\n * A default is provided in the i18n config.\r\n */\r\n placeholder?: string;\r\n\r\n /**\r\n * The number of characters required to begin providing suggestions.\r\n * A default is provided in `defaultProps`.\r\n */\r\n activationLength?: number;\r\n\r\n /**\r\n * Max number of suggestions to render. A default is set in `defaultProps`.\r\n * Set to false to render all suggestions (e.g. for filtering a list in memory).\r\n */\r\n suggestionLimit?: number | false;\r\n\r\n /**\r\n * Callback function to get the component to be rendered for a suggestion.\r\n * SearchUtils.getSuggestionComponent is used a default. This uses\r\n * `valueKey` to render text.\r\n */\r\n getSuggestionComponent?: (suggestion: T) => JSX.Element;\r\n\r\n /**\r\n * If true, suggestions will be rendered, even if the input isn't focussed.\r\n */\r\n alwaysRenderSuggestions?: boolean;\r\n\r\n /*\r\n * Optional theme hash to override `defaultTheme` in SearchUtils.\r\n */\r\n theme?: Autosuggest.Theme;\r\n\r\n /**\r\n * Option to determine whether to render the search icon and if so,\r\n * which side to render it on. Defaults to `right` in `defaultProps`\r\n */\r\n searchIconPlacement?: 'left' | 'right' | false;\r\n\r\n /**\r\n * Flag to determine whether clicking the search icon should trigger\r\n * submitting the search query.\r\n */\r\n submitOnClickSearchIcon?: boolean;\r\n\r\n /**\r\n * Flag to determine whether the search input should be autofocused.\r\n */\r\n autoFocusInput?: boolean;\r\n\r\n /**\r\n * When true, the input field will be cleared whenever a suggestion is selected.\r\n */\r\n clearQueryOnSelect?: boolean;\r\n\r\n onBackspace?: () => void;\r\n}\r\n\r\nSearchBar.defaultProps = {\r\n updateQueryOnSelection: true,\r\n valueKey: 'name',\r\n activationLength: 3,\r\n suggestionLimit: 5,\r\n recentSearches: [],\r\n initialSuggestions: [],\r\n searchIconPlacement: 'right'\r\n};\r\n\r\nexport function SearchBar<T extends HashObject>(props: SearchBarProps<T>): JSX.Element {\r\n const initialState = SearchUtils.getInitialState(props.initialSuggestions, props.recentSearches);\r\n\r\n const [ query, setQuery ] = React.useState(props.initialQuery || '');\r\n const [ suggestions, setSuggestions ] = React.useState<SearchUtils.SuggestionState<T>>(initialState);\r\n\r\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\r\n\r\n const resetSuggestions = () => {\r\n setSuggestions(initialState);\r\n };\r\n\r\n const onChange = (e: React.ChangeEvent, { newValue }: Autosuggest.ChangeEvent) => {\r\n setQuery(newValue);\r\n\r\n if (isFunction(props.onQueryChange))\r\n props.onQueryChange(newValue);\r\n };\r\n\r\n const onSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n\r\n if (isFunction(props.onSubmit))\r\n props.onSubmit(query);\r\n };\r\n\r\n const onKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === 8 && props.onBackspace && !query)\r\n props.onBackspace();\r\n };\r\n\r\n return (\r\n <form onSubmit={onSubmit}>\r\n <Autosuggest<T>\r\n suggestions={\r\n SearchUtils.getSuggestionSections(\r\n suggestions,\r\n !query,\r\n props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading'),\r\n props.suggestionsHeading,\r\n props.getSections,\r\n props.suggestionLimit\r\n )\r\n }\r\n onSuggestionsFetchRequested={\r\n SearchUtils.onSuggestionsFetchRequestedHandler(props, setSuggestions, resetSuggestions)\r\n }\r\n onSuggestionsClearRequested={() => {\r\n if (!props.alwaysRenderSuggestions)\r\n resetSuggestions();\r\n }}\r\n onSuggestionSelected={(e: React.FormEvent, { suggestion }: Autosuggest.SuggestionSelectedEventData<T>) => {\r\n if (props.clearQueryOnSelect)\r\n setQuery('');\r\n\r\n props.onSuggestionSelected(suggestion);\r\n }}\r\n getSuggestionValue={(suggestion: T) => {\r\n if (!props.updateQueryOnSelection)\r\n return query;\r\n\r\n return SearchUtils.getSuggestionValue(props.valueKey, suggestion);\r\n }}\r\n renderSuggestion={(suggestion: T) => {\r\n if (isFunction(props.getSuggestionComponent))\r\n return props.getSuggestionComponent(suggestion);\r\n\r\n return SearchUtils.getSuggestionComponent(props.valueKey, suggestion);\r\n }}\r\n alwaysRenderSuggestions={props.alwaysRenderSuggestions}\r\n /** \r\n * Setting focusInputOnSuggestionClick to false when isMobile is true prevents the keyboard from \r\n * appearing on mobile devices when a suggestion is clicked.\r\n */\r\n focusInputOnSuggestionClick={!isMobile}\r\n inputProps={{\r\n placeholder: props.placeholder || LanguageService.getPhrase(namespace, 'placeholder'),\r\n value: query,\r\n onChange,\r\n onKeyDown,\r\n autoFocus: !!props.autoFocusInput,\r\n onClickSearchIcon: !!props.submitOnClickSearchIcon && onSubmit,\r\n searchIconPlacement: props.searchIconPlacement\r\n } as Autosuggest.InputProps<T>}\r\n renderInputComponent={SearchInput}\r\n theme={SearchUtils.getTheme(props.theme)}\r\n multiSection\r\n renderSectionTitle={SearchUtils.renderSectionTitle}\r\n getSectionSuggestions={SearchUtils.getSectionSuggestions}\r\n />\r\n </form>\r\n );\r\n}","import * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport styles from './search-bar.scss';\r\n\r\nconst getSvgContainerClassName = (onClickSearch: () => void) => {\r\n const className = 'd-inline-block svg-container';\r\n\r\n if (!FunctionHelper.isFunction(onClickSearch))\r\n return className;\r\n\r\n return className + ' cursor-pointer';\r\n};\r\n\r\ninterface SearchInputProps {\r\n onClickSearchIcon?: () => void;\r\n searchIconPlacement?: 'left' | 'right' | false;\r\n}\r\n\r\nexport function SearchInput<T extends {}>(props: SearchInputProps & Autosuggest.InputProps<T>): JSX.Element {\r\n const { onClickSearchIcon, searchIconPlacement, className, ...inputProps } = props;\r\n\r\n let inputClassName = `form-control ${styles.input}`;\r\n\r\n let iconContainerClassName = 'input-group-text bg-white';\r\n\r\n\r\n if (searchIconPlacement === 'right') {\r\n inputClassName += ' border-right-0';\r\n iconContainerClassName += ' pl-0';\r\n }\r\n\r\n if (searchIconPlacement === 'left') {\r\n inputClassName += ' border-left-0';\r\n iconContainerClassName += ' pr-0';\r\n }\r\n\r\n if (className)\r\n inputClassName += ` ${className}`;\r\n\r\n\r\n const SearchIcon = () => (\r\n <div className={iconContainerClassName}>\r\n <SvgContainer\r\n svgName={cvSvgLibrary.Search}\r\n size={SvgContainerSize.Small}\r\n onClick={onClickSearchIcon}\r\n className={getSvgContainerClassName(onClickSearchIcon)}\r\n />\r\n </div>\r\n );\r\n\r\n return (\r\n <div className='input-group'>\r\n {searchIconPlacement === 'left' &&\r\n <div className='input-group-prepend'>\r\n <SearchIcon />\r\n </div>\r\n }\r\n <input className={inputClassName} {...inputProps as React.HTMLProps<HTMLInputElement>} />\r\n {searchIconPlacement === 'right' &&\r\n <div className='input-group-append'>\r\n <SearchIcon />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport * as Autosuggest from 'react-autosuggest';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { TypeHelper } from 'libs/common/react/utils/TypeHelper';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SearchBarProps } from './SearchBar';\r\n\r\nimport styles from './search-bar.scss';\r\n\r\nexport enum SuggestionType {\r\n Local = 'local',\r\n Recent = 'recent',\r\n Remote = 'remote'\r\n}\r\n\r\n/**\r\n * Suggestions grouped as a section\r\n */\r\nexport interface SuggestionSection<T extends HashObject> {\r\n data: T[];\r\n title?: string;\r\n}\r\n\r\n/**\r\n * How suggestion data is stored in state in SearchBar\r\n */\r\nexport type SuggestionState<T extends HashObject> = { [ key in SuggestionType ]: T[] };\r\n\r\nexport function getInitialState<T extends HashObject>(\r\n initialSuggestions: T[], recentSearches: T[]\r\n): SuggestionState<T> {\r\n return {\r\n [SuggestionType.Recent]: recentSearches,\r\n [SuggestionType.Local]: initialSuggestions,\r\n [SuggestionType.Remote]: []\r\n };\r\n}\r\n\r\nfunction hasAttribute<T extends HashObject>(obj: T, valueKey: keyof T): boolean {\r\n return ObjectHelper.isObject(obj) && obj.hasOwnProperty(valueKey) && TypeHelper.isString(obj[valueKey]);\r\n}\r\n\r\nfunction getLocalSuggestions<T extends HashObject>(query: string, data: T[], valueKey: keyof T): T[] {\r\n const q = query.trim().toLowerCase();\r\n\r\n if (!q.length)\r\n return [];\r\n\r\n return data.filter(d => {\r\n if (!hasAttribute(d, valueKey) || !TypeHelper.isString(d[valueKey]))\r\n return false;\r\n\r\n return d[valueKey].trim().toLowerCase().includes(q);\r\n });\r\n}\r\n\r\nfunction fetchSuggestions<T extends HashObject>(\r\n getUrl: (query: string) => string, query: string, callback: (suggestions: T[]) => void\r\n): void {\r\n const resource = FunctionHelper.isFunction(getUrl) && getUrl(query);\r\n\r\n if (!resource)\r\n return;\r\n\r\n Flight.ajaxRequest({\r\n resource,\r\n type: HttpVerbs.GET,\r\n success: callback,\r\n error: () => {}\r\n });\r\n}\r\n\r\nexport function onSuggestionsFetchRequestedHandler<T extends HashObject>(\r\n props: SearchBarProps<T>,\r\n setSuggestions: React.Dispatch<React.SetStateAction<SuggestionState<T>>>,\r\n resetSuggestions: () => void\r\n): (params: Autosuggest.SuggestionsFetchRequestedParams) => void {\r\n return ({ value }: Autosuggest.SuggestionsFetchRequestedParams) => {\r\n if (!value.length)\r\n resetSuggestions();\r\n\r\n if (value.length < props.activationLength)\r\n return;\r\n\r\n if (props.local) {\r\n const filtered = FunctionHelper.isFunction(props.getLocalSuggestions)\r\n ? props.getLocalSuggestions(value, props.local)\r\n : getLocalSuggestions(value, props.local, props.valueKey);\r\n\r\n setSuggestions(s => ({ ...s, [SuggestionType.Local]: filtered }));\r\n }\r\n\r\n if (props.getRemoteUrl)\r\n fetchSuggestions(\r\n props.getRemoteUrl,\r\n value,\r\n (data: any) => setSuggestions(\r\n s => ({\r\n ...s,\r\n [SuggestionType.Remote]: FunctionHelper.isFunction(props.formatRemoteSuggestions)\r\n ? props.formatRemoteSuggestions(data)\r\n : data\r\n })\r\n )\r\n );\r\n };\r\n}\r\n\r\nexport function getSuggestionValue<T extends HashObject>(valueKey: keyof T, suggestion: T): string {\r\n if (!hasAttribute(suggestion, valueKey))\r\n return '';\r\n\r\n return suggestion[valueKey];\r\n}\r\n\r\n/**\r\n * Default suggestion component. Renders text based on valueKey.\r\n * \r\n * @param valueKey object attribute to be rendered.\r\n */\r\nexport function getSuggestionComponent<T extends HashObject>(valueKey: keyof T, suggestion: T): JSX.Element {\r\n return hasAttribute(suggestion, valueKey)\r\n ? <>\r\n {suggestion[valueKey]}\r\n </>\r\n : <></>;\r\n}\r\n\r\n/**\r\n * Maps the suggestion state into sections.\r\n * \r\n * @param getSections - an optional function passed in from anything consuming\r\n * SearchBar used to break the local and remote suggestions into sections.\r\n */\r\nexport function getSuggestionSections<T extends HashObject>(\r\n suggestionState: SuggestionState<T>,\r\n showRecentSearches: boolean,\r\n recentSearchHeading: string,\r\n suggestionsHeading?: string,\r\n getSections?: (suggestions: T[]) => SuggestionSection<T>[],\r\n suggestionLimit?: number | false\r\n): SuggestionSection<T>[] {\r\n const getTypeSuggestions = (type: SuggestionType) => {\r\n const typeSuggestions = suggestionState[type];\r\n\r\n return typeSuggestions || [];\r\n };\r\n\r\n const recentSuggestions = showRecentSearches ? getTypeSuggestions(SuggestionType.Recent) : [];\r\n const localSuggestions = getTypeSuggestions(SuggestionType.Local);\r\n const remoteSuggestions = getTypeSuggestions(SuggestionType.Remote);\r\n\r\n let sections: SuggestionSection<T>[] = [];\r\n\r\n if (recentSuggestions.length)\r\n sections.push({\r\n title: recentSearchHeading,\r\n data: recentSuggestions\r\n });\r\n\r\n const matchedSuggestions = [ ...localSuggestions, ...remoteSuggestions ];\r\n\r\n if (Number.isInteger((suggestionLimit as number)) && sections.length > suggestionLimit)\r\n matchedSuggestions.slice(0, (suggestionLimit as number));\r\n\r\n if (FunctionHelper.isFunction(getSections))\r\n sections.push(...getSections(matchedSuggestions));\r\n else\r\n sections.push({ title: suggestionsHeading, data: matchedSuggestions });\r\n\r\n return sections;\r\n}\r\n\r\n/**\r\n * Maps a section into a list of suggestions.\r\n */\r\nexport function getSectionSuggestions<T extends HashObject>(section: SuggestionSection<T>): T[] {\r\n return section.data;\r\n}\r\n\r\nexport function renderSectionTitle<T extends HashObject>(section: SuggestionSection<T>): JSX.Element | null {\r\n if (section.title)\r\n return <strong>{section.title}</strong>;\r\n}\r\n\r\nconst defaultTheme = {\r\n container: 'position-relative',\r\n suggestionsContainerOpen: `bg-white py-1 border rounded ${styles.suggestionsContainerOpen}`,\r\n suggestionsList: 'list-unstyled m-0',\r\n suggestion: 'cursor-pointer py-1 px-2',\r\n suggestionHighlighted: styles.suggestionHighlighted,\r\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\r\n};\r\n\r\nexport function getTheme(theme: Autosuggest.Theme = {}): Autosuggest.Theme {\r\n return Object.assign(defaultTheme, theme);\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"cv--input--3MysI\",\"suggestionsContainerOpen\":\"cv--suggestionsContainerOpen--ahMdW\",\"sectionContainer\":\"cv--sectionContainer--xstWL\",\"suggestionHighlighted\":\"cv--suggestionHighlighted--3YTCa\"};","import * as React from 'react';\r\nimport { Button, ButtonProps, Spinner } from 'react-bootstrap';\r\n\r\ninterface ButtonDimensions {\r\n height?: number;\r\n width?: number;\r\n}\r\n\r\nexport interface SpinnerButtonProps extends ButtonProps {\r\n showSpinner: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport function SpinnerButton(props: React.PropsWithChildren<SpinnerButtonProps>): React.ReactElement {\r\n const { showSpinner, children, ...otherProps } = props;\r\n\r\n const ref = React.useRef<Button & HTMLButtonElement>();\r\n const [ dimensions, setDimensions ] = React.useState<ButtonDimensions>({});\r\n\r\n React.useEffect(() => {\r\n const { width, height } = dimensions;\r\n\r\n // Only set dimensions once\r\n if (width && height)\r\n return;\r\n\r\n const el = ref.current;\r\n\r\n const elHeight = el.offsetHeight;\r\n const elWidth = el.offsetWidth;\r\n\r\n if (!elHeight || !elWidth)\r\n return;\r\n\r\n setDimensions({\r\n width: elWidth,\r\n height: elHeight\r\n });\r\n });\r\n\r\n React.useEffect(() => {\r\n const { width, height } = dimensions;\r\n\r\n if (!width || !height)\r\n return;\r\n\r\n const el = ref.current;\r\n\r\n /**\r\n * offsetHeight and offsetWidth return floored\r\n * integers so we add 1px to each to account\r\n * for any rounding loss.\r\n */\r\n el.style.width = `${width + 1}px`;\r\n el.style.height = `${height + 1}px`;\r\n }, [dimensions]);\r\n\r\n return (\r\n <Button ref={ref} disabled={showSpinner} {...otherProps} >\r\n {showSpinner\r\n ? <Spinner as='span' animation='border' role='status' size='sm' />\r\n : children\r\n }\r\n </Button>\r\n );\r\n}","import * as React from 'react';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { SvgHelper } from 'libs/shared/utils/SvgHelper';\r\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\r\n\r\nconst DEFAULT_CLASS_NAME = 'd-inline-block svg-container';\r\nconst DEFAULT_TAG_NAME = 'span';\r\n\r\nexport enum SvgContainerSize {\r\n Standard = 'std',\r\n Small = 'sm',\r\n Medium = 'md',\r\n Large = 'lg',\r\n ExtraLarge = 'xlg'\r\n}\r\n\r\ninterface SvgContainerProps {\r\n svgName: string;\r\n size?: SvgContainerSize;\r\n className?: string;\r\n tagName?: React.ElementType;\r\n onClick?: (...args: any[]) => void;\r\n title?: string;\r\n tooltipPlacement?: Placement;\r\n}\r\n\r\nexport function SvgContainer(props: SvgContainerProps): React.ReactElement {\r\n const {\r\n svgName,\r\n className = DEFAULT_CLASS_NAME,\r\n tagName = DEFAULT_TAG_NAME,\r\n size = SvgContainerSize.Standard,\r\n onClick,\r\n title,\r\n tooltipPlacement = 'right'\r\n } = props;\r\n\r\n const Container = tagName;\r\n\r\n const containerProps = {\r\n dangerouslySetInnerHTML: { __html: SvgHelper.getSvg(svgName) },\r\n className: `${className} ${size}`,\r\n onClick: FunctionHelper.isFunction(onClick) ? onClick : null\r\n };\r\n\r\n if (!title)\r\n return <Container {...containerProps} />;\r\n\r\n return (\r\n <Tooltip title={title} placement={tooltipPlacement}>\r\n <Container {...containerProps} />\r\n </Tooltip>\r\n );\r\n}","import * as React from 'react';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\ninterface LanguageInterpolationOptions {\r\n smartCount?: number;\r\n [propName: string]: any;\r\n}\r\n\r\ninterface TextProps {\r\n phrase: string;\r\n namespace?: string;\r\n options?: LanguageInterpolationOptions;\r\n}\r\n\r\n// Value is the language namespace\r\nexport const LanguageNamespaceContext = React.createContext<string>('');\r\n\r\nexport const Text = React.memo(function(props: TextProps): JSX.Element {\r\n const { phrase, namespace: namespaceProp, options } = props;\r\n\r\n const contextNamespace = React.useContext(LanguageNamespaceContext);\r\n const namespace = namespaceProp || contextNamespace;\r\n\r\n const translation = LanguageService.getPhrase(namespace, phrase, options);\r\n\r\n return <span dangerouslySetInnerHTML={{ __html: translation }}></span>;\r\n}, (prevProps, nextProps) => {\r\n return (\r\n prevProps.namespace === nextProps.namespace\r\n && prevProps.phrase === nextProps.phrase\r\n && ObjectHelper.isEqual(prevProps.options, nextProps.options)\r\n );\r\n});","import * as React from 'react';\r\nimport { OverlayTrigger, Tooltip as BsTooltip } from 'react-bootstrap';\r\nimport { Placement } from 'react-bootstrap/Overlay';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\ntype TriggerType = 'hover' | 'click' | 'focus';\r\n\r\ninterface TooltipProps {\r\n title: string;\r\n placement?: Placement;\r\n trigger?: TriggerType | TriggerType[];\r\n}\r\n\r\nTooltip.defaultProps = {\r\n trigger: [ 'hover', 'click', 'focus' ],\r\n placement: 'top'\r\n};\r\n\r\nexport function Tooltip(props: React.PropsWithChildren<TooltipProps>): React.ReactElement {\r\n const { title, placement, trigger, children } = props;\r\n\r\n return (\r\n <OverlayTrigger\r\n placement={placement}\r\n overlay={<BsTooltip id={`${title}-${RandomHelper.getRandomInt()}`}>{title}</BsTooltip>}\r\n trigger={trigger}\r\n >\r\n {/*\r\n For some reason the children here need to be wrapped in a span. Otherwise `<OverlayTrigger />` won't work\r\n when `children` is a react component.\r\n https://lifesaver.codes/answer/tooltip-doesn-t-show-when-overlaytrigger-child-is-a-custom-react-component\r\n */}\r\n <span>\r\n {children}\r\n </span>\r\n </OverlayTrigger>\r\n );\r\n}\r\n","export const CacheDurations = {\r\n SHORT: 120, // 2 minutes\r\n STANDARD: 600 // 10 minutes\r\n};","import { ImageType } from 'libs/shared/enums/Images';\r\n\r\ninterface IImageMinDimensions {\r\n width: number;\r\n height: number;\r\n}\r\n\r\n// Dimensions taken from the CV Image Style Guide:\r\n// https://clickview.quip.com/iKonAkQXrNDO/Image-Format-Guide-V5-Feb-2020\r\nexport const ImageMinDimensions: { [index: string]: IImageMinDimensions } = {\r\n [ImageType.Thumbnails]: {\r\n width: 1280,\r\n height: 720\r\n },\r\n\r\n [ImageType.Banners]: {\r\n width: 3600,\r\n height: 666\r\n },\r\n\r\n [ImageType.Covers]: {\r\n width: 1080,\r\n height: 1080\r\n },\r\n\r\n [ImageType.Posters]: {\r\n width: 1000,\r\n height: 1500\r\n },\r\n\r\n [ImageType.TallPosters]: {\r\n width: 1080,\r\n height: 1920\r\n },\r\n\r\n [ImageType.HeroBanners]: {\r\n width: 1920,\r\n height: 640\r\n }\r\n};","export const LayoutRegions = {\r\n TOP_NAV: 'top:nav',\r\n LEFT_NAV: 'left:nav',\r\n CONTENT: 'content',\r\n POPUP: 'popup',\r\n ALERT: 'alert',\r\n};","// Maps to enum in SubjectApi but uses the\r\n// key rather than the value\r\nexport enum ClassificationType {\r\n Subject = 'Subject',\r\n Topic = 'Topic'\r\n}","export enum GlanceFormat {\r\n Markdown = 'text/markdown'\r\n}","export enum ImageSize {\r\n Small = 'small',\r\n Medium = 'medium',\r\n Large = 'large'\r\n}\r\n\r\nexport enum ImageType {\r\n Thumbnails = 0,\r\n Banners = 1,\r\n Avatars = 2,\r\n Logos = 3,\r\n Covers = 4,\r\n Posters = 5,\r\n TallPosters = 6,\r\n HeroBanners = 7\r\n}\r\n\r\nexport enum ResizeType {\r\n Crop,\r\n Stretched,\r\n Cover\r\n}\r\n\r\nexport enum FileIdType {\r\n None,\r\n ImageAPIv1,\r\n FileAPIv1,\r\n ImageAPIv2,\r\n}","export enum MasterType {\r\n Audience = 1,\r\n Category = 2,\r\n Channel = 3,\r\n Chapter = 4,\r\n Comment = 5,\r\n OwnerComment = 6,\r\n Image = 7,\r\n Thumbnail = 8,\r\n Avatar = 9,\r\n Banner = 10,\r\n Video = 11,\r\n Trailer = 12,\r\n Rating = 13,\r\n Topic = 14,\r\n Series = 15,\r\n Season = 16,\r\n HostedMediaObjectCollection = 17,\r\n ExchangeCollection = 18,\r\n CustomMediaObjectCollection = 19,\r\n Playlist = 20,\r\n ClickViewTvCollection = 21,\r\n ClickViewProductionsCollection = 22,\r\n User = 23,\r\n SystemUser = 24,\r\n Customer = 25,\r\n Country = 26,\r\n Organisation = 28,\r\n SystemOrganisation = 29,\r\n Group = 30,\r\n SystemGroup = 31,\r\n FlagReason = 32,\r\n Library = 33,\r\n Interactive = 34,\r\n WorkspaceCollection = 35,\r\n Conversation = 36,\r\n Message = 37,\r\n Notification = 38,\r\n Clip = 39,\r\n Link = 40,\r\n UserChannel = 41,\r\n Resource = 42,\r\n VideoStream = 43,\r\n AudioStream = 44,\r\n Tag = 45,\r\n Subtitle = 46,\r\n LicencedContentCollection = 47,\r\n PublicCollection = 48,\r\n CategoryTree = 49,\r\n Logo = 50,\r\n Permission = 51,\r\n Subject = 52,\r\n Field = 53,\r\n Company = 54,\r\n Person = 55,\r\n Cover = 56,\r\n Poster = 57,\r\n SubjectAudience = 58\r\n}","/**\r\n * Breakpoints:\r\n * - xs: 0\r\n * - sm: 576px\r\n * - md: 768px\r\n * - lg: 992px\r\n * - xl: 1200px\r\n */\r\n\r\nexport enum MediaQueryStrings {\r\n XS = `(max-width: 575px)`,\r\n SM = `(min-width: 576px) and (max-width: 767px)`,\r\n MD = `(min-width: 768px) and (max-width: 991px)`,\r\n LG = `(min-width: 992px)`,\r\n XL = `(min-width: 1200px)`,\r\n XXL = `(min-width: 1440px)`, // XXL is enough for both a max size .container and our left nav\r\n\r\n SMDown = `(max-width: 576px)`,\r\n MDDown = `(max-width: 768px)`\r\n}","export enum ThemeType {\r\n Glance = 'glance'\r\n}","import { Flight } from 'libs/common/flight';\r\n\r\nconst currentUser: Flight.Request = {\r\n url: '/api/currentUser',\r\n key: 'currentuser'\r\n};\r\n\r\nconst workspace: Flight.Request = {\r\n url: 'api/domain/v2/me/workspace',\r\n key: 'workspace'\r\n};\r\n\r\nexport const UserRequests = {\r\n currentUser,\r\n workspace\r\n};","import { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseAlertService, BaseAlert, BaseAlertOptions, AlertType, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\r\n\r\nexport const useAlerts = () => {\r\n const alertService = useService<BaseAlertService>(CommonServices.ALERT);\r\n\r\n return {\r\n success(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.success(alertContent)();\r\n },\r\n error(alertContent: string | BaseAlert | BaseAlertOptions): void {\r\n alertService.error(alertContent)();\r\n },\r\n warning(alertContent: string): void {\r\n alertService.createAlert({\r\n type: AlertType.Warning,\r\n heading: DefaultAlertHeading.Warning,\r\n message: alertContent\r\n });\r\n }\r\n };\r\n};","import * as React from 'react';\r\nimport { FormikValues, FormikProps } from 'formik';\r\n\r\n/**\r\n * useCanSubmitForm determines if a form can be submitted.\r\n * \r\n * It will return true if a form is valid and has been changed from it's initial state.\r\n * \r\n * A common use case for this is determining whether or not to enable\r\n * a submit button in a form.\r\n */\r\nexport function useCanSubmitForm<Values extends FormikValues>(formikProps: FormikProps<Values>): boolean {\r\n const [ canSubmit, setCanSubmit ] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!formikProps.isValid) {\r\n setCanSubmit(false);\r\n return;\r\n }\r\n\r\n // If the form values have changed of if allowInitialSubmit is true, set canSubmit to true.\r\n if (formikProps.dirty || formikProps.initialStatus?.allowInitialSubmit)\r\n setCanSubmit(true);\r\n else\r\n setCanSubmit(false);\r\n\r\n }, [ formikProps.isValid, formikProps.initialStatus?.allowInitialSubmit, formikProps.dirty, formikProps.values ]);\r\n\r\n React.useEffect(() => {\r\n if (formikProps.isSubmitting)\r\n setCanSubmit(false);\r\n }, [formikProps.isSubmitting]);\r\n\r\n return canSubmit;\r\n}\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport function useMediaQuery(query: string): boolean {\r\n const [ matches, setMatches ] = useState(window.matchMedia(query).matches);\r\n\r\n useEffect(() => {\r\n const media = window.matchMedia(query);\r\n\r\n if (media.matches !== matches)\r\n setMatches(media.matches);\r\n\r\n const listener = () => setMatches(media.matches);\r\n\r\n media.addListener(listener);\r\n\r\n return () => media.removeListener(listener);\r\n }, [query]);\r\n\r\n return matches;\r\n}\r\n","import { useState, useEffect } from 'react';\r\n\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nfunction isOrderEqual(arr1: BaseObject[], arr2: BaseObject[]): boolean {\r\n let isEqual = true;\r\n\r\n if (arr1.length !== arr2.length)\r\n return false;\r\n\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i].id !== arr2[i].id) {\r\n isEqual = false;\r\n break;\r\n }\r\n }\r\n\r\n return isEqual;\r\n}\r\n\r\n/**\r\n * This function can be used to temporarily store an array of reordered objects\r\n * until the array obtained from the application store updates to the new order.\r\n * \r\n * @param items array of objects from application store.\r\n */\r\nexport function useReorderedItems<T extends BaseObject>(\r\n items: T[]\r\n): [ T[], React.Dispatch<React.SetStateAction<T[]>> ] {\r\n const [ reorderedItems, setReorderedItems ] = useState<T[]>();\r\n\r\n useEffect(() => {\r\n if (!reorderedItems)\r\n return;\r\n\r\n if (items.length !== reorderedItems.length || isOrderEqual(items, reorderedItems))\r\n setReorderedItems(null);\r\n }, [items]);\r\n\r\n return [ reorderedItems, setReorderedItems ];\r\n}","import * as Actions from './actions';\r\nimport * as Arrows from './arrows';\r\nimport * as Objects from './objects';\r\nimport * as Player from './player';\r\nimport * as Status from './status';\r\nimport * as _ from 'underscore';\r\n\r\n/**\r\n * SVGs must be exported here to ensure that they are part\r\n * of the final webpack bundle.\r\n * DO NOT import this into local Marionette files.\r\n */\r\nexport const importedSvgs = [\r\n Actions.AddToPlaylist,\r\n Actions.Delete,\r\n Actions.Edit,\r\n Actions.More,\r\n Actions.Preview,\r\n Actions.Search,\r\n Actions.Share,\r\n Actions.Upload,\r\n Actions.Plus,\r\n Actions.Close,\r\n Actions.Down,\r\n Actions.Right,\r\n Actions.UpDown,\r\n Actions.VisibleOff,\r\n Actions.VisibleOn,\r\n Actions.NewWindow,\r\n Actions.NoEdit,\r\n Actions.EditClickView,\r\n Arrows.Caret,\r\n Arrows.ArrowLeft,\r\n Arrows.ChevronUp,\r\n Arrows.ChevronDown,\r\n Arrows.ChevronLeft,\r\n Arrows.ChevronRight,\r\n Arrows.Enter,\r\n Objects.Folder,\r\n Objects.File,\r\n Objects.FileImg,\r\n Objects.FilePDF,\r\n Objects.FileExcel,\r\n Objects.FilePowerpoint,\r\n Objects.FileWord,\r\n Objects.FileZip,\r\n Objects.Resources,\r\n Objects.Star,\r\n Objects.StarOutline,\r\n Objects.Archive,\r\n Objects.Bell,\r\n Objects.Playlist,\r\n Objects.PublisherArchive,\r\n Objects.Link,\r\n Objects.Calendar,\r\n Objects.Handle,\r\n Objects.Subject,\r\n Objects.Series,\r\n Objects.Heart,\r\n Objects.HeartOutline,\r\n Objects.WhiteWave,\r\n Objects.Cog,\r\n Objects.Video,\r\n Objects.Compass,\r\n Objects.History,\r\n Objects.Tag,\r\n Player.Play,\r\n Player.PlayCircle,\r\n Player.CloseCaption,\r\n Status.Check,\r\n Status.CheckCircleOutline,\r\n Status.CheckCircle,\r\n Status.CloseCaptionBadge,\r\n Status.Info,\r\n Status.Question,\r\n Status.Lock,\r\n Status.Warning,\r\n Status.WarningOutline\r\n];\r\n\r\n/**\r\n * SVGs available within the CV library\r\n * Strings *must* match the svg filename.\r\n *\r\n * DO NOT import this into local Marionette files.\r\n * Use cvSvgLibrary instead.\r\n */\r\nexport enum localSvgs {\r\n AddToPlaylists = 'add-to-playlist',\r\n Caret = 'caret',\r\n Delete = 'delete',\r\n Edit = 'edit',\r\n NoEdit = 'no-edit',\r\n Close = 'close',\r\n Folder = 'folder',\r\n Resources = 'resources',\r\n More = 'more',\r\n Bell = 'bell',\r\n Plus = 'plus',\r\n Search = 'search',\r\n Share = 'share',\r\n Upload = 'upload',\r\n Preview = 'preview',\r\n CircleCheck = 'circle-check',\r\n Down = 'down',\r\n Right = 'right',\r\n UpDown = 'up-down',\r\n ChevronUp = 'chevron-up',\r\n ChevronDown = 'chevron-down',\r\n ChevronLeft = 'chevron-left',\r\n ChevronRight = 'chevron-right',\r\n VisibleOff = 'visible-off',\r\n VisibleOn = 'visible-on',\r\n PublisherArchive = 'publisher-archive',\r\n Play = 'play',\r\n PlayCircle = 'play-circle',\r\n ArrowLeft = 'arrow-left',\r\n CheckCircleOutline = 'check-circle-o',\r\n CheckCircle = 'check-circle',\r\n Check = 'check',\r\n Lock = 'lock',\r\n Link = 'link',\r\n Info = 'info',\r\n Question = 'question',\r\n Star = 'star',\r\n StarOutline = 'star-o',\r\n Archive = 'archive',\r\n Warning = 'warning',\r\n WarningOutline = 'warning-o',\r\n NewWindow = 'new-window',\r\n File = 'file',\r\n FilePDF = 'file-pdf',\r\n FileExcel = 'file-excel',\r\n FilePowerpoint = 'file-ppt',\r\n FileWord = 'file-word',\r\n FileImg = 'file-img',\r\n FileZip = 'file-zip',\r\n Enter = 'enter',\r\n Calendar = 'calendar',\r\n CloseCaption = 'close-caption',\r\n CloseCaptionBadge = 'close-caption-badge',\r\n Playlist = 'playlist',\r\n Handle = 'handle',\r\n Subject = 'subject',\r\n Series = 'series',\r\n EditClickView = 'edit-clickview',\r\n Heart = 'heart',\r\n HeartOutline = 'heart-outline',\r\n WhiteWave = 'white-wave',\r\n Cog = 'cog',\r\n Video = 'video',\r\n Compass = 'compass',\r\n History = 'history',\r\n Tag = 'tag'\r\n}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"add-to-playlist\",\"icon\":[\"24\",\"24\",[],\"\",\"M20.1 16.4h1.8a.6.6 0 1 1 0 1.2h-1.8v1.8a.6.6 0 1 1-1.2 0v-1.8h-1.8a.6.6 0 1 1 0-1.2h1.8v-1.8a.6.6 0 0 1 1.2 0v1.8zM10.5 9a.5.5 0 1 1 0-1h6a.5.5 0 1 1 0 1h-6zm0 3.5a.5.5 0 1 1 0-1h6a.5.5 0 1 1 0 1h-6zm0 3.5a.5.5 0 1 1 0-1h4a.5.5 0 1 1 0 1h-4zm5.5 3a.5.5 0 1 1 0 1H6.5A2.5 2.5 0 0 1 4 17.5v-11A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5V12a.5.5 0 1 1-1 0V6.5A1.5 1.5 0 0 0 17.5 5h-11A1.5 1.5 0 0 0 5 6.5v11A1.5 1.5 0 0 0 6.5 19H16zm-8-2.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.959 10.641l4.402-4.296a.964.964 0 0 1 1.358 0 .951.951 0 0 1 0 1.35l-4.403 4.297 4.403 4.378a.951.951 0 0 1 0 1.35.964.964 0 0 1-1.358 0l-4.402-4.378-4.32 4.378a.964.964 0 0 1-1.358 0 .951.951 0 0 1 0-1.35l4.32-4.378-4.32-4.362a.951.951 0 0 1 0-1.35.964.964 0 0 1 1.358 0l4.32 4.361z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"delete\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.5 7h4a.5.5 0 1 1 0 1h-1.14a1 1 0 0 1-.005.09l-.909 10a1 1 0 0 1-.996.91h-6.9a1 1 0 0 1-.996-.91l-.91-10A1.013 1.013 0 0 1 6.64 8H5.5a.5.5 0 0 1 0-1h4A1.5 1.5 0 0 1 11 5.5h2A1.5 1.5 0 0 1 14.5 7zm-1 0a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5h3zm-4 3a.463.463 0 0 0-.462.499L9.462 16a.54.54 0 0 0 .574.498.463.463 0 0 0 .426-.498l-.424-5.502A.54.54 0 0 0 9.5 10zm2.5 0a.5.5 0 0 0-.5.5V16a.5.5 0 1 0 1 0v-5.5a.5.5 0 0 0-.5-.5zm2.5 0a.54.54 0 0 0-.538.499L13.538 16a.463.463 0 0 0 .462.5.54.54 0 0 0 .538-.499l.424-5.502A.463.463 0 0 0 14.5 10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"down\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10l8 .014L12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"edit-clickview\",\"icon\":[\"20\",\"20\",[],\"\",\"M17.6404852,5.71727477 L18.2297408,6.30653042 C18.7178962,6.79468579 18.7178962,7.58614201 18.2297408,8.07429738 L8.60812289,17.6959153 C6.71135346,18.0295451 5.75309028,18.1864816 5.73333333,18.1667246 C5.71357639,18.1469677 5.88616537,17.2043571 6.25110029,15.3388927 L15.8727182,5.71727477 C16.3608736,5.22911941 17.1523298,5.22911941 17.6404852,5.71727477 Z M8.7636789,16.361848 L16.05144,9.07408693 L14.8729287,7.89557563 L7.54002172,15.2284826 L8.7636789,16.361848 Z M6.74626541,17.1725049 C7.12145752,17.1092038 7.58975231,17.0283895 8.15085565,16.9301078 L6.99799308,15.862313 C6.89682248,16.3819093 6.8128974,16.8187273 6.74626541,17.1725049 Z M15.4621843,7.30631998 L16.6406956,8.48483128 L17.6404852,7.48504173 C17.8032036,7.32232327 17.8032036,7.05850453 17.6404852,6.89578608 L17.0512295,6.30653042 C16.8885111,6.14381197 16.6246923,6.14381197 16.4619739,6.30653042 L15.4621843,7.30631998 Z M6.33566019,14.9908489 C6.2812423,14.9851574 6.22594201,14.9756491 6.16991424,14.9622805 C5.78045547,14.8577915 5.5109401,14.5829916 5.41684139,14.197065 L5.16924027,13.2272939 L4.21481414,13.4992408 C3.82064978,13.614606 3.44283804,13.5120571 3.186267,13.236167 C2.88681965,12.9560388 2.78427075,12.578227 2.89864522,12.187493 L3.17158282,11.2296365 L2.20423564,10.9826478 C1.82188543,10.8870603 1.55144636,10.6218219 1.4331146,10.2152085 C1.34005988,9.82437875 1.44481708,9.45772856 1.72601896,9.19546209 L2.43808286,8.49887783 L1.73450689,7.81040417 C1.44481706,7.54002697 1.34005989,7.17337687 1.439649,6.75790801 C1.55144635,6.37593371 1.82188539,6.11069542 2.20181175,6.01572028 L3.17158282,5.76811916 L2.89963593,4.81369299 C2.78427075,4.41952863 2.88681965,4.04171689 3.16270985,3.78514587 C3.442838,3.48569854 3.82064974,3.38314964 4.2113838,3.49752411 L5.16924027,3.77046171 L5.41554008,2.80590417 C5.51183431,2.41109782 5.78619407,2.13673807 6.15902913,2.0463353 C6.55319349,1.93097012 6.93100525,2.03351902 7.20467421,2.32619001 L7.89999894,3.04211696 L8.594506,2.32703389 C8.87243071,2.03952554 9.24209506,1.93918808 9.61899753,2.04044384 C10.0138038,2.13673809 10.2881636,2.41109789 10.3831565,2.80069064 L10.6307576,3.77046171 L11.5851838,3.49851482 C11.9793481,3.38314964 12.3571599,3.48569854 12.6137309,3.76158875 C12.9131782,4.04171689 13.0157271,4.41952857 12.9013527,4.8102627 L12.6284151,5.76811916 L13.5957624,6.01510789 C13.9781125,6.11069542 14.2485515,6.37593369 14.3668833,6.78254721 C14.3761095,6.82129727 14.3833912,6.85980963 14.3887491,6.89800613 L12.4311686,8.86525019 C12.2885501,8.50246788 12.3664513,8.07377489 12.6626209,7.7840438 L13.3831727,7.07934901 C13.4057811,7.05824779 13.4051218,7.06055538 13.4006115,7.03880681 C13.3874896,6.9939735 13.3872742,6.99376225 13.3508029,6.98463799 L12.3810318,6.73703687 L12.3543769,6.72983797 C11.8232342,6.57849086 11.5153491,6.0252236 11.6666962,5.49408097 L11.9406245,4.53279433 C11.9501787,4.50015106 11.9538346,4.51362027 11.9070166,4.46830299 C11.8852565,4.44504217 11.8987257,4.44869811 11.8626522,4.45924293 L10.9047957,4.73218053 L10.8781408,4.73937942 C10.3430223,4.87600541 9.79846586,4.55296343 9.66183987,4.01784495 L9.41293742,3.04286026 C9.40513226,3.0108591 9.4140425,3.01976934 9.37095513,3.00912543 C9.33213613,2.99871057 9.33745796,2.99726608 9.31267674,3.02289983 L8.61735201,3.73882678 L8.59670876,3.75947002 C8.2005256,4.14425223 7.56742808,4.13500994 7.18264587,3.73882678 L6.48086195,3.01612347 C6.45910183,2.99286265 6.4725711,2.9965186 6.4179566,3.01196417 C6.38595535,3.01976935 6.39486559,3.01085911 6.3857591,3.04807388 L6.13815798,4.01784495 L6.13095909,4.04449986 C5.97961199,4.5756425 5.42634475,4.88352762 4.89520211,4.73218053 L3.93391535,4.45825223 C3.90127212,4.44869811 3.91474139,4.44504217 3.86942412,4.49186014 C3.84616328,4.51362028 3.84981922,4.50015102 3.86036404,4.53622453 L4.13330164,5.494081 L4.14050053,5.52073591 C4.27712653,6.05585439 3.95408454,6.60041087 3.41896607,6.73703687 L2.44677117,6.98525039 C2.41272371,6.99376225 2.41250834,6.99397349 2.40592081,7.01416766 C2.3948761,7.06055542 2.39421677,7.05824776 2.42531312,7.08745955 L3.13737702,7.78404381 L3.15291688,7.79958367 C3.53912638,8.1943756 3.53216895,8.82750235 3.13737702,9.21371185 L2.41682511,9.91840678 C2.39421677,9.93950789 2.3948761,9.93720022 2.3993864,9.95894886 C2.41250834,10.0037822 2.41272371,10.0039934 2.44919499,10.0131176 L3.41896606,10.2607188 L3.44562098,10.2679177 C3.97676362,10.4192648 4.28464874,10.972532 4.13330164,11.5036746 L3.85937334,12.4649614 C3.84981922,12.4976046 3.84616328,12.4841354 3.89298124,12.5294526 C3.91474137,12.5527135 3.90127209,12.5490575 3.93734565,12.5385127 L4.89520212,12.2655751 L4.92185702,12.2583762 C5.4569755,12.1217502 6.00153199,12.4447922 6.13815798,12.9799107 L6.38706042,13.9548953 C6.3957598,13.9905628 6.39169395,13.9864172 6.41528883,13.9929559 C6.46167656,14.0040006 6.45936885,14.00466 6.48858067,13.9735636 L7.18516493,13.2614997 L7.20070477,13.2459599 C7.4952939,12.9577749 7.92258715,12.888504 8.28097421,13.0359319 L6.33566019,14.9908489 Z M6.70489207,8.77616163 L9.31429327,6.16676041 C9.44212761,6.03892605 9.65593967,6.03389908 9.78471434,6.16267377 L10.2815938,6.65955323 C10.4116803,6.78963968 10.4085388,6.9989426 10.2775071,7.12997428 L6.95925927,10.4482222 C6.89767261,10.5098088 6.81613041,10.5428917 6.73375541,10.5462414 C6.63512454,10.5601257 6.53103126,10.5287286 6.45266973,10.450367 L4.80169873,8.79939603 C4.67185163,8.66954896 4.66967053,8.4612063 4.79975698,8.33111983 L5.29663643,7.83424043 C5.42541113,7.7054657 5.63211299,7.70338256 5.76491261,7.83618216 L6.70489207,8.77616163 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"edit\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.636 17.834l8.746-8.745-1.414-1.414-8.8 8.8 1.468 1.36zm-2.42.973c.45-.076 1.012-.173 1.685-.29l-1.383-1.282a173.71 173.71 0 0 0-.302 1.572zm10.459-11.84l1.414 1.415 1.2-1.2a.5.5 0 0 0 0-.707l-.708-.707a.5.5 0 0 0-.707 0l-1.2 1.2zm2.614-1.906l.707.707a1.5 1.5 0 0 1 0 2.121L7.45 19.435c-2.276.4-3.426.589-3.45.565-.024-.024.183-1.155.621-3.393L16.167 5.06a1.5 1.5 0 0 1 2.122 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"expand\",\"icon\":[\"24\",\"24\",[],\"\",\"M14.06 21.28l-.353.354-.707-.707.354-.354 7.22-7.22.353-.353.707.707-.354.354-7.22 7.22zm4 .465l-.353.353-.707-.707.354-.353 3.684-3.684.353-.354.707.707-.353.354-3.684 3.684z\"]}","import AddToPlaylist from './add-to-playlist.svg';\r\nimport Close from './close.svg';\r\nimport Delete from './delete.svg';\r\nimport Edit from './edit.svg';\r\nimport Expand from './expand.svg';\r\nimport Minus from './minus.svg';\r\nimport More from './more.svg';\r\nimport NewWindow from './new-window.svg';\r\nimport Plus from './plus.svg';\r\nimport Preview from './preview.svg';\r\nimport Search from './search.svg';\r\nimport Share from './share.svg';\r\nimport Upload from './upload.svg';\r\nimport Down from './down.svg';\r\nimport Right from './right.svg';\r\nimport UpDown from './up-down.svg';\r\nimport VisibleOff from './visible-off.svg';\r\nimport VisibleOn from './visible-on.svg';\r\nimport NoEdit from './no-edit.svg';\r\nimport EditClickView from './edit-clickview.svg';\r\n\r\nexport {\r\n AddToPlaylist,\r\n Close,\r\n Delete,\r\n Edit,\r\n Expand,\r\n Minus,\r\n More,\r\n NewWindow,\r\n Plus,\r\n Preview,\r\n Search,\r\n Share,\r\n Upload,\r\n Down,\r\n Right,\r\n UpDown,\r\n VisibleOff,\r\n VisibleOn,\r\n NoEdit,\r\n EditClickView\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"minus\",\"icon\":[\"24\",\"24\",[],\"\",\"\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"more\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 13.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 5.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0-11a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"new-window\",\"icon\":[\"24\",\"24\",[],\"\",\"M17.395 5.526h-3.244a.763.763 0 0 1 0-1.526h5.086a.76.76 0 0 1 .763.763v5.086a.763.763 0 0 1-1.526 0V6.605l-5.172 5.172a.763.763 0 1 1-1.079-1.08l5.172-5.171zM8.5 5.5a.75.75 0 0 1 0 1.5H6.75a.25.25 0 0 0-.25.25v10c0 .138.112.25.25.25h10a.25.25 0 0 0 .25-.25V15.5a.75.75 0 1 1 1.5 0v1.75A1.75 1.75 0 0 1 16.75 19h-10A1.75 1.75 0 0 1 5 17.25v-10c0-.966.784-1.75 1.75-1.75H8.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"no-edit\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.321 14.15l.707.707-4.578 4.578c-2.276.4-3.426.589-3.45.565-.024-.024.183-1.155.621-3.393L9.2 12.028l.707.707-3.739 3.74 1.468 1.36 3.685-3.685zm2.828-2.829l2.233-2.232-1.414-1.414-2.233 2.232-.707-.707 4.14-4.14a1.5 1.5 0 0 1 2.12 0l.708.708a1.5 1.5 0 0 1 0 2.121l-4.14 4.14-.707-.708zm-8.933 7.486c.45-.076 1.012-.173 1.685-.29l-1.383-1.282a173.71 173.71 0 0 0-.302 1.572zm10.459-11.84l1.414 1.415 1.2-1.2a.5.5 0 0 0 0-.707l-.708-.707a.5.5 0 0 0-.707 0l-1.2 1.2zM4.646 5.355a.5.5 0 0 1 .708-.708L19.496 18.79a.5.5 0 1 1-.707.707L4.646 5.354z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"plus\",\"icon\":[\"24\",\"24\",[],\"\",\"M11 11V7.002a.999.999 0 1 1 2 0V11h3.998a.999.999 0 1 1 0 2H13v3.998a.999.999 0 1 1-2 0V13H7.002a.999.999 0 1 1 0-2H11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"preview\",\"icon\":[\"24\",\"24\",[],\"\",\"M17.278 17.333a3.056 3.056 0 1 0 0-6.11 3.056 3.056 0 0 0 0 6.11zm3.53-.637c.03.022.06.048.087.076l1.729 1.728a.794.794 0 1 1-1.124 1.124l-1.728-1.729a.801.801 0 0 1-.076-.088 4.278 4.278 0 1 1 1.112-1.112zM7.713 9C7.32 9 7 8.776 7 8.5s.32-.5.714-.5h8.572c.394 0 .714.224.714.5s-.32.5-.714.5H7.714zm-.357 3.5C7.16 12.5 7 12.276 7 12s.16-.5.357-.5h4.286c.197 0 .357.224.357.5s-.16.5-.357.5H7.357zM7.5 16a.5.5 0 1 1 0-1h4a.5.5 0 1 1 0 1h-4zm8.5 3a.5.5 0 1 1 0 1H6.5A2.5 2.5 0 0 1 4 17.5v-11A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5V9a.5.5 0 1 1-1 0V6.5A1.5 1.5 0 0 0 17.5 5h-11A1.5 1.5 0 0 0 5 6.5v11A1.5 1.5 0 0 0 6.5 19H16z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"right\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10l8 .014L12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"search\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.803 14.306l3.917 3.954a1 1 0 0 1-.007 1.417l-.018.018-.018.018a.997.997 0 0 1-1.41 0l-3.918-3.953-.3.214c-1.14.713-2.323 1.07-3.549 1.07-1.796 0-3.328-.642-4.597-1.925C4.634 13.836 4 12.296 4 10.5c0-1.796.634-3.328 1.903-4.597C7.172 4.634 8.704 4 10.5 4c1.796 0 3.329.634 4.597 1.903 1.27 1.269 1.904 2.801 1.904 4.597a6.447 6.447 0 0 1-1.027 3.507l-.17.3zM10.5 5.368c-1.425 0-2.637.5-3.635 1.497-.998.998-1.497 2.21-1.497 3.635 0 1.426.5 2.637 1.497 3.635.998.998 2.21 1.497 3.635 1.497 1.426 0 2.637-.499 3.635-1.497 1.027-1.026 1.54-2.238 1.54-3.635 0-1.397-.513-2.608-1.54-3.635-.998-.998-2.21-1.497-3.635-1.497z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"share\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.091 15.463a2.187 2.187 0 1 1-.392.782L8.91 13.35a2.187 2.187 0 1 1-.1-2.82l5.88-2.812a2.187 2.187 0 1 1 .378.79l-5.811 2.778a2.184 2.184 0 0 1 .045 1.281l5.79 2.896z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"up-down\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 14l8 .014L12 18l-4-4zm0-4l4-4 4 3.986L8 10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"upload\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.5 18.5h13v-2.75a.75.75 0 1 1 1.5 0V19a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3.25a.75.75 0 1 1 1.5 0v2.75zm7.249-11.796v8.57c0 .401-.35.726-.781.726-.432 0-.781-.325-.781-.725V6.704L7.89 9.658a.869.869 0 0 1-1.145 0 .692.692 0 0 1-.009-1.05l4.66-4.174a.869.869 0 0 1 1.144 0l4.66 4.174a.69.69 0 0 1 0 1.042.871.871 0 0 1-1.155.008L12.75 6.704z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-off\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.293 6.609l-.793.79A8.794 8.794 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609zm2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.659 8.659 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235l.715-.714zm-7.65 7.635l.787-.785A3.005 3.005 0 0 0 15 12c0-.264-.034-.52-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68l-.785.784zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708l-15 14.97z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-on\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6zm1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12zm8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"arrow-left\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.182 11h11.89c.512 0 .928.448.928 1s-.416 1-.929 1H7.181l3.781 4.22a1.11 1.11 0 0 1 0 1.465c-.36.403-.943.418-1.311.045a.952.952 0 0 1-.032-.034l-5.343-5.963a1.112 1.112 0 0 1 0-1.466l5.343-5.963a.883.883 0 0 1 1.333 0c.378.421.378 1.066.01 1.477L7.182 11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"arrow-right\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.818 11H4.928C4.417 11 4 11.448 4 12s.416 1 .929 1h11.89l-3.781 4.22a1.112 1.112 0 0 0 0 1.465c.36.403.943.418 1.311.045a.952.952 0 0 0 .032-.034l5.343-5.963a1.112 1.112 0 0 0 0-1.466l-5.343-5.963a.883.883 0 0 0-1.333 0 1.115 1.115 0 0 0-.01 1.477L16.818 11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"caret\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 10 16 10.0136253 12 14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-down\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.267 15.695L5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-left\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.305 11.267l5.906-5.963a1.046 1.046 0 0 1 1.473 0l.011.01a1.034 1.034 0 0 1 0 1.467L10.526 12l5.17 5.22c.406.41.406 1.055 0 1.465l-.012.011a1.046 1.046 0 0 1-1.473 0l-5.906-5.963a1.034 1.034 0 0 1 0-1.466z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-right\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.695 11.267c.407.41.407 1.056 0 1.466L9.79 18.696a1.046 1.046 0 0 1-1.474 0l-.01-.01a1.034 1.034 0 0 1 0-1.467L13.474 12l-5.17-5.22a1.034 1.034 0 0 1 0-1.465l.012-.011a1.046 1.046 0 0 1 1.474 0l5.905 5.963z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"chevron-up\",\"icon\":[\"24\",\"24\",[],\"\",\"M12.733 8.305l5.963 5.906a1.046 1.046 0 0 1 0 1.473l-.01.011a1.034 1.034 0 0 1-1.467 0L12 10.526l-5.22 5.17a1.034 1.034 0 0 1-1.465 0l-.011-.012a1.046 1.046 0 0 1 0-1.473l5.963-5.906a1.034 1.034 0 0 1 1.466 0z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"enter\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.613 13.959a.599.599 0 0 1-.213-.46c0-.155.058-.309.176-.426l3.75-3.75a.6.6 0 0 1 .848.848L7.446 12.9H13.5A3.9 3.9 0 0 0 17.4 9V6.747a.6.6 0 0 1 1.2 0V9a5.1 5.1 0 0 1-5.1 5.1H7.452l2.722 2.723a.6.6 0 0 1-.848.848L5.613 13.96z\"]}","import Caret from './caret.svg';\r\n\r\nimport ChevronUp from './chevron-up.svg';\r\nimport ChevronDown from './chevron-down.svg';\r\nimport ChevronLeft from './chevron-left.svg';\r\nimport ChevronRight from './chevron-right.svg';\r\n\r\nimport ArrowLeft from './arrow-left.svg';\r\nimport ArrowRight from './arrow-right.svg';\r\n\r\nimport Enter from './enter.svg';\r\n\r\nexport {\r\n Caret,\r\n ChevronUp,\r\n ChevronDown,\r\n ChevronLeft,\r\n ChevronRight,\r\n ArrowLeft,\r\n ArrowRight,\r\n Enter\r\n};\r\n","import './settings.ts';\r\nexport * from './ImportedSvgs';","module.exports = {\"prefix\":\"cv\",\"iconName\":\"archive\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.64 10.28a.55.55 0 1 1 1.1 0v6.878c0 1.582-1.386 2.842-3.07 2.842H6.33c-1.684 0-3.07-1.26-3.07-2.842V10.28a.55.55 0 1 1 1.1 0v6.877c0 .95.87 1.742 1.97 1.742h11.34c1.1 0 1.97-.793 1.97-1.742V10.28zM20.19 4c.99 0 1.81.747 1.81 1.696V7.99a.55.55 0 0 1-.55.55H2.55A.55.55 0 0 1 2 7.99V5.696C2 4.747 2.821 4 3.81 4h16.38zm.71 1.696c0-.317-.307-.596-.71-.596H3.81c-.403 0-.71.28-.71.596v1.742h17.8V5.696zm-5.83 5.73c0 .95-.821 1.697-1.81 1.697h-2.52c-.989 0-1.81-.747-1.81-1.696 0-.95.821-1.696 1.81-1.696h2.52c.989 0 1.81.747 1.81 1.696zm-1.1 0c0-.316-.307-.595-.71-.595h-2.52c-.403 0-.71.28-.71.596 0 .317.307.596.71.596h2.52c.403 0 .71-.28.71-.596z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"bell\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.588 17.995H6.152c-.636 0-1.152-.53-1.152-1.182 0-.221.06-.438.175-.626l2.128-2.92V9.722c0-2.187 1.447-4.027 3.411-4.567v-.012A1.143 1.143 0 0 1 13 5.128c2.017.502 3.515 2.369 3.515 4.594v3.545l2.303 2.92a1.2 1.2 0 0 1-.366 1.628 1.13 1.13 0 0 1-.61.18h-3.716a2.286 2.286 0 0 1-4.538 0zm1.161 0a1.143 1.143 0 0 0 2.216 0H10.75zm4.615-4.31V9.723c0-1.958-1.547-3.546-3.455-3.546-1.908 0-3.454 1.588-3.454 3.546v3.939l-.23.314-2.073 2.838H17.83l-2.467-3.127z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"bookmark\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.5 5h7A1.5 1.5 0 0 1 17 6.5v12.131a.2.2 0 0 1-.309.168L12 15.75 7.309 18.8A.2.2 0 0 1 7 18.63V6.5A1.5 1.5 0 0 1 8.5 5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"broadcast\",\"icon\":[\"24\",\"24\",[],\"\",\"M4.571 19C4.256 19 4 18.776 4 18.5s.256-.5.571-.5H19.43c.315 0 .571.224.571.5s-.256.5-.571.5H4.57zM4.125 5h15.75C20.496 5 21 5.537 21 6.2v9.6c0 .663-.504 1.2-1.125 1.2H4.125C3.504 17 3 16.463 3 15.8V6.2C3 5.537 3.504 5 4.125 5zM4 6v10h16V6H4zm6 2.35a.192.192 0 0 1 .295-.162l4.164 2.65a.192.192 0 0 1 0 .324l-4.164 2.65A.192.192 0 0 1 10 13.65v-5.3z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"calendar\",\"icon\":[\"24\",\"24\",[],\"\",\"M6.2 10.2V17a.8.8 0 0 0 .8.8h10a.8.8 0 0 0 .8-.8v-6.8H6.2zM16 5.5h2a1 1 0 0 1 1 1V17a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.5a1 1 0 0 1 1-1h2v-.875a.625.625 0 1 1 1.25 0V5.5h5.5v-.875a.625.625 0 1 1 1.25 0V5.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"cog\",\"icon\":[\"24\",\"24\",[],\"\",\"M18.458 12c0 .944.514 1.722 1.542 2.333a10.98 10.98 0 0 1-.667 1.584c-.944-.223-1.805.055-2.583.833-.694.694-.917 1.556-.667 2.583A10.98 10.98 0 0 1 14.5 20c-.611-1.028-1.444-1.542-2.5-1.542s-1.889.514-2.5 1.542c-.5-.167-1.042-.389-1.625-.667.25-1.055.042-1.916-.625-2.583-.667-.667-1.528-.875-2.583-.625C4.389 15.542 4.167 15 4 14.5c1.028-.611 1.542-1.444 1.542-2.5 0-.944-.514-1.722-1.542-2.333a8.484 8.484 0 0 1 .667-1.584c.944.223 1.805-.055 2.583-.833.667-.667.875-1.528.625-2.583C8.458 4.389 9 4.167 9.5 4c.611 1.028 1.444 1.542 2.5 1.542S13.889 5.028 14.5 4c.5.167 1.042.389 1.625.667-.25 1.055-.042 1.916.625 2.583.778.778 1.639 1.056 2.583.833.306.611.528 1.14.667 1.584-1.028.61-1.542 1.389-1.542 2.333zM12 16.083c1.111 0 2.07-.402 2.875-1.208.806-.806 1.208-1.764 1.208-2.875s-.402-2.07-1.208-2.875c-.806-.806-1.764-1.208-2.875-1.208s-2.07.402-2.875 1.208c-.806.806-1.208 1.764-1.208 2.875s.402 2.07 1.208 2.875c.806.806 1.764 1.208 2.875 1.208z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"compass\",\"icon\":[\"24\",\"24\",[],\"\",\"M12,-1.71862524e-13 C13.3893905,-1.71862524e-13 14.5197317,1.12166968 14.5197317,2.50040137 C14.5197317,2.8215332 14.4594938,3.13263028 14.3442115,3.42156921 C16.2349366,3.84633285 17.9748233,4.78862459 19.3866372,6.17539419 L19.4316433,6.22680193 C21.3267651,8.11265804 22.5,10.713205 22.5,13.5805516 C22.5,19.3258216 17.7897333,24 12,24 L12,24 C6.21026669,24 1.5,19.3258216 1.5,13.5805516 L1.50006052,13.5243182 C1.50002021,13.5212739 1.5,13.5182249 1.5,13.5151711 L1.501,13.503 L1.50378159,13.2988768 C1.57785421,10.543134 2.73548466,8.05071265 4.56835673,6.22680193 L4.61336276,6.17539419 C6.02517671,4.78862459 7.76506343,3.84633285 9.65748913,3.42018903 C9.54056383,3.13263028 9.48031555,2.8215332 9.48031555,2.50040137 C9.48031555,1.12166968 10.6106095,-1.71862524e-13 12,-1.71862524e-13 Z M12,4.52624116 L11.6809164,4.53170146 C11.6454989,4.53291535 11.610132,4.53433052 11.5748169,4.53594584 L11.6816694,4.53162088 C11.5883913,4.53477816 11.4953516,4.53932139 11.4025747,4.54524062 L11.5748169,4.53594584 C11.4679256,4.54083509 11.3615084,4.54755809 11.2555967,4.55608379 L11.4025747,4.54524062 C11.3068176,4.55134999 11.2113405,4.55892518 11.1161702,4.56795525 L11.2555967,4.55608379 C11.095392,4.56897997 10.9363438,4.5860008 10.7785603,4.60703883 C10.7467123,4.6104578 10.7154515,4.61475211 10.6842289,4.61920452 L10.7785603,4.60703883 C10.6768565,4.62059949 10.5756781,4.63582921 10.4750543,4.65269924 L10.6842289,4.61920452 C10.600263,4.63117821 10.5165735,4.64429522 10.4331795,4.65854779 L10.4750543,4.65269924 C9.11485909,4.88074187 7.85598275,5.40850943 6.77005357,6.16492738 L8.00490498,7.39068924 C8.27354347,7.65726684 8.27354347,8.0894535 8.00490498,8.35612485 C7.87046765,8.48939021 7.69450873,8.55604633 7.5184081,8.55604633 C7.34230747,8.55604633 7.16634856,8.48943709 7.03200569,8.35612485 L5.70204148,7.03485023 C4.13204115,8.52299364 3.09475895,10.5601022 2.90659433,12.8322227 L4.30759576,12.8325787 C4.68743083,12.8325787 4.99546522,13.1382031 4.99546522,13.5151711 C4.99546522,13.892186 4.68747807,14.1977635 4.30764299,14.1977635 L2.89670934,14.1976473 C3.02371908,16.0609257 3.72135566,17.7714185 4.81716961,19.1579915 L4.97167812,19.3482139 C5.26113447,19.6949337 5.57609243,20.0199666 5.91367078,20.3204536 L7.03200569,19.2111609 C7.30069142,18.9445833 7.73612479,18.9445833 8.00490498,19.2111609 C8.27354347,19.4777385 8.27354347,19.9099252 8.00490498,20.1765497 L7.01386949,21.160078 C8.44796715,22.0922041 10.1613427,22.6346745 12,22.6346745 L12,22.6346745 C13.8583409,22.6346745 15.5887033,22.0805272 17.0320921,21.1300078 L16.0701299,20.1765497 C15.8014914,19.909972 15.8014914,19.4777854 16.0701299,19.2111609 C16.3388156,18.9445833 16.774249,18.9445833 17.042982,19.2111609 L18.1252566,20.2856043 C18.4481451,19.9948825 18.7500205,19.681572 19.0283219,19.3482139 L19.1828304,19.1579915 C20.2466397,17.8119151 20.9351906,16.1605635 21.0907063,14.3605101 L21.1032907,14.1976527 L21.1032907,14.1976527 L19.4302507,14.1977635 C19.0504157,14.1977635 18.7423813,13.8921391 18.7423813,13.5151711 C18.7423813,13.1381562 19.0504157,12.8325787 19.4302507,12.8325787 L21.0934057,12.8322227 C20.9067892,10.5787961 19.8849698,8.55653016 18.3366017,7.07169263 L17.0430292,8.35607798 C16.9085919,8.48943709 16.732633,8.55604633 16.5565323,8.55604633 C16.3804317,8.55604633 16.2044728,8.48943709 16.0701299,8.35612485 C15.8014914,8.08954725 15.8014914,7.65736059 16.0701299,7.39068924 L17.2742569,6.19598696 C16.1894526,5.4308071 14.9295636,4.89482891 13.5669368,4.65983993 C13.5528409,4.65615858 13.538853,4.65380129 13.5248569,4.65147595 L13.5669368,4.65983993 C13.4834378,4.64544029 13.3995531,4.63217086 13.3152992,4.62004816 L13.5248569,4.65147595 C13.4243139,4.63477151 13.3233471,4.61971567 13.2219896,4.60632197 L13.3152992,4.62004816 C13.1723723,4.59948341 13.0283832,4.58221861 12.8834131,4.56833442 C12.8374466,4.56355426 12.7909906,4.55949885 12.7444647,4.55579028 L12.8834131,4.56833442 C12.7886701,4.55926062 12.6935082,4.5516307 12.5979499,4.54546716 L12.7444647,4.55579028 C12.6381278,4.54731418 12.5314263,4.5406499 12.4243976,4.53581255 L12.5979499,4.54546716 C12.5053597,4.53949506 12.4123973,4.53489967 12.3190836,4.53170146 L12.4243976,4.53581255 C12.2834709,4.52944313 12.1419768,4.52624116 12,4.52624116 Z M12.2098775,18.4456908 C12.3524617,18.4551964 12.4902931,18.464702 12.6328773,18.4884661 C12.6851582,18.4932189 12.7421919,18.5074773 12.7944727,18.5169829 C12.8039783,18.5169829 12.813484,18.5169829 12.8229896,18.5217357 C12.8990345,18.5692638 12.984585,18.5740166 13.0701355,18.5930278 C13.0938996,18.5977806 13.1224164,18.6025334 13.1509332,18.612039 C13.1746973,18.6215447 13.1984613,18.6310503 13.2174725,18.6500615 C13.2364838,18.6690727 13.255495,18.6833311 13.2887647,18.688084 C13.3172815,18.6928368 13.3362927,18.7213536 13.3362927,18.7546232 C13.3362927,18.7831401 13.3315399,18.8116569 13.3267871,18.835421 C13.3077759,18.9304771 13.2887647,19.030286 13.2650006,19.1253422 C13.2602478,19.153859 13.2507422,19.1823759 13.2412366,19.2108927 C13.2174725,19.277432 13.2127197,19.3487241 13.1937085,19.4152634 C13.1794501,19.4532859 13.1746973,19.4960611 13.1556861,19.5340836 C13.1414276,19.5673532 13.131922,19.6006229 13.1034052,19.6386453 C13.0891468,19.6529038 13.084394,19.6766678 13.0796411,19.7004318 C13.0606299,19.7527127 13.0321131,19.7717239 12.9750794,19.7622183 L12.9750794,19.7622183 L12.960821,19.7622183 C12.8562592,19.7384543 12.7564503,19.7194431 12.6566413,19.6909262 C12.5473268,19.6624094 12.4380122,19.6529038 12.3286977,19.6576566 C12.3001808,19.6576566 12.271664,19.6671622 12.2431471,19.6766678 C12.2051247,19.6909262 12.1956191,19.7194431 12.1956191,19.7574655 C12.1956191,19.7764767 12.2003719,19.7907352 12.2193831,19.795488 C12.2811696,19.8287576 12.3382033,19.8620273 12.419001,19.8762857 C12.442765,19.8810385 12.4617762,19.8952969 12.4807875,19.9048025 C12.5045515,19.9190609 12.5235627,19.9285666 12.542574,19.9380722 C12.689911,20.0093643 12.8467536,20.0711508 12.9798322,20.1709597 C13.084394,20.2422518 13.1604389,20.3325551 13.2032141,20.4513753 L13.2032141,20.4513753 L13.3077759,20.7745662 C13.3410455,20.8933864 13.3362927,21.0217122 13.3315399,21.1452851 C13.3267871,21.2403413 13.3125287,21.3401502 13.279259,21.4304535 C13.2745062,21.4352064 13.2745062,21.4399592 13.2745062,21.4494648 C13.2840118,21.5587793 13.2507422,21.6585883 13.1889557,21.7441388 C13.084394,21.8962286 12.9513154,22.0293072 12.7897199,22.1291162 C12.6851582,22.1956555 12.5710908,22.2336779 12.4475178,22.257442 C12.3239448,22.281206 12.1956191,22.3144756 12.0672933,22.3287341 C11.9579787,22.3429925 11.8486642,22.3429925 11.7441024,22.3382397 C11.6157766,22.3239812 11.4922036,22.3002172 11.3638778,22.2764532 C11.3448666,22.2764532 11.3258554,22.2669476 11.3068442,22.2621948 C11.2165408,22.2194195 11.1262375,22.2051611 11.0311814,22.1956555 C10.9076084,22.1766442 10.7887882,22.1481274 10.6652152,22.1243634 C10.6366984,22.1196106 10.6081815,22.0958465 10.6081815,22.0625769 C10.6081815,21.9675207 10.5844175,21.8677118 10.5986759,21.7726556 C10.6129344,21.6015546 10.62244,21.4257007 10.6414512,21.2545997 C10.6509568,21.1642964 10.6747208,21.073993 10.6984849,20.9789369 C10.7127433,20.9219032 10.7507658,20.8981392 10.8125522,20.902892 C10.9028556,20.9123976 10.9931589,20.9171504 11.0787094,20.9314088 C11.188024,20.9456672 11.2925857,20.9599257 11.3971475,20.9931953 C11.4541812,21.0074537 11.5112149,21.0169593 11.5682485,21.0217122 C11.6633047,21.026465 11.753608,21.026465 11.8439113,21.026465 C11.8866866,21.026465 11.9294619,20.9836897 11.9342147,20.9456672 C11.9389675,20.9123976 11.9152034,20.8696223 11.8724282,20.8553639 C11.8391585,20.8458583 11.7963833,20.8363527 11.7583608,20.8315999 C11.7345968,20.8268471 11.7108328,20.8220943 11.6870687,20.8220943 C11.6015182,20.8173415 11.5254733,20.7935774 11.4446756,20.7650606 C11.3638778,20.7317909 11.2783273,20.7127797 11.1975296,20.6795101 C11.088215,20.6414876 10.9884061,20.5797011 10.8981028,20.508409 C10.817305,20.4466225 10.7792826,20.361072 10.7507658,20.2707687 C10.7079905,20.1234316 10.6937321,19.9713418 10.7127433,19.819252 C10.7270017,19.7051846 10.7317545,19.5911173 10.7507658,19.4818027 C10.793541,19.2441624 10.8885972,19.030286 11.0596982,18.859185 C11.2070352,18.711848 11.3876419,18.612039 11.5920126,18.5550054 C11.7060799,18.5217357 11.8249001,18.4932189 11.9437203,18.4694548 C12.0340236,18.4551964 12.124327,18.4551964 12.2098775,18.4456908 Z M14.7328664,9.61765309 C15.1590885,9.61765309 15.5675493,9.84298078 15.7988231,10.2056519 C16.0296718,10.5678544 16.0563136,11.0171504 15.8699625,11.4074308 L14.1147664,15.0838768 C13.9903906,15.3443138 13.7774449,15.5556727 13.5149472,15.6790944 L9.80998461,17.4209191 C9.63676546,17.5022939 9.45419332,17.5435907 9.2670864,17.5435907 C8.84086431,17.5435907 8.43240343,17.3182631 8.20112965,16.9555919 C7.97028099,16.5933895 7.94363916,16.1440935 8.12999028,15.753813 L9.88518638,12.077367 C10.0095622,11.81693 10.2225079,11.6055242 10.4850055,11.4821494 L14.1899681,9.74032473 C14.3631873,9.65894988 14.5457594,9.61765309 14.7328664,9.61765309 Z M14.4894526,11.1101033 L11.1110414,12.6984127 L9.51045294,16.050953 L12.8888641,14.4626436 L14.4894526,11.1101033 Z M13.0226075,6.1644377 C13.0938996,6.1691905 13.1651917,6.1691905 13.2364838,6.1691905 L13.2364838,6.1691905 L13.5121466,6.18344892 C13.5596746,6.18344892 13.5929443,6.21196577 13.5976971,6.26424664 C13.6309667,6.56842629 13.6547308,6.87260593 13.6357196,7.17678557 C13.5976971,7.72335837 13.6262139,8.27468397 13.6167083,8.82125677 C13.6167083,9.03513308 13.6214611,9.24900939 13.6452252,9.46763851 L13.6452252,9.46763851 L13.6452252,9.59121149 C13.6404724,9.6625036 13.6024499,9.69102044 13.5359106,9.68626763 C13.526405,9.68626763 13.5121466,9.69102044 13.502641,9.69102044 C13.4836297,9.69577324 13.4598657,9.70527886 13.4408545,9.70052605 C13.3695624,9.68626763 13.2935175,9.69102044 13.2222254,9.69102044 C13.1414276,9.68626763 13.0606299,9.69577324 12.9798322,9.70052605 C12.837248,9.71003166 12.689911,9.71953728 12.542574,9.72429009 C12.4997987,9.72904289 12.4760347,9.70527886 12.4570234,9.6672564 L12.4570234,9.6672564 L12.271664,9.34881834 C12.1195741,9.07315554 11.9532259,8.81175116 11.8201473,8.52658274 L11.8201473,8.52658274 L11.8011361,8.49331309 L11.8011361,8.53608835 C11.7916305,8.81650396 11.777372,9.09216676 11.7821249,9.37258237 C11.7821249,9.4628857 11.777372,9.55318904 11.7726192,9.64349237 C11.7678664,9.71478447 11.729844,9.75280693 11.6585519,9.76231254 L11.6585519,9.76231254 L11.5112149,9.77657096 C11.4066531,9.78607658 11.3068442,9.76231254 11.2070352,9.75280693 L11.2070352,9.75280693 L10.8077994,9.75280693 C10.7555186,9.75280693 10.6747208,9.78132377 10.6557096,9.72429009 C10.646204,9.70527886 10.6414512,9.69102044 10.646204,9.61972833 C10.646204,9.58170588 10.6509568,9.56269465 10.6509568,9.51991939 L10.6509568,9.51991939 L10.6604624,9.31079588 L10.6794736,8.66441414 C10.6889793,8.33171766 10.7032377,7.99902117 10.6937321,7.66632469 C10.6889793,7.45720118 10.6794736,7.24807768 10.669968,7.04370698 C10.669968,7.03420136 10.669968,7.01994294 10.6652152,7.01043733 C10.6319456,6.81081944 10.6366984,6.60644874 10.6557096,6.40207804 C10.6604624,6.39257243 10.6557096,6.37831401 10.6604624,6.36405559 C10.6604624,6.32603313 10.6984849,6.28801068 10.7365073,6.28325787 C10.769777,6.28325787 10.8077994,6.28801068 10.8410691,6.28801068 L10.8410691,6.28801068 L10.8838443,6.28801068 C11.0216757,6.26424664 11.1595071,6.24048261 11.3020914,6.24523541 L11.3020914,6.24523541 L11.458934,6.2357298 C11.5444845,6.23097699 11.630035,6.22622419 11.7155856,6.22622419 C11.729844,6.22622419 11.7488552,6.23097699 11.7631136,6.24048261 C11.7821249,6.25474103 11.8011361,6.25949384 11.8249001,6.25474103 C11.877181,6.24523541 11.9056978,6.25949384 11.9247091,6.30702191 C11.9864956,6.47812295 12.0767989,6.63971839 12.171855,6.79180821 C12.2478999,6.91538119 12.3001808,7.04370698 12.3477089,7.17678557 C12.3952369,7.29085294 12.4475178,7.4001675 12.5093043,7.50948206 L12.5093043,7.50948206 L12.5235627,7.52849329 C12.5235627,7.52849329 12.5283155,7.52849329 12.5330683,7.52374048 L12.5330683,7.52374048 L12.5330683,7.50472925 C12.5330683,7.28134733 12.5330683,7.0579654 12.5283155,6.83458347 C12.5283155,6.69199927 12.5188099,6.55416787 12.5188099,6.41633646 L12.5188099,6.41633646 L12.5188099,6.38781962 C12.5093043,6.30702191 12.5473268,6.24998822 12.6091133,6.20721296 C12.6328773,6.18344892 12.6613941,6.17394331 12.689911,6.17869612 C12.8039783,6.18344892 12.9132929,6.1644377 13.0226075,6.1644377 Z M12,1.36518483 C11.3691932,1.36518483 10.8560545,1.87443384 10.8560545,2.50035449 C10.8560545,2.7121822 10.9139202,2.91435368 11.0223297,3.09018146 C11.3472278,3.06046277 11.6746768,3.04536905 12,3.04536905 C12.3250871,3.04536905 12.6524415,3.06046277 12.977623,3.09027521 C13.0860798,2.91444743 13.1439455,2.7121822 13.1439455,2.50035449 C13.1439455,1.87438696 12.6308068,1.36518483 12,1.36518483 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-excel\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5.09 7l-2.3-3.4h1.82l1.4 2.28 1.45-2.28h1.72l-2.29 3.41 2.49 3.73h-1.87l-1.56-2.47-1.59 2.47H8.6L11.09 12z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-img\",\"icon\":[\"24\",\"24\",[],\"\",\"M5 6v12h14V6H5zm0-1h14a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm2.4 10.3a.5.5 0 0 1-.8-.6l3-4a.5.5 0 0 1 .754-.054l.579.58 1.765-2.513a.5.5 0 0 1 .83.015l3.891 6a.5.5 0 0 1-.838.544l-3.49-5.379-1.682 2.394a.5.5 0 0 1-.763.067l-.592-.593L7.4 15.3zm.6-4.8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-pdf\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.833 15.006c-.328.765-.657 1.316-.997 1.619-.35.312-.762.394-1.138.15a1.345 1.345 0 0 1-.358-.322c-.298-.402-.194-.843.165-1.2.228-.227.563-.433.983-.63.226-.106.466-.204.706-.292.142-.358.286-.762.43-1.205a41.787 41.787 0 0 0 .866-3.123c-.435-.563-.75-1.057-.924-1.473-.28-.67-.211-1.242.372-1.494.56-.24 1.047-.086 1.307.391.17.312.234.736.231 1.26a7.96 7.96 0 0 1-.086 1.088c.158.195.33.398.513.606a30.903 30.903 0 0 0 1.73 1.81 14.011 14.011 0 0 0 .863.761c.464-.07.87-.106 1.213-.105.947.002 1.554.319 1.415 1.079-.107.585-.514.888-1.06.834-.365-.036-.781-.224-1.259-.532a8.753 8.753 0 0 1-.538-.38 21.15 21.15 0 0 0-.944.191c-.39.087-.798.188-1.22.3a45.345 45.345 0 0 0-2.27.667zM6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm4.43 8.39c-.07.21-.138.412-.207.606l.055-.016a46.181 46.181 0 0 1 1.608-.459 33.869 33.869 0 0 1 1.538-.37 15.994 15.994 0 0 1-.378-.35 31.732 31.732 0 0 1-1.882-1.98l-.083.32a38.471 38.471 0 0 1-.652 2.248zm-2.157 2.603c.12-.107.248-.279.382-.51a2.35 2.35 0 0 0-.553.37c-.092.092-.09.086-.083.096a.54.54 0 0 0 .138.116c.017.01.025.01.116-.072zm7.434-2.3c-.047 0-.095 0-.146.002.242.132.443.209.585.223.11.011.118.005.146-.145.005-.027-.095-.079-.585-.08zm-5.36-5.49c.065.156.16.334.283.53v-.05c.003-.393-.044-.696-.128-.85-.046-.086-.063-.091-.23-.02-.04.018-.05.092.075.39z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-ppt\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5.07 6.96h1.22c.18 0 .353-.013.52-.04a1.21 1.21 0 0 0 .44-.155.844.844 0 0 0 .305-.325c.077-.14.115-.323.115-.55 0-.227-.038-.41-.115-.55a.844.844 0 0 0-.305-.325 1.21 1.21 0 0 0-.44-.155 3.288 3.288 0 0 0-.52-.04h-1.22v2.14zM9.5 8.6h3.22c.447 0 .827.065 1.14.195.313.13.568.302.765.515.197.213.34.457.43.73a2.715 2.715 0 0 1 0 1.695c-.09.277-.233.522-.43.735a2.133 2.133 0 0 1-.765.515c-.313.13-.693.195-1.14.195h-1.65v2.56H9.5V8.6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-word\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm8.77 10.74h-1.56L12 10.88h-.02l-1.19 4.86H9.2L7.31 8.6h1.57l1.13 4.86h.02l1.24-4.86h1.47l1.22 4.92h.02l1.17-4.92h1.54l-1.92 7.14z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file-zip\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm0 1v14h12V5H6zm5 0h1v1h-1V5zm1 1h1v1h-1V6zm-1 1h1v1h-1V7zm1 1h1v1h-1V8zm-1 1h1v1h-1V9zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1zm-1 1h1v1h-1v-1zm1 1h1v1h-1v-1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"file\",\"icon\":[\"24\",\"24\",[],\"\",\"M6 4h7l6 5v10a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zm6.586 1H6v14h12V9.414L12.586 5zM13 10h3.5a.5.5 0 1 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 1 1 1 0V10z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"folder\",\"icon\":[\"24\",\"24\",[],\"\",\"M12.685 6H18.5A1.5 1.5 0 0 1 20 7.5v11a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 18.5v-13A1.5 1.5 0 0 1 5.5 4h4.66a1.5 1.5 0 0 1 1.095.474L12.685 6zM5.5 5a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-6.248l-1.727-1.842A.5.5 0 0 0 10.161 5H5.5zM5 10V9h14v1H5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"handle\",\"icon\":[\"16\",\"16\",[],\"\",\"M1 0h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6.4h14a1 1 0 0 1 1 1v1.2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7.4a1 1 0 0 1 1-1zm0 6.4h14a1 1 0 0 1 1 1V15a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-1.2a1 1 0 0 1 1-1z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"heart-outline\",\"icon\":[\"24\",\"24\",[],\"\",\"m11.466 22.776c.141.144.333.224.534.224s.393-.08.534-.224l9.594-9.721c2.491-2.523 2.491-6.63 0-9.154-1.21-1.226-2.819-1.901-4.532-1.901s-3.321.675-4.531 1.9l-1.065 1.08-1.065-1.079c-1.21-1.226-2.819-1.901-4.531-1.901-1.713 0-3.322.675-4.532 1.901-2.491 2.524-2.491 6.631 0 9.153zm-8.527-17.822c.926-.937 2.157-1.454 3.464-1.454 1.308 0 2.538.517 3.463 1.455l1.599 1.62c.281.285.786.285 1.067 0l1.599-1.621c.928-.937 2.158-1.454 3.465-1.454 1.308 0 2.538.517 3.464 1.454 1.917 1.943 1.917 5.104 0 7.048l-9.06 9.181-9.061-9.182c-1.917-1.942-1.917-5.104 0-7.047z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"heart\",\"icon\":[\"24\",\"24\",[],\"\",\"m11.466 22.776c.141.144.333.224.534.224s.393-.08.534-.224l9.594-9.721c4.001-4.053 1.158-11.055-4.532-11.055-3.417 0-4.985 2.511-5.596 2.98-.614-.471-2.172-2.98-5.596-2.98-5.672 0-8.55 6.984-4.531 11.055z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"history\",\"icon\":[\"24\",\"24\",[],\"\",\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,2.05714286 C6.50871163,2.05714286 2.05714286,6.50871163 2.05714286,12 C2.05714286,17.4912884 6.50871163,21.9428571 12,21.9428571 C17.4912884,21.9428571 21.9428571,17.4912884 21.9428571,12 C21.9428571,6.50871163 17.4912884,2.05714286 12,2.05714286 Z M12,5.82857143 C12.5680643,5.82857143 13.0285714,6.28907854 13.0285714,6.85714286 L13.0285714,11.5739518 L17.0130241,15.5584045 C17.4147062,15.9600866 17.4147062,16.611342 17.0130241,17.0130241 C16.611342,17.4147062 15.9600866,17.4147062 15.5584045,17.0130241 L11.2726902,12.7273098 C11.0797956,12.5344153 10.9714286,12.2727941 10.9714286,12 L10.9714286,6.85714286 C10.9714286,6.28907854 11.4319357,5.82857143 12,5.82857143 Z\"]}","import Archive from './archive.svg';\r\nimport Bell from './bell.svg';\r\nimport Bookmark from './bookmark.svg';\r\nimport Broadcast from './broadcast.svg';\r\nimport Calendar from './calendar.svg';\r\nimport Cog from './cog.svg';\r\nimport Folder from './folder.svg';\r\nimport Handle from './handle.svg';\r\nimport Heart from './heart.svg';\r\nimport HeartOutline from './heart-outline.svg';\r\nimport Interactive from './interactive.svg';\r\nimport Link from './link.svg';\r\nimport Playlist from './playlist.svg';\r\nimport PublisherArchive from './publisher-archive.svg';\r\nimport Resources from './resources.svg';\r\nimport StarOutline from './star-o.svg';\r\nimport Star from './star.svg';\r\nimport Tag from './tag.svg';\r\nimport Time from './time.svg';\r\nimport Video from './video.svg';\r\nimport Subject from './subject.svg';\r\nimport Series from './series.svg';\r\nimport WhiteWave from './white-wave.svg';\r\nimport Compass from './compass.svg';\r\nimport History from './history.svg';\r\n\r\nimport File from './file.svg';\r\nimport FilePDF from './file-pdf.svg';\r\nimport FileImg from './file-img.svg';\r\nimport FilePowerpoint from './file-ppt.svg';\r\nimport FileWord from './file-word.svg';\r\nimport FileZip from './file-zip.svg';\r\nimport FileExcel from './file-excel.svg';\r\n\r\nexport {\r\n Archive,\r\n Bell,\r\n Bookmark,\r\n Broadcast,\r\n Calendar,\r\n Cog,\r\n Folder,\r\n Handle,\r\n Interactive,\r\n Link,\r\n Playlist,\r\n PublisherArchive,\r\n Resources,\r\n StarOutline,\r\n Star,\r\n Tag,\r\n Time,\r\n Video,\r\n Subject,\r\n Series,\r\n File,\r\n FilePDF,\r\n FileImg,\r\n FilePowerpoint,\r\n FileWord,\r\n FileZip,\r\n FileExcel,\r\n Heart,\r\n HeartOutline,\r\n WhiteWave,\r\n Compass,\r\n History\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"interactive\",\"icon\":[\"24\",\"24\",[],\"\",\"M5.978 13.65l7.525-9.99a.2.2 0 0 1 .357.154l-1.289 7.5 5.194-1.04a.2.2 0 0 1 .198.318l-7.447 9.733a.2.2 0 0 1-.355-.16l1.268-6.566-5.277.37a.2.2 0 0 1-.174-.32z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"link\",\"icon\":[\"24\",\"24\",[],\"\",\"M17 10c2.2 0 4 1.8 4 4s-1.8 4-4 4h-5a3.99 3.99 0 0 1-3-1.367v-.028a4.447 4.447 0 0 1-.889-2.679c0-.698.162-1.356.443-1.94A4 4 0 0 1 12 10h1.872v.098c0 .573-.322 1.081-.818 1.402H12c-.722 0-1.368.316-1.824.811-.453.418-.732.976-.732 1.591v.196c0 .575.244 1.1.645 1.508.46.545 1.146.894 1.911.894h5c1.375 0 2.5-1.125 2.5-2.5s-1.125-2.5-2.5-2.5h-.686a5.22 5.22 0 0 0 .24-1.5H17zm-9.556 3.926l.002.074H7c-2.2 0-4-1.8-4-4s1.8-4 4-4h5c1.462 0 2.743.797 3.441 1.975a4.48 4.48 0 0 1-.44 4.63v.024a3.982 3.982 0 0 1-3 1.37h-1.873v-.096c0-.574.322-1.082.817-1.403H12c.722 0 1.368-.316 1.824-.811.452-.418.731-.976.731-1.591v-.195c0-.576-.244-1.101-.645-1.51A2.496 2.496 0 0 0 12 7.5H7A2.507 2.507 0 0 0 4.5 10c0 1.375 1.125 2.5 2.5 2.5h.642c-.128.452-.198.93-.198 1.426z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"playlist\",\"icon\":[\"24\",\"24\",[],\"\",\"M4,19.0049107 C4,19.5548349 4.44525903,20 4.99508929,20 L19.0049107,20 C19.5548349,20 20,19.554741 20,19.0049107 L20,4.99508929 C20,4.44516513 19.554741,4 19.0049107,4 L4.99508929,4 C4.44516513,4 4,4.44525903 4,4.99508929 L4,19.0049107 Z M4.99508929,3 L19.0049107,3 C20.1067681,3 21,3.8926228 21,4.99508929 L21,19.0049107 C21,20.1067681 20.1073772,21 19.0049107,21 L4.99508929,21 C3.8932319,21 3,20.1073772 3,19.0049107 L3,4.99508929 C3,3.8932319 3.8926228,3 4.99508929,3 Z M17.5,17.3 C17.7761424,17.3 18,17.0761424 18,16.8 C18,16.5238576 17.7761424,16.3 17.5,16.3 L9.5,16.3 C9.22385763,16.3 9,16.5238576 9,16.8 C9,17.0761424 9.22385763,17.3 9.5,17.3 L17.5,17.3 Z M17.5,12.7 C17.7761424,12.7 18,12.4761424 18,12.2 C18,11.9238576 17.7761424,11.7 17.5,11.7 L9.5,11.7 C9.22385763,11.7 9,11.9238576 9,12.2 C9,12.4761424 9.22385763,12.7 9.5,12.7 L17.5,12.7 Z M8.07195299,7.22930174 L6.86542219,6.50538326 C6.38401051,6.21653625 6,6.43413716 6,6.98678206 L6,8.51032805 C6,9.06455544 6.38746271,9.27850253 6.86542219,8.99172685 L8.07195299,8.26780837 C8.55336467,7.97896136 8.54991246,7.51607743 8.07195299,7.22930174 Z M8.07195299,11.7293017 L6.86542219,11.0053833 C6.38401051,10.7165363 6,10.9341372 6,11.4867821 L6,13.010328 C6,13.5645554 6.38746271,13.7785025 6.86542219,13.4917268 L8.07195299,12.7678084 C8.55336467,12.4789614 8.54991246,12.0160774 8.07195299,11.7293017 Z M8.07195299,16.2293017 L6.86542219,15.5053833 C6.38401051,15.2165363 6,15.4341372 6,15.9867821 L6,17.510328 C6,18.0645554 6.38746271,18.2785025 6.86542219,17.9917268 L8.07195299,17.2678084 C8.55336467,16.9789614 8.54991246,16.5160774 8.07195299,16.2293017 Z M17.5,8.3 C17.7761424,8.3 18,8.07614237 18,7.8 C18,7.52385763 17.7761424,7.3 17.5,7.3 L9.5,7.3 C9.22385763,7.3 9,7.52385763 9,7.8 C9,8.07614237 9.22385763,8.3 9.5,8.3 L17.5,8.3 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"publisher-archive\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.6403207,10.2808023 C19.6403207,9.97696656 19.8864872,9.73065903 20.1901489,9.73065903 C20.4938106,9.73065903 20.7399771,9.97696656 20.7399771,10.2808023 L20.7399771,17.1575931 C20.7399771,18.7397289 19.3544729,20 17.6701031,20 L6.32989691,20 C4.64552709,20 3.26002291,18.7397289 3.26002291,17.1575931 L3.26002291,10.2808023 C3.26002291,9.97696656 3.50618937,9.73065903 3.80985109,9.73065903 C4.11351281,9.73065903 4.35967927,9.97696656 4.35967927,10.2808023 L4.35967927,17.1575931 C4.35967927,18.1074218 5.23070097,18.8997135 6.32989691,18.8997135 L17.6701031,18.8997135 C18.769299,18.8997135 19.6403207,18.1074218 19.6403207,17.1575931 L19.6403207,10.2808023 Z M20.1901489,4 C21.1786273,4 22,4.74713037 22,5.69627507 L22,7.98853868 C22,8.29237442 21.7538335,8.53868195 21.4501718,8.53868195 L2.54982818,8.53868195 C2.24616646,8.53868195 2,8.29237442 2,7.98853868 L2,5.69627507 C2,4.74713037 2.82137271,4 3.80985109,4 L20.1901489,4 Z M20.9003436,5.69627507 C20.9003436,5.37943754 20.5934534,5.10028653 20.1901489,5.10028653 L3.80985109,5.10028653 C3.40654659,5.10028653 3.09965636,5.37943754 3.09965636,5.69627507 L3.09965636,7.43839542 L20.9003436,7.43839542 L20.9003436,5.69627507 Z M15.069874,11.4269341 C15.069874,12.3760788 14.2485013,13.1232092 13.2600229,13.1232092 L10.7399771,13.1232092 C9.75149871,13.1232092 8.930126,12.3760788 8.930126,11.4269341 C8.930126,10.4777894 9.75149871,9.73065903 10.7399771,9.73065903 L13.2600229,9.73065903 C14.2485013,9.73065903 15.069874,10.4777894 15.069874,11.4269341 Z M13.9702176,11.4269341 C13.9702176,11.1100966 13.6633274,10.8309456 13.2600229,10.8309456 L10.7399771,10.8309456 C10.3366726,10.8309456 10.0297824,11.1100966 10.0297824,11.4269341 C10.0297824,11.7437716 10.3366726,12.0229226 10.7399771,12.0229226 L13.2600229,12.0229226 C13.6633274,12.0229226 13.9702176,11.7437716 13.9702176,11.4269341 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"resources\",\"icon\":[\"24\",\"24\",[],\"\",\"M4 6.83c0-.523.423-.948.948-.948H17.17c.524 0 .949.423.949.949v12.22a.947.947 0 0 1-.949.949H4.95a.947.947 0 0 1-.95-.948V6.83zm.941 12.222c0 .005 12.228.007 12.228.007.005 0 .007-12.228.007-12.228 0-.005-12.228-.007-12.228-.007-.005 0-.007 12.228-.007 12.228zm2.353-9.405a.47.47 0 1 1 0-.941h7.588a.47.47 0 1 1 0 .941H7.294zm0 2.824a.47.47 0 1 1 0-.942h7.588a.47.47 0 1 1 0 .942H7.294zm0 2.823a.47.47 0 1 1 0-.941h2.88a.47.47 0 1 1 0 .941h-2.88zM6.353 4.941a.47.47 0 1 1 0-.941h11.766C19.155 4 20 4.848 20 5.88v12.232a.47.47 0 1 1-.941 0V5.88a.945.945 0 0 0-.94-.938H6.353z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"series\",\"icon\":[\"24\",\"24\",[],\"\",\"M20.49,3.51c0.97,0,1.76,0.79,1.76,1.76v9.27c0,0.77-0.49,1.42-1.18,1.66l0.09-10.84c0-0.39-0.3-0.7-0.68-0.7l-14.27,0 C6.46,3.99,7.1,3.51,7.85,3.51H20.49z M18.38,5.56c0.97,0,1.76,0.79,1.76,1.75v9.27c0.01,0.77-0.49,1.42-1.17,1.66l0.09-10.86 c0-0.38-0.3-0.68-0.68-0.68l-14.28,0c0.25-0.67,0.89-1.14,1.64-1.14H18.38z M16.15,7.7c0.97,0,1.75,0.79,1.75,1.76v9.27 c0,0.97-0.79,1.75-1.75,1.75H3.5c-0.97,0-1.75-0.79-1.75-1.75V9.46c0-0.97,0.79-1.76,1.75-1.76H16.15z M16.14,8.85H3.51 c-0.38,0-0.68,0.3-0.68,0.68l0,0v9.13c0,0.38,0.3,0.68,0.68,0.68l0,0h12.62c0.38,0,0.68-0.3,0.68-0.68l0,0V9.53 C16.82,9.15,16.52,8.85,16.14,8.85L16.14,8.85z M8.46,12.41v3.37c0,0.18,0.21,0.28,0.35,0.18l2.31-1.69c0.12-0.09,0.12-0.27,0-0.35 L8.8,12.23C8.66,12.13,8.46,12.23,8.46,12.41\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"star-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M11.64 16.055a.768.768 0 0 1 .72 0l3.767 1.998-.806-4.602 3.357-3.249-4.626-.654L12 5.35 9.948 9.548l-4.626.654 3.357 3.25-.807 4.601 3.768-1.998zm-3.75 3.148a.768.768 0 0 1-1.116-.811l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.768.768 0 0 1 1.38 0l2.043 4.18 4.607.652a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"star\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.89 19.203a.768.768 0 0 1-1.116-.811l.804-4.583-3.344-3.235a.768.768 0 0 1 .426-1.312l4.607-.652 2.043-4.18a.768.768 0 0 1 1.38 0l2.043 4.18 4.607.652a.768.768 0 0 1 .426 1.312l-3.344 3.235.804 4.583a.768.768 0 0 1-1.116.81L12 17.023l-4.11 2.18z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"subject\",\"icon\":[\"24\",\"24\",[],\"\",\"M19.15,21.08H5.1c-1.09,0-1.98-0.89-1.98-1.98V5.06c0-1.09,0.89-1.98,1.98-1.98h14.04c1.09,0,1.98,0.89,1.98,1.98V19.1 C21.12,20.19,20.24,21.08,19.15,21.08z M20.12,19.16V5c0-0.51-0.41-0.92-0.92-0.92H7.04C6.54,4.08,6.12,4.49,6.12,5v14.16 c0,0.51,0.41,0.92,0.92,0.92h12.16C19.71,20.08,20.12,19.67,20.12,19.16z M19.12,6.95V6.81c0-0.36-0.29-0.65-0.65-0.65H8.78 c-0.36,0-0.65,0.29-0.65,0.65v0.13c0,0.36,0.29,0.65,0.65,0.65h9.69C18.83,7.6,19.12,7.31,19.12,6.95z M19.12,9.95V9.81 c0-0.36-0.29-0.65-0.65-0.65H8.78c-0.36,0-0.65,0.29-0.65,0.65v0.13c0,0.36,0.29,0.65,0.65,0.65h9.69 C18.83,10.6,19.12,10.31,19.12,9.95z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"tag\",\"icon\":[\"24\",\"24\",[],\"\",\"M9.85651379,4 C10.5597673,4 11.2342681,4.27911643 11.7318501,4.77635695 L11.7318501,4.77635695 L19.5192508,12.5634018 C20.1602555,13.2045708 20.1602555,14.2439177 19.5192159,14.8851217 L19.5192159,14.8851217 L14.8855145,19.5192848 C14.2443321,20.1602442 13.2049876,20.1602442 12.5637184,19.519198 L12.5637184,19.519198 L4.7762613,11.7314233 C4.27913559,11.2340016 4,10.5595161 4,9.85635067 L4,9.85635067 L4,5.64191268 C4,4.7351029 4.73513649,4 5.64195885,4 L5.64195885,4 L9.85651379,4 Z M9.85658948,5.26315824 L5.64195885,5.26315824 C5.4327466,5.26315824 5.26315823,5.43273884 5.26315823,5.64191268 L5.26315823,5.64191268 L5.26315823,9.85642637 C5.26315823,10.2247328 5.40935021,10.5779817 5.66959105,10.8383776 L5.66959105,10.8383776 L13.4568376,18.6259418 C13.6047616,18.7738142 13.8445582,18.7738142 13.9923822,18.6260417 L13.9923822,18.6260417 L18.6259486,13.9920135 C18.7738119,13.8441123 18.7738119,13.6043763 18.6260161,13.4565426 L18.6260161,13.4565426 L10.8388259,5.6697082 C10.5782887,5.40934993 10.2250082,5.26315824 9.85658948,5.26315824 L9.85658948,5.26315824 Z M7.78947471,6.10526373 C8.71963876,6.10526373 9.4736857,6.85931068 9.4736857,7.78947472 C9.4736857,8.71963876 8.71963876,9.4736857 7.78947471,9.4736857 C6.85931067,9.4736857 6.10526373,8.71963876 6.10526373,7.78947472 C6.10526373,6.85931068 6.85931067,6.10526373 7.78947471,6.10526373 Z M7.78947471,7.36842197 C7.5569337,7.36842197 7.36842197,7.55693371 7.36842197,7.78947472 C7.36842197,8.02201573 7.5569337,8.21052747 7.78947471,8.21052747 C8.02201572,8.21052747 8.21052746,8.02201573 8.21052746,7.78947472 C8.21052746,7.55693371 8.02201572,7.36842197 7.78947471,7.36842197 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"time\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 4c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm0 1.077a6.88 6.88 0 0 0-4.896 2.027A6.877 6.877 0 0 0 5.077 12c0 1.85.72 3.588 2.027 4.896A6.877 6.877 0 0 0 12 18.923a6.88 6.88 0 0 0 4.896-2.027A6.877 6.877 0 0 0 18.923 12a6.88 6.88 0 0 0-2.027-4.896A6.877 6.877 0 0 0 12 5.077zm2.524 9.599a.6.6 0 0 1-.848.848l-2.5-2.5A.6.6 0 0 1 11 12.6V8.624a.6.6 0 0 1 1.2 0v3.727l2.324 2.325z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"video\",\"icon\":[\"24\",\"24\",[],\"\",\"M4.5 6a.5.5 0 0 0-.5.5v11a.5.5 0 0 0 .5.5h15a.5.5 0 0 0 .5-.5v-11a.5.5 0 0 0-.5-.5h-15zm0-1h15A1.5 1.5 0 0 1 21 6.5v11a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 17.5v-11A1.5 1.5 0 0 1 4.5 5zM10 9.26v5.48a.256.256 0 0 0 .39.218l4.482-2.74a.256.256 0 0 0 0-.436l-4.483-2.74a.256.256 0 0 0-.389.219z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"white-wave\",\"icon\":[\"1200\",\"244\",[],\"\",\"M1104.19651,33.5198863 C1084.14716,45.4511816 1067.10689,82.9623447 1047.23647,124.40502 C1023.86518,173.149287 924.725009,160.996474 830.060105,199.668011 C735.395201,238.339548 706.121292,249.351671 618.615175,241.737466 C531.109058,234.12326 495.404437,207.34459 432.2827,199.668011 C370.933901,192.207048 283.214734,200.240922 234.995453,186.264588 C153.311618,162.588569 167.948341,80.4093241 122.421855,59.9864363 C102.62311,51.1048469 61.8158253,37.3273576 0,18.6539685 L0,0 L1200,0 C1161.79495,7.07406031 1129.86046,18.2473557 1104.19651,33.5198863 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close-caption\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm5.486 9.759c-1.002 0-1.834-.372-2.495-1.114-.66-.743-.991-1.68-.991-2.81 0-1.208.327-2.149.981-2.823C6.635 8.337 7.548 8 8.719 8c.579 0 1.226.08 1.941.24v1.127c-.76-.223-1.38-.335-1.86-.335-.687 0-1.24.259-1.657.776-.417.517-.625 1.207-.625 2.068 0 .834.214 1.508.642 2.023.429.515.99.773 1.682.773.615 0 1.248-.157 1.9-.472v1.162c-.87.265-1.622.397-2.256.397zm7 0c-1.002 0-1.834-.372-2.495-1.114-.66-.743-.991-1.68-.991-2.81 0-1.208.327-2.149.981-2.823C13.635 8.337 14.548 8 15.719 8c.579 0 1.226.08 1.941.24v1.127c-.76-.223-1.38-.335-1.86-.335-.687 0-1.24.259-1.657.776-.417.517-.625 1.207-.625 2.068 0 .834.214 1.508.642 2.023.429.515.99.773 1.682.773.615 0 1.248-.157 1.9-.472v1.162c-.87.265-1.622.397-2.256.397z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"contract\",\"icon\":[\"24\",\"24\",[],\"\",\"M8.5 8.5V5H10v5H5V8.5h3.5zm0 7H5V14h5v5H8.5v-3.5zm7-7H19V10h-5V5h1.5v3.5zm0 7V19H14v-5h5v1.5h-3.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"full-screen\",\"icon\":[\"24\",\"24\",[],\"\",\"M6.5 6.5V10H5V5h5v1.5H6.5zm0 11H10V19H5v-5h1.5v3.5zm11-11H14V5h5v5h-1.5V6.5zm0 11V14H19v5h-5v-1.5h3.5z\"]}","import Quality240 from './quality-240.svg';\r\nimport Quality480 from './quality-480.svg';\r\nimport QualityHD from './quality-hd.svg';\r\nimport CloseCaption from './close-caption.svg';\r\nimport Contract from './contract.svg';\r\nimport FullScreen from './full-screen.svg';\r\nimport Mute from './mute.svg';\r\nimport Next from './next.svg';\r\nimport Play from './play.svg';\r\nimport PlayCircle from './play-circle.svg';\r\nimport Pause from './pause.svg';\r\nimport Previous from './previous.svg';\r\nimport Volume from './volume.svg';\r\n\r\nexport {\r\n Quality240,\r\n Quality480,\r\n QualityHD,\r\n CloseCaption,\r\n Contract,\r\n FullScreen,\r\n Mute,\r\n Next,\r\n Play,\r\n PlayCircle,\r\n Pause,\r\n Previous,\r\n Volume\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"mute\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.733 12.018l-1.57-1.57a.555.555 0 1 1 .785-.785l1.57 1.57 1.57-1.57a.555.555 0 1 1 .785.785l-1.57 1.57 1.57 1.57a.555.555 0 1 1-.785.785l-1.57-1.57-1.57 1.57a.555.555 0 1 1-.785-.785l1.57-1.57zM4 10.03c0-.557.443-1.01 1.01-1.01H8l4.284-4.246c.395-.393.716-.253.716.282v13.879c0 .548-.324.682-.721.303L7.814 14.97H5.002A1.003 1.003 0 0 1 4 13.96v-3.93z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"next\",\"icon\":[\"24\",\"24\",[],\"\",\"M16 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01a.501.501 0 0 1-.495-.5v-11zm-10.86.005a.5.5 0 0 1 .761-.427l9.003 5.5a.5.5 0 0 1 0 .853l-9.003 5.5a.5.5 0 0 1-.76-.426v-11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"pause\",\"icon\":[\"24\",\"24\",[],\"\",\"M8 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01A.501.501 0 0 1 8 17.5v-11zm6 0c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01a.501.501 0 0 1-.495-.5v-11z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"play-circle\",\"icon\":[\"24\",\"24\",[],\"\",\"M0,12 C0,5.372583 5.372583,0 12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 Z M23,12 C23,5.92486775 18.0751322,1 12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 Z M9,7.49836245 C9,6.94698209 9.38671875,6.74169922 9.84669815,7.02918634 L17.1533018,11.5958137 C17.6209203,11.8880752 17.6132812,12.3666992 17.1533018,12.6541863 L9.84669815,17.2208137 C9.37907967,17.5130752 9,17.2950531 9,16.7516375 L9,7.49836245 Z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"play\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.5 6.505v11l9.002-5.5-9.002-5.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"previous\",\"icon\":[\"24\",\"24\",[],\"\",\"M5 6.5c0-.276.216-.5.495-.5h2.01c.273 0 .495.229.495.5v11c0 .276-.216.5-.495.5h-2.01A.501.501 0 0 1 5 17.5v-11zm13.602.005v11a.5.5 0 0 1-.76.426l-9.003-5.5a.5.5 0 0 1 0-.853l9.002-5.5a.5.5 0 0 1 .761.427z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-240\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm1 4.818C4 9.644 4.94 8.8 6.261 8.8c1.272 0 2.182.777 2.182 1.81 0 .76-.45 1.334-1.285 2.178L5.58 14.347v.022h2.96v.932H4.062v-.769L6.407 12.2c.724-.737.923-1.064.923-1.54 0-.526-.473-.946-1.104-.946-.663 0-1.157.468-1.157 1.1v.017H4v-.013zm8.426 4.483v-1.206h-3.18v-.98c.553-1.043 1.264-2.178 2.646-4.187h1.62v4.235h.857v.932h-.856v1.206h-1.087zm-2.146-2.142v.03h2.164V9.773h-.018c-1.029 1.492-1.638 2.433-2.146 3.387zm7.234 2.27c-1.564 0-2.496-1.277-2.496-3.321 0-2.036.941-3.308 2.496-3.308 1.55 0 2.486 1.263 2.486 3.303s-.927 3.326-2.486 3.326zm0-.932c.843 0 1.333-.888 1.333-2.39 0-1.488-.499-2.375-1.333-2.375-.84 0-1.347.896-1.347 2.371 0 1.502.499 2.394 1.347 2.394z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-480\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm3.964 9.269v-1.2H3.8v-.976c.55-1.037 1.257-2.166 2.632-4.166h1.613v4.215h.853v.927h-.853v1.2h-1.08zm-2.136-2.132v.031h2.154V9.767h-.018c-1.024 1.485-1.63 2.421-2.136 3.37zm7.185 2.26c-1.467 0-2.47-.761-2.47-1.842 0-.822.58-1.468 1.442-1.63v-.022c-.72-.185-1.19-.743-1.19-1.433 0-.962.926-1.67 2.218-1.67 1.297 0 2.215.703 2.215 1.674 0 .681-.466 1.235-1.186 1.429v.022c.861.167 1.446.813 1.446 1.63 0 1.085-1.016 1.841-2.475 1.841zm0-.867c.76 0 1.297-.448 1.297-1.059 0-.62-.536-1.063-1.297-1.063-.76 0-1.296.448-1.296 1.063 0 .611.536 1.06 1.296 1.06zm0-2.988c.638 0 1.095-.395 1.095-.94 0-.55-.453-.945-1.095-.945-.646 0-1.098.395-1.098.945 0 .545.452.94 1.098.94zm5.709 3.854c-1.556 0-2.483-1.27-2.483-3.304 0-2.026.936-3.292 2.483-3.292 1.542 0 2.474 1.257 2.474 3.287 0 2.03-.923 3.31-2.474 3.31zm0-.927c.84 0 1.327-.883 1.327-2.377 0-1.481-.497-2.365-1.327-2.365-.835 0-1.34.892-1.34 2.36 0 1.494.496 2.382 1.34 2.382z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"quality-hd\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 5h18a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm0 1v12h18V6H3zm2 2.25h1.31v2.976h3.406V8.25h1.31v7.482h-1.31v-3.374H6.31v3.374H5V8.25zm7.597 0H15.7c.573 0 1.069.098 1.488.293.42.196.762.463 1.027.802.266.339.463.735.592 1.19.13.454.194.939.194 1.456a5.3 5.3 0 0 1-.194 1.457 3.43 3.43 0 0 1-.592 1.189 2.765 2.765 0 0 1-1.027.802c-.419.195-.915.293-1.488.293h-3.102V8.25zm1.31 6.413h1.29c.51 0 .927-.068 1.251-.204.325-.136.58-.325.765-.566.185-.241.311-.524.378-.849.066-.325.1-.676.1-1.053 0-.377-.034-.728-.1-1.053a2.043 2.043 0 0 0-.378-.849 1.832 1.832 0 0 0-.765-.566c-.324-.136-.742-.204-1.252-.204h-1.289v5.344z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"volume\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.8 11.25c-.137-.815-.44-1.549-.727-2.009a.48.48 0 0 1 .167-.67.507.507 0 0 1 .687.163c.35.56.7 1.41.86 2.359.24 1.439.001 2.866-.866 4.183a.508.508 0 0 1-.691.147.48.48 0 0 1-.15-.674c.724-1.1.922-2.285.72-3.5zm1.86 5.959c1.856-3.7 1.676-7.108 0-10.416a.558.558 0 0 1 .201-.728.483.483 0 0 1 .678.215c1.828 3.61 2.028 7.398.001 11.438a.483.483 0 0 1-.677.218.557.557 0 0 1-.203-.727zM4 10.03c0-.557.443-1.01 1.01-1.01H8l4.284-4.246c.395-.393.716-.253.716.282v13.879c0 .548-.324.682-.721.303L7.814 14.97H5.002A1.003 1.003 0 0 1 4 13.96v-3.93z\"]}","import * as FontAwesome from '@fortawesome/fontawesome';\r\nimport * as _ from 'underscore';\r\nimport { importedSvgs } from './ImportedSvgs';\r\n\r\nconst cvPrefix = 'cv' as FontAwesome.IconPrefix;\r\n\r\n_.extend(FontAwesome.config, {\r\n autoReplaceSvg: false,\r\n autoAddCss: false,\r\n familyPrefix : cvPrefix,\r\n autoA11y: true,\r\n observeMutations: false,\r\n replacementClass: 'cv-svg',\r\n keepOriginalSource: false\r\n});\r\n\r\n// Register our custom icons with FA\r\nFontAwesome.library.add(...importedSvgs);\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check-circle-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9zm0 1.212a7.737 7.737 0 0 0-5.508 2.28A7.737 7.737 0 0 0 4.212 12c0 2.081.809 4.037 2.28 5.508A7.737 7.737 0 0 0 12 19.788a7.737 7.737 0 0 0 5.508-2.28A7.737 7.737 0 0 0 19.788 12a7.737 7.737 0 0 0-2.28-5.508A7.737 7.737 0 0 0 12 4.212zm3.186 4.434a.772.772 0 0 1 1.058-.068.7.7 0 0 1 .07 1.016l-5.25 5.76a.771.771 0 0 1-1.094.035l-2.25-2.16a.7.7 0 0 1 0-1.018.772.772 0 0 1 1.06 0l1.683 1.616 4.723-5.181z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check-circle\",\"icon\":[\"24\",\"24\",[],\"\",\"M12 3c4.972 0 9 4.028 9 9s-4.028 9-9 9-9-4.028-9-9 4.028-9 9-9zm3.186 5.646l-4.723 5.18-1.683-1.615a.772.772 0 0 0-1.06 0 .7.7 0 0 0 0 1.018l2.25 2.16a.771.771 0 0 0 1.094-.035l5.25-5.76a.7.7 0 0 0-.07-1.016.772.772 0 0 0-1.058.068z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"check\",\"icon\":[\"24\",\"24\",[],\"\",\"M16.247 7.341a1 1 0 0 1 1.506 1.318l-7 8a1 1 0 0 1-1.46.048l-3-3a1 1 0 0 1 1.414-1.414l2.244 2.244 6.296-7.196z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"close-caption-badge\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.5 5A2.5 2.5 0 0 0 5 7.5v9A2.5 2.5 0 0 0 7.5 19h9a2.5 2.5 0 0 0 2.5-2.5v-9A2.5 2.5 0 0 0 16.5 5h-9zm0-1h9A3.5 3.5 0 0 1 20 7.5v9a3.5 3.5 0 0 1-3.5 3.5h-9A3.5 3.5 0 0 1 4 16.5v-9A3.5 3.5 0 0 1 7.5 4zM11 9a.5.5 0 1 1 0 1H9.5A1.5 1.5 0 0 0 8 11.5v1A1.5 1.5 0 0 0 9.5 14H11a.5.5 0 1 1 0 1H9.5A2.5 2.5 0 0 1 7 12.5v-1A2.5 2.5 0 0 1 9.5 9H11zm5 0a.5.5 0 1 1 0 1h-1.5a1.5 1.5 0 0 0-1.5 1.5v1a1.5 1.5 0 0 0 1.5 1.5H16a.5.5 0 1 1 0 1h-1.5a2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 14.5 9H16z\"]}","import CheckCircle from './check-circle.svg';\r\nimport CheckCircleOutline from './check-circle-o.svg';\r\nimport Check from './check.svg';\r\nimport CloseCaptionBadge from './close-caption-badge.svg';\r\nimport Question from './question.svg';\r\nimport Info from './info.svg';\r\nimport Lock from './lock.svg';\r\nimport Verified from './verified.svg';\r\nimport VisibleOff from './visible-off.svg';\r\nimport VisibleOn from './visible-on.svg';\r\nimport WarningOutline from './warning-o.svg';\r\nimport Warning from './warning.svg';\r\n\r\nexport {\r\n CheckCircle,\r\n CheckCircleOutline,\r\n Check,\r\n CloseCaptionBadge,\r\n Info,\r\n Lock,\r\n Verified,\r\n VisibleOff,\r\n VisibleOn,\r\n WarningOutline,\r\n Warning,\r\n Question\r\n};\r\n","module.exports = {\"prefix\":\"cv\",\"iconName\":\"info\",\"icon\":[\"24\",\"24\",[],\"\",\"M21 11.88c.026 2.49-.824 4.62-2.552 6.387-1.727 1.768-3.837 2.679-6.327 2.732-2.491.027-4.62-.823-6.388-2.55C3.965 16.72 3.054 14.61 3 12.12c-.027-2.491.823-4.62 2.55-6.388C7.28 3.965 9.39 3.054 11.88 3c2.491-.027 4.62.823 6.388 2.55 1.767 1.73 2.678 3.84 2.732 6.33zm-10-.38V15a2.5 2.5 0 0 0 2.5 2.5h.75a1 1 0 0 0 0-2h-.75a.5.5 0 0 1-.5-.5v-3.75a1.75 1.75 0 0 0-1.75-1.75h-.75a1 1 0 1 0 0 2h.5zm.636-3.25c.294 0 .553-.1.778-.301.224-.2.336-.477.336-.828 0-.316-.107-.582-.321-.797A1.073 1.073 0 0 0 11.636 6c-.319 0-.588.108-.807.324a1.07 1.07 0 0 0-.329.797c0 .356.113.634.34.832.227.198.492.297.796.297z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"lock\",\"icon\":[\"24\",\"24\",[],\"\",\"M7.01 9.5C7.156 5.97 8.87 4 12 4s4.844 1.97 4.99 5.5h1.51a.5.5 0 0 1 .5.5v9.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .5-.5h1.51zm2 0h5.98C14.88 7.037 13.932 6 12 6c-1.933 0-2.88 1.037-2.99 3.5z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"question\",\"icon\":[\"24\",\"24\",[],\"\",\"M21 11.88c.026 2.49-.824 4.62-2.552 6.387-1.727 1.768-3.837 2.679-6.327 2.732-2.491.027-4.62-.823-6.388-2.55C3.965 16.72 3.054 14.61 3 12.12c-.027-2.491.823-4.62 2.55-6.388C7.28 3.965 9.39 3.054 11.88 3c2.491-.027 4.62.823 6.388 2.55 1.767 1.73 2.678 3.84 2.732 6.33zM8.142 9.17c0 .247.103.476.309.687.206.212.46.318.76.318.508 0 .854-.303 1.036-.908.193-.579.428-1.017.707-1.314.278-.297.712-.446 1.302-.446.503 0 .914.147 1.233.442.319.294.478.656.478 1.085 0 .22-.052.423-.157.61a2.305 2.305 0 0 1-.385.51c-.153.153-.4.38-.744.68-.39.342-.701.638-.932.887-.23.25-.415.539-.554.868-.14.33-.209.72-.209 1.17 0 .358.095.629.285.81.19.183.425.274.703.274.536 0 .855-.279.956-.836a12.2 12.2 0 0 1 .133-.55c.03-.104.071-.209.125-.313.053-.105.135-.22.245-.346.11-.126.255-.272.438-.438a48.078 48.078 0 0 0 1.37-1.257c.254-.25.474-.545.658-.888.185-.343.278-.742.278-1.197a2.87 2.87 0 0 0-.486-1.608c-.325-.492-.784-.882-1.378-1.169-.595-.286-1.28-.43-2.057-.43-.836 0-1.567.172-2.194.515s-1.104.775-1.43 1.297c-.327.523-.49 1.038-.49 1.547zm3.868 9.579c.294 0 .553-.1.778-.301.224-.2.336-.477.336-.828 0-.316-.107-.582-.321-.797a1.073 1.073 0 0 0-.793-.324c-.319 0-.588.108-.807.324a1.07 1.07 0 0 0-.329.797c0 .356.113.634.34.832.227.198.492.297.796.297z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"verified\",\"icon\":[\"24\",\"24\",[],\"\",\"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-off\",\"icon\":[\"24\",\"24\",[],\"\",\"M15.293 6.609l-.793.79A8.794 8.794 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609zm2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.659 8.659 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235l.715-.714zm-7.65 7.635l.787-.785A3.005 3.005 0 0 0 15 12c0-.264-.034-.52-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68l-.785.784zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708l-15 14.97z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"visible-on\",\"icon\":[\"24\",\"24\",[],\"\",\"M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6zm1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12zm8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"warning-o\",\"icon\":[\"24\",\"24\",[],\"\",\"M13.026 4.377l8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0zM12 5L3.5 19h17L12 5zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm.75-3.677a.689.689 0 0 1-.7.677.689.689 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677.387 0 .7.303.7.677v5.646z\"]}","module.exports = {\"prefix\":\"cv\",\"iconName\":\"warning\",\"icon\":[\"24\",\"24\",[],\"\",\"M13.026 4.377l8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0zM12 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm.75-3.677V8.677a.689.689 0 0 0-.7-.677c-.387 0-.7.303-.7.677v5.646c0 .374.313.677.7.677.387 0 .7-.303.7-.677z\"]}","import { BasePaginatedCollection, BaseObject } from 'libs/shared/interfaces';\r\n\r\nexport const CollectionHelper = {\r\n isEmpty(collection: BasePaginatedCollection<BaseObject>): boolean {\r\n return collection && !(collection.data && collection.data.length);\r\n },\r\n\r\n length(collection: BasePaginatedCollection<BaseObject>): number {\r\n return collection && collection.data && collection.data.length;\r\n },\r\n\r\n at<T extends BaseObject>(collection: BasePaginatedCollection<T>, idx: number): T {\r\n if (!collection || !collection.data || !collection.data.length || idx > collection.data.length)\r\n return;\r\n\r\n return collection.data[idx];\r\n },\r\n\r\n get<T extends BaseObject>(collection: BasePaginatedCollection<T>, id: string): T {\r\n if (!collection || !collection.data || !collection.data.length)\r\n return;\r\n\r\n return collection.data.find(c => c.id && c.id.toString() === id);\r\n },\r\n\r\n flattenCollections<T extends BaseObject, U extends BasePaginatedCollection<T>>(collections: U[]): T[] {\r\n if (!collections || !collections.length)\r\n return;\r\n\r\n let flattened: T[] = [];\r\n\r\n collections.forEach(c => {\r\n flattened = [ ...flattened, ...c.data ];\r\n });\r\n\r\n return flattened;\r\n },\r\n\r\n getNextCursor<T extends BaseObject, U extends BasePaginatedCollection<T>>(collection: U): string {\r\n return collection.pagination && collection.pagination.cursors && collection.pagination.cursors.next;\r\n }\r\n};","import { FormikErrors, FormikTouched, getIn } from 'formik';\r\n\r\nexport const FormHelper = {\r\n getCustomFormControlClassName<T>(\r\n errors: FormikErrors<T>,\r\n touched: FormikTouched<T>,\r\n attribute: string,\r\n additionalClassName?: string\r\n ): string {\r\n let className = 'form-control';\r\n\r\n // Using getIn as it supports dot notation\r\n if (getIn(touched, attribute) && getIn(errors, attribute))\r\n className += ' is-invalid';\r\n\r\n if (additionalClassName)\r\n className += ` ${additionalClassName}`;\r\n\r\n return className;\r\n }\r\n};","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Banner } from 'libs/shared/interfaces';\r\nimport { ImageType, ImageSize, ResizeType } from 'libs/shared/enums/Images';\r\n\r\nexport interface ImageOptions {\r\n size?: ImageSize;\r\n bgColor?: string;\r\n width?: number;\r\n height?: number;\r\n resizeType?: ResizeType;\r\n ratio?: string;\r\n name?: string;\r\n}\r\n\r\nexport interface CategoryMapperImageOptions {\r\n fallbackBaseUrl: string;\r\n fallbackCategoryName: string;\r\n type: ImageType;\r\n}\r\n\r\nenum ImageTypeString {\r\n Banner = 'banner',\r\n Thumbnail = 'thumbnail'\r\n}\r\n\r\nconst ImageTypes: { [index: number]: ImageTypeString } = {\r\n [ImageType.Banners]: ImageTypeString.Banner,\r\n [ImageType.Thumbnails]: ImageTypeString.Thumbnail\r\n};\r\n\r\nconst endpoints = {\r\n categoryMapper: (type: ImageTypeString) => `/v1/category-map/${type}`\r\n};\r\n\r\nexport const ImageHelper = {\r\n createUrl(baseUrl: string, options?: ImageOptions): string {\r\n return ImageHelper._createUrl(baseUrl, options);\r\n },\r\n\r\n createBannerUrl(\r\n banner: Banner, mappingOptions?: CategoryMapperImageOptions, imageOptions?: ImageOptions\r\n ): string {\r\n // Return existing banner url where we have one saved \r\n if (banner && banner.url)\r\n return ImageHelper._createUrl(banner.url, imageOptions);\r\n\r\n return ImageHelper._createCategoryMappedUrl(mappingOptions, imageOptions);\r\n },\r\n\r\n /**\r\n * Ensures that strings are properly escaped before using them\r\n * within a URL.\r\n */\r\n Rfc3986EncodeURIComponent(str: string): string {\r\n return encodeURIComponent(str).replace(/[!'()*]/g, escape);\r\n },\r\n\r\n _createCategoryMappedUrl(mappingOptions: CategoryMapperImageOptions, options?: ImageOptions): string {\r\n const { fallbackBaseUrl, fallbackCategoryName, type } = mappingOptions;\r\n\r\n // Generate a fallback url against the image mapper\r\n const baseUrl = UrlHelper.safeUrlConcat(fallbackBaseUrl, `${endpoints.categoryMapper(ImageTypes[type])}`);\r\n\r\n const ops = { name: ImageHelper.Rfc3986EncodeURIComponent(fallbackCategoryName), ...options };\r\n\r\n return ImageHelper._createUrl(baseUrl, ops);\r\n },\r\n\r\n _createUrl(baseUrl: string, options?: ImageOptions): string {\r\n if (!baseUrl)\r\n return;\r\n\r\n if (ObjectHelper.isEmpty(options))\r\n return baseUrl;\r\n\r\n const params = $.param(options);\r\n\r\n const separator = baseUrl.indexOf('?') === -1\r\n ? '?'\r\n : '&';\r\n\r\n return UrlHelper.safeUrlConcat(baseUrl, `${separator}${params}`);\r\n },\r\n\r\n // For Backbone ThumbnailComponent\r\n legacyCreateThumbnailUrl(thumbnail: string | Core.Model | HashObject, options?: ImageOptions): string {\r\n if (!thumbnail)\r\n return '';\r\n\r\n let baseUrl;\r\n\r\n if (!thumbnail)\r\n return;\r\n\r\n if (thumbnail instanceof Core.Model)\r\n baseUrl = thumbnail.get('url');\r\n else if (typeof thumbnail === 'string')\r\n baseUrl = thumbnail;\r\n else\r\n baseUrl = thumbnail.url;\r\n\r\n if (!baseUrl) return;\r\n\r\n const ops = {\r\n size: ImageSize.Small,\r\n bgColor: '000',\r\n ...options\r\n };\r\n\r\n return ImageHelper._createUrl(baseUrl as string, ops);\r\n }\r\n};","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { BaseObject, ReorderRequest } from 'libs/shared/interfaces';\r\n\r\ninterface ReorderResult<T extends BaseObject> {\r\n reorderRequest: ReorderRequest;\r\n reorderedItems: T[];\r\n}\r\n\r\nexport const ReorderHelper = {\r\n reorder<T extends BaseObject>(items: T[], oldIdx: number, newIdx: number): ReorderResult<T> {\r\n if (oldIdx === newIdx)\r\n return { reorderedItems: items, reorderRequest: null };\r\n\r\n const reorderedItems: T[] = ArrayHelper.moveItem(items, oldIdx, newIdx);\r\n\r\n /**\r\n * If newIdx is the last idx then we set\r\n * destinationMemberId to null.\r\n */\r\n const destinationMemberId = newIdx < items.length - 1\r\n ? reorderedItems[newIdx + 1].id\r\n : null;\r\n\r\n const reorderRequest: ReorderRequest = {\r\n sourceMemberId: reorderedItems[newIdx].id,\r\n destinationMemberId\r\n };\r\n\r\n return { reorderedItems, reorderRequest };\r\n },\r\n\r\n updateState(\r\n dataPrefix: string,\r\n reorderRequest: ReorderRequest,\r\n data: { [key: string]: HashObject\r\n }): { [key: string]: HashObject } {\r\n const items: BaseObject[] = [];\r\n const updatedData = ObjectHelper.deepClone(data);\r\n\r\n const keys = [dataPrefix]; // Maintain an ordered list of keys.\r\n let page = data[dataPrefix];\r\n const pageSize = !!page && !!page.data && page.data.length;\r\n\r\n /**\r\n * Flatten items\r\n */\r\n while (page) {\r\n if (!Array.isArray(page.data))\r\n break;\r\n\r\n items.push(...page.data as BaseObject[]);\r\n\r\n const nextCursor = page.pagination\r\n && page.pagination.cursors\r\n && page.pagination.cursors.next;\r\n\r\n const nextKey = !!nextCursor && `${dataPrefix}:${nextCursor}`;\r\n\r\n page = nextCursor && data[nextKey];\r\n\r\n if (page)\r\n keys.push(nextKey);\r\n }\r\n\r\n if (!items.length)\r\n return data;\r\n\r\n /**\r\n * Reorder items\r\n */\r\n const removeIdx = ArrayHelper.findIndex(items, i => i.id === reorderRequest.sourceMemberId);\r\n\r\n const reorderedItems = [...items];\r\n\r\n const itemToMove = reorderedItems.splice(removeIdx, 1);\r\n\r\n const insertIdx = reorderRequest.destinationMemberId\r\n ? ArrayHelper.findIndex(reorderedItems, r => r.id === reorderRequest.destinationMemberId)\r\n : reorderedItems.length;\r\n\r\n reorderedItems.splice(insertIdx, 0, itemToMove[0]);\r\n\r\n /**\r\n * Paginate reordered items\r\n */\r\n keys.forEach(key => {\r\n const itemsToInsert = reorderedItems.splice(0, pageSize);\r\n updatedData[key].data = itemsToInsert;\r\n });\r\n\r\n return updatedData;\r\n }\r\n};","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nexport const StateHelper = {\r\n /**\r\n * Helper function to get the setState function for an individual key in a state object.\r\n * \r\n * @param setState React setState action\r\n * @param key Property within the state object we're updating\r\n * @param callback Optional callback to modify data before setting state. Uses identity fn by default.\r\n * \r\n * @returns Newly updated state object\r\n */\r\n getSetStateByKey<T extends {}>(\r\n setState: React.Dispatch<React.SetStateAction<T>>,\r\n key: keyof T,\r\n callback?: (data: any, state?: T) => T[keyof T]\r\n ): (data: any) => void {\r\n return (data: any) => setState(state => {\r\n const fn = FunctionHelper.isFunction(callback) ? callback : FunctionHelper.useIdentity<T>();\r\n return { ...state, [key]: fn(data, state) };\r\n });\r\n }\r\n};","import * as FA from '@fortawesome/fontawesome';\r\nimport { localSvgs } from 'libs/shared/images/svg';\r\n\r\ninterface SVGDefinition extends FA.IconDefinition {}\r\ninterface SVGIcon extends FA.Icon {}\r\ninterface SVGIconParams extends FA.IconParams {}\r\n\r\nexport interface SVGOptions {\r\n prefix?: string;\r\n iconOptions?: SVGIconParams;\r\n}\r\n\r\nconst CV_PREFIX = 'cv';\r\n\r\nexport class StaticSvgHelper {\r\n private static instance: StaticSvgHelper;\r\n\r\n private constructor() {}\r\n\r\n public static get Instance(): StaticSvgHelper {\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public getSvg(svgName: string, options: SVGOptions = {}): string {\r\n const iconMeta = this.faIconLookup(svgName, options);\r\n const icon = this.getIcon(iconMeta, options);\r\n\r\n if (!icon || icon && !icon.html.length) return;\r\n\r\n return icon.html.pop();\r\n }\r\n\r\n private getIcon(iconDefinition: SVGDefinition, options: SVGOptions): SVGIcon {\r\n return FA.icon(iconDefinition, options.iconOptions || {});\r\n }\r\n\r\n private faIconLookup(iconName: string, options?: SVGOptions): SVGDefinition {\r\n let { prefix = CV_PREFIX } = options;\r\n\r\n // Deliberately cast to FA types\r\n return FA.findIconDefinition({\r\n prefix: <FA.IconPrefix> prefix,\r\n iconName: <FA.IconName> iconName\r\n });\r\n }\r\n}\r\n\r\nexport const SvgHelper = StaticSvgHelper.Instance;\r\nexport const cvSvgLibrary = localSvgs;","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { CompaniesView, NewCompanyView, EditCompanyView } from 'apps/companies/views';\r\n\r\nclass CompaniesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.COMPANIES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/companies(/)': 'companies',\r\n 'manage/companies/new(/)': 'newCompany',\r\n 'manage/companies/:id(/)': 'editCompany',\r\n };\r\n }\r\n}\r\n\r\nexport class CompaniesApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Companies Application';\r\n }\r\n\r\n public static get router(): any {\r\n return CompaniesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.COMPANIES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public companies(params: ObjectHash): void {\r\n const { cursor } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <CompaniesView cursor={cursor} />);\r\n }\r\n\r\n public newCompany(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewCompanyView />);\r\n }\r\n\r\n public editCompany(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditCompanyView id={id} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Company } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { CompanyValidationSchema } from 'apps/companies/utils';\r\n\r\nimport { EditCompanyForm } from './EditCompanyForm';\r\n\r\ninterface EditCompanyProps {\r\n saveCompany: (data: CreateOrUpdateCompanyRequest, onDone: () => void) => void;\r\n company?: Company;\r\n}\r\n\r\nexport function EditCompany(props: EditCompanyProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateCompanyRequest, Company>\r\n initialValues={props.company}\r\n validationSchema={CompanyValidationSchema}\r\n onSubmit={props.saveCompany}\r\n >\r\n <EditCompanyForm isNew={!(props.company && props.company.id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\ninterface EditCompanyFormProps {\r\n isNew: boolean;\r\n}\r\n\r\nexport function EditCompanyForm(props: EditCompanyFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateCompanyRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateCompanyRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this company'\r\n autoFocus\r\n />\r\n <FormButtons isNew={props.isNew} />\r\n </Form>\r\n );\r\n}","export * from './EditCompany';","export * from './edit-company';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\nconst endpoints = {\r\n getCompanies: (cursor?: string) => {\r\n const baseUrl = `/api/master/v2/companies`;\r\n\r\n if (!cursor)\r\n return baseUrl;\r\n\r\n return `${baseUrl}?cursor=${cursor}`;\r\n },\r\n\r\n getCompany: (id: string) => `/api/master/v2/objects/${id}`,\r\n\r\n createCompany: () => `/api/master/v2/companies`,\r\n\r\n updateCompany: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n COMPANIES: 'companies',\r\n COMPANY: 'company',\r\n UPDATE_COMPANY: 'update:company'\r\n};\r\n\r\nexport const CompanyRequests = {\r\n getCompanies(cursor?: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.COMPANIES}${cursor ? `:${cursor}` : ''}`,\r\n url: endpoints.getCompanies(cursor),\r\n };\r\n },\r\n\r\n getCompany(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.COMPANY}:${id}`,\r\n url: endpoints.getCompany(id),\r\n };\r\n },\r\n\r\n createCompany(\r\n data: CreateOrUpdateCompanyRequest, success?: (data: any) => void, error?: (data: any) => void\r\n ): Flight.Request {\r\n return {\r\n key: DataPrefixes.COMPANY,\r\n url: endpoints.createCompany(),\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.COMPANIES],\r\n };\r\n },\r\n\r\n updateCompany(id: string, data: CreateOrUpdateCompanyRequest, callback?: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.UPDATE_COMPANY}:${id}`,\r\n url: endpoints.updateCompany(id),\r\n data,\r\n type: HttpVerbs.PUT,\r\n always: callback\r\n };\r\n }\r\n};","export * from './CompanyRequests';","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\nexport const CompanyValidationSchema = Yup.object().shape<CreateOrUpdateCompanyRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","export * from './CompanyValidation';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { CompanyCollection, Company } from 'libs/shared/interfaces';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\n\r\nconst application = AppChannels.COMPANIES;\r\n\r\nconst SEARCH_URL = '/api/domain/v1/search/companies/instant/raw';\r\n\r\nconst getCompanyAppLink = (company: Company) =>\r\n ({ application, action: Actions.Companies.EDIT_COMPANY, args: [company.id]});\r\n\r\nconst goToCompany = (person: Company) => Core.AppLinkHelper.trigger(getCompanyAppLink(person));\r\n\r\ninterface CompaniesViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function CompaniesView(props: CompaniesViewProps): JSX.Element {\r\n const companiesResponse = Flight.useBasicFetch<CompanyCollection>(CompanyRequests.getCompanies(props.cursor));\r\n\r\n return (\r\n <>\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n placeholder='Search for a company'\r\n onSuggestionSelected={goToCompany}\r\n getRemoteUrl={(q: string) => `${SEARCH_URL}?q=${q}`}\r\n activationLength={2}\r\n />\r\n </div>\r\n <ObjectCollection\r\n collection={companiesResponse && companiesResponse.data}\r\n collectionAppLink={{ application, action: Actions.Companies.COMPANIES }}\r\n newObjectAppLink={{ application, action: Actions.Companies.NEW_COMPANY }}\r\n getObjectAppLink={getCompanyAppLink}\r\n objectName={'Company'}\r\n />\r\n </>\r\n );\r\n}","export * from './CompaniesView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Company } from 'libs/shared/interfaces';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { EditCompany } from 'apps/companies/components';\r\n\r\ninterface EditCompanyViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditCompanyView(props: EditCompanyViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const companyResponse = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.id));\r\n\r\n const saveCompany = (data: CreateOrUpdateCompanyRequest, onDone: () => void): void =>\r\n Flight.fetch(dispatch, CompanyRequests.updateCompany(props.id, data, onDone));\r\n\r\n return (\r\n <>\r\n {!!companyResponse.data &&\r\n <EditCompany company={companyResponse.data} saveCompany={saveCompany} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditCompanyView';","export * from './edit-company';\r\nexport * from './new-company';\r\nexport * from './companies';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Company } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { EditCompany } from 'apps/companies/components';\r\n\r\nexport function NewCompanyView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createCompany = (data: CreateOrUpdateCompanyRequest, onDone: () => void): void => {\r\n const onSuccess = (newCompany: Company) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PEOPLE,\r\n action: Actions.Companies.EDIT_COMPANY,\r\n args: [newCompany.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, CompanyRequests.createCompany(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <EditCompany saveCompany={createCompany} />\r\n );\r\n}","export * from './NewCompanyView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { DomainOptionsView, NewDomainOptionView, EditDomainOptionView, DeleteDomainOptionView } from 'apps/domain-options/views';\r\n\r\nclass DomainOptionsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.DOMAIN_OPTIONS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'developer/options(/)': 'domainOptions',\r\n 'developer/options/new(/)': 'newDomainOption',\r\n 'developer/options/:id(/)': 'editDomainOption'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteDomainOption'\r\n ];\r\n }\r\n}\r\n\r\nexport class DomainOptionsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Domain Options Application';\r\n }\r\n\r\n public static get router(): any {\r\n return DomainOptionsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DOMAIN_OPTIONS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public domainOptions(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DomainOptionsView />);\r\n }\r\n\r\n public newDomainOption(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewDomainOptionView />);\r\n }\r\n\r\n public editDomainOption(optionId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditDomainOptionView optionId={optionId} />);\r\n }\r\n\r\n public deleteDomainOption(optionId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteDomainOptionView optionId={optionId} {...this.getPopupProps()} />\r\n );\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { FieldAttributes } from 'formik';\r\nimport { FormField, FormFieldProps } from 'libs/shared/components/forms/form-field/FormField';\r\n\r\nimport { DomainOptionType, DomainOption } from 'apps/domain-options/interfaces';\r\n\r\ninterface DefaultValueFieldProps {\r\n type: DomainOptionType;\r\n defaultValue: string | number;\r\n}\r\n\r\nexport function DefaultValueField({ type, defaultValue }: DefaultValueFieldProps): JSX.Element {\r\n if (!type)\r\n return <></>;\r\n\r\n const formFieldProps: FieldAttributes<FormFieldProps<DomainOption>> = {\r\n label: 'Default Value',\r\n name: 'defaultValue',\r\n id: 'defaultValue',\r\n value: defaultValue\r\n };\r\n\r\n if (type === DomainOptionType.Boolean) {\r\n return (\r\n <FormField<DomainOption>\r\n as='select'\r\n {...formFieldProps}\r\n >\r\n <option value='true'>True</option>\r\n <option value='false'>False</option>\r\n </FormField>\r\n );\r\n }\r\n\r\n if (type === DomainOptionType.Long || type === DomainOptionType.StaffRequest)\r\n return <FormField<DomainOption> as='input' type='number' {...formFieldProps} />;\r\n\r\n if (type === DomainOptionType.String)\r\n return <FormField<DomainOption> as='input' {...formFieldProps} />;\r\n}\r\n","import * as React from 'react';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionValidationSchema } from 'apps/domain-options/utils';\r\nimport { EditDomainOptionDetailsForm } from './EditDomainOptionDetailsForm';\r\n\r\ninterface EditDomainOptionDetailsProps {\r\n domainOption?: DomainOption;\r\n saveDomainOption: (data: DomainOption, onDone: () => void) => void;\r\n}\r\n\r\nexport function EditDomainOptionDetails(props: EditDomainOptionDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<DomainOption>\r\n initialValues={props.domainOption}\r\n validationSchema={DomainOptionValidationSchema}\r\n onSubmit={props.saveDomainOption}\r\n >\r\n <EditDomainOptionDetailsForm id={props.domainOption && props.domainOption.id} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { MasterType } from 'libs/shared/enums/MasterType';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption, DomainOptionType, DomainOptionKind } from 'apps/domain-options/interfaces';\r\n\r\nimport { DefaultValueField } from './DefaultValueField';\r\n\r\nconst validEntities = [ MasterType.Customer, MasterType.User ];\r\n\r\ninterface EditDomainOptionDetailsFormProps {\r\n id?: string;\r\n}\r\n\r\nexport function EditDomainOptionDetailsForm(props: EditDomainOptionDetailsFormProps): React.ReactElement {\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const formikProps = useFormikContext<DomainOption>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<DomainOption>\r\n label='Name (snake_case)'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this domain option'\r\n autoFocus\r\n />\r\n\r\n <FormField<DomainOption>\r\n label='Display Name'\r\n type='text'\r\n name='displayName'\r\n id='displayName'\r\n value={formikProps.values.displayName}\r\n placeholder='Enter a display name for this domain option'\r\n />\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Kind'\r\n name='kind'\r\n id='kind'\r\n value={formikProps.values.kind}\r\n >\r\n {ObjectHelper.getEnumKeys(DomainOptionKind).map((key: DomainOptionKind) =>\r\n <option key={key} value={(DomainOptionKind as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Entity'\r\n name='entityType'\r\n id='entityType'\r\n value={formikProps.values.entityType}\r\n >\r\n {ObjectHelper.getEnumKeys(MasterType)\r\n .filter((key: MasterType) => validEntities.includes((MasterType as any)[key]))\r\n .map((key: MasterType) =>\r\n <option key={key} value={(MasterType as any)[key]}>{key}</option>\r\n )\r\n }\r\n </FormField>\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n {ObjectHelper.getEnumKeys(DomainOptionType).map((key: DomainOptionType) =>\r\n <option key={key} value={(DomainOptionType as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n\r\n <DefaultValueField type={formikProps.values.type} defaultValue={formikProps.values.defaultValue} />\r\n\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.DELETE_DOMAIN_OPTION,\r\n args: [props.id]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditDomainOptionDetails';","export * from './edit-domain-option-details';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { DomainOption, DomainOptionType } from 'apps/domain-options/interfaces';\r\n\r\nconst normalizeOptions = {\r\n namespace: 'domain_options'\r\n};\r\n\r\nconst endpoints = {\r\n getAll: () => `/api/domain/v3/settings/types`,\r\n getOne: (id: string) => `/api/domain/v3/settings/types/${id}`,\r\n createOne: () => `/api/domain/v3/settings/types`,\r\n updateOne: (id: string) => `/api/domain/v3/settings/types/${id}`,\r\n deleteOne: (id: string) => `/api/domain/v3/settings/types/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n DOMAIN_OPTIONS: 'domain:options',\r\n DOMAIN_OPTION: 'domain:option',\r\n UPDATE_DOMAIN_OPTION: 'update:domain:option',\r\n DELETE_DOMAIN_OPTION: 'delete:domain:option'\r\n};\r\n\r\nexport const DomainOptionRequests = {\r\n getAllOptions(): Flight.Request {\r\n return {\r\n key: DataPrefixes.DOMAIN_OPTIONS,\r\n url: endpoints.getAll(),\r\n normalizeOptions\r\n };\r\n },\r\n getOption(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.DOMAIN_OPTION}:${id}`,\r\n url: endpoints.getOne(id),\r\n normalizeOptions\r\n };\r\n },\r\n\r\n createOption(option: DomainOption, success: (data: any) => void, error: (data: any) => void): Flight.Request {\r\n /**\r\n * DefaultValue for String option types must always be wrapped with quotation marks.\r\n */\r\n if (option.type === DomainOptionType.String)\r\n option = quotifyDefaultValue(option);\r\n\r\n return {\r\n key: DataPrefixes.DOMAIN_OPTION,\r\n url: endpoints.createOne(),\r\n data: option,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.DOMAIN_OPTIONS],\r\n normalizeOptions\r\n };\r\n },\r\n\r\n updateOption(option: DomainOption, callback: () => void): Flight.Request {\r\n /**\r\n * DefaultValue for String option types must always be wrapped with quotation marks.\r\n */\r\n if (option.type === DomainOptionType.String)\r\n option = quotifyDefaultValue(option);\r\n\r\n return {\r\n key: `${DataPrefixes.UPDATE_DOMAIN_OPTION}:${option.id}`,\r\n url: endpoints.updateOne(option.id),\r\n data: option,\r\n type: HttpVerbs.PUT,\r\n always: callback,\r\n formatData: () => option,\r\n normalizeOptions\r\n };\r\n },\r\n deleteOption(id: string, success: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.DELETE_DOMAIN_OPTION}:${id}`,\r\n url: endpoints.deleteOne(id),\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [DataPrefixes.DOMAIN_OPTIONS],\r\n normalizeOptions,\r\n success\r\n };\r\n },\r\n};\r\n\r\nfunction quotifyDefaultValue(option: DomainOption): DomainOption {\r\n const { defaultValue } = option;\r\n let defaultValueString = defaultValue as string;\r\n\r\n if (defaultValueString === '\"') {\r\n return {\r\n ...option,\r\n defaultValue: `\"${defaultValueString}\"`\r\n };\r\n }\r\n\r\n const firstChar = defaultValueString.charAt(0);\r\n const lastChar = defaultValueString.charAt(defaultValueString.length - 1);\r\n\r\n if (firstChar !== '\"')\r\n defaultValueString = `\"${defaultValueString}`;\r\n\r\n if (lastChar !== '\"')\r\n defaultValueString = `${defaultValueString}\"`;\r\n\r\n return {\r\n ...option,\r\n defaultValue: defaultValueString\r\n };\r\n}","export * from './DomainOptionRequests';","export * from './data-requests';\r\nexport * from './models';","import { MasterType } from 'libs/shared/enums/MasterType';\r\n\r\n/**\r\n * In the database the types are saved as C# types written as strings. Every field here\r\n * has been copied from what already exists in the database.\r\n */\r\nexport enum DomainOptionType {\r\n Boolean = 'System.Boolean',\r\n String = 'System.String',\r\n StaffRequest = 'ClickView.DomainApi.Models.Options.Enums.StaffRequestOption, ClickView.DomainApi.Models, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null',\r\n Long = 'System.Int64'\r\n}\r\n\r\nexport enum DomainOptionKind {\r\n Permanent = 0,\r\n Temporary = 1\r\n}\r\n\r\nexport interface DomainOption {\r\n id: string;\r\n name: string;\r\n displayName: string;\r\n type: DomainOptionType;\r\n entityType: MasterType;\r\n kind: DomainOptionKind;\r\n defaultValue: string | number;\r\n}","export * from './DomainOption';","export * from './validation';","import * as Yup from 'yup';\r\nimport { MasterType } from 'libs/shared/enums/MasterType';\r\n\r\nimport { DomainOption, DomainOptionType, DomainOptionKind } from 'apps/domain-options/interfaces';\r\n\r\nexport const DomainOptionValidationSchema = Yup.object().shape<DomainOption>({\r\n id: Yup.string(),\r\n\r\n name: Yup.string()\r\n .trim()\r\n .max(64, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n displayName: Yup.string()\r\n .trim()\r\n .max(255, 'Display name is too long')\r\n .required('Display name is required')\r\n .default(''),\r\n\r\n type: Yup.mixed<DomainOptionType>()\r\n .required('Type is required')\r\n .default(DomainOptionType.Boolean),\r\n\r\n entityType: Yup.mixed<MasterType>()\r\n .required('Entity type is required')\r\n .default(MasterType.Customer),\r\n\r\n kind: Yup.mixed<DomainOptionKind>()\r\n .required('Kind is required')\r\n .default(DomainOptionKind.Temporary),\r\n\r\n defaultValue: Yup.mixed<string | number>()\r\n .required('Default value is required')\r\n .default('false')\r\n\r\n}).noUnknown();","export * from './DomainOptionValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\n\r\ninterface DeleteDomainOptionViewProps {\r\n optionId: string;\r\n}\r\n\r\nexport function DeleteDomainOptionView(props: DeleteDomainOptionViewProps & PopupViewProps): React.ReactElement {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const domainOption = Flight.useBasicFetch<DomainOption>(DomainOptionRequests.getOption(props.optionId));\r\n const dispatch = useDispatch();\r\n\r\n const onDeleteSuccess = () => {\r\n props.closePopup();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.DOMAIN_OPTIONS\r\n });\r\n };\r\n\r\n const deleteDomainOption = () => {\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, DomainOptionRequests.deleteOption(props.optionId, onDeleteSuccess));\r\n };\r\n\r\n return (\r\n <Popup title='Delete Domain Option' closePopup={props.closePopup} showLoadingSpinner={!domainOption.data}>\r\n {domainOption.data &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{domainOption.data.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteDomainOption,\r\n buttonText: 'Yes, delete this domain option',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteDomainOptionView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\n\r\nconst getOptionAppLink = (option: DomainOption) => ({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.EDIT_DOMAIN_OPTION,\r\n args: [option.id]\r\n});\r\n\r\nconst newOptionAppLink = {\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.NEW_DOMAIN_OPTION\r\n};\r\n\r\nexport function DomainOptionsView(): JSX.Element {\r\n const domainOptions = Flight.useBasicFetch<DomainOption[]>(DomainOptionRequests.getAllOptions());\r\n\r\n if (!domainOptions.data)\r\n return <></>;\r\n\r\n const optionNames = domainOptions.data.map(option => {\r\n if (option.displayName)\r\n option.name = option.displayName;\r\n\r\n return option;\r\n });\r\n\r\n return (\r\n <>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a domain option type to edit:</h5>\r\n <AppLink appLink={newOptionAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Domain Option</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={optionNames} getAppLink={getOptionAppLink} />\r\n </>\r\n );\r\n}","export * from './DomainOptionsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { EditDomainOptionDetails } from 'apps/domain-options/components';\r\n\r\ninterface EditDomainOptionViewProps {\r\n optionId: string;\r\n}\r\n\r\nexport function EditDomainOptionView({ optionId }: EditDomainOptionViewProps): JSX.Element {\r\n const domainOption = Flight.useBasicFetch<DomainOption>(DomainOptionRequests.getOption(optionId));\r\n\r\n const dispatch = useDispatch();\r\n const saveDomainOption = (data: DomainOption, onDone: () => void): void =>\r\n Flight.fetch(dispatch, DomainOptionRequests.updateOption(data, onDone));\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Domain Option</h4>\r\n {domainOption.data &&\r\n <EditDomainOptionDetails domainOption={domainOption.data} saveDomainOption={saveDomainOption} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditDomainOptionView';","export * from './delete-domain-option';\r\nexport * from './domain-options';\r\nexport * from './new-domain-option';\r\nexport * from './edit-domain-option';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { EditDomainOptionDetails } from 'apps/domain-options/components';\r\n\r\nexport function NewDomainOptionView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createDomainOption = (data: DomainOption, onDone: () => void): void => {\r\n const onSuccess = (newDomainOption: DomainOption) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.EDIT_DOMAIN_OPTION,\r\n args: [newDomainOption.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, DomainOptionRequests.createOption(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Domain Option</h4>\r\n <EditDomainOptionDetails saveDomainOption={createDomainOption} />\r\n </>\r\n );\r\n}","export * from './NewDomainOptionView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { PeopleView, NewPersonView, EditPersonView } from 'apps/people/views';\r\n\r\nclass PeopleAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.PEOPLE;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/people(/)': 'people',\r\n 'manage/people/new(/)': 'newPerson',\r\n 'manage/people/:id(/)': 'editPerson',\r\n };\r\n }\r\n}\r\n\r\nexport class PeopleApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'People Application';\r\n }\r\n\r\n public static get router(): any {\r\n return PeopleAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PEOPLE;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public people(params: ObjectHash): void {\r\n const { cursor } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PeopleView cursor={cursor} />);\r\n }\r\n\r\n public newPerson(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPersonView />);\r\n }\r\n\r\n public editPerson(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPersonView id={id} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Person } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { PersonValidationSchema } from 'apps/people/utils';\r\n\r\nimport { EditPersonForm } from './EditPersonForm';\r\n\r\ninterface EditPersonProps {\r\n savePerson: (data: CreateOrUpdatePersonRequest, onDone: () => void) => void;\r\n person?: Person;\r\n}\r\n\r\nexport function EditPerson(props: EditPersonProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdatePersonRequest, Person>\r\n initialValues={props.person}\r\n validationSchema={PersonValidationSchema}\r\n onSubmit={props.savePerson}\r\n >\r\n <EditPersonForm isNew={!(props.person && props.person.id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\ninterface EditPersonFormProps {\r\n isNew: boolean;\r\n}\r\n\r\nexport function EditPersonForm(props: EditPersonFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdatePersonRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePersonRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this person'\r\n autoFocus\r\n />\r\n <FormButtons isNew={props.isNew} />\r\n </Form>\r\n );\r\n}","export * from './EditPerson';","export * from './edit-person';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\nconst endpoints = {\r\n getPeople: (cursor?: string) => {\r\n const baseUrl = `/api/master/v2/people`;\r\n\r\n if (!cursor)\r\n return baseUrl;\r\n\r\n return `${baseUrl}?cursor=${cursor}`;\r\n },\r\n\r\n getPerson: (id: string) => `/api/master/v2/objects/${id}`,\r\n\r\n createPerson: () => `/api/master/v2/people`,\r\n\r\n updatePerson: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n PEOPLE: 'people',\r\n PERSON: 'person',\r\n UPDATE_PERSON: 'update:person'\r\n};\r\n\r\nexport const PersonRequests = {\r\n getPeople(cursor?: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.PEOPLE}${cursor ? `:${cursor}` : ''}`,\r\n url: endpoints.getPeople(cursor),\r\n };\r\n },\r\n\r\n getPerson(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.PERSON}:${id}`,\r\n url: endpoints.getPerson(id),\r\n };\r\n },\r\n\r\n createPerson(\r\n data: CreateOrUpdatePersonRequest, success?: (data: any) => void, error?: (data: any) => void\r\n ): Flight.Request {\r\n return {\r\n key: DataPrefixes.PERSON,\r\n url: endpoints.createPerson(),\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.PEOPLE],\r\n };\r\n },\r\n\r\n updatePerson(id: string, data: CreateOrUpdatePersonRequest, callback?: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.UPDATE_PERSON}:${id}`,\r\n url: endpoints.updatePerson(id),\r\n data,\r\n type: HttpVerbs.PUT,\r\n always: callback\r\n };\r\n }\r\n};","export * from './PersonRequests';","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\nexport const PersonValidationSchema = Yup.object().shape<CreateOrUpdatePersonRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","export * from './PersonValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Person } from 'libs/shared/interfaces';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { EditPerson } from 'apps/people/components';\r\n\r\ninterface EditPersonViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditPersonView(props: EditPersonViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const personResponse = Flight.useBasicFetch<Person>(PersonRequests.getPerson(props.id));\r\n\r\n const savePerson = (data: CreateOrUpdatePersonRequest, onDone: () => void): void =>\r\n Flight.fetch(dispatch, PersonRequests.updatePerson(props.id, data, onDone));\r\n\r\n return (\r\n <>\r\n {!!personResponse.data &&\r\n <EditPerson person={personResponse.data} savePerson={savePerson} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPersonView';","export * from './edit-person';\r\nexport * from './new-person';\r\nexport * from './people';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Person } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { EditPerson } from 'apps/people/components';\r\n\r\nexport function NewPersonView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createPerson = (data: CreateOrUpdatePersonRequest, onDone: () => void): void => {\r\n const onSuccess = (newPerson: Person) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PEOPLE,\r\n action: Actions.People.EDIT_PERSON,\r\n args: [newPerson.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, PersonRequests.createPerson(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <EditPerson savePerson={createPerson} />\r\n );\r\n}","export * from './NewPersonView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { PersonCollection, Person } from 'libs/shared/interfaces';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\n\r\nconst application = AppChannels.PEOPLE;\r\n\r\nconst SEARCH_URL = '/api/domain/v1/search/people/instant/raw';\r\n\r\nconst getPersonAppLink = (person: Person) => ({ application, action: Actions.People.EDIT_PERSON, args: [person.id]});\r\n\r\nconst goToPerson = (person: Person) => Core.AppLinkHelper.trigger(getPersonAppLink(person));\r\n\r\ninterface PeopleViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function PeopleView(props: PeopleViewProps): JSX.Element {\r\n const peopleResponse = Flight.useBasicFetch<PersonCollection>(PersonRequests.getPeople(props.cursor));\r\n\r\n return (\r\n <>\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n placeholder='Search for a person'\r\n onSuggestionSelected={goToPerson}\r\n getRemoteUrl={(q: string) => `${SEARCH_URL}?q=${q}`}\r\n activationLength={2}\r\n />\r\n </div>\r\n <ObjectCollection\r\n collection={peopleResponse && peopleResponse.data}\r\n collectionAppLink={{ application, action: Actions.People.PEOPLE }}\r\n newObjectAppLink={{ application, action: Actions.People.NEW_PERSON }}\r\n getObjectAppLink={getPersonAppLink}\r\n objectName={'Person'}\r\n />\r\n </>\r\n );\r\n}","export * from './PeopleView';","import * as React from 'react';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\n\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport { PlaylistsAppContextProvider } from 'apps/playlists/context';\r\nimport {\r\n NewPlaylistView,\r\n DeletePlaylistView,\r\n RemoveVideoView,\r\n EditPlaylistView,\r\n EditPlaylistVideosView,\r\n EditPlaylistSubjectsView,\r\n EditPlaylistAudiencesView\r\n} from 'apps/playlists/views';\r\nimport { PlaylistsView } from 'apps/playlists/views/playlists';\r\nimport { PlaylistSearchResultsView } from 'apps/playlists/views/playlist-search-results';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { RemoveSubjectMemberView } from 'apps/subjects/views';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/playlists(/)': 'index',\r\n 'manage/playlists/new(/)': 'newPlaylist',\r\n 'manage/playlists/search(/)': 'searchPlaylists',\r\n 'manage/playlists/:id(/)': 'editPlaylist',\r\n 'manage/playlists/:id/videos(/)': 'editPlaylistVideos',\r\n 'manage/playlists/:id/subjects(/)': 'editPlaylistSubjects',\r\n 'manage/playlists/:id/audiences(/)': 'editPlaylistAudiences'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deletePlaylist',\r\n 'removeVideo',\r\n 'uploadImage',\r\n 'removeFromSubject'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n public static get router(): any {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: PlaylistsAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public index(params?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PlaylistsView cursor={params?.cursor} />);\r\n }\r\n\r\n public searchPlaylists(params?: HashObject): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <PlaylistSearchResultsView query={params?.query} cursor={params?.cursor} />);\r\n }\r\n\r\n public newPlaylist(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPlaylistView />);\r\n }\r\n\r\n public editPlaylist(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPlaylistView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistVideos(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistVideosView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistSubjects(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistSubjectsView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistAudiences(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistAudiencesView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public deletePlaylist(playlistId: string): void {\r\n const props = {\r\n playlistId,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeletePlaylistView {...props} />);\r\n }\r\n\r\n public removeVideo(playlistId: string, videoId: string): void {\r\n const props = {\r\n playlistId,\r\n videoId,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveVideoView {...props} />);\r\n }\r\n\r\n public removeFromSubject(playlistId: string, subjectId: string): void {\r\n const props = {\r\n subjectId,\r\n memberId: playlistId,\r\n memberType: SubjectMemberType.Playlists,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveSubjectMemberView {...props} />);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { CuratorUser } from 'libs/shared/interfaces';\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { PlaylistNavHelper } from 'apps/playlists/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditPlaylistNavProps {\r\n playlistId: string;\r\n activeAction: string;\r\n currentUser: CuratorUser;\r\n}\r\n\r\nexport function EditPlaylistNav(props: EditPlaylistNavProps): React.ReactElement {\r\n return (\r\n <div className='py-2'>\r\n <Tabs\r\n tabs={PlaylistNavHelper.getEditPlaylistTabs(props.currentUser, props.playlistId)}\r\n isItemActive={isItemActive(props.activeAction)}\r\n />\r\n </div>\r\n );\r\n}","export * from './EditPlaylistNav';","import * as React from 'react';\r\nimport { Playlist } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\r\nimport { PlaylistValidationSchema } from 'apps/playlists/utils';\r\n\r\nimport { EditPlaylistDetailsForm } from './EditPlaylistDetailsForm';\r\n\r\nconst getActions = (playlistId: string) => ([{\r\n label: 'Delete playlist',\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.DELETE_PLAYLIST,\r\n args: [playlistId]\r\n },\r\n className: 'text-danger'\r\n}]);\r\n\r\ninterface EditPlaylistDetailsProps {\r\n savePlaylist: (data: CreateOrUpdatePlaylistRequest, onDone: () => void) => void;\r\n playlist?: Playlist;\r\n}\r\n\r\nexport function EditPlaylistDetails(props: EditPlaylistDetailsProps): React.ReactElement {\r\n const id = props.playlist && props.playlist.id;\r\n\r\n return (\r\n <FormWrapper<CreateOrUpdatePlaylistRequest>\r\n initialValues={props.playlist}\r\n validationSchema={PlaylistValidationSchema}\r\n onSubmit={props.savePlaylist}\r\n >\r\n <EditPlaylistDetailsForm id={id} actions={!!id && getActions(id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { ImageSelect } from 'shared/components';\r\nimport { AppChannels, Actions as AppActions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\r\n\r\ninterface EditPlaylistDetailsFormProps {\r\n id?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditPlaylistDetailsForm(props: EditPlaylistDetailsFormProps): React.ReactElement {\r\n const formikProps = useFormikContext<CreateOrUpdatePlaylistRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePlaylistRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this playlist'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdatePlaylistRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={formikProps.values.description}\r\n placeholder='Describe this playlist here'\r\n />\r\n <ImageSelect<CreateOrUpdatePlaylistRequest>\r\n imageType={ImageType.Covers}\r\n fieldName='cover'\r\n application={AppChannels.PLAYLISTS}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<CreateOrUpdatePlaylistRequest>\r\n imageType={ImageType.Banners}\r\n fieldName='banner'\r\n application={AppChannels.PLAYLISTS}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {!props.id ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditPlaylistDetails';","export * from './edit-playlist';\r\nexport * from './edit-playlist-nav';","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\nimport { Playlist } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nconst REMOTE_SEARCH_URL = '/api/domain/v1/search/playlists/instant/raw';\r\n\r\nfunction getPlaylistAppLink(playlist: Playlist): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args: [playlist.id]\r\n };\r\n}\r\n\r\nfunction goToPlaylist(playlist: Playlist): void {\r\n return Core.AppLinkHelper.trigger(getPlaylistAppLink(playlist));\r\n}\r\n\r\nfunction goToSearchResults(query: string): void {\r\n const appLink = query\r\n ? {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.SEARCH_PLAYLISTS,\r\n params: { query }\r\n }\r\n : {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLISTS\r\n };\r\n\r\n Core.AppLinkHelper.trigger(appLink);\r\n}\r\n\r\ninterface PlaylistSearchProps {\r\n query?: string;\r\n}\r\n\r\nexport function PlaylistSearch(props: PlaylistSearchProps): JSX.Element {\r\n return (\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n initialQuery={props.query}\r\n placeholder='Search for a playlist'\r\n onSuggestionSelected={goToPlaylist}\r\n getRemoteUrl={(q: string) => `${REMOTE_SEARCH_URL}?query=${q}`}\r\n activationLength={2}\r\n onSubmit={goToSearchResults}\r\n />\r\n </div>\r\n );\r\n}","export * from './PlaylistSearch';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider } from 'shared/context';\r\n\r\nexport const PlaylistsAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n);","export * from './PlaylistsAppContext';","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { CollectionHelper } from 'shared/utils/CuratorCollectionHelper';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\nimport { ReorderRequest } from 'libs/shared/interfaces';\r\n\r\nexport const PlaylistRequests = {\r\n playlists(cursor: string = '1'): Flight.Request {\r\n return {\r\n key: `playlists:${cursor}`,\r\n url: `/ajax/playlists/curators?page=${cursor}`,\r\n formatData: CollectionHelper.convertLegacyPaginatedCollection\r\n };\r\n },\r\n\r\n searchPlaylists(query: string, cursor?: string): Flight.Request {\r\n let url = `/api/domain/v1/search/playlists?query=${query}`;\r\n\r\n if (cursor)\r\n url += `&filter={page:${cursor}}`;\r\n\r\n return {\r\n key: `playlists:search:${query}${cursor ? `:${cursor}` : ''}`,\r\n url,\r\n formatData: CollectionHelper.convertLegacyPaginatedCollection\r\n };\r\n },\r\n\r\n playlist(id: string): Flight.Request {\r\n return {\r\n key: `playlist:${id}`,\r\n url: `/api/master/v2/objects/${id}?query=cover,banner`\r\n };\r\n },\r\n\r\n playlistsById(ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n return {\r\n key: `playlists:${sortedIds.join(',')}`,\r\n url: `/api/master/v2/objects?${sortedIds.map(id => `id=${id}`).join('&')}`\r\n };\r\n },\r\n\r\n createPlaylist(\r\n data: CreateOrUpdatePlaylistRequest,\r\n userId: string,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${userId}/playlists`,\r\n key: 'playlist',\r\n data: { ...data, permissions: PermissionsHelper.getProtectedReadPermission() },\r\n type: HttpVerbs.POST,\r\n invalidationKeys: 'playlists',\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updatePlaylist(\r\n id: string,\r\n data: CreateOrUpdatePlaylistRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${id}`,\r\n key: `update:playlist:${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n deletePlaylist(\r\n id: string,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v1/playlists/${id}`,\r\n key: `delete:playlist:${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: 'playlists',\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n playlistVideos(id: string): Flight.Request {\r\n return {\r\n key: `playlist:${id}:videos`,\r\n url: `/api/master/v2/objects/${id}/videos?query={orderBy:orderindex,limit:100}`,\r\n };\r\n },\r\n\r\n reorderVideos(\r\n id: string,\r\n reorderRequest: ReorderRequest,\r\n success?: (data: any) => void,\r\n error?: (data: Xhr) => void\r\n ): Flight.Request {\r\n return {\r\n key: `reorder:playlist`,\r\n url: `/api/master/v1/objects/${id}/videos/reorder`,\r\n data: reorderRequest,\r\n type: HttpVerbs.PUT,\r\n invalidationKeys: `playlist:${id}:videos`,\r\n success,\r\n error\r\n };\r\n },\r\n\r\n removeVideo(\r\n playlistId: string,\r\n videoId: string,\r\n success?: (data: any) => void,\r\n error?: (data: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n key: 'remove:playlist:video',\r\n url: `/api/master/v1/playlists/${playlistId}/dissociate/${videoId}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: `playlist:${playlistId}:videos`,\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nexport const PlaylistNavHelper = {\r\n getEditPlaylistTabs(currentUser: CuratorUser, playlistId: string): NavItem[] {\r\n const application = AppChannels.PLAYLISTS;\r\n const actions = Actions.Playlists;\r\n\r\n const tabs: NavItem[] = [\r\n {\r\n label: 'Edit Playlist Details',\r\n appLink: { application, action: actions.EDIT_PLAYLIST, args: [playlistId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_VIDEOS, args: [playlistId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (canAccessSubjects)\r\n tabs.push(...[\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_SUBJECTS, args: [playlistId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_AUDIENCES, args: [playlistId]}\r\n }\r\n ]);\r\n\r\n return tabs;\r\n }\r\n};","export * from './validation';\r\nexport * from './PlaylistNavHelper';","import * as Yup from 'yup';\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'libs/shared/apps/playlists/interfaces';\r\n\r\nexport const PlaylistValidationSchema = Yup.object().shape<CreateOrUpdatePlaylistRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .max(65535, 'Description is too long')\r\n .default(''),\r\n\r\n cover: Yup.object()\r\n .shape<Cover>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","export * from './PlaylistValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Playlist, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\ninterface DeletePlaylistViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function DeletePlaylistView(props: DeletePlaylistViewProps & PopupViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n\r\n function deletePlaylist(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n alerts.success('Successfully deleted playlist.');\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLISTS\r\n });\r\n };\r\n\r\n const onError = () => {\r\n setShowButtonSpinner(false);\r\n alerts.error('Failed to delete playlist.');\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.deletePlaylist(props.playlistId, onSuccess, onError, props.closePopup));\r\n }\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel',\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deletePlaylist,\r\n buttonText: 'Yes, delete playlist',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n const dataLoaded = !!playlist.data;\r\n\r\n return (\r\n <Popup title='Delete Playlist' closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{playlist.data.name}</strong>?</p>\r\n <p>Please ensure it is not being used in any widgets.</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeletePlaylistView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\n\r\nimport { Playlist, PresentationAudience, CuratorUser } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { Actions, DataServices } from 'shared/constants';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPlaylistAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n playlistLevels?: Level[];\r\n playlistAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditPlaylistAudiencesViewState>>;\r\n\r\nfunction useFetchData(playlistId: string, state: EditPlaylistAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditPlaylistAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch playlist and playlist levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistLevels'))\r\n ], [playlistId]);\r\n\r\n // Fetch playlist audiences. Re-fetch when playlistLevels changes as audiences may have changed.\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistAudiences')),\r\n [ playlistId, state.playlistLevels ]\r\n );\r\n\r\n // Fetch presentations and levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n // Fetched audiences for current presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditPlaylistAudiencesViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistAudiencesView(props: EditPlaylistAudiencesViewProps): JSX.Element {\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n const [ state, setState ] = React.useState<EditPlaylistAudiencesViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.playlistId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.playlistLevels && !!state.playlistAudiences;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditPlaylistNav\r\n playlistId={props.playlistId}\r\n activeAction={Actions.Playlists.EDIT_PLAYLIST_AUDIENCES}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={playlist.data} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.playlistLevels}\r\n objectAudiences={state.playlistAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Playlists}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n props.playlistId, levelIds, SubjectMemberType.Playlists, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n props.playlistId, state.currentPresentation.id, audienceIds, SubjectMemberType.Playlists, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistAudiencesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\n\r\nimport { Playlist, Subject, Classification, CuratorUser } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPlaylistSubjectsViewState {\r\n playlistSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n playlistClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditPlaylistSubjectsViewState>>;\r\n\r\nfunction useFetchData(playlistId: string, state: EditPlaylistSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditPlaylistSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch subject tree and presentations\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n // Fetch playlist and playlist subjects\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistSubjects'))\r\n ], [playlistId]);\r\n\r\n // Fetch classification tree for presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever playlistSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.playlistSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditPlaylistSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.playlistSubjects && state.playlistSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.playlistSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n // Fetch playlist classifications\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(playlistId, SubjectMemberType.Playlists, getSetState('playlistClassifications')),\r\n [ playlistId, state.playlistSubjects ]\r\n );\r\n}\r\n\r\ninterface EditPlaylistSubjectsViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistSubjectsView(props: EditPlaylistSubjectsViewProps): React.ReactElement {\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n const [ state, setState ] = React.useState<EditPlaylistSubjectsViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.playlistId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.playlistSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.playlistClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditPlaylistNav\r\n playlistId={props.playlistId}\r\n activeAction={Actions.Playlists.EDIT_PLAYLIST_SUBJECTS}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={playlist.data} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.playlistSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Playlists}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.playlistClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n props.playlistId, subjectsId, SubjectMemberType.Playlists, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n props.playlistId,\r\n state.currentPresentation.id,\r\n classificationIds,\r\n SubjectMemberType.Playlists,\r\n onDone,\r\n onDone\r\n )\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistSubjectsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Video, VideoCollection, Playlist, CuratorUser } from 'libs/shared/interfaces';\r\nimport { ReorderHelper } from 'libs/shared/utils/ReorderHelper';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { useReorderedItems } from 'libs/shared/hooks/UseReorderedItems';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { SortableVideoList } from 'shared/components/video-list';\r\nimport { ObjectHeader } from 'shared/components/object-header';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components/edit-playlist-nav';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nconst getVideoActions = (playlistId: string) => (video: Video) => ([\r\n {\r\n label: 'Remove video',\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.REMOVE_VIDEO,\r\n args: [ playlistId.toString(), video.id.toString() ]\r\n },\r\n className: 'text-danger'\r\n }\r\n]);\r\n\r\nconst getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\n\r\ninterface EditPlaylistVideosViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistVideosView(props: EditPlaylistVideosViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const videos = Flight.useBasicFetch<VideoCollection>(PlaylistRequests.playlistVideos(props.playlistId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n /**\r\n * Temporary storage of videos used while waiting for the reorder request response\r\n * and subsequent re-fetch of videos.\r\n */\r\n const [ reorderedVideos, setReorderedVideos ] = useReorderedItems(videos.data?.data);\r\n\r\n const onSort = (oldIdx: number, newIdx: number) => {\r\n if (oldIdx === newIdx)\r\n return;\r\n\r\n const { reorderRequest, reorderedItems } = ReorderHelper.reorder(videos.data.data, oldIdx, newIdx);\r\n\r\n setReorderedVideos(reorderedItems);\r\n\r\n const onError = () => {\r\n alerts.error('Failed to update playlist order.');\r\n setReorderedVideos(null);\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.reorderVideos(props.playlistId, reorderRequest, null, onError));\r\n };\r\n\r\n const videoCollection = reorderedVideos\r\n ? ({ data: reorderedVideos, pagination: null } as VideoCollection)\r\n : videos.data;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditPlaylistNav\r\n playlistId={props.playlistId}\r\n activeAction={Actions.Playlists.EDIT_PLAYLIST_VIDEOS}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={playlist.data} />\r\n {!!videoCollection &&\r\n <SortableVideoList\r\n onSortEnd={onSort}\r\n videos={videoCollection}\r\n getVideoAppLink={getVideoAppLink}\r\n getVideoActions={getVideoActions(props.playlistId)}\r\n emptyMessage='There are no videos in this playlist.'\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistVideosView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Playlist, CuratorUser } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { EditPlaylistDetails, EditPlaylistNav } from 'apps/playlists/components';\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\ninterface EditPlaylistViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistView(props: EditPlaylistViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n function savePlaylist(data: CreateOrUpdatePlaylistRequest, onDone: () => void): void {\r\n const onSuccess = () => {\r\n alerts.success('Successfully updated playlist.');\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to update playlist.');\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.updatePlaylist(props.playlistId, data, onSuccess, onError, onDone));\r\n }\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditPlaylistNav\r\n playlistId={props.playlistId}\r\n activeAction={Actions.Playlists.EDIT_PLAYLIST}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n {!!playlist.data && <EditPlaylistDetails playlist={playlist.data} savePlaylist={savePlaylist} />}\r\n </>\r\n );\r\n}","export * from './EditPlaylistView';","export * from './delete-playlist';\r\nexport * from './edit-playlist';\r\nexport * from './edit-playlist-audiences';\r\nexport * from './edit-playlist-subjects';\r\nexport * from './edit-playlist-videos';\r\nexport * from './new-playlist';\r\nexport * from './remove-video';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Playlist, CuratorUser } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { EditPlaylistDetails } from 'apps/playlists/components';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\nfunction goToPlaylist(playlist: Playlist): void {\r\n if (!playlist || !playlist.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args: [playlist.id]\r\n });\r\n}\r\n\r\nexport function NewPlaylistView(): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n function savePlaylist(data: CreateOrUpdatePlaylistRequest, onDone: () => void): void {\r\n const onSuccess = (playlist: Playlist) => {\r\n alerts.success('Successfully created playlist.');\r\n goToPlaylist(playlist);\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to create playlist.');\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.createPlaylist(data, currentUser.data.id, onSuccess, onError, onDone));\r\n }\r\n\r\n return (\r\n <>\r\n {!!currentUser.data && <EditPlaylistDetails savePlaylist={savePlaylist} />}\r\n </>\r\n );\r\n}","export * from './NewPlaylistView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { PlaylistCollection, Playlist } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { PlaylistSearch } from 'apps/playlists/components/playlist-search';\r\n\r\nconst application = AppChannels.PLAYLISTS;\r\n\r\nconst getPlaylistAppLink = (playlist: Playlist) =>\r\n ({ application, action: Actions.Playlists.EDIT_PLAYLIST, args: [playlist.id]});\r\n\r\ninterface PlaylistSearchResultsViewProps {\r\n query: string;\r\n cursor?: string;\r\n}\r\n\r\nexport function PlaylistSearchResultsView(props: PlaylistSearchResultsViewProps): JSX.Element {\r\n const playlists = Flight.useBasicFetch<PlaylistCollection>(\r\n PlaylistRequests.searchPlaylists(props.query, props.cursor));\r\n\r\n return (\r\n <>\r\n <PlaylistSearch query={props.query} />\r\n {!!playlists.data && (playlists.data.data.length\r\n ? <ObjectCollection\r\n collection={playlists.data}\r\n collectionAppLink={{\r\n application,\r\n action: Actions.Playlists.SEARCH_PLAYLISTS,\r\n params: { query: props.query }\r\n }}\r\n newObjectAppLink={{ application, action: Actions.Playlists.NEW_PLAYLIST }}\r\n getObjectAppLink={getPlaylistAppLink}\r\n objectName={'Playlist'}\r\n />\r\n : <p>No playlists found, please try a different search query.</p>\r\n )}\r\n </>\r\n );\r\n}","export * from './PlaylistSearchResultsView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { PlaylistCollection, Playlist } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { PlaylistSearch } from 'apps/playlists/components/playlist-search';\r\n\r\nconst application = AppChannels.PLAYLISTS;\r\n\r\nconst getPlaylistAppLink = (playlist: Playlist) =>\r\n ({ application, action: Actions.Playlists.EDIT_PLAYLIST, args: [playlist.id]});\r\n\r\ninterface PlaylistsViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function PlaylistsView(props: PlaylistsViewProps): JSX.Element {\r\n const playlists = Flight.useBasicFetch<PlaylistCollection>(PlaylistRequests.playlists(props.cursor));\r\n\r\n return (\r\n <>\r\n <PlaylistSearch />\r\n <ObjectCollection\r\n collection={playlists && playlists.data}\r\n collectionAppLink={{ application, action: Actions.Playlists.PLAYLISTS }}\r\n newObjectAppLink={{ application, action: Actions.Playlists.NEW_PLAYLIST }}\r\n getObjectAppLink={getPlaylistAppLink}\r\n objectName={'Playlist'}\r\n />\r\n </>\r\n );\r\n}","export * from './PlaylistsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Video, Playlist, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\ninterface RemoveVideoViewProps {\r\n videoId: string;\r\n playlistId: string;\r\n}\r\n\r\nexport function RemoveVideoView(props: RemoveVideoViewProps & PopupViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const playlist = Flight.useBasicFetch<Playlist>(PlaylistRequests.playlist(props.playlistId));\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n function removeVideo(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n alerts.success('Successfully removed video from playlist');\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to remove video from playlist');\r\n };\r\n\r\n Flight.fetch(\r\n dispatch,\r\n PlaylistRequests.removeVideo(props.playlistId, props.videoId, onSuccess, onError, props.closePopup)\r\n );\r\n }\r\n\r\n const dataLoaded = !!playlist.data && !!video.data;\r\n\r\n return (\r\n <Popup title='Remove Video' closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {!!dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {video.data.name}</strong> from <strong>{playlist.data.name}</strong>?\r\n </p>\r\n </div>\r\n <PopupButtons\r\n buttons={[\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeVideo,\r\n buttonText: 'Yes, remove video',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]}\r\n />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveVideoView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutViewOptions, CuratorLayoutView } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport { SeriesAppContextProvider } from 'apps/series/context';\r\nimport { EditSeriesView, NewSeriesView, EditSeriesAudiencesView, EditSeriesSubjectsView } from 'apps/series/views';\r\n\r\nclass SeriesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SERIES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/series/new(/)': 'newSeries',\r\n 'manage/series/:id(/)': 'editSeries',\r\n 'manage/series/:id/videos(/)': 'editSeriesVideos',\r\n 'manage/series/:id/subjects(/)': 'editSeriesSubjects',\r\n 'manage/series/:id/audiences(/)': 'editSeriesAudiences',\r\n\r\n 'manage/legacy/series/:id(/)': 'legacyEditSeries'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class SeriesApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Series Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SeriesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SERIES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: SeriesAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public newSeries(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewSeriesView />);\r\n }\r\n\r\n public editSeries(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesView seriesId={seriesId} />);\r\n }\r\n\r\n public editSeriesVideos(seriesId: string): void {\r\n this.legacyEditSeries(seriesId);\r\n }\r\n\r\n public editSeriesSubjects(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesSubjectsView seriesId={seriesId} />);\r\n }\r\n\r\n public editSeriesAudiences(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesAudiencesView seriesId={seriesId} />);\r\n }\r\n\r\n public legacyEditSeries(seriesId: string): void {\r\n Core.LocationUtils.Redirect(`/manage/legacy/series/${seriesId}`, true);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { Series, Rating } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesValidationSchema } from 'apps/series/utils';\r\n\r\nimport { EditSeriesDetailsForm } from './EditSeriesDetailsForm';\r\n\r\ninterface EditSeriesDetailsProps {\r\n saveSeries: (data: CreateOrUpdateSeriesRequest, onDone: () => void) => void;\r\n ratings: Rating[];\r\n series?: Series;\r\n}\r\n\r\nexport function EditSeriesDetails(props: EditSeriesDetailsProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateSeriesRequest, Series>\r\n initialValues={props.series}\r\n validationSchema={SeriesValidationSchema}\r\n onSubmit={props.saveSeries}\r\n >\r\n <EditSeriesDetailsForm id={props.series && props.series.id} ratings={props.ratings} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { Banner, TallPoster, Rating } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { ImageSelect, RatingSelect } from 'shared/components';\r\nimport { AppChannels, Actions as AppActions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SERIES_MAX_DESCRIPTION_LENGTH } from 'apps/series/utils';\r\n\r\ninterface EditSeriesDetailsFormProps {\r\n ratings: Rating[];\r\n id?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditSeriesDetailsForm(props: EditSeriesDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateSeriesRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateSeriesRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this series'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateSeriesRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n maxLength={SERIES_MAX_DESCRIPTION_LENGTH}\r\n value={formikProps.values.description}\r\n placeholder='Describe this series here'\r\n showCharacterCounter\r\n />\r\n <RatingSelect<CreateOrUpdateSeriesRequest> ratings={props.ratings} />\r\n <ImageSelect<CreateOrUpdateSeriesRequest>\r\n imageType={ImageType.TallPosters}\r\n fieldName='tallPoster'\r\n application={AppChannels.SERIES}\r\n uploadAction={AppActions.Series.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<CreateOrUpdateSeriesRequest>\r\n imageType={ImageType.Banners}\r\n fieldName='banner'\r\n application={AppChannels.SERIES}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {!props.id ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditSeriesDetails';","import * as React from 'react';\r\n\r\nimport { CuratorUser } from 'libs/shared/interfaces'\r\n;\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { SeriesNavHelper } from 'apps/series/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditSeriesNavProps {\r\n seriesId: string;\r\n activeAction: string;\r\n currentUser: CuratorUser;\r\n}\r\n\r\nexport function EditSeriesNav(props: EditSeriesNavProps): React.ReactElement {\r\n return (\r\n <div className='py-2'>\r\n <Tabs\r\n tabs={SeriesNavHelper.getEditSeriesTabs(props.currentUser, props.seriesId)}\r\n isItemActive={isItemActive(props.activeAction)}\r\n />\r\n </div>\r\n );\r\n}","export * from './EditSeriesNav';","export * from './edit-series-details';\r\nexport * from './edit-series-nav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider } from 'shared/context';\r\n\r\nexport const SeriesAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n);","export * from './SeriesAppContext';","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { UpdateObjectPermissionsRequest } from 'shared/interfaces';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nexport const SeriesRequests = {\r\n series(id: string): Flight.Request {\r\n return {\r\n key: `series:${id}`,\r\n url: `/api/master/v2/objects/${id}?query=thumbnail,tallPoster,banner,rating`\r\n };\r\n },\r\n\r\n seriesById(ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n return {\r\n key: `series:${sortedIds.join(',')}`,\r\n url: `/api/master/v2/objects?${sortedIds.map(id => `id=${id}`).join('&')}`\r\n };\r\n },\r\n\r\n createSeries(\r\n data: CreateOrUpdateSeriesRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/series`,\r\n key: 'series',\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updateSeries(\r\n id: string,\r\n data: CreateOrUpdateSeriesRequest | UpdateObjectPermissionsRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${id}`,\r\n key: `update:series:${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nexport const SeriesNavHelper = {\r\n getEditSeriesTabs(currentUser: CuratorUser, seriesId: string): NavItem[] {\r\n const application = AppChannels.SERIES;\r\n const actions = Actions.Series;\r\n\r\n const tabs: NavItem[] = [\r\n {\r\n label: 'Edit Series Details',\r\n appLink: { application, action: actions.EDIT_SERIES, args: [seriesId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_SERIES_VIDEOS, args: [seriesId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (canAccessSubjects)\r\n tabs.push(...[\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_SERIES_SUBJECTS, args: [seriesId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_SERIES_AUDIENCES, args: [seriesId]}\r\n }\r\n ]);\r\n\r\n return tabs;\r\n }\r\n};","export * from './validation';\r\nexport * from './SeriesNavHelper';","import * as Yup from 'yup';\r\nimport { TallPoster, Banner } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nexport const SERIES_MAX_DESCRIPTION_LENGTH = 350;\r\n\r\nexport const SeriesValidationSchema = Yup.object().shape<CreateOrUpdateSeriesRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .max(SERIES_MAX_DESCRIPTION_LENGTH, 'Description is too long')\r\n .default(''),\r\n\r\n rating: Yup.object()\r\n .shape<UpdateObjectRating>({\r\n id: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n tallPoster: Yup.object()\r\n .shape<TallPoster>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","export * from './SeriesValidation';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\n\r\nimport { Series, PresentationAudience, CuratorUser } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\nimport { ObjectHeader } from 'shared/components';\r\n\r\nimport { EditSeriesNav } from 'apps/series/components';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditSeriesAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n seriesLevels?: Level[];\r\n seriesAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSeriesAudiencesViewState>>;\r\n\r\nfunction useFetchData(seriesId: string, state: EditSeriesAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditSeriesAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch series levels\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesLevels')),\r\n [seriesId]\r\n );\r\n\r\n // Fetch series audiences\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesAudiences')),\r\n [ seriesId, state.seriesLevels ]\r\n );\r\n\r\n // Fetch presentations and levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n // Fetch audiences for currentPresentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditSeriesAudiencesViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesAudiencesView(props: EditSeriesAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditSeriesAudiencesViewState>({});\r\n\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.seriesId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.seriesLevels && !!state.seriesAudiences;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditSeriesNav\r\n seriesId={props.seriesId}\r\n activeAction={Actions.Series.EDIT_SERIES_AUDIENCES}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={series.data} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.seriesLevels}\r\n objectAudiences={state.seriesAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Series}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n props.seriesId, levelIds, SubjectMemberType.Series, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n props.seriesId, state.currentPresentation.id, audienceIds, SubjectMemberType.Series, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesAudiencesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\n\r\nimport { Series, Subject, Classification, CuratorUser } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditSeriesNav } from 'apps/series/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\ninterface EditSeriesSubjectsViewState {\r\n seriesSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n seriesClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSeriesSubjectsViewState>>;\r\n\r\nfunction useFetchData(seriesId: string, state: EditSeriesSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditSeriesSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch subject tree and presentations\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n // Fetch series subjects\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesSubjects')),\r\n [seriesId]\r\n );\r\n\r\n // Fetch classification tree for presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever seriesSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.seriesSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditSeriesSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.seriesSubjects && state.seriesSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.seriesSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n // Fetch series classifications\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesClassifications')),\r\n [ seriesId, state.seriesSubjects ]\r\n );\r\n}\r\n\r\ninterface EditSeriesSubjectsViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesSubjectsView(props: EditSeriesSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditSeriesSubjectsViewState>({});\r\n\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.seriesId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.seriesSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.seriesClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditSeriesNav\r\n seriesId={props.seriesId}\r\n activeAction={Actions.Series.EDIT_SERIES_SUBJECTS}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={series.data} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.seriesSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Series}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.seriesClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n props.seriesId, subjectsId, SubjectMemberType.Series, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n props.seriesId, state.currentPresentation.id, classificationIds, SubjectMemberType.Series, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesSubjectsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Series, Rating, CuratorUser } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\r\n\r\nimport { EditSeriesNav, EditSeriesDetails } from 'apps/series/components';\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\nfunction getLegacySeriesAppLink(seriesId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.LEGACY_EDIT_SERIES,\r\n args: [seriesId]\r\n };\r\n}\r\n\r\ninterface EditSeriesViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesView(props: EditSeriesViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\r\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n function saveSeries(data: CreateOrUpdateSeriesRequest, onDone: () => void): void {\r\n const onSuccess = () => {\r\n alerts.success('Successfully updated series.');\r\n };\r\n\r\n const onError = () => {\r\n alerts.error('Failed to update series.');\r\n };\r\n\r\n Flight.fetch(dispatch, SeriesRequests.updateSeries(props.seriesId, data, onSuccess, onError, onDone));\r\n }\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditSeriesNav\r\n seriesId={props.seriesId}\r\n activeAction={Actions.Series.EDIT_SERIES}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n {!!series.data && !!ratings.data &&\r\n <EditSeriesDetails series={series.data} saveSeries={saveSeries} ratings={ratings.data} />\r\n }\r\n <div className='py-3 text-right'>\r\n {'Can\\'t find what you\\'re looking for? Try the old edit series page '}\r\n <AppLink className='info-link' appLink={getLegacySeriesAppLink(props.seriesId)}>here</AppLink>.\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditSeriesView';","export * from './edit-series';\r\nexport * from './edit-series-audiences';\r\nexport * from './edit-series-subjects';\r\nexport * from './new-series';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Series, Rating } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nimport { EditSeriesDetails } from 'apps/series/components';\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\n\r\nfunction goToSeries(series: Series): void {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args: [series.id]\r\n });\r\n}\r\n\r\n\r\nexport function NewSeriesView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n\r\n function createSeries(data: CreateOrUpdateSeriesRequest, onDone: () => void): void {\r\n const onError = () => {\r\n alerts.error('Failed to create series.');\r\n };\r\n\r\n const onUpdateSuccess = (series: Series) => {\r\n alerts.success('Successfully created series.');\r\n goToSeries(series);\r\n };\r\n\r\n const onCreateSuccess = (series: Series) => {\r\n const permissionsData = { permissions: PermissionsHelper.getProtectedReadPermission() };\r\n Flight.fetch(dispatch, SeriesRequests.updateSeries(series.id, permissionsData, onUpdateSuccess, onError, onDone));\r\n };\r\n\r\n\r\n Flight.fetch(dispatch, SeriesRequests.createSeries(data, onCreateSuccess, onError));\r\n }\r\n\r\n return (\r\n <>\r\n {!!ratings.data && <EditSeriesDetails saveSeries={createSeries} ratings={ratings.data} />}\r\n </>\r\n );\r\n}","export * from './NewSeriesView';","import * as React from 'react';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { PopupViewProps } from 'libs/shared/interfaces';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nimport { AppChannels, Layouts, Actions, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport {\r\n ClassificationNavView,\r\n NewClassificationView,\r\n EditClassificationView,\r\n EditClassificationMembersView,\r\n DeleteClassificationView,\r\n EditPresentationsListView,\r\n NewPresentationView,\r\n EditPresentationView,\r\n SubjectNavView,\r\n NewSubjectView,\r\n EditSubjectView,\r\n EditSubjectMembersView,\r\n DeleteSubjectView,\r\n RemoveClassificationMemberView,\r\n AddSubjectMembersView,\r\n RemoveSubjectMemberView,\r\n TopNavView,\r\n SelectPresentationView,\r\n EditLevelsListView,\r\n NewLevelView,\r\n EditLevelView,\r\n EditAudiencesListView,\r\n NewAudienceView,\r\n EditAudienceView,\r\n DeleteAudienceView,\r\n SubjectClassificationsView\r\n} from 'apps/subjects/views';\r\n\r\nimport { SubjectTree, ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectsAppContextProvider } from 'apps/subjects/context';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\n\r\nclass SubjectsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/subjects(/)': 'subjects',\r\n 'manage/subjects/add-objects(/)': 'addSubjectMembers',\r\n 'manage/subjects/new(/)': 'newSubject',\r\n 'manage/subjects/:id/edit(/)': 'editSubject',\r\n 'manage/subjects/:id/edit/playlists(/)': 'editSubjectPlaylists',\r\n 'manage/subjects/:id/edit/series(/)': 'editSubjectSeries',\r\n 'manage/subjects/:id/edit/videos(/)': 'editSubjectVideos',\r\n 'manage/subjects/:id/classifications(/)': 'subjectClassifications',\r\n\r\n 'manage/subjects/classifications(/)': 'classifications',\r\n 'manage/subjects/presentations/:id/classifications(/)': 'presentationClassifications',\r\n 'manage/subjects/presentations/:id/classifications/new(/)': 'newClassification',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit(/)': 'editClassification',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/playlists(/)': 'editClassificationPlaylists',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/series(/)': 'editClassificationSeries',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/videos(/)': 'editClassificationVideos',\r\n\r\n 'manage/subjects/levels(/)': 'levels',\r\n 'manage/subjects/levels/new(/)': 'newLevel',\r\n 'manage/subjects/levels/:id(/)': 'editLevel',\r\n\r\n 'manage/subjects/audiences(/)': 'audiences',\r\n 'manage/subjects/presentations/:id/audiences(/)': 'presentationAudiences',\r\n 'manage/subjects/presentations/:id/audiences/new(/)': 'newAudience',\r\n 'manage/subjects/presentations/:id/audiences/:id/edit(/)': 'editAudience',\r\n\r\n 'manage/subjects/presentations(/)': 'presentations',\r\n 'manage/subjects/presentations/new': 'newPresentation',\r\n 'manage/subjects/presentations/:id(/)': 'editPresentation'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteClassification',\r\n 'removeClassificationMember',\r\n 'deleteSubject',\r\n 'removeSubjectMember',\r\n 'deleteAudience',\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class SubjectsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n private subjectDataService: SubjectDataService;\r\n\r\n private currentLeftNavId: string;\r\n\r\n public initialize(): void {\r\n this.subjectDataService = InstanceManager.getInstance(DataServices.SUBJECT, this);\r\n\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Subjects Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECTS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: SubjectsAppContextProvider,\r\n getTopNavView: this.getTopNav\r\n }\r\n };\r\n }\r\n\r\n public subjects(): void {\r\n this.subjectDataService.getSubjectTree((subjectTree: SubjectTree) => {\r\n const firstSubject = !!subjectTree.children && subjectTree.children[0];\r\n\r\n if (!firstSubject) {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_SUBJECT\r\n }, { replace: true });\r\n\r\n return;\r\n }\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [firstSubject.id]\r\n }, { replace: true });\r\n });\r\n }\r\n\r\n public newSubject(params: ObjectHash): void {\r\n const props = {\r\n parentId: params.parentId\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewSubjectView key={params.parentId} {...props} />);\r\n\r\n this.renderSubjectsLeftNav();\r\n }\r\n\r\n public editSubject(subjectId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSubjectView key={subjectId} subjectId={subjectId} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectPlaylists(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditSubjectMembersView key={`${subjectId}:playlists`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectSeries(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Series };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditSubjectMembersView key={`${subjectId}:series`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectVideos(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Videos };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSubjectMembersView key={`${subjectId}:videos`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public subjectClassifications(subjectId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SubjectClassificationsView key={subjectId} subjectId={subjectId} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public addSubjectMembers(params: ObjectHash): void {\r\n const { memberType, objectIds } = params;\r\n\r\n if (!memberType || !objectIds)\r\n return;\r\n\r\n const props = {\r\n memberType,\r\n objectIds: Array.isArray(objectIds) ? objectIds : [objectIds]\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <AddSubjectMembersView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public removeSubjectMember(subjectId: string, memberId: string, memberType: SubjectMemberType): void {\r\n const props = {\r\n subjectId,\r\n memberId,\r\n memberType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveSubjectMemberView {...props} />);\r\n }\r\n\r\n public deleteSubject(subjectId: string): void {\r\n /**\r\n * If the subject being deleted is currently displayed the in the CONTENT region,\r\n * we want to route away from it on delete.\r\n */\r\n const routeToOnDelete = subjectId.toString() === this.currentLeftNavId.toString()\r\n ? { application: AppChannels.SUBJECTS, action: Actions.Subjects.NEW_SUBJECT }\r\n : null;\r\n\r\n const props = {\r\n subjectId,\r\n routeToOnDelete: routeToOnDelete ? routeToOnDelete : null,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteSubjectView {...props} />);\r\n }\r\n\r\n public classifications(): void {\r\n const getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_CLASSIFICATIONS,\r\n args: [presentation.id]\r\n });\r\n\r\n const props = { objectType: 'classifications', getAppLink };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SelectPresentationView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public presentationClassifications(presentationId: string): void {\r\n this.subjectDataService.getClassificationTree(presentationId, (classificationTree: ClassificationTree) => {\r\n const firstClassification = !!classificationTree.children && classificationTree.children[0];\r\n\r\n if (!firstClassification) {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n }, { replace: true });\r\n\r\n return;\r\n }\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, firstClassification.id ]\r\n }, { replace: true });\r\n });\r\n }\r\n\r\n public newClassification(presentationId: string, params: ObjectHash): void {\r\n const props = {\r\n presentationId,\r\n parentId: params.parentId\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewClassificationView key={params.parentId} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId);\r\n }\r\n\r\n public editClassification(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditClassificationView key={classificationId} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationPlaylists(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:playlists`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationSeries(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Series };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:series`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationVideos(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Videos };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:videos`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public removeClassificationMember(classificationId: string, memberId: string, memberType: SubjectMemberType): void {\r\n const props = {\r\n classificationId,\r\n memberId,\r\n memberType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveClassificationMemberView {...props} />);\r\n }\r\n\r\n public deleteClassification(presentationId: string, classificationId: string): void {\r\n /**\r\n * If the classification being deleted is currently displayed the in the CONTENT region,\r\n * we want to route away from it (and back to the presentation) on delete.\r\n */\r\n const routeToOnDelete = classificationId === this.currentLeftNavId\r\n ? {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n }\r\n : null;\r\n\r\n const props = {\r\n classificationId,\r\n routeToOnDelete: routeToOnDelete ? routeToOnDelete : null,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteClassificationView {...props} />);\r\n }\r\n\r\n public levels(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditLevelsListView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newLevel(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewLevelView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public editLevel(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditLevelView key={id} id={id} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public audiences(): void {\r\n const getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentation.id]\r\n });\r\n\r\n const props = { objectType: 'audiences', getAppLink };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SelectPresentationView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public presentationAudiences(presentationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditAudiencesListView presentationId={presentationId} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newAudience(presentationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewAudienceView presentationId={presentationId} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public editAudience(presentationId: string, audienceId: string): void {\r\n const props = { presentationId, audienceId };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditAudienceView key={audienceId} {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public deleteAudience(presentationId: string, audienceId: string): void {\r\n const routeToOnDelete = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n };\r\n\r\n const props = { id: audienceId, routeToOnDelete, ...this.getPopupProps() };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteAudienceView {...props} />);\r\n }\r\n\r\n public presentations(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPresentationsListView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newPresentation(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPresentationView />);\r\n }\r\n\r\n public editPresentation(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPresentationView key={id} id={id} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private renderClassificationLeftNav(presentationId: string, selectedClassificationId?: string): void {\r\n this.setCurrentLeftNavItem(selectedClassificationId);\r\n\r\n const props = { presentationId, selectedClassificationId };\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <ClassificationNavView {...props} />);\r\n }\r\n\r\n private renderSubjectsLeftNav(subjectId?: string): void {\r\n this.setCurrentLeftNavItem(subjectId);\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <SubjectNavView selectedSubjectId={subjectId} />);\r\n }\r\n\r\n private setCurrentLeftNavItem(id?: string): void {\r\n if (id)\r\n this.currentLeftNavId = id;\r\n else\r\n this.currentLeftNavId = null;\r\n }\r\n\r\n private hideLeftNav(): void {\r\n this.setCurrentLeftNavItem();\r\n\r\n this.layout.hideLeftNav();\r\n }\r\n\r\n private getTopNav(currentAppLink: Core.AppLink): React.ReactElement {\r\n return <TopNavView currentAppLink={currentAppLink} />;\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\n\r\nconst getAudienceAppLink = (a: PresentationAudience) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ a.presentationId, a.masterId ]\r\n});\r\n\r\nconst getLevelAppLink = (l: Level) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [l.id]\r\n});\r\n\r\nconst getAudienceLevels = (audience: PresentationAudience, levels: Level[]) => {\r\n const audienceLevelIds = audience.levelIds;\r\n\r\n return levels.filter(l => audienceLevelIds.includes(l.id));\r\n};\r\n\r\ninterface AudienceLevelsHeaderProps {\r\n showLevels: boolean;\r\n}\r\n\r\nfunction AudienceLevelsHeader({ showLevels }: AudienceLevelsHeaderProps): JSX.Element {\r\n return (\r\n <thead>\r\n <tr>\r\n <th>Audiences</th>\r\n {!!showLevels && <th>Mapped Level(s)</th>}\r\n </tr>\r\n </thead>\r\n );\r\n}\r\n\r\ninterface AudienceLevelsRowProps {\r\n audience: PresentationAudience;\r\n levels: Level[];\r\n}\r\n\r\nfunction AudienceLevelsRow({ audience, levels }: AudienceLevelsRowProps): JSX.Element {\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={getAudienceAppLink(audience)}>{audience.name}</AppLink>\r\n </td>\r\n <td>\r\n {levels.map(l =>\r\n <AppLink key={l.id} appLink={getLevelAppLink(l)} className='mr-2'>{l.name}</AppLink>\r\n )}\r\n </td>\r\n </tr>\r\n );\r\n}\r\n\r\ninterface AudienceLevelsProps {\r\n audiences: PresentationAudience[];\r\n levels: Level[];\r\n}\r\n\r\nexport function AudienceLevels({ audiences, levels }: AudienceLevelsProps): JSX.Element {\r\n return (\r\n <Table responsive bordered>\r\n <AudienceLevelsHeader showLevels={!!audiences.length} />\r\n <tbody>\r\n {audiences.length\r\n ? audiences.map(a =>\r\n <AudienceLevelsRow key={a.masterId} audience={a} levels={getAudienceLevels(a, levels)} />\r\n )\r\n : <tr><td>This presentation has no audiences.</td></tr>\r\n }\r\n </tbody>\r\n </Table>\r\n );\r\n}","export * from './AudienceLevels';","import * as React from 'react';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\nimport { AudienceValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditAudienceDetailsForm } from './EditAudienceDetailsForm';\r\n\r\ninterface EditAudienceDetailsProps {\r\n presentationId: string;\r\n levels: Level[];\r\n saveAudience: (data: CreateOrUpdateAudienceRequest, onDone: () => void) => void;\r\n audience?: PresentationAudience;\r\n}\r\n\r\nexport function EditAudienceDetails(props: EditAudienceDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<CreateOrUpdateAudienceRequest>\r\n initialValues={props.audience}\r\n validationSchema={AudienceValidationSchema}\r\n onSubmit={props.saveAudience}\r\n >\r\n <EditAudienceDetailsForm\r\n masterId={props.audience && props.audience.masterId}\r\n presentationId={props.presentationId}\r\n levels={props.levels}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditAudienceDetailsFormProps {\r\n masterId?: string;\r\n presentationId: string;\r\n levels: Level[];\r\n}\r\n\r\nexport function EditAudienceDetailsForm(props: EditAudienceDetailsFormProps): React.ReactElement {\r\n const isNew = props.masterId === null || props.masterId === undefined;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateAudienceRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this audience'\r\n autoFocus\r\n />\r\n <FormField\r\n label='Mapped Level(s)'\r\n as='select'\r\n name='levelIds'\r\n id='level-ids'\r\n multiple\r\n size={props.levels.length}\r\n value={formikProps.values.levelIds}\r\n >\r\n {props.levels.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </FormField>\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_AUDIENCE,\r\n args: [ props.presentationId, props.masterId ]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditAudienceDetails';","import * as React from 'react';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { AudienceLevels, PresentationSelect, SelectLevels, SelectAudiences } from 'apps/subjects/components';\r\nimport { Level, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\n// Filter out object audiences that aren't in current presentation.\r\nfunction filterAudiencesByPresentation(\r\n { objectAudiences, presentationAudiences }: EditObjectAudiencesProps\r\n): PresentationAudience[] {\r\n return objectAudiences.filter(a => presentationAudiences.some(p => p.masterId === a.masterId));\r\n}\r\n\r\nfunction getAllowedAudiences(\r\n { presentationAudiences, objectLevels, objectAudiences }: EditObjectAudiencesProps\r\n): PresentationAudience[] {\r\n const levelIds = objectLevels.map(l => l.id);\r\n\r\n /**\r\n * Show an audience if it is mapped to a level that the object is mapped to\r\n * OR if the object is already mapped to that audience so that it can be removed from the audience.\r\n */\r\n return presentationAudiences.filter(a =>\r\n ArrayHelper.intersection(a.levelIds, levelIds).length || objectAudiences.some(o => o.masterId === a.masterId));\r\n}\r\n\r\ninterface EditObjectAudiencesProps {\r\n objectLevels: Level[];\r\n objectAudiences: PresentationAudience[];\r\n presentations: Presentation[];\r\n currentPresentation: Presentation;\r\n setCurrentPresentation: (p: Presentation) => void;\r\n levels: Level[]; // List of all levels.\r\n presentationAudiences: PresentationAudience[]; // List of all audiences in presentations.\r\n memberType: SubjectMemberType;\r\n saveLevels: (levelIds: string[], addToAudiences: boolean, setSubmittingFalse: () => void) => void;\r\n saveAudiences: (audienceIds: string[], setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function EditObjectAudiences(props: EditObjectAudiencesProps): JSX.Element {\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const allowedPresentationAudiences = getAllowedAudiences(props);\r\n\r\n return (\r\n <>\r\n <div className='border-bottom pb-3 mb-3'>\r\n <h6>Levels</h6>\r\n <p>{`Select which levels this ${memberType} is mapped to.`}</p>\r\n <p>To see how levels correspond to audiences, scroll down to the audience-level mappings table.</p>\r\n <SelectLevels\r\n initialValues={{ levelIds: props.objectLevels.map(l => l.id), addToAudiences: true }}\r\n saveLevels={props.saveLevels}\r\n levels={props.levels}\r\n memberType={props.memberType}\r\n />\r\n </div>\r\n <h6>Audiences</h6>\r\n <p>{`Select a presentation to view its audiences and map them to this ${memberType}.`}</p>\r\n <div className='w-50 pb-3'>\r\n <PresentationSelect\r\n presentations={props.presentations}\r\n currentPresentation={props.currentPresentation}\r\n setCurrentPresentation={props.setCurrentPresentation}\r\n />\r\n </div>\r\n <p>Audience to level mappings for this presentation are displayed below.</p>\r\n <AudienceLevels levels={props.levels} audiences={props.presentationAudiences} />\r\n <p>\r\n {\r\n 'Only the audiences which are mapped to a level that this'\r\n + ` ${memberType} is mapped to are displayed below.`\r\n }\r\n </p>\r\n {!!allowedPresentationAudiences.length &&\r\n <SelectAudiences\r\n initialValues={{\r\n audienceIds: filterAudiencesByPresentation(props).map(a => a.masterId)\r\n }}\r\n saveAudiences={props.saveAudiences}\r\n audiences={allowedPresentationAudiences}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditObjectAudiences';","export * from './audience-levels';\r\nexport * from './edit-audience-details';\r\nexport * from './edit-object-audiences';\r\nexport * from './select-audiences';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\ninterface SelectAudiencesFormValues {\r\n audienceIds: string[];\r\n}\r\n\r\ninterface SelectAudiencesFormProps {\r\n audiences: PresentationAudience[];\r\n}\r\n\r\nfunction SelectAudiencesForm(props: SelectAudiencesFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectAudiencesFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectAudiencesFormValues>\r\n label='Audience(s)'\r\n as='select'\r\n name='audienceIds'\r\n id='audience-ids'\r\n multiple\r\n size={props.audiences.length}\r\n value={formikProps.values.audienceIds}\r\n >\r\n {props.audiences.map(a => <option key={a.masterId} value={a.masterId}>{a.name}</option>)}\r\n </FormField>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Audiences\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectAudiencesProps {\r\n initialValues: SelectAudiencesFormValues;\r\n audiences: PresentationAudience[];\r\n saveAudiences: (audienceIds: string[], onDone: () => void) => void;\r\n}\r\n\r\nexport function SelectAudiences(props: SelectAudiencesProps): JSX.Element {\r\n const onSubmit = ({ audienceIds }: SelectAudiencesFormValues, onDone: () => void) =>\r\n props.saveAudiences(audienceIds, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectAudiencesFormValues> initialValues={props.initialValues} onSubmit={onSubmit} enableReinitialize>\r\n <SelectAudiencesForm audiences={props.audiences} />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectAudiences';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { PinState } from './usePinnedVideo';\r\n\r\ninterface ClassificationMemberItemProps<T extends BaseObject> {\r\n item: T;\r\n getItemAppLink: (item: T) => Core.AppLink;\r\n pinState: PinState;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function ClassificationMemberItem<T extends BaseObject>(\r\n props: ClassificationMemberItemProps<T>\r\n): React.ReactElement {\r\n const { item, getItemAppLink, actions, pinState } = props;\r\n\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={getItemAppLink(item)}>{item.name}</AppLink>\r\n </td>\r\n {pinState.isPinnable &&\r\n <td>\r\n <Checkbox\r\n selected={parseInt(item.id) === parseInt(pinState.currentPinnedVideo)}\r\n onToggle={(selected: boolean) => pinState.onChange(selected, item.id)}\r\n id={item.id}\r\n />\r\n </td>\r\n }\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { ClassificationMemberItem } from './ClassificationMemberItem';\r\nimport { usePinnedVideo } from './usePinnedVideo';\r\n\r\ninterface ClassificationMemberListProps<T extends BaseObject> {\r\n items: T[];\r\n memberType: SubjectMemberType;\r\n classification: Classification;\r\n updatePinnedVideo: (id: string, callback: (data: Classification) => void) => void;\r\n getItemAppLink: (item: T) => Core.AppLink;\r\n getActions?: (item: T) => ActionOptions[];\r\n}\r\n\r\nexport function ClassificationMemberList<T extends BaseObject>(\r\n props: ClassificationMemberListProps<T>\r\n): React.ReactElement {\r\n const { items, memberType, classification, getItemAppLink, getActions, updatePinnedVideo } = props;\r\n\r\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\r\n const pinState = usePinnedVideo(classification, memberType);\r\n\r\n if (!items.length)\r\n return <div className='py-5'>{`No ${memberType} in this classification.`}</div>;\r\n\r\n const onSubmit = () => {\r\n setIsSubmitting(true);\r\n updatePinnedVideo(pinState.currentPinnedVideo, () => setIsSubmitting(false));\r\n };\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n return (\r\n <>\r\n <Table responsive>\r\n <thead>\r\n <tr>\r\n <th>{memberHeading}</th>\r\n {pinState.isPinnable && <th>Pinned</th>}\r\n {FunctionHelper.isFunction(getActions) && <th></th>}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {items.map(item =>\r\n <ClassificationMemberItem\r\n item={item}\r\n key={item.id}\r\n getItemAppLink={getItemAppLink}\r\n actions={FunctionHelper.isFunction(getActions) && getActions(item)}\r\n pinState={pinState}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n {pinState.isPinnable && (\r\n <SpinnerButton\r\n showSpinner={isSubmitting}\r\n onClick={onSubmit}\r\n disabled={!pinState.canSubmit || isSubmitting}\r\n >\r\n Save\r\n </SpinnerButton>\r\n )}\r\n </>\r\n );\r\n}","export * from './ClassificationMemberList';","import * as React from 'react';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nexport interface PinState {\r\n currentPinnedVideo: string;\r\n onChange: (selected: boolean, id: string) => void;\r\n canSubmit: boolean;\r\n isPinnable: boolean;\r\n}\r\n\r\nexport function usePinnedVideo(classification: Classification, memberType: SubjectMemberType): PinState {\r\n const initialPinnedVideo = classification.pinnedVideoMasterId || null;\r\n const [ currentPinnedVideo, setCurrentPinnedVideo ] = React.useState(initialPinnedVideo);\r\n\r\n const onChange = (selected: boolean, id: string): void => {\r\n setCurrentPinnedVideo(selected ? id : null);\r\n };\r\n\r\n const isPinnable = memberType === SubjectMemberType.Videos;\r\n const canSubmit = initialPinnedVideo !== currentPinnedVideo;\r\n\r\n return { currentPinnedVideo, onChange, canSubmit, isPinnable };\r\n}","import * as React from 'react';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { ClassificationValidationSchema } from 'apps/subjects/utils';\r\nimport {\r\n SubjectTree,\r\n ClassificationTree,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\nimport { EditClassificationDetailsForm } from './EditClassificationDetailsForm';\r\n\r\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\r\n\r\ninterface EditClassificationDetailsProps {\r\n saveClassification: (data: RequestType, onDone: () => void) => void;\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n subjectTree: SubjectTree;\r\n classification?: Classification;\r\n}\r\n\r\nexport function EditClassificationDetails(props: EditClassificationDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<RequestType, Classification>\r\n initialValues={props.classification}\r\n validationSchema={ClassificationValidationSchema}\r\n onSubmit={props.saveClassification}\r\n >\r\n <EditClassificationDetailsForm\r\n id={props.classification && props.classification.id}\r\n presentationId={props.presentationId}\r\n classificationTree={props.classificationTree}\r\n subjectTree={props.subjectTree}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Button } from 'react-bootstrap';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\n\r\nimport { TreeSelect, ImageSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\nimport {\r\n SubjectTree,\r\n ClassificationTree,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\r\n\r\nconst getSubjectAppLink = (subjectId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subjectId]\r\n});\r\n\r\nconst isNodeDisabled = (classificationTree: ClassificationTree, classificationId: string) =>\r\n (node: ClassificationTree) => {\r\n if (node.id === classificationId)\r\n return true;\r\n\r\n const classificationNode = TreeHelper.find(classificationTree, classificationId);\r\n\r\n return !!TreeHelper.find(classificationNode, node.id);\r\n };\r\n\r\ninterface EditClassificationDetailsFormProps {\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n subjectTree: SubjectTree;\r\n id?: string;\r\n}\r\n\r\nexport function EditClassificationDetailsForm(props: EditClassificationDetailsFormProps): React.ReactElement {\r\n const formikProps = useFormikContext<RequestType>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const collapseInitialState = !isNew || !!(formikProps.values.parentIds && formikProps.values.parentIds.length);\r\n\r\n const [ collapseClassificationSelect, setCollapseClassificationSelect ] = React.useState(collapseInitialState);\r\n\r\n React.useEffect(() =>\r\n setCollapseClassificationSelect(collapseInitialState), [ props.id, formikProps.values.parentIds ]);\r\n\r\n /**\r\n * Set subjectIds to 'touched' so that errors will be displayed if no subject is selected.\r\n * On a new subject this will not trigger until a subject has been selected.\r\n */\r\n React.useEffect(() => {\r\n if (formikProps.values.subjectIds.length && !formikProps.touched.subjectIds)\r\n formikProps.setFieldTouched('subjectIds', true);\r\n }, [formikProps.values.subjectIds]);\r\n\r\n const handleParentIdSelect = (item: ClassificationTree) => formikProps.setFieldValue(\r\n 'parentIds',\r\n ArrayHelper.addOrRemove(formikProps.values.parentIds.map(pId => pId.toString()), item.id.toString())\r\n );\r\n\r\n const handleSubjectSelect = (item: SubjectTree) => formikProps.setFieldValue(\r\n 'subjectIds',\r\n ArrayHelper.addOrRemove(formikProps.values.subjectIds.map(sId => sId.toString()), item.id.toString())\r\n );\r\n\r\n const getTreeSelectClassName = (field: keyof RequestType) =>\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, field)} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<RequestType>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this classification'\r\n autoFocus\r\n />\r\n <FormField<RequestType>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n {ObjectHelper.getEnumKeys(ClassificationType).map((key: ClassificationType) =>\r\n <option key={key} value={ClassificationType[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n <FormField<RequestType>\r\n label='Coming Soon'\r\n name='comingSoon'\r\n id='comingSoon'\r\n type='checkbox'\r\n checked={formikProps.values.comingSoon}\r\n />\r\n <FormField<RequestType>\r\n label='Emphasize'\r\n name='emphasize'\r\n id='emphasize'\r\n type='checkbox'\r\n checked={formikProps.values.emphasize}\r\n />\r\n <FormField<RequestType>\r\n label='Can Be Preferred'\r\n name='canBePreferred'\r\n id='canBePreferred'\r\n type='checkbox'\r\n checked={formikProps.values.canBePreferred}\r\n />\r\n <FormField<RequestType> name='parentIds'>\r\n {() => (\r\n <div className={getTreeSelectClassName('parentIds')}>\r\n <TreeSelect<ClassificationTree>\r\n label='Parent Classification(s)'\r\n tree={props.classificationTree}\r\n selectedIds={formikProps.values.parentIds}\r\n onSelect={handleParentIdSelect}\r\n collapse={collapseClassificationSelect}\r\n noSelectionMessage='No parent selected, this will be a root classification.'\r\n isNodeDisabled={isNodeDisabled(props.classificationTree, props.id)}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <FormField<RequestType> name='subjectIds'>\r\n {() => (\r\n <div className={getTreeSelectClassName('subjectIds')}>\r\n <TreeSelect<SubjectTree>\r\n label='Mapped Subject(s)'\r\n tree={props.subjectTree}\r\n selectedIds={formikProps.values.subjectIds}\r\n onSelect={handleSubjectSelect}\r\n collapse={!isNew}\r\n getSelectedItemAppLink={getSubjectAppLink}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <ImageSelect<RequestType>\r\n imageType={ImageType.Covers}\r\n fieldName='cover'\r\n application={AppChannels.SUBJECTS}\r\n uploadAction={Actions.Subjects.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<RequestType>\r\n imageType={ImageType.Banners}\r\n fieldName='banner'\r\n application={AppChannels.SUBJECTS}\r\n uploadAction={Actions.Subjects.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_CLASSIFICATION,\r\n args: [ props.presentationId, props.id ]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditClassificationDetails';","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nconst isItemActive = (memberType?: SubjectMemberType) => (item: NavItem) => {\r\n if (!memberType)\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\r\n\r\n case SubjectMemberType.Series:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\r\n\r\n case SubjectMemberType.Videos:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\r\n\r\n }\r\n};\r\n\r\ninterface EditClassificationNavProps {\r\n presentation: Presentation;\r\n classificationId: string;\r\n memberType?: SubjectMemberType;\r\n}\r\n\r\nexport function EditClassificationNav(props: EditClassificationNavProps): React.ReactElement {\r\n const { presentation, classificationId, memberType } = props;\r\n\r\n if (!presentation)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n <h6>{`Presentation: ${!!presentation && presentation.name}`}</h6>\r\n <div className='py-2'>\r\n <Tabs\r\n tabs={SubjectsNavHelper.getEditClassificationTabs(presentation.id, classificationId)}\r\n isItemActive={isItemActive(memberType)}\r\n />\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditClassificationNav';","export * from './classification-member-list';\r\nexport * from './edit-classification-details';\r\nexport * from './edit-classification-nav';\r\nexport * from './select-classifications';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\nconst getClassificationAppLink = (presentationId: string) => (classificationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classificationId ]\r\n});\r\n\r\ninterface SelectClassificationsFormValues {\r\n classificationIds: string[];\r\n}\r\n\r\ninterface SelectClassificationsFormProps {\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\r\n}\r\n\r\nfunction SelectClassificationsForm(props: SelectClassificationsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectClassificationsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n const handleSelect = (item: ClassificationTree) => formikProps.setFieldValue(\r\n 'classificationIds',\r\n ArrayHelper.addOrRemove(formikProps.values.classificationIds.map(id => id.toString()), item.id.toString())\r\n );\r\n\r\n const treeSelectClassName =\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'classificationIds')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectClassificationsFormValues> name='classificationIds'>\r\n {() => (\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<ClassificationTree>\r\n label='Mapped Classification(s)'\r\n tree={props.classificationTree}\r\n selectedIds={formikProps.values.classificationIds}\r\n onSelect={handleSelect}\r\n getSelectedItemAppLink={getClassificationAppLink(props.presentationId)}\r\n isNodeDisabled={props.isClassificationDisabled}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Classifications\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectClassificationsProps {\r\n initialValues: SelectClassificationsFormValues;\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\r\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\r\n}\r\n\r\nexport function SelectClassifications(props: SelectClassificationsProps): JSX.Element {\r\n const onSubmit = ({ classificationIds }: SelectClassificationsFormValues, onDone: () => void) =>\r\n props.saveClassifications(classificationIds, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectClassificationsFormValues>\r\n initialValues={props.initialValues}\r\n onSubmit={onSubmit}\r\n enableReinitialize\r\n >\r\n <SelectClassificationsForm\r\n presentationId={props.presentationId}\r\n classificationTree={props.classificationTree}\r\n isClassificationDisabled={props.isClassificationDisabled}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectClassifications';","export * from './audiences';\r\nexport * from './classifications';\r\nexport * from './levels';\r\nexport * from './presentations';\r\nexport * from './subjects';\r\nexport * from './top-nav';\r\n","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { CreateOrUpdateLevelRequest, Level } from 'apps/subjects/interfaces';\r\nimport { LevelValidationSchema } from 'apps/subjects/utils';\r\n\r\ninterface EditLevelDetailsFormProps {\r\n id?: string;\r\n}\r\n\r\nexport function EditLevelDetailsForm(props: EditLevelDetailsFormProps): React.ReactElement {\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateLevelRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateLevelRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this level'\r\n autoFocus\r\n />\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface EditLevelDetailsProps {\r\n level?: Level;\r\n saveLevel: (data: CreateOrUpdateLevelRequest, onDone: () => void) => void;\r\n}\r\n\r\nexport function EditLevelDetails(props: EditLevelDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<CreateOrUpdateLevelRequest>\r\n initialValues={props.level}\r\n validationSchema={LevelValidationSchema}\r\n onSubmit={props.saveLevel}\r\n >\r\n <EditLevelDetailsForm id={props.level && props.level.id} />\r\n </FormWrapper>\r\n );\r\n}","export * from './EditLevelDetails';","export * from './edit-level-details';\r\nexport * from './select-levels';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\ninterface SelectLevelsFormValues {\r\n levelIds: string[];\r\n addToAudiences: boolean;\r\n}\r\n\r\ninterface SelectLevelsFormProps {\r\n levels: Level[];\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nfunction SelectLevelsForm(props: SelectLevelsFormProps): JSX.Element {\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const formikProps = useFormikContext<SelectLevelsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectLevelsFormValues>\r\n label='Level(s)'\r\n as='select'\r\n name='levelIds'\r\n id='level-ids'\r\n multiple\r\n size={props.levels.length}\r\n value={formikProps.values.levelIds}\r\n >\r\n {props.levels.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </FormField>\r\n <FormField<SelectLevelsFormValues>\r\n label='Automatically add to audiences*'\r\n name='addToAudiences'\r\n id='add-to-audiences'\r\n type='checkbox'\r\n checked={formikProps.values.addToAudiences}\r\n />\r\n <p>\r\n <em>\r\n {\r\n `*If selected, when adding a ${memberType} to a level, all of that level\\'s`\r\n + ' audiences across all presentations will also be added to.'\r\n }\r\n </em>\r\n </p>\r\n <p>\r\n <strong>Note:</strong>{` When removing a ${memberType} from a level, that level's audiences `}\r\n <strong>will not</strong> be automatically removed from.\r\n </p>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Levels\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectLevelsProps {\r\n initialValues: SelectLevelsFormValues;\r\n levels: Level[];\r\n memberType: SubjectMemberType;\r\n saveLevels: (levelIds: string[], addToAudiences: boolean, setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function SelectLevels(props: SelectLevelsProps): JSX.Element {\r\n const onSubmit = ({ levelIds, addToAudiences }: SelectLevelsFormValues, onDone: () => void) =>\r\n props.saveLevels(levelIds, addToAudiences, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectLevelsFormValues> initialValues={props.initialValues} onSubmit={onSubmit}>\r\n <SelectLevelsForm levels={props.levels} memberType={props.memberType} />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectLevels';","import * as React from 'react';\r\nimport { Formik, FormikProps, FormikHelpers } from 'formik';\r\n\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\nimport { PresentationValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditPresentationDetailsForm } from './EditPresentationDetailsForm';\r\n\r\ninterface EditPresentationDetailsProps {\r\n presentation?: Presentation;\r\n savePresentation: (\r\n data: CreateOrUpdatePresentationRequest, formikHelpers: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ) => void;\r\n}\r\n\r\nexport function EditPresentationDetails(props: EditPresentationDetailsProps): React.ReactElement {\r\n const { presentation: { id = null, name = '', description = '' } = {}, savePresentation } = props;\r\n\r\n return (\r\n <Formik<CreateOrUpdatePresentationRequest>\r\n initialValues={{ name, description }}\r\n validationSchema={PresentationValidationSchema}\r\n onSubmit={savePresentation}\r\n >\r\n {(formikProps: FormikProps<CreateOrUpdatePresentationRequest>) =>\r\n <EditPresentationDetailsForm id={id} {...formikProps} />\r\n }\r\n </Formik>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, FormikProps } from 'formik';\r\n\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\nimport { CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPresentationDetailsFormProps extends FormikProps<CreateOrUpdatePresentationRequest> {\r\n id?: string;\r\n}\r\n\r\nexport function EditPresentationDetailsForm(props: EditPresentationDetailsFormProps): React.ReactElement {\r\n const { values: { name, description }, id, isSubmitting } = props;\r\n\r\n const isNew = !id;\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePresentationRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={name}\r\n placeholder='Enter a name for this presentation'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdatePresentationRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={description}\r\n placeholder='Describe this presentation here'\r\n />\r\n <SpinnerButton showSpinner={isSubmitting} type='submit'>{isNew ? 'Create' : 'Save'}</SpinnerButton>\r\n </Form>\r\n );\r\n}","export * from './EditPresentationDetails';","export * from './edit-presentation-details';\r\nexport * from './presentation-select';","import * as React from 'react';\r\nimport { Form, FormControlProps } from 'react-bootstrap';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getById = (id: string, arr: BaseObject[]) =>\r\n ArrayHelper.first(arr.filter(o => o.id.toString() === id.toString()));\r\n\r\ninterface PresentationSelectProps {\r\n presentations: Presentation[];\r\n currentPresentation?: Presentation;\r\n setCurrentPresentation: (presentation: Presentation) => void;\r\n label?: string;\r\n}\r\n\r\nPresentationSelect.defaultProps = {\r\n label: 'Presentation'\r\n};\r\n\r\nexport function PresentationSelect(props: PresentationSelectProps): React.ReactElement {\r\n const { presentations, currentPresentation, setCurrentPresentation, label } = props;\r\n\r\n const onSelectPresentation = (presentationId: string) => {\r\n const presentation = getById(presentationId, presentations);\r\n setCurrentPresentation(presentation);\r\n };\r\n\r\n // If no currentPresentation is set, set the first one by default.\r\n React.useEffect(() => {\r\n if (!presentations || currentPresentation)\r\n return;\r\n\r\n setCurrentPresentation(presentations[0]);\r\n }, [presentations]);\r\n\r\n return (\r\n <>\r\n {!!currentPresentation &&\r\n <>\r\n <Form.Label>{label}</Form.Label>\r\n <Form.Control\r\n as='select'\r\n value={currentPresentation.id}\r\n onChange={(e: React.ChangeEvent<FormControlProps>) => onSelectPresentation(e.target.value)}\r\n className='cursor-pointer'\r\n >\r\n {presentations.map(p => <option value={p.id} key={p.id}>{p.name}</option>)}\r\n </Form.Control>\r\n </>\r\n }\r\n </>\r\n );\r\n}","export * from './PresentationSelect';","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SelectSubjects } from 'apps/subjects/components';\r\n\r\ninterface AddSubjectMembersProps {\r\n memberType: SubjectMemberType;\r\n subjectTree: SubjectTree;\r\n objects: BaseObject[];\r\n onClickAddToSubject: (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function AddSubjectMembers(props: AddSubjectMembersProps): React.ReactElement {\r\n return (\r\n <>\r\n <h4>{`${StringHelper.capitalizeFirstLetter(props.memberType)}`}</h4>\r\n <Table responsive>\r\n <tbody>\r\n {props.objects && props.objects.map(o =>\r\n <tr key={o.id}>\r\n <td>\r\n <AppLink appLink={SubjectMemberHelper.getMemberAppLink(props.memberType, o.id)}>{o.name}</AppLink>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n <SelectSubjects\r\n initialValues={{ subjectIds: [], addToClassifications: true }}\r\n subjectTree={props.subjectTree}\r\n saveSubjects={props.onClickAddToSubject}\r\n memberType={props.memberType}\r\n saveBtnText='Add to subject'\r\n subjectRequired\r\n />\r\n </>\r\n );\r\n}","export * from './AddSubjectMembers';","import * as React from 'react';\r\nimport { Subject, Classification } from 'libs/shared/interfaces';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SelectSubjects, PresentationSelect, SelectClassifications } from 'apps/subjects/components';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditObjectSubjectsProps {\r\n objectSubjects: Subject[];\r\n subjectTree: SubjectTree;\r\n saveSubjects: (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void;\r\n memberType: SubjectMemberType;\r\n presentations: Presentation[];\r\n currentPresentation: Presentation;\r\n setCurrentPresentation: (p: Presentation) => void;\r\n classificationTree: ClassificationTree;\r\n // List of classifications mapped to a subject that the object is mapped to.\r\n objectSubjectClassifications: Classification[];\r\n objectClassifications: Classification[];\r\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\r\n allowedClassificationIds?: string[];\r\n}\r\n\r\nexport function EditObjectSubjects(props: EditObjectSubjectsProps): JSX.Element {\r\n const singularMemberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const allowedClassificationIds = [\r\n ...props.objectClassifications,\r\n ...props.objectSubjectClassifications\r\n ].map(c => c.id);\r\n\r\n const isClassificationDisabled = (classification: ClassificationTree) =>\r\n !allowedClassificationIds.includes(classification.id);\r\n\r\n return (\r\n <>\r\n <div className='border-bottom pb-3 mb-3'>\r\n <h6>Subjects</h6>\r\n <p>{`Select which subjects this ${singularMemberType} is mapped to.`}</p>\r\n <SelectSubjects\r\n initialValues={{ subjectIds: props.objectSubjects.map(s => s.id) }}\r\n subjectTree={props.subjectTree}\r\n saveSubjects={props.saveSubjects}\r\n memberType={props.memberType}\r\n saveBtnText='Save Subjects'\r\n allowMultiple\r\n />\r\n </div>\r\n <h6>Classifications</h6>\r\n <p>{`Select a presentation to view its classifications and map them to this ${singularMemberType}.`}</p>\r\n <div className='w-50 pb-3'>\r\n <PresentationSelect\r\n presentations={props.presentations}\r\n currentPresentation={props.currentPresentation}\r\n setCurrentPresentation={props.setCurrentPresentation}\r\n />\r\n </div>\r\n {!!props.currentPresentation &&\r\n (!!props.classificationTree && !!props.classificationTree.children.length)\r\n ? <>\r\n <p>Only classifications which are mapped to one of the subjects selected above can be selected.</p>\r\n <SelectClassifications\r\n initialValues={{ classificationIds: props.objectClassifications.map(c => c.id) }}\r\n presentationId={props.currentPresentation.id}\r\n classificationTree={props.classificationTree}\r\n saveClassifications={props.saveClassifications}\r\n isClassificationDisabled={isClassificationDisabled}\r\n />\r\n </>\r\n : <p>This presentation has no classifications.</p>\r\n }\r\n </>\r\n );\r\n}","export * from './EditObjectSubjects';","import * as React from 'react';\r\nimport { Subject } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditSubjectDetailsForm } from './EditSubjectDetailsForm';\r\n\r\ntype RequestType = CreateOrUpdateSubjectRequest;\r\n\r\ninterface EditSubjectDetailsProps {\r\n saveSubject: (data: RequestType, onDone: () => void) => void;\r\n subjectTree: SubjectTree;\r\n subject?: Subject;\r\n}\r\n\r\nexport function EditSubjectDetails(props: EditSubjectDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<RequestType>\r\n initialValues={props.subject}\r\n validationSchema={SubjectValidationSchema}\r\n onSubmit={props.saveSubject}\r\n >\r\n <EditSubjectDetailsForm id={props.subject && props.subject.id} subjectTree={props.subjectTree} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Button } from 'react-bootstrap';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\nconst isNodeDisabled = (subjectTree: SubjectTree, subjectId: string) =>\r\n (node: SubjectTree) => {\r\n if (node.id === subjectId)\r\n return true;\r\n\r\n const subjectNode = TreeHelper.find(subjectTree, subjectId);\r\n\r\n return !!TreeHelper.find(subjectNode, node.id);\r\n };\r\n\r\ninterface EditSubjectDetailsFormProps {\r\n id?: string;\r\n subjectTree: SubjectTree;\r\n}\r\n\r\nexport function EditSubjectDetailsForm(props: EditSubjectDetailsFormProps): React.ReactElement {\r\n const isNew = !props.id;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateSubjectRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n const collapseInitialState = !isNew || !!formikProps.values.parentId;\r\n\r\n const [ collapseParentSelect, setCollapseParentSelect ] = React.useState(collapseInitialState);\r\n\r\n React.useEffect(() => setCollapseParentSelect(collapseInitialState), [ props.id, formikProps.values.parentId ]);\r\n\r\n const onSelectParent = (item: SubjectTree) => {\r\n const newParentId = item.id === formikProps.values.parentId\r\n ? null\r\n : item.id;\r\n\r\n formikProps.setFieldValue('parentId', newParentId);\r\n };\r\n\r\n const treeSelectClassName = `${FormHelper.getCustomFormControlClassName(\r\n formikProps.errors, formikProps.touched, 'parentId')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateSubjectRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this subject'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateSubjectRequest> name='parentId'>\r\n {() =>\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<SubjectTree>\r\n label='Parent Subject'\r\n tree={props.subjectTree}\r\n selectedIds={[formikProps.values.parentId]}\r\n onSelect={onSelectParent}\r\n collapse={collapseParentSelect}\r\n noSelectionMessage='No parent selected, this will be a root subject.'\r\n isNodeDisabled={isNodeDisabled(props.subjectTree, props.id)}\r\n />\r\n </div>\r\n }\r\n </FormField>\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_SUBJECT,\r\n args: [props.id]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditSubjectDetails';","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditSubjectNavProps {\r\n subjectId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditSubjectNav({ subjectId, activeAction }: EditSubjectNavProps): React.ReactElement {\r\n return (\r\n <>\r\n <Alert variant='danger'>\r\n Warning: You are editing the backbone subjects.\r\n </Alert>\r\n <div className='py-2'>\r\n <Tabs tabs={SubjectsNavHelper.getEditSubjectTabs(subjectId)} isItemActive={isItemActive(activeAction)} />\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditSubjectNav';","export * from './add-subject-members';\r\nexport * from './edit-object-subjects';\r\nexport * from './edit-subject-details';\r\nexport * from './edit-subject-nav';\r\nexport * from './select-subjects';\r\nexport * from './subject-classifications';\r\nexport * from './subject-member-list';","import * as React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getValidationSchema = (subjectRequired: boolean) => Yup.object().shape<SelectSubjectsFormValues>({\r\n subjectIds: subjectRequired\r\n ? Yup.array().of(Yup.string())\r\n .min(1, 'A subject is required')\r\n .required('A subject is required')\r\n : Yup.array().of(Yup.string()),\r\n\r\n addToClassifications: Yup.boolean()\r\n .default(true)\r\n\r\n}).noUnknown();\r\n\r\nconst getSubjectAppLink = (subjectId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subjectId]\r\n});\r\n\r\ninterface SelectSubjectsFormValues {\r\n subjectIds: string[];\r\n addToClassifications?: boolean;\r\n}\r\n\r\ninterface SelectSubjectsFormProps {\r\n subjectTree: SubjectTree;\r\n memberType: SubjectMemberType;\r\n allowMultiple?: boolean;\r\n saveBtnText?: string;\r\n}\r\n\r\nSelectSubjectsForm.defaultProps = {\r\n saveBtnText: 'Save'\r\n};\r\n\r\nfunction SelectSubjectsForm(props: SelectSubjectsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectSubjectsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n const handleSelect = (item: SubjectTree) => {\r\n const subjectIds = props.allowMultiple\r\n ? ArrayHelper.addOrRemove(formikProps.values.subjectIds.map(id => id.toString()), item.id.toString())\r\n : [item.id];\r\n\r\n formikProps.setFieldValue('subjectIds', subjectIds);\r\n };\r\n\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const treeSelectClassName =\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'subjectIds')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectSubjectsFormValues> name='subjectIds'>\r\n {() => (\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<SubjectTree>\r\n label={`Mapped Subject${props.allowMultiple ? '(s)' : ''}`}\r\n tree={props.subjectTree}\r\n selectedIds={formikProps.values.subjectIds}\r\n onSelect={handleSelect}\r\n collapse={!!formikProps.initialValues.subjectIds.length}\r\n getSelectedItemAppLink={getSubjectAppLink}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <FormField<SelectSubjectsFormValues>\r\n label='Automatically add to classifications*'\r\n name='addToClassifications'\r\n id='add-to-classifications'\r\n type='checkbox'\r\n checked={formikProps.values.addToClassifications}\r\n />\r\n <p>\r\n <em>\r\n {\r\n `*If selected, when adding a ${memberType} to a subject, all of that subject\\'s`\r\n + ' mapped classifications across all presentations will also be added to.'\r\n }\r\n </em>\r\n </p>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {props.saveBtnText}\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectSubjectsProps {\r\n initialValues: SelectSubjectsFormValues;\r\n saveSubjects: (subjectIds: string[], addToClassifications: boolean, onDone: () => void) => void;\r\n subjectTree: SubjectTree;\r\n memberType: SubjectMemberType;\r\n subjectRequired?: boolean;\r\n allowMultiple?: boolean;\r\n saveBtnText?: string;\r\n}\r\n\r\nexport function SelectSubjects(props: SelectSubjectsProps): JSX.Element {\r\n const onSubmit = ({ subjectIds, addToClassifications }: SelectSubjectsFormValues, onDone: () => void) =>\r\n props.saveSubjects(subjectIds, addToClassifications, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectSubjectsFormValues>\r\n initialValues={props.initialValues}\r\n validationSchema={getValidationSchema(props.subjectRequired)}\r\n onSubmit={onSubmit}\r\n >\r\n <SelectSubjectsForm\r\n subjectTree={props.subjectTree}\r\n memberType={props.memberType}\r\n allowMultiple={props.allowMultiple}\r\n saveBtnText={props.saveBtnText}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectSubjects';","import * as React from 'react';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getClassificationAppLink = (presentationId: string, classificationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classificationId ]\r\n});\r\n\r\ninterface PresentationClassificationsProps {\r\n presentation: Presentation;\r\n classifications: Classification[];\r\n}\r\n\r\nconst PresentationClassifications = (props: PresentationClassificationsProps) => (\r\n <div className='border rounded p-2 mb-3'>\r\n <h6 className='border-bottom pb-1'>{props.presentation.name}</h6>\r\n {(props.classifications && props.classifications.length)\r\n ? <ul className='list-unstyled mb-0'>\r\n {props.classifications.map(c =>\r\n <li key={c.id} className='py-1'>\r\n <AppLink appLink={getClassificationAppLink(props.presentation.id, c.id)}>\r\n {c.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n : <p><em>There are no classifications mapped to this subject in this presentation.</em></p>\r\n }\r\n </div>\r\n);\r\n\r\ninterface SubjectClassificationsProps {\r\n presentations: Presentation[];\r\n classificationDictionary: { [presentationId: string]: Classification[] };\r\n}\r\n\r\nexport const SubjectClassifications = (props: SubjectClassificationsProps) => (\r\n <>\r\n {!!props.presentations && !!props.classificationDictionary && props.presentations.map(p =>\r\n <PresentationClassifications\r\n key={p.id}\r\n presentation={p}\r\n classifications={props.classificationDictionary[p.id]}\r\n />\r\n )}\r\n </>\r\n);","export * from './SubjectClassifications';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { DevError } from 'libs/common/backbone/errors/DevError';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { SubjectMemberViewModel } from './SubjectMemberList';\r\n\r\ninterface SubjectMemberItemProps {\r\n member: SubjectMemberViewModel;\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n onToggleClassification: (classificationId: string, selected: boolean, memberId: string) => void;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function SubjectMemberItem(props: SubjectMemberItemProps): React.ReactElement {\r\n const {\r\n member: { id, name, classifications = []},\r\n getMemberAppLink,\r\n onToggleClassification,\r\n actions\r\n } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getMemberAppLink) && getMemberAppLink(id);\r\n\r\n if (classifications.length && !FunctionHelper.isFunction(onToggleClassification))\r\n Core.ErrorHelper.throw(new DevError('onToggleClassification must be passed to SubjectMemberItem'));\r\n\r\n return (\r\n <tr>\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={getMemberAppLink(id)}>{name}</AppLink>\r\n : name\r\n }\r\n </td>\r\n {!!classifications.length && classifications.map(c =>\r\n <td key={c.id}>\r\n <Checkbox\r\n selected={c.selected}\r\n onToggle={(s: boolean) => onToggleClassification(c.id, s, id)}\r\n />\r\n </td>\r\n )}\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nimport { SubjectMemberListHeader } from './SubjectMemberListHeader';\r\nimport { SubjectMemberItem } from './SubjectMemberItem';\r\n\r\nfunction allClassificationMembersSelected(\r\n memberType: SubjectMemberType,\r\n members: SubjectMemberViewModel[]\r\n): (classification: Classification) => boolean {\r\n return (classification: Classification) => {\r\n const classificationMembers = (classification as any)[memberType];\r\n\r\n const numSelectedMembers = CollectionHelper.length(classificationMembers);\r\n\r\n return !!numSelectedMembers && numSelectedMembers === members.length;\r\n };\r\n}\r\n\r\ntype ClassificationViewModel = { id: string, selected: boolean };\r\n\r\nexport interface SubjectMemberViewModel {\r\n id: string;\r\n name: string;\r\n classifications?: ClassificationViewModel[];\r\n}\r\n\r\ninterface SubjectMemberListProps {\r\n members: SubjectMemberViewModel[];\r\n memberType: SubjectMemberType;\r\n classifications: Classification[];\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n onToggleClassification: (classificationId: string, selected: boolean, memberId?: string) => void;\r\n getActions?: (itemId: string) => ActionOptions[];\r\n}\r\n\r\nexport function SubjectMemberList(props: SubjectMemberListProps): React.ReactElement {\r\n const {\r\n members,\r\n memberType,\r\n getActions,\r\n classifications,\r\n getClassificationAppLink,\r\n onToggleClassification,\r\n ...itemProps\r\n } = props;\r\n\r\n if (!members.length)\r\n return <div className='py-5'>{`No ${memberType} in this subject.`}</div>;\r\n\r\n const hasActions = FunctionHelper.isFunction(getActions);\r\n\r\n const headerProps = {\r\n memberType,\r\n classifications,\r\n getClassificationAppLink,\r\n getIsClassificationSelected: allClassificationMembersSelected(memberType, members),\r\n onToggleClassification,\r\n hasActions\r\n };\r\n\r\n return (\r\n <Table responsive bordered>\r\n <SubjectMemberListHeader {...headerProps} />\r\n <tbody>\r\n {members.map((member, idx) =>\r\n <SubjectMemberItem\r\n key={idx}\r\n member={member}\r\n actions={hasActions && getActions(member.id)}\r\n onToggleClassification={onToggleClassification}\r\n {...itemProps}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getClassificationLabel = (c: Classification, showClassificationSubHeader: boolean) =>\r\n showClassificationSubHeader ? c.name : `Classification: ${c.name}`;\r\n\r\ninterface ClassificationHeaderColumnsProps {\r\n classifications: Classification[];\r\n getIsClassificationSelected: (classification: Classification) => boolean;\r\n onToggleClassification: (classificationId: string, selected: boolean) => void;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n showClassificationSubHeader: boolean;\r\n}\r\n\r\nfunction ClassificationHeaderColumns(props: ClassificationHeaderColumnsProps): React.ReactElement {\r\n return (\r\n <>\r\n {props.classifications.map(c =>\r\n <th key={c.id}>\r\n <span className='d-inline-block'>\r\n <Checkbox\r\n selected={props.getIsClassificationSelected(c)}\r\n onToggle={(selected: boolean) => props.onToggleClassification(c.id, selected)}\r\n />\r\n </span>\r\n <AppLink appLink={props.getClassificationAppLink(c.id)}>\r\n {getClassificationLabel(c, props.showClassificationSubHeader)}\r\n </AppLink>\r\n </th>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\ninterface SubjectMemberListHeaderProps {\r\n memberType: SubjectMemberType;\r\n hasActions: boolean;\r\n classifications: Classification[];\r\n getIsClassificationSelected: (classification: Classification) => boolean;\r\n onToggleClassification: (classificationId: string, selected: boolean) => void;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n}\r\n\r\nexport function SubjectMemberListHeader(props: SubjectMemberListHeaderProps): React.ReactElement {\r\n const { memberType, hasActions, classifications, ...otherProps } = props;\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n const hasClassifications = !!classifications && !!classifications.length;\r\n\r\n const showClassificationSubHeader = hasClassifications && classifications.length > 1;\r\n\r\n const rowSpan = hasClassifications ? 2 : 1;\r\n\r\n const classificationColumnsProps = { classifications, showClassificationSubHeader, ...otherProps };\r\n\r\n return (\r\n <thead>\r\n <tr>\r\n <th rowSpan={rowSpan}>{memberHeading}</th>\r\n {hasClassifications && (showClassificationSubHeader\r\n ? <th colSpan={classifications.length} className='text-center'>Classifications</th>\r\n : <ClassificationHeaderColumns {...classificationColumnsProps} />\r\n )}\r\n {hasActions && <th rowSpan={rowSpan}></th>}\r\n </tr>\r\n {hasClassifications && showClassificationSubHeader &&\r\n <tr>\r\n <ClassificationHeaderColumns {...classificationColumnsProps} />\r\n </tr>\r\n }\r\n </thead>\r\n );\r\n}","export * from './SubjectMemberList';","import * as React from 'react';\r\nimport { Navbar, Nav, Container } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { NavHelper } from 'shared/utils';\r\n\r\nexport interface TopNavProps {\r\n navItems: NavItem[];\r\n currentAppLink: Core.AppLink;\r\n}\r\n\r\nexport function TopNav({ navItems, currentAppLink }: TopNavProps): React.ReactElement {\r\n return (\r\n <Container>\r\n <Navbar className='justify-content-between align-items-center'>\r\n <Nav>\r\n {!!navItems && navItems.map((item, idx) =>\r\n <Nav.Item key={idx}>\r\n <AppLink\r\n appLink={item.appLink}\r\n className={`nav-link${NavHelper.isItemActive(item, currentAppLink) ? ' text-primary' : ''}`}\r\n >\r\n {item.label}\r\n </AppLink>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n </Navbar>\r\n </Container>\r\n );\r\n}","export * from './TopNav';","import * as React from 'react';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\ntype IPresentationContent = [ Presentation, React.Dispatch<React.SetStateAction<Presentation>> ];\r\n\r\nexport const PresentationContext = React.createContext<IPresentationContent>(undefined);\r\n\r\nexport function PresentationContextProvider({ children }: React.PropsWithChildren<{}>): React.ReactElement {\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n return (\r\n <PresentationContext.Provider value={[ presentation, setPresentation ]}>\r\n {children}\r\n </PresentationContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider } from 'shared/context';\r\n\r\nimport { PresentationContextProvider } from 'apps/subjects/context';\r\n\r\nexport const SubjectsAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <PresentationContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </PresentationContextProvider>\r\n);","export * from './PresentationContext';\r\nexport * from './SubjectsAppContext';","export enum OwnerType {\r\n Subject,\r\n Classification\r\n}","export enum SubjectMemberType {\r\n Playlists = 'playlists',\r\n Series = 'series',\r\n Videos = 'videos'\r\n}","export enum SubjectNodeType {\r\n Root = '0'\r\n}\r\n\r\nexport enum ClassificationNodeType {\r\n Root = 'root'\r\n}","export * from './OwnerType';\r\nexport * from './SubjectMemberType';\r\nexport * from './SubjectNodeType';","import * as React from 'react';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\ninterface StateWithPresentations {\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n}\r\n\r\nexport function useSetDefaultPresentation<T extends StateWithPresentations>(\r\n state: T, setState: React.Dispatch<React.SetStateAction<T>>\r\n): void {\r\n React.useEffect(() => {\r\n // If there is already a current presentation, we don't want to set a default.\r\n if (!state.presentations || state.currentPresentation)\r\n return;\r\n\r\n // Set the first presentation.\r\n StateHelper.getSetStateByKey(setState, 'currentPresentation')(ArrayHelper.first(state.presentations));\r\n }, [state.presentations]);\r\n}","export * from './UseSetDefaultPresentation';","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\r\nimport { FetchOptions } from 'libs/common/react/utils/FetchHelper';\r\nimport {\r\n Subject,\r\n BasePaginatedCollection,\r\n BaseObject,\r\n Classification,\r\n PresentationAudience\r\n} from 'libs/shared/interfaces';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nimport {\r\n SubjectTree,\r\n Presentation,\r\n ClassificationTree,\r\n CreateOrUpdatePresentationRequest,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest,\r\n CreateOrUpdateSubjectRequest,\r\n CreateOrUpdateLevelRequest,\r\n CreateOrUpdateAudienceRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\nimport { SubjectNodeType, ClassificationNodeType, SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Level } from 'apps/subjects/interfaces';\r\n\r\nconst endpoints = {\r\n getSubjectTree: () => `/api/subjects/v1/subjects/tree`,\r\n\r\n getSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n getSubjectMembers: (id: string, memberType: SubjectMemberType) =>\r\n `/api/subjects/v1/subjects/${id}/${memberType}?query={limit:100}`,\r\n\r\n getSubjectClassifications: (subjectId: string, presentationId?: string, memberType?: SubjectMemberType) => {\r\n let url = `/api/subjects/v1/subjects/${subjectId}/classifications`;\r\n\r\n const params = [];\r\n\r\n if (presentationId)\r\n params.push(`presentationId=${presentationId}`);\r\n\r\n if (memberType)\r\n params.push(`query=${memberType}{limit:100}`);\r\n\r\n if (!params.length)\r\n return url;\r\n\r\n return `${url}?${params.join('&')}`;\r\n },\r\n\r\n createSubject: () => `/api/subjects/v1/subjects`,\r\n\r\n updateSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n deleteSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n getObjectSubjects: (id: string) => `/api/subjects/v1/objects/${id}/subjects`,\r\n\r\n updateObjectSubjects: (id: string, addToClassifications?: boolean) =>\r\n `/api/subjects/v1/objects/${id}/subjects?addToClassifications=${!!addToClassifications}`,\r\n\r\n addObjectsToSubject: (subjectId: string, addToClassifications?: boolean) =>\r\n `/api/subjects/v1/subjects/${subjectId}/objects?addToClassifications=${!!addToClassifications}`,\r\n\r\n removeObjectsFromSubject: (subjectId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/subjects/${subjectId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getPresentations: () => `/api/subjects/v1/presentations`,\r\n\r\n getPresentation: (id: string) => `/api/subjects/v1/presentations/${id}`,\r\n\r\n createPresentation: () => `/api/subjects/v1/presentations`,\r\n\r\n updatePresentation: (id: string) => `/api/subjects/v1/presentations/${id}`,\r\n\r\n getClassificationTree: (presentationId: string) =>\r\n `/api/subjects/v1/presentations/${presentationId}/classifications/tree`,\r\n\r\n getClassification: (id: string) => `/api/subjects/v1/classifications/${id}?query=cover,banner`,\r\n\r\n getClassificationMembers: (id: string, memberType: SubjectMemberType) =>\r\n `/api/subjects/v1/classifications/${id}/${memberType}?query={limit:100}`,\r\n\r\n createClassification: () => `/api/subjects/v1/classifications`,\r\n\r\n updateClassification: (id: string) => `/api/subjects/v1/classifications/${id}`,\r\n\r\n deleteClassification: (id: string) => `/api/subjects/v1/classifications/${id}`,\r\n\r\n getObjectClassifications: (id: string) => `/api/subjects/v1/objects/${id}/classifications`,\r\n\r\n updateObjectClassifications: (id: string, presentationId: string) =>\r\n `/api/subjects/v1/objects/${id}/classifications?presentationId=${presentationId}`,\r\n\r\n addObjectsToClassification: (classificationId: string) =>\r\n `/api/subjects/v1/classifications/${classificationId}/objects`,\r\n\r\n removeObjectsFromClassification: (classificationId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/classifications/${classificationId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getLevels: () => `/api/subjects/v1/levels`,\r\n\r\n getLevel: (id: string) => `/api/subjects/v1/levels/${id}`,\r\n\r\n createLevel: () => `/api/subjects/v1/levels`,\r\n\r\n updateLevel: (id: string) => `/api/subjects/v1/levels/${id}`,\r\n\r\n getObjectLevels: (id: string) => `/api/subjects/v1/objects/${id}/levels`,\r\n\r\n updateObjectLevels: (id: string, addToAudiences?: boolean) =>\r\n `/api/subjects/v1/objects/${id}/levels?addToAudiences=${!!addToAudiences}`,\r\n\r\n getAudiences: (presentationId: string) => `/api/subjects/v1/presentations/${presentationId}/audiences`,\r\n\r\n getAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n createAudience: () => `/api/subjects/v1/audiences`,\r\n\r\n updateAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n deleteAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n getObjectAudiences: (id: string) => `/api/subjects/v1/objects/${id}/audiences`,\r\n\r\n updateObjectAudiences: (id: string, presentationId: string) =>\r\n `/api/subjects/v1/objects/${id}/audiences?presentationId=${presentationId}`\r\n};\r\n\r\nconst getSubjectClassificationsEventPrefix = (\r\n subjectId: string, presentationId?: string, memberType?: SubjectMemberType\r\n) => {\r\n let eventPrefix = `${DataPrefixes.SUBJECT}:${subjectId}`;\r\n\r\n if (presentationId)\r\n eventPrefix += `:${presentationId}`;\r\n\r\n eventPrefix += `:${DataPrefixes.CLASSIFICATIONS}`;\r\n\r\n if (memberType)\r\n eventPrefix += `:${memberType}`;\r\n\r\n return eventPrefix;\r\n};\r\n\r\nexport class SubjectDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.SUBJECT;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.SUBJECT;\r\n }\r\n\r\n public getPresentations(callback?: (data: Presentation[]) => void, errorCallback?: () => void): Presentation[] {\r\n return this.get<Presentation[]>({\r\n resource: endpoints.getPresentations(),\r\n eventPrefix: DataPrefixes.PRESENTATIONS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getPresentation(\r\n id: string, callback?: (data: Presentation) => void, errorCallback?: () => void\r\n ): Presentation {\r\n return this.get<Presentation>({\r\n resource: endpoints.getPresentation(id),\r\n eventPrefix: `${DataPrefixes.PRESENTATION}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createPresentation(\r\n data: CreateOrUpdatePresentationRequest,\r\n callback?: (data: Presentation) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Presentation>({\r\n resource: endpoints.createPresentation(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.PRESENTATION,\r\n invalidationKeys: [DataPrefixes.PRESENTATIONS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created presentation.'),\r\n errorHandler: this.alertService.error('Failed to create presentation.')\r\n });\r\n }\r\n\r\n public updatePresentation(\r\n id: string,\r\n data: CreateOrUpdatePresentationRequest,\r\n callback?: (data: Presentation) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Presentation>({\r\n resource: endpoints.updatePresentation(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_PRESENTATION}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.PRESENTATION}:${id}`, DataPrefixes.PRESENTATIONS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated presentation.'),\r\n errorHandler: this.alertService.error('Failed to update presentation.')\r\n });\r\n }\r\n\r\n public getSubjectTree(callback?: (data: SubjectTree) => void, errorCallback?: () => void): SubjectTree {\r\n return this.get<SubjectTree>({\r\n resource: endpoints.getSubjectTree(),\r\n formatData: (response: any) => ({ children: response, name: SubjectNodeType.Root, id: null }),\r\n eventPrefix: DataPrefixes.SUBJECTS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubject(\r\n id: string, callback?: (data: Subject) => void, errorCallback?: () => void\r\n ): Subject {\r\n return this.get<Subject>({\r\n resource: endpoints.getSubject(id),\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubjectMemberIds(\r\n subjectId: string, memberType: SubjectMemberType, callback?: (data: string[]) => void, errorCallback?: () => void\r\n ): string[] {\r\n return this.get<string[]>({\r\n resource: endpoints.getSubjectMembers(subjectId, memberType),\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubjectClassifications(\r\n subjectId: string,\r\n presentationId?: string,\r\n memberType?: SubjectMemberType,\r\n callback?: (data: Classification[]) => void,\r\n errorCallback?: () => void\r\n ): Classification[] {\r\n return this.get<Classification[]>({\r\n resource: endpoints.getSubjectClassifications(subjectId, presentationId, memberType),\r\n eventPrefix: getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType),\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createSubject(\r\n data: CreateOrUpdateSubjectRequest,\r\n callback?: (data: Subject) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Subject>({\r\n resource: endpoints.createSubject(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.SUBJECT,\r\n invalidationKeys: [DataPrefixes.SUBJECTS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created subject.'),\r\n errorHandler: this.alertService.error('Failed to create subject.')\r\n });\r\n }\r\n\r\n public updateSubject(\r\n id: string,\r\n data: CreateOrUpdateSubjectRequest,\r\n callback?: (data: Subject) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Subject>({\r\n resource: endpoints.updateSubject(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_SUBJECT}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.SUBJECT}:${id}`, DataPrefixes.SUBJECTS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated subject.'),\r\n errorHandler: this.alertService.error('Failed to save subject.')\r\n });\r\n }\r\n\r\n public deleteSubject(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n const errorHandler = (error: DataServiceError) => {\r\n const errorMessage = error?.code === HttpStatus.Conflict\r\n ? 'Cannot delete a subject with child subjects and/or classifications.'\r\n : 'Failed to delete subject.';\r\n\r\n this.alertService.error(errorMessage)();\r\n };\r\n\r\n return this.delete({\r\n resource: endpoints.deleteSubject(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_SUBJECT,\r\n invalidationKeys: [ `${DataPrefixes.SUBJECT}:${id}`, DataPrefixes.SUBJECTS ],\r\n successHandler: this.alertService.success('Successfully deleted subject.'),\r\n errorHandler\r\n });\r\n }\r\n\r\n public getObjectSubjects(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Subject[]) => void,\r\n errorCallback?: () => void\r\n ): Subject[] {\r\n return this.get<Subject[]>({\r\n resource: endpoints.getObjectSubjects(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.SUBJECTS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectSubjects(\r\n objectId: string,\r\n subjectIds: string[],\r\n memberType: SubjectMemberType,\r\n addToClassifications?: boolean,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.SUBJECTS}`];\r\n\r\n if (addToClassifications)\r\n invalidationKeys.push(`${memberType}:${objectId}:${DataPrefixes.CLASSIFICATIONS}`);\r\n\r\n invalidationKeys.push(...subjectIds.map(id => `${DataPrefixes.SUBJECTS}:${id}:${memberType}`));\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectSubjects(objectId, addToClassifications),\r\n data: subjectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_SUBJECTS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} subjects.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} subjects.`)\r\n });\r\n }\r\n\r\n public addObjectsToSubject(\r\n subjectId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n addToClassifications?: boolean,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.SUBJECTS}`),\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`)\r\n ];\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToSubject(subjectId, addToClassifications),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_SUBJECT}:${subjectId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to subject.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to subject.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromSubject(\r\n subjectId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.SUBJECTS}`)\r\n ];\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromSubject(subjectId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_SUBJECT}:${subjectId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from subject.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from subject.`)\r\n });\r\n }\r\n\r\n public getClassificationTree(\r\n presentationId: string, callback?: (data: ClassificationTree) => void, errorCallback?: () => void\r\n ): ClassificationTree {\r\n return this.get<ClassificationTree>({\r\n resource: endpoints.getClassificationTree(presentationId),\r\n formatData: (response: any) => ({ children: response, name: ClassificationNodeType.Root, id: null }),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATIONS}:${presentationId}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getClassification(\r\n id: string, callback?: (data: Classification) => void, errorCallback?: () => void\r\n ): Classification {\r\n return this.get<Classification>({\r\n resource: endpoints.getClassification(id),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getClassificationMembers(\r\n classificationId: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: BasePaginatedCollection<BaseObject>) => void,\r\n errorCallback?: () => void\r\n ): BasePaginatedCollection<BaseObject> {\r\n return this.get<BasePaginatedCollection<BaseObject>>({\r\n resource: endpoints.getClassificationMembers(classificationId, memberType),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createClassification(\r\n data: CreateClassificationRequest,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Classification>({\r\n resource: endpoints.createClassification(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.CLASSIFICATION,\r\n invalidationKeys: [DataPrefixes.CLASSIFICATIONS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created classification.'),\r\n errorHandler: this.alertService.error('Failed to create classification.')\r\n });\r\n }\r\n\r\n public updateClassification(\r\n id: string,\r\n data: UpdateClassificationRequest,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Classification>({\r\n resource: endpoints.updateClassification(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_CLASSIFICATION}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.CLASSIFICATION}:${id}`, DataPrefixes.CLASSIFICATIONS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated classification.'),\r\n errorHandler: this.alertService.error('Failed to save classification.')\r\n });\r\n }\r\n\r\n public deleteClassification(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteClassification(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_CLASSIFICATION,\r\n invalidationKeys: [ `${DataPrefixes.CLASSIFICATION}:${id}`, DataPrefixes.CLASSIFICATIONS ],\r\n successHandler: this.alertService.success('Successfully deleted classification'),\r\n errorHandler: this.alertService.error('Failed to delete classification')\r\n });\r\n }\r\n\r\n public getObjectClassifications(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Classification[]) => void,\r\n errorCallback?: () => void\r\n ): Level[] {\r\n return this.get<Classification[]>({\r\n resource: endpoints.getObjectClassifications(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectClassifications(\r\n objectId: string,\r\n presentationId: string,\r\n classificationIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.CLASSIFICATIONS}`];\r\n\r\n invalidationKeys.push(...classificationIds.map(id => `${DataPrefixes.CLASSIFICATION}:${id}:${memberType}`));\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectClassifications(objectId, presentationId),\r\n data: classificationIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_CLASSIFICATIONS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} classifications.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} classifications.`)\r\n });\r\n }\r\n\r\n public addObjectsToClassification(\r\n classificationId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n subjectId?: string,\r\n presentationId?: string,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [`${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`];\r\n\r\n if (subjectId)\r\n invalidationKeys.push(getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType));\r\n\r\n invalidationKeys.push(...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`));\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToClassification(classificationId),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_CLASSIFICATION}:${classificationId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to classification.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to classification.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromClassification(\r\n classificationId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n subjectId?: string,\r\n presentationId?: string,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [`${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`];\r\n\r\n if (subjectId)\r\n invalidationKeys.push(getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType));\r\n\r\n invalidationKeys.push(...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`));\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromClassification(classificationId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_CLASSIFICATION}:${classificationId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from classification.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from classification.`)\r\n });\r\n }\r\n\r\n public getLevels(callback?: (data: Level[]) => void, errorCallback?: () => void): Level[] {\r\n return this.get<Level[]>({\r\n resource: endpoints.getLevels(),\r\n eventPrefix: DataPrefixes.LEVELS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getLevel(id: string, callback?: (data: Level) => void, errorCallback?: () => void): Level {\r\n return this.get<Level>({\r\n resource: endpoints.getLevel(id),\r\n eventPrefix: `${DataPrefixes.LEVEL}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createLevel(\r\n data: CreateOrUpdateLevelRequest, callback?: (data: Level) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<Level>({\r\n resource: endpoints.createLevel(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.LEVEL,\r\n invalidationKeys: [DataPrefixes.LEVELS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created level.'),\r\n errorHandler: this.alertService.error('Failed to create level.')\r\n });\r\n }\r\n\r\n public updateLevel(\r\n id: string,\r\n data: CreateOrUpdateLevelRequest,\r\n callback?: (data: Level) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Level>({\r\n resource: endpoints.updateLevel(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_LEVEL}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.LEVEL}:${id}`, DataPrefixes.LEVELS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated level.'),\r\n errorHandler: this.alertService.error('Failed to save level.')\r\n });\r\n }\r\n\r\n public getObjectLevels(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Level[]) => void,\r\n errorCallback?: () => void\r\n ): Level[] {\r\n return this.get<Level[]>({\r\n resource: endpoints.getObjectLevels(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.LEVELS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectLevels(\r\n objectId: string,\r\n levelsIds: string[],\r\n memberType: SubjectMemberType,\r\n addToAudiences?: boolean,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.LEVELS}`];\r\n\r\n if (addToAudiences)\r\n invalidationKeys.push(`${memberType}:${objectId}:${DataPrefixes.AUDIENCES}`);\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectLevels(objectId, addToAudiences),\r\n data: levelsIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_LEVELS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} levels.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} levels.`)\r\n });\r\n }\r\n\r\n public getAudiences(\r\n presentationId: string, callback?: (data: PresentationAudience[]) => void, errorCallback?: () => void\r\n ): PresentationAudience[] {\r\n return this.get<PresentationAudience[]>({\r\n resource: endpoints.getAudiences(presentationId),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.AUDIENCES}:${presentationId}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public getAudience(\r\n id: string, callback?: (data: PresentationAudience) => void, errorCallback?: () => void\r\n ): PresentationAudience {\r\n return this.get<PresentationAudience>({\r\n resource: endpoints.getAudience(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.AUDIENCE}:${id}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public createAudience(\r\n data: CreateOrUpdateAudienceRequest, callback?: (data: PresentationAudience) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<PresentationAudience>({\r\n resource: endpoints.createAudience(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.AUDIENCE,\r\n invalidationKeys: [DataPrefixes.AUDIENCES],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created audience.'),\r\n errorHandler: this.alertService.error('Failed to create audience.')\r\n });\r\n }\r\n\r\n public updateAudience(\r\n id: string,\r\n data: CreateOrUpdateAudienceRequest,\r\n callback?: (data: PresentationAudience) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<PresentationAudience>({\r\n resource: endpoints.updateAudience(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_AUDIENCE}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.AUDIENCE}:${id}`, DataPrefixes.AUDIENCES ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated audience.'),\r\n errorHandler: this.alertService.error('Failed to update audience.')\r\n });\r\n }\r\n\r\n public deleteAudience(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteAudience(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_AUDIENCE,\r\n invalidationKeys: [ `${DataPrefixes.AUDIENCE}:${id}`, DataPrefixes.AUDIENCES ],\r\n successHandler: this.alertService.success('Successfully deleted audience'),\r\n errorHandler: this.alertService.error('Failed to delete audience')\r\n });\r\n }\r\n\r\n public getObjectAudiences(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: PresentationAudience[]) => void,\r\n errorCallback?: () => void\r\n ): PresentationAudience[] {\r\n return this.get<PresentationAudience[]>({\r\n resource: endpoints.getObjectAudiences(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.AUDIENCES}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectAudiences(\r\n objectId: string,\r\n presentationId: string,\r\n audienceIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectAudiences(objectId, presentationId),\r\n data: audienceIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_AUDIENCES}:${objectId}`,\r\n invalidationKeys: [`${memberType}:${objectId}:${DataPrefixes.AUDIENCES}`],\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} audiences.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} audiences.`)\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.SUBJECT,\r\n dataChannelName: DataChannels.SUBJECT\r\n};\r\n\r\nexport const SubjectDataServiceHelper = {\r\n getSubjectTreeFetchOptions: (\r\n setData: (data: SubjectTree) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.SUBJECTS,\r\n fetchData: (d: SubjectDataService) => d.getSubjectTree(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getSubjectFetchOptions: (\r\n id: string, setData: (data: Subject) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getSubject(id),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_SUBJECT\r\n }),\r\n\r\n getSubjectMemberIdsFetchOptions: (\r\n subjectId: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: string[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n fetchData: (d: SubjectDataService) => d.getSubjectMemberIds(subjectId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getSubjectClassificationFetchOptions: (\r\n subjectId: string,\r\n setData: (data: Classification[]) => void,\r\n presentationId?: string,\r\n memberType?: SubjectMemberType,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType),\r\n fetchData: (d: SubjectDataService) => d.getSubjectClassifications(subjectId, presentationId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectSubjectsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Subject[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.SUBJECTS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectSubjects(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPresentationsFetchOptions: (\r\n setData: (data: Presentation[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.PRESENTATIONS,\r\n fetchData: (d: SubjectDataService) => d.getPresentations(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPresentationFetchOptions: (\r\n id: string, setData: (data: Presentation) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.PRESENTATION}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getPresentation(id),\r\n setData,\r\n onError\r\n }),\r\n\r\n getClassificationTreeFetchOptions: (\r\n presentationId: string, setData: (data: ClassificationTree) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATIONS}:${presentationId}`,\r\n fetchData: (d: SubjectDataService) => d.getClassificationTree(presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getClassificationFetchOptions: (\r\n id: string, setData: (data: Classification) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getClassification(id),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_CLASSIFICATION\r\n }),\r\n\r\n getClassificationMembersFetchOptions: (\r\n classificationId: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: BasePaginatedCollection<BaseObject>) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`,\r\n fetchData: (d: SubjectDataService) => d.getClassificationMembers(classificationId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectClassificationsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Classification[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectClassifications(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelsFetchOptions: (\r\n setData: (data: Level[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.LEVELS,\r\n fetchData: (d: SubjectDataService) => d.getLevels(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelFetchOptions: (\r\n levelId: string, setData: (data: Level) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.LEVEL}:${levelId}`,\r\n fetchData: (d: SubjectDataService) => d.getLevel(levelId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectLevelsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Level[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.LEVELS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectLevels(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getAudiencesFetchOptions: (\r\n presentationId: string, setData: (data: PresentationAudience[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.AUDIENCES}:${presentationId}`,\r\n fetchData: (d: SubjectDataService) => d.getAudiences(presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getAudienceFetchOptions: (\r\n id: string, setData: (data: PresentationAudience) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.AUDIENCE}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getAudience(id),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectAudiencesFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: PresentationAudience[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.AUDIENCES}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectAudiences(id, memberType),\r\n setData,\r\n onError\r\n })\r\n};","export * from './SubjectDataService';","import { Core } from 'libs/common/core';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\n\r\nexport const SubjectMemberHelper = {\r\n singularizeMemberType(memberType: SubjectMemberType): string {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return 'playlist';\r\n\r\n case SubjectMemberType.Series:\r\n return 'series';\r\n\r\n case SubjectMemberType.Videos:\r\n return 'video';\r\n }\r\n },\r\n\r\n getMemberAppLink(memberType: SubjectMemberType, memberId: string): Core.AppLink {\r\n const args = [memberId];\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args\r\n };\r\n\r\n case SubjectMemberType.Series:\r\n return {\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args\r\n };\r\n\r\n case SubjectMemberType.Videos:\r\n return {\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args\r\n };\r\n }\r\n },\r\n\r\n getMemberActions(\r\n subjectId: string, ownerType: OwnerType, memberType: SubjectMemberType, memberId: string\r\n ): ActionOptions[] {\r\n return [\r\n {\r\n label: `Remove ${SubjectMemberHelper.singularizeMemberType(memberType)}`,\r\n appLink: {\r\n application: AppChannels.SUBJECTS,\r\n action: ownerType === OwnerType.Subject\r\n ? Actions.Subjects.REMOVE_SUBJECT_MEMBER\r\n : Actions.Subjects.REMOVE_CLASSIFICATION_MEMBER,\r\n args: [ subjectId, memberId, memberType ]\r\n },\r\n className: 'text-danger'\r\n }\r\n ];\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const SubjectsNavHelper = {\r\n getTopNavItems(): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Classifications',\r\n appLink: { application, action: actions.CLASSIFICATIONS },\r\n activeActions: [\r\n actions.CLASSIFICATIONS,\r\n actions.PRESENTATION_CLASSIFICATIONS,\r\n actions.NEW_CLASSIFICATION,\r\n actions.EDIT_CLASSIFICATION,\r\n actions.EDIT_CLASSIFICATION_PLAYLISTS,\r\n actions.EDIT_CLASSIFICATION_SERIES,\r\n actions.EDIT_CLASSIFICATION_VIDEOS,\r\n actions.DELETE_CLASSIFICATION,\r\n actions.REMOVE_CLASSIFICATION_MEMBER\r\n ]\r\n },\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.SUBJECTS },\r\n activeActions: [\r\n actions.SUBJECTS,\r\n actions.NEW_SUBJECT,\r\n actions.EDIT_SUBJECT,\r\n actions.EDIT_SUBJECT_PLAYLISTS,\r\n actions.EDIT_SUBJECT_SERIES,\r\n actions.EDIT_SUBJECT_VIDEOS,\r\n actions.SUBJECT_CLASSIFICATIONS,\r\n actions.DELETE_SUBJECT,\r\n actions.ADD_SUBJECT_MEMBERS,\r\n actions.REMOVE_SUBJECT_MEMBER\r\n ]\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.AUDIENCES },\r\n activeActions: [\r\n actions.AUDIENCES,\r\n actions.PRESENTATION_AUDIENCES,\r\n actions.NEW_AUDIENCE,\r\n actions.EDIT_AUDIENCE\r\n ]\r\n },\r\n {\r\n label: 'Levels',\r\n appLink: { application, action: actions.LEVELS },\r\n activeActions: [\r\n actions.LEVELS,\r\n actions.NEW_LEVEL,\r\n actions.EDIT_LEVEL\r\n ]\r\n },\r\n {\r\n label: 'Presentations',\r\n appLink: { application, action: actions.PRESENTATIONS },\r\n activeActions: [ actions.PRESENTATIONS, actions.NEW_PRESENTATION, actions.EDIT_PRESENTATION ]\r\n }\r\n ];\r\n },\r\n\r\n getEditSubjectTabs(subjectId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Subject Details',\r\n appLink: { application, action: actions.EDIT_SUBJECT, args: [subjectId]}\r\n },\r\n {\r\n label: 'Classifications',\r\n appLink: { application, action: actions.SUBJECT_CLASSIFICATIONS, args: [subjectId]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: { application, action: actions.EDIT_SUBJECT_PLAYLISTS, args: [subjectId]}\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_SUBJECT_SERIES, args: [subjectId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_SUBJECT_VIDEOS, args: [subjectId]}\r\n }\r\n ];\r\n },\r\n\r\n getEditClassificationTabs(presentationId: string, classificationId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Classification Details',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION, args: [ presentationId, classificationId ]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: {\r\n application, action: actions.EDIT_CLASSIFICATION_PLAYLISTS, args: [ presentationId, classificationId ]\r\n }\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION_SERIES, args: [ presentationId, classificationId ]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION_VIDEOS, args: [ presentationId, classificationId ]}\r\n }\r\n ];\r\n }\r\n};","export * from './validation';\r\nexport * from './SubjectMemberHelper';\r\nexport * from './SubjectsNavHelper';","import * as Yup from 'yup';\r\nimport { CreateOrUpdateAudienceRequest } from 'apps/subjects/interfaces';\r\n\r\n// Omitting presentationId as it is not controlled in the form.\r\ntype Schema = Omit<CreateOrUpdateAudienceRequest, 'presentationId'>;\r\n\r\nexport const AudienceValidationSchema = Yup.object().shape<Schema>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n levelIds: Yup.array().of(Yup.string())\r\n .required('A level is required')\r\n .default([])\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\nimport { Cover, Banner } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\r\n\r\nimport { UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\nimport { ClassificationNodeType } from 'apps/subjects/enums';\r\n\r\nexport const ClassificationValidationSchema = Yup.object().shape<UpdateClassificationRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n parentIds: Yup.array().of(Yup.string())\r\n .default([ClassificationNodeType.Root]),\r\n\r\n subjectIds: Yup.array().of(Yup.string())\r\n .min(1, 'A classification must be mapped to at least one subject')\r\n .required('A classification must be mapped to at least one subject')\r\n .default([]),\r\n\r\n type: Yup.mixed<ClassificationType>()\r\n .required('Type is required')\r\n .default(ClassificationType.Subject),\r\n\r\n emphasize: Yup.boolean()\r\n .default(false),\r\n\r\n comingSoon: Yup.boolean()\r\n .default(true),\r\n\r\n canBePreferred: Yup.boolean()\r\n .default(false),\r\n\r\n cover: Yup.object()\r\n .shape<Cover>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\nexport const LevelValidationSchema = Yup.object().shape<CreateOrUpdateLevelRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\n\r\nexport const PresentationValidationSchema = Yup.object().shape({\r\n name: Yup.string()\r\n .max(255, 'Name is too long')\r\n .required('Name is required'),\r\n description: Yup.string()\r\n .max(65535, 'Description is too long')\r\n .required('Description is required'),\r\n});","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectNodeType } from 'apps/subjects/enums';\r\n\r\nexport const SubjectValidationSchema = Yup.object().shape<CreateOrUpdateSubjectRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n parentId: Yup.string()\r\n .default(SubjectNodeType.Root)\r\n\r\n}).noUnknown();","export * from './AudienceValidation';\r\nexport * from './ClassificationValidation';\r\nexport * from './LevelValidation';\r\nexport * from './PresentationValidation';\r\nexport * from './SubjectValidation';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { PresentationAudience, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\n\r\nconst getButtons = (deleteAudience: () => void, close: () => void, showSpinner: boolean): PopupButton[] => ([\r\n {\r\n variant: 'link',\r\n onClick: close,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteAudience,\r\n buttonText: 'Yes, delete this audience',\r\n isSpinnerButton: true,\r\n showSpinner: showSpinner\r\n }\r\n]);\r\n\r\ninterface DeleteAudienceViewProps {\r\n id: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteAudienceView(props: DeleteAudienceViewProps & PopupViewProps): React.ReactElement {\r\n const { id, routeToOnDelete, closePopup } = props;\r\n\r\n const [ audience, setAudience ] = React.useState<PresentationAudience>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getAudienceFetchOptions(id, setAudience), [id]);\r\n\r\n const deleteAudience = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteAudience(id, onSuccess, closePopup);\r\n };\r\n\r\n return (\r\n <Popup title='Delete Audience' closePopup={closePopup} showLoadingSpinner={!audience}>\r\n {!!audience &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{audience.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={getButtons(deleteAudience, closePopup, showButtonSpinner)} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteAudienceView';","import * as React from 'react';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditAudienceDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\n\r\nconst getAudiencesAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n});\r\n\r\ninterface EditAudienceViewProps {\r\n presentationId: string;\r\n audienceId: string;\r\n}\r\n\r\nexport function EditAudienceView({ presentationId, audienceId }: EditAudienceViewProps): React.ReactElement {\r\n const [ audience, setAudience ] = React.useState<PresentationAudience>();\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getAudienceFetchOptions(audienceId, setAudience), [audienceId]);\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), [presentationId]);\r\n\r\n const saveAudience = (data: CreateOrUpdateAudienceRequest, onDone: () => void) =>\r\n subjectDataService.updateAudience(audienceId, { ...data, presentationId }, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <BackButton appLink={getAudiencesAppLink(presentationId)} backToName='audiences' />\r\n </div>\r\n {!!presentation && <h6>{`Presentation: ${presentation.name}`}</h6>}\r\n {!!audience && !!levels &&\r\n <EditAudienceDetails\r\n audience={audience}\r\n levels={levels}\r\n saveAudience={saveAudience}\r\n presentationId={presentationId}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditAudienceView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAudienceAppLink = (presentationId: string) => (audience: PresentationAudience) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, audience.masterId ]\r\n});\r\n\r\nconst getNewAudienceAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_AUDIENCE,\r\n args: [presentationId]\r\n});\r\n\r\nconst selectPresentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.AUDIENCES\r\n};\r\n\r\ninterface EditAudiencesListViewProps {\r\n presentationId: string;\r\n}\r\n\r\nexport function EditAudiencesListView(props: EditAudiencesListViewProps): React.ReactElement {\r\n const { presentationId } = props;\r\n\r\n const [ audiences, setAudiences ] = React.useState<PresentationAudience[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getAudiencesFetchOptions(presentationId, setAudiences), []);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <BackButton appLink={selectPresentationAppLink} backToName='presentations' />\r\n </div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select an audience to edit:</h5>\r\n <AppLink appLink={getNewAudienceAppLink(presentationId)} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Audience</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav\r\n objects={audiences}\r\n getAppLink={getAudienceAppLink(props.presentationId)}\r\n // \\u002B is the unicode number for &plus\r\n emptyMessage={'There are no audiences in this presentation yet. Click \\'\\u002B New Audience\\' to create one.'}\r\n />\r\n </>\r\n );\r\n}","export * from './EditAudiencesListView';","export * from './delete-audience';\r\nexport * from './edit-audience';\r\nexport * from './edit-audiences-list';\r\nexport * from './new-audience';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { PresentationAudience } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions, DataServices } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { EditAudienceDetails } from 'apps/subjects/components';\r\nimport { Presentation, Level, CreateOrUpdateAudienceRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAudiencesAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n});\r\n\r\nconst onCreateSuccess = (presentationId: string, onDone: () => void) => (newAudience: PresentationAudience) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, newAudience.masterId ]\r\n });\r\n};\r\n\r\ninterface NewAudienceViewProps {\r\n presentationId: string;\r\n}\r\n\r\nexport function NewAudienceView({ presentationId }: NewAudienceViewProps): React.ReactElement {\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), [presentationId]);\r\n\r\n const saveAudience = (data: CreateOrUpdateAudienceRequest, onDone: () => void) =>\r\n subjectDataService.createAudience(\r\n { ...data, presentationId }, onCreateSuccess(presentationId, onDone), onDone\r\n );\r\n\r\n return (\r\n <>\r\n <div className='pb-2'>\r\n <BackButton appLink={getAudiencesAppLink(presentationId)} backToName='audiences' />\r\n </div>\r\n {!!presentation && <h6>{`Presentation: ${presentation.name}`}</h6>}\r\n {!!levels && <EditAudienceDetails levels={levels} presentationId={presentationId} saveAudience={saveAudience} />}\r\n </>\r\n );\r\n}","export * from './NewAudienceView';","import { Core } from 'libs/common/core';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeNodeAction } from 'shared/components';\r\n\r\nimport { ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nexport function useFetchData(\r\n presentationId: string,\r\n setClassificationTree: (data: ClassificationTree) => void,\r\n setPresentation: (data: Presentation) => void\r\n): void {\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const presentationFetchOptions =\r\n SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation);\r\n\r\n useBulkFetch([ classificationTreeFetchOptions, presentationFetchOptions ], [presentationId]);\r\n}\r\n\r\nexport function getClassificationAppLink(presentationId: string, classification: ClassificationTree): Core.AppLink {\r\n return {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classification.id ]\r\n };\r\n}\r\n\r\nexport function getNewClassificationAppLink(presentationId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n };\r\n}\r\n\r\nexport function getActions(presentationId: string): TreeNodeAction<ClassificationTree>[] {\r\n return [\r\n {\r\n label: 'Add child',\r\n getAppLink: (c: ClassificationTree) => ({\r\n ...getNewClassificationAppLink(presentationId),\r\n args: [presentationId],\r\n params: { parentId: c.id }\r\n })\r\n },\r\n {\r\n label: 'Delete classification',\r\n getAppLink: (c: ClassificationTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_CLASSIFICATION,\r\n args: [ presentationId, c.id ]\r\n }),\r\n className: 'text-danger'\r\n }\r\n ];\r\n}","import * as React from 'react';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Tree } from 'shared/components';\r\n\r\nimport { ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\n\r\nimport { getNewClassificationAppLink, getClassificationAppLink, getActions, useFetchData } from './ClassificationNavUtils';\r\nimport styles from './classification-nav.scss';\r\n\r\ninterface ClassificationNavViewProps {\r\n presentationId: string;\r\n selectedClassificationId?: string;\r\n}\r\n\r\nexport function ClassificationNavView(props: ClassificationNavViewProps): React.ReactElement {\r\n const { presentationId, selectedClassificationId } = props;\r\n\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n useFetchData(presentationId, setClassificationTree, setPresentation);\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n {!!presentation && <h6 className='border-bottom pb-2'>{`Classifications (${presentation.name})`}</h6>}\r\n <AppLink appLink={getNewClassificationAppLink(presentationId)} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Classification</span>\r\n </AppLink>\r\n {!!classificationTree &&\r\n <div className='border-top pt-1'>\r\n <Tree<ClassificationTree>\r\n tree={classificationTree}\r\n getAppLink={\r\n (classification: ClassificationTree) => getClassificationAppLink(presentationId, classification)\r\n }\r\n selectedIds={[selectedClassificationId]}\r\n actions={getActions(presentationId)}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--11O8h\"};","export * from './ClassificationNavView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Classification, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\ninterface DeleteClassificationViewProps {\r\n classificationId: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteClassificationView(props: DeleteClassificationViewProps & PopupViewProps): React.ReactElement {\r\n const { classificationId, routeToOnDelete, closePopup } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification), []);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const deleteClassification = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteClassification(classificationId, onSuccess, closePopup);\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteClassification,\r\n buttonText: 'Yes, delete this classification',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title='Delete Classification' closePopup={closePopup} showLoadingSpinner={!classification}>\r\n {!!classification &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{classification.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteClassificationView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseObject, Classification, BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\nimport { PropHelper } from 'shared/utils';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { EditClassificationNav, ClassificationMemberList } from 'apps/subjects/components';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Presentation, UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditClassificationMembersViewProps {\r\n presentationId: string;\r\n classificationId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nexport function EditClassificationMembersView(props: EditClassificationMembersViewProps): React.ReactElement {\r\n const { presentationId, classificationId, memberType } = props;\r\n\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ members, setMembers ] = React.useState<BasePaginatedCollection<BaseObject>>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), []);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationFetchOptions(\r\n classificationId, setClassification), [classificationId]);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationMembersFetchOptions(\r\n classificationId, memberType, setMembers), [ classificationId, memberType ]);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const updatePinnedVideo = (id: string, callback: (data: Classification) => void): void => {\r\n const requestObject: UpdateClassificationRequest = {\r\n ...classification,\r\n pinnedVideoMasterId: id\r\n };\r\n subjectDataService.updateClassification(classificationId, requestObject, callback);\r\n };\r\n\r\n const classificationMemberListProps = {\r\n items: members && members.data,\r\n memberType,\r\n classification,\r\n updatePinnedVideo,\r\n getItemAppLink: (item: BaseObject) => SubjectMemberHelper.getMemberAppLink(memberType, item.id),\r\n getActions: (item: BaseObject) =>\r\n SubjectMemberHelper.getMemberActions(classificationId, OwnerType.Classification, memberType, item.id)\r\n };\r\n\r\n const headerProps = { presentation, classificationId };\r\n\r\n const dataLoaded = PropHelper.propsLoaded(classificationMemberListProps);\r\n\r\n return (\r\n <>\r\n <EditClassificationNav {...headerProps} memberType={memberType} />\r\n {dataLoaded &&\r\n <ClassificationMemberList {...classificationMemberListProps} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditClassificationMembersView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { Classification } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditClassificationDetails, EditClassificationNav } from 'apps/subjects/components';\r\nimport { Presentation, ClassificationTree, SubjectTree, UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditClassificationViewProps {\r\n presentationId: string;\r\n classificationId: string;\r\n}\r\n\r\nexport function EditClassificationView(props: EditClassificationViewProps): React.ReactElement {\r\n const { presentationId, classificationId } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const classificationFetchOptions =\r\n SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification);\r\n\r\n const presentationFetchOptions =\r\n SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation);\r\n\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(classificationFetchOptions, [classificationId]);\r\n useBulkFetch([ presentationFetchOptions, classificationTreeFetchOptions ], [presentationId]);\r\n\r\n const saveClassification = (data: UpdateClassificationRequest, onDone: () => void): void =>\r\n subjectDataService.updateClassification(classificationId, data, onDone, onDone);\r\n\r\n return (\r\n <div>\r\n <EditClassificationNav presentation={presentation} classificationId={classificationId} />\r\n {!!classification && !!classificationTree && !!subjectTree &&\r\n <EditClassificationDetails\r\n classification={classification}\r\n presentationId={presentationId}\r\n subjectTree={subjectTree}\r\n classificationTree={classificationTree}\r\n saveClassification={saveClassification}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditClassificationView';","export * from './classification-nav';\r\nexport * from './delete-classification';\r\nexport * from './edit-classification';\r\nexport * from './edit-classification-members';\r\nexport * from './new-classification';\r\nexport * from './remove-classification-member';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Classification } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditClassificationDetails } from 'apps/subjects/components';\r\nimport { ClassificationTree, SubjectTree, CreateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (presentationId: string, onDone: () => void) => (newClassification: Classification) => {\r\n onDone();\r\n\r\n if (!newClassification || !newClassification.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, newClassification.id ]\r\n });\r\n};\r\n\r\ninterface NewClassificationViewProps {\r\n presentationId: string;\r\n parentId?: string;\r\n}\r\n\r\nexport function NewClassificationView(props: NewClassificationViewProps): React.ReactElement {\r\n const { presentationId, parentId } = props;\r\n\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(classificationTreeFetchOptions, [presentationId]);\r\n\r\n const saveClassification = (data: CreateClassificationRequest, onDone: () => void): void =>\r\n subjectDataService.createClassification(\r\n { ...data, presentationId }, onCreateSuccess(presentationId, onDone), onDone\r\n );\r\n\r\n return (\r\n <div>\r\n <h4 className='py-2'>Create New Classification</h4>\r\n {!!subjectTree && !!classificationTree &&\r\n <EditClassificationDetails\r\n classification={(parentId ? { parentIds: [parentId]} : {}) as Classification}\r\n presentationId={presentationId}\r\n subjectTree={subjectTree}\r\n classificationTree={classificationTree}\r\n saveClassification={saveClassification}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './NewClassificationView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { Video, Series, Playlist, Classification, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nfunction getMemberRequest(memberType: SubjectMemberType, memberId: string): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlist(memberId);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.series(memberId);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.video(memberId);\r\n }\r\n}\r\n\r\ninterface RemoveClassificationMemberViewProps {\r\n classificationId: string;\r\n memberId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\ntype MemberType = Playlist | Series | Video;\r\n\r\ntype PropTypes = RemoveClassificationMemberViewProps & PopupViewProps;\r\n\r\nexport function RemoveClassificationMemberView(props: PropTypes): React.ReactElement {\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const member = Flight.useBasicFetch<MemberType>(getMemberRequest(props.memberType, props.memberId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getClassificationFetchOptions(props.classificationId, setClassification),\r\n [props.classificationId]\r\n );\r\n\r\n const removeMember = () => {\r\n setShowButtonSpinner(true);\r\n\r\n subjectDataService.removeObjectsFromClassification(\r\n props.classificationId,\r\n [props.memberId],\r\n props.memberType,\r\n null,\r\n null,\r\n props.closePopup,\r\n props.closePopup\r\n );\r\n\r\n if (classification.pinnedVideoMasterId === props.memberId) {\r\n subjectDataService.updateClassification(props.classificationId, {\r\n ...classification,\r\n pinnedVideoMasterId: null\r\n });\r\n }\r\n };\r\n\r\n const dataLoaded = !!classification && !!member.data;\r\n\r\n const popupTitle = `Remove ${StringHelper.capitalizeFirstLetter(\r\n SubjectMemberHelper.singularizeMemberType(props.memberType))}`;\r\n\r\n return (\r\n <Popup title={popupTitle} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {member.data.name}</strong> from <strong>{classification.name}</strong>?\r\n </p>\r\n <p>This will not remove it from the backbone subject.</p>\r\n </div>\r\n <PopupButtons\r\n buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeMember,\r\n buttonText: `Yes, remove this ${SubjectMemberHelper.singularizeMemberType(props.memberType)}`,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }\r\n />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveClassificationMemberView';","export * from './audiences';\r\nexport * from './classifications';\r\nexport * from './levels';\r\nexport * from './presentations';\r\nexport * from './subjects';\r\nexport * from './top-nav';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { PropHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditLevelDetails } from 'apps/subjects/components';\r\nimport { Level, CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditLevelViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditLevelView({ id }: EditLevelViewProps): React.ReactElement {\r\n const [ level, setLevel ] = React.useState<Level>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelFetchOptions(id, setLevel), [id]);\r\n\r\n const saveLevel = (data: CreateOrUpdateLevelRequest, onDone: () => void) =>\r\n subjectDataService.updateLevel(id, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Level</h4>\r\n {!!level && <EditLevelDetails level={level} saveLevel={saveLevel} />}\r\n </>\r\n );\r\n}","export * from './EditLevelView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAppLink = (level: Level) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [level.id]\r\n});\r\n\r\nconst newLevelAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_LEVEL,\r\n};\r\n\r\nexport function EditLevelsListView(): React.ReactElement {\r\n const [ Levels, setLevels ] = React.useState<Level[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n\r\n return (\r\n <div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a level to edit:</h5>\r\n <AppLink appLink={newLevelAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Level</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={Levels} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './EditLevelsListView';","export * from './edit-level';\r\nexport * from './edit-levels-list';\r\nexport * from './new-level';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { EditLevelDetails } from 'apps/subjects/components';\r\nimport { Level, CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newLevel: Level) => {\r\n onDone();\r\n\r\n if (!newLevel || !newLevel.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [newLevel.id]\r\n });\r\n};\r\n\r\nexport function NewLevelView(): React.ReactElement {\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const saveLevel = (data: CreateOrUpdateLevelRequest, onDone: () => void): void =>\r\n subjectDataService.createLevel(data, onCreateSuccess(onDone), onDone);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Level</h4>\r\n <EditLevelDetails saveLevel={saveLevel} />\r\n </>\r\n );\r\n}","export * from './NewLevelView';","import * as React from 'react';\r\nimport { FormikHelpers } from 'formik';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { PropHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditPresentationDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPresentationViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditPresentationView({ id }: EditPresentationViewProps): React.ReactElement {\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(id, setPresentation), [id]);\r\n\r\n const savePresentation = (\r\n data: CreateOrUpdatePresentationRequest, { setSubmitting }: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ): void => subjectDataService.updatePresentation(id, data, () => setSubmitting(false), () => setSubmitting(false));\r\n\r\n const formProps = { presentation, savePresentation };\r\n\r\n const dataLoaded = PropHelper.propsLoaded(formProps);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Presentation</h4>\r\n {!!dataLoaded && <EditPresentationDetails {...formProps} />}\r\n </>\r\n );\r\n}","export * from './EditPresentationView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_PRESENTATION,\r\n args: [presentation.id]\r\n});\r\n\r\nconst newPresentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_PRESENTATION,\r\n};\r\n\r\nexport function EditPresentationsListView(): React.ReactElement {\r\n const [ presentations, setPresentations ] = React.useState<Presentation[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(setPresentations), []);\r\n\r\n return (\r\n <div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a presentation to edit:</h5>\r\n <AppLink appLink={newPresentationAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Presentation</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={presentations} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './EditPresentationsListView';","export * from './edit-presentation';\r\nexport * from './edit-presentations-list';\r\nexport * from './new-presentation';\r\nexport * from './select-presentation';","import * as React from 'react';\r\nimport { FormikHelpers } from 'formik';\r\nimport { Core } from 'libs/common/core';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { EditPresentationDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\nexport function NewPresentationView(): React.ReactElement {\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const onCreateSuccess = (newPresentation: Presentation, setSubmitting: (isSubmitting: boolean) => void) => {\r\n setSubmitting(false);\r\n\r\n if (!newPresentation || !newPresentation.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_PRESENTATION,\r\n args: [newPresentation.id]\r\n });\r\n };\r\n\r\n const savePresentation = (\r\n data: CreateOrUpdatePresentationRequest, { setSubmitting }: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ): void => {\r\n subjectDataService.createPresentation(\r\n data,\r\n (_data: Presentation) => onCreateSuccess(_data, setSubmitting),\r\n () => setSubmitting(false)\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Presentation</h4>\r\n <EditPresentationDetails savePresentation={savePresentation} />\r\n </>\r\n );\r\n}","export * from './NewPresentationView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst namespace = 'subjects.selectPresentation';\r\n\r\ninterface SelectPresentationViewProps {\r\n objectType: string;\r\n getAppLink: (presentation: Presentation) => Core.AppLink;\r\n}\r\n\r\nexport function SelectPresentationView({ objectType, getAppLink }: SelectPresentationViewProps): React.ReactElement {\r\n const [ presentations, setPresentations ] = React.useState<Presentation[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(setPresentations), []);\r\n\r\n return (\r\n <div>\r\n <h5><Text namespace={namespace} phrase='heading' options={{ objectType }} /></h5>\r\n <ObjectListNav objects={presentations} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './SelectPresentationView';","import { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\n\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { AddSubjectMembersViewProps, AddSubjectMembersViewState } from './AddSubjectMembersView';\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<AddSubjectMembersViewState>>;\r\n\r\n// Wrapper function for typing StateHelper.getSetStateByKey<T>\r\nexport function getSetState(setState: SetState, key: keyof AddSubjectMembersViewState): (data: any) => void {\r\n return StateHelper.getSetStateByKey<AddSubjectMembersViewState>(setState, key);\r\n}\r\n\r\n// Hook to fetch all data required for AddSubjectMembersView\r\nexport function useFetchData(\r\n props: AddSubjectMembersViewProps,\r\n setState: SetState\r\n): void {\r\n const { memberType, objectIds } = props;\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(\r\n getSetState(setState, 'subjectTree')\r\n );\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n}\r\n\r\nexport function addToSubject(\r\n objects: BaseObject[],\r\n subjectDataService: SubjectDataService,\r\n props: AddSubjectMembersViewProps,\r\n state: AddSubjectMembersViewState,\r\n setState: SetState\r\n): void {\r\n const { selectedSubject } = state;\r\n\r\n const onDone = () => getSetState(setState, 'showConfirmationPopup')(false);\r\n\r\n const onSuccess = () => {\r\n onDone();\r\n Core.AppLinkHelper.trigger(getSubjectMemberAppLink(selectedSubject.id, props.memberType));\r\n };\r\n\r\n subjectDataService.addObjectsToSubject(\r\n selectedSubject.id, objects.map(o => o.id), props.memberType, state.addToClassifications, onSuccess, onDone\r\n );\r\n}\r\n\r\nexport function getObjectRequest(memberType: SubjectMemberType, ids: string[]): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlistsById(ids);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.seriesById(ids);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.videosById(ids);\r\n }\r\n}\r\n\r\nexport function getConfirmationPopupTitle(\r\n memberType: SubjectMemberType, objects: BaseObject[], subject: SubjectTree\r\n): string {\r\n if (!objects || !subject)\r\n return;\r\n\r\n const memberText = objects.length === 1\r\n ? `this ${SubjectMemberHelper.singularizeMemberType(memberType)}`\r\n : `these ${memberType}`;\r\n\r\n return `Add ${memberText} to ${subject.name}`;\r\n}\r\n\r\nfunction getSubjectMemberAppLink(subjectId: string, memberType: SubjectMemberType): Core.AppLink {\r\n const baseAppLink = { application: AppChannels.SUBJECTS, args: [subjectId]};\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_PLAYLISTS };\r\n\r\n case SubjectMemberType.Series:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_SERIES };\r\n\r\n case SubjectMemberType.Videos:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_VIDEOS };\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper, TreeHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree, ClassificationTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { AddSubjectMembers } from 'apps/subjects/components';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport {\r\n getObjectRequest,\r\n useFetchData,\r\n getConfirmationPopupTitle,\r\n getSetState,\r\n addToSubject\r\n} from './AddSubjectMembersUtils';\r\n\r\nfunction getMemberName(memberType: SubjectMemberType): string {\r\n return StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType));\r\n}\r\n\r\nfunction getOnClickAddToSubject(\r\n state: AddSubjectMembersViewState,\r\n setState: React.Dispatch<React.SetStateAction<AddSubjectMembersViewState>>\r\n): (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void {\r\n return (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => {\r\n // Set submitting to false as we are showing a confirmation popup before making an api call.\r\n setSubmittingFalse();\r\n\r\n getSetState(setState, 'selectedSubject')(TreeHelper.find(state.subjectTree, ArrayHelper.first(subjectIds)));\r\n getSetState(setState, 'addToClassifications')(addToClassifications);\r\n getSetState(setState, 'showConfirmationPopup')(true);\r\n };\r\n}\r\n\r\nexport interface AddSubjectMembersViewState {\r\n // Api Data\r\n subjectTree?: SubjectTree;\r\n classificationTree?: ClassificationTree;\r\n\r\n // View State\r\n selectedSubject?: SubjectTree;\r\n addToClassifications?: boolean;\r\n showConfirmationPopup?: boolean;\r\n}\r\n\r\nexport interface AddSubjectMembersViewProps {\r\n memberType: SubjectMemberType;\r\n objectIds: string[];\r\n}\r\n\r\nexport function AddSubjectMembersView(props: AddSubjectMembersViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<AddSubjectMembersViewState>({});\r\n\r\n const objects = Flight.useBasicFetch<BaseObject[]>(getObjectRequest(props.memberType, props.objectIds));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props, setState);\r\n\r\n const setShowConfirmationPopup = (show: boolean) => getSetState(setState, 'showConfirmationPopup')(show);\r\n\r\n return (\r\n <>\r\n {!!objects.data && !!state.subjectTree &&\r\n <AddSubjectMembers\r\n memberType={props.memberType}\r\n objects={objects.data}\r\n subjectTree={state.subjectTree}\r\n onClickAddToSubject={getOnClickAddToSubject(state, setState)}\r\n />\r\n }\r\n {state.showConfirmationPopup &&\r\n <ConfirmationPopup\r\n title={getConfirmationPopupTitle(props.memberType, objects.data, state.selectedSubject)}\r\n onClickConfirm={() => addToSubject(objects.data, subjectDataService, props, state, setState)}\r\n closePopup={() => setShowConfirmationPopup(false)}\r\n >\r\n <p>\r\n {`The following ${props.memberType} will be added to `}\r\n <strong>{state.selectedSubject.name}</strong>\r\n {state.addToClassifications ? ` and its mapped classifications:` : ':'}\r\n </p>\r\n <ul>\r\n {objects.data.map(o =>\r\n <li key={o.id}>{o.name}</li>\r\n )}\r\n </ul>\r\n {!state.addToClassifications &&\r\n <p>{`${objects.data.length === 1 ? 'It' : 'They'} will not be added to its mapped classifications.`}</p>\r\n }\r\n <p>\r\n {`${getMemberName(props.memberType)} to classification mappings can be managed from the `}\r\n <strong>{`Edit Subject ${StringHelper.capitalizeFirstLetter(props.memberType)} `}</strong>\r\n page.\r\n </p>\r\n </ConfirmationPopup>\r\n }\r\n </>\r\n );\r\n}","export * from './AddSubjectMembersView';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { PopupButtons, PopupButton } from 'libs/shared/components/popup/PopupButtons';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\ninterface DeleteSubjectViewProps {\r\n subjectId: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteSubjectView(props: DeleteSubjectViewProps & PopupViewProps): React.ReactElement {\r\n const { subjectId, routeToOnDelete, closePopup } = props;\r\n\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n useFetch(SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject), []);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const deleteSubject = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteSubject(subjectId, onSuccess, closePopup);\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteSubject,\r\n buttonText: 'Yes, delete this subject',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title='Delete Subject' closePopup={closePopup} showLoadingSpinner={!subject}>\r\n {!!subject &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{subject.name}</strong>?</p>\r\n <p>Subjects that have mapped classifications cannot be deleted.</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteSubjectView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberViewModel } from 'apps/subjects/components';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { PresentationContext } from 'apps/subjects/context';\r\n\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\n\r\nimport { EditSubjectMembersState, EditSubjectMembersViewProps } from './EditSubjectMembersView';\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSubjectMembersState>>;\r\n\r\n// Wrapper function for typing StateHelper.getSetStateByKey<T>\r\nexport function getSetState(setState: SetState, key: keyof EditSubjectMembersState): (data: any) => void {\r\n return StateHelper.getSetStateByKey<EditSubjectMembersState>(setState, key);\r\n}\r\n\r\n// Hook to fetch all data required for AddSubjectMembersView\r\nexport function useFetchData(\r\n props: EditSubjectMembersViewProps,\r\n state: EditSubjectMembersState,\r\n setState: SetState\r\n): void {\r\n const { subjectId, memberType } = props;\r\n\r\n const [presentation] = React.useContext(PresentationContext);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(\r\n getSetState(setState, 'presentations')),\r\n []\r\n );\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectMemberIdsFetchOptions(\r\n subjectId,\r\n memberType,\r\n getSetState(setState, 'memberIds')\r\n ),\r\n [ subjectId, memberType ]\r\n );\r\n\r\n useFetch(\r\n !!presentation &&\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n subjectId,\r\n getSetState(setState, 'classifications'),\r\n presentation.id,\r\n memberType\r\n ),\r\n [ subjectId, memberType, presentation ],\r\n !!presentation\r\n );\r\n}\r\n\r\n// Hook to map classifications to members\r\nexport function useMapData(\r\n members: BaseObject[],\r\n props: EditSubjectMembersViewProps,\r\n state: EditSubjectMembersState,\r\n setState: SetState\r\n): void {\r\n const { classifications } = state;\r\n\r\n // Map classifications\r\n React.useEffect(() => {\r\n const setMembersWithClassifications = getSetState(setState, 'membersWithClassifications');\r\n setMembersWithClassifications(mapClassificationsToMembers(props.memberType, members, classifications));\r\n }, [ members, classifications ]);\r\n}\r\n\r\nexport function getMembersRequest(memberType: SubjectMemberType, ids: string[]): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlistsById(ids);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.seriesById(ids);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.videosById(ids);\r\n }\r\n}\r\n\r\nexport const getClassificationAppLink = (memberType: SubjectMemberType, presentationId: string) =>\r\n (classificationId: string): Core.AppLink => {\r\n const application = AppChannels.SUBJECTS;\r\n const args = [ presentationId, classificationId ];\r\n\r\n let action;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\r\n break;\r\n\r\n case SubjectMemberType.Series:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\r\n break;\r\n\r\n case SubjectMemberType.Videos:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\r\n break;\r\n }\r\n\r\n return { application, action, args };\r\n };\r\n\r\n/**\r\n * For each member, list the classifications on the subject with a flag\r\n * to determine whether or not the member is associated with that classification.\r\n */\r\nfunction mapClassificationsToMembers(\r\n memberType: SubjectMemberType, members: BaseObject[], classifications: Classification[]\r\n): SubjectMemberViewModel[] {\r\n if (!members || !classifications)\r\n return;\r\n\r\n const isMemberInClassification = (member: BaseObject, classification: Classification) =>\r\n !!(classification as any)[memberType] &&\r\n !!(classification as any)[memberType].data.filter((m: BaseObject) => m.id === member.id).length;\r\n\r\n return members.map(m => ({\r\n id: m.id,\r\n name: m.name,\r\n classifications: classifications.map(c => ({ id: c.id, selected: isMemberInClassification(m, c) }))\r\n }));\r\n}\r\n\r\nexport function toggleObjectsInClassification(\r\n d: SubjectDataService,\r\n memberType: SubjectMemberType,\r\n memberIds: string[],\r\n subjectId: string,\r\n presentationId: string,\r\n classificationId: string,\r\n selected: boolean\r\n): void {\r\n const apiFn = selected\r\n ? d.addObjectsToClassification.bind(d)\r\n : d.removeObjectsFromClassification.bind(d);\r\n\r\n apiFn(classificationId, memberIds, memberType, subjectId, presentationId);\r\n}\r\n\r\nexport function getActiveAction(memberType: SubjectMemberType): string {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return Actions.Subjects.EDIT_SUBJECT_PLAYLISTS;\r\n\r\n case SubjectMemberType.Series:\r\n return Actions.Subjects.EDIT_SUBJECT_SERIES;\r\n\r\n case SubjectMemberType.Videos:\r\n return Actions.Subjects.EDIT_SUBJECT_VIDEOS;\r\n }\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { BaseObject, Classification } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { EditSubjectNav, SubjectMemberList, PresentationSelect, SubjectMemberViewModel } from 'apps/subjects/components';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { PresentationContext } from 'apps/subjects/context';\r\n\r\nimport {\r\n getMembersRequest,\r\n useFetchData,\r\n useMapData,\r\n getClassificationAppLink,\r\n toggleObjectsInClassification,\r\n getActiveAction\r\n} from './EditSubjectMembersUtils';\r\n\r\nexport interface EditSubjectMembersState {\r\n // Data fetched from api.\r\n presentations?: Presentation[];\r\n classifications?: Classification[];\r\n memberIds?: string[];\r\n\r\n // View state.\r\n membersWithClassifications?: SubjectMemberViewModel[];\r\n}\r\n\r\nexport interface EditSubjectMembersViewProps {\r\n subjectId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nexport function EditSubjectMembersView(props: EditSubjectMembersViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditSubjectMembersState>({});\r\n\r\n const { presentations, classifications, memberIds, membersWithClassifications } = state;\r\n\r\n const members = Flight.useBasicFetch<BaseObject[]>(Array.isArray(memberIds)\r\n && getMembersRequest(props.memberType, memberIds));\r\n\r\n const [ currentPresentation, setCurrentPresentation ] = React.useContext(PresentationContext);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props, state, setState);\r\n useMapData(members.data, props, state, setState);\r\n\r\n const subjectMemberDataLoaded = !!currentPresentation && !!classifications;\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={props.subjectId} activeAction={getActiveAction(props.memberType)} />\r\n <Alert variant='info' className='m-0'>\r\n {\r\n `Select which ${props.memberType} are shown for each classification in this subject.`\r\n + ' Change the selected presentation to view different classifications.'\r\n }\r\n </Alert>\r\n <div className='w-50 py-2'>\r\n {!!presentations &&\r\n <PresentationSelect\r\n presentations={presentations}\r\n currentPresentation={currentPresentation}\r\n setCurrentPresentation={setCurrentPresentation}\r\n />\r\n }\r\n </div>\r\n {subjectMemberDataLoaded &&\r\n <SubjectMemberList\r\n members={membersWithClassifications || []}\r\n memberType={props.memberType}\r\n getMemberAppLink={(itemId: string) => SubjectMemberHelper.getMemberAppLink(props.memberType, itemId)}\r\n getActions={(itemId: string) =>\r\n SubjectMemberHelper.getMemberActions(props.subjectId, OwnerType.Subject, props.memberType, itemId)\r\n }\r\n classifications={classifications}\r\n getClassificationAppLink={currentPresentation &&\r\n getClassificationAppLink(props.memberType, currentPresentation.id)\r\n }\r\n onToggleClassification={(classificationId: string, selected: boolean, memberId?: string) =>\r\n toggleObjectsInClassification(\r\n subjectDataService,\r\n props.memberType,\r\n memberId ? [memberId] : memberIds,\r\n props.subjectId,\r\n currentPresentation && currentPresentation.id,\r\n classificationId,\r\n selected\r\n )\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSubjectMembersView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditSubjectDetails, EditSubjectNav } from 'apps/subjects/components';\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditSubjectViewProps {\r\n subjectId: string;\r\n}\r\n\r\nexport function EditSubjectView({ subjectId }: EditSubjectViewProps): React.ReactElement {\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const subjectFetchOptions =\r\n SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(subjectFetchOptions, [subjectId]);\r\n\r\n const saveSubject = (data: CreateOrUpdateSubjectRequest, onDone: () => void): void =>\r\n subjectDataService.updateSubject(subjectId, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={Actions.Subjects.EDIT_SUBJECT} />\r\n {!!subject && !!subjectTree &&\r\n <EditSubjectDetails subject={subject} subjectTree={subjectTree} saveSubject={saveSubject} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSubjectView';","export * from './add-subject-members';\r\nexport * from './delete-subject';\r\nexport * from './edit-subject';\r\nexport * from './edit-subject-members';\r\nexport * from './new-subject';\r\nexport * from './remove-subject-member';\r\nexport * from './subject-classifications';\r\nexport * from './subject-nav';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditSubjectDetails } from 'apps/subjects/components';\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newSubject: Subject) => {\r\n onDone();\r\n\r\n if (!newSubject || !newSubject.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [newSubject.id]\r\n });\r\n};\r\n\r\ninterface NewSubjectViewProps {\r\n parentId?: string;\r\n}\r\n\r\nexport function NewSubjectView({ parentId } : NewSubjectViewProps): React.ReactElement {\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n\r\n const saveSubject = (data: CreateOrUpdateSubjectRequest, onDone: () => void): void =>\r\n subjectDataService.createSubject(data, onCreateSuccess(onDone), onDone);\r\n\r\n const presentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATIONS\r\n };\r\n\r\n return (\r\n <>\r\n <div className='pb-2 border-bottom'>\r\n <BackButton backToName='Presentations' appLink={presentationAppLink} />\r\n </div>\r\n <h4 className='py-2'>Create New Subject</h4>\r\n {!!subjectTree &&\r\n <EditSubjectDetails\r\n subject={{ parentId } as Subject}\r\n subjectTree={subjectTree}\r\n saveSubject={saveSubject}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './NewSubjectView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Subject, Playlist, Video, Series, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { PlaylistRequests } from 'apps/playlists/flight-requests/CuratorPlaylistRequests';\r\nimport { SeriesRequests } from 'apps/series/flight-requests/CuratorSeriesRequests';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nfunction getMemberRequest(memberType: SubjectMemberType, memberId: string): Flight.Request {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistRequests.playlist(memberId);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesRequests.series(memberId);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoRequests.video(memberId);\r\n }\r\n}\r\n\r\ninterface RemoveSubjectMemberViewProps {\r\n subjectId: string;\r\n memberId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\ntype MemberType = Playlist | Series | Video;\r\n\r\ntype PropTypes = RemoveSubjectMemberViewProps & PopupViewProps;\r\n\r\nexport function RemoveSubjectMemberView(props: PropTypes): React.ReactElement {\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const member = Flight.useBasicFetch<MemberType>(getMemberRequest(props.memberType, props.memberId));\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectFetchOptions(props.subjectId, setSubject),\r\n [props.subjectId]\r\n );\r\n\r\n const removeMember = () => {\r\n setShowButtonSpinner(true);\r\n\r\n subjectDataService.removeObjectsFromSubject(\r\n props.subjectId,\r\n [props.memberId],\r\n props.memberType,\r\n props.closePopup,\r\n props.closePopup\r\n );\r\n };\r\n\r\n const dataLoaded = !!subject && !!member.data;\r\n\r\n const popupTitle = `Remove ${StringHelper.capitalizeFirstLetter(\r\n SubjectMemberHelper.singularizeMemberType(props.memberType))}`;\r\n\r\n return (\r\n <Popup title={popupTitle} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {member.data.name}</strong> from <strong>{subject.name}</strong>?\r\n </p>\r\n <p>Please ensure that it is not in any classifications before removing.</p>\r\n </div>\r\n <PopupButtons\r\n buttons={[\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeMember,\r\n buttonText: `Yes, remove this ${SubjectMemberHelper.singularizeMemberType(props.memberType)}`,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]}\r\n />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveSubjectMemberView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { Classification } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\n\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditSubjectNav, SubjectClassifications } from 'apps/subjects/components';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nfunction useFetchData(\r\n subjectId: string,\r\n setState: React.Dispatch<React.SetStateAction<SubjectClassificationsViewState>>\r\n): void {\r\n const getSetState = (key: keyof SubjectClassificationsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(subjectId, getSetState('classifications')),\r\n [subjectId]\r\n );\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')), []);\r\n}\r\n\r\ninterface SubjectClassificationsViewState {\r\n classifications?: Classification[];\r\n presentations?: Presentation[];\r\n}\r\n\r\ninterface SubjectClassificationsViewProps {\r\n subjectId: string;\r\n}\r\n\r\nexport function SubjectClassificationsView({ subjectId }: SubjectClassificationsViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<SubjectClassificationsViewState>({});\r\n\r\n useFetchData(subjectId, setState);\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={Actions.Subjects.SUBJECT_CLASSIFICATIONS} />\r\n <SubjectClassifications\r\n presentations={state.presentations}\r\n classificationDictionary={ArrayHelper.groupBy(state.classifications, 'presentationId')}\r\n />\r\n </>\r\n );\r\n}","export * from './SubjectClassificationsView';","import * as React from 'react';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { Tree, TreeNodeAction } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nimport styles from './subject-nav.scss';\r\n\r\ninterface SubjectNavViewProps {\r\n selectedSubjectId?: string;\r\n}\r\n\r\nexport function SubjectNavView({ selectedSubjectId }: SubjectNavViewProps): React.ReactElement {\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n useFetch(SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree), []);\r\n\r\n const getAppLink = React.useCallback((subject: SubjectTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subject.id]\r\n }), []);\r\n\r\n const newSubjectAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_SUBJECT\r\n };\r\n\r\n const actions: TreeNodeAction<SubjectTree>[] = [\r\n {\r\n label: 'Add child',\r\n getAppLink: (s: SubjectTree) => ({\r\n ...newSubjectAppLink,\r\n params: { parentId: s.id }\r\n })\r\n },\r\n {\r\n label: 'Delete subject',\r\n getAppLink: (s: SubjectTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_SUBJECT,\r\n args: [s.id]\r\n }),\r\n className: 'text-danger'\r\n }\r\n ];\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n <h5 className='border-bottom pb-2'>Subjects</h5>\r\n <AppLink appLink={newSubjectAppLink} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Subject</span>\r\n </AppLink>\r\n {!!subjectTree &&\r\n <div className='border-top pt-1'>\r\n <Tree<SubjectTree>\r\n tree={subjectTree}\r\n getAppLink={getAppLink}\r\n selectedIds={[selectedSubjectId]}\r\n actions={actions}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","export * from './SubjectNavView';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--3vLoN\"};","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { TopNav } from 'apps/subjects/components';\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\n\r\ninterface TopNavViewProps {\r\n currentAppLink: Core.AppLink;\r\n}\r\n\r\nexport function TopNavView({ currentAppLink }: TopNavViewProps): React.ReactElement {\r\n return <TopNav navItems={SubjectsNavHelper.getTopNavItems()} currentAppLink={currentAppLink} />;\r\n}","export * from './TopNavView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views/image-upload/ImageUploadView';\r\n\r\nimport { ThemesView } from 'apps/themes/views/themes';\r\nimport { NewThemeView } from 'apps/themes/views/new-theme';\r\nimport { EditThemeView } from 'apps/themes/views/edit-theme';\r\nimport { DeleteThemeView } from 'apps/themes/views/delete-theme';\r\nimport { ThemesAppContextProvider } from 'apps/themes/context/ThemesAppContext';\r\n\r\nclass ThemesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.THEMES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/themes(/)': 'themes',\r\n 'manage/themes/new(/)': 'newTheme',\r\n 'manage/themes/:id(/)': 'editTheme',\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteTheme',\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class ThemesApplication extends ReactApplication {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Themes Application';\r\n }\r\n\r\n public static get router(): any {\r\n return ThemesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.THEMES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: ThemesAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public themes(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <ThemesView />);\r\n }\r\n\r\n public newTheme(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewThemeView />);\r\n }\r\n\r\n public editTheme(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditThemeView id={id} />);\r\n }\r\n\r\n public deleteTheme(id: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteThemeView id={id} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ImageUploadView imageType={imageType} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\nimport { Theme } from 'libs/shared/interfaces';\r\nimport { ThemeType } from 'libs/shared/enums/ThemeType';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\nimport { EditGlanceData } from './edit-data/EditGlanceData';\r\nimport { ThemeValidationSchema } from './ThemeValidation';\r\n\r\nfunction getEditDataComponent(type: ThemeType): () => JSX.Element {\r\n switch (type) {\r\n case ThemeType.Glance:\r\n return EditGlanceData;\r\n\r\n default:\r\n return;\r\n }\r\n}\r\n\r\ninterface ThemeFormProps {\r\n isNew: boolean;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nfunction ThemeForm(props: ThemeFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateThemeRequest>();\r\n\r\n const EditData = getEditDataComponent(formikProps.values.type);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateThemeRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this theme'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateThemeRequest>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n <option value={null}>Select a type...</option>\r\n {ObjectHelper.getEnumKeys(ThemeType).map((key: ThemeType) =>\r\n <option key={key} value={(ThemeType as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n {!!EditData && <EditData />}\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <FormButtons isNew={props.isNew} />\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface EditThemeProps {\r\n saveTheme: (data: CreateOrUpdateThemeRequest, onDone: () => void) => void;\r\n theme?: Theme;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditTheme(props: EditThemeProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateThemeRequest, Theme>\r\n initialValues={props.theme}\r\n validationSchema={ThemeValidationSchema}\r\n onSubmit={props.saveTheme}\r\n >\r\n <ThemeForm isNew={!props.theme?.id} actions={props.actions} />\r\n </FormWrapper>\r\n );\r\n}","import * as Yup from 'yup';\r\n\r\nimport { ThemeData, HeroBanner } from 'libs/shared/interfaces';\r\nimport { ThemeType } from 'libs/shared/enums/ThemeType';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\n// TODO Swap out HeroBanner for correct ImageType\r\nconst ImageValidation = Yup.object()\r\n .shape<HeroBanner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown();\r\n\r\nexport const ThemeValidationSchema = Yup.object().shape<CreateOrUpdateThemeRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n type: Yup.mixed<ThemeType>()\r\n .required('Type is required'),\r\n\r\n data: Yup.mixed<ThemeData>()\r\n .when('type', {\r\n is: ThemeType.Glance,\r\n then: Yup.object().shape<ThemeData>({\r\n topLeft: ImageValidation,\r\n topRight: ImageValidation,\r\n bottomLeft: ImageValidation,\r\n bottomRight: ImageValidation\r\n })\r\n .noUnknown(),\r\n otherwise: Yup.mixed().strip(true)\r\n })\r\n .default({}),\r\n\r\n}).noUnknown();","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { ImageType, FileIdType } from 'libs/shared/enums/Images';\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\nimport { ImageSelect } from 'shared/components/forms/image-select/ImageSelect';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\nconst attributes = [\r\n { key: 'topLeft', label: 'Top Left' },\r\n { key: 'topRight', label: 'Top Right' },\r\n { key: 'bottomLeft', label: 'Bottom Left' },\r\n { key: 'bottomRight', label: 'Bottom Right' }\r\n];\r\n\r\nexport function EditGlanceData(): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateThemeRequest>();\r\n\r\n return (\r\n <div className='form-group'>\r\n {attributes.map(attribute => {\r\n const fieldName = `data.${attribute.key}` as keyof CreateOrUpdateThemeRequest;\r\n\r\n return (\r\n <ImageSelect<CreateOrUpdateThemeRequest>\r\n label={attribute.label}\r\n imageType={ImageType.HeroBanners} // TODO Replace imageType\r\n fieldName={fieldName}\r\n application={AppChannels.THEMES}\r\n uploadAction={Actions.Videos.UPLOAD_IMAGE}\r\n setSelectedImage={(image: Image) => {\r\n /**\r\n * Overriding setSelectedImage in ImageSelect as normally when setting an\r\n * image assoc, we don't set the url, allowing Master to generate it when the\r\n * image object is requested. The data prop in Themes is not strongly typed\r\n * though so we have to set the url upon creation.\r\n */\r\n formikProps.setFieldValue(fieldName, {\r\n fileId: image.id,\r\n url: image.url,\r\n fileIdType: FileIdType.ImageAPIv2\r\n });\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n );\r\n}","export * from './EditTheme';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider } from 'shared/context/ImageStorageContext';\r\n\r\nexport const ThemesAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n);","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\n\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\n\r\nexport const ThemeRequests = {\r\n theme(id: string): Flight.Request {\r\n return {\r\n url: `/api/domain/v1/themes/${id}`,\r\n key: `themes:${id}`\r\n };\r\n },\r\n\r\n themes(type?: string): Flight.Request {\r\n let url = '/api/domain/v1/themes';\r\n let key = 'themes';\r\n\r\n if (type) {\r\n url += `?type=${type}`;\r\n key += `:type:${type}`;\r\n }\r\n\r\n return {\r\n url,\r\n key\r\n };\r\n },\r\n\r\n createTheme(\r\n data: CreateOrUpdateThemeRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: '/api/domain/v1/themes',\r\n key: 'theme',\r\n data,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: 'themes',\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n updateTheme(\r\n id: string,\r\n data: CreateOrUpdateThemeRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/domain/v1/themes/${id}`,\r\n key: `update:theme:${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n },\r\n\r\n deleteTheme(\r\n id: string,\r\n success?: (data: HashObject) => void,\r\n error?: (xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n url: `/api/domain/v1/themes/${id}`,\r\n key: `delete:theme:${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: 'themes',\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Theme, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\n\r\ninterface DeleteThemeViewProps {\r\n id: string;\r\n}\r\n\r\nexport function DeleteThemeView(props: DeleteThemeViewProps & PopupViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const theme = Flight.useBasicFetch<Theme>(ThemeRequests.theme(props.id));\r\n\r\n function deleteTheme(): void {\r\n setShowButtonSpinner(true);\r\n\r\n const success = () => {\r\n alerts.success('Successfully deleted theme');\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.THEMES,\r\n action: Actions.Themes.THEMES\r\n });\r\n };\r\n\r\n const error = () => {\r\n alerts.error('Failed to delete theme');\r\n };\r\n\r\n Flight.fetch(dispatch, ThemeRequests.deleteTheme(props.id, success, error));\r\n }\r\n\r\n return (\r\n <Popup title='Delete Theme' closePopup={props.closePopup} showLoadingSpinner={!theme.data}>\r\n <>\r\n <p>Are you sure you want to delete <strong>{theme.data.name}</strong>?</p>\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteTheme,\r\n buttonText: 'Yes, delete this theme',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n </Popup>\r\n );\r\n}","export * from './DeleteThemeView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\n\r\nimport { Theme } from 'libs/shared/interfaces';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\nimport { EditTheme } from 'apps/themes/components/edit-theme';\r\n\r\ninterface EditThemeViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditThemeView(props: EditThemeViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const theme = Flight.useBasicFetch<Theme>(ThemeRequests.theme(props.id));\r\n\r\n function saveTheme(data: CreateOrUpdateThemeRequest, onDone: () => void): void {\r\n const success = () => {\r\n alerts.success('Successfully updated theme');\r\n };\r\n\r\n const error = () => {\r\n alerts.error('Failed to update theme');\r\n };\r\n\r\n Flight.fetch(dispatch, ThemeRequests.updateTheme(props.id, data, success, error, onDone));\r\n }\r\n\r\n if (!theme.data)\r\n return <></>;\r\n\r\n return (\r\n <EditTheme\r\n theme={theme.data}\r\n saveTheme={saveTheme}\r\n actions={[{\r\n label: 'Delete theme',\r\n className: 'btn btn-danger',\r\n button: true,\r\n appLink: { application: AppChannels.THEMES, action: Actions.Themes.DELETE_THEME, args: [props.id]}\r\n }]}\r\n />\r\n );\r\n}","export * from './EditThemeView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\nimport { Theme } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\nimport { CreateOrUpdateThemeRequest } from 'apps/themes/interfaces';\r\nimport { EditTheme } from 'apps/themes/components/edit-theme';\r\n\r\nexport function NewThemeView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createTheme = (data: CreateOrUpdateThemeRequest, onDone: () => void): void => {\r\n const onSuccess = (newTheme: Theme) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.THEMES,\r\n action: Actions.Themes.EDIT_THEME,\r\n args: [newTheme.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, ThemeRequests.createTheme(data, onSuccess, null, onDone));\r\n };\r\n\r\n return (\r\n <EditTheme saveTheme={createTheme} />\r\n );\r\n}","export * from './NewThemeView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Theme } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { ObjectList } from 'shared/components/object-list';\r\n\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\n\r\nconst getThemeAppLink = (theme: Theme) => ({\r\n application: AppChannels.THEMES,\r\n action: Actions.Themes.EDIT_THEME,\r\n args: [theme.id]\r\n});\r\n\r\nexport function ThemesView(): JSX.Element {\r\n const themes = Flight.useBasicFetch<Theme[]>(ThemeRequests.themes());\r\n\r\n if (!themes.data)\r\n return <></>;\r\n\r\n return (\r\n <ObjectList\r\n objects={themes.data}\r\n getObjectAppLink={getThemeAppLink}\r\n newObjectAppLink={{ application: AppChannels.THEMES, action: Actions.Themes.NEW_THEME }}\r\n objectName='Theme'\r\n />\r\n );\r\n}","export * from './ThemesView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { ReactApplication } from 'libs/common/react/core/ReactApplication';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutViewOptions, CuratorLayoutView } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views/image-upload/ImageUploadView';\r\n\r\nimport { VideosAppContextProvider } from 'apps/videos/context';\r\nimport { EditVideoView, EditVideoAudiencesView, EditVideoSubjectsView, EditVideoAliasesView } from 'apps/videos/views';\r\n\r\nclass VideosAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.VIDEOS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/videos/:id(/)': 'editVideo',\r\n 'manage/videos/:id/audiences(/)': 'editVideoAudiences',\r\n 'manage/videos/:id/subjects(/)': 'editVideoSubjects',\r\n 'manage/videos/:id/aliases(/)': 'editVideoAliases',\r\n\r\n 'tools/programlookup/:id': 'legacyEditVideo'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class VideosApplication extends ReactApplication {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Videos Application';\r\n }\r\n\r\n public static get router(): any {\r\n return VideosAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.VIDEOS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: VideosAppContextProvider,\r\n alertRegion: LayoutRegions.ALERT\r\n }\r\n };\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoView videoId={videoId} />);\r\n }\r\n\r\n public editVideoAudiences(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoAudiencesView videoId={videoId} />);\r\n }\r\n\r\n public editVideoSubjects(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoSubjectsView videoId={videoId} />);\r\n }\r\n\r\n public editVideoAliases(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoAliasesView videoId={videoId} />);\r\n }\r\n\r\n public legacyEditVideo(videoId: string): void {\r\n Core.LocationUtils.Redirect(`/tools/programlookup/${videoId}`);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <ImageUploadView imageType={imageType} closePopup={() => this.layout.closePopup()} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\nimport * as marked from 'marked';\r\n\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { Theme } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { GlanceFormat } from 'libs/shared/enums/GlanceFormat';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\n\r\ninterface EditGlanceProps {\r\n themes: Theme[];\r\n}\r\n\r\nexport function EditGlance(props: EditGlanceProps): JSX.Element {\r\n const formikProps = useFormikContext<UpdateVideoRequest>();\r\n\r\n return (\r\n <div className='form-group p-2 border'>\r\n <div className='border-bottom mb-2'>\r\n <label>Summary</label>\r\n </div>\r\n <FormField<UpdateVideoRequest>\r\n as='select'\r\n label='Theme'\r\n name='glance.theme'\r\n id='type'\r\n value={formikProps.values.glance?.theme}\r\n >\r\n <option value={null}>Select a theme...</option>\r\n {props.themes.map(theme =>\r\n <option key={theme.id} value={theme.name}>{theme.name}</option>\r\n )}\r\n </FormField>\r\n <FormField<UpdateVideoRequest>\r\n as='select'\r\n label='Format'\r\n name='glance.format'\r\n id='type'\r\n value={formikProps.values.glance?.format}\r\n >\r\n <option value={null}>Select a format...</option>\r\n {ObjectHelper.getEnumKeys(GlanceFormat).map((key: string) =>\r\n <option key={key} value={(GlanceFormat as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n <FormField<UpdateVideoRequest>\r\n label='Content'\r\n as='textarea'\r\n name='glance.content'\r\n id='content'\r\n value={formikProps.values.glance?.content}\r\n />\r\n {formikProps.values.glance?.format === GlanceFormat.Markdown &&\r\n <div className='form-group'>\r\n <label>Content Preview</label>\r\n <div\r\n className='border rounded py-2'\r\n dangerouslySetInnerHTML={{ __html: marked(formikProps.values.glance?.content) }}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Video, Rating, Theme, CuratorUser } from 'libs/shared/interfaces';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { UpdateVideoRequest, RightslineVideo } from 'apps/videos/interfaces';\r\nimport { VideoValidationSchema } from 'apps/videos/utils/VideoValidation';\r\n\r\nimport { VideoDetailsForm } from './VideoDetailsForm';\r\n\r\nfunction getVideoData(video: Video, rightslineVideo: RightslineVideo): Video {\r\n if (!video)\r\n return;\r\n\r\n if (!rightslineVideo)\r\n return video;\r\n\r\n return { ...video, ...rightslineVideo };\r\n}\r\n\r\ninterface EditVideoDetailsProps {\r\n video: Video;\r\n saveVideo: (data: UpdateVideoRequest, onDone: () => void) => void;\r\n ratings: Rating[];\r\n themes: Theme[];\r\n currentUser: CuratorUser;\r\n rightslineId?: string;\r\n rightslineVideo?: RightslineVideo;\r\n}\r\n\r\nexport function EditVideoDetails(props: EditVideoDetailsProps): JSX.Element {\r\n return (\r\n <FormWrapper<UpdateVideoRequest, Video>\r\n initialValues={getVideoData(props.video, props.rightslineVideo)}\r\n validationSchema={VideoValidationSchema}\r\n onSubmit={props.saveVideo}\r\n allowInitialSubmit={!!props.rightslineVideo} // data may have changed on sync from Rightsline\r\n >\r\n <VideoDetailsForm\r\n id={props.video && props.video.id}\r\n ratings={props.ratings}\r\n themes={props.themes}\r\n currentUser={props.currentUser}\r\n rightslineId={props.rightslineId}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { Rating, Theme, CuratorUser } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\n\r\nimport { RatingSelect } from 'shared/components/rating-select';\r\nimport { CurationStatus } from 'shared/enums/CurationStatus';\r\nimport { ImageSelect } from 'shared/components/forms/image-select';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\nimport { EditGlance } from './EditGlance';\r\n\r\nfunction getStatusBadgeClass(status: CurationStatus): string {\r\n switch (status) {\r\n case CurationStatus.Published:\r\n return 'badge-success';\r\n\r\n case CurationStatus.Archived:\r\n return 'badge-danger';\r\n\r\n case CurationStatus.Draft:\r\n return 'badge-warning';\r\n\r\n case CurationStatus.Pending:\r\n return 'badge-info';\r\n\r\n case CurationStatus.Rejected:\r\n return 'badge-dark';\r\n\r\n default:\r\n return 'badge-secondary';\r\n }\r\n}\r\n\r\ninterface VideoDetailsFormProps {\r\n id: string;\r\n ratings: Rating[];\r\n themes: Theme[];\r\n currentUser: CuratorUser;\r\n rightslineId?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function VideoDetailsForm(props: VideoDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<UpdateVideoRequest>();\r\n\r\n const isRightsline = !!props.rightslineId;\r\n\r\n const hasSubjectsAccess = PermissionsHelper.hasSubjectsAccess(props.currentUser);\r\n\r\n return (\r\n <Form>\r\n {isRightsline &&\r\n <FormField\r\n label='Rightsline ID'\r\n name='rightslineId'\r\n id='rightslineId'\r\n value={props.rightslineId}\r\n disabled\r\n />\r\n }\r\n <FormField<UpdateVideoRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this video'\r\n disabled={isRightsline}\r\n autoFocus\r\n />\r\n <div className='form-group'>\r\n <label>Status</label>\r\n <div>\r\n <span className={`badge ${getStatusBadgeClass(formikProps.values.status)}`}>\r\n {CurationStatus[formikProps.values.status]}\r\n </span>\r\n </div>\r\n </div>\r\n <FormField<UpdateVideoRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={formikProps.values.description}\r\n placeholder='Describe this video here'\r\n disabled={isRightsline}\r\n showCharacterCounter\r\n />\r\n <FormField<UpdateVideoRequest>\r\n label='Production Year'\r\n type='number'\r\n name='productionYear'\r\n id='productionYear'\r\n value={formikProps.values.productionYear}\r\n disabled={isRightsline}\r\n />\r\n <RatingSelect<UpdateVideoRequest> ratings={props.ratings} disabled={isRightsline} />\r\n <ImageSelect<UpdateVideoRequest>\r\n imageType={ImageType.Thumbnails}\r\n fieldName='thumbnail'\r\n application={AppChannels.VIDEOS}\r\n uploadAction={Actions.Videos.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect<UpdateVideoRequest>\r\n imageType={ImageType.HeroBanners}\r\n fieldName='heroBanner'\r\n application={AppChannels.VIDEOS}\r\n uploadAction={Actions.Videos.UPLOAD_IMAGE}\r\n />\r\n {hasSubjectsAccess && <EditGlance themes={props.themes} />}\r\n <FormButtons isNew={!props.id} />\r\n </Form>\r\n );\r\n}","export * from './EditVideoDetails';","import * as React from 'react';\r\n\r\nimport { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { VideoNavHelper } from 'apps/videos/utils/VideoNavHelper';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditVideoNavProps {\r\n videoId: string;\r\n activeAction: string;\r\n currentUser: CuratorUser;\r\n}\r\n\r\nexport function EditVideoNav(props: EditVideoNavProps): React.ReactElement {\r\n const tabs = VideoNavHelper.getEditVideoTabs(props.currentUser, props.videoId);\r\n\r\n if (tabs.length < 2)\r\n return <></>;\r\n\r\n return (\r\n <div className='py-2'>\r\n <Tabs\r\n tabs={tabs}\r\n isItemActive={isItemActive(props.activeAction)}\r\n />\r\n </div>\r\n );\r\n}","export * from './EditVideoNav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider } from 'shared/context';\r\n\r\nexport const VideosAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n);","export * from './VideosAppContext';","import { Flight } from 'libs/common/flight';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Xhr } from 'libs/common/backbone/interfaces';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\n\r\nconst WithStatements = {\r\n VIDEO: 'rating,thumbnail,glance'\r\n};\r\n\r\nexport const VideoRequests = {\r\n video(id: string): Flight.Request {\r\n return {\r\n url: `/api/master/v2/objects/${id}?query=${WithStatements.VIDEO}`,\r\n key: `videos:${id}`\r\n };\r\n },\r\n\r\n videosById(ids: string[]): Flight.Request {\r\n const sortedIds = ids.slice().sort();\r\n\r\n return {\r\n key: `videos:${sortedIds.join(',')}`,\r\n url: `/api/master/v2/objects?${sortedIds.map(id => `id=${id}`).join('&')}`\r\n };\r\n },\r\n\r\n rightslineVideo(id: string): Flight.Request {\r\n return {\r\n url: `/ajax/hostedlibraries/rightsline/programs/${id}`,\r\n key: `rightsline:videos:${id}`,\r\n normalizeOptions: {\r\n namespace: 'rightsline'\r\n }\r\n };\r\n },\r\n\r\n updateVideo(\r\n id: string,\r\n data: UpdateVideoRequest,\r\n success?: (data: HashObject) => void,\r\n error?: (Xhr: Xhr) => void,\r\n always?: () => void\r\n ): Flight.Request {\r\n return {\r\n key: `videos:${id}`,\r\n url: `/api/master/v2/objects/${id}`,\r\n data,\r\n type: HttpVerbs.PUT,\r\n success,\r\n error,\r\n always\r\n };\r\n }\r\n};","import { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils/PermissionsHelper';\r\n\r\nexport const VideoNavHelper = {\r\n getEditVideoTabs(currentUser: CuratorUser, videoId: string): NavItem[] {\r\n const application = AppChannels.VIDEOS;\r\n const actions = Actions.Videos;\r\n\r\n const tabs = [\r\n {\r\n label: 'Edit Video Details',\r\n appLink: { application, action: actions.EDIT_VIDEO, args: [videoId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (!canAccessSubjects)\r\n return tabs;\r\n\r\n return [\r\n ...tabs,\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_VIDEO_SUBJECTS, args: [videoId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_VIDEO_AUDIENCES, args: [videoId]}\r\n },\r\n {\r\n label: 'Aliases',\r\n appLink: { application, action: actions.EDIT_VIDEO_ALIASES, args: [videoId]}\r\n }\r\n ];\r\n }\r\n};","import * as Yup from 'yup';\r\n\r\nimport { Thumbnail, HeroBanner, Glance } from 'libs/shared/interfaces';\r\nimport { FileIdType } from 'libs/shared/enums/Images';\r\nimport { GlanceFormat } from 'libs/shared/enums/GlanceFormat';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\nimport { CurationStatus } from 'shared/enums/CurationStatus';\r\n\r\nimport { UpdateVideoRequest } from 'apps/videos/interfaces';\r\n\r\nexport const VideoValidationSchema = Yup.object().shape<UpdateVideoRequest>({\r\n\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .default(''),\r\n\r\n status: Yup.mixed<CurationStatus>()\r\n .required('Status is required'),\r\n\r\n productionYear: Yup.number()\r\n .min(1900),\r\n\r\n rating: Yup.object()\r\n .shape<UpdateObjectRating>({\r\n id: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n thumbnail: Yup.object()\r\n .shape<Thumbnail>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n heroBanner: Yup.object()\r\n .shape<HeroBanner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n glance: Yup.object()\r\n .shape<Glance>({\r\n theme: Yup.string(),\r\n format: Yup.mixed<GlanceFormat>(),\r\n content: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nimport { Actions } from 'shared/constants';\r\nimport { AliasCollection, CreateAliasRequest } from 'shared/interfaces';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { Aliases } from 'shared/components/aliases';\r\nimport { AliasesRequests } from 'shared/flight-requests/AliasRequests';\r\n\r\ninterface EditVideoAliasesViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoAliasesView(props: EditVideoAliasesViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const aliases = Flight.useBasicFetch<AliasCollection>(AliasesRequests.getAliases(props.videoId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n function createAlias(alias: CreateAliasRequest, success: () => void): void {\r\n Flight.fetch(dispatch, AliasesRequests.createAlias(props.videoId, alias, () => {\r\n alerts.success('Successfully created alias');\r\n success();\r\n }, () => {\r\n alerts.error('Something went wrong creating your alias');\r\n }));\r\n }\r\n\r\n function deleteAlias(id: string): void {\r\n Flight.fetch(dispatch, AliasesRequests.deleteAlias(props.videoId, id, () => {\r\n alerts.success('Successfully deleted alias');\r\n }, () => {\r\n alerts.error('Something went wrong deleting your alias');\r\n }));\r\n }\r\n\r\n if (!aliases.data)\r\n return <>Loading...</>;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditVideoNav\r\n videoId={props.videoId}\r\n activeAction={Actions.Videos.EDIT_VIDEO_ALIASES}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <Aliases\r\n aliases={aliases.data.data}\r\n onSave={createAlias}\r\n onDelete={deleteAlias}\r\n />\r\n </>\r\n );\r\n}","export * from './EditVideoAliasesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Video, PresentationAudience, CuratorUser } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { Actions, DataServices } from 'shared/constants';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditVideoAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n videoLevels?: Level[];\r\n videoAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditVideoAudiencesViewState>>;\r\n\r\nfunction useFetchData(videoId: string, state: EditVideoAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditVideoAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoLevels')),\r\n [videoId]\r\n );\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(\r\n videoId, SubjectMemberType.Videos, getSetState('videoAudiences')),\r\n [ videoId, state.videoLevels ]\r\n );\r\n\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditVideoAudiencesViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoAudiencesView(props: EditVideoAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditVideoAudiencesViewState>({});\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.videoId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.videoLevels && !!state.videoAudiences;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditVideoNav\r\n videoId={props.videoId}\r\n activeAction={Actions.Videos.EDIT_VIDEO_AUDIENCES}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={video.data} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.videoLevels}\r\n objectAudiences={state.videoAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Videos}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n props.videoId, levelIds, SubjectMemberType.Videos, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n props.videoId, state.currentPresentation.id, audienceIds, SubjectMemberType.Videos, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditVideoAudiencesView';","import * as React from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { useBulkFetch } from 'libs/common/react/hooks/UseBulkFetch';\r\nimport { useFetch } from 'libs/common/react/hooks/UseFetch';\r\nimport { Video, Subject, Classification, CuratorUser } from 'libs/shared/interfaces';\r\nimport { StateHelper } from 'libs/shared/utils/StateHelper';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditVideoSubjectsViewState {\r\n videoSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n videoClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditVideoSubjectsViewState>>;\r\n\r\nfunction useFetchData(videoId: string, state: EditVideoSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditVideoSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoSubjects')),\r\n [videoId]\r\n );\r\n\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever videoSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.videoSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditVideoSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.videoSubjects && state.videoSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.videoSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoClassifications')),\r\n [ videoId, state.videoSubjects ]\r\n );\r\n}\r\n\r\ninterface EditVideoSubjectsViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoSubjectsView(props: EditVideoSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditVideoSubjectsViewState>({});\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props.videoId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.videoSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.videoClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditVideoNav\r\n videoId={props.videoId}\r\n activeAction={Actions.Videos.EDIT_VIDEO_SUBJECTS}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n <ObjectHeader object={video.data} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.videoSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Videos}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.videoClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n props.videoId, subjectsId, SubjectMemberType.Videos, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n props.videoId, state.currentPresentation.id, classificationIds, SubjectMemberType.Videos, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}\r\n","export * from './EditVideoSubjectsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Video, Rating, Theme, CuratorUser } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ThemeType } from 'libs/shared/enums/ThemeType';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\n\r\nimport { Actions } from 'shared/constants/CuratorActions';\r\nimport { AppChannels } from 'shared/constants/RadioChannels';\r\nimport { RatingRequests } from 'shared/flight-requests/RatingRequests';\r\n\r\nimport { VideoRequests } from 'apps/videos/flight-requests/CuratorVideoRequests';\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { EditVideoDetails } from 'apps/videos/components/edit-video-details';\r\nimport { UpdateVideoRequest, RightslineVideo } from 'apps/videos/interfaces';\r\nimport { ThemeRequests } from 'apps/themes/flight-requests/ThemeRequests';\r\n\r\nfunction getLegacyVideoAppLink(videoId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.LEGACY_EDIT_VIDEO,\r\n args: [videoId]\r\n };\r\n}\r\n\r\ninterface EditVideoViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoView(props: EditVideoViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const [ useRightslineVideoData, setUseRightslineVideoData ] = React.useState(false);\r\n\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const rightslineVideo = Flight.useBasicFetch<RightslineVideo>(VideoRequests.rightslineVideo(props.videoId));\r\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n const themes = Flight.useBasicFetch<Theme[]>(ThemeRequests.themes(ThemeType.Glance));\r\n const currentUser = Flight.useBasicFetch<CuratorUser>(UserRequests.currentUser);\r\n\r\n function fetchRightsline(): void {\r\n if (rightslineVideo.isFetching)\r\n return;\r\n\r\n setUseRightslineVideoData(true);\r\n\r\n // Re-fetch Rightsline data in case it has changed while this page is open.\r\n Flight.fetch(dispatch, VideoRequests.rightslineVideo(props.videoId));\r\n }\r\n\r\n function saveVideo(data: UpdateVideoRequest, onDone: () => void): void {\r\n Flight.fetch(dispatch, VideoRequests.updateVideo(props.videoId, data, null, null, onDone));\r\n }\r\n\r\n const dataLoaded = !!video.data\r\n && !!ratings.data\r\n && !!themes.data\r\n && !!currentUser.data\r\n && rightslineVideo.isComplete;\r\n\r\n return (\r\n <>\r\n {!!currentUser.data &&\r\n <EditVideoNav\r\n videoId={props.videoId}\r\n activeAction={Actions.Videos.EDIT_VIDEO}\r\n currentUser={currentUser.data}\r\n />\r\n }\r\n {!!rightslineVideo.data &&\r\n <div className='pt-3 text-right'>\r\n <Button variant='outline-dark' size='sm' onClick={fetchRightsline}>Sync from Rightsline</Button>\r\n </div>\r\n }\r\n {dataLoaded &&\r\n <EditVideoDetails\r\n video={video.data}\r\n saveVideo={saveVideo}\r\n ratings={ratings.data}\r\n themes={themes.data}\r\n currentUser={currentUser.data}\r\n rightslineId={rightslineVideo.data?.rightslineId}\r\n rightslineVideo={useRightslineVideoData && rightslineVideo.data}\r\n />\r\n }\r\n <div className='py-3 text-right'>\r\n {'Can\\'t find what you\\'re looking for? Try the old edit video page '}\r\n <AppLink className='info-link' appLink={getLegacyVideoAppLink(props.videoId)}>here</AppLink>.\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditVideoView';","export * from './edit-video';\r\nexport * from './edit-video-audiences';\r\nexport * from './edit-video-subjects';\r\nexport * from './edit-video-aliases';","import './apps/subjects/views/presentations/select-presentation/select-presentation.lang.json';\r\nimport '../../../libs/shared/src/apps/notifications/components/notification-list/notification-list.lang.json'; import '../../../libs/shared/src/apps/notifications/services/services.lang.json'; import '../../../libs/shared/src/apps/notifications/utils/notifications-utils.lang.json'; import '../../../libs/shared/src/apps/notifications/views/notifications/notifications.lang.json'; import '../../../libs/shared/src/apps/notifications/views/popover/notifications-popover.lang.json'; import '../../../libs/shared/src/apps/playlists/components/empty-state/empty-state.lang.json'; import '../../../libs/shared/src/apps/playlists/components/playlist-list/playlist-item.lang.json'; import '../../../libs/shared/src/apps/playlists/hooks/playlists-hooks.lang.json'; import '../../../libs/shared/src/apps/playlists/validation/playlists-validation.lang.json'; import '../../../libs/shared/src/apps/search/components/search-tips/search-tips.lang.json'; import '../../../libs/shared/src/apps/search/services/search-services.lang.json'; import '../../../libs/shared/src/apps/search/views/search-bar/search-bar.lang.json'; import '../../../libs/shared/src/apps/subjects/components/coming-soon/coming-soon.lang.json'; import '../../../libs/shared/src/apps/subjects/components/hero-video/hero-video.lang.json'; import '../../../libs/shared/src/apps/upload/errors/file-type/file-type.lang.json'; import '../../../libs/shared/src/apps/upload/errors/internet-connectivity/internet-connectivity.lang.json'; import '../../../libs/shared/src/apps/upload/utils/upload-utils.lang.json'; import '../../../libs/shared/src/components/back-button/back-button.lang.json'; import '../../../libs/shared/src/components/edit-video-details/edit-video-details.lang.json'; import '../../../libs/shared/src/components/favourite-button/favourite-button.lang.json'; import '../../../libs/shared/src/components/forms/form-buttons/form-buttons.lang.json'; import '../../../libs/shared/src/components/pagination/pagination.lang.json'; import '../../../libs/shared/src/components/search-bar/search-bar.lang.json'; import '../../../libs/shared/src/components/video-list/components/video-item-description/video-item-description.lang.json'; import '../../../libs/shared/src/components/widgets/dynamic-widget/dynamic-widget.lang.json'; import '../../../libs/shared/src/components/widgets/fixed-widget/fixed-widget.lang.json'; import '../../../libs/shared/src/components/widgets/greeting-widget/greeting.lang.json'; import '../../../libs/shared/src/components/widgets/items/subject-widget-item/subject-widget-item.lang.json'; import '../../../libs/shared/src/legacy/components/pagination/pagination.lang.json'; import '../../../libs/shared/src/utils/shared-utils.lang.json'; import '../../../libs/shared/src/utils/video-actions/video-actions-helper.lang.json';\r\n\r\nexport * from './shared/constants';\r\nexport * from './shared/layouts';\r\nexport * from './shared/services';\r\n\r\nexport * from './apps/companies/CompaniesApplication';\r\n\r\nexport * from './apps/domain-options/DomainOptionsApplication';\r\n\r\nexport * from './apps/people/PeopleApplication';\r\n\r\nexport * from './apps/playlists/PlaylistsApplication';\r\n\r\nexport * from './apps/series/SeriesApplication';\r\n\r\nexport * from './apps/subjects/services';\r\nexport * from './apps/subjects/SubjectsApplication';\r\n\r\nexport * from './apps/themes/ThemesApplication';\r\n\r\nexport * from './apps/videos/VideosApplication';\r\n\r\nexport * from './apps/domain-options/DomainOptionsApplication';\r\n\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { FifoMemoryCache } from 'libs/common/backbone/services/caches/FifoMemoryCache';\r\nimport { AjaxDataProvider } from 'libs/common/backbone/services/data-providers/AjaxDataProvider';\r\nimport { AlertType, BaseAlertService } from 'libs/common/backbone/services/BaseAlertService';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nimport { AlertList } from 'libs/shared/components/alert/AlertList';\r\n\r\nexport {\r\n Core,\r\n InstanceManager,\r\n FifoMemoryCache,\r\n AjaxDataProvider,\r\n AlertList,\r\n AlertType,\r\n BaseAlertService,\r\n LanguageService,\r\n Flight,\r\n CacheDurations\r\n};","import * as React from 'react';\r\n\r\nimport { string, object } from 'yup';\r\nimport { useFormikContext, Form } from 'formik';\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\r\n\r\nimport { CreateAliasRequest, Alias } from 'shared/interfaces';\r\n\r\nconst AliasValidationSchema = object().shape<CreateAliasRequest>({\r\n name: string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n});\r\n\r\nfunction EditAliasForm(): React.ReactElement {\r\n const formikProps = useFormikContext<CreateAliasRequest>();\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateAliasRequest>\r\n label='Create an alias'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Add an alias'\r\n />\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Add\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface AddAliasProps {\r\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\r\n}\r\n\r\nexport function AddAlias(props : AddAliasProps) : JSX.Element {\r\n const { onSave } = props;\r\n\r\n const onSubmit = (data: CreateAliasRequest, onDone: () => void) : void => {\r\n onSave(data, onDone);\r\n };\r\n\r\n return (\r\n <FormWrapper<CreateAliasRequest, Alias>\r\n initialValues={{ name: '' }}\r\n validationSchema={AliasValidationSchema}\r\n onSubmit={onSubmit}\r\n resetOnSubmit\r\n >\r\n <EditAliasForm />\r\n </FormWrapper>\r\n );\r\n\r\n}","import * as React from 'react';\r\nimport { Alias } from 'shared/interfaces/models';\r\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\ninterface AliasProps{\r\n alias: Alias;\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nfunction Alias(props: AliasProps) : JSX.Element {\r\n const { alias, onDelete } = props;\r\n\r\n return (\r\n <li className='list-group-item d-flex justify-content-between'>\r\n {alias.name}\r\n <SvgContainer svgName={cvSvgLibrary.Delete} onClick={() => onDelete(alias.id)} />\r\n </li>\r\n );\r\n}\r\n\r\ninterface AliasListProps {\r\n aliases: Alias[];\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nexport function AliasList(props: AliasListProps) : JSX.Element {\r\n const { aliases, onDelete } = props;\r\n\r\n return (\r\n <ul className='list-group mb-3'>\r\n {\r\n aliases\r\n ? aliases.map(alias => <Alias key={alias.id} alias={alias} onDelete={onDelete} />)\r\n : <span>Currently there are no aliases for this object.</span>\r\n }\r\n </ul>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Alias, CreateAliasRequest } from 'shared/interfaces';\r\nimport { AliasList } from './AliasList';\r\nimport { AddAlias } from './AddAlias';\r\n\r\ninterface AliasesProps {\r\n aliases: Alias[];\r\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nexport function Aliases(props: AliasesProps) : JSX.Element {\r\n\r\n const { onSave, aliases, onDelete } = props;\r\n\r\n return (\r\n <div className='w-50'>\r\n <h1>Aliases</h1>\r\n <AliasList aliases={aliases} onDelete={onDelete} />\r\n <AddAlias onSave={onSave} />\r\n </div>\r\n );\r\n}","export * from './Aliases';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\ninterface BackButtonProps {\r\n backToName: string;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport function BackButton({ backToName, appLink }: BackButtonProps): React.ReactElement {\r\n return (\r\n <AppLink appLink={appLink} className='d-inline-flex align-items-center'>\r\n <SvgContainer svgName={cvSvgLibrary.ArrowLeft} size={SvgContainerSize.Small} />\r\n <span className='ml-1'>{`Back to ${backToName}`}</span>\r\n </AppLink>\r\n );\r\n}","export * from './BackButton';","import * as React from 'react';\r\nimport { Form, FormCheckProps } from 'react-bootstrap';\r\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\r\n\r\ninterface CheckboxProps {\r\n selected: boolean;\r\n onToggle: (selected: boolean) => void;\r\n}\r\n\r\nexport function Checkbox(props : CheckboxProps & FormCheckProps): React.ReactElement {\r\n const { selected, onToggle, ...formCheckProps } = props;\r\n\r\n /**\r\n * We store the value of `selected` in state as `checked` so that if the value\r\n * of `selected` relies on an api call, the UI can be immediately updated.\r\n */\r\n const [ checked, setChecked ] = React.useState(selected);\r\n\r\n React.useEffect(() => setChecked(selected), [selected]);\r\n\r\n const onChangeHandler = () => {\r\n setChecked(!checked);\r\n onToggle(!checked);\r\n };\r\n\r\n return (\r\n <Form.Check\r\n type='checkbox'\r\n id={`checkbox-${RandomHelper.getRandomInt()}`}\r\n checked={checked}\r\n onChange={onChangeHandler}\r\n {...formCheckProps}\r\n />\r\n );\r\n}","export * from './Checkbox';","import * as React from 'react';\r\nimport { FieldAttributes, Field } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nexport interface FileSelectProps {\r\n onFileSelect: (files: FileList) => void;\r\n acceptMultiple?: boolean;\r\n mimeType?: string;\r\n label?: string;\r\n error?: string | string[];\r\n touched?: boolean;\r\n}\r\n\r\nexport function FileSelect(props: FieldAttributes<FileSelectProps>): React.ReactElement {\r\n const { onFileSelect, acceptMultiple, mimeType, label, error, touched, ...fieldProps } = props;\r\n\r\n const showError = error && touched;\r\n\r\n let className = 'custom-file-input cursor-pointer';\r\n\r\n if (showError)\r\n className += ' is-invalid';\r\n\r\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.currentTarget.files;\r\n\r\n if (!files || !files.length || !FunctionHelper.isFunction(onFileSelect))\r\n return;\r\n\r\n onFileSelect(files);\r\n };\r\n\r\n const fileInputProps = {\r\n type: 'file',\r\n className,\r\n onChange,\r\n autoComplete: 'off',\r\n value: '',\r\n multiple: !!acceptMultiple,\r\n ...(mimeType ? { accept: mimeType } : {})\r\n };\r\n\r\n return (\r\n <div className='form-group'>\r\n <div className='custom-file'>\r\n <Field {...fileInputProps} {...fieldProps}>{props.children}</Field>\r\n <Form.Label className='custom-file-label' htmlFor={fieldProps.id}>{label}</Form.Label>\r\n </div>\r\n </div>\r\n );\r\n}","export * from './FileSelect';","import * as React from 'react';\r\nimport { useFormikContext, getIn } from 'formik';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { ImageType, FileIdType } from 'libs/shared/enums/Images';\r\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\nimport { FileSelect, FileSelectProps } from 'shared/components';\r\nimport { FileExtensions } from 'shared/constants';\r\nimport { ImageSelectHelper } from 'shared/utils';\r\nimport { ImageStorageContext } from 'shared/context';\r\n\r\nconst DEFAULT_LABEL = 'Image';\r\n\r\nconst Labels = {\r\n [ImageType.Thumbnails]: 'Thumbnail',\r\n [ImageType.Banners]: 'Banner',\r\n [ImageType.Avatars]: 'Avatar',\r\n [ImageType.Logos]: 'Logo',\r\n [ImageType.Covers]: 'Cover',\r\n [ImageType.Posters]: 'Poster',\r\n [ImageType.TallPosters]: 'Tall Poster',\r\n [ImageType.HeroBanners]: 'Hero Banner'\r\n};\r\n\r\ninterface ImageSelectProps<Values extends object> extends Omit<FileSelectProps, 'onFileSelect'> {\r\n imageType: ImageType;\r\n fieldName: keyof Values & string;\r\n application: string;\r\n uploadAction: string;\r\n label?: string;\r\n setSelectedImage?: (image: Image) => void; // formikProps.setFieldValue will be used be default.\r\n}\r\n\r\nexport function ImageSelect<Values extends object>(props: ImageSelectProps<Values>): React.ReactElement {\r\n const formikProps = useFormikContext<Values>();\r\n\r\n const currentImage = getIn(formikProps?.values, props.fieldName);\r\n\r\n const { setDataUrl, getImage, imageUploaded } = React.useContext(ImageStorageContext);\r\n\r\n const [ imageSelected, setImageSelected ] = React.useState(false);\r\n const [ image, setImage ] = React.useState<Image>(currentImage);\r\n const [ hideImage, setHideImage ] = React.useState(false);\r\n\r\n function onImageLoad(imageEl: HTMLImageElement): void {\r\n setImageSelected(true);\r\n setDataUrl(imageEl.src);\r\n\r\n // Trigger Upload Image appLink\r\n Core.AppLinkHelper.trigger({\r\n application: props.application,\r\n action: props.uploadAction,\r\n args: [props.imageType]\r\n });\r\n }\r\n\r\n function setSelectedImage(selectedImage: Image): void {\r\n if (FunctionHelper.isFunction(props.setSelectedImage)) {\r\n props.setSelectedImage(selectedImage);\r\n return;\r\n }\r\n\r\n if (!formikProps)\r\n return;\r\n\r\n formikProps.setFieldValue(props.fieldName, { fileId: selectedImage.id, fileIdType: FileIdType.ImageAPIv2 });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (!imageSelected)\r\n return;\r\n\r\n const newImage = getImage();\r\n\r\n if (!newImage)\r\n return;\r\n\r\n // Prevent this effect from being re-run unless we select an new image in this component.\r\n setImageSelected(false);\r\n setImage(newImage); // Set in component state so image can be viewed.\r\n setSelectedImage(newImage); // Set on parent component.\r\n }, [imageUploaded]);\r\n\r\n const label = props.label || Labels[props.imageType] || DEFAULT_LABEL;\r\n\r\n return (\r\n <div className='form-group'>\r\n <div className='form-control h-auto py-2'>\r\n <label>{label}</label>\r\n <em className='ml-1 text-muted'>\r\n {\r\n `(Minimum dimensions are ${ImageMinDimensions[props.imageType].width}px`\r\n + ` x ${ImageMinDimensions[props.imageType].height}px)`\r\n }\r\n </em>\r\n <FileSelect\r\n label={`Choose a ${label.toLowerCase()}`}\r\n name='image'\r\n mimeType={FileExtensions.IMAGES}\r\n onFileSelect={(files: FileList) => ImageSelectHelper.onFileSelect(props.imageType, files, onImageLoad)}\r\n />\r\n {!!image && !!image.url &&\r\n <>\r\n {!hideImage &&\r\n <div className={`pb-2 ${props.imageType === ImageType.Banners ? 'w-100' : 'w-50'}`}>\r\n <img src={ImageHelper.createUrl(image.url)} className='img img-fluid' />\r\n </div>\r\n }\r\n <div className='d-flex justify-content-center'>\r\n <SvgContainer\r\n svgName={hideImage ? cvSvgLibrary.ChevronDown : cvSvgLibrary.ChevronUp}\r\n size={SvgContainerSize.Large}\r\n className='svg-container cursor-pointer'\r\n onClick={() => setHideImage(!hideImage)}\r\n title={hideImage ? 'Show image' : 'Hide image'}\r\n tooltipPlacement='top'\r\n />\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","export * from './ImageSelect';","export * from './file-select';\r\nexport * from './image-select';","import * as React from 'react';\r\nimport Cropper from 'cropperjs';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\r\n\r\n/**\r\n * This enum maps to the viewMode option in the\r\n * Cropperjs documentation. \r\n * https://github.com/fengyuanchen/cropperjs\r\n */\r\nenum CropperViewMode {\r\n NoRestrictions = 0,\r\n RestrictToCanvas = 1\r\n}\r\n\r\nconst MIME_REGEX = /data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,.*/;\r\n\r\nconst getImageMimeType = (dataUrl: string) => {\r\n const mime = dataUrl.match(MIME_REGEX);\r\n\r\n if (!mime)\r\n return;\r\n\r\n return mime[1];\r\n};\r\n\r\ninterface ImageCropperProps {\r\n dataUrl: string;\r\n minHeight: number;\r\n minWidth: number;\r\n onCrop: (dataUrl: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport function ImageCropper(props: ImageCropperProps): React.ReactElement {\r\n const{ dataUrl, minHeight, minWidth, onCrop, onCancel } = props;\r\n\r\n const imageRef = React.useRef<HTMLImageElement>();\r\n const cropperRef = React.useRef<Cropper>();\r\n\r\n const [ imageLoaded, setImageLoaded ] = React.useState(false);\r\n const [ showSpinner, setShowSpinner ] = React.useState(false);\r\n\r\n const crop = () => {\r\n if (!imageLoaded)\r\n return;\r\n\r\n setShowSpinner(true);\r\n\r\n const croppedDataUrl = cropperRef.current.getCroppedCanvas().toDataURL(getImageMimeType(dataUrl));\r\n\r\n FunctionHelper.isFunction(onCrop) && onCrop(croppedDataUrl);\r\n };\r\n\r\n React.useEffect(() => {\r\n const image = new Image();\r\n image.src = dataUrl;\r\n\r\n const viewPortToImageRatio = imageRef.current.offsetWidth / image.width;\r\n\r\n cropperRef.current = new Cropper(imageRef.current, {\r\n viewMode: CropperViewMode.RestrictToCanvas,\r\n autoCropArea: 1, // Number between 0 and 1 that defines the initial cropper area as a percentage of the image.\r\n aspectRatio: minWidth / minHeight,\r\n minCropBoxWidth: minWidth * viewPortToImageRatio,\r\n minCropBoxHeight: minHeight * viewPortToImageRatio,\r\n ready: () => setImageLoaded(true)\r\n });\r\n\r\n return () => cropperRef.current.destroy();\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <img ref={imageRef} src={dataUrl} className='img img-fluid mw-100' />\r\n </div>\r\n <div className='d-flex justify-content-end border-top pt-3'>\r\n <Button variant='link' onClick={onCancel}>Cancel</Button>\r\n <SpinnerButton onClick={crop} disabled={!imageLoaded} showSpinner={showSpinner}>Crop</SpinnerButton>\r\n </div>\r\n </>\r\n );\r\n}","export * from './ImageCropper';","export * from './back-button';\r\nexport * from './checkbox';\r\nexport * from './forms';\r\nexport * from './image-cropper';\r\nexport * from './object-collection';\r\nexport * from './object-header';\r\nexport * from './object-list';\r\nexport * from './object-list-nav';\r\nexport * from './rating-select';\r\nexport * from './tabs';\r\nexport * from './tree';\r\nexport * from './tree-select';\r\nexport * from './video-list';\r\nexport * from './aliases';","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\r\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\r\n\r\nimport { ObjectList } from 'shared/components';\r\n\r\ninterface ObjectCollectionProps {\r\n collection: BasePaginatedCollection<BaseObject>;\r\n collectionAppLink: Core.AppLink;\r\n newObjectAppLink: Core.AppLink;\r\n getObjectAppLink: (obj: BaseObject) => Core.AppLink;\r\n objectName: string;\r\n}\r\n\r\nexport function ObjectCollection(props: ObjectCollectionProps): JSX.Element {\r\n if (!props.collection)\r\n return <></>;\r\n\r\n const { data, pagination } = props.collection;\r\n\r\n return (\r\n <>\r\n {!!data &&\r\n <ObjectList\r\n objects={data}\r\n getObjectAppLink={props.getObjectAppLink}\r\n newObjectAppLink={props.newObjectAppLink}\r\n objectName={props.objectName}\r\n />\r\n }\r\n {!!pagination && !!pagination.cursors &&\r\n <Pagination\r\n cursors={pagination.cursors}\r\n appLink={props.collectionAppLink}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './ObjectCollection';","import * as React from 'react';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\n\r\ninterface ObjectHeaderProps {\r\n object: BaseObject;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function ObjectHeader({ object, actions }: ObjectHeaderProps): JSX.Element {\r\n return (\r\n <div className='d-flex justify-content-between py-2'>\r\n {!!object && <h5>{object.name}</h5>}\r\n {!!actions && <span><Actions actions={actions} /></span>}\r\n </div>\r\n );\r\n}","export * from './ObjectHeader';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\ninterface ObjectListNavProps {\r\n objects: BaseObject[];\r\n getAppLink: (obj: BaseObject) => Core.AppLink;\r\n emptyMessage?: string;\r\n}\r\n\r\nObjectListNav.defaultProps = {\r\n emptyMessage: 'There is nothing here.'\r\n};\r\n\r\nexport function ObjectListNav({ objects, getAppLink, emptyMessage }: ObjectListNavProps): React.ReactElement {\r\n if (!objects)\r\n return <></>;\r\n\r\n if (!objects.length)\r\n return <div className='py-3'><p>{emptyMessage}</p></div>;\r\n\r\n return (\r\n <ul className='list-unstyled'>\r\n {objects.map((o, idx) =>\r\n <li key={idx} className='border rounded mb-3'>\r\n <AppLink appLink={getAppLink(o)} className='d-block p-3'>\r\n {o.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n );\r\n}","export * from './ObjectListNav';","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\ninterface ObjectItemProps {\r\n object: BaseObject;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nfunction ObjectItem(props: ObjectItemProps): JSX.Element {\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={props.appLink}>\r\n {props.object.name}\r\n </AppLink>\r\n </td>\r\n <td></td>\r\n </tr>\r\n );\r\n}\r\n\r\ninterface ObjectListProps {\r\n objects: BaseObject[];\r\n newObjectAppLink: Core.AppLink;\r\n getObjectAppLink: (obj: BaseObject) => Core.AppLink;\r\n objectName: string;\r\n}\r\n\r\nexport function ObjectList(props: ObjectListProps): JSX.Element {\r\n return (\r\n <Table responsive>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>\r\n <div className='d-flex justify-content-end'>\r\n <AppLink appLink={props.newObjectAppLink}>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>{`New ${props.objectName}`}</span>\r\n </AppLink>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.objects.map(o =>\r\n <ObjectItem key={o.id} object={o} appLink={props.getObjectAppLink(o)} />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","export * from './ObjectList';","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { Rating } from 'libs/shared/interfaces';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\n\r\nconst getRatingLabel = (rating: Rating) => `${rating.name}${rating.code ? ` (${rating.code})` : ''}`;\r\n\r\ntype ObjectWithRating<T extends object> = T & { rating: UpdateObjectRating };\r\n\r\ninterface RatingSelectProps {\r\n ratings: Rating[];\r\n disabled?: boolean;\r\n}\r\n\r\nexport function RatingSelect<T extends ObjectWithRating<{}>>(props: RatingSelectProps): JSX.Element {\r\n const formikProps = useFormikContext<T>();\r\n\r\n return (\r\n <FormField<T>\r\n as='select'\r\n label='Rating'\r\n name='rating'\r\n id='rating'\r\n value={formikProps.values.rating && formikProps.values.rating.id}\r\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>\r\n formikProps.setFieldValue('rating', e.target.value ? { id: e.target.value } : {})\r\n }\r\n disabled={props.disabled}\r\n >\r\n <>\r\n <option value={''}>Please select a rating</option>\r\n {props.ratings.map((rating, idx) =>\r\n <option key={idx} value={rating.id}>{getRatingLabel(rating)}</option>\r\n )}\r\n </>\r\n </FormField>\r\n );\r\n}","export * from './RatingSelect';","import * as React from 'react';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { NavHelper } from 'shared/utils';\r\n\r\nfunction getNavLinkClassName(isActive: boolean): string {\r\n const className = 'nav-link';\r\n\r\n if (!isActive)\r\n return className;\r\n\r\n return className + ' active';\r\n}\r\n\r\ninterface TabsProps {\r\n tabs: NavItem[];\r\n isItemActive?: (item: NavItem) => boolean;\r\n}\r\n\r\nTabs.defaultProps = {\r\n isItemActive: NavHelper.isItemActive\r\n};\r\n\r\nexport function Tabs({ tabs, isItemActive }: TabsProps): React.ReactElement {\r\n return (\r\n <Nav fill variant='tabs'>\r\n {tabs.map((tab, idx) =>\r\n <Nav.Item key={idx}>\r\n <AppLink appLink={tab.appLink} className={getNavLinkClassName(isItemActive(tab))}>\r\n {tab.label}\r\n </AppLink>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n );\r\n}","export * from './Tabs';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { Tree, TreeProps } from 'shared/components';\r\n\r\nimport { TreeSelectHelper, SelectedItems } from './TreeSelectHelper';\r\n\r\ninterface TreeSelectProps<T extends BaseTree<BaseObject>> extends TreeProps<T> {\r\n label?: string;\r\n hideCollapseBtn?: boolean;\r\n collapse?: boolean;\r\n noSelectionMessage?: string;\r\n isNodeDisabled?: (node: T) => boolean;\r\n getSelectedItemAppLink?: (itemId: string) => Core.AppLink;\r\n}\r\n\r\nexport function TreeSelect<T extends BaseTree<BaseObject>>(props: TreeSelectProps<T>): React.ReactElement {\r\n const {\r\n onSelect,\r\n label,\r\n hideCollapseBtn,\r\n collapse,\r\n noSelectionMessage,\r\n isNodeDisabled,\r\n getSelectedItemAppLink,\r\n ...otherProps\r\n } = props;\r\n\r\n const { tree, selectedIds } = otherProps;\r\n\r\n const [ selectedItems, setSelectedItems ] =\r\n React.useState<SelectedItems>(TreeSelectHelper.getState<T>(selectedIds, tree));\r\n\r\n React.useEffect(() => setSelectedItems(TreeSelectHelper.getState<T>(selectedIds, tree)), [ selectedIds, tree ]);\r\n\r\n const [ isCollapsed, setIsCollapsed ] = React.useState(!!collapse);\r\n\r\n React.useEffect(() => setIsCollapsed(!!collapse), [collapse]);\r\n\r\n const onSelectHandler = (item: T) => FunctionHelper.isFunction(onSelect) && onSelect(item);\r\n\r\n const showHeader = !hideCollapseBtn || !!label;\r\n\r\n return (\r\n <>\r\n {showHeader &&\r\n <div className='pb-2'>\r\n {!!label && <label className='m-0'>{label}</label>}\r\n {!hideCollapseBtn &&\r\n <a className='float-right cursor-pointer' onClick={() => setIsCollapsed(!isCollapsed)}>\r\n {isCollapsed ? 'Expand' : 'Collapse'}\r\n </a>\r\n }\r\n </div>\r\n }\r\n {!isCollapsed &&\r\n <div className='py-2 border-top'>\r\n <Tree onSelect={onSelectHandler} isDisabled={isNodeDisabled} {...otherProps} />\r\n </div>\r\n }\r\n {(!ObjectHelper.isEmpty(selectedItems) || !!noSelectionMessage) &&\r\n <div className='py-2 border-top'>\r\n <label>Selected:</label>\r\n <ul className='m-0'>\r\n {!ObjectHelper.isEmpty(selectedItems)\r\n ? Object.keys(selectedItems).map((key, idx) =>\r\n <li key={idx}>\r\n {FunctionHelper.isFunction(getSelectedItemAppLink)\r\n ? <AppLink appLink={getSelectedItemAppLink(key)}>{selectedItems[key]}</AppLink>\r\n : selectedItems[key]\r\n }\r\n </li>\r\n )\r\n : <li>{noSelectionMessage}</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","import { BaseObject } from 'libs/shared/interfaces';\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\ntype U = BaseTree<BaseObject>;\r\n\r\n/**\r\n * A map of selected items and the chord of their location.\r\n * e.g. {\r\n * 'xyx': 'Science -> Physics'\r\n * }\r\n */\r\nexport interface SelectedItems {\r\n [id: string]: string;\r\n}\r\n\r\nexport const TreeSelectHelper = {\r\n getChord<T extends U>(tree: T, item: T): string {\r\n return TreeHelper.getPath(tree, item).map(i => i.name).join(' -> ');\r\n },\r\n\r\n getState<T extends U>(selectedIds: string[], tree: T): SelectedItems {\r\n let selectedItems = {};\r\n\r\n Array.isArray(selectedIds) && selectedIds.forEach(id => {\r\n const item = TreeHelper.find(tree, id);\r\n\r\n if (item)\r\n selectedItems = { [id]: TreeSelectHelper.getChord(tree, item), ...selectedItems };\r\n });\r\n\r\n return selectedItems;\r\n }\r\n};","export * from './TreeSelect';","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\n\r\nimport { TreeNode, TreeNodeAction } from './TreeNode';\r\nimport styles from './tree.scss';\r\n\r\nexport interface TreeProps<T extends BaseTree<BaseObject>> {\r\n tree: T;\r\n selectedIds?: string[];\r\n getAppLink?: (item: T) => Core.AppLink;\r\n onSelect?: (item: T) => void;\r\n isDisabled?: (item: T) => boolean;\r\n actions?: TreeNodeAction<T>[];\r\n}\r\n\r\nexport function Tree<T extends BaseTree<BaseObject>>(props: TreeProps<T>): React.ReactElement {\r\n const { tree, ...childProps } = props;\r\n\r\n if (!tree || !tree.children)\r\n return <></>;\r\n\r\n return (\r\n <ul className={`m-0 p-0 ${styles.tree}`}>\r\n {tree.children.map(child => <TreeNode key={child.id} tree={child} {...childProps} />)}\r\n </ul>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\n\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { StringHelper, TreeHelper } from 'shared/utils';\r\nimport { BaseTree } from 'shared/interfaces';\r\n\r\nimport { Tree } from './Tree';\r\nimport { TreeNodeLink } from './TreeNodeLink';\r\nimport styles from './tree.scss';\r\n\r\nexport interface TreeNodeAction<T extends BaseTree<BaseObject>> {\r\n label: string;\r\n getAppLink: (node: T) => Core.AppLink;\r\n className?: string;\r\n}\r\n\r\ninterface TreeNodeProps<T extends BaseTree<BaseObject>> {\r\n tree: T;\r\n selectedIds?: string[];\r\n getAppLink?: (item: T) => Core.AppLink;\r\n onSelect?: (item: T) => void;\r\n isDisabled?: (item: T) => boolean;\r\n actions?: TreeNodeAction<T>[];\r\n}\r\n\r\nexport function TreeNode<T extends BaseTree<BaseObject>>(props: TreeNodeProps<T>): React.ReactElement {\r\n const { tree, selectedIds, getAppLink, onSelect, isDisabled, actions } = props;\r\n\r\n const isSelected = Array.isArray(selectedIds) && selectedIds.some(id => StringHelper.isEqual(tree.id, id));\r\n\r\n const isParentOfSelected = React.useMemo(() =>\r\n Array.isArray(selectedIds) && selectedIds.some(id => TreeHelper.find(tree, id)), [ tree, selectedIds ]);\r\n\r\n const [ isExpanded, setIsExpanded ] = React.useState(isParentOfSelected);\r\n\r\n const hasChildren = !!tree.children && !!tree.children.length;\r\n\r\n const linkProps = {\r\n name: tree.name,\r\n appLink: FunctionHelper.isFunction(getAppLink) ? getAppLink(tree) : null,\r\n onSelect: FunctionHelper.isFunction(onSelect) ? (() => onSelect(tree)) : null,\r\n isDisabled: FunctionHelper.isFunction(isDisabled) ? isDisabled(tree) : false,\r\n className: isSelected && styles.selected || isParentOfSelected && styles.parentOfSelected,\r\n actions: !!actions && actions.map(a => ({ ...a, appLink: a.getAppLink(tree) }))\r\n };\r\n\r\n return (\r\n <li className={`position-relative${isExpanded ? '' : ` ${styles.collapsed}`}`}>\r\n <div className='position-relative'>\r\n <span className={styles.node}>\r\n {hasChildren &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.ChevronDown}\r\n size={SvgContainerSize.Small}\r\n className={`svg-container ${styles.chevron}`}\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n />\r\n }\r\n <TreeNodeLink {...linkProps} />\r\n </span>\r\n {isExpanded && <Tree {...props} />}\r\n </div>\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from 'libs/common/core';\r\nimport { Actions, ActionOptions } from 'libs/shared/components/actions/Actions';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\n\r\nimport styles from './tree.scss';\r\n\r\ninterface TreeNodeLinkProps {\r\n name: string;\r\n appLink?: Core.AppLink;\r\n onSelect?: () => void;\r\n className?: string;\r\n isDisabled?: boolean;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function TreeNodeLink(props: TreeNodeLinkProps): React.ReactElement {\r\n const { name, appLink, onSelect, isDisabled, className, actions } = props;\r\n\r\n let textClassName = styles.text;\r\n\r\n if (className)\r\n textClassName += ` ${className}`;\r\n\r\n if (isDisabled)\r\n return <a className={`${textClassName} text-muted ${styles.disabled}`}>{name}</a>;\r\n\r\n return (\r\n <>\r\n {appLink\r\n ? <AppLink appLink={appLink} className={textClassName}>{name}</AppLink>\r\n : <a onClick={onSelect} className={textClassName}>{name}</a>\r\n }\r\n {!!actions && <Actions className={styles.actions} actions={actions} />}\r\n </>\r\n );\r\n}","export * from './Tree';\r\nexport * from './TreeNode';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tree\":\"cv--tree--1abau\",\"text\":\"cv--text--f13wK\",\"chevron\":\"cv--chevron--25eVA\",\"disabled\":\"cv--disabled--1qyCo\",\"parentOfSelected\":\"cv--parentOfSelected--1fgN6\",\"selected\":\"cv--selected--cVZit\",\"actions\":\"cv--actions--2BGWp\",\"node\":\"cv--node--rJVbQ\",\"collapsed\":\"cv--collapsed--vc2by\"};","import * as React from 'react';\r\nimport { SortableContainer, SortStart, SortEnd } from 'react-sortable-hoc';\r\nimport { Table } from 'react-bootstrap';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\n\r\nimport { VideoListItems, VideoListProps, VideoListHeader } from './VideoList';\r\n\r\nimport styles from './video-list.scss';\r\n\r\ntype ForwardRefProps = { forwardedRef: React.MutableRefObject<HTMLTableSectionElement> };\r\n\r\nconst SortableList = SortableContainer(({ forwardedRef, ...props }: VideoListProps & ForwardRefProps) =>\r\n <VideoListItems sortable ref={forwardedRef} {...props} />\r\n);\r\n\r\n/**\r\n * Remove the styles.sortingContainer class from the container\r\n * Set the width of the td elements in the cloned tr\r\n */\r\nconst handleSortStart = (ref: React.MutableRefObject<HTMLTableSectionElement>) => ({ node }: SortStart) => {\r\n const tbody = ref.current;\r\n\r\n if (!tbody)\r\n return;\r\n\r\n tbody.classList.add(styles.sortingContainer);\r\n\r\n const draggedEl = tbody.querySelector(`.${styles.draggedVideoItem}`);\r\n\r\n node.childNodes.forEach((td: HTMLTableCellElement, idx) =>\r\n (draggedEl.childNodes[idx] as HTMLTableCellElement ).style.width = `${td.offsetWidth}px`\r\n );\r\n};\r\n\r\n/**\r\n * Add the styles.sortingContainer class from the container\r\n * Call the onSortEnd prop\r\n */\r\nconst handleSortEnd = (\r\n ref: React.MutableRefObject<HTMLTableSectionElement>, onSortEnd: (oldIdx: number, newIdx: number) => void\r\n) => (sort: SortEnd) => {\r\n const containerEl = ref.current;\r\n\r\n if (containerEl)\r\n containerEl.classList.remove(styles.sortingContainer);\r\n\r\n onSortEnd(sort.oldIndex, sort.newIndex);\r\n};\r\n\r\ninterface SortableVideoListProps {\r\n onSortEnd: (oldIdx: number, newIdx: number) => void;\r\n}\r\n\r\nSortableVideoList.defaultProps = {\r\n emptyMessage: 'There are no videos in this list.'\r\n};\r\n\r\nexport function SortableVideoList(props: SortableVideoListProps & VideoListProps): React.ReactElement {\r\n const { onSortEnd, emptyMessage, ...videoListProps } = props;\r\n\r\n const ref = React.useRef<HTMLTableSectionElement>();\r\n\r\n if (CollectionHelper.isEmpty(props.videos))\r\n return <div>{emptyMessage}</div>;\r\n\r\n return (\r\n <Table responsive>\r\n <VideoListHeader sortable {...props} />\r\n <SortableList\r\n forwardedRef={ref}\r\n onSortStart={handleSortStart(ref)}\r\n onSortEnd={handleSortEnd(ref, onSortEnd)}\r\n lockAxis='y'\r\n lockToContainerEdges\r\n distance={1} // This allows mousedown/click events to be consumed before sorting is triggered.\r\n helperClass={styles.draggedVideoItem}\r\n helperContainer={() => ref.current} // this is the <tbody> in <VideoList />\r\n {...videoListProps}\r\n />\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { SortableElement } from 'react-sortable-hoc';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { Video } from 'libs/shared/interfaces';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { ActionGenerator, Actions } from 'libs/shared/components/actions/Actions';\r\n\r\nconst getClassName = (additionalClassName: string) => {\r\n let className = 'bg-white';\r\n\r\n if (additionalClassName)\r\n className += ` ${additionalClassName}`;\r\n\r\n return className;\r\n};\r\n\r\ninterface VideoItemProps {\r\n video: Video;\r\n getVideoAppLink?: (video: Video) => Core.AppLink;\r\n getVideoActions?: ActionGenerator;\r\n className?: string;\r\n sortable?: boolean;\r\n itemNumber?: number;\r\n}\r\n\r\nexport function VideoItem(props: VideoItemProps): React.ReactElement {\r\n const { video, getVideoAppLink, getVideoActions, className = '', itemNumber } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getVideoAppLink) && getVideoAppLink(video);\r\n\r\n return (\r\n <tr className={getClassName(className)}>\r\n {!!itemNumber &&\r\n <td>\r\n <span>{itemNumber}</span>\r\n </td>\r\n }\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={appLink}>{video.name}</AppLink>\r\n : video.name\r\n }\r\n </td>\r\n {FunctionHelper.isFunction(getVideoActions) &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={getVideoActions(video)} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}\r\n\r\nexport const SortableVideoItem = SortableElement((props: VideoItemProps) => <VideoItem sortable {...props} />);","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from 'libs/common/core';\r\nimport { VideoCollection, Video } from 'libs/shared/interfaces';\r\nimport { CollectionHelper } from 'libs/shared/utils/CollectionHelper';\r\nimport { ActionGenerator } from 'libs/shared/components/actions/Actions';\r\n\r\nimport { SortableVideoItem, VideoItem } from './VideoItem';\r\nimport styles from './video-list.scss';\r\n\r\nexport interface VideoListProps {\r\n videos: VideoCollection;\r\n getVideoAppLink?: (video: Video) => Core.AppLink;\r\n getVideoActions?: ActionGenerator;\r\n sortable?: boolean;\r\n emptyMessage?: string;\r\n}\r\n\r\nexport const VideoListHeader = ({ sortable, getVideoActions }: VideoListProps) => (\r\n <thead>\r\n <tr>\r\n {!!sortable && <th>#</th>}\r\n <th>Name</th>\r\n {!!getVideoActions && <th></th>}\r\n </tr>\r\n </thead>\r\n);\r\n\r\nexport const VideoListItems = React.forwardRef(\r\n ({ videos, sortable, ...childProps }: VideoListProps, ref: React.MutableRefObject<HTMLTableSectionElement>) => (\r\n <tbody ref={ref}>\r\n {!CollectionHelper.isEmpty(videos) && videos.data.map((v, idx) =>\r\n sortable\r\n ? <SortableVideoItem\r\n key={v.id}\r\n index={idx}\r\n itemNumber={idx + 1}\r\n video={v}\r\n className={styles.draggableVideoItem}\r\n {...childProps}\r\n />\r\n : <VideoItem video={v} {...childProps} />\r\n )}\r\n </tbody>\r\n )\r\n);\r\n\r\nVideoList.defaultProps = {\r\n emptyMessage: 'There are no videos in this list.'\r\n};\r\n\r\nexport function VideoList({ emptyMessage, ...props }: VideoListProps): JSX.Element {\r\n return (\r\n !CollectionHelper.isEmpty(props.videos)\r\n ? <Table responsive>\r\n <VideoListHeader {...props} />\r\n <VideoListItems {...props} />\r\n </Table>\r\n : <div>{emptyMessage}</div>\r\n );\r\n}","export * from './SortableVideoList';\r\nexport { VideoList } from './VideoList';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"draggableVideoItem\":\"cv--draggableVideoItem--1JMCe\",\"draggedVideoItem\":\"cv--draggedVideoItem--3jjle\"};","const SHARED_ACTIONS = {\r\n UPLOAD_IMAGE: 'upload:image'\r\n};\r\n\r\nexport const Actions = {\r\n Subjects: {\r\n SUBJECTS: 'subjects',\r\n NEW_SUBJECT: 'new:subject',\r\n EDIT_SUBJECT: 'edit:subject',\r\n EDIT_SUBJECT_PLAYLISTS: 'edit:subject:playlists',\r\n EDIT_SUBJECT_SERIES: 'edit:subject:series',\r\n EDIT_SUBJECT_VIDEOS: 'edit:subject:videos',\r\n SUBJECT_CLASSIFICATIONS: 'subject:classifications',\r\n DELETE_SUBJECT: 'delete:subject',\r\n ADD_SUBJECT_MEMBERS: 'add:subject:members',\r\n REMOVE_SUBJECT_MEMBER: 'remove:subject:member',\r\n\r\n CLASSIFICATIONS: 'classifications',\r\n PRESENTATION_CLASSIFICATIONS: 'presentation:classifications',\r\n NEW_CLASSIFICATION: 'new:classification',\r\n EDIT_CLASSIFICATION: 'edit:classification',\r\n EDIT_CLASSIFICATION_PLAYLISTS: 'edit:classification:playlists',\r\n EDIT_CLASSIFICATION_SERIES: 'edit:classification:series',\r\n EDIT_CLASSIFICATION_VIDEOS: 'edit:classification:videos',\r\n DELETE_CLASSIFICATION: 'delete:classification',\r\n REMOVE_CLASSIFICATION_MEMBER: 'remove:classification:member',\r\n\r\n LEVELS: 'levels',\r\n NEW_LEVEL: 'new:level',\r\n EDIT_LEVEL: 'edit:level',\r\n\r\n AUDIENCES: 'audiences',\r\n PRESENTATION_AUDIENCES: 'presentation:audiences',\r\n NEW_AUDIENCE: 'new:audience',\r\n EDIT_AUDIENCE: 'edit:audience',\r\n DELETE_AUDIENCE: 'delete:audience',\r\n\r\n PRESENTATIONS: 'presentations',\r\n NEW_PRESENTATION: 'new:presentation',\r\n EDIT_PRESENTATION: 'edit:presentation',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Playlists: {\r\n PLAYLISTS: 'index',\r\n SEARCH_PLAYLISTS: 'search:playlists',\r\n NEW_PLAYLIST: 'new:playlist',\r\n EDIT_PLAYLIST: 'edit:playlist',\r\n EDIT_PLAYLIST_VIDEOS: 'edit:playlist:videos',\r\n EDIT_PLAYLIST_SUBJECTS: 'edit:playlist:subjects',\r\n EDIT_PLAYLIST_AUDIENCES: 'edit:playlist:audiences',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n\r\n REMOVE_VIDEO: 'remove:video',\r\n\r\n REMOVE_FROM_SUBJECT: 'remove:from:subject',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Series: {\r\n EDIT_SERIES: 'edit:series',\r\n EDIT_SERIES_VIDEOS: 'edit:series:videos',\r\n EDIT_SERIES_SUBJECTS: 'edit:series:subjects',\r\n EDIT_SERIES_AUDIENCES: 'edit:series:audiences',\r\n\r\n LEGACY_EDIT_SERIES: 'legacy:edit:series',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Videos: {\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_VIDEO_AUDIENCES: 'edit:video:audiences',\r\n EDIT_VIDEO_SUBJECTS: 'edit:video:subjects',\r\n EDIT_VIDEO_ALIASES: 'edit:video:aliases',\r\n\r\n LEGACY_EDIT_VIDEO: 'legacy:edit:video',\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n DomainOptions: {\r\n DOMAIN_OPTIONS: 'domain:options',\r\n NEW_DOMAIN_OPTION: 'new:domain:option',\r\n EDIT_DOMAIN_OPTION: 'edit:domain:option',\r\n DELETE_DOMAIN_OPTION: 'delete:domain:option'\r\n },\r\n\r\n People: {\r\n PEOPLE: 'people',\r\n NEW_PERSON: 'new:person',\r\n EDIT_PERSON: 'edit:person'\r\n },\r\n\r\n Companies: {\r\n COMPANIES: 'companies',\r\n NEW_COMPANY: 'new:company',\r\n EDIT_COMPANY: 'edit:company'\r\n },\r\n\r\n Themes: {\r\n THEMES: 'themes',\r\n NEW_THEME: 'new:theme',\r\n EDIT_THEME: 'edit:theme',\r\n DELETE_THEME: 'delete:theme',\r\n\r\n ...SHARED_ACTIONS\r\n }\r\n};","export const DataPrefixes = {\r\n SUBJECT: 'subject',\r\n SUBJECTS: 'subjects',\r\n UPDATE_SUBJECT: 'update:subject',\r\n DELETE_SUBJECT: 'delete:subject',\r\n UPDATE_OBJECT_SUBJECTS: 'update:object:subjects',\r\n ADD_TO_SUBJECT: 'add:to:subject',\r\n REMOVE_FROM_SUBJECT: 'remove:from:subject',\r\n\r\n CLASSIFICATION: 'classification',\r\n CLASSIFICATIONS: 'classifications',\r\n UPDATE_CLASSIFICATION: 'update:classification',\r\n DELETE_CLASSIFICATION: 'delete:classification',\r\n UPDATE_OBJECT_CLASSIFICATIONS: 'update:object:classifications',\r\n ADD_TO_CLASSIFICATION: 'add:to:classification',\r\n REMOVE_FROM_CLASSIFICATION: 'remove:from:classification',\r\n\r\n PRESENTATION: 'presentation',\r\n PRESENTATIONS: 'presentations',\r\n UPDATE_PRESENTATION: 'update:presentation',\r\n\r\n LEVEL: 'level',\r\n LEVELS: 'levels',\r\n UPDATE_LEVEL: 'update:level',\r\n ADD_TO_LEVEL: 'add:to:level',\r\n REMOVE_FROM_LEVEL: 'remove:from:level',\r\n UPDATE_OBJECT_LEVELS: 'update:object:levels',\r\n\r\n AUDIENCE: 'audience',\r\n AUDIENCES: 'audiences',\r\n UPDATE_AUDIENCE: 'update:audience',\r\n DELETE_AUDIENCE: 'delete:audience',\r\n UPDATE_OBJECT_AUDIENCES: 'update:object:audiences',\r\n\r\n PLAYLIST: 'playlist',\r\n PLAYLISTS: 'playlists',\r\n UPDATE_PLAYLIST: 'update:playlist',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n PLAYLIST_VIDEOS: 'playlist:videos',\r\n REORDER_PLAYLIST_VIDEOS: 'reorder:playlist:videos',\r\n REMOVE_PLAYLIST_VIDEO: 'remove:playlist:video',\r\n\r\n VIDEO: 'video',\r\n\r\n SERIES: 'series',\r\n SERIES_BY_ID: 'series:by:id',\r\n UPDATE_SERIES: 'update:series',\r\n\r\n CURRENT_USER: 'current:user',\r\n\r\n UPLOAD_IMAGE: 'upload:image',\r\n\r\n LOCALE: 'locale',\r\n PHRASES: 'PHRASES'\r\n};","const imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\r\n\r\nexport const FileExtensions = {\r\n IMAGES: `.${imageExtensions.join(',.')}`\r\n};","export const Layouts = {\r\n CURATOR_LAYOUT: 'CuratorLayout'\r\n};","export const AppChannels = {\r\n COMPANIES: 'companies:application',\r\n DOMAIN_OPTIONS: 'domain:options:application',\r\n PEOPLE: 'people:application',\r\n PLAYLISTS: 'playlists:application',\r\n SERIES: 'series:application',\r\n SUBJECTS: 'subjects:application',\r\n THEMES: 'themes:application',\r\n VIDEOS: 'videos:application'\r\n};\r\n\r\nexport const DataChannels = {\r\n IMAGE_UPLOAD: 'image:upload:data:service',\r\n SUBJECT: 'subject:data:service',\r\n LANGUAGE: 'language:data:service'\r\n};","export const DataServices = {\r\n IMAGE_UPLOAD: 'ImageUploadDataService',\r\n SUBJECT: 'SubjectDataService',\r\n LANGUAGE: 'LanguageDataService'\r\n};","export * from './CuratorActions';\r\nexport * from './DataPrefixes';\r\nexport * from './FileExtensions';\r\nexport * from './Layouts';\r\nexport * from './RadioChannels';\r\nexport * from './Services';","import * as React from 'react';\r\n\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\n/**\r\n * This context is used for transferring image\r\n * data between different areas of the application.\r\n * \r\n * It stores base64 image files that have been read \r\n * in from ImageSelect component for the purpose of\r\n * being cropped and uploaded in ImageUploadView.\r\n * \r\n * Image objects uploaded in ImageUploadView can then be\r\n * stored in the context for use in the component\r\n * that initially requested the upload.\r\n */\r\ninterface IImageStorageContext {\r\n /**\r\n * Retrieve the stored base64 dataUrl. This will\r\n * reset the stored value after it is read.\r\n */\r\n getDataUrl: () => string;\r\n\r\n /**\r\n * Set the stored dataUrl.\r\n */\r\n setDataUrl: (dataUrl: string) => void;\r\n\r\n /**\r\n * Retrieve the stored image object. This will\r\n * reset the stored image object.\r\n */\r\n getImage: () => Image;\r\n\r\n /**\r\n * Store an image after it has been successfully\r\n * uploaded.\r\n */\r\n setImage: (image: Image) => void;\r\n\r\n /**\r\n * Flag to notify anything using this context\r\n * that an image has been uploaded.\r\n */\r\n imageUploaded: boolean;\r\n}\r\n\r\nexport const ImageStorageContext = React.createContext<IImageStorageContext>(undefined);\r\n\r\nexport const ImageStorageContextProvider = ({ children }: React.PropsWithChildren<{}>) => {\r\n const [ dataUrl, setDataUrl ] = React.useState<string>();\r\n const [ imageUploaded, setImageUploaded ] = React.useState(false);\r\n const [ image, setImage ] = React.useState<Image>();\r\n\r\n const getDataUrl = () => {\r\n const url = dataUrl;\r\n\r\n setDataUrl(null);\r\n\r\n return url;\r\n };\r\n\r\n const storeImage = (_image: Image) => {\r\n setImage(_image);\r\n setImageUploaded(true);\r\n };\r\n\r\n const getImage = () => {\r\n const _image = image;\r\n\r\n setImage(null);\r\n setImageUploaded(false);\r\n\r\n return _image;\r\n };\r\n\r\n const context = { getDataUrl, setDataUrl, imageUploaded, getImage, setImage: storeImage };\r\n\r\n return (\r\n <ImageStorageContext.Provider value={context}>\r\n {children}\r\n </ImageStorageContext.Provider>\r\n );\r\n};","export * from './ImageStorageContext';","export enum CurationStatus {\r\n Draft = 0,\r\n Published = 1,\r\n Archived = 2,\r\n Pending = 3,\r\n Rejected = 4,\r\n Processing = 5,\r\n}","/**\r\n * The values in this enum directly\r\n * map to the group names in Master.\r\n */\r\nexport enum CuratorGroup {\r\n Developer = 'Curator Devs',\r\n Content = 'Content',\r\n Curator = 'Curators',\r\n Support = 'Support',\r\n SalesSupport = 'Sales Support'\r\n}","export * from './CuratorGroup';","import { Flight } from 'libs/common/flight';\r\nimport { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\r\nimport { CreateAliasRequest } from 'shared/interfaces';\r\n\r\nexport const AliasesRequests = {\r\n getAliases(id: string) : Flight.Request {\r\n return {\r\n key: `aliases:${id}`,\r\n url: `/api/master/v2/objects/${id}/aliases`\r\n };\r\n },\r\n createAlias(id: string, data: CreateAliasRequest, success: () => void, error: () => void) : Flight.Request {\r\n return {\r\n key: `create:alias`,\r\n url: `/api/master/v2/objects/${id}/aliases`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: `aliases:${id}`,\r\n data,\r\n success,\r\n error\r\n };\r\n },\r\n deleteAlias(videoId: string, id: string, success: () => void, error: () => void): Flight.Request {\r\n return {\r\n key: `delete:alias`,\r\n url: `/api/domain/v2/objects/${videoId}/aliases/${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: `aliases:${videoId}`,\r\n success,\r\n error\r\n };\r\n }\r\n};","import { Flight } from 'libs/common/flight';\r\n\r\nconst endpoints = {\r\n ratings: () => `/api/domain/v2/me/ratings`\r\n};\r\n\r\nconst DataPrefixes = {\r\n RATINGS: 'ratings'\r\n};\r\n\r\nexport const RatingRequests = {\r\n ratings(): Flight.Request {\r\n return {\r\n url: endpoints.ratings(),\r\n key: DataPrefixes.RATINGS\r\n };\r\n }\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ReactLayoutView, ReactLayoutViewOptions } from 'libs/common/react/core/ReactLayoutView';\r\nimport { LayoutRegions } from 'libs/shared/constants/LayoutRegions';\r\n\r\nimport { LayoutComponent, LayoutComponentProps } from 'shared/layouts';\r\n\r\nimport CuratorLayoutTemplate from './CuratorLayout.hbs';\r\nimport styles from './curator-layout.scss';\r\n\r\nexport interface CuratorLayoutViewOptions extends ReactLayoutViewOptions {\r\n provider?: (props: React.PropsWithChildren<{}>) => React.ReactElement;\r\n getTopNavView?: (currentAppLink: Core.AppLink) => React.ReactElement;\r\n}\r\n\r\nexport abstract class CuratorLayoutView extends ReactLayoutView {\r\n protected options: CuratorLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: CuratorLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'CuratorLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return CuratorLayoutTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `container-fluid ${styles.curatorLayout}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: '.layout-region'\r\n };\r\n }\r\n\r\n public static getCacheKey(options: CuratorLayoutViewOptions): string {\r\n let ck = `${this.name}`;\r\n\r\n const optionKeys: string[] = [];\r\n\r\n Object.keys(options).forEach((key: keyof CuratorLayoutViewOptions) => {\r\n optionKeys.push(`${key}:${options[key]}`);\r\n });\r\n\r\n if (optionKeys.length) {\r\n optionKeys.sort();\r\n ck += `:${optionKeys.join(':')}`;\r\n }\r\n\r\n return ck;\r\n }\r\n\r\n private getChildComponents(): LayoutComponentProps {\r\n return {\r\n topNav: {\r\n component: this.childComponents[LayoutRegions.TOP_NAV],\r\n className: styles.topNavRegion\r\n },\r\n leftNav: {\r\n component: this.childComponents[LayoutRegions.LEFT_NAV],\r\n className: `py-3 ${styles.leftNavRegion}`\r\n },\r\n content: {\r\n component: this.childComponents[LayoutRegions.CONTENT],\r\n className: 'position-relative container py-3'\r\n },\r\n popup: {\r\n component: this.childComponents[LayoutRegions.POPUP]\r\n },\r\n alert: {\r\n component: this.childComponents[LayoutRegions.ALERT]\r\n }\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderTopNav(): void {\r\n if (!FunctionHelper.isFunction(this.options.getTopNavView))\r\n return;\r\n\r\n this.childComponents[LayoutRegions.TOP_NAV] = this.options.getTopNavView(Core.AppLinkHelper.getCurrentAppLink());\r\n }\r\n\r\n public hideLeftNav(): void {\r\n this.unsetRegion(LayoutRegions.LEFT_NAV);\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderTopNav();\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n const props = { provider: this.options.provider, ...this.getChildComponents() };\r\n\r\n super.showChildView('layout', this.wrapWithStore(<LayoutComponent {...props} />));\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"curatorLayout\":\"cv--curatorLayout--XayF7\",\"topNavRegion\":\"cv--topNavRegion--3ewaZ\",\"leftNavRegion\":\"cv--leftNavRegion--2c2o6\"};","export * from './CuratorLayoutView';","export * from './curator-layout';\r\nexport * from './primitives';","import * as React from 'react';\r\n\r\ninterface LayoutRegionComponentProps {\r\n className?: string;\r\n}\r\n\r\nconst LayoutRegionComponent = (props: React.PropsWithChildren<LayoutRegionComponentProps>): React.ReactElement => {\r\n const { className, children } = props;\r\n\r\n return (\r\n <div className={className}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst getClassName = (baseClassName: string, additionalClassNames?: string) =>\r\n `${baseClassName}${additionalClassNames ? ` ${additionalClassNames}` : ''}`;\r\n\r\ninterface LayoutItem {\r\n component: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport interface LayoutComponentProps {\r\n topNav?: LayoutItem;\r\n leftNav?: LayoutItem;\r\n content?: LayoutItem;\r\n popup?: LayoutItem;\r\n alert?: LayoutItem;\r\n}\r\n\r\nconst LayoutComponent = (props: LayoutComponentProps): React.ReactElement => {\r\n const { topNav, leftNav, content, popup, alert } = props;\r\n\r\n return (\r\n <>\r\n <div className='position-relative'>\r\n {!!topNav.component &&\r\n <LayoutRegionComponent className={getClassName('top-nav-region', topNav.className)}>\r\n {topNav.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!leftNav.component &&\r\n <LayoutRegionComponent className={getClassName('left-nav-region', leftNav.className)}>\r\n {leftNav.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!content.component &&\r\n <div className='content-container'>\r\n <LayoutRegionComponent className={getClassName('content-region', content.className)}>\r\n {content.component}\r\n </LayoutRegionComponent>\r\n </div>\r\n }\r\n </div>\r\n {!!popup.component &&\r\n <LayoutRegionComponent className={getClassName('popup-region', popup.className)}>\r\n {popup.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!alert.component &&\r\n <LayoutRegionComponent className={getClassName('alert-region', alert.className)}>\r\n {alert.component}\r\n </LayoutRegionComponent>\r\n }\r\n </>\r\n );\r\n};\r\n\r\ninterface WithProviderProps extends LayoutComponentProps {\r\n provider?: (props: React.PropsWithChildren<{}>) => React.ReactElement;\r\n}\r\n\r\nconst LayoutComponentWithProvider = (props: WithProviderProps): React.ReactElement => {\r\n const { provider: Provider, ...layoutComponentProps } = props;\r\n\r\n if (!Provider)\r\n return <LayoutComponent {...layoutComponentProps} />;\r\n\r\n return (\r\n <Provider>\r\n <LayoutComponent {...layoutComponentProps} />\r\n </Provider>\r\n );\r\n};\r\n\r\nexport { LayoutComponentWithProvider as LayoutComponent };","export * from './LayoutComponent';","import { Core } from 'libs/common/core';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\n\r\n// Mapping of AppChannels to nav item text.\r\ninterface NavItemMappings {\r\n [appChannel: string]: string;\r\n}\r\n\r\ninterface CuratorAppNavServiceOptions {\r\n navSelector: string;\r\n currentItemClassName: string;\r\n navItemMappings: NavItemMappings;\r\n}\r\n\r\nexport class CuratorAppNavService extends Core.Service {\r\n protected options: CuratorAppNavServiceOptions;\r\n private currentApplication: string;\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTING_END, this.updateNav);\r\n }\r\n\r\n public get name(): string {\r\n return 'CuratorAppNavService';\r\n }\r\n\r\n private updateNav(): void {\r\n const currentApp = Core.AppLinkHelper.getCurrentAppLink().application;\r\n\r\n if (currentApp === this.currentApplication)\r\n return;\r\n\r\n this.currentApplication = currentApp;\r\n\r\n const currentNavItemTitle = this.options.navItemMappings[currentApp];\r\n\r\n if (!currentNavItemTitle)\r\n return;\r\n\r\n const nav = document.querySelector(this.options.navSelector);\r\n\r\n if (!nav || !nav.children)\r\n return;\r\n\r\n /**\r\n * This assumes that nav will be a list of elements, each of which has a nested <a>.\r\n * e.g. ul > li > a\r\n */\r\n [...nav.children].forEach(el => {\r\n const a = el.querySelector('a');\r\n\r\n if (!a)\r\n return;\r\n\r\n a.classList.remove(this.options.currentItemClassName);\r\n\r\n if (a.text === currentNavItemTitle)\r\n a.classList.add(this.options.currentItemClassName);\r\n });\r\n }\r\n}","import { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { Image } from 'libs/shared/interfaces';\r\n\r\nimport { DataServices, DataPrefixes, DataChannels } from 'shared/constants';\r\n\r\nexport class ImageUploadDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.IMAGE_UPLOAD;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.IMAGE_UPLOAD;\r\n }\r\n\r\n public uploadBase64Image(\r\n dataUrl: string,\r\n type: ImageType,\r\n callback?: (data: Image) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create({\r\n resource: `/api/image/upload?type=${type}`,\r\n eventPrefix: DataPrefixes.UPLOAD_IMAGE,\r\n data: dataUrl,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\r\nimport { ConcurrencyHelper } from 'libs/common/backbone/utils/ConcurrencyHelper';\r\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\ninterface LanguageConfig {\r\n locale: string;\r\n phrases: any;\r\n}\r\n\r\nexport class LanguageDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.LANGUAGE;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.LANGUAGE;\r\n }\r\n\r\n public getLanguageConfig(callback?: (languageConfig: LanguageConfig) => void): void {\r\n const languageConfig: LanguageConfig = { locale: 'en', phrases: {} };\r\n\r\n const asyncCounter = new ConcurrencyHelper(3);\r\n\r\n const dataServiceCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n callback(languageConfig);\r\n };\r\n\r\n this.get<string>({\r\n resource: '/api/locale',\r\n eventPrefix: DataPrefixes.LOCALE,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (locale: string) => {\r\n languageConfig.locale = locale;\r\n dataServiceCallback();\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases/shared',\r\n eventPrefix: `${DataPrefixes.PHRASES}:shared`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (phrases: any) => {\r\n if (phrases.shared === null)\r\n phrases.shared = {};\r\n\r\n languageConfig.phrases = {\r\n ...languageConfig.phrases,\r\n ...phrases\r\n };\r\n dataServiceCallback();\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases/subjects',\r\n eventPrefix: `${DataPrefixes.PHRASES}:subjects`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (phrases: any) => {\r\n if (phrases.subjects === null)\r\n phrases.subjects = {};\r\n\r\n languageConfig.phrases = {\r\n ...languageConfig.phrases,\r\n ...phrases\r\n };\r\n dataServiceCallback();\r\n }\r\n });\r\n }\r\n}","export * from './CuratorAppNavService';\r\nexport * from './ImageUploadDataService';\r\nexport * from './LanguageDataService';","import { LegacyPagination, Cursors } from 'libs/common/backbone/interfaces';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { TypeHelper } from 'libs/common/react/utils/TypeHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\ninterface LegacyPaginatedCollection {\r\n data: BaseObject[];\r\n pagination: LegacyPagination;\r\n}\r\n\r\nfunction convertLegacyPaginationToCursors(pagination: LegacyPagination): Cursors {\r\n const { page, totalPages } = pagination;\r\n\r\n const nextPage = TypeHelper.isNumber(page) && page > 0 && page < totalPages && page + 1;\r\n const prevPage = TypeHelper.isNumber(page) && page > 1 && page - 1;\r\n\r\n let cursors: HashObject = {};\r\n\r\n if (nextPage && nextPage <= totalPages)\r\n cursors.next = nextPage.toString();\r\n\r\n if (prevPage)\r\n cursors.previous = prevPage.toString();\r\n\r\n if (ObjectHelper.isEmpty(cursors))\r\n return;\r\n\r\n return cursors as Cursors;\r\n}\r\n\r\nexport const CollectionHelper = {\r\n convertLegacyPaginatedCollection(collection: LegacyPaginatedCollection): BasePaginatedCollection<BaseObject> {\r\n if (!collection)\r\n return;\r\n\r\n return {\r\n data: collection.data,\r\n pagination: {\r\n cursors: convertLegacyPaginationToCursors(collection.pagination),\r\n limit: collection.pagination.pageSize\r\n }\r\n };\r\n }\r\n};","import { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\r\n\r\nexport const ImageSelectHelper = {\r\n onFileSelect(imageType: ImageType, files: FileList, onImageLoad: (image: HTMLImageElement) => void): void {\r\n if (!files || !files.length)\r\n return;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.addEventListener('load', () => ImageSelectHelper.onReaderLoad(reader, imageType, onImageLoad));\r\n\r\n reader.readAsDataURL(files[0]);\r\n },\r\n\r\n onReaderLoad(reader: FileReader, imageType: ImageType, onImageLoad: (image: HTMLImageElement) => void): void {\r\n const image = new Image();\r\n image.src = reader.result as string;\r\n\r\n const minWidth = ImageMinDimensions[imageType].width;\r\n const minHeight = ImageMinDimensions[imageType].height;\r\n\r\n image.addEventListener('load', () => {\r\n if (ImageSelectHelper.isImageValid(imageType, image) && FunctionHelper.isFunction(onImageLoad)) {\r\n onImageLoad(image);\r\n } else {\r\n // TODO: Implement error\r\n alert(`Image too small: minimum dimensions are ${minWidth} x ${minHeight}`);\r\n }\r\n });\r\n },\r\n\r\n isImageValid(imageType: ImageType, image: HTMLImageElement): boolean {\r\n const minWidth = ImageMinDimensions[imageType].width;\r\n const minHeight = ImageMinDimensions[imageType].height;\r\n\r\n if (minWidth && image.width < minWidth)\r\n return false;\r\n\r\n if (minHeight && image.height < minHeight)\r\n return false;\r\n\r\n return true;\r\n }\r\n};","import { Core } from 'libs/common/core';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const NavHelper = {\r\n isItemActive(item: NavItem, currentAppLink?: Core.AppLink): boolean {\r\n if (!currentAppLink)\r\n currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\r\n\r\n if (currentAppLink.application !== item.appLink.application)\r\n return false;\r\n\r\n // If navItem has a list of active actions, check to see if current action is one.\r\n if (Array.isArray(item.activeActions))\r\n return item.activeActions.includes(currentAppLink.action);\r\n\r\n // Otherwise, use navItem's appLink action.\r\n return currentAppLink.action === item.appLink.action;\r\n }\r\n};","import { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nimport { Permission } from 'shared/interfaces';\r\nimport { UserHelper } from 'shared/utils';\r\nimport { CuratorGroup } from 'shared/enums';\r\n\r\nexport const PermissionsHelper = {\r\n getProtectedReadPermission(): Permission[] {\r\n return [{\r\n value: 'protected',\r\n access: 'r'\r\n }];\r\n },\r\n\r\n hasSubjectsAccess(user: CuratorUser): boolean {\r\n const allowedGroups = [ CuratorGroup.Developer, CuratorGroup.Content ];\r\n\r\n return allowedGroups.some(group => UserHelper.getGroupNames(user).includes(group));\r\n }\r\n};","export const PropHelper = {\r\n propsLoaded(props: {}): boolean {\r\n return Object.values(props).every(p => !!p);\r\n }\r\n};","export const StringHelper = {\r\n isEqual(str1: string | number, str2: string | number): boolean {\r\n return !!str1 && !!str2 && str1.toString() === str2.toString();\r\n },\r\n\r\n capitalizeFirstLetter(str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n};","import { BaseObject } from 'libs/shared/interfaces';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nexport const TreeHelper = {\r\n find<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T | null {\r\n if (!tree || !tree.children || !tree.children.length)\r\n return;\r\n\r\n const find = (node: T): T | null => {\r\n if (StringHelper.isEqual(node.id, id))\r\n return node;\r\n\r\n const children = node.children;\r\n\r\n if (!children || !children.length)\r\n return;\r\n\r\n for (let i = 0; i < children.length; i++) {\r\n const child = find(children[i] as T);\r\n\r\n if (child)\r\n return child;\r\n }\r\n };\r\n\r\n for (let j = 0; j < tree.children.length; j++) {\r\n const child = find(tree.children[j] as T);\r\n\r\n if (child)\r\n return child;\r\n }\r\n },\r\n\r\n getPath<T extends BaseTree<BaseObject>>(tree: T, node: T): T[] {\r\n let path = [node];\r\n\r\n const getParentId = (_node: T) => {\r\n if (_node.hasOwnProperty('parentIds') && Array.isArray(_node.parentIds) && _node.parentIds.length)\r\n return _node.parentIds[0];\r\n\r\n if (_node.hasOwnProperty('parentId'))\r\n return _node.parentId;\r\n\r\n return null;\r\n };\r\n\r\n let parentId = getParentId(node);\r\n\r\n while (parentId) {\r\n const parent = TreeHelper.find(tree, parentId);\r\n\r\n if (parent)\r\n path = [ parent, ...path ];\r\n\r\n parentId = parent ? getParentId(parent) : null;\r\n }\r\n\r\n return path;\r\n }\r\n};","import { CuratorUser } from 'libs/shared/interfaces';\r\n\r\nexport const UserHelper = {\r\n getGroupNames(user: CuratorUser): string[] {\r\n return (user && user.groups) ? user.groups.map(g => g.name) : [];\r\n }\r\n};","export * from './ImageSelectHelper';\r\nexport * from './NavHelper';\r\nexport * from './PropHelper';\r\nexport * from './StringHelper';\r\nexport * from './TreeHelper';\r\nexport * from './UserHelper';","import * as React from 'react';\r\nimport { useService } from 'libs/common/react/hooks/UseService';\r\nimport { Image, PopupViewProps } from 'libs/shared/interfaces';\r\nimport { ImageType } from 'libs/shared/enums/Images';\r\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\n\r\nimport { ImageStorageContext } from 'shared/context';\r\nimport { ImageCropper } from 'shared/components';\r\nimport { DataServices } from 'shared/constants';\r\nimport { ImageUploadDataService } from 'shared/services';\r\n\r\ninterface ImageUploadViewProps {\r\n imageType: ImageType;\r\n}\r\n\r\nexport function ImageUploadView({ imageType, closePopup }: ImageUploadViewProps & PopupViewProps): React.ReactElement {\r\n const { getDataUrl, setImage } = React.useContext(ImageStorageContext);\r\n\r\n const [dataUrl] = React.useState(getDataUrl());\r\n const [ showCropper, setShowCropper ] = React.useState(false);\r\n\r\n const imageUploadDataService = useService<ImageUploadDataService>(DataServices.IMAGE_UPLOAD);\r\n\r\n const onImageUploadSuccess = (image: Image) => {\r\n setImage(image);\r\n closePopup();\r\n };\r\n\r\n const onCrop = (croppedDataUrl: string) =>\r\n imageUploadDataService.uploadBase64Image(croppedDataUrl, imageType, onImageUploadSuccess, closePopup);\r\n\r\n const cropperProps = {\r\n dataUrl,\r\n imageType,\r\n minWidth: ImageMinDimensions[imageType].width,\r\n minHeight: ImageMinDimensions[imageType].height,\r\n onCrop,\r\n onCancel: closePopup\r\n };\r\n\r\n return (\r\n <Popup title='Crop Image' closePopup={closePopup} onEntered={() => setShowCropper(true)}>\r\n {showCropper && <ImageCropper {...cropperProps} />}\r\n </Popup>\r\n );\r\n}","export * from './ImageUploadView';","export * from './image-upload';","module.exports = __WEBPACK_EXTERNAL_MODULE__fortawesome_fontawesome__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone_marionette__;","module.exports = __WEBPACK_EXTERNAL_MODULE_cropperjs__;","module.exports = __WEBPACK_EXTERNAL_MODULE_dompurify__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_node_polyglot__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_transition_group__;","module.exports = __WEBPACK_EXTERNAL_MODULE_underscore__;","module.exports = __WEBPACK_EXTERNAL_MODULE_yup__;"],"sourceRoot":""}