{"version":3,"sources":["webpack:///./app/javascript/shared/selectors/unit/unit.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./app/javascript/builder_portal/actions/productGroupActions.js","webpack:///./node_modules/react-swipeable/es/index.js","webpack:///./node_modules/lodash.isequal/index.js","webpack:///./node_modules/react-image-gallery/build/SVG.js","webpack:///./node_modules/react-input-position/dist/mouseActivation/index.js","webpack:///./node_modules/react-input-position/dist/mouseActivation/click.js","webpack:///./node_modules/react-input-position/dist/mouseActivation/doubleClick.js","webpack:///./node_modules/react-input-position/dist/mouseActivation/hover.js","webpack:///./node_modules/react-input-position/dist/mouseActivation/mouseDown.js","webpack:///./node_modules/react-input-position/dist/touchActivation/index.js","webpack:///./node_modules/react-input-position/dist/touchActivation/doubleTap.js","webpack:///./node_modules/react-input-position/dist/touchActivation/longTouch.js","webpack:///./node_modules/react-input-position/dist/touchActivation/tap.js","webpack:///./node_modules/react-input-position/dist/touchActivation/touch.js","webpack:///./node_modules/react-input-position/dist/constants.js","webpack:///./node_modules/react-image-magnifiers/dist/SideBySideMagnifier.js","webpack:///./node_modules/react-image-magnifiers/dist/SideBySideRenderer.js","webpack:///./node_modules/react-image-magnifiers/dist/Magnifier.js","webpack:///./node_modules/react-image-magnifiers/dist/MagnifierRenderer.js","webpack:///./node_modules/react-image-magnifiers/dist/GlassMagnifier.js","webpack:///./node_modules/react-image-magnifiers/dist/GlassRenderer.js","webpack:///./node_modules/react-image-magnifiers/dist/PictureInPictureMagnifier.js","webpack:///./node_modules/react-image-magnifiers/dist/PictureInPictureRenderer.js","webpack:///./node_modules/react-image-magnifiers/dist/MagnifierPreview.js","webpack:///./node_modules/react-image-magnifiers/dist/MagnifierPreviewRenderer.js","webpack:///./node_modules/react-image-magnifiers/dist/MagnifierZoom.js","webpack:///./app/javascript/builder_portal/helpers/defaultRichTextTags.jsx","webpack:///./node_modules/react-image-magnifiers/dist/utils.js","webpack:///./app/javascript/shared/components/quantity/FormatQuantity.jsx","webpack:///./app/javascript/shared/actions/roomBookController.js","webpack:///./app/javascript/shared/helpers/formatNumber.js","webpack:///./app/javascript/shared/helpers/navigationButton.js","webpack:///./app/javascript/shared/components/numbers/FormatNumber.jsx","webpack:///./app/javascript/shared/helpers/formatCurrency.js","webpack:///./app/javascript/shared/helpers/serialize.js","webpack:///./app/javascript/shared/shapes/productPrice.shape.js","webpack:///./app/javascript/shared/actions/resourcesErrorHandling.jsx","webpack:///./app/javascript/shared/constants/appConstants.jsx","webpack:///./app/javascript/shared/shapes/cardGrid.shape.js","webpack:///./app/javascript/shared/components/cardGrid/CardGrid.jsx","webpack:///./app/javascript/shared/selectors/unit/productRules.js","webpack:///./app/javascript/shared/components/dialogs/ConfirmationDialogContainer.jsx","webpack:///./app/javascript/shared/components/affiliates/upscale/upscaleCardGroup.jsx","webpack:///./app/javascript/buyer_portal/components/additionalProjectHtml.jsx","webpack:///./app/javascript/shared/components/roomBook/PageTotal.jsx","webpack:///./app/javascript/shared/components/roomBook/RoomBookNavigation.jsx","webpack:///./app/javascript/shared/components/roomBook/BottomNavigation.jsx","webpack:///./app/javascript/shared/actions/eventActions.js","webpack:///./app/javascript/shared/components/roomBook/CatalogPage.jsx","webpack:///./app/javascript/shared/selectors/unit/status.js","webpack:///./app/javascript/builder_portal/actions/growlActions.js","webpack:///./app/javascript/shared/shapes/unit.shape.js","webpack:///./app/javascript/shared/shapes/project.shape.js","webpack:///./app/javascript/marketing_portal/reducers/setup.js","webpack:///./app/javascript/marketing_portal/reducers/branding.js","webpack:///./app/javascript/marketing_portal/actions/resetAction.js","webpack:///./app/javascript/marketing_portal/components/navigation/PageFooter.jsx","webpack:///./app/javascript/marketing_portal/components/pageLayout/PageLayout.jsx","webpack:///./app/javascript/marketing_portal/containers/pageLayoutContainer.js","webpack:///./app/javascript/marketing_portal/routes/routes.js","webpack:///./app/javascript/marketing_portal/actions/roomBookActions.js","webpack:///./app/javascript/marketing_portal/actions/unitActions.js","webpack:///./app/javascript/marketing_portal/actions/catalogsActions.js","webpack:///./app/javascript/packs/MarketingPortalApp.jsx","webpack:///./app/javascript/shared/actions/resourcesActions.js","webpack:///./app/javascript/shared/shapes/projectCatalog.shape.js","webpack:///./node_modules/react-input-position/dist/index.js","webpack:///./node_modules/react-image-magnifiers/dist/styles.js","webpack:///./app/javascript/shared/shapes/image.shape.js","webpack:///./app/javascript/shared/shapes/product.shape.js","webpack:///./app/javascript/shared/network/apiRequest.js","webpack:///./app/javascript/shared/shapes/user.shape.js","webpack:///./app/javascript/buyer_portal/components/inquiry/priceStrategy.shape.js","webpack:///./app/javascript/builder_portal/helpers/getTagNames.js","webpack:///./app/javascript/shared/selectors/base.js","webpack:///./app/javascript/shared/shapes/buyer.shape.js","webpack:///./app/javascript/shared/shapes/productGroupResources.shape.js","webpack:///./app/javascript/shared/shapes/costAttribute.shape.js","webpack:///./app/javascript/shared/shapes/productOption.shape.js","webpack:///./app/javascript/shared/shapes/productLine.shape.js","webpack:///./app/javascript/shared/shapes/section.shape.js","webpack:///./app/javascript/shared/selectors/currency.js","webpack:///./app/javascript/shared/containers/i18n/i18n.js","webpack:///./app/javascript/shared/components/elements/timeoutProgressBar.jsx","webpack:///./app/javascript/shared/components/growlMessage/GrowlMessage.jsx","webpack:///./app/javascript/shared/helpers/toggleDialogCreator.js","webpack:///./node_modules/react-image-magnifiers/dist/Image.js","webpack:///./app/javascript/shared/selectors/catalog.js","webpack:///./app/javascript/shared/helpers/scrollToTop.js","webpack:///./app/javascript/i18n/translations.js","webpack:///./app/javascript/shared/components/hint/Hint.jsx","webpack:///./app/javascript/shared/components/configurator/OptionDetailsModal.jsx","webpack:///./app/javascript/shared/components/roomBook/productOptionCard/ThumbnailGallery.jsx","webpack:///./app/javascript/shared/components/roomBook/ProductOption.jsx","webpack:///./app/javascript/shared/components/roomBook/ProductOptions.jsx","webpack:///./app/javascript/shared/helpers/event.js","webpack:///./app/javascript/shared/components/dialogs/ConfirmationDialog.jsx","webpack:///./app/javascript/shared/components/elements/FeatureToggleProvider.jsx","webpack:///./app/javascript/builder_portal/actions/productTypeActions.js","webpack:///./app/javascript/shared/components/currency/FormatCurrency.jsx","webpack:///./app/javascript/shared/shapes/productGroup.shape.js","webpack:///./app/javascript/shared/shapes/contractor.shape.js","webpack:///./app/javascript/shared/shapes/tradeLabel.shape.js","webpack:///./node_modules/react-input-position/dist/utils.js","webpack:///./app/javascript/shared/actions/roomBookActions.js","webpack:///./app/javascript/shared/helpers/withRouter.jsx","webpack:///./app/javascript/shared/components/elements/productLineLabel.jsx","webpack:///./app/javascript/shared/shapes/configuratorLineItem.shape.js","webpack:///./app/javascript/shared/shapes/configuratorSubLineItem.shape.js","webpack:///./app/javascript/shared/components/roomBook/OptionsMenu.jsx","webpack:///./app/javascript/shared/shapes/configuratorView.shape.js","webpack:///./app/javascript/shared/components/configurator/PinchZoomPan.jsx","webpack:///./app/javascript/shared/components/configurator/Pool.js","webpack:///./app/javascript/shared/components/configurator/ImagePreloader.jsx","webpack:///./app/javascript/shared/components/configurator/RemoteImage.jsx","webpack:///./app/javascript/shared/components/configurator/Configurator.jsx","webpack:///./app/javascript/shared/shapes/attachment.shape.js","webpack:///./app/javascript/shared/selectors/configuratorData.js","webpack:///./app/javascript/shared/models/processDefinition.js","webpack:///./app/javascript/shared/selectors/unit/orderStatus.js","webpack:///./app/javascript/shared/selectors/unit/bottomNavigation.js","webpack:///./app/javascript/shared/selectors/branding.js","webpack:///./app/javascript/shared/shapes/account.shape.js","webpack:///./app/javascript/shared/shapes/roomBook.shape.js","webpack:///./app/javascript/shared/shapes/customImportConfigs.shape.js","webpack:///./app/javascript/shared/actions/configActions.js","webpack:///./app/javascript/buyer_portal/actions/configuratorActions.js","webpack:///./app/javascript/shared/actions/localTableResource.js","webpack:///./app/javascript/shared/components/elements/FeatureToggleActive.jsx","webpack:///./app/javascript/shared/selectors/unit/subLineItemRules.js","webpack:///./app/javascript/shared/shapes/subLineItemOption.shape.js","webpack:///./app/javascript/shared/components/roomBook/AdminMessageDialog.jsx","webpack:///./app/javascript/shared/components/configurator/ConfiguratorImage.jsx","webpack:///./app/javascript/shared/components/roomBook/LineItemList.jsx","webpack:///./app/javascript/shared/selectors/unit/productLinesImpact.js","webpack:///./app/javascript/shared/components/roomBook/pickers/requiredRuleUpdates.jsx","webpack:///./app/javascript/shared/components/roomBook/pickers/breadcrumbPartials.jsx","webpack:///./app/javascript/shared/components/roomBook/pickers/requiredProductLineUpdates.jsx","webpack:///./app/javascript/shared/components/roomBook/pickers/SubLineItemPicker.jsx","webpack:///./app/javascript/buyer_portal/selectors/attachments.js","webpack:///./app/javascript/shared/selectors/pageMenu.js","webpack:///./app/javascript/buyer_portal/actions/logoutAction.js","webpack:///./app/javascript/shared/components/pageLayout/PageMenu.jsx","webpack:///./app/javascript/shared/shapes/sectionGroup.shape.js","webpack:///./app/javascript/shared/components/unit/SectionMenu.jsx","webpack:///./app/javascript/shared/components/elements/ResponsiveImage.jsx","webpack:///./app/javascript/shared/components/roomBook/pickers/LineItemPicker.jsx","webpack:///./app/javascript/shared/routes/browserHistory.js","webpack:///./app/javascript/shared/helpers/localStorage.js","webpack:///./app/javascript/shared/components/elements/FeatureToggle.jsx","webpack:///./app/javascript/shared/actions/actionLocator.js","webpack:///./app/javascript/shared/selectors/unit/base.js","webpack:///./app/javascript/shared/shapes/i18n.shape.js","webpack:///./app/javascript/shared/components/elements/Conditions.jsx","webpack:///./app/javascript/shared/selectors/unit/priceCalculator.js","webpack:///./app/javascript/shared/selectors/unit/productOptions.js","webpack:///./app/javascript/shared/selectors/unit/subLineItems.js","webpack:///./app/javascript/shared/shapes/deprecated_pageContent.shape.js","webpack:///./app/javascript/shared/reducers/i18n.js","webpack:///./app/javascript/shared/reducers/locale.js","webpack:///./app/javascript/shared/reducers/account.js","webpack:///./app/javascript/shared/selectors/project.js","webpack:///./app/javascript/shared/reducers/message.js","webpack:///./app/javascript/shared/reducers/isLoading.js","webpack:///./app/javascript/shared/reducers/logoPath.js","webpack:///./app/javascript/shared/reducers/filter.js","webpack:///./app/javascript/shared/reducers/dialog.js","webpack:///./app/javascript/shared/reducers/cloudinaryEnv.js","webpack:///./app/javascript/buyer_portal/reducers/configuratorPreviewSelection.js","webpack:///./app/javascript/shared/reducers/pageContent/subLineItemSearchUpdate.js","webpack:///./app/javascript/shared/reducers/pageContent/roomBookUpdate.js","webpack:///./app/javascript/shared/reducers/pageContent.js","webpack:///./app/javascript/shared/shapes/contractorAssignment.shape.js","webpack:///./app/javascript/shared/shapes/priceCatalog.shape.js","webpack:///./app/javascript/shared/shapes/designLines.shape.js","webpack:///./app/javascript/shared/shapes/styleVariable.shape.js","webpack:///./app/javascript/shared/shapes/projectWithContent.shape.js","webpack:///./app/javascript/shared/actions/dialogActions.js","webpack:///./node_modules/react-image-magnifiers/dist/ImagePreviewOverlay.js","webpack:///./node_modules/react-image-magnifiers/dist/MagnifierContainer.js","webpack:///./app/javascript/buyer_portal/selectors/deadlines.js","webpack:///./app/javascript/shared/components/productLine/productTagModalCard.jsx","webpack:///./app/javascript/shared/components/productLine/productLinePicker.jsx","webpack:///./app/javascript/shared/selectors/account.js","webpack:///./app/javascript/buyer_portal/actions/roomBookActions.js","webpack:///./app/javascript/shared/components/roomBook/SectionPage.jsx","webpack:///./app/javascript/shared/containers/roomBook/sectionContainer.js","webpack:///./app/javascript/builder_portal/components/product/ProductInfoItem.jsx","webpack:///./app/javascript/shared/selectors/unit/sections.js","webpack:///./app/javascript/shared/helpers/scrollTo.js","webpack:///./app/javascript/shared/selectors/unit/productData.js","webpack:///./app/javascript/shared/middlewares/logger.js","webpack:///./app/javascript/shared/selectors/unit/productLines.js","webpack:///./node_modules/react-image-gallery/build/image-gallery.js","webpack:///./node_modules/react-image-magnifiers/dist/index.js","webpack:///./app/javascript/shared/components/roomBook/SubLineItemPage.jsx","webpack:///./app/javascript/shared/components/pageLayout/PageNavigation.jsx","webpack:///./app/javascript/shared/components/currency/PriceLabel.jsx","webpack:///./app/javascript/shared/components/images/ImageCanvas.jsx","webpack:///./app/javascript/shared/components/roomBook/SubLineItemGrid.jsx","webpack:///./app/javascript/shared/components/roomBook/LineItemPage.jsx","webpack:///./app/javascript/buyer_portal/components/attachment/AttachmentCard.jsx","webpack:///./app/javascript/buyer_portal/components/attachment/AttachmentCards.jsx","webpack:///./app/javascript/buyer_portal/components/attachment/Attachments.jsx","webpack:///./app/javascript/buyer_portal/containers/attachment/attachmentContainer.js","webpack:///./app/javascript/shared/components/v2/getUnitId.jsx","webpack:///./app/javascript/shared/components/unit/ConfiguratorCard.jsx","webpack:///./app/javascript/shared/components/unit/ConfiguratorsMenu.jsx","webpack:///./app/javascript/shared/components/unit/Unit.jsx","webpack:///./app/javascript/shared/components/errorPage/ErrorPage.jsx","webpack:///./app/javascript/shared/containers/errorPage/errorPageContainer.js","webpack:///./app/javascript/shared/components/roomBook/UnitAwarePage.jsx","webpack:///./app/javascript/shared/containers/unit/unitAwareContainer.js","webpack:///./app/javascript/shared/components/pages/Imprint.jsx","webpack:///./app/javascript/shared/containers/pages/imprintContainer.js","webpack:///./app/javascript/shared/actions/resourceActions.js","webpack:///./app/javascript/shared/selectors/isLoading.js","webpack:///./app/javascript/shared/selectors/supplierIntegration.js","webpack:///./app/javascript/shared/selectors/contractor.js","webpack:///./app/javascript/shared/selectors/macros.js","webpack:///./app/javascript/shared/selectors/projectCatalog.js","webpack:///./app/javascript/shared/selectors/documentationItems.js","webpack:///./app/javascript/contractor_portal/product.shape.js","webpack:///./app/javascript/shared/components/configurator/roomBook.shape.js","webpack:///./app/javascript/shared/selectors/unit/lineItems.js","webpack:///./app/javascript/builder_portal/actions/productActions.js","webpack:///./app/javascript/shared/selectors/unit/navigation.js","webpack:///./app/javascript/shared/models/account.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["getOnly3D","props","get","getBaseUnit","state","getUnitCount","getUnit","createSelector","getRootSections","unit","sections","total","reduce","sum","s","isPriceOnRequest","some","isDecided","every","getPageTitle","getSubLineItems","subLineItems","filter","sli","hasBuyerSelection","length","getI18N","getPageName","i18n","pageName","pageTitle","display_name","join","getProjectSlug","projectSlug","slug","MapShim","Map","getIndex","arr","key","result","entry","index","class_1","this","__entries__","Object","defineProperty","prototype","enumerable","configurable","set","value","push","entries","splice","has","clear","forEach","callback","ctx","_i","_a","call","isBrowser","window","document","global$1","global","Math","self","Function","requestAnimationFrame$1","requestAnimationFrame","bind","setTimeout","Date","now","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","indexOf","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","addEventListener","observe","attributes","childList","characterData","subtree","removeEventListener","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","target","keys","writable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","arguments","size","position","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","left","right","vertPad","top","bottom","width","height","boxSizing","round","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","abs","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","x","y","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","create","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","TypeError","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","_this","observation","map","WeakMap","ResizeObserver","method","apply","ProductGroupResource","catalogId","dispatch","productGroupId","values","apiRequest","patch","url","then","propagateUpdate","id","post","Resources","ProductPriceResource","ProductGroupRuleSetResource","_extends","assign","i","source","hasOwnProperty","defaultProps","preventDefaultTouchmoveEvent","delta","rotationAngle","trackMouse","trackTouch","initialState","xy","swiping","eventData","undefined","start","LEFT","RIGHT","UP","DOWN","touchStart","touchMove","touchEnd","mouseMove","mouseUp","rotateXYByAngle","pos","angle","angleInRadians","PI","cos","sin","getHandlers","handlerProps","onStart","event","touches","onMove","onUp","_ref","clientX","clientY","initial","concat","first","_ref2","_rotateXYByAngle","deltaX","deltaY","absX","absY","time","velocity","sqrt","dir","getDirection","onSwiping","cancelablePageSwipe","onSwiped","cancelable","preventDefault","onEnd","cleanUpMouse","e","attachTouch","el","tls","_ref3","h","_ref4","output","ref","addState","cleanUpTouch","onMouseDown","updateTransientState","useSwipeable","transientState","useRef","type","transientProps","current","_React$useMemo","useMemo","cb","handlers","Swipeable","_React$PureComponent","subClass","superClass","_set","constructor","__proto__","render","_this$props","className","style","_this$props$nodeName","nodeName","innerRef","children","_getHandlers","createElement","PureComponent","_typeof","Symbol","iterator","obj","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","root","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","mapToArray","Array","setToArray","uid","func","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","toString","maskSrcKey","exec","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","_Symbol","Uint8Array","propertyIsEnumerable","symToStringTag","toStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Promise","Set","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isType","skipIndexes","n","iteratee","baseTimes","String","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","object","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","name","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","test","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","getValue","pop","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","isLength","baseUnary","_react","_react2","__esModule","_propTypes","iconMapper","points","maximize","d","minimize","play","pause","Fragment","SVG","strokeWidth","viewBox","icon","xmlns","fill","stroke","strokeLinecap","strokeLinejoin","propTypes","number","string","oneOf","isRequired","_click","_interopRequireDefault","_doubleClick","_hover","_mouseDown","_default","click","doubleClick","hover","mouseDown","clickMoveStartRef","clickMoveEnd","clickMoveLimit","toggleActive","getState","active","setPassivePosition","setPosition","mouseLeave","dragStart","dblClick","activate","mouseEnter","deactivate","addRemoveOutsideHandlers","mouseHandlers","handler","mouseOutside","mouseDownAllowOutside","_doubleTap","_longTouch","_tap","_touch","doubleTap","longTouch","tap","touch","touched","justTouched","startTapTimer","tapTimedOut","clearTimeout","tapTimer","tapped","doubleTapTimedOut","doubleTapTimer","changedTouches","startDoubleTapTimer","touchCancel","longTouchTimer","longTouchStartRef","startLongTouchTimer","end","longTouchMoveLimit","TOUCH_ACTIVATION","MOUSE_ACTIVATION","CLICK","DOUBLE_CLICK","HOVER","MOUSE_DOWN","DOUBLE_TAP","LONG_TOUCH","TAP","TOUCH","_utils","_reactInputPosition","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","_interopRequireWildcard","_SideBySideRenderer","SideBySideMagnifier","imageSrc","largeImageSrc","imageAlt","overlayOpacity","overlayBoxOpacity","overlayBackgroundColor","overlayBoxColor","overlayBoxImage","overlayBoxImageSize","cursorStyle","alwaysInPlace","transitionSpeed","transitionSpeedInPlace","renderOverlay","onImageLoad","onLargeImageLoad","switchSides","onZoomStart","onZoomEnd","fillAvailableSpace","fillAlignTop","fillGapLeft","fillGapRight","fillGapTop","fillGapBottom","inPlaceMinBreakpoint","zoomContainerBorder","zoomContainerBoxShadow","mouseActivation","touchActivation","touchActivationMethod","mouseActivationMethod","onActivate","onDeactivate","trackItemPosition","linkItemToActive","oneOfType","arrayOf","bool","noop","_styles","_Image","_ImagePreviewOverlay","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","itemPosition","elementDimensions","elementOffset","itemDimensions","itemRef","onLoadRefresh","zoomContainerDimensions","zoomContainerStyle","availableWidth","availableHeight","windowWidth","zoomGapVertical","zoomGapHorizontal","_document$documentEle","innerWidth","inPlace","min","offsetTop","maxOffsetTop","limitedTop","max","legalSize","transSpeed","smallImageSize","previewSize","floor","itemPositionAdj","previewOffset","zoomContainerSize","convertRange","invertNumber","display","cursor","src","alt","getZoomContainerStyle","opacity","transition","zIndex","border","boxShadow","getLargeImageStyle","previewWidth","previewHeight","previewPosLeft","previewPosRight","previewPosTop","previewPosBottom","imageWidth","imageHeight","_MagnifierRenderer","Magnifier","cursorStyleActive","dragToMove","interactionSettings","onImageError","onLargeImageError","finalActiveCursorStyle","centerItemOnActivatePos","alignItemOnActivePos","itemPositionLimitBySize","shape","tapDurationInMs","doubleTapDurationInMs","longTouchDurationInMs","finalCursorStyle","visibility","_GlassRenderer","GlassMagnifier","magnifierBorderSize","magnifierBorderColor","magnifierBackgroundColor","magnifierSize","magnifierOffsetX","magnifierOffsetY","square","allowOverflow","overflow","activePosition","magnifierSizeNum","convertWidthToPx","positionOffset","divPosition","borderRadius","backgroundColor","backgroundClip","_PictureInPictureRenderer","_defineProperties","descriptor","_setPrototypeOf","o","p","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","PictureInPictureMagnifier","_Component","_inherits","Constructor","protoProps","staticProps","_super","instance","_classCallCheck","_len","args","_key","createRef","previewSizePercentage","previewHorizontalPos","previewVerticalPos","previewOpacity","previewOverlayOpacity","previewOverlayBoxOpacity","previewOverlayBackgroundColor","previewOverlayBoxColor","previewOverlayBoxImage","previewOverlayBoxImageSize","shadow","shadowColor","containerRef","textAlign","fontSize","itemPositionMinX","itemPositionMinY","itemPositionMaxX","itemPositionMaxY","centerItemOnLoad","Component","_onImageLoad","sizeMult","containerTop","containerLeft","containerWidth","getBoundingClientRect","paddingTop","paddingBottom","isNaN","_MagnifierPreviewRenderer","_MagnifierContainer","MagnifierPreview","_React$useContext","useContext","MagnifierContext","stateOverride","onUpdate","zoomImageDimensions","image","largeImage","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","next","done","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","slice","from","_unsupportedIterableToArray","_nonIterableRest","len","arr2","shouldBeInPlace","_React$useState2","useState","setInPlace","useEffect","MagnifierZoom","onZoomImageLoad","zoomRef","zoomImageRef","invalidVertical","invalidHorizontal","getMagnifierZoomStyle","pointerEvents","defaultRichTextTags","b","chunks","strong","em","mark","small","del","ins","sub","sup","ul","ol","li","num","oldMin","oldMax","newMin","newMax","oldValue","Error","substr","Number","convertWidthToString","FormatQuantity","mode","i18nKey","defaultText","RoomBookController","unitId","selectProductLine","productLineResource","select","deselectProducts","subLineItemIds","subLineItemResource","selectProducts","selection","selectProductsAndQuantities","toggleLineItem","lineItemId","lineItemResource","toggle","deactivateLineItem","activateLineItem","getResource","LINE_ITEM_RESOURCE","SUB_LINE_ITEM_RESOURCE","PRODUCT_LINE_RESOURCE","roomBookController","formatNumber","amount","minimumFractionDigits","Intl","NumberFormat","maximumFractionDigits","format","BUTTONS","decided","content","fluid","primary","undecided","basic","warning","disabled","buyable","replacement","mandatory","navigationButton","item","isMandatoryDisplay","isOptional","isActivated","isBackendActivated","isValid","isConfigurable","isReplacement","getMode","FormatNumber","decimals","formatCurrency","currency","formatCurrency2","parseNumber","decimalSign","match","split","serialize","params","prefix","query","encodeURIComponent","ProductPriceShape","product_option_id","price_catalog_id","price","excess_price","costs_attributes","CostAttributeShape","deprecated_at","deprecated_by_id","created_at","updated_at","FormattedErrorReason","errors","error","errorText","getHandleDeleteFailed","response","flatten","isEmpty","UPDATE_MESSAGE","payload","title","body","bodyValues","reason","getHandleUpdateFailed","arrayOfValuesErrors","isString","processErrors","UPDATE_LOGO_PATH","UPDATE_LOCALE","UPDATE_I18N","UPDATE_ACCOUNT","UPDATE_FLASH_ACTION","REMOVE_FLASH_ACTION","UPDATE_IS_LOADING","DELETE_PAGE_CONTENT","UPDATE_PAGE_CONTENT","ADD_CONFIGURATOR_SELECTION","REMOVE_CONFIGURATOR_SELECTION","SET_CONFIGURATOR_SELECTION","TOGGLE_CONFIGURATOR_SELECTION","ADD_PAGE_CONTENT","UPDATE_PAGE_CONTENT_MESSAGE_FORM","REMOVE_ID_FROM_PAGE_CONTENT","UPDATE_ROOM_BOOK","UPDATE_SUB_LINE_ITEM_SEARCH_RESULT","UPDATE_FILTER","UPDATE_DIALOG","UPDATE_NOTIFICATIONS","UPDATE_CONTRACTOR_SELECTION","RESET_CONTRACTOR_SELECTION","OPEN_MODAL","CLOSE_MODAL","modelType","imageClass","imageUrl","button","Button","popup","header","node","onClick","isBasePrice","CardGrid","pricePrefix","Icon","handleClick","handleScrollTop","browserHistory","Label","defaultMessage","FormatCurrency","items","Card","Group","itemsPerRow","stackable","doubling","card","generateOnClickHandler","Content","Header","renderPriceTag","backgroundImage","Popup","trigger","React","withI18n","RulesEngine","baseRules","baseFacts","rules","filterMatchingRules","assertable","assertItem","fact","rule","assertFilter","when","matcher","matches","facts","property","expectedValues","actualValue","intersectionWith","isEqual","getRuleSets","getRuleSetsByProductGroup","ruleSets","mappedRuleSets","product_group_then","product_group_when","scope","product_group_id","product_group","groupBy","subLineItemToFact","subLineItem","line_item","line_item_id","sub_section","sub_section_id","section","section_id","sub_line_item","product","product_id","getFacts","getBuyerSelections","getFlatRoomBook","buyerSelections","roomBook","keyBy","accu","merge","room_book","getFactsByLineItem","getFactsBySubSection","getFactsBySection","getFactsByScopeFn","factsByLineItem","factsBySubSection","factsBySection","isProductAcceptable","getFactsByScope","productRuleSets","assert","getSubLineItemDependencies","dependencies","applicableFacts","getApplicableFacts","f","CONFIRMATION_DIALOG","toggleConfirmationDialog","toggleDialogCreator","dialogModel","ConfirmationDialogContainer","toggleDialog","open","onAsyncClose","connect","enableAffiliates","getAccount","isEnabled","modalActions","Modal","Actions","as","href","labelPosition","glamCard","link","Image","modernCard","scandinavianCard","Divider","horizontal","clearing","fitted","Container","text","hidden","centered","Description","__html","getProject","additional_html","dangerouslySetInnerHTML","PageTotal","renderTotal","Grid","Column","renderSubTotal","totalRelative","sectionTitle","renderHints","withRouter","sectionId","subLineItemId","findSubLineItem","findLineItem","findSection","RoomBookNavigation","navigateToParent","parent","router","path","segments","segment","idx","to","Responsive","minWidth","verticalAlign","Subheader","maxWidth","Link","isRoot","getUnitPath","parentId","makeSectionPath","lineItem","getSectionPath","isCompactDisplay","getLineItemPath","last","unitPath","BottomNavigation","renderCompletionButton","toggleCompletionDialog","direction","renderButton","navigation","orientation","colorCls","triggerNavigationFn","label","navigateBack","goBack","userRole","triggerEventAction","roleMayNeedConfirmation","includes","eventAction","confirmation","setState","confirm","navigateTo","closeReminder","hideBackButton","showCompletionButton","renderReminderModal","color","iconMobile","labelMobile","closeOnEscape","closeOnDimmerClick","onClose","getUserRole","getBottomNavigationModel","SectionCompletedResource","put","dispatchEventAction","CatalogPage","getStatus","defaultMap","statusMapping","status","getLineItemStatusMap","lineItems","external_status","getLineItemStatus","lineItemStatus","getSubLineItemStatus","Growl","options","timeout","titleValues","unit_number","sample","sample_unit_token","description","cellar_number","parking_space_number","marketing_portal_url","buyer_portal_url","project_id","project","ProjectShape","SectionShape","buyer_id","buyer","room_book_id","social_media_title_override","social_media_description_override","statistics","deadlines","overdue","close","developer_contact_person","developer_email","developer_name","developer_phone","process_type","thumb_url","account_manager_id","features","objectOf","attachment_types","combinedReducers","combineReducers","branding","locale","account","isLoading","logoPath","pageContent","dialog","configuratorPreviewSelection","cloudinaryEnv","resetSelection","localStorage","remove","location","reload","PageFooter","layoutScope","dataPrivacyStatementUri","Segment","inverted","vertical","role","getFullYear","routes","r","PageLayout","contextRef","sidebarIsVisible","handleToggleSidebar","accountStyles","only3D","projectBannerImageUrl","projectBranding","projectId","projectLogoUrl","projectStyles","user","setProperty","branding_color","branding_contrast_color","classList","Helmet","PageNavigation","onToggleSidebar","rootPath","onlyActiveOnIndex","Sticky","context","styleElement","GrowlMessage","Menu","marginTop","PageMenu","warning_color","legacyLogoPath","accountLogoUrl","route","getUser","userConfig","UserConfig","lastState","Routes","component","PageLayoutContainer","UnitAwareContainer","onEnter","nextState","tab","pathname","onlyTabChanged","Unit","SectionContainer","LineItemPage","SubLineItemPage","AttachmentContainer","ImprintContainer","ErrorPageContainer","es6Promise","polyfill","ProductLineResource","selections","JSON","parse","stringify","product_line_selection","SubLineItemResource","buyerSelectionToResourceValues","lineItemIds","a","buyer_selections","BaseSubLineItemResource","UnitsResource","deep","deepParameter","productLineSelection","CatalogsResource","Resource","Sentry","dsn","localizedI18nMessages","translations","moment","App","initialProps","middlewares","composeEnhancers","compose","store","createStore","applyMiddleware","setResource","LineItemResource","UNIT_RESOURCE","CATALOG_RESOURCE","messages","history","ReactDOM","appendChild","namespace","reduxProperty","refreshPageContentAfterCommit","toPayload","propagateDeletedUpdate","handleUpdateFailed","handleDeleteFailed","request","parentUrlString","import_status","deletable","_constants","defaultState","_mouseActivation","_touchActivation","prevActivePosition","passivePosition","ReactInputPosition","refreshPosition","init","removeMouseEventListeners","removeTouchEventListeners","removeOtherEventListeners","prevProps","setMouseInteractionMethods","addMouseEventListeners","setTouchInteractionMethods","addTouchEventListeners","checkPassiveEventSupport","setInputInteractionMethods","addOtherEventListeners","_this2","supportsPassive","changes","activationCallback","_this3","overrideState","getStateClone","clonedState","mouseInteractionMethods","toLowerCase","touchInteractionMethods","touchHandlers","updateItemPosition","centerItem","minUpdateSpeedInMs","_this$containerRef$cu","_this$props2","trackPassivePosition","trackPreviousPosition","centerItemOnActivate","itemMovementMultiplier","itemPositionLimitInternal","_this$getState","stateUpdate","itemSize","limits","createAdjustedLimits","centerX","maxX","minX","centerY","maxY","minY","updateState","startRefreshTimer","shouldLimitItem","alignItemOnPosition","centerItemOnPosition","calculateItemPosition","limitPosition","_this$containerRef$cu2","_this4","_this5","_this6","_this7","_this8","mouse","_this9","passive","_this10","_this11","handleResize","_this$props3","combinedStyle","WebkitUserSelect","MozUserSelect","msUserSelect","userSelect","decorateChildren","positionX","positionY","getOverlayCenterStyle","backgroundImageSize","backgroundStyle","backgroundSize","getOverlayTopStyle","getOverlayLeftStyle","getOverlayRightStyle","getOverlayBottomStyle","ImageShape","technical_description","sku","series","supplier","supplier_id","custom_product_code","trades","product_manager_url","images","supplier_url","vr_model_url","product_files","file_file_name","internal_url","SilentApiRequestError","fetch","silent","reject","hasBody","authorization","FormData","headers","Authorization","Accept","requestObject","console","contentType","json","ok","getCurrentLocation","search","info","handleUnauthorizedRequest","messagePayload","failureMessage","delete","UserShape","salutation","first_name","last_name","email","getTagNames","tags","taxonomies","taxonomy","composite_id","getAccountData","getFilter","getPageContent","getNotifications","notifications","getRouterParams","_","accountData","invited_at","login_count","portal_active","portal_registered","bp_created_at","bp_reminded_at","products","instanceOf","ProductResource","prices","pricesFactory","groups","productTypes","ProductTypeResource","cost","excess_cost","trade","ProductOptionShape","portal_offer","on_request","product_tags","is_default","product_prices","productLines","ProductLineShape","external_id","ProductLineTagDescriptionShape","displayName","name_plural","exclusive","tagDescriptions","isVisible","hasChildren","configuratorId","selector","CURRENCY_MAPPING","USD","EUR","CHF","getProjectCurrency","code","getProjectsConfig","sign","mapStateToProps","TimeoutProgressBar","requestRef","previousTimeRef","animationStep","progressBarProps","onTimeoutComplete","progress","setProgress","cancelAnimation","deltaTime","prevProgress","cancelAnimationFrame","Progress","dismiss","growl","scrollToTop","Message","onDismiss","success","floating","attached","dialogName","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","forwardRef","otherProps","imageIdx","setImageIdx","imageErrorRef","imageArr","onLoad","onError","getCatalogs","project_catalogs","getCatalogsForProject","catalogs","priceCatalogMatcher","pc","project_ids","catalog","price_catalogs","makeGetCatalogById","find","makeGetCatalogNameById","getCatalogById","getPriceCatalogs","flatMap","getPriceCatalogsById","priceCatalogs","c","getDesignLineGroups","getAllDesignLines","designLineGroups","designLines","dlg","design_lines","element","querySelector","scrollToElement","ease","duration","Hint","OptionDetailsModal","renderTags","option","hasCart","isActualSelection","isDefault","isOnRequest","priceStrategy","thumbUrl","quantity","selectable","passThroughProps","showPriceTag","portal","closeIcon","wrapped","ProductInfoItem","ThumbnailGallery","onOrientationChange","thumbnailPosition","screen","warn","renderGalleryItem","refreshKey","large","original","renderYoutubeItem","embedUrl","frameBorder","allow","allowFullScreen","optionImageToGalleryItem","service","thumbnail","renderItem","medium","optionImageToThumbnailItem","stopPropagation","modalOpen","startIndex","renderThumbnailImageGroup","renderGalleryModal","galleryItems","showPlayButton","slideDuration","showFullscreenButton","ProductOption","handleToggleInfo","handleSelection","handleSelectFn","isSelected","isBuyerSelection","isAcceptable","isAcceptableProduct","loading","didUnmount","showDetailsModal","buttonLabel","buttonClass","renderMissingMappingIcon","renderMetaThumbs","renderQuantityLabel","classes","showMissingMappingHint","hasConfiguratorMapping","renderStandardFlag","isValidSelection","renderImage","isQuantityOnRequest","renderExtraPrice","handleToggleInfoFn","renderProductDetails","circular","onOpen","requiredUpdates","extraCosts","extraCostsOnRequest","priceField","field","displayAmount","displayIcon","productLine","productDetails","renderWithMissingMappingHint","optionWithVideo","getRequiredUpdates","ProductOptions","renderSelectionHint","messageKey","model","getMessageModel","condition","renderMessage","renderAdditionalProducts","picker","hasAdditionalProducts","showUnacceptable","marginBottom","renderAdditionalProductsHint","renderUnacceptableCards","renderFilterHint","showUnacceptableProducts","messageId","defaultValue","affectingSubLineItems","type_plural","selectedTagData","td","count","renderAcceptableCards","renderCards","visibleOptions","sort","productOption","loadingId","order","generateInitialOrder","subLineItemOptions","base","isValidOption","isRecommendable","sortBy","SubLineItemPicker","getAffectingSubLineItems","getActivatedProductLine","productTags","subLineItemsById","getSubLineItemsById","ConfirmationDialog","handleClose","unmounted","triggerOnCloseCallback","buttons","onSubmit","errorMessage","scrollContent","extra","scrolling","negative","renderButtons","FeatureToggleContext","createContext","useFeatureToggleContext","useAccountFeatureToggle","useSelector","FeatureToggleProvider","featureToggles","Provider","renderPerUnit","desciption","price_strategy","PriceStrategyShape","quantity_on_request","product_options","contact_person","elemDimensions","oldMaxX","newMaxX","oldMaxY","newMaxY","Children","child","shouldDecorateChild","cloneElement","decorateChild","limitBySize","internal","multiplier","newItemPosition","moveX","moveY","line_item_activation","legacyWithRouter","ProductLineLabel","ConfiguratorLineItemShape","LineItemShape","SubLineItemShape","isReplaced","atLeastOneWithMapping","OptionShape","selectedOption","OptionsMenu","getSelectLineItem","onSelectLineItemId","getActivatedLineItem","getReplacementLineItem","totalMin","getOptionalLineItem","handleSelectSubLineItem","onSelectSubLineItemId","handleBackButton","selectedSubLineItem","selectedLineItem","deactivateLineItemDialog","ctrl","noSelectionWarning","confirmationDialog","titleId","deactivateLineItemId","roomName","showBackButton","showRemoveButton","isProgressed","widths","renderProductOptions","renderSubLineItemMenu","renderLineItemMenu","LineItemPicker","getLineItems","onSelectOption","renderHeader","renderBody","renderActions","room","SETTLE_RANGE","ADDITIONAL_LIMIT","RESET_ANIMATION_SPEED","settle","val","range","inverse","getPointFromEvent","getDistanceBetweenPoints","pointA","pointB","pow","between","PinchZoomPan","handleTouchStart","animation","handlePinchStart","handleTapStart","handleTouchMove","handlePinchMove","handlePanMove","handleTouchEnd","container","lastPanPoint","checkLimits","lastTouchEnd","scale","zoomTo","reset","offsetWidth","containerHeight","offsetHeight","point","nextX","nextY","limit","lastDistance","distance","midpoint","getMidpoint","MIN_SCALE","MAX_SCALE","zoom","lastMidpoint","dragging","handleMouseDown","handleMouseMove","handleMouseLeave","setContainerRef","targetScale","frame","newScale","newLimit","distanceX","distanceY","targetX","targetY","nextWidth","nextHeight","onTouchStart","onTouchMove","onTouchEnd","onMouseMove","onMouseLeave","renderContent","Pool","factory","queue","working","completed","promise","ImagePreloader","updateImage","imageURL","currentImageURL","preLoaded","startPrefetching","preLoading","preloadImage","updateLoading","timer","checkLoading","onload","onerror","handleImageLoaded","loadedUrl","prefetchImageURLs","prevImageUrl","prevPrefetchImageURLs","pool","schedule","Loader","RemoteImage","transformOrigin","viewHasCategories","currentView","productImageCategories","viewCategories","cat","extractImageCategories","imageCategories","category","Configurator","handleOpen","selectedSubLineItemId","selectedLineItemId","selectView","handleViewSelectorOpen","viewSelectorOpen","handleViewSelectorClose","handleChangeView","views","handleSelectSubLineItemId","newSelectedLineItemId","handleSelectLineItemId","handleSelectOption","getSubLineItemById","newSelection","activeViews","relevantSubLineItems","lineItemProductImageCategories","subLineItemProductImageCategories","newView","view","viewOptions","Select","placeholder","onChange","selectedView","ConfiguratorImage","roomId","renderViewSelector","positive","createStructuredSelector","getConfiguratorSubLineItems","getVisibleConfiguratorLineItems","getConfiguratorTitle","getConfiguratorViews","getActiveConfiguratorViews","configuratorActions","ConfiguratorActions","access_rights","attachment_url","featured","file_name","message_attachments_count","references_count","DEFAULT_ROOM_BOOK","getRoomBook","getRoomBookSectionMap","sectionMap","temp","subSection","line_items","sub_line_items","display_number","getConfigurators","getProjectBranding","getSections","configuratorSection","unitSection","getRoomId","routeParams","getConfiguratorId","createCachedSelector","configurators","configurator","getConfigurator","getConfiguratorSectionIds","getConfiguratorLineItemsById","sectionIds","getAllConfiguratorLineItems","replacementTo","replacedById","getConfiguratorLineItemIds","getConfiguratorCategories","productCategories","getConfiguratorImageMapping","configuratorImageMapping","getConfiguratorProductSorting","getConfiguratorHideSubLineItemsWithoutMapping","getProductMapping","productMapping","productSorting","hideSubLineItemsWithoutMapping","configuratorCategories","akku","productGroup","mappingCategoriesSet","optionsWithMapping","unmappedImageId","imageId","mappingCategories","getOptionsWithMapping","orderFunctions","orderName","sortedOptions","getConfiguratorJourneyConfigs","configurator_journey","renderId","render_id","room_id","getConfiguratorJourneyRoomConfig","journeyConfig","selectedRoomId","jc","getConfiguratorRoomJourney","configuratorSubLineItems","sub_line_item_ids","sliId","subLineItemIdMatcher","newSubLineItem","Boolean","rest","filteredSubLineItemIds","allSubLineItemsDecided","getConfiguratorCardInfo","configured","allProductImageCategories","extractAllImageCategories","activeProductImageCategories","extractActiveImageCategories","nonOptionalImageCategories","extractNonOptionalImageCategories","viewsWithRelevantCategories","activeCategories","relevantCategories","nonOptionalCategories","defaultImages","toUpperCase","sortedViews","bestView","best","mappendViews","optional","bestAndMappedViews","getConfiguratorTemplateParams","templateParams","sourceId","source_id","configurableItemIds","configurableItems","configuredItems","liquidEngine","Liquid","strictVariables","ProcessDefinition","config","buyer_selection_pending","getName","phaseValue","getStatesById","getStates","states","startStates","startable","firstState","getProcessStartStates","actions","action","isStartAction","inputs","parameters","getStartInputs","template","parseAndRenderSync","whitelist","blacklist","useCartCreationDialog","activity","buyerSelectionPending","isDeprecated","isAssignableToProcess","selection_is_confirmed","buyer_selection","getOrderStatusFilter","getProductNamesByLineItem","getSubLineItemsByLineItemId","uniq","compact","subLineItemOption","brewProductName","getFilteredLineItems","productNames","getFilteredSubSections","isCancelled","getFilteredSections","subSections","getUnitTotal","getOrderStatusDetails","isReady","renderNextButton","nextSibling","getNextSibling","sibling","makeSubLineItemPath","getSubLineItemModel","findSubLineItems","defactoSelectedOption","getLineItemModel","parentPath","completedButton","findSubSections","findLineItems","makeLineItemPath","getSectionModel","unitDecided","getRoomBookModel","Branding","imageMap","default_thumb_url","groupMap","group","visibilityMap","visible","product_lines","configuratorsData","product_mapping","orderdConfiguratorsData","configuratorMap","glencoeURL","sectionPath","getSelector","RoomBookShape","CustomImportArgumentShape","data_type","provided","importer","addPreviewOption","optionId","removePreviewOption","togglePreviewOption","setPreviewOption","tableName","FeatureToggleActive","featureToggleName","getRulesForFn","productId","ruleSet","getSubLineItemsForScopeFn","getRulesFor","getSubLineItemsForScope","productIds","productOld","productNew","totalOld","totalChange","u","t","AdminMessageDialog","showAdminMessage","paramsToImageURL","k","optionsForImageUrl","param","prefetchParams","optionParams","getConfiguratorImageData","validOptions","getGlencoeURL","ConfiguratorImageContainer","LineItemList","renderCardItems","renderBaseLineItem","getDivergentProductLineSubLineItems","acceptedProductLineTags","intersection","getSubLineItemAdjustmentDeltaForProductLine","getDivergentSubLineItems","oldInvalidOption","newValidOption","productTag","RequiredRuleUpdates","BreadcrumbPartials","lastSubLineItem","makeBreadcrumbPartials","lastBreadcrumbPartials","breadcrumbPartials","renderSubSectionHeader","renderLineItemHeader","renderSubLineItemHeader","getBreadcrumbPartials","RequiredProductLineUpdates","productLineUpdates","prevLabel","nextLabel","Item","totalDelta","Extra","componentDidMount","isAutoDecidable","toggleSelection","onlyAdminOrGuest","confirmedRuleSelection","accumulatedProductSelection","confirmedProductLineSelection","apiResponse","selectedProduct","getRequiredProductLineUpdates","getScopeForTags","productLineUpdatesWithDestroyed","keepElement","additionalSelection","totalTotal","totalSum","getRequiredRuleUpdates","currentSelection","updates","quantityBuyerSelection","getProductLineScopeForTags","hasAttachments","attachments","getPageMenu","getDeadlinesCount","unitCount","deadlinesCount","hasUnit","accountId","menu","menuItems","UnitsMenuItemText","renderLink","logoutAction","showTitle","SectionMenu","renderSectionGroup","sectionGroups","renderSectionGroups","groupedSections","ResponsiveImage","pick","handleOptionalLineItem","useRouterHistory","createHistory","basename","getItem","setItem","removeItem","dataStorage","createLocalStorage","FeatureToggle","stateFeatureToggles","featureTogglesArray","any","ignore","contextFeatureToggles","isFeatureVisible","setFeatureVisible","atLeastOne","ft","PropTypes","getFeatureToggles","actionLocator","resource","ShowIf","If","block","Unless","calculateDefaultPrice","defaultProduct","PriceCalculator","defaultPrice","actualPrice","excessQuantity","default_quantity","excessPrice","getExcessPrice","default_price","productPrice","getProductOptions","getProductsById","getProductGroupsById","productRuleMatcher","productLineMatcher","isProductRecommendable","getProductLinesForTags","getActiveProductTag","getProductLine","productGroups","activeProductTag","buyerSelection","buyerSelectedProductId","defaultProductPrice","default_product_id","isSelectable","isPortalOffer","productWithTags","defaultTotal","relativePrice","individual","defaultMinPrice","relativeTotal","getProductGroup","MAPPER","raw","defaultQuantity","isNumber","totalBase","totalDefault","subLineItemTotal","buyerSelectedOption","defaultOption","itemSelectedOption","validDefaultOption","optionsVisible","mapper","filterFn","truePredicate","siblings","takeRightWhile","dependencyMap","getSubLineItemForProductLineTag","productLineTag","anonymousUser","account_id","getProjectStatistics","getProjects","getProjectsSorted","orderBy","DEFAULT_PROJECT_BRANDING","getProjectId","getProjectMembers","getAllProjectOptions","projects","getImages","loaders","newFilter","INIT_STATE","SubLineItemSearchUpdate","events","applyUpdate","applyDelete","new_item","sub_line_items_search_results","oldSubLineItemsSearchResults","results","deleted_item","meta","oldMeta","oldResults","limit_value","isDeleted","total_count","ROOM_BOOK_META","RoomBookUpdate","applyRoomBookUpdate","applySectionDelete","applyLineItemCreate","applyMove","applyLineItemParentChanged","applySubLineItemCreate","updateRoomBook","entity_type","parentType","elementId","newPosition","oldPosition","move","newSectionId","oldSectionId","toISOString","elementType","updated","cloneDeep","primarySection","secondarySection","recalculate","roomBookTotal","primarySectionTotal","secondarySectionTotal","lineItemTotal","lineItemTotalBase","replacement_total","cancelled","default_total","replaced","activated","deepConcat","srcValue","mergeWith","oldData","newData","removeId","messageForm","contractor_id","parent_id","parent_type","severity","logo_medium_url","logo_large_url","banner_image_url","section_combos","COMPLETION_DIALOG","getCompletionDialogModel","show","ImagePreviewOverlay","boxOpacity","MagnifierContainer","inputPositionState","zoomContainerRef","_this$zoomContainerRe","calculatePositions","_this$state$inputPosi","getZoomContainerDimensions","getZoomImageDimensions","autoInPlace","getContextValue","getDueMessage","deadline","due_in","getIcon","getDeadlines","dls","scheduled_for","expires_at","ProductTagModalCard","tagDescription","onSelect","tagDescriptionId","unsafeHtmlDescription","handleProductLineSelect","selectProductOption","selectedString","raised","DOMPurify","sanitize","tagId","ProductLinePicker","getSalutations","getTitles","Account","getUserToken","getTrades","getFormattedTrades","getTradesDictionary","getLineItemLifeCycle","getProcessDefinitions","getDocumentTypes","getAccountProjects","getDeletableTypes","getUsers","productIdOrObject","product_line","SectionPage","renderConfigurator","renderSectionMenu","renderLineItems","parentSection","renderTagNames","renderDesignLineNames","productTagNames","productGroupTags","combinedTags","renderSku","standardSelection","hidePrice","renderPrice","buyerPortalRenderSku","approvedSelection","productStatus","selectionStatusText","renderSelectionStatusText","design_line_ids","inline","dline","Row","deprecated","margin","ownProps","getSectionCompletion","completion","subSectionsBySection","sectionTotal","subSectionCount","isSectionDecided","isSectionValid","isSectionConfigurable","isSectionPriceOnRequest","subSectionVisible","subSectionImage","getImageUrl","lineItemCount","subSectionTotal","sectionVisible","sectionImage","sectionGroup","getGroup","sS","display_mode","getSectionsById","getSectionsByParentId","sectionsById","getPageContentSections","getPageContentSectionsById","scrollTo","jumpTo","jumpToElement","scrollIntoView","behavior","getProductGroups","getTradesForProductGroups","acc","getProductGroupsWithProductIds","logger","debug","groupEnd","getTags","getTagsById","getProductLineGroups","getProductLineTags","productLineGroups","getHasProductGroupTags","productsById","productGroupsById","productLineGroupId","productLineTags","getSelectedProductTagsWithAssociatedSubLineItem","flatRoomBook","getSelectedProductTags","selectedProductTagsWithAssociatedSubLineItem","getCountedProductTags","selectedProductTags","countBy","countedProductTags","compositeId","currentCount","getSelectedTagGroupsForProductLineGroup","selectedTagGroups","currentRestriction","getCountedTagsForProductLineGroup","getApplicableGroups","applicableGroups","getActiveProductLines","selectedTags","countedTags","uniqSelectedTags","maxTagCount","commonTags","validTags","getActivatedProductLines","tagMapping","pl","activeProductLines","productLineInfo","isAffectedByProductLine","matchesCurrentConstraints","tagsById","hasProductGroupTags","relevantTags","relevantTagsByLineGroup","groupId","applicableTags","sortedGroupTags","totalSelection","productLineGroup","productLinesForTags","_createClass","_clsx2","_reactSwipeable","_lodash2","_lodash4","_lodash6","_resizeObserverPolyfill2","_SVG2","screenChangeEvents","imageSetType","srcSet","media","isEnterOrSpaceKey","parseInt","keyCode","which","ImageGallery","_React$Component","currentIndex","thumbsTranslate","currentSlideOffset","galleryWidth","thumbnailsWrapperWidth","thumbnailsWrapperHeight","isFullscreen","isPlaying","loadedImages","imageGallery","thumbnailsWrapper","thumbnails","imageGallerySlideWrapper","handleKeyDown","handleOnSwiped","handleScreenChange","handleSwiping","onThumbnailMouseLeave","handleImageError","pauseOrPlay","renderThumbInner","slideLeft","slideRight","toggleFullScreen","togglePlay","unthrottledSlideToIndex","slideToIndex","trailing","lazyLoad","lazyLoaded","autoPlay","initResizeObserver","addScreenChangeEvent","prevState","_props","showThumbnails","itemsSizeChanged","itemsChanged","startIndexUpdated","thumbnailsPositionChanged","showThumbnailsChanged","removeResizeObserver","slideThumbnailBar","removeScreenChangeEvent","playPauseIntervalId","clearInterval","transitionTimer","_state","isTransitioning","_props2","onSlide","onThumbnailClick","thumbnailMouseOverTimer","_state2","scrollingUpDown","scrollingLeftRight","onScreenChange","modalFullscreen","indexDifference","_props3","disableThumbnailScroll","_state3","totalScroll","thumbElement","isThumbnailVertical","scrollHeight","scrollWidth","_props4","infinite","alignment","leftClassName","rightClassName","_state4","previousIndex","indexChanged","firstSlideWasPrevSlide","secondSlideWasPrevSlide","firstSlideIsNextSlide","secondSlideIsNextSlide","swipingEnded","translateX","gallerySlideWrapperHeight","_state5","slideStyle","_props5","useTranslate3D","isRTL","baseTranslateX","totalSlides","getTranslateXForTwoSlide","translate","WebkitTransform","MozTransform","msTransform","OTransform","_props6","verticalTranslateValue","_props7","slideOnThumbnailOver","onMouseOver","showBullets","slides","bullets","getAlignmentClassName","originalClass","thumbnailClass","handleRenderItem","handleRenderThumbInner","showItem","getSlideStyle","slide","tabIndex","onKeyUp","handleSlideKeyUp","onFocus","shouldPushSlideOnInfiniteMode","igThumbnailClass","handleThumbnailMouseOver","handleThumbnailKeyUp","igBulletClass","bulletClass","bulletOnClick","itemIndex","_state6","_state7","slideIsTransitioning","ignoreIsTransitioning","isFirstOrLastSlide","_state8","setThumbsTranslate","scroll","getThumbsTranslate","_props8","canSlideNext","canSlidePrevious","_props9","_props10","disableSwipe","_state9","swipingTransitionDuration","setScrollDirection","side","swipingTransition","swipeThreshold","_props11","flickThreshold","_state10","swipeDirection","isFlick","handleOnSwipedTo","_state11","slideTo","sufficientSwipe","canSlideLeft","canSlideRight","_props12","disableKeyDown","useBrowserFullscreen","exitFullScreen","onErrorImageURL","resizeObserver","fullScreen","_props13","fullScreenElement","fullscreenElement","msFullscreenElement","mozFullScreenElement","webkitFullscreenElement","_state12","_props14","onBeforeSlide","slideCount","nextIndex","onSliding","slideNext","slidePrevious","_state13","_state14","onThumbnailMouseOver","eventName","gallery","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","setModalFullscreen","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","shouldCallOnPlay","_props15","onPlay","slideInterval","setInterval","shouldCallOnPause","onPause","itemSrc","fullscreen","imageSet","originalAlt","sizes","originalTitle","handleThumbnailError","onThumbnailError","thumbnailAlt","thumbnailTitle","thumbnailLabel","_state15","_props16","additionalClass","indexSeparator","renderFullscreenButton","renderCustomControls","renderLeftNav","renderRightNav","showIndex","showNav","renderPlayPauseButton","thumbnailStyle","getThumbnailStyle","_getSlideItems","getSlideItems","slideWrapperClass","slideWrapper","canSlide","igClass","igContentClass","thumbnailWrapperClass","getThumbnailBarHeight","_SideBySideMagnifier","_Magnifier","_GlassMagnifier","_PictureInPictureMagnifier","_MagnifierPreview","_MagnifierZoom","pointing","secondary","PriceLabel","ImageCanvas","SubLineItemGrid","renderLargeGrid","minHeight","renderProductInfo","renderQuantity","renderMobileGrid","updateQuantityFn","modifier","onlyTablet","onlyMobile","renderTopMessage","replacableLineItem","renderBottomMessage","renderReplacementLineItems","replacementLineItems","lineItemPath","replacementToId","findReplacementLineItems","rli","AttachmentCard","attachment","AttachmentCards","attachmentsPerRow","Attachments","setIsLoading","groupedAttachments","attachmentType","attachmentsForType","getUnitId","getConfiguratorInfo","configuratorInfo","configuratorTitle","buttonColor","buttonIcon","buttonContent","float","ConfiguratorsMenu","renderConfiguratorCard","ErrorPage","UnitAwarePage","loadUnit","all","getMapping","Imprint","imprint","getIsLoading","createIsLoadingSelector","regExp","getContractors","getContractorAssignments","getMacros","macro","getProjectCatalogs","getDocumentationItems","documentation_items","inquiryId","productSpecifications","specification","instructions","displayNumber","ProductShape","costTrades","replacement_for_id","abstractSectionShape","SubSectionShape","subLineItemCount","finalStatusId","preparedLineItems","lineItemsById","replacable","totalRefund","getLineItemsById","getLineItemsBySectionId","lineItemsByReplacementId","supplierId","ProductSpecificationResource","ProductImageResource","ProductVideosResource","ProductFilesResource","ProductMetaDataResource","SupplierResource","isProjectPage","processDefinitions","proc","getProcessDefinition","pd","handlesStatus","phases","lc","getPhases","getPhase","phase","getStateById","phase_id","phase_label","phase_color","getReportGroups","report_groups","includeNone","getCurrentAccount","getCurrentUser","projectFeatureToggles","feature","getProjectRoles","project_role","getCurrentAccountRole","hasAccountRoleRight","webpackContext","req","webpackContextResolve","__webpack_require__"],"mappings":"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","file":"js/MarketingPortalApp-667a935e13da4dfbdc04.chunk.js","sourcesContent":["import { createSelector } from \"reselect\";\nimport { get } from \"lodash\";\n\nimport { getI18N, getPageName } from \"shared/selectors/base\";\nimport { getRootSections } from \"shared/selectors/unit/sections\";\nimport { getProjectSlug } from \"shared/selectors/project\";\nimport { getSubLineItems } from \"./subLineItems\";\n\nexport const getOnly3D = props => {\n return get(props, \"router.location.query.only3D\", \"\");\n};\n\nexport const getBaseUnit = state => {\n return get(state, [\"pageContent\", \"unit\"], null);\n};\n\nexport const getUnitCount = state => {\n return get(state, [\"pageContent\", \"unit_count\"], 0);\n};\n\nexport const getUnit = createSelector(\n [getBaseUnit, getRootSections],\n (unit, sections) => {\n return {\n ...unit,\n total: sections.reduce((sum, s) => sum + s.total, 0),\n isPriceOnRequest: sections.some(s => s.isPriceOnRequest),\n isDecided: sections.every(s => s.isDecided)\n };\n }\n);\n\nexport const getUnitTotal = createSelector([getUnit], unit => unit.total);\n\n/*\n Journey and Unit Progress may differ.\n see: https://gitlab.com/baudigital/plano/-/merge_requests/1124#note_556077382\n */\nexport const getUnitSamplingProgress = createSelector(\n [getSubLineItems],\n subLineItems => {\n return (\n subLineItems.filter(sli => sli.hasBuyerSelection).length /\n subLineItems.length\n );\n }\n);\n\nexport const getPageTitle = createSelector(\n [getUnit, getI18N, getPageName],\n (unit, i18n, pageName) => {\n let pageTitle = i18n[pageName];\n\n if (unit && unit.display_name) {\n pageTitle = [pageTitle, unit.display_name].join(\" - \");\n }\n\n return [pageTitle, i18n[\"meta.app.name\"]].join(\" - \");\n }\n);\n\nexport const isSampleUnit = createSelector([getUnit], unit => {\n return get(unit, \"sample\", false);\n});\n\nexport const getUnitPath = createSelector(\n [getUnit, getProjectSlug],\n (unit, projectSlug) => {\n if (unit && projectSlug) {\n return `/${projectSlug}/unit/${unit.slug}`;\n }\n return \"/\";\n }\n);\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n\n\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n\n return false;\n });\n return result;\n }\n\n return (\n /** @class */\n function () {\n function class_1() {\n this.__entries__ = [];\n }\n\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype[\"delete\"] = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n return class_1;\n }()\n );\n}();\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\n\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; // Returns global object of a current environment.\n\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n } // eslint-disable-next-line no-new-func\n\n\n return Function('return this')();\n}();\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\n\n\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}(); // Defines minimum timeout before adding a trailing call.\n\n\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\n\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n\n\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n\n\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n } // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n\n\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n} // Minimum delay before invoking the update of observers.\n\n\nvar REFRESH_DELAY = 20; // A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\n\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; // Check if MutationObserver is available.\n\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\n\nvar ResizeObserverController =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n } // Add listeners if they haven't been added yet.\n\n\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer); // Remove observer if it's present in registry.\n\n if (~index) {\n observers.splice(index, 1);\n } // Remove listeners if controller has no connected observers.\n\n\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_(); // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n\n\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n }); // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n } // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n\n\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b; // Detect whether transition may affect dimensions of an element.\n\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\n\n\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n};\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\n\n\nvar getWindowOf = function getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local global object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || global$1;\n}; // Placeholder of an empty content rectangle.\n\n\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\n\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\n\n\nfunction getBordersSize(styles) {\n var positions = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\n\n\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight; // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom; // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n\n var width = toFloat(styles.width),\n height = toFloat(styles.height); // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n } // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n\n\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight; // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n } // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n\n\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\n\n\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height; // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype); // Rectangle's properties are not writable and non-enumerable.\n\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\n\n\nvar ResizeObservation =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n\n\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n\n return ResizeObservation;\n}();\n\nvar ResizeObserverEntry =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit); // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n\n return ResizeObserverEntry;\n}();\n\nvar ResizeObserverSPI =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is already being observed.\n\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this); // Force the update of observations.\n\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is not being observed.\n\n if (!observations.has(target)) {\n return;\n }\n\n observations[\"delete\"](target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_; // Create ResizeObserverEntry instance for every active observation.\n\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n\n return ResizeObserverSPI;\n}(); // Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\n\n\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\n\nvar ResizeObserver =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n\n return ResizeObserver;\n}(); // Expose public methods of ResizeObserver.\n\n\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\n\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n}();\n\nexport default index;","import apiRequest from \"shared/network/apiRequest\";\nimport Resources from \"shared/actions/resourcesActions\";\n\nexport default class ProductGroupResource extends Resources {\n constructor(catalogId, dispatch) {\n super(\n dispatch,\n \"product_group\",\n `/api/v1/project_catalogs/${catalogId}/product_groups`\n );\n }\n\n updatePrices(productGroupId, values) {\n return apiRequest\n .patch(`${this.url}/${productGroupId}/prices`, this.dispatch, values)\n .then(this.propagateUpdate.bind(this));\n }\n\n duplicate(id) {\n return apiRequest.post(`${this.url}/${id}/duplicate`, this.dispatch);\n }\n\n usageCounts(id) {\n return apiRequest\n .get(`${this.url}/${id}/usage_counts`, this.dispatch)\n .then(this.propagateUpdate.bind(this));\n }\n}\n\nexport class ProductPriceResource extends Resources {\n constructor(productGroupId, dispatch) {\n super(dispatch, \"price\", `/api/v1/product_groups/${productGroupId}/prices`);\n }\n}\n\nexport class ProductGroupRuleSetResource extends Resources {\n constructor(catalogId, dispatch) {\n super(\n dispatch,\n \"productGroupRuleSet\",\n `/api/v1/project_catalogs/${catalogId}/product_group_rule_sets`,\n \"productGroupRuleSets\"\n );\n }\n}\n","import React from 'react';\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\nvar defaultProps = {\n preventDefaultTouchmoveEvent: false,\n delta: 10,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true\n};\nvar initialState = {\n xy: [0, 0],\n swiping: false,\n eventData: undefined,\n start: undefined\n};\nvar LEFT = 'Left';\nvar RIGHT = 'Right';\nvar UP = 'Up';\nvar DOWN = 'Down';\nvar touchStart = 'touchstart';\nvar touchMove = 'touchmove';\nvar touchEnd = 'touchend';\nvar mouseMove = 'mousemove';\nvar mouseUp = 'mouseup';\n\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return LEFT;\n }\n\n return RIGHT;\n } else if (deltaY > 0) {\n return UP;\n }\n\n return DOWN;\n}\n\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0) return pos;\n var angleInRadians = Math.PI / 180 * angle;\n var x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n var y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\n\nfunction getHandlers(set, handlerProps) {\n var onStart = function onStart(event) {\n // if more than a single touch don't track, for now...\n if (event.touches && event.touches.length > 1) return;\n set(function (state, props) {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n var xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n return _extends({}, state, initialState, {\n eventData: {\n initial: [].concat(xy),\n first: true\n },\n xy: xy,\n start: event.timeStamp || 0\n });\n });\n };\n\n var onMove = function onMove(event) {\n set(function (state, props) {\n if (!state.xy[0] || !state.xy[1] || event.touches && event.touches.length > 1) {\n return state;\n }\n\n var _ref2 = event.touches ? event.touches[0] : event,\n clientX = _ref2.clientX,\n clientY = _ref2.clientY;\n\n var _rotateXYByAngle = rotateXYByAngle([clientX, clientY], props.rotationAngle),\n x = _rotateXYByAngle[0],\n y = _rotateXYByAngle[1];\n\n var deltaX = state.xy[0] - x;\n var deltaY = state.xy[1] - y;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n var time = (event.timeStamp || 0) - state.start;\n var velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1); // if swipe is under delta and we have not started to track a swipe: skip update\n\n if (absX < props.delta && absY < props.delta && !state.swiping) return state;\n var dir = getDirection(absX, absY, deltaX, deltaY);\n\n var eventData = _extends({}, state.eventData, {\n event: event,\n absX: absX,\n absY: absY,\n deltaX: deltaX,\n deltaY: deltaY,\n velocity: velocity,\n dir: dir\n });\n\n props.onSwiping && props.onSwiping(eventData); // track if a swipe is cancelable(handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n\n var cancelablePageSwipe = false;\n\n if (props.onSwiping || props.onSwiped || props[\"onSwiped\" + dir]) {\n cancelablePageSwipe = true;\n }\n\n if (cancelablePageSwipe && props.preventDefaultTouchmoveEvent && props.trackTouch && event.cancelable) event.preventDefault(); // first is now always false\n\n return _extends({}, state, {\n eventData: _extends({}, eventData, {\n first: false\n }),\n swiping: true\n });\n });\n };\n\n var onEnd = function onEnd(event) {\n set(function (state, props) {\n var eventData;\n\n if (state.swiping) {\n eventData = _extends({}, state.eventData, {\n event: event\n });\n props.onSwiped && props.onSwiped(eventData);\n props[\"onSwiped\" + eventData.dir] && props[\"onSwiped\" + eventData.dir](eventData);\n }\n\n return _extends({}, state, initialState, {\n eventData: eventData\n });\n });\n };\n\n var cleanUpMouse = function cleanUpMouse() {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n\n var onUp = function onUp(e) {\n cleanUpMouse();\n onEnd(e);\n };\n\n var attachTouch = function attachTouch(el) {\n if (el && el.addEventListener) {\n // attach touch event listeners and handlers\n var tls = [[touchStart, onStart], [touchMove, onMove], [touchEnd, onEnd]];\n tls.forEach(function (_ref3) {\n var e = _ref3[0],\n h = _ref3[1];\n return el.addEventListener(e, h);\n }); // return properly scoped cleanup method for removing listeners\n\n return function () {\n return tls.forEach(function (_ref4) {\n var e = _ref4[0],\n h = _ref4[1];\n return el.removeEventListener(e, h);\n });\n };\n }\n };\n\n var onRef = function onRef(el) {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null) return;\n set(function (state, props) {\n // if the same DOM el as previous just return state\n if (state.el === el) return state;\n var addState = {}; // if new DOM el clean up old DOM and reset cleanUpTouch\n\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = null;\n } // only attach if we want to track touch\n\n\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el);\n } // store event attached DOM el for comparison, clean up, and re-attachment\n\n\n return _extends({}, state, {\n el: el\n }, addState);\n });\n }; // set ref callback to attach touch event listeners\n\n\n var output = {\n ref: onRef // if track mouse attach mouse down listener\n\n };\n\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n\n return [output, attachTouch];\n}\n\nfunction updateTransientState(state, props, attachTouch) {\n var addState = {}; // clean up touch handlers if no longer tracking touches\n\n if (!props.trackTouch && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = null;\n } else if (props.trackTouch && !state.cleanUpTouch) {\n // attach/re-attach touch handlers\n if (state.el) {\n addState.cleanUpTouch = attachTouch(state.el);\n }\n }\n\n return _extends({}, state, addState);\n}\n\nfunction useSwipeable(props) {\n var trackMouse = props.trackMouse;\n var transientState = React.useRef(_extends({}, initialState, {\n type: 'hook'\n }));\n var transientProps = React.useRef();\n transientProps.current = _extends({}, defaultProps, props);\n\n var _React$useMemo = React.useMemo(function () {\n return getHandlers(function (cb) {\n return transientState.current = cb(transientState.current, transientProps.current);\n }, {\n trackMouse: trackMouse\n });\n }, [trackMouse]),\n handlers = _React$useMemo[0],\n attachTouch = _React$useMemo[1];\n\n transientState.current = updateTransientState(transientState.current, transientProps.current, attachTouch);\n return handlers;\n}\n\nvar Swipeable = /*#__PURE__*/function (_React$PureComponent) {\n _inheritsLoose(Swipeable, _React$PureComponent);\n\n function Swipeable(props) {\n var _this;\n\n _this = _React$PureComponent.call(this, props) || this;\n\n _this._set = function (cb) {\n _this.transientState = cb(_this.transientState, _this.props);\n };\n\n _this.transientState = _extends({}, initialState, {\n type: 'class'\n });\n return _this;\n }\n\n var _proto = Swipeable.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n className = _this$props.className,\n style = _this$props.style,\n _this$props$nodeName = _this$props.nodeName,\n nodeName = _this$props$nodeName === void 0 ? 'div' : _this$props$nodeName,\n innerRef = _this$props.innerRef,\n children = _this$props.children,\n trackMouse = _this$props.trackMouse;\n\n var _getHandlers = getHandlers(this._set, {\n trackMouse: trackMouse\n }),\n handlers = _getHandlers[0],\n attachTouch = _getHandlers[1];\n\n this.transientState = updateTransientState(this.transientState, this.props, attachTouch);\n var ref = innerRef ? function (el) {\n return innerRef(el), handlers.ref(el);\n } : handlers.ref;\n return /*#__PURE__*/React.createElement(nodeName, _extends({}, handlers, {\n className: className,\n style: style,\n ref: ref\n }), children);\n };\n\n return Swipeable;\n}(React.PureComponent);\n\nSwipeable.defaultProps = defaultProps;\nexport { DOWN, LEFT, RIGHT, Swipeable, UP, useSwipeable };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\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 nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\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 match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Detect free variable `exports`. */\n\nvar freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\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\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n}\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 */\n\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\n return array;\n}\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\n\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n\n return false;\n}\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 */\n\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\n return result;\n}\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 */\n\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\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 */\n\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\n\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\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 */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\n\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\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 */\n\n\nvar nativeObjectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined,\n _Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n/* Built-in method references that are verified to be native. */\n\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\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 */\n\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/**\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 */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\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 */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\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 */\n\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} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\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 */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\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 */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\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 */\n\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\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\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 */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\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/**\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 */\n\n\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\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 */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\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 */\n\n\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n}\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 */\n\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\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 */\n\n\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\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 */\n\n\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\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 */\n\n\nfunction stackHas(key) {\n return this.__data__.has(key);\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 */\n\n\nfunction stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\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 */\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)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\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 */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\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 */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\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 */\n\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\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 */\n\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\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 */\n\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\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 */\n\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\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 */\n\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n\n }\n\n return false;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\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 */\n\n\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\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 */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\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 */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : 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 */\n\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\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\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 */\n\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\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 */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(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:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\n };\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 */\n\n\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\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 */\n\n\nfunction isKeyable(value) {\n var type = _typeof(value);\n\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\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 */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\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 */\n\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\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 */\n\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\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 */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\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 */\n\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\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 */\n\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\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 */\n\nvar isArray = Array.isArray;\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 */\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\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 */\n\n\nvar isBuffer = nativeIsBuffer || stubFalse;\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\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 */\n\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\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\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\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 */\n\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\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 */\n\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return value != null && (type == 'object' || type == 'function');\n}\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 */\n\n\nfunction isObjectLike(value) {\n return value != null && _typeof(value) == 'object';\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 */\n\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 */\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\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 */\n\n\nfunction stubArray() {\n return [];\n}\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 */\n\n\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar left = _react2[\"default\"].createElement('polyline', {\n points: '15 18 9 12 15 6'\n});\n\nvar right = _react2[\"default\"].createElement('polyline', {\n points: '9 18 15 12 9 6'\n});\n\nvar maximize = _react2[\"default\"].createElement('path', {\n d: 'M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3'\n});\n\nvar minimize = _react2[\"default\"].createElement('path', {\n d: 'M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3'\n});\n\nvar play = _react2[\"default\"].createElement('polygon', {\n points: '5 3 19 12 5 21 5 3'\n});\n\nvar pause = _react2[\"default\"].createElement(_react2[\"default\"].Fragment, null, _react2[\"default\"].createElement('rect', {\n x: '6',\n y: '4',\n width: '4',\n height: '16'\n}), _react2[\"default\"].createElement('rect', {\n x: '14',\n y: '4',\n width: '4',\n height: '16'\n}));\n\nvar iconMapper = {\n left: left,\n right: right,\n maximize: maximize,\n minimize: minimize,\n play: play,\n pause: pause\n};\n\nvar SVG = function SVG(props) {\n var strokeWidth = props.strokeWidth,\n viewBox = props.viewBox,\n icon = props.icon;\n return _react2[\"default\"].createElement('svg', {\n className: 'image-gallery-svg',\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: viewBox,\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: strokeWidth,\n strokeLinecap: 'round',\n strokeLinejoin: 'round'\n }, iconMapper[icon]);\n};\n\nSVG.propTypes = {\n strokeWidth: _propTypes.number,\n viewBox: _propTypes.string,\n icon: (0, _propTypes.oneOf)(['left', 'right', 'maximize', 'minimize', 'play', 'pause']).isRequired\n};\nSVG.defaultProps = {\n strokeWidth: 1,\n viewBox: '0 0 24 24'\n};\nexports[\"default\"] = SVG;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _click = _interopRequireDefault(require(\"./click\"));\n\nvar _doubleClick = _interopRequireDefault(require(\"./doubleClick\"));\n\nvar _hover = _interopRequireDefault(require(\"./hover\"));\n\nvar _mouseDown = _interopRequireDefault(require(\"./mouseDown\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar _default = {\n click: _click[\"default\"],\n doubleClick: _doubleClick[\"default\"],\n hover: _hover[\"default\"],\n mouseDown: _mouseDown[\"default\"]\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction mouseDown(e) {\n this.mouseDown = true;\n this.clickMoveStartRef = e.clientX + e.clientY;\n}\n\nfunction mouseUp(e) {\n if (!this.mouseDown) return;\n this.mouseDown = false;\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n var clickMoveEnd = position.x + position.y;\n var diff = Math.abs(this.clickMoveStartRef - clickMoveEnd);\n\n if (diff < this.props.clickMoveLimit) {\n this.toggleActive(position);\n }\n}\n\nfunction mouseMove(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n\n if (!this.getState().active) {\n return this.setPassivePosition(position);\n }\n\n this.setPosition(position, this.mouseDown);\n}\n\nfunction mouseLeave() {\n this.mouseDown = false;\n}\n\nvar _default = {\n mouseDown: mouseDown,\n mouseUp: mouseUp,\n mouseMove: mouseMove,\n mouseLeave: mouseLeave,\n dragStart: _utils[\"default\"].preventDefault\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction mouseDown() {\n this.mouseDown = true;\n}\n\nfunction mouseUp() {\n this.mouseDown = false;\n}\n\nfunction dblClick(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n this.toggleActive(position);\n}\n\nfunction mouseMove(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n\n if (!this.getState().active) {\n return this.setPassivePosition(position);\n }\n\n this.setPosition(position, this.mouseDown);\n}\n\nfunction mouseLeave() {\n this.mouseDown = false;\n}\n\nvar _default = {\n mouseDown: mouseDown,\n mouseUp: mouseUp,\n dblClick: dblClick,\n mouseMove: mouseMove,\n mouseLeave: mouseLeave,\n dragStart: _utils[\"default\"].preventDefault\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction mouseDown() {\n this.mouseDown = true;\n}\n\nfunction mouseUp() {\n this.mouseDown = false;\n}\n\nfunction mouseMove(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n\n if (!this.getState().active) {\n return this.activate(position);\n }\n\n this.setPosition(position, this.mouseDown);\n}\n\nfunction mouseEnter(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n this.activate(position);\n}\n\nfunction mouseLeave() {\n this.deactivate();\n this.mouseDown = false;\n}\n\nvar _default = {\n mouseDown: mouseDown,\n mouseUp: mouseUp,\n mouseMove: mouseMove,\n mouseEnter: mouseEnter,\n mouseLeave: mouseLeave,\n dragStart: _utils[\"default\"].preventDefault\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction mouseDown(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n this.activate(position);\n}\n\nfunction mouseUp() {\n this.deactivate();\n\n if (this.mouseOutside) {\n addRemoveOutsideHandlers.call(this);\n }\n}\n\nfunction mouseMove(e) {\n var position = {\n x: e.clientX,\n y: e.clientY\n };\n\n if (!this.getState().active) {\n return this.setPassivePosition(position);\n }\n\n this.setPosition(position, true);\n}\n\nfunction mouseEnter() {\n if (this.mouseOutside) {\n this.mouseOutside = false;\n addRemoveOutsideHandlers.call(this);\n }\n}\n\nfunction mouseLeave() {\n if (!this.getState().active) {\n return;\n }\n\n if (!this.props.mouseDownAllowOutside) {\n return this.deactivate();\n }\n\n this.mouseOutside = true;\n addRemoveOutsideHandlers.call(this, true);\n}\n\nfunction addRemoveOutsideHandlers(add) {\n this.mouseHandlers.filter(function (h) {\n return h.event === \"mouseup\" || h.event === \"mousemove\";\n }).forEach(function (_ref) {\n var event = _ref.event,\n handler = _ref.handler;\n\n if (add) {\n window.addEventListener(event, handler);\n } else {\n window.removeEventListener(event, handler);\n }\n });\n}\n\nvar _default = {\n mouseDown: mouseDown,\n mouseUp: mouseUp,\n mouseMove: mouseMove,\n mouseLeave: mouseLeave,\n mouseEnter: mouseEnter,\n dragStart: _utils[\"default\"].preventDefault\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _doubleTap = _interopRequireDefault(require(\"./doubleTap\"));\n\nvar _longTouch = _interopRequireDefault(require(\"./longTouch\"));\n\nvar _tap = _interopRequireDefault(require(\"./tap\"));\n\nvar _touch = _interopRequireDefault(require(\"./touch\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar _default = {\n doubleTap: _doubleTap[\"default\"],\n longTouch: _longTouch[\"default\"],\n tap: _tap[\"default\"],\n touch: _touch[\"default\"]\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction touchStart() {\n this.touched = true;\n this.justTouched = true;\n this.startTapTimer();\n}\n\nfunction touchEnd(e) {\n if (e.cancelable) e.preventDefault();\n this.touched = false;\n this.justTouched = false;\n\n if (this.tapTimedOut) {\n this.tapTimedOut = false;\n return;\n }\n\n clearTimeout(this.tapTimer);\n\n if (this.tapped && !this.doubleTapTimedOut) {\n clearTimeout(this.doubleTapTimer);\n var touch = e.changedTouches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.toggleActive(position);\n this.tapped = false;\n return;\n }\n\n this.tapTimedOut = false;\n this.doubleTapTimedOut = false;\n this.tapped = true;\n this.startDoubleTapTimer();\n}\n\nfunction touchMove(e) {\n if (!this.getState().active) return;\n if (e.cancelable) e.preventDefault();\n var touch = e.touches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.setPosition(position, this.touched && !this.justTouched);\n this.justTouched = false;\n}\n\nfunction touchCancel() {\n this.deactivate();\n}\n\nvar _default = {\n touchStart: touchStart,\n touchEnd: touchEnd,\n touchMove: touchMove,\n touchCancel: touchCancel\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction touchStart(e) {\n this.touched = true;\n this.justTouched = true;\n clearTimeout(this.longTouchTimer);\n var touch = e.touches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.longTouchStartRef = position.x + position.y;\n this.startLongTouchTimer(position);\n}\n\nfunction touchEnd(e) {\n if (e.cancelable) e.preventDefault();\n this.touched = false;\n this.justTouched = false;\n}\n\nfunction touchMove(e) {\n var touch = e.touches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n var end = position.x + position.y;\n var diff = Math.abs(this.longTouchStartRef - end);\n\n if (diff > this.props.longTouchMoveLimit) {\n clearTimeout(this.longTouchTimer);\n }\n\n if (!this.getState().active) return;\n if (e.cancelable) e.preventDefault();\n this.setPosition(position, this.touched && !this.justTouched);\n this.justTouched = false;\n}\n\nfunction touchCancel() {\n this.deactivate();\n}\n\nvar _default = {\n touchStart: touchStart,\n touchEnd: touchEnd,\n touchMove: touchMove,\n touchCancel: touchCancel\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction touchStart() {\n this.touched = true;\n this.justTouched = true;\n this.startTapTimer();\n}\n\nfunction touchEnd(e) {\n if (e.cancelable) e.preventDefault();\n this.touched = false;\n this.justTouched = false;\n\n if (this.tapTimedOut) {\n this.tapTimedOut = false;\n return;\n }\n\n clearTimeout(this.tapTimer);\n var touch = e.changedTouches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.toggleActive(position);\n this.tapTimedOut = false;\n}\n\nfunction touchMove(e) {\n if (!this.getState().active) return;\n if (e.cancelable) e.preventDefault();\n var touch = e.touches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.setPosition(position, this.touched && !this.justTouched);\n this.justTouched = false;\n}\n\nfunction touchCancel() {\n this.deactivate();\n}\n\nvar _default = {\n touchStart: touchStart,\n touchEnd: touchEnd,\n touchMove: touchMove,\n touchCancel: touchCancel\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction touchStart(e) {\n this.touched = true;\n this.justTouched = true;\n var touch = e.touches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.activate(position);\n}\n\nfunction touchEnd(e) {\n if (e.cancelable) e.preventDefault();\n this.touched = false;\n this.justTouched = false;\n this.deactivate();\n}\n\nfunction touchMove(e) {\n if (!this.getState().active) return;\n if (e.cancelable) e.preventDefault();\n var touch = e.touches[0];\n var position = {\n x: touch.clientX,\n y: touch.clientY\n };\n this.setPosition(position, this.touched && !this.justTouched);\n this.justTouched = false;\n}\n\nfunction touchCancel() {\n this.deactivate();\n}\n\nvar _default = {\n touchStart: touchStart,\n touchEnd: touchEnd,\n touchMove: touchMove,\n touchCancel: touchCancel\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TOUCH_ACTIVATION = exports.MOUSE_ACTIVATION = void 0;\nvar MOUSE_ACTIVATION = {\n CLICK: \"click\",\n DOUBLE_CLICK: \"doubleClick\",\n HOVER: \"hover\",\n MOUSE_DOWN: \"mouseDown\"\n};\nexports.MOUSE_ACTIVATION = MOUSE_ACTIVATION;\nvar TOUCH_ACTIVATION = {\n DOUBLE_TAP: \"doubleTap\",\n LONG_TOUCH: \"longTouch\",\n TAP: \"tap\",\n TOUCH: \"touch\"\n};\nexports.TOUCH_ACTIVATION = TOUCH_ACTIVATION;","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _reactInputPosition = _interopRequireWildcard(require(\"react-input-position\"));\n\nvar _SideBySideRenderer = _interopRequireDefault(require(\"./SideBySideRenderer\"));\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar SideBySideMagnifier = function SideBySideMagnifier(props) {\n var imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n overlayOpacity = props.overlayOpacity,\n overlayBoxOpacity = props.overlayBoxOpacity,\n overlayBackgroundColor = props.overlayBackgroundColor,\n overlayBoxColor = props.overlayBoxColor,\n overlayBoxImage = props.overlayBoxImage,\n overlayBoxImageSize = props.overlayBoxImageSize,\n cursorStyle = props.cursorStyle,\n alwaysInPlace = props.alwaysInPlace,\n transitionSpeed = props.transitionSpeed,\n transitionSpeedInPlace = props.transitionSpeedInPlace,\n renderOverlay = props.renderOverlay,\n className = props.className,\n style = props.style,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n switchSides = props.switchSides,\n onZoomStart = props.onZoomStart,\n onZoomEnd = props.onZoomEnd,\n fillAvailableSpace = props.fillAvailableSpace,\n fillAlignTop = props.fillAlignTop,\n fillGapLeft = props.fillGapLeft,\n fillGapRight = props.fillGapRight,\n fillGapTop = props.fillGapTop,\n fillGapBottom = props.fillGapBottom,\n inPlaceMinBreakpoint = props.inPlaceMinBreakpoint,\n zoomContainerBorder = props.zoomContainerBorder,\n zoomContainerBoxShadow = props.zoomContainerBoxShadow,\n mouseActivation = props.mouseActivation,\n touchActivation = props.touchActivation;\n return /*#__PURE__*/_react[\"default\"].createElement(_reactInputPosition[\"default\"], {\n style: style,\n className: className,\n touchActivationMethod: touchActivation,\n mouseActivationMethod: mouseActivation,\n onActivate: onZoomStart,\n onDeactivate: onZoomEnd,\n trackItemPosition: true,\n linkItemToActive: true\n }, /*#__PURE__*/_react[\"default\"].createElement(_SideBySideRenderer[\"default\"], {\n imageSrc: imageSrc,\n largeImageSrc: largeImageSrc,\n imageAlt: imageAlt,\n overlayOpacity: overlayOpacity,\n overlayBoxOpacity: overlayBoxOpacity,\n overlayBackgroundColor: overlayBackgroundColor,\n overlayBoxColor: overlayBoxColor,\n overlayBoxImage: overlayBoxImage,\n overlayBoxImageSize: overlayBoxImageSize,\n alwaysInPlace: alwaysInPlace,\n transitionSpeed: transitionSpeed,\n transitionSpeedInPlace: transitionSpeedInPlace,\n renderOverlay: renderOverlay,\n cursorStyle: cursorStyle,\n onImageLoad: onImageLoad,\n onLargeImageLoad: onLargeImageLoad,\n switchSides: switchSides,\n fillAvailableSpace: fillAvailableSpace,\n fillAlignTop: fillAlignTop,\n fillGapLeft: fillGapLeft,\n fillGapRight: fillGapRight,\n fillGapTop: fillGapTop,\n fillGapBottom: fillGapBottom,\n inPlaceMinBreakpoint: inPlaceMinBreakpoint,\n zoomContainerBorder: zoomContainerBorder,\n zoomContainerBoxShadow: zoomContainerBoxShadow\n }));\n};\n\nSideBySideMagnifier.propTypes = {\n imageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n largeImageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n imageAlt: _propTypes[\"default\"].string,\n overlayOpacity: _propTypes[\"default\"].number,\n overlayBoxOpacity: _propTypes[\"default\"].number,\n overlayBackgroundColor: _propTypes[\"default\"].string,\n overlayBoxColor: _propTypes[\"default\"].string,\n overlayBoxImage: _propTypes[\"default\"].string,\n overlayBoxImageSize: _propTypes[\"default\"].string,\n cursorStyle: _propTypes[\"default\"].string,\n alwaysInPlace: _propTypes[\"default\"].bool,\n transitionSpeed: _propTypes[\"default\"].number,\n transitionSpeedInPlace: _propTypes[\"default\"].number,\n renderOverlay: _propTypes[\"default\"].func,\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n onImageLoad: _propTypes[\"default\"].func,\n onLargeImageLoad: _propTypes[\"default\"].func,\n fillAvailableSpace: _propTypes[\"default\"].bool,\n fillAlignTop: _propTypes[\"default\"].bool,\n fillGapLeft: _propTypes[\"default\"].number,\n fillGapRight: _propTypes[\"default\"].number,\n fillGapTop: _propTypes[\"default\"].number,\n fillGapBottom: _propTypes[\"default\"].number,\n inPlaceMinBreakpoint: _propTypes[\"default\"].number,\n zoomContainerBorder: _propTypes[\"default\"].string,\n zoomContainerBoxShadow: _propTypes[\"default\"].string,\n mouseActivation: _propTypes[\"default\"].string,\n touchActivation: _propTypes[\"default\"].string\n};\nSideBySideMagnifier.defaultProps = {\n imageSrc: \"\",\n largeImageSrc: \"\",\n imageAlt: \"\",\n overlayOpacity: 0.5,\n overlayBoxOpacity: 0.8,\n overlayBackgroundColor: \"#000\",\n overlayBoxColor: \"#fff\",\n overlayBoxImage: \"\",\n overlayBoxImageSize: \"\",\n cursorStyle: \"crosshair\",\n transitionSpeed: 0.4,\n transitionSpeedInPlace: 0.4,\n onImageLoad: _utils[\"default\"].noop,\n onLargeImageLoad: _utils[\"default\"].noop,\n fillAvailableSpace: true,\n fillAlignTop: false,\n fillGapLeft: 0,\n fillGapRight: 0,\n fillGapTop: 0,\n fillGapBottom: 0,\n inPlaceMinBreakpoint: 0,\n zoomContainerBorder: \"none\",\n zoomContainerBoxShadow: \"none\",\n mouseActivation: _reactInputPosition.MOUSE_ACTIVATION.HOVER,\n touchActivation: _reactInputPosition.TOUCH_ACTIVATION.TOUCH\n};\nvar _default = SideBySideMagnifier;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nvar _Image = _interopRequireDefault(require(\"./Image\"));\n\nvar _ImagePreviewOverlay = _interopRequireDefault(require(\"./ImagePreviewOverlay\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar SideBySideRenderer = function SideBySideRenderer(props) {\n var itemPosition = props.itemPosition,\n active = props.active,\n elementDimensions = props.elementDimensions,\n elementOffset = props.elementOffset,\n itemDimensions = props.itemDimensions,\n imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n itemRef = props.itemRef,\n overlayOpacity = props.overlayOpacity,\n overlayBoxOpacity = props.overlayBoxOpacity,\n overlayBackgroundColor = props.overlayBackgroundColor,\n overlayBoxColor = props.overlayBoxColor,\n overlayBoxImage = props.overlayBoxImage,\n overlayBoxImageSize = props.overlayBoxImageSize,\n alwaysInPlace = props.alwaysInPlace,\n transitionSpeed = props.transitionSpeed,\n transitionSpeedInPlace = props.transitionSpeedInPlace,\n renderOverlay = props.renderOverlay,\n cursorStyle = props.cursorStyle,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n onLoadRefresh = props.onLoadRefresh,\n switchSides = props.switchSides,\n fillAvailableSpace = props.fillAvailableSpace,\n fillAlignTop = props.fillAlignTop,\n fillGapLeft = props.fillGapLeft,\n fillGapRight = props.fillGapRight,\n fillGapTop = props.fillGapTop,\n fillGapBottom = props.fillGapBottom,\n inPlaceMinBreakpoint = props.inPlaceMinBreakpoint,\n zoomContainerBorder = props.zoomContainerBorder,\n zoomContainerBoxShadow = props.zoomContainerBoxShadow;\n var zoomContainerDimensions = {\n width: elementDimensions.width,\n height: elementDimensions.height\n };\n var zoomContainerStyle = {};\n var availableWidth = 0;\n var availableHeight = 0;\n var windowWidth = 0;\n var zoomGapVertical = fillGapTop + fillGapBottom;\n var zoomGapHorizontal = fillGapLeft + fillGapRight;\n\n try {\n var _document$documentEle = document.documentElement,\n clientWidth = _document$documentEle.clientWidth,\n clientHeight = _document$documentEle.clientHeight;\n var _window = window,\n innerWidth = _window.innerWidth;\n availableWidth = clientWidth;\n availableHeight = clientHeight;\n windowWidth = innerWidth;\n } catch (e) {}\n\n var inPlace = alwaysInPlace || windowWidth < inPlaceMinBreakpoint;\n\n if (fillAvailableSpace && !inPlace) {\n var left = elementDimensions.width + elementOffset.left;\n\n if (fillAlignTop) {\n zoomContainerDimensions.height = Math.min(itemDimensions.height, availableHeight - elementOffset.top - zoomGapVertical + fillGapTop);\n zoomContainerDimensions.top = fillGapTop;\n } else {\n zoomContainerDimensions.height = Math.min(itemDimensions.height, availableHeight - zoomGapVertical);\n var offsetTop = -elementOffset.top + fillGapTop;\n var maxOffsetTop = availableHeight - elementOffset.top - (zoomContainerDimensions.height + fillGapBottom);\n var limitedTop = Math.max(offsetTop, maxOffsetTop);\n zoomContainerDimensions.top = limitedTop;\n }\n\n zoomContainerDimensions.top = Math.min(zoomContainerDimensions.top, 0);\n zoomContainerStyle.top = \"\".concat(zoomContainerDimensions.top, \"px\");\n\n if (switchSides) {\n zoomContainerDimensions.width = Math.min(itemDimensions.width, elementOffset.left - zoomGapHorizontal);\n zoomContainerDimensions.right = elementDimensions.width + fillGapRight;\n zoomContainerStyle.right = \"\".concat(zoomContainerDimensions.right, \"px\");\n } else {\n zoomContainerDimensions.width = Math.min(itemDimensions.width, availableWidth - left - zoomGapHorizontal);\n zoomContainerDimensions.left = elementDimensions.width + fillGapLeft;\n zoomContainerStyle.left = \"\".concat(zoomContainerDimensions.left, \"px\");\n }\n } else {\n if (switchSides) {\n inPlace = inPlace || elementOffset.left < elementDimensions.width;\n } else {\n inPlace = inPlace || elementDimensions.width * 2 + elementOffset.left > availableWidth;\n }\n }\n\n var legalSize = itemDimensions.width > elementDimensions.width;\n var isActive = legalSize && active;\n var transSpeed = inPlace ? transitionSpeedInPlace : transitionSpeed;\n var smallImageSize = {\n width: elementDimensions.width,\n height: elementDimensions.height\n };\n var previewSize = {\n width: Math.floor(smallImageSize.width * (zoomContainerDimensions.width / itemDimensions.width)),\n height: Math.floor(smallImageSize.height * (zoomContainerDimensions.height / itemDimensions.height))\n };\n var position = {\n x: 0,\n y: 0\n };\n\n var itemPositionAdj = _objectSpread({}, itemPosition);\n\n var previewOffset = {\n x: inPlace ? 0 : previewSize.width / 2,\n y: inPlace ? 0 : previewSize.height / 2\n };\n itemPositionAdj.x = Math.max(previewOffset.x, itemPositionAdj.x);\n itemPositionAdj.x = Math.min(smallImageSize.width - previewOffset.x, itemPositionAdj.x);\n itemPositionAdj.y = Math.max(previewOffset.y, itemPositionAdj.y);\n itemPositionAdj.y = Math.min(smallImageSize.height - previewOffset.y, itemPositionAdj.y);\n position = _objectSpread({}, itemPositionAdj);\n var zoomContainerSize = inPlace ? smallImageSize : zoomContainerDimensions;\n position.x = _utils[\"default\"].convertRange(previewOffset.x, smallImageSize.width - previewOffset.x, itemDimensions.width * -1 + zoomContainerSize.width, 0, position.x);\n position.y = _utils[\"default\"].convertRange(previewOffset.y, smallImageSize.height - previewOffset.y, itemDimensions.height * -1 + zoomContainerSize.height, 0, position.y);\n position.x = _utils[\"default\"].invertNumber(itemDimensions.width * -1 + zoomContainerSize.width, 0, position.x);\n position.y = _utils[\"default\"].invertNumber(itemDimensions.height * -1 + zoomContainerSize.height, 0, position.y);\n previewSize.left = Math.floor(itemPositionAdj.x - previewOffset.x) || 0;\n previewSize.right = Math.floor(itemPositionAdj.x + previewOffset.x) || 0;\n previewSize.top = Math.floor(itemPositionAdj.y - previewOffset.y) || 0;\n previewSize.bottom = Math.floor(itemPositionAdj.y + previewOffset.y) || 0;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: {\n position: \"relative\"\n }\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: {\n width: \"100%\",\n display: \"block\",\n cursor: legalSize ? cursorStyle : \"default\"\n },\n src: imageSrc,\n alt: imageAlt,\n onImageLoad: onImageLoad,\n onLoadRefresh: onLoadRefresh\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread(_objectSpread({}, _styles[\"default\"].getZoomContainerStyle(zoomContainerSize.width, zoomContainerSize.height, inPlace, switchSides)), {}, {\n opacity: isActive ? \"1\" : \"0\",\n transition: \"opacity \".concat(transSpeed, \"s ease\"),\n zIndex: \"100\"\n }, zoomContainerStyle), {}, {\n border: zoomContainerBorder,\n boxShadow: zoomContainerBoxShadow\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: _styles[\"default\"].getLargeImageStyle(position.x, position.y, true),\n src: largeImageSrc || imageSrc,\n alt: imageAlt,\n ref: itemRef,\n onImageLoad: onLargeImageLoad,\n onLoadRefresh: onLoadRefresh\n })), /*#__PURE__*/_react[\"default\"].createElement(_ImagePreviewOverlay[\"default\"], {\n previewWidth: previewSize.width,\n previewHeight: previewSize.height,\n previewPosLeft: previewSize.left,\n previewPosRight: previewSize.right,\n previewPosTop: previewSize.top,\n previewPosBottom: previewSize.bottom,\n imageWidth: smallImageSize.width,\n imageHeight: smallImageSize.height,\n overlayOpacity: overlayOpacity,\n overlayBoxOpacity: overlayBoxOpacity,\n overlayBackgroundColor: overlayBackgroundColor,\n overlayBoxColor: overlayBoxColor,\n overlayBoxImage: overlayBoxImage,\n overlayBoxImageSize: overlayBoxImageSize,\n active: isActive && !inPlace,\n transitionSpeed: transSpeed\n }), renderOverlay ? renderOverlay(active) : null);\n};\n\nvar _default = SideBySideRenderer;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _reactInputPosition = _interopRequireWildcard(require(\"react-input-position\"));\n\nvar _MagnifierRenderer = _interopRequireDefault(require(\"./MagnifierRenderer\"));\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\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\nvar Magnifier = function Magnifier(props) {\n var imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n cursorStyle = props.cursorStyle,\n cursorStyleActive = props.cursorStyleActive,\n renderOverlay = props.renderOverlay,\n dragToMove = props.dragToMove,\n className = props.className,\n style = props.style,\n mouseActivation = props.mouseActivation,\n touchActivation = props.touchActivation,\n interactionSettings = props.interactionSettings,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n onImageError = props.onImageError,\n onLargeImageError = props.onLargeImageError,\n onZoomStart = props.onZoomStart,\n onZoomEnd = props.onZoomEnd;\n var finalActiveCursorStyle = cursorStyleActive || dragToMove ? \"move\" : \"zoom-out\";\n return /*#__PURE__*/_react[\"default\"].createElement(_reactInputPosition[\"default\"], _extends({\n style: style,\n className: className,\n touchActivationMethod: touchActivation,\n mouseActivationMethod: mouseActivation,\n trackItemPosition: true,\n centerItemOnActivatePos: dragToMove,\n alignItemOnActivePos: !dragToMove,\n onActivate: onZoomStart,\n onDeactivate: onZoomEnd,\n itemPositionLimitBySize: true\n }, interactionSettings), /*#__PURE__*/_react[\"default\"].createElement(_MagnifierRenderer[\"default\"], {\n imageSrc: imageSrc,\n largeImageSrc: largeImageSrc,\n imageAlt: imageAlt,\n renderOverlay: renderOverlay,\n cursorStyle: cursorStyle,\n cursorStyleActive: finalActiveCursorStyle,\n onImageLoad: onImageLoad,\n onLargeImageLoad: onLargeImageLoad,\n onImageError: onImageError,\n onLargeImageError: onLargeImageError\n }));\n};\n\nMagnifier.propTypes = {\n imageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n largeImageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n imageAlt: _propTypes[\"default\"].string,\n cursorStyle: _propTypes[\"default\"].string,\n cursorStyleActive: _propTypes[\"default\"].string,\n renderOverlay: _propTypes[\"default\"].func,\n dragToMove: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n mouseActivation: _propTypes[\"default\"].string,\n touchActivation: _propTypes[\"default\"].string,\n interactionSettings: _propTypes[\"default\"].shape({\n tapDurationInMs: _propTypes[\"default\"].number,\n doubleTapDurationInMs: _propTypes[\"default\"].number,\n longTouchDurationInMs: _propTypes[\"default\"].number,\n longTouchMoveLimit: _propTypes[\"default\"].number,\n clickMoveLimit: _propTypes[\"default\"].number\n }),\n onImageLoad: _propTypes[\"default\"].func,\n onLargeImageLoad: _propTypes[\"default\"].func\n};\nMagnifier.defaultProps = {\n imageSrc: \"\",\n largeImageSrc: \"\",\n imageAlt: \"\",\n cursorStyle: \"zoom-in\",\n cursorStyleActive: \"\",\n dragToMove: true,\n mouseActivation: _reactInputPosition.MOUSE_ACTIVATION.CLICK,\n touchActivation: _reactInputPosition.TOUCH_ACTIVATION.TAP,\n interactionSettings: {},\n onImageLoad: _utils[\"default\"].noop,\n onLargeImageLoad: _utils[\"default\"].noop\n};\nvar _default = Magnifier;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Image = _interopRequireDefault(require(\"./Image\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar MagnifierRenderer = function MagnifierRenderer(props) {\n var itemPosition = props.itemPosition,\n active = props.active,\n elementDimensions = props.elementDimensions,\n itemDimensions = props.itemDimensions,\n imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n itemRef = props.itemRef,\n renderOverlay = props.renderOverlay,\n cursorStyle = props.cursorStyle,\n cursorStyleActive = props.cursorStyleActive,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n onLoadRefresh = props.onLoadRefresh;\n var legalSize = itemDimensions.width > elementDimensions.width;\n var isActive = legalSize && active;\n var finalCursorStyle = !legalSize ? \"default\" : active ? cursorStyleActive : cursorStyle;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: {\n position: \"relative\",\n cursor: finalCursorStyle\n }\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: {\n display: \"block\",\n visibility: isActive ? \"hidden\" : \"visible\",\n width: \"100%\"\n },\n src: imageSrc,\n alt: imageAlt,\n onImageLoad: onImageLoad,\n onLoadRefresh: onLoadRefresh\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _styles[\"default\"].getZoomContainerStyle(elementDimensions.width, elementDimensions.height, true)\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: _styles[\"default\"].getLargeImageStyle(itemPosition.x, itemPosition.y, isActive),\n src: largeImageSrc || imageSrc,\n alt: imageAlt,\n ref: itemRef,\n onImageLoad: onLargeImageLoad,\n onLoadRefresh: onLoadRefresh\n })), renderOverlay ? renderOverlay(active) : null);\n};\n\nvar _default = MagnifierRenderer;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _reactInputPosition = _interopRequireWildcard(require(\"react-input-position\"));\n\nvar _GlassRenderer = _interopRequireDefault(require(\"./GlassRenderer\"));\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar GlassMagnifier = function GlassMagnifier(props) {\n var imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n magnifierBorderSize = props.magnifierBorderSize,\n magnifierBorderColor = props.magnifierBorderColor,\n magnifierBackgroundColor = props.magnifierBackgroundColor,\n magnifierSize = props.magnifierSize,\n magnifierOffsetX = props.magnifierOffsetX,\n magnifierOffsetY = props.magnifierOffsetY,\n square = props.square,\n cursorStyle = props.cursorStyle,\n renderOverlay = props.renderOverlay,\n allowOverflow = props.allowOverflow,\n style = props.style,\n className = props.className,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n onZoomStart = props.onZoomStart,\n onZoomEnd = props.onZoomEnd;\n return /*#__PURE__*/_react[\"default\"].createElement(_reactInputPosition[\"default\"], {\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: \"relative\",\n overflow: allowOverflow ? \"visible\" : \"hidden\"\n }),\n className: className,\n touchActivationMethod: _reactInputPosition.TOUCH_ACTIVATION.TOUCH,\n mouseActivationMethod: _reactInputPosition.MOUSE_ACTIVATION.HOVER,\n onActivate: onZoomStart,\n onDeactivate: onZoomEnd,\n trackItemPosition: true,\n alignItemOnActivePos: true,\n itemPositionLimitBySize: true\n }, /*#__PURE__*/_react[\"default\"].createElement(_GlassRenderer[\"default\"], {\n magnifierBorderSize: magnifierBorderSize,\n magnifierBorderColor: magnifierBorderColor,\n magnifierBackgroundColor: magnifierBackgroundColor,\n magnifierSize: magnifierSize,\n imageSrc: imageSrc,\n largeImageSrc: largeImageSrc,\n imageAlt: imageAlt,\n square: square,\n magnifierOffsetX: magnifierOffsetX,\n magnifierOffsetY: magnifierOffsetY,\n renderOverlay: renderOverlay,\n cursorStyle: cursorStyle,\n onImageLoad: onImageLoad,\n onLargeImageLoad: onLargeImageLoad\n }));\n};\n\nGlassMagnifier.propTypes = {\n imageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n largeImageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n imageAlt: _propTypes[\"default\"].string,\n allowOverflow: _propTypes[\"default\"].bool,\n magnifierBorderSize: _propTypes[\"default\"].number,\n magnifierBorderColor: _propTypes[\"default\"].string,\n magnifierBackgroundColor: _propTypes[\"default\"].string,\n magnifierSize: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number]),\n magnifierOffsetX: _propTypes[\"default\"].number,\n magnifierOffsetY: _propTypes[\"default\"].number,\n square: _propTypes[\"default\"].bool,\n cursorStyle: _propTypes[\"default\"].string,\n renderOverlay: _propTypes[\"default\"].func,\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n onImageLoad: _propTypes[\"default\"].func,\n onLargeImageLoad: _propTypes[\"default\"].func\n};\nGlassMagnifier.defaultProps = {\n imageSrc: \"\",\n largeImageSrc: \"\",\n imageAlt: \"\",\n allowOverflow: false,\n magnifierBorderSize: 3,\n magnifierBorderColor: \"rgba(255,255,255,.5)\",\n magnifierBackgroundColor: \"rgba(225,225,225,.5)\",\n magnifierSize: \"25%\",\n magnifierOffsetX: 0,\n magnifierOffsetY: 0,\n square: false,\n cursorStyle: \"none\",\n onImageLoad: _utils[\"default\"].noop,\n onLargeImageLoad: _utils[\"default\"].noop\n};\nvar _default = GlassMagnifier;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _Image = _interopRequireDefault(require(\"./Image\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar GlassRenderer = function GlassRenderer(props) {\n var itemRef = props.itemRef,\n itemPosition = props.itemPosition,\n activePosition = props.activePosition,\n elementDimensions = props.elementDimensions,\n itemDimensions = props.itemDimensions,\n active = props.active,\n imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n magnifierBorderSize = props.magnifierBorderSize,\n magnifierBorderColor = props.magnifierBorderColor,\n magnifierBackgroundColor = props.magnifierBackgroundColor,\n square = props.square,\n magnifierSize = props.magnifierSize,\n magnifierOffsetX = props.magnifierOffsetX,\n magnifierOffsetY = props.magnifierOffsetY,\n renderOverlay = props.renderOverlay,\n cursorStyle = props.cursorStyle,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n onLoadRefresh = props.onLoadRefresh;\n var legalSize = itemDimensions.width > elementDimensions.width;\n var isActive = legalSize && active;\n\n var magnifierSizeNum = _utils[\"default\"].convertWidthToPx(magnifierSize, elementDimensions.width);\n\n var positionOffset = magnifierSizeNum / 2;\n var position = {\n x: itemPosition.x - activePosition.x + positionOffset - magnifierBorderSize,\n y: itemPosition.y - activePosition.y + positionOffset - magnifierBorderSize\n };\n var divPosition = {\n x: activePosition.x - positionOffset + magnifierOffsetX,\n y: activePosition.y - positionOffset + magnifierOffsetY\n };\n var borderRadius = square ? \"0\" : \"50%\";\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: {\n width: \"100%\",\n display: \"block\",\n boxSizing: \"border-box\",\n cursor: legalSize ? cursorStyle : \"default\"\n },\n src: imageSrc,\n alt: imageAlt,\n onImageLoad: onImageLoad,\n onLoadRefresh: onLoadRefresh\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, _styles[\"default\"].getZoomContainerStyle(magnifierSizeNum, magnifierSizeNum, true)), {}, {\n visibility: !isActive ? \"hidden\" : \"visible\",\n borderRadius: borderRadius,\n zIndex: \"1\",\n border: \"\".concat(magnifierBorderSize, \"px solid \").concat(magnifierBorderColor),\n transform: \"translate(\".concat(divPosition.x, \"px, \").concat(divPosition.y, \"px)\"),\n backgroundColor: magnifierBackgroundColor,\n backgroundClip: \"padding-box\"\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: _styles[\"default\"].getLargeImageStyle(position.x, position.y, isActive),\n ref: itemRef,\n src: largeImageSrc || imageSrc,\n alt: imageAlt,\n onImageLoad: onLargeImageLoad,\n onLoadRefresh: onLoadRefresh\n })), renderOverlay ? renderOverlay(active) : null);\n};\n\nvar _default = GlassRenderer;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _reactInputPosition = _interopRequireWildcard(require(\"react-input-position\"));\n\nvar _PictureInPictureRenderer = _interopRequireDefault(require(\"./PictureInPictureRenderer\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\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\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar PictureInPictureMagnifier = /*#__PURE__*/function (_Component) {\n _inherits(PictureInPictureMagnifier, _Component);\n\n var _super = _createSuper(PictureInPictureMagnifier);\n\n function PictureInPictureMagnifier() {\n var _this;\n\n _classCallCheck(this, PictureInPictureMagnifier);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"containerRef\", /*#__PURE__*/_react[\"default\"].createRef());\n\n return _this;\n }\n\n _createClass(PictureInPictureMagnifier, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageSrc = _this$props.imageSrc,\n largeImageSrc = _this$props.largeImageSrc,\n imageAlt = _this$props.imageAlt,\n previewSizePercentage = _this$props.previewSizePercentage,\n previewHorizontalPos = _this$props.previewHorizontalPos,\n previewVerticalPos = _this$props.previewVerticalPos,\n previewOpacity = _this$props.previewOpacity,\n previewOverlayOpacity = _this$props.previewOverlayOpacity,\n previewOverlayBoxOpacity = _this$props.previewOverlayBoxOpacity,\n previewOverlayBackgroundColor = _this$props.previewOverlayBackgroundColor,\n previewOverlayBoxColor = _this$props.previewOverlayBoxColor,\n previewOverlayBoxImage = _this$props.previewOverlayBoxImage,\n previewOverlayBoxImageSize = _this$props.previewOverlayBoxImageSize,\n cursorStyle = _this$props.cursorStyle,\n cursorStyleActive = _this$props.cursorStyleActive,\n shadow = _this$props.shadow,\n shadowColor = _this$props.shadowColor,\n renderOverlay = _this$props.renderOverlay,\n className = _this$props.className,\n style = _this$props.style,\n onImageLoad = _this$props.onImageLoad,\n onLargeImageLoad = _this$props.onLargeImageLoad,\n onZoomStart = _this$props.onZoomStart,\n onZoomEnd = _this$props.onZoomEnd;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.containerRef,\n style: _objectSpread(_objectSpread({}, style), {}, {\n textAlign: previewHorizontalPos,\n overflow: \"hidden\",\n fontSize: \"0\"\n }),\n className: className\n }, /*#__PURE__*/_react[\"default\"].createElement(_reactInputPosition[\"default\"], {\n style: {\n width: \"\".concat(previewSizePercentage, \"%\"),\n display: \"inline-block\",\n boxShadow: shadow ? \"1px -1px 1px \".concat(shadowColor) : \"none\"\n },\n touchActivationMethod: _reactInputPosition.TOUCH_ACTIVATION.TOUCH,\n mouseActivationMethod: _reactInputPosition.MOUSE_ACTIVATION.MOUSE_DOWN,\n onActivate: onZoomStart,\n onDeactivate: onZoomEnd,\n trackItemPosition: true,\n itemPositionMinX: 0,\n itemPositionMinY: 0,\n itemPositionMaxX: -0.1,\n itemPositionMaxY: -0.1,\n linkItemToActive: true,\n centerItemOnLoad: true\n }, /*#__PURE__*/_react[\"default\"].createElement(_PictureInPictureRenderer[\"default\"], {\n containerRef: this.containerRef,\n previewSizePercentage: previewSizePercentage,\n previewVerticalPos: previewVerticalPos,\n previewOpacity: previewOpacity,\n previewOverlayOpacity: previewOverlayOpacity,\n previewOverlayBoxOpacity: previewOverlayBoxOpacity,\n previewOverlayBackgroundColor: previewOverlayBackgroundColor,\n previewOverlayBoxColor: previewOverlayBoxColor,\n previewOverlayBoxImage: previewOverlayBoxImage,\n previewOverlayBoxImageSize: previewOverlayBoxImageSize,\n imageSrc: imageSrc,\n largeImageSrc: largeImageSrc,\n imageAlt: imageAlt,\n renderOverlay: renderOverlay,\n cursorStyle: cursorStyle,\n cursorStyleActive: cursorStyleActive || cursorStyle,\n onImageLoad: onImageLoad,\n onLargeImageLoad: onLargeImageLoad\n })));\n }\n }]);\n\n return PictureInPictureMagnifier;\n}(_react.Component);\n\n_defineProperty(PictureInPictureMagnifier, \"propTypes\", {\n imageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n largeImageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n imageAlt: _propTypes[\"default\"].string,\n previewSizePercentage: _propTypes[\"default\"].number,\n previewHorizontalPos: _propTypes[\"default\"].oneOf([\"left\", \"right\"]),\n previewVerticalPos: _propTypes[\"default\"].oneOf([\"top\", \"bottom\"]),\n previewOpacity: _propTypes[\"default\"].number,\n previewOverlayOpacity: _propTypes[\"default\"].number,\n previewOverlayBoxOpacity: _propTypes[\"default\"].number,\n previewOverlayBackgroundColor: _propTypes[\"default\"].string,\n previewOverlayBoxColor: _propTypes[\"default\"].string,\n previewOverlayBoxImage: _propTypes[\"default\"].string,\n previewOverlayBoxImageSize: _propTypes[\"default\"].string,\n cursorStyle: _propTypes[\"default\"].string,\n cursorStyleActive: _propTypes[\"default\"].string,\n shadow: _propTypes[\"default\"].bool,\n shadowColor: _propTypes[\"default\"].string,\n renderOverlay: _propTypes[\"default\"].func,\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n onImageLoad: _propTypes[\"default\"].func,\n onLargeImageLoad: _propTypes[\"default\"].func,\n onZoomStart: _propTypes[\"default\"].func,\n onZoomEnd: _propTypes[\"default\"].func\n});\n\n_defineProperty(PictureInPictureMagnifier, \"defaultProps\", {\n imageSrc: \"\",\n largeImageSrc: \"\",\n imageAlt: \"\",\n previewSizePercentage: 35,\n previewHorizontalPos: \"left\",\n previewVerticalPos: \"bottom\",\n previewOpacity: 0.8,\n previewOverlayOpacity: 0.4,\n previewOverlayBoxOpacity: 0.8,\n previewOverlayBackgroundColor: \"#000\",\n previewOverlayBoxColor: \"#fff\",\n previewOverlayBoxImage: \"\",\n previewOverlayBoxImageSize: \"\",\n cursorStyle: \"crosshair\",\n cursorStyleActive: \"\",\n shadowColor: \"rgba(0,0,0,.4)\",\n onImageLoad: _utils[\"default\"].noop,\n onLargeImageLoad: _utils[\"default\"].noop\n});\n\nvar _default = PictureInPictureMagnifier;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nvar _Image = _interopRequireDefault(require(\"./Image\"));\n\nvar _ImagePreviewOverlay = _interopRequireDefault(require(\"./ImagePreviewOverlay\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar PictureInPictureRenderer = function PictureInPictureRenderer(props) {\n var active = props.active,\n itemPosition = props.itemPosition,\n elementDimensions = props.elementDimensions,\n itemDimensions = props.itemDimensions,\n imageSrc = props.imageSrc,\n largeImageSrc = props.largeImageSrc,\n imageAlt = props.imageAlt,\n itemRef = props.itemRef,\n previewSizePercentage = props.previewSizePercentage,\n containerRef = props.containerRef,\n previewVerticalPos = props.previewVerticalPos,\n previewOpacity = props.previewOpacity,\n previewOverlayOpacity = props.previewOverlayOpacity,\n previewOverlayBoxOpacity = props.previewOverlayBoxOpacity,\n previewOverlayBackgroundColor = props.previewOverlayBackgroundColor,\n previewOverlayBoxColor = props.previewOverlayBoxColor,\n previewOverlayBoxImage = props.previewOverlayBoxImage,\n previewOverlayBoxImageSize = props.previewOverlayBoxImageSize,\n renderOverlay = props.renderOverlay,\n cursorStyle = props.cursorStyle,\n cursorStyleActive = props.cursorStyleActive,\n onLoadRefresh = props.onLoadRefresh,\n _onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad;\n var sizeMult = 100 / previewSizePercentage;\n var containerTop = 0;\n var containerLeft = 0;\n var containerWidth = 0;\n\n if (containerRef.current) {\n containerWidth = containerRef.current.getBoundingClientRect().width;\n\n if (previewVerticalPos === \"bottom\") {\n containerTop = elementDimensions.height * (sizeMult - 1);\n containerRef.current.style.paddingTop = \"\".concat(containerTop, \"px\");\n } else {\n containerRef.current.style.paddingBottom = \"\".concat(elementDimensions.height * (sizeMult - 1), \"px\");\n }\n\n if (containerRef.current.style.textAlign === \"right\") {\n containerLeft = elementDimensions.width * (sizeMult - 1);\n }\n }\n\n var smallImageSize = {\n width: elementDimensions.width,\n height: elementDimensions.height\n };\n var previewSize = {\n width: Math.floor(smallImageSize.width * (smallImageSize.width / itemDimensions.width) * sizeMult),\n height: Math.floor(smallImageSize.height * (smallImageSize.height / itemDimensions.height) * sizeMult)\n };\n\n if (isNaN(previewSize.width)) {\n previewSize.width = 0;\n previewSize.height = 0;\n }\n\n var position = {\n x: 0,\n y: 0\n };\n\n var itemPositionAdj = _objectSpread({}, itemPosition);\n\n var previewOffset = {\n x: previewSize.width / 2,\n y: previewSize.height / 2\n };\n itemPositionAdj.x = Math.max(previewOffset.x, itemPositionAdj.x);\n itemPositionAdj.x = Math.min(smallImageSize.width - previewOffset.x, itemPositionAdj.x);\n itemPositionAdj.y = Math.max(previewOffset.y, itemPositionAdj.y);\n itemPositionAdj.y = Math.min(smallImageSize.height - previewOffset.y, itemPositionAdj.y);\n position = _objectSpread({}, itemPositionAdj);\n position.x = _utils[\"default\"].convertRange(previewOffset.x, smallImageSize.width - previewOffset.x, itemDimensions.width * -1 + containerWidth, 0, position.x);\n position.y = _utils[\"default\"].convertRange(previewOffset.y, smallImageSize.height - previewOffset.y, itemDimensions.height * -1 + smallImageSize.height * sizeMult, 0, position.y);\n position.x = _utils[\"default\"].invertNumber(itemDimensions.width * -1 + containerWidth, 0, position.x);\n position.y = _utils[\"default\"].invertNumber(itemDimensions.height * -1 + smallImageSize.height * sizeMult, 0, position.y);\n previewSize.left = Math.floor(itemPositionAdj.x - previewOffset.x) || 0;\n previewSize.right = Math.floor(itemPositionAdj.x + previewOffset.x) || 0;\n previewSize.top = Math.floor(itemPositionAdj.y - previewOffset.y) || 0;\n previewSize.bottom = Math.floor(itemPositionAdj.y + previewOffset.y) || 0;\n var legalSize = previewSize.width < smallImageSize.width;\n var finalCursorStyle = active ? cursorStyleActive : cursorStyle;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: {\n position: \"relative\",\n cursor: legalSize ? finalCursorStyle : \"default\"\n }\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: {\n width: \"100%\",\n display: \"block\",\n opacity: previewOpacity,\n visibility: legalSize ? \"visible\" : \"hidden\"\n },\n src: imageSrc,\n alt: imageAlt,\n onImageLoad: function onImageLoad(e) {\n onLoadRefresh();\n\n _onImageLoad(e);\n },\n onLoadRefresh: onLoadRefresh\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, _styles[\"default\"].getZoomContainerStyle(smallImageSize.width, smallImageSize.height, true)), {}, {\n width: containerWidth + \"px\",\n height: elementDimensions.height * sizeMult + \"px\",\n position: \"absolute\",\n left: -containerLeft,\n top: -containerTop,\n fontSize: \"1rem\"\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: _objectSpread(_objectSpread({}, _styles[\"default\"].getLargeImageStyle(position.x, position.y, true)), {}, {\n visibility: legalSize ? \"visible\" : \"hidden\",\n zIndex: \"-1\"\n }),\n src: largeImageSrc || imageSrc,\n alt: imageAlt,\n ref: itemRef,\n onImageLoad: onLargeImageLoad,\n onLoadRefresh: onLoadRefresh\n }), /*#__PURE__*/_react[\"default\"].createElement(\"img\", {\n src: imageSrc,\n alt: imageAlt,\n style: {\n display: legalSize ? \"none\" : \"block\",\n width: \"100%\"\n }\n }), renderOverlay ? renderOverlay(active) : null), /*#__PURE__*/_react[\"default\"].createElement(_ImagePreviewOverlay[\"default\"], {\n previewWidth: previewSize.width,\n previewHeight: previewSize.height,\n previewPosLeft: previewSize.left,\n previewPosRight: previewSize.right,\n previewPosTop: previewSize.top,\n previewPosBottom: previewSize.bottom,\n imageWidth: smallImageSize.width,\n imageHeight: smallImageSize.height,\n overlayOpacity: previewOverlayOpacity,\n overlayBoxOpacity: previewOverlayBoxOpacity,\n overlayBackgroundColor: previewOverlayBackgroundColor,\n overlayBoxColor: previewOverlayBoxColor,\n overlayBoxImage: previewOverlayBoxImage,\n overlayBoxImageSize: previewOverlayBoxImageSize,\n active: legalSize\n }));\n};\n\nvar _default = PictureInPictureRenderer;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _reactInputPosition = _interopRequireWildcard(require(\"react-input-position\"));\n\nvar _MagnifierPreviewRenderer = _interopRequireDefault(require(\"./MagnifierPreviewRenderer\"));\n\nvar _MagnifierContainer = require(\"./MagnifierContainer\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction MagnifierPreview(props) {\n var imageSrc = props.imageSrc,\n imageAlt = props.imageAlt,\n largeImageSrc = props.largeImageSrc,\n className = props.className,\n style = props.style,\n cursorStyle = props.cursorStyle,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n renderOverlay = props.renderOverlay,\n overlayOpacity = props.overlayOpacity,\n overlayBoxOpacity = props.overlayBoxOpacity,\n overlayBackgroundColor = props.overlayBackgroundColor,\n overlayBoxColor = props.overlayBoxColor,\n overlayBoxImage = props.overlayBoxImage,\n overlayBoxImageSize = props.overlayBoxImageSize,\n transitionSpeed = props.transitionSpeed,\n onZoomStart = props.onZoomStart,\n onZoomEnd = props.onZoomEnd,\n mouseActivation = props.mouseActivation,\n touchActivation = props.touchActivation;\n\n var _React$useContext = _react[\"default\"].useContext(_MagnifierContainer.MagnifierContext),\n stateOverride = _React$useContext.stateOverride,\n onUpdate = _React$useContext.onUpdate,\n zoomImageDimensions = _React$useContext.zoomImageDimensions,\n previewSize = _React$useContext.previewSize,\n smallImageSize = _React$useContext.smallImageSize,\n position = _React$useContext.position,\n inPlace = _React$useContext.inPlace;\n\n return /*#__PURE__*/_react[\"default\"].createElement(_reactInputPosition[\"default\"], {\n touchActivationMethod: touchActivation,\n mouseActivationMethod: mouseActivation,\n onActivate: onZoomStart,\n onDeactivate: onZoomEnd,\n className: className,\n style: style,\n cursorStyle: cursorStyle,\n trackItemPosition: true,\n linkItemToActive: true,\n stateOverride: stateOverride,\n onUpdate: onUpdate\n }, /*#__PURE__*/_react[\"default\"].createElement(_MagnifierPreviewRenderer[\"default\"], {\n image: imageSrc,\n largeImage: largeImageSrc,\n alt: imageAlt,\n zoomImageDimensions: zoomImageDimensions,\n previewSize: previewSize,\n smallImageSize: smallImageSize,\n onImageLoad: onImageLoad,\n onLargeImageLoad: onLargeImageLoad,\n renderOverlay: renderOverlay,\n overlayOpacity: overlayOpacity,\n overlayBoxOpacity: overlayBoxOpacity,\n overlayBackgroundColor: overlayBackgroundColor,\n overlayBoxColor: overlayBoxColor,\n overlayBoxImage: overlayBoxImage,\n overlayBoxImageSize: overlayBoxImageSize,\n transitionSpeed: transitionSpeed,\n inPlace: inPlace,\n position: position\n }));\n}\n\nMagnifierPreview.propTypes = {\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n cursorStyle: _propTypes[\"default\"].string,\n imageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n largeImageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n imageAlt: _propTypes[\"default\"].string,\n onImageLoad: _propTypes[\"default\"].func,\n onLargeImageLoad: _propTypes[\"default\"].func,\n renderOverlay: _propTypes[\"default\"].func,\n overlayBoxOpacity: _propTypes[\"default\"].number,\n overlayOpacity: _propTypes[\"default\"].number,\n overlayBackgroundColor: _propTypes[\"default\"].string,\n overlayBoxColor: _propTypes[\"default\"].string,\n overlayBoxImage: _propTypes[\"default\"].string,\n overlayBoxImageSize: _propTypes[\"default\"].string,\n transitionSpeed: _propTypes[\"default\"].number,\n mouseActivation: _propTypes[\"default\"].string,\n touchActivation: _propTypes[\"default\"].string\n};\nMagnifierPreview.defaultProps = {\n cursorStyle: \"crosshair\",\n imageSrc: \"\",\n imageAlt: \"\",\n overlayOpacity: 0.5,\n overlayBoxOpacity: 0.8,\n overlayBackgroundColor: \"#000\",\n overlayBoxColor: \"#fff\",\n overlayBoxImage: \"\",\n overlayBoxImageSize: \"\",\n transitionSpeed: 0.4,\n onImageLoad: _utils[\"default\"].noop,\n onLargeImageLoad: _utils[\"default\"].noop,\n mouseActivation: _reactInputPosition.MOUSE_ACTIVATION.HOVER,\n touchActivation: _reactInputPosition.TOUCH_ACTIVATION.TOUCH\n};\nvar _default = MagnifierPreview;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Image = _interopRequireDefault(require(\"./Image\"));\n\nvar _ImagePreviewOverlay = _interopRequireDefault(require(\"./ImagePreviewOverlay\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction MagnifierPreviewRenderer(props) {\n var image = props.image,\n largeImage = props.largeImage,\n alt = props.alt,\n previewSize = props.previewSize,\n smallImageSize = props.smallImageSize,\n overlayOpacity = props.overlayOpacity,\n overlayBoxOpacity = props.overlayBoxOpacity,\n overlayBackgroundColor = props.overlayBackgroundColor,\n overlayBoxColor = props.overlayBoxColor,\n overlayBoxImage = props.overlayBoxImage,\n overlayBoxImageSize = props.overlayBoxImageSize,\n active = props.active,\n onImageLoad = props.onImageLoad,\n onLargeImageLoad = props.onLargeImageLoad,\n renderOverlay = props.renderOverlay,\n transitionSpeed = props.transitionSpeed,\n shouldBeInPlace = props.inPlace,\n position = props.position; // Ensures that client and server dom match when using SSR.\n\n var _React$useState = _react[\"default\"].useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inPlace = _React$useState2[0],\n setInPlace = _React$useState2[1];\n\n _react[\"default\"].useEffect(function () {\n setInPlace(shouldBeInPlace);\n }, [shouldBeInPlace]);\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: {\n position: \"relative\"\n }\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: {\n display: \"block\",\n width: \"100%\"\n },\n src: image,\n alt: alt,\n onImageLoad: onImageLoad\n }), /*#__PURE__*/_react[\"default\"].createElement(_ImagePreviewOverlay[\"default\"], {\n previewWidth: previewSize.width,\n previewHeight: previewSize.height,\n previewPosLeft: previewSize.left,\n previewPosRight: previewSize.right,\n previewPosTop: previewSize.top,\n previewPosBottom: previewSize.bottom,\n imageWidth: smallImageSize.width,\n imageHeight: smallImageSize.height,\n overlayOpacity: overlayOpacity,\n overlayBoxOpacity: overlayBoxOpacity,\n overlayBackgroundColor: overlayBackgroundColor,\n overlayBoxColor: overlayBoxColor,\n overlayBoxImage: overlayBoxImage,\n overlayBoxImageSize: overlayBoxImageSize,\n active: active && !inPlace,\n transitionSpeed: transitionSpeed\n }), inPlace ? /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, _styles[\"default\"].getZoomContainerStyle(smallImageSize.width, smallImageSize.height, inPlace, false)), {}, {\n opacity: active ? \"1\" : \"0\",\n transition: \"opacity \".concat(transitionSpeed, \"s ease\")\n })\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n style: _objectSpread({}, _styles[\"default\"].getLargeImageStyle(position.x, position.y, inPlace)),\n src: largeImage,\n alt: alt,\n onImageLoad: onLargeImageLoad\n })) : null, renderOverlay ? renderOverlay(active) : null);\n}\n\nvar _default = MagnifierPreviewRenderer;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nvar _MagnifierContainer = require(\"./MagnifierContainer\");\n\nvar _Image = _interopRequireDefault(require(\"./Image\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction MagnifierZoom(props) {\n var imageSrc = props.imageSrc,\n imageAlt = props.imageAlt,\n className = props.className,\n style = props.style,\n _onImageLoad = props.onImageLoad,\n transitionSpeed = props.transitionSpeed;\n\n var _React$useContext = _react[\"default\"].useContext(_MagnifierContainer.MagnifierContext),\n zoomImageDimensions = _React$useContext.zoomImageDimensions,\n zoomContainerDimensions = _React$useContext.zoomContainerDimensions,\n position = _React$useContext.position,\n onZoomImageLoad = _React$useContext.onZoomImageLoad,\n zoomRef = _React$useContext.zoomRef,\n zoomImageRef = _React$useContext.zoomImageRef,\n isActive = _React$useContext.isActive,\n inPlace = _React$useContext.inPlace;\n\n var invalidVertical = zoomImageDimensions.height <= zoomContainerDimensions.height;\n var invalidHorizontal = zoomImageDimensions.width <= zoomContainerDimensions.width;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className,\n style: _objectSpread(_objectSpread(_objectSpread({}, _styles[\"default\"].getMagnifierZoomStyle(isActive && !inPlace, transitionSpeed)), style), {}, {\n overflow: \"hidden\",\n pointerEvents: \"none\"\n }),\n ref: zoomRef\n }, /*#__PURE__*/_react[\"default\"].createElement(_Image[\"default\"], {\n ref: zoomImageRef,\n style: _objectSpread({}, _styles[\"default\"].getLargeImageStyle(invalidHorizontal ? 0 : position.x, invalidVertical ? 0 : position.y, true)),\n src: imageSrc,\n alt: imageAlt,\n onImageLoad: function onImageLoad(e) {\n onZoomImageLoad(e);\n\n _onImageLoad(e);\n }\n }));\n}\n\nMagnifierZoom.propTypes = {\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n imageSrc: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n imageAlt: _propTypes[\"default\"].string,\n onImageLoad: _propTypes[\"default\"].func,\n transitionSpeed: _propTypes[\"default\"].number\n};\nMagnifierZoom.defaultProps = {\n style: {},\n imageSrc: \"\",\n imageAlt: \"\",\n onImageLoad: _utils[\"default\"].noop,\n transitionSpeed: 0.4\n};\nvar _default = MagnifierZoom;\nexports[\"default\"] = _default;","/* eslint-disable react/display-name */\nimport React from \"react\";\n\nexport const defaultRichTextTags = {\n b: (...chunks) => {chunks},\n strong: (...chunks) => {chunks},\n i: (...chunks) => {chunks},\n em: (...chunks) => {chunks},\n mark: (...chunks) => {chunks},\n small: (...chunks) => {chunks},\n s: (...chunks) => {chunks},\n del: (...chunks) => {chunks},\n ins: (...chunks) => {chunks},\n sub: (...chunks) => {chunks},\n sup: (...chunks) => {chunks},\n p: (...chunks) =>

{chunks}

,\n ul: (...chunks) =>
    {chunks}
,\n ol: (...chunks) =>
    {chunks}
,\n li: (...chunks) =>
  • {chunks}
  • \n};\n\nexport default defaultRichTextTags;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction invertNumber(min, max, num) {\n return max + min - num;\n}\n\nfunction convertRange(oldMin, oldMax, newMin, newMax, oldValue) {\n var percent = (oldValue - oldMin) / (oldMax - oldMin);\n var result = percent * (newMax - newMin) + newMin;\n return result || 0;\n}\n\nfunction convertWidthToPx(width, containerWidth) {\n if (typeof width === \"number\") {\n return width;\n }\n\n if (typeof width !== \"string\") {\n throw new Error(\"Received: \".concat(width, \" - Size must be a number or string\"));\n }\n\n if (width.substr(-1) === \"%\") {\n var percent = 100 / Number(width.slice(0, -1));\n return containerWidth / percent;\n }\n\n if (width.substr(-2) === \"px\") {\n return Number(width.slice(0, -2));\n }\n\n return Number(width);\n}\n\nfunction convertWidthToString(width) {\n if (typeof width === \"number\") {\n return width + \"px\";\n }\n\n return width;\n}\n\nfunction noop() {}\n\nvar _default = {\n invertNumber: invertNumber,\n convertRange: convertRange,\n convertWidthToPx: convertWidthToPx,\n convertWidthToString: convertWidthToString,\n noop: noop\n};\nexports[\"default\"] = _default;","import { number, oneOf } from \"prop-types\";\nimport React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport FormatNumber from \"shared/components/numbers/FormatNumber\";\nimport PriceStrategyShape from \"../../../buyer_portal/components/inquiry/priceStrategy.shape\";\n\nfunction FormatQuantity({ mode, value, unit }) {\n const i18nKey =\n mode === \"compact\"\n ? `roomBook.priceStrategyShort.${unit}`\n : `roomBook.priceStrategy.${unit}`;\n return (\n \n {mode !== \"onlyUnit\" && unit !== \"flat\" && (\n \n \n  \n \n )}\n \n \n );\n}\n\nFormatQuantity.defaultProps = {\n mode: \"\",\n value: 0,\n unit: \"\"\n};\nFormatQuantity.propTypes = {\n value: number,\n unit: PriceStrategyShape,\n mode: oneOf([\"compact\", \"\", \"onlyUnit\"])\n};\n\nexport default FormatQuantity;\n","import {\n getResource,\n LINE_ITEM_RESOURCE,\n SUB_LINE_ITEM_RESOURCE,\n PRODUCT_LINE_RESOURCE\n} from \"./actionLocator\";\n\nexport class RoomBookController {\n constructor(dispatch, unitId) {\n this.dispatch = dispatch;\n this.unitId = unitId;\n }\n\n selectProductLine = tag => {\n return this.productLineResource().select(tag);\n };\n\n deselectProducts = subLineItemIds => {\n return this.subLineItemResource().deselectProducts(subLineItemIds);\n };\n\n selectProducts = selection => {\n return this.subLineItemResource().selectProducts(selection);\n };\n\n selectProductsAndQuantities = selection => {\n return this.subLineItemResource().selectProductsAndQuantities(selection);\n };\n\n toggleLineItem = (lineItemId, activate) => {\n return this.lineItemResource().toggle(lineItemId, activate);\n };\n\n deactivateLineItem = lineItemId => {\n return this.lineItemResource().deactivate(lineItemId);\n };\n\n activateLineItem = lineItemId => {\n return this.lineItemResource().activate(lineItemId);\n };\n\n /*\n * Resources\n */\n\n lineItemResource = () => {\n const Resource = getResource(LINE_ITEM_RESOURCE);\n return new Resource(this.dispatch, this.unitId);\n };\n\n subLineItemResource = () => {\n const Resource = getResource(SUB_LINE_ITEM_RESOURCE);\n return new Resource(this.dispatch, this.unitId);\n };\n\n productLineResource = () => {\n const Resource = getResource(PRODUCT_LINE_RESOURCE);\n return new Resource(this.dispatch, this.unitId);\n };\n}\n\nexport const roomBookController = (dispatch, unitId) => {\n return new RoomBookController(dispatch, unitId);\n};\n","export const formatNumber = (amount, minimumFractionDigits = 2) => {\n const formatter = new Intl.NumberFormat(\"de-DE\", {\n maximumFractionDigits: minimumFractionDigits,\n minimumFractionDigits\n });\n return formatter.format(Number(amount));\n};\n","const BUTTONS = {\n decided: {\n content: \"buyerPortal.roomBook.cardActions.decided\",\n icon: \"checkmark\",\n size: \"huge\",\n fluid: true,\n primary: true\n },\n undecided: {\n content: \"buyerPortal.roomBook.cardActions.undecided\",\n icon: \"cogs\",\n size: \"huge\",\n fluid: true,\n basic: true\n },\n warning: {\n content: \"buyerPortal.roomBook.cardActions.warning\",\n icon: \"exclamation triangle\",\n size: \"huge\",\n fluid: true,\n className: \"warning\"\n },\n disabled: {\n content: \"buyerPortal.roomBook.cardActions.disabled\",\n icon: \"ban\",\n size: \"huge\",\n fluid: true,\n disabled: true\n },\n buyable: {\n content: \"buyerPortal.roomBook.cardActions.buyable\",\n icon: \"cart plus\",\n size: \"huge\",\n fluid: true,\n basic: true\n },\n replacement: {\n content: \"buyerPortal.roomBook.cardActions.replacement\",\n icon: \"cart plus\",\n size: \"huge\",\n fluid: true,\n basic: true\n },\n mandatory: {\n content: undefined, // will hide the button\n icon: \"lock\",\n size: \"huge\",\n fluid: true,\n basic: true,\n disabled: true\n }\n};\n\nconst getMode = item => {\n if (item.isMandatoryDisplay) {\n return \"mandatory\";\n }\n\n if (item.isOptional) {\n if (!item.isActivated && !item.isBackendActivated) {\n if (item.isReplacement) {\n return \"replacement\";\n }\n return \"buyable\";\n }\n }\n if (item.isValid) {\n if (item.isConfigurable) {\n if (item.isDecided) {\n return \"decided\";\n }\n return \"undecided\";\n }\n return \"disabled\";\n }\n return \"warning\";\n};\n\nexport const navigationButton = item => {\n return BUTTONS[getMode(item)];\n};\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\n\nimport { formatNumber } from \"shared/helpers/formatNumber\";\n\nclass FormatNumber extends Component {\n render() {\n return {formatNumber(this.props.value, this.props.decimals)};\n }\n}\n\nFormatNumber.propTypes = {\n value: PropTypes.number.isRequired,\n decimals: PropTypes.number.isRequired\n};\n\nFormatNumber.defaultProps = {\n decimals: 2\n};\n\nexport default FormatNumber;\n","export const formatCurrency2 = (\n amount,\n minimumFractionDigits = 2,\n currency = \"EUR\"\n) => {\n let formatter;\n if (!currency) {\n formatter = new Intl.NumberFormat(\"de-DE\", {\n minimumFractionDigits\n });\n } else {\n formatter = new Intl.NumberFormat(\"de-DE\", {\n style: \"currency\",\n currency,\n minimumFractionDigits\n });\n }\n return formatter.format(Number(amount));\n};\n\nexport const formatCurrency = (amount, currency = \"EUR\") => {\n return formatCurrency2(amount, 2, currency);\n};\n\nexport const parseNumber = string => {\n if (!string) return;\n string = string.toString();\n string = string.replace(\" \", \"\");\n string = string.replace(\"€\", \"\");\n string = string.replace(\"EUR\", \"\");\n string = string.replace(/euro/i, \"\");\n let decimalSign = \"none\";\n if (string.substr(-3, 1) === \",\" || string.substr(-2, 1) === \",\") {\n decimalSign = \"comma\";\n }\n if (string.substr(-3, 1) === \".\" || string.substr(-2, 1) === \".\") {\n decimalSign = \"dot\";\n }\n if (string.match(/,/g)?.length > 1) {\n decimalSign = \"dot\";\n }\n if (string.match(/\\./g)?.length > 1) {\n decimalSign = \"comma\";\n }\n // invalid number of commas and dots\n if (string.match(/,/g)?.length > 1 && string.match(/\\./g)?.length > 1) {\n string = \"0\";\n decimalSign = \"none\";\n }\n\n switch (decimalSign) {\n case \"comma\":\n string = `${string.split(\",\")[0].replace(/\\./g, \"\")}.${string.split(\n \",\"\n )[1] || 0}`;\n break;\n case \"dot\":\n string = `${string.split(\".\")[0].replace(/,/g, \"\")}.${string.split(\n \".\"\n )[1] || 0}`;\n break;\n case \"none\":\n string = string.replace(/[,.]/g, \"\");\n break;\n }\n string = Math.round(Number(string) * 100) / 100;\n return string;\n};\n","const serialize = function(params, prefix) {\n const query = Object.keys(params).map(key => {\n const value = params[key];\n\n if (params.constructor === Array) key = `${prefix}[]`;\n else if (params.constructor === Object)\n key = prefix ? `${prefix}[${key}]` : key;\n\n if (typeof value === \"object\") return serialize(value, key);\n return `${key}=${encodeURIComponent(value)}`;\n });\n\n return [].concat.apply([], query).join(\"&\");\n};\n\nexport default serialize;\n","import { arrayOf, number, shape, string } from \"prop-types\";\nimport CostAttributeShape from \"shared/shapes/costAttribute.shape\";\n\nconst ProductPriceShape = shape({\n id: number.isRequired,\n product_option_id: number.isRequired,\n price_catalog_id: number.isRequired,\n price: number.isRequired,\n excess_price: number,\n costs_attributes: arrayOf(CostAttributeShape).isRequired,\n deprecated_at: string,\n deprecated_by_id: number,\n created_at: string.isRequired,\n updated_at: string\n});\nexport default ProductPriceShape;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n flatten,\n isEmpty,\n values,\n get,\n isArray,\n isString,\n isObject\n} from \"lodash\";\nimport { UPDATE_MESSAGE } from \"shared/constants/appConstants\";\n\nconst processErrors = errors => {\n if (isString(errors)) {\n return errors;\n }\n if (isArray(errors)) {\n return errors;\n }\n return errors.map(err => {\n const [key] = Object.keys(err);\n if (key) {\n return `${key}: ${err[key]}`;\n }\n return err;\n });\n};\n\nconst FormattedErrorReason = ({ errors }) => {\n return (\n
      \n {errors.map(error => {\n let errorText = error;\n if (isObject(error)) {\n const key = Object.keys(error)[0];\n errorText = `${error[key]} (${key})`;\n }\n return
    • {errorText}
    • ;\n })}\n
    \n );\n};\n\nFormattedErrorReason.propTypes = {\n errors: PropTypes.arrayOf(PropTypes.string).isRequired\n};\n\nexport const getHandleDeleteFailed = dispatch => response => {\n const errors = flatten(values(get(response, \"data\", {})), true);\n if (!isEmpty(errors)) {\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n type: \"error\",\n title: \"resources.error.delete.title\",\n body: \"resources.error.delete.body\",\n bodyValues: {\n reason: \n }\n }\n });\n } else {\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n type: \"error\",\n title: \"message.errorDelete.title\",\n body: \"message.errorDelete.body\"\n }\n });\n }\n throw response;\n};\n\nexport const getHandleUpdateFailed = dispatch => response => {\n const errors = flatten(values(get(response, \"data\", {})), true);\n // if errors consists of objects i.e.: {identifier: ['ist bereits vergeben']}\n const arrayOfValuesErrors = processErrors(errors);\n\n if (!isEmpty(arrayOfValuesErrors)) {\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n type: \"error\",\n title: \"resources.error.update.title\",\n body: \"resources.error.update.body\",\n bodyValues: {\n reason: \n }\n }\n });\n } else {\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n type: \"error\",\n title: \"message.errorSave.title\",\n body: \"message.errorSave.body\"\n }\n });\n }\n throw response;\n};\n","/* eslint-disable import/prefer-default-export */\n\nexport const UPDATE_LOGO_PATH = \"UPDATE_LOGO_PATH\";\n\nexport const UPDATE_LOCALE = \"UPDATE_LOCALE\";\n\nexport const UPDATE_I18N = \"UPDATE_I18N\";\n\nexport const UPDATE_ACCOUNT = \"UPDATE_ACCOUNT\";\n\nexport const UPDATE_MESSAGE = \"UPDATE_MESSAGE\";\nexport const UPDATE_FLASH_ACTION = \"UPDATE_FLASH_ACTION\";\nexport const REMOVE_FLASH_ACTION = \"REMOVE_FLASH_ACTION\";\n\nexport const UPDATE_IS_LOADING = \"UPDATE_IS_LOADING\";\n\nexport const DELETE_PAGE_CONTENT = \"DELETE_PAGE_CONTENT\";\nexport const UPDATE_PAGE_CONTENT = \"UPDATE_PAGE_CONTENT\";\nexport const ADD_CONFIGURATOR_SELECTION = \"ADD_CONFIGURATOR_SELECTION\";\nexport const REMOVE_CONFIGURATOR_SELECTION = \"REMOVE_CONFIGURATOR_SELECTION\";\nexport const SET_CONFIGURATOR_SELECTION = \"SET_CONFIGURATOR_SELECTION\";\nexport const TOGGLE_CONFIGURATOR_SELECTION = \"TOGGLE_CONFIGURATOR_SELECTION\";\nexport const ADD_PAGE_CONTENT = \"ADD_PAGE_CONTENT\";\nexport const UPDATE_PAGE_CONTENT_MESSAGE_FORM =\n \"UPDATE_PAGE_CONTENT_MESSAGE_FORM\";\nexport const REMOVE_ID_FROM_PAGE_CONTENT = \"REMOVE_ID_FROM_PAGE_CONTENT\";\nexport const UPDATE_ROOM_BOOK = \"UPDATE_ROOM_BOOK\";\nexport const UPDATE_SUB_LINE_ITEM_SEARCH_RESULT =\n \"UPDATE_SUB_LINE_ITEM_SEARCH_RESULT\";\n\nexport const UPDATE_FILTER = \"UPDATE_FILTER\";\n\nexport const UPDATE_DIALOG = \"UPDATE_DIALOG\";\n\nexport const UPDATE_NOTIFICATIONS = \"UPDATE_NOTIFICATIONS\";\n\nexport const UPDATE_CONTRACTOR_SELECTION = \"UPDATE_CONTRACTOR_SELECTION\";\nexport const RESET_CONTRACTOR_SELECTION = \"RESET_CONTRACTOR_SELECTION\";\n\nexport const OPEN_MODAL = \"OPEN_MODAL\";\nexport const CLOSE_MODAL = \"CLOSE_MODAL\";\n","import { Button } from \"semantic-ui-react\";\nimport { oneOfType, shape, string, node, func, bool, number } from \"prop-types\";\n\nexport const cardGridItemShape = shape({\n key: oneOfType([string, number]).isRequired,\n modelType: string,\n imageClass: string.isRequired,\n imageUrl: string.isRequired,\n url: string,\n button: shape(Button.propTypes),\n popup: shape({\n header: oneOfType([string, node]),\n content: oneOfType([string, node])\n }),\n onClick: func,\n total: number,\n isBasePrice: bool,\n isPriceOnRequest: bool,\n isMandatoryDisplay: bool\n});\n\nexport default cardGridItemShape;\n","import { arrayOf } from \"prop-types\";\nimport React from \"react\";\nimport { withI18n } from \"shared/containers/i18n/i18n\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport { Card, Button, Label, Icon, Popup } from \"semantic-ui-react\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\nimport { FormattedMessage } from \"react-intl\";\nimport { I18nShape } from \"shared/shapes/i18n.shape\";\nimport { cardGridItemShape } from \"shared/shapes/cardGrid.shape\";\nimport { browserHistory } from \"../../routes/browserHistory\";\nimport \"./cardGrid.scss\";\n\nclass CardGrid extends React.Component {\n pricePrefix = item => {\n if (item.isMandatoryDisplay) return \"\";\n if (item.isBasePrice) return \"ab\";\n if (item.total >= 0) return ;\n return ;\n };\n\n generateOnClickHandler(item) {\n if (item.isMandatoryDisplay || !(item.url || item.onClick))\n return undefined;\n return () => this.handleClick(item);\n }\n\n handleClick(item) {\n if (item.url) {\n handleScrollTop();\n browserHistory.push(item.url);\n } else if (item.onClick) {\n item.onClick(item);\n }\n }\n\n renderPriceTag(item) {\n if (item.isPriceOnRequest) {\n return (\n \n );\n }\n if (!Number.isNaN(item.total)) {\n return (\n \n );\n }\n\n return \"\";\n }\n\n render() {\n const { i18n, items } = this.props;\n return (\n \n {items.map(item => {\n const card = (\n \n \n {item.title}\n \n
    \n {this.renderPriceTag(item)}\n \n
    \n {item.button?.content && (\n \n )}\n \n );\n\n if (item.popup) {\n return (\n \n {item.popup.header}\n {item.popup.content}\n \n );\n }\n return card;\n })}\n \n );\n }\n}\n\nCardGrid.propTypes = {\n i18n: I18nShape.isRequired,\n items: arrayOf(cardGridItemShape).isRequired\n};\n\nexport default withI18n(CardGrid);\n","import { createSelector } from \"reselect\";\nimport {\n merge,\n isArray,\n isEmpty,\n isEqual,\n groupBy,\n keyBy,\n get,\n intersectionWith\n} from \"lodash\";\nimport { getBuyerSelections, getFlatRoomBook } from \"./base\";\n\nexport class RulesEngine {\n constructor(baseRules, baseFacts) {\n this.baseRules = baseRules;\n this.baseFacts = baseFacts;\n this.rules = this.filterMatchingRules(baseRules, baseFacts);\n }\n\n assert(assertable) {\n if (isEmpty(this.rules)) {\n return true;\n }\n return this.assertItem(this.rules, assertable);\n }\n\n getApplicableFacts() {\n return this.baseFacts.filter(fact => {\n return this.baseRules.some(rule => {\n return this.assertFilter(rule.when, fact);\n });\n });\n }\n\n assertItem(rules, item) {\n return rules.every(rule => {\n return this.assertFilter(rule.then, item);\n });\n }\n\n assertFilter(filter, item) {\n return Object.entries(filter).every(([key, matcher]) => {\n return this.matches(item[key], matcher);\n });\n }\n\n filterMatchingRules(rules, facts) {\n return rules.filter(rule => {\n return facts.some(fact => {\n return this.assertFilter(rule.when, fact);\n });\n });\n }\n\n matches(item, matcher) {\n return Object.entries(matcher).every(([property, expectedValues]) => {\n const actualValue = item[property];\n if (isArray(actualValue)) {\n return (\n intersectionWith(actualValue, expectedValues, isEqual).length > 0\n );\n }\n return expectedValues.indexOf(actualValue) >= 0;\n });\n }\n}\n\nexport const getRuleSets = state => get(state, \"pageContent.product_rules\", []);\n\nexport const getRuleSetsByProductGroup = createSelector(\n [getRuleSets],\n ruleSets => {\n const mappedRuleSets = ruleSets.map(\n ({ product_group_then, product_group_when, rules, scope }) => ({\n product_group_id: product_group_then,\n rules: rules.map(({ when, then }) => ({\n when: { ...when, product_group: { id: [product_group_when] } },\n then\n })),\n scope\n })\n );\n return groupBy(mappedRuleSets, \"product_group_id\");\n }\n);\n\nconst subLineItemToFact = subLineItem => {\n return {\n line_item: {\n id: subLineItem.line_item_id\n },\n sub_section: {\n id: subLineItem.sub_section_id\n },\n section: {\n id: subLineItem.section_id\n },\n sub_line_item: {\n id: subLineItem.id\n },\n product_group: {\n id: subLineItem.product_group_id\n },\n product: {\n id: subLineItem.product_id\n }\n };\n};\n\nconst getFacts = createSelector(\n [getBuyerSelections, getFlatRoomBook],\n (buyerSelections, roomBook) => {\n const subLineItems = keyBy(roomBook.subLineItems, \"id\");\n return Object.entries(buyerSelections).reduce((accu, [id, obj]) => {\n const subLineItem = subLineItems[id];\n\n if (!obj || !subLineItem) {\n return accu;\n }\n\n return accu.concat([\n merge(subLineItemToFact(subLineItem), {\n room_book: {\n id: roomBook.id\n },\n product: {\n id: obj.product_id\n }\n })\n ]);\n }, []);\n }\n);\n\nconst getFactsByLineItem = createSelector([getFacts], facts => {\n return groupBy(facts, fact => fact.line_item.id);\n});\n\nconst getFactsBySubSection = createSelector([getFacts], facts => {\n return groupBy(facts, fact => fact.sub_section.id);\n});\n\nconst getFactsBySection = createSelector([getFacts], facts => {\n return groupBy(facts, fact => fact.section.id);\n});\n\nconst getFactsByScopeFn = createSelector(\n [getFacts, getFactsByLineItem, getFactsBySubSection, getFactsBySection],\n (facts, factsByLineItem, factsBySubSection, factsBySection) => {\n return (scope, subLineItem) => {\n switch (scope) {\n case \"line_item\":\n return factsByLineItem[subLineItem.line_item_id] || [];\n case \"sub_section\":\n return factsBySubSection[subLineItem.sub_section_id] || [];\n case \"section\":\n return factsBySection[subLineItem.section_id] || [];\n default:\n return facts;\n }\n };\n }\n);\n\nexport const isProductAcceptable = createSelector(\n [getRuleSetsByProductGroup, getFactsByScopeFn],\n (ruleSets, getFactsByScope) => {\n return (subLineItem, product) => {\n const productRuleSets = ruleSets[subLineItem.product_group_id] || [];\n return (\n !product ||\n productRuleSets.every(rule => {\n const facts = getFactsByScope(rule.scope, subLineItem);\n const engine = new RulesEngine(rule.rules, facts);\n return engine.assert({ product });\n })\n );\n };\n }\n);\n\n/*\n * For each subLineItem.id it returns an array of dependencies to other subLineItems.\n */\nexport const getSubLineItemDependencies = createSelector(\n [getRuleSetsByProductGroup, getFactsByScopeFn, getFlatRoomBook],\n (ruleSets, getFactsByScope, roomBook) => {\n const { subLineItems } = roomBook;\n\n return subLineItems.reduce((accu, subLineItem) => {\n const rules = ruleSets[subLineItem.product_group_id] || [];\n\n const dependencies = rules.reduce((accu, rule) => {\n const facts = getFactsByScope(rule.scope, subLineItem);\n const engine = new RulesEngine(rule.rules, facts);\n\n const applicableFacts = engine.getApplicableFacts();\n return accu.concat(\n applicableFacts.map(f => {\n return f.sub_line_item.id;\n })\n );\n }, []);\n\n accu[subLineItem.id] = dependencies;\n return accu;\n }, {});\n }\n);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { get } from \"lodash\";\n\nimport toggleDialogCreator from \"shared/helpers/toggleDialogCreator\";\nimport ConfirmationDialog from \"./ConfirmationDialog\";\n\nexport const CONFIRMATION_DIALOG = \"CONFIRMATION_DIALOG\";\n\nexport const toggleConfirmationDialog = dispatch => {\n const toggle = toggleDialogCreator(\n dispatch,\n \"confirmation_dialog\",\n \"buyer_portal\"\n );\n return dialogModel => {\n toggle(CONFIRMATION_DIALOG, dialogModel);\n };\n};\n\nclass ConfirmationDialogContainer extends Component {\n render() {\n const { dialogModel, toggleDialog } = this.props;\n\n if (dialogModel) {\n return (\n {\n toggleDialog(CONFIRMATION_DIALOG, null);\n }}\n />\n );\n }\n return null;\n }\n}\n\nconst mapStateToProps = (state, props) => {\n const { module, id } = props;\n return {\n ...props,\n i18n: state.i18n,\n dialogModel: get(state, [\"dialog\", module, id, CONFIRMATION_DIALOG])\n };\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n const { module, id } = props;\n return {\n toggleDialog: toggleDialogCreator(dispatch, id, module)\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ConfirmationDialogContainer);\n","import React from \"react\";\nimport {\n Button,\n Modal,\n Icon,\n Header,\n Card,\n Image,\n Divider,\n Container\n} from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getAccount } from \"shared/selectors\";\nimport { bool } from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nfunction UpscaleCardGroup({ enableAffiliates }) {\n const modalActions = (\n \n \n \n \n \n \n \n );\n const glamCard = (\n \n \n \n );\n const modernCard = (\n \n \n \n );\n const scandinavianCard = (\n \n \n \n );\n\n return (\n enableAffiliates && (\n
    \n \n
    \n \n
    \n
    \n \n \n \n
    \n )\n );\n}\n\nUpscaleCardGroup.propTypes = {\n enableAffiliates: bool.isRequired\n};\n\nfunction mapStateToProps(state) {\n return {\n enableAffiliates: getAccount(state).isEnabled(\"enable_affiliates\")\n };\n}\n\nexport default connect(mapStateToProps)(UpscaleCardGroup);\n","import React from \"react\";\nimport { getProject } from \"shared/selectors\";\nimport { connect } from \"react-redux\";\nimport { string } from \"prop-types\";\n\nfunction AdditionalProjectHtml({ __html }) {\n // Still unsecure bit Field is only controlled by Admins.\n // eslint-disable-next-line react/no-danger\n return __html &&
    ;\n}\n\nAdditionalProjectHtml.propTypes = {\n __html: string.isRequired\n};\n\nfunction mapStateToProps(state) {\n return {\n __html: getProject(state).additional_html || \"\"\n };\n}\n\nexport default connect(mapStateToProps)(AdditionalProjectHtml);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Grid } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\n\nimport {\n getUnit,\n findLineItem,\n findSection,\n findSubLineItem\n} from \"shared/selectors/unit\";\nimport { has } from \"lodash\";\nimport { withRouter } from \"../../helpers/withRouter\";\nimport \"./pageTotal.scss\";\n\nclass PageTotal extends React.Component {\n static propTypes = {\n i18n: PropTypes.object.isRequired,\n unit: PropTypes.object.isRequired,\n isPriceOnRequest: PropTypes.bool.isRequired,\n item: PropTypes.object\n };\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { unit, item, isPriceOnRequest } = this.props;\n return (\n
    \n {this.renderSubTotal(item, isPriceOnRequest)}\n {this.renderTotal(unit, isPriceOnRequest)}\n {this.renderHints(isPriceOnRequest)}\n
    \n );\n }\n\n renderTotal = (unit, isPriceOnRequest) => {\n return (\n
    \n \n \n \n \n \n \n {isPriceOnRequest ? \"*\" : \"\"}\n \n \n
    \n );\n };\n\n renderSubTotal = (item, isPriceOnRequest) => {\n if (item) {\n const amount = has(item, \"totalRelative\")\n ? item.totalRelative\n : item.total;\n return (\n
    \n \n \n \n \n {/* This column below contains subtotal text without VAT\n it is hidden by default\n can be shown by using the css code in this snippet: https://gitlab.com/baudigital/plano/-/snippets/2053347 */}\n \n \n \n \n \n {isPriceOnRequest ? \"*\" : \"\"}\n \n \n
    \n );\n }\n };\n\n renderHints = isPriceOnRequest => {\n if (isPriceOnRequest) {\n return (\n
    \n *{\" \"}\n \n
    \n );\n }\n };\n}\n\nconst mapStateToProps = (state, props) => {\n const { i18n } = state;\n const { sectionId, lineItemId, subLineItemId } = props.params;\n\n const item = [\n [subLineItemId, findSubLineItem],\n [lineItemId, findLineItem],\n [sectionId, findSection]\n ]\n .filter(e => e[0])\n .map(e => e[1](state)(e[0]))[0];\n const unit = getUnit(state);\n const { isPriceOnRequest } = unit;\n\n return {\n i18n,\n unit,\n item,\n isPriceOnRequest\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(PageTotal));\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport { Link } from \"react-router\";\nimport {\n findLineItem,\n findSubLineItem,\n findSection,\n getSectionPath,\n getLineItemPath,\n makeSectionPath,\n getUnitPath\n} from \"shared/selectors/unit\";\nimport { Icon, Header, Button, Grid, Responsive } from \"semantic-ui-react\";\nimport { last } from \"lodash\";\nimport { withRouter } from \"../../helpers/withRouter\";\nimport \"./roomBookNavigation.scss\";\n\nclass RoomBookNavigation extends React.Component {\n static propTypes = {\n i18n: PropTypes.object,\n user: PropTypes.object,\n actions: PropTypes.object,\n pageName: PropTypes.string,\n unitPath: PropTypes.string\n };\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { root, segments, pageTitle, parent } = this.props;\n\n if (root) {\n const items = segments.map((segment, idx) => {\n return (\n \n {segment.title}\n \n );\n });\n\n return (\n
    \n \n \n \n
    \n \n \n \n {root.title}\n \n \n {items} {pageTitle}\n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n {pageTitle}\n \n \n \n
    \n );\n }\n return null;\n }\n\n navigateToParent = () => {\n const { parent, router } = this.props;\n\n router.push(parent.path);\n handleScrollTop();\n };\n}\n\nconst mapStateToProps = (state, props) => {\n const { sectionId, lineItemId, subLineItemId } = props.params;\n let pageTitle = \"asd\";\n const segments = [];\n let root = null;\n let section = null;\n\n if (sectionId) {\n section = findSection(state)(sectionId);\n\n pageTitle = section.title;\n if (!section.isRoot) {\n const parent = findSection(state)(section.parentId);\n root = {\n path: makeSectionPath(props, parent.id),\n title: parent.title\n };\n } else {\n root = {\n path: getUnitPath(props),\n title: \"Ausstattungskatalog\"\n };\n }\n }\n\n if (lineItemId) {\n const lineItem = findLineItem(state)(lineItemId);\n const section = findSection(state)(sectionId);\n\n pageTitle = lineItem.title;\n\n segments.push({\n path: getSectionPath(props),\n title: section.title\n });\n }\n\n if (subLineItemId) {\n const lineItem = findLineItem(state)(lineItemId);\n const subLineItem = findSubLineItem(state)(subLineItemId);\n\n pageTitle = subLineItem.title;\n\n if (section.isCompactDisplay) {\n segments.push({\n path: getSectionPath(props),\n title: section.title\n });\n } else {\n segments.push({\n path: getLineItemPath(props),\n title: lineItem.title\n });\n }\n }\n\n const parent = last(segments) || root;\n\n return {\n i18n: state.i18n,\n pageTitle,\n segments,\n root,\n parent,\n unitPath: getUnitPath(props)\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(RoomBookNavigation));\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport {\n Container,\n Icon,\n Button,\n Modal,\n Responsive,\n Header\n} from \"semantic-ui-react\";\n\nimport { getUserRole } from \"shared/selectors\";\nimport { getBottomNavigationModel } from \"shared/selectors/unit\";\nimport { toggleCompletionDialog } from \"shared/actions/dialogActions\";\nimport { withRouter } from \"../../helpers/withRouter\";\nimport { dispatchEventAction } from \"../../actions/eventActions\";\n\nimport \"./bottomNavigation.scss\";\n\nclass BottomNavigation extends React.Component {\n static propTypes = {\n prev: PropTypes.object,\n next: PropTypes.object,\n userRole: PropTypes.string\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n confirm: null\n };\n }\n\n render() {\n const { next, hideBackButton, showCompletionButton } = this.props;\n\n if (next) {\n return (\n
    \n {this.renderReminderModal()}\n \n \n {showCompletionButton && this.renderCompletionButton()}\n {!hideBackButton && (\n \n )}\n {this.renderButton(next, \"right\", next.color, {})}\n \n \n {this.renderButton(next, \"right\", next.color, {\n fluid: true,\n icon: next.iconMobile,\n content: next.labelMobile || next.label\n })}\n {showCompletionButton &&\n this.renderCompletionButton({\n direction: \"left\",\n active: false,\n fluid: true\n })}\n \n \n
    \n );\n }\n if (showCompletionButton) {\n return (\n
    \n {this.renderReminderModal()}\n \n \n {this.renderCompletionButton({\n direction: \"right\",\n active: true\n })}\n \n \n {this.renderCompletionButton({\n direction: \"right\",\n active: true,\n fluid: true\n })}\n \n \n
    \n );\n }\n return null;\n }\n\n renderCompletionButton = (props = {}) => {\n const { toggleCompletionDialog } = this.props;\n const { direction, active, fluid } = props;\n return (\n {\n toggleCompletionDialog(true);\n }}\n />\n );\n };\n\n renderReminderModal() {\n const { confirm } = this.state;\n\n if (confirm) {\n return (\n this.setState({ confirm: null })}\n data-component=\"reminderModal\"\n >\n \n
    \n \n \n {confirm.confirmation.title}\n \n {confirm.confirmation.message}\n \n \n
    \n
    \n \n {\n this.navigateTo(confirm.path);\n }}\n basic\n content=\"Ja\"\n size=\"large\"\n className=\"secondary\"\n />\n \n \n \n );\n }\n }\n\n renderButton = (navigation, orientation, colorCls, props = {}) => {\n if (navigation) {\n return (\n \n );\n }\n };\n\n navigateBack = () => {\n const { router } = this.props;\n router.goBack();\n };\n\n triggerNavigationFn = navigation => {\n const { userRole, triggerEventAction } = this.props;\n const roleMayNeedConfirmation = [\"admin\", \"buyer\"].includes(userRole);\n\n return () => {\n triggerEventAction(navigation.eventAction).then(() => {\n if (roleMayNeedConfirmation && navigation.confirmation) {\n this.setState({ confirm: navigation });\n } else {\n this.navigateTo(navigation.path);\n }\n });\n };\n };\n\n navigateTo = path => {\n const { router } = this.props;\n this.closeReminder();\n handleScrollTop();\n router.push(path);\n };\n\n closeReminder = () => {\n this.setState({ confirm: false });\n };\n}\n\nconst mapStateToProps = (state, props) => {\n const { i18n } = state;\n const userRole = getUserRole(state);\n return {\n i18n,\n userRole,\n ...getBottomNavigationModel(state, props)\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n toggleCompletionDialog: toggleCompletionDialog(dispatch),\n triggerEventAction: event => {\n return dispatchEventAction(dispatch, event);\n }\n };\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(BottomNavigation)\n);\n","import {\n getResource,\n SUB_LINE_ITEM_RESOURCE\n} from \"shared/actions/actionLocator\";\nimport { get } from \"lodash\";\nimport { SectionCompletedResource } from \"./localTableResource\";\n\nexport const dispatchEventAction = (dispatch, event) => {\n if (get(event, \"type\") === \"sectionCompleted\") {\n return new SectionCompletedResource(dispatch).put(\n event.payload.value,\n true\n );\n }\n if (get(event, \"type\") === \"autoSelectOptions\") {\n const LineItemResource = getResource(SUB_LINE_ITEM_RESOURCE);\n const resource = new LineItemResource(dispatch, event.payload.unitId);\n return resource.selectProducts(event.payload.selection);\n }\n return Promise.resolve();\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Container } from \"semantic-ui-react\";\nimport UpscaleCardGroup from \"shared/components/affiliates/upscale/upscaleCardGroup\";\nimport AdditionalProjectHtml from \"buyer_portal/components/additionalProjectHtml\";\nimport PageTotal from \"./PageTotal\";\nimport RoomBookNavigation from \"./RoomBookNavigation\";\nimport BottomNavigation from \"./BottomNavigation\";\n\nexport default class CatalogPage extends React.Component {\n static propTypes = {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array])\n .isRequired\n };\n\n render() {\n const { children } = this.props;\n\n return (\n
    \n \n \n {children}\n \n \n \n \n \n
    \n );\n }\n}\n","import { createSelector } from \"reselect\";\nimport { get, keyBy } from \"lodash\";\nimport defaultMap from \"../../../../../../engines/core/data/processes/general/states_bp.json\";\nimport { getFlatRoomBook } from \"./base\";\n\nexport const getStatusMapping = state => {\n return keyBy(\n get(state, [\"account\", \"account\", \"config\", \"buyerapp_status\"], defaultMap),\n \"id\"\n );\n};\n\nexport const getStatus = createSelector([getStatusMapping], statusMapping => {\n return status => {\n return statusMapping[status];\n };\n});\n\nexport const getLineItemStatusMap = createSelector(\n [getFlatRoomBook, getStatus],\n (roomBook, getStatus) => {\n return roomBook.lineItems.reduce((accu, lineItem) => {\n accu[lineItem.id] = getStatus(lineItem.external_status);\n return accu;\n }, {});\n }\n);\n\nexport const getLineItemStatus = createSelector(\n [getLineItemStatusMap],\n lineItemStatus => {\n return lineItem => {\n return lineItemStatus[lineItem.id];\n };\n }\n);\n\nexport const getSubLineItemStatus = createSelector(\n [getLineItemStatusMap],\n lineItemStatus => {\n return subLineItem => {\n return lineItemStatus[subLineItem.lineItemId];\n };\n }\n);\n","import { UPDATE_MESSAGE } from \"shared/constants/appConstants\";\n\nclass Growl {\n constructor(dispatch) {\n this.dispatch = dispatch;\n }\n\n error(title, body, options) {\n this.trigger(title, body, \"exclamation circle\", \"error\", options);\n }\n\n success(title, body, options) {\n this.trigger(title, body, \"check\", \"success\", options);\n }\n\n warning(title, body, options) {\n this.trigger(title, body, \"warning\", \"warning\", options);\n }\n\n dismiss() {\n this.trigger(\"\", \"\");\n }\n\n trigger(\n title,\n body,\n icon = undefined,\n type = undefined,\n options = { timeout: undefined, titleValues: {}, bodyValues: {} }\n ) {\n this.dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n icon,\n type,\n title,\n body,\n ...options\n }\n });\n }\n}\n\nexport default Growl;\n","import { ProjectShape } from \"shared/shapes/project.shape\";\nimport { SectionShape } from \"shared/shapes/section.shape\";\nimport { bool, number, oneOfType, shape, string } from \"prop-types\";\n\nexport const UnitShape = shape({\n id: number,\n slug: string,\n display_name: string,\n unit_number: string,\n sample: bool,\n sample_unit_token: string,\n description: string,\n cellar_number: string,\n parking_space_number: string,\n marketing_portal_url: string,\n buyer_portal_url: string,\n project_id: oneOfType([number, string]),\n project: ProjectShape,\n section_id: number,\n section: SectionShape,\n buyer_id: number,\n buyer: shape({ label: string }),\n room_book_id: number,\n social_media_title_override: string,\n social_media_description_override: string,\n statistics: shape({\n deadlines: shape({\n overdue: number,\n close: number\n })\n })\n});\n\nexport default UnitShape;\n","import { string, number, shape, objectOf, bool, arrayOf } from \"prop-types\";\n\nexport const ProjectShape = shape({\n developer_contact_person: string,\n developer_email: string,\n developer_name: string,\n developer_phone: string,\n id: number,\n label: string,\n name: string,\n process_type: string,\n slug: string,\n status: string,\n thumb_url: string,\n account_manager_id: number,\n features: objectOf(bool),\n attachment_types: arrayOf(string)\n});\n\nexport default ProjectShape;\n","import { combineReducers } from \"redux\";\n\nimport { i18n } from \"../../shared/reducers/i18n\";\nimport { locale } from \"../../shared/reducers/locale\";\nimport { account } from \"../../shared/reducers/account\";\nimport { message } from \"../../shared/reducers/message\";\nimport { isLoading } from \"../../shared/reducers/isLoading\";\nimport { logoPath } from \"../../shared/reducers/logoPath\";\nimport { pageContent } from \"../../shared/reducers/pageContent\";\nimport { filter } from \"../../shared/reducers/filter\";\nimport { dialog } from \"../../shared/reducers/dialog\";\nimport { branding } from \"./branding\";\nimport configuratorPreviewSelection from \"../../buyer_portal/reducers/configuratorPreviewSelection\";\nimport cloudinaryEnv from \"../../shared/reducers/cloudinaryEnv\";\n\nexport const combinedReducers = combineReducers({\n branding,\n i18n,\n locale,\n account,\n message,\n isLoading,\n logoPath,\n pageContent,\n filter,\n dialog,\n configuratorPreviewSelection,\n cloudinaryEnv\n});\n","export const branding = (state = \"\") => {\n return state;\n};\n","import localStorage from \"shared/helpers/localStorage\";\n\nexport const resetSelection = () => {\n localStorage.remove(\"buyerSelections\");\n localStorage.remove(\"sectionCompleted\");\n location.reload();\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Link } from \"react-router\";\nimport { get } from \"lodash\";\nimport { Segment, Grid, Container } from \"semantic-ui-react\";\nimport { resetSelection } from \"marketing_portal/actions/resetAction\";\nimport { withRouter } from \"../../../shared/helpers/withRouter\";\nimport \"./pageFooter.scss\";\n\nclass PageFooter extends React.Component {\n static propTypes = {\n layoutScope: PropTypes.string,\n dataPrivacyStatementUri: PropTypes.string,\n account: PropTypes.object\n };\n\n render() {\n const { account, layoutScope, dataPrivacyStatementUri } = this.props;\n if (layoutScope !== \"login\") {\n return (\n \n \n \n \n \n \n \n {dataPrivacyStatementUri && (\n \n \n \n )}\n \n \n \n \n \n Copyright © {new Date().getFullYear()} -{\" \"}\n {account && account.name}\n \n \n \n \n );\n }\n return (\n
    \n Home|\n \n \n \n |\n {dataPrivacyStatementUri && (\n \n \n \n )}\n
    \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n const layoutScope = props.routes.reduce((accu, r) => {\n return r.layoutScope;\n });\n\n return {\n account: get(state, \"account.account\"),\n dataPrivacyStatementUri: get(\n state,\n \"branding.account.data_privacy_statement_url\"\n ),\n layoutScope\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(PageFooter));\n","import React, { createRef } from \"react\";\nimport { string, node, shape } from \"prop-types\";\nimport { Helmet } from \"react-helmet\";\nimport { Link } from \"react-router\";\nimport { Menu, Sticky } from \"semantic-ui-react\";\nimport ConfirmationDialogContainer from \"shared/components/dialogs/ConfirmationDialogContainer\";\nimport PageMenu from \"shared/components/pageLayout/PageMenu\";\nimport PageNavigation from \"shared/components/pageLayout/PageNavigation\";\nimport { I18nShape } from \"shared/shapes/i18n.shape\";\nimport { UserShape } from \"shared/shapes/user.shape\";\nimport PageFooter from \"../navigation/PageFooter\";\nimport GrowlMessage from \"../../../shared/components/growlMessage/GrowlMessage\";\n\nimport \"shared/components/pageLayout/pageLayout.scss\";\nimport \"shared/components/pageLayout/pageMenu.scss\";\n\nclass PageLayout extends React.Component {\n contextRef = createRef();\n\n constructor(props) {\n super(props);\n this.state = {\n sidebarIsVisible: false\n };\n this.handleToggleSidebar = this.handleToggleSidebar.bind(this);\n }\n\n handleToggleSidebar() {\n const { sidebarIsVisible } = this.state;\n this.setState({ sidebarIsVisible: !sidebarIsVisible });\n }\n\n render() {\n const {\n accountStyles,\n children,\n i18n,\n layoutScope,\n only3D,\n pageName,\n projectBannerImageUrl,\n projectBranding,\n projectId,\n projectLogoUrl,\n projectStyles,\n unitId,\n unitPath,\n user\n } = this.props;\n const { sidebarIsVisible } = this.state;\n\n const pageTitle = [i18n[pageName], i18n[\"meta.app.name\"]].join(\" - \");\n\n const root = document.documentElement;\n\n if (projectBannerImageUrl?.length) {\n root.style.setProperty(\n \"--project-banner-image-url\",\n `url(${projectBannerImageUrl})`\n );\n }\n\n if (projectLogoUrl?.length) {\n root.style.setProperty(\"--project-logo-url\", `url(${projectLogoUrl})`);\n }\n\n if (projectBranding.branding_color?.length) {\n root.style.setProperty(\n \"--project-branding-color\",\n projectBranding.branding_color\n );\n }\n\n if (projectBranding.branding_contrast_color?.length) {\n root.style.setProperty(\n \"--project-branding-contrast-color\",\n projectBranding.branding_contrast_color\n );\n }\n\n // ignore Wireframe on specific 3d Flag (was a quick n dirty hotfeature)\n if (only3D) {\n // we will have to change body-background, in ProjectStyles, add a class for this intention.\n document.body.classList.add(\"only3d\");\n return (\n
    \n \n {children}\n
    \n );\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n
    \n
    \n \n \n \n
    {children}
    \n
    \n {user && (\n \n \n \n \n
    \n )}\n\n \n \n \n \n );\n }\n}\n\nPageLayout.defaultProps = {\n projectBranding: {\n branding_color: \"\",\n branding_contrast_color: \"\",\n warning_color: \"\"\n },\n user: undefined\n};\n\nPageLayout.propTypes = {\n accountStyles: string.isRequired,\n children: node.isRequired,\n i18n: I18nShape.isRequired,\n layoutScope: string.isRequired,\n only3D: string.isRequired,\n pageName: string.isRequired,\n projectBannerImageUrl: string.isRequired,\n projectBranding: shape({\n branding_color: string,\n branding_contrast_color: string,\n warning_color: string\n }),\n projectId: string.isRequired,\n projectLogoUrl: string.isRequired,\n projectStyles: string.isRequired,\n unitId: string.isRequired,\n unitPath: string.isRequired,\n user: UserShape\n};\n\nexport default PageLayout;\n","import { connect } from \"react-redux\";\nimport { get } from \"lodash\";\nimport PageLayout from \"../components/pageLayout/PageLayout\";\nimport UserConfig from \"../../shared/actions/configActions\";\nimport { getOnly3D } from \"../../shared/selectors/unit/unit\";\nimport { getI18N, getUser } from \"../../shared/selectors\";\n\n// Which part of the Redux global state does our component want to receive as props?\nconst mapStateToProps = (state, props) => {\n const projectId = get(props, \"params.projectId\");\n const unitId = get(props, \"params.id\");\n // This was used to display a logo above the actual banner image.\n // In order to provide a fallback for older accounts, this is still left in.\n const legacyLogoPath = projectId\n ? get(state, `branding.${projectId}.banner_url`, \"\")\n : get(state, \"branding.account.logo.banner\", \"\");\n\n const projectBranding = get(state.branding, projectId);\n\n const accountLogoUrl = get(\n state.branding.account,\n \"logo.half_banner\",\n legacyLogoPath\n );\n\n const projectLogoUrl = get(state, `branding.${projectId}.logo_url`, \"\");\n const projectBannerImageUrl = get(\n state,\n `branding.${projectId}.banner_image_url`,\n \"\"\n );\n\n const unitPath = `/${projectId}/musterwohnung/${unitId}`;\n\n const layoutScope = props.routes.reduce((accu, r) => {\n return r.layoutScope;\n });\n\n return {\n i18n: getI18N(state),\n accountLogoUrl,\n projectBranding,\n projectLogoUrl,\n projectBannerImageUrl,\n unitPath,\n unitId,\n pageName: props.route.name,\n message: state.message,\n user: getUser(state, props),\n projectId,\n projectStyles: get(state, `branding.${projectId}.styles`, \"\"),\n accountStyles: get(state, \"branding.account.styles\", \"\"),\n userConfig: new UserConfig(),\n layoutScope,\n only3D: getOnly3D(props)\n };\n};\n\nexport default connect(mapStateToProps)(PageLayout);\n","import React from \"react\";\nimport { IndexRoute, Route } from \"react-router\";\nimport { DELETE_PAGE_CONTENT } from \"../../shared/constants/appConstants\";\nimport ErrorPageContainer from \"../../shared/containers/errorPage/errorPageContainer\";\nimport UnitAwareContainer from \"../../shared/containers/unit/unitAwareContainer\";\nimport SectionContainer from \"../../shared/containers/roomBook/sectionContainer\";\nimport LineItemPage from \"../../shared/components/roomBook/LineItemPage\";\nimport SubLineItemPage from \"../../shared/components/roomBook/SubLineItemPage\";\nimport ImprintContainer from \"../../shared/containers/pages/imprintContainer\";\nimport { browserHistory } from \"../../shared/routes/browserHistory\";\nimport PageLayoutContainer from \"../containers/pageLayoutContainer\";\nimport AttachmentContainer from \"../../buyer_portal/containers/attachment/attachmentContainer\";\nimport Unit from \"../../shared/components/unit/Unit\";\n\nlet lastState = {\n routes: {},\n params: {},\n location: {}\n};\n\nconst Routes = dispatch => {\n const _handleRedirects = () => {\n if (window.location.pathname === \"/\") {\n browserHistory.push(\"/dashboard\"); // redirect / to /projects\n return true;\n }\n return false;\n };\n\n const onlyTabChanged = (nextState, lastState) => {\n if (\n lastState.params.tab &&\n nextState.params.tab &&\n lastState.params.tab === nextState.params.tab\n ) {\n return false;\n }\n if (\n String(lastState.location.pathname).replace(\n `/${String(lastState.params.tab)}`,\n \"\"\n ) ===\n String(nextState.location.pathname).replace(\n `/${String(nextState.params.tab)}`,\n \"\"\n )\n ) {\n return true;\n }\n return false;\n };\n\n const resetPageContentState = nextState => {\n if (onlyTabChanged(nextState, lastState)) {\n lastState = nextState;\n return;\n }\n lastState = nextState;\n if (!_handleRedirects()) {\n dispatch({\n type: DELETE_PAGE_CONTENT\n });\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","import { BaseSubLineItemResource } from \"shared/actions/roomBookActions\";\nimport { UPDATE_PAGE_CONTENT } from \"shared/constants/appConstants\";\n\nimport localStorage from \"shared/helpers/localStorage\";\n\nimport es6Promise from \"es6-promise\";\nimport { buyerSelectionToResourceValues } from \"../../buyer_portal/actions/roomBookActions\";\n\nes6Promise.polyfill();\n// es lint:\n/* global Promise */\n\nexport class ProductLineResource {\n constructor(dispatch, unitId) {\n this.dispatch = dispatch;\n this.unitId = unitId;\n }\n\n select(value) {\n return new Promise(resolve => {\n const selections =\n JSON.parse(localStorage.get(\"productLineSelection\")) || {};\n selections[this.unitId] = value;\n\n localStorage.set(\"productLineSelection\", JSON.stringify(selections));\n\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: { product_line_selection: { tag: value } }\n });\n resolve({ status: 200 }); // fakes a successful apiRequest response\n });\n }\n}\n\nexport class SubLineItemResource extends BaseSubLineItemResource {\n constructor(dispatch) {\n super(dispatch);\n }\n\n selectProducts(buyerSelections) {\n return this.selectProductsAndQuantities(\n buyerSelectionToResourceValues(buyerSelections)\n );\n }\n\n selectProduct(lineItemId, product) {\n return this.selectProducts({\n [lineItemId]: product.id\n });\n }\n\n deselectProducts(lineItemIds) {\n return this.selectProducts(\n lineItemIds.reduce((a, id) => {\n return { ...a, [id]: \"_destroy\" };\n }, {})\n );\n }\n\n deselectProduct(lineItemId) {\n return this.deselectProducts([lineItemId]);\n }\n\n selectProductsAndQuantities(buyer_selections) {\n return new Promise(resolve => {\n const buyerSelections =\n JSON.parse(localStorage.get(\"buyerSelections\")) || {};\n Object.entries(buyer_selections).forEach(([lineItemId, value]) => {\n if (value === \"_destroy\") {\n delete buyerSelections[lineItemId];\n } else {\n buyerSelections[lineItemId] = value;\n }\n });\n localStorage.set(\"buyerSelections\", JSON.stringify(buyerSelections));\n\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: { buyer_selections: buyerSelections }\n });\n resolve({ status: 200 }); // fakes a successful apiRequest response\n });\n }\n}\n","import { set } from \"lodash\";\nimport apiRequest from \"../../shared/network/apiRequest\";\nimport Resources from \"../../shared/actions/resourcesActions\";\nimport localStorage from \"../../shared/helpers/localStorage\";\n\nexport class UnitsResource extends Resources {\n constructor(dispatch) {\n // @todo: change bp route to mp\n super(dispatch, \"unit\", `/bp/api/v1/sample_units`);\n }\n\n get(id, deep) {\n const deepParameter = (deep && \"?deep=true\") || \"\";\n const url = `${this.url}/${id}${deepParameter}`;\n return apiRequest\n .get(url, this.dispatch)\n .then(response => {\n if (response.status === 200) {\n const buyerSelections =\n JSON.parse(localStorage.get(\"buyerSelections\")) || {};\n set(response, [\"data\", \"buyer_selections\"], buyerSelections);\n const productLineSelection =\n JSON.parse(localStorage.get(\"productLineSelection\")) || {};\n set(response, [\"data\", \"product_line_selection\"], {\n tag: productLineSelection[id]\n });\n\n return response;\n }\n return response;\n })\n .then(this.propagateUpdate.bind(this));\n }\n}\n","import Resource from \"shared/actions/resourceActions\";\n\nexport default class CatalogsResource extends Resource {\n constructor(dispatch, unitId) {\n super(dispatch, \"catalog\", `/bp/api/v1/sample_units/${unitId}/catalog`);\n }\n}\n","import * as Sentry from \"@sentry/react\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\n\n// reducer & middlewares\nimport { applyMiddleware, compose, createStore } from \"redux\";\nimport { Provider } from \"react-redux\";\nimport { Router } from \"react-router\";\nimport { IntlProvider } from \"react-intl\";\nimport moment from \"moment\";\nimport {\n setResource,\n LINE_ITEM_RESOURCE,\n SUB_LINE_ITEM_RESOURCE,\n UNIT_RESOURCE,\n CATALOG_RESOURCE,\n PRODUCT_LINE_RESOURCE\n} from \"shared/actions/actionLocator\";\nimport { LineItemResource } from \"shared/actions/roomBookActions\";\nimport { combinedReducers } from \"../marketing_portal/reducers/setup\";\n\n// router\nimport routes from \"../marketing_portal/routes/routes\";\nimport { browserHistory } from \"../shared/routes/browserHistory\";\n\n// style\nimport \"shared/styles/reset.scss\";\nimport \"semantic-ui-css/semantic.min.css\";\n\n// i18n\nimport { translations } from \"../i18n/translations\";\n// momentjs\n\n// Polyfills\nimport \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\n\n// get state settings from local storage\nimport localStorage from \"../shared/helpers/localStorage\";\n\nimport {\n SubLineItemResource,\n ProductLineResource\n} from \"../marketing_portal/actions/roomBookActions\";\nimport { UnitsResource } from \"../marketing_portal/actions/unitActions\";\nimport CatalogsResource from \"../marketing_portal/actions/catalogsActions\";\n\nif (process.env.RAVEN_DSN && process.env.RAVEN_DSN !== \"\") {\n Sentry.init({ dsn: process.env.RAVEN_DSN });\n}\n\nconst locale = \"de\";\nconst localizedI18nMessages = translations[locale];\nmoment.locale(locale);\n\nlet filter = {};\ntry {\n filter = JSON.parse(localStorage.get(\"filter\"));\n} catch (e) {\n // continue regardless of error\n}\n\nclass App extends React.Component {\n static propTypes = {};\n\n constructor(props) {\n super(props);\n\n const { logoPath, account, branding } = window.initialProps;\n\n this.initialState = {\n ...this.props,\n filter,\n locale,\n logoPath,\n branding,\n i18n: localizedI18nMessages,\n pageContent: null,\n account: account || null,\n message: null,\n isLoading: false,\n dialog: null\n };\n\n const middlewares = [];\n let composeEnhancers = compose;\n if (\n process.env.DISABLE_REDUX_STATE_LOGGING !== \"true\" &&\n process.env.RAILS_ENV === \"development\"\n ) {\n // logger may not even initialize to prevent logging\n // eslint-disable-next-line global-require\n const logger = require(\"../shared/middlewares/logger\").default;\n middlewares.push(logger);\n composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n }\n\n this.store = createStore(\n combinedReducers,\n this.initialState,\n composeEnhancers(applyMiddleware(...middlewares))\n );\n\n setResource(LINE_ITEM_RESOURCE, LineItemResource);\n setResource(SUB_LINE_ITEM_RESOURCE, SubLineItemResource);\n setResource(PRODUCT_LINE_RESOURCE, ProductLineResource);\n setResource(UNIT_RESOURCE, UnitsResource);\n setResource(CATALOG_RESOURCE, CatalogsResource);\n }\n\n render() {\n return (\n \n \n \n {routes(this.store.dispatch)}\n \n \n \n );\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n ReactDOM.render(\n ,\n document.body.appendChild(document.createElement(\"div\"))\n );\n});\n","import {\n getHandleDeleteFailed,\n getHandleUpdateFailed\n} from \"shared/actions/resourcesErrorHandling\";\nimport apiRequest from \"../network/apiRequest\";\nimport serialize from \"../helpers/serialize\";\nimport {\n ADD_PAGE_CONTENT,\n REMOVE_ID_FROM_PAGE_CONTENT,\n UPDATE_PAGE_CONTENT\n} from \"../constants/appConstants\";\n\nclass Resources {\n refreshPageContentAfterCommit; // usually being overloaded\n\n constructor(dispatch, namespace, url, reduxProperty) {\n this.dispatch = dispatch;\n this.namespace = namespace;\n this.reduxProperty = reduxProperty;\n this.url = url;\n this.handleUpdateFailed = getHandleUpdateFailed(dispatch);\n this.handleDeleteFailed = getHandleDeleteFailed(dispatch);\n }\n\n propagateUpdate = response => {\n switch (response.status) {\n case 401: // unauthorized fall-through\n case 404: // not found fall-through\n case 200:\n // write data to store\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: this.toPayload(response.data)\n });\n break;\n case 201: // created\n this.dispatch({\n type: ADD_PAGE_CONTENT,\n payload: this.toPayload([response.data])\n });\n break;\n }\n return response;\n };\n\n propagateDeletedUpdate = id => response => {\n if (this.reduxProperty && response.status === 204) {\n this.dispatch({\n type: REMOVE_ID_FROM_PAGE_CONTENT,\n payload: { property: this.reduxProperty, id }\n });\n return response;\n }\n return this.propagateUpdate(response);\n };\n\n toPayload(data) {\n if (this.reduxProperty) {\n return {\n [this.reduxProperty]: data || undefined\n };\n }\n return data || undefined;\n }\n\n save(values, parentUrlString = \"\") {\n const payload = {};\n payload[this.namespace] = values;\n let request;\n\n if (!values.id) {\n request = apiRequest.post(\n `${this.url}${parentUrlString}`,\n this.dispatch,\n payload\n );\n } else {\n request = apiRequest.patch(\n `${this.url}${parentUrlString}/${values.id}`,\n this.dispatch,\n payload\n );\n }\n\n if (this.refreshPageContentAfterCommit) {\n request = request.then(this.propagateUpdate);\n }\n return request.catch(this.handleUpdateFailed);\n }\n\n get(id, deep) {\n const deepParameter = (deep && \"?deep=true\") || \"\";\n const url = `${this.url}/${id}${deepParameter}`;\n return apiRequest.get(url, this.dispatch).then(this.propagateUpdate);\n }\n\n remove(id) {\n const url = `${this.url}/${id}`;\n return apiRequest\n .delete(url, this.dispatch)\n .then(this.propagateDeletedUpdate(id))\n .catch(this.handleDeleteFailed);\n }\n\n fetchAll(params) {\n let { url } = this;\n if (params && Object.keys(params).length > 0) {\n url = `${url}?${serialize(params)}`;\n }\n return apiRequest.get(url, this.dispatch).then(this.propagateUpdate);\n }\n}\n\nexport default Resources;\n","import { string, number, shape, bool } from \"prop-types\";\n\nexport const ProjectCatalogShape = shape({\n id: number,\n name: string,\n slug: string,\n import_status: string,\n deletable: bool\n});\n\nexport default ProjectCatalogShape;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"MOUSE_ACTIVATION\", {\n enumerable: true,\n get: function get() {\n return _constants.MOUSE_ACTIVATION;\n }\n});\nObject.defineProperty(exports, \"TOUCH_ACTIVATION\", {\n enumerable: true,\n get: function get() {\n return _constants.TOUCH_ACTIVATION;\n }\n});\nexports[\"default\"] = exports.defaultState = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mouseActivation = _interopRequireDefault(require(\"./mouseActivation\"));\n\nvar _touchActivation = _interopRequireDefault(require(\"./touchActivation\"));\n\nvar _constants = require(\"./constants\");\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\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\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar defaultState = {\n active: false,\n activePosition: {\n x: 0,\n y: 0\n },\n prevActivePosition: {\n x: 0,\n y: 0\n },\n passivePosition: {\n x: 0,\n y: 0\n },\n elementDimensions: {\n width: 0,\n height: 0\n },\n elementOffset: {\n left: 0,\n top: 0\n },\n itemPosition: {\n x: 0,\n y: 0\n },\n itemDimensions: {\n width: 0,\n height: 0\n }\n};\nexports.defaultState = defaultState;\n\nvar ReactInputPosition = /*#__PURE__*/function (_Component) {\n _inherits(ReactInputPosition, _Component);\n\n var _super = _createSuper(ReactInputPosition);\n\n function ReactInputPosition() {\n var _this;\n\n _classCallCheck(this, ReactInputPosition);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", defaultState);\n\n _defineProperty(_assertThisInitialized(_this), \"containerRef\", /*#__PURE__*/_react[\"default\"].createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"itemRef\", /*#__PURE__*/_react[\"default\"].createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"mouseDown\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"touched\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"justTouched\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"tapped\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"tapTimer\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"tapTimedOut\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"doubleTapTimer\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"doubleTapTimedOut\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"longTouchTimer\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"longTouchTimedOut\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"refresh\", true);\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadRefresh\", function () {\n _this.refreshPosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleResize\", function () {\n _this.refreshPosition();\n });\n\n return _this;\n }\n\n _createClass(ReactInputPosition, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.init();\n this.refreshPosition();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeMouseEventListeners();\n this.removeTouchEventListeners();\n this.removeOtherEventListeners();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.mouseActivationMethod !== this.props.mouseActivationMethod) {\n this.removeMouseEventListeners();\n this.setMouseInteractionMethods();\n this.addMouseEventListeners();\n }\n\n if (prevProps.touchActivationMethod !== this.props.touchActivationMethod) {\n this.removeTouchEventListeners();\n this.setTouchInteractionMethods();\n this.addTouchEventListeners();\n }\n }\n }, {\n key: \"init\",\n value: function init() {\n this.checkPassiveEventSupport();\n this.setInputInteractionMethods();\n this.addMouseEventListeners();\n this.addTouchEventListeners();\n this.addOtherEventListeners();\n }\n }, {\n key: \"checkPassiveEventSupport\",\n value: function checkPassiveEventSupport() {\n var _this2 = this;\n\n this.supportsPassive = false;\n\n try {\n var options = Object.defineProperty({}, \"passive\", {\n get: function get() {\n return _this2.supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, options);\n window.removeEventListener(\"testPassive\", null, options);\n } catch (e) {}\n }\n }, {\n key: \"updateState\",\n value: function updateState(changes, cb) {\n var _this3 = this;\n\n var onUpdate = this.props.onUpdate;\n var activationCallback;\n\n if (changes.hasOwnProperty(\"active\")) {\n if (changes.active) {\n activationCallback = this.props.onActivate;\n } else {\n activationCallback = this.props.onDeactivate;\n }\n }\n\n if (this.props.overrideState) {\n onUpdate && onUpdate(changes);\n activationCallback && activationCallback();\n cb && cb.call(this);\n return;\n }\n\n this.setState(function () {\n return changes;\n }, function () {\n cb && cb.call(_this3);\n activationCallback && activationCallback();\n onUpdate && onUpdate(_this3.getStateClone());\n });\n }\n }, {\n key: \"getState\",\n value: function getState() {\n if (this.props.overrideState) {\n return this.props.overrideState;\n } else {\n return this.state;\n }\n }\n }, {\n key: \"getStateClone\",\n value: function getStateClone() {\n var state = this.getState();\n var clonedState = {};\n\n for (var key in state) {\n if (_typeof(state[key]) === \"object\") {\n clonedState[key] = _objectSpread({}, state[key]);\n } else {\n clonedState[key] = state[key];\n }\n }\n\n return clonedState;\n }\n }, {\n key: \"refreshPosition\",\n value: function refreshPosition() {\n var _this$props = this.props,\n trackItemPosition = _this$props.trackItemPosition,\n centerItemOnLoad = _this$props.centerItemOnLoad;\n this.setPosition({\n x: 0,\n y: 0\n }, trackItemPosition, false, centerItemOnLoad);\n }\n }, {\n key: \"setInputInteractionMethods\",\n value: function setInputInteractionMethods() {\n this.setMouseInteractionMethods();\n this.setTouchInteractionMethods();\n }\n }, {\n key: \"setMouseInteractionMethods\",\n value: function setMouseInteractionMethods() {\n var mouseInteractionMethods = _mouseActivation[\"default\"][this.props.mouseActivationMethod];\n this.mouseHandlers = [];\n\n for (var key in mouseInteractionMethods) {\n this.mouseHandlers.push({\n event: key.toLowerCase(),\n handler: mouseInteractionMethods[key].bind(this)\n });\n }\n }\n }, {\n key: \"setTouchInteractionMethods\",\n value: function setTouchInteractionMethods() {\n var touchInteractionMethods = _touchActivation[\"default\"][this.props.touchActivationMethod];\n this.touchHandlers = [];\n\n for (var key in touchInteractionMethods) {\n this.touchHandlers.push({\n event: key.toLowerCase(),\n handler: touchInteractionMethods[key].bind(this)\n });\n }\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(position, updateItemPosition, activate, centerItem) {\n if (this.props.minUpdateSpeedInMs && !this.refresh) return;\n this.refresh = false;\n\n var _this$containerRef$cu = this.containerRef.current.getBoundingClientRect(),\n left = _this$containerRef$cu.left,\n top = _this$containerRef$cu.top,\n width = _this$containerRef$cu.width,\n height = _this$containerRef$cu.height;\n\n var _this$props2 = this.props,\n trackItemPosition = _this$props2.trackItemPosition,\n trackPassivePosition = _this$props2.trackPassivePosition,\n trackPreviousPosition = _this$props2.trackPreviousPosition,\n centerItemOnActivate = _this$props2.centerItemOnActivate,\n centerItemOnActivatePos = _this$props2.centerItemOnActivatePos,\n linkItemToActive = _this$props2.linkItemToActive,\n itemMovementMultiplier = _this$props2.itemMovementMultiplier,\n alignItemOnActivePos = _this$props2.alignItemOnActivePos,\n itemPositionMinX = _this$props2.itemPositionMinX,\n itemPositionMaxX = _this$props2.itemPositionMaxX,\n itemPositionMinY = _this$props2.itemPositionMinY,\n itemPositionMaxY = _this$props2.itemPositionMaxY,\n itemPositionLimitBySize = _this$props2.itemPositionLimitBySize,\n itemPositionLimitInternal = _this$props2.itemPositionLimitInternal;\n\n var _this$getState = this.getState(),\n activePosition = _this$getState.activePosition,\n itemPosition = _this$getState.itemPosition; // Set container div info and active position\n\n\n var stateUpdate = {\n elementDimensions: {\n width: width,\n height: height\n },\n elementOffset: {\n left: left,\n top: top\n },\n activePosition: {\n x: Math.min(Math.max(0, position.x - left), width),\n y: Math.min(Math.max(0, position.y - top), height)\n }\n }; // Activate if necessary\n\n if (activate) stateUpdate.active = true; // Set item dimensions\n\n if (this.itemRef.current) {\n var itemSize = this.itemRef.current.getBoundingClientRect();\n stateUpdate.itemDimensions = {\n width: itemSize.width,\n height: itemSize.height\n };\n } // Set previous active position\n\n\n if (trackPreviousPosition || trackItemPosition) {\n stateUpdate.prevActivePosition = {\n x: activePosition.x,\n y: activePosition.y\n };\n } // Set passive position\n\n\n if (trackPassivePosition) {\n stateUpdate.passivePosition = {\n x: position.x - left,\n y: position.y - top\n };\n } // Create adjusted limits\n\n\n var limits = _utils[\"default\"].createAdjustedLimits(itemPositionMinX, itemPositionMaxX, itemPositionMinY, itemPositionMaxY, stateUpdate.elementDimensions, stateUpdate.itemDimensions, itemPositionLimitBySize, itemPositionLimitInternal); // Center item\n\n\n if (centerItem || activate && centerItemOnActivate) {\n var centerX = (limits.maxX + limits.minX) / 2;\n var centerY = (limits.maxY + limits.minY) / 2;\n stateUpdate.itemPosition = {\n x: centerX || 0,\n y: centerY || 0\n };\n return this.updateState(stateUpdate, this.startRefreshTimer);\n }\n\n var shouldLimitItem = true; // Set item position\n\n if (trackItemPosition && linkItemToActive) {\n stateUpdate.itemPosition = _objectSpread({}, stateUpdate.activePosition);\n } else if (trackItemPosition && alignItemOnActivePos) {\n stateUpdate.itemPosition = _utils[\"default\"].alignItemOnPosition(stateUpdate.elementDimensions, stateUpdate.itemDimensions, stateUpdate.activePosition);\n } else if (trackItemPosition && activate && centerItemOnActivatePos) {\n stateUpdate.itemPosition = _utils[\"default\"].centerItemOnPosition(stateUpdate.elementDimensions, stateUpdate.itemDimensions, stateUpdate.activePosition);\n } else if (trackItemPosition && updateItemPosition) {\n stateUpdate.itemPosition = _utils[\"default\"].calculateItemPosition(itemPosition, stateUpdate.prevActivePosition, stateUpdate.activePosition, itemMovementMultiplier);\n } else {\n shouldLimitItem = false;\n } // Apply position limits\n\n\n if (shouldLimitItem) {\n stateUpdate.itemPosition = _utils[\"default\"].limitPosition(limits.minX, limits.maxX, limits.minY, limits.maxY, stateUpdate.itemPosition);\n }\n\n this.updateState(stateUpdate, this.startRefreshTimer);\n }\n }, {\n key: \"setPassivePosition\",\n value: function setPassivePosition(position) {\n if (!this.props.trackPassivePosition) return;\n\n var _this$containerRef$cu2 = this.containerRef.current.getBoundingClientRect(),\n left = _this$containerRef$cu2.left,\n top = _this$containerRef$cu2.top;\n\n this.updateState({\n passivePosition: {\n x: position.x - left,\n y: position.y - top\n }\n });\n }\n }, {\n key: \"toggleActive\",\n value: function toggleActive() {\n var position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n x: 0,\n y: 0\n };\n\n if (!this.getState().active) {\n this.activate(position);\n } else {\n this.deactivate();\n }\n }\n }, {\n key: \"activate\",\n value: function activate() {\n var position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n x: 0,\n y: 0\n };\n this.setPosition(position, false, true);\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n this.updateState({\n active: false\n });\n }\n }, {\n key: \"startRefreshTimer\",\n value: function startRefreshTimer() {\n var _this4 = this;\n\n if (!this.props.minUpdateSpeedInMs) return;\n setTimeout(function () {\n _this4.refresh = true;\n }, this.props.minUpdateSpeedInMs);\n }\n }, {\n key: \"startTapTimer\",\n value: function startTapTimer() {\n var _this5 = this;\n\n this.tapTimer = setTimeout(function () {\n _this5.tapTimedOut = true;\n }, this.props.tapDurationInMs);\n }\n }, {\n key: \"startDoubleTapTimer\",\n value: function startDoubleTapTimer() {\n var _this6 = this;\n\n this.doubleTapTimer = setTimeout(function () {\n _this6.doubleTapTimedOut = true;\n }, this.props.doubleTapDurationInMs);\n }\n }, {\n key: \"startLongTouchTimer\",\n value: function startLongTouchTimer(e) {\n var _this7 = this;\n\n this.longTouchTimer = setTimeout(function () {\n if (_this7.touched) {\n _this7.toggleActive(e);\n }\n }, this.props.longTouchDurationInMs);\n }\n }, {\n key: \"addMouseEventListeners\",\n value: function addMouseEventListeners() {\n var _this8 = this;\n\n this.mouseHandlers.forEach(function (mouse) {\n _this8.containerRef.current.addEventListener(mouse.event, mouse.handler);\n });\n }\n }, {\n key: \"addTouchEventListeners\",\n value: function addTouchEventListeners() {\n var _this9 = this;\n\n this.touchHandlers.forEach(function (touch) {\n _this9.containerRef.current.addEventListener(touch.event, touch.handler, _this9.supportsPassive ? {\n passive: false\n } : false);\n });\n }\n }, {\n key: \"removeMouseEventListeners\",\n value: function removeMouseEventListeners() {\n var _this10 = this;\n\n this.mouseHandlers.forEach(function (mouse) {\n _this10.containerRef.current.removeEventListener(mouse.event, mouse.handler);\n });\n }\n }, {\n key: \"removeTouchEventListeners\",\n value: function removeTouchEventListeners() {\n var _this11 = this;\n\n this.touchHandlers.forEach(function (touch) {\n _this11.containerRef.current.removeEventListener(touch.event, touch.handler, _this11.supportsPassive ? {\n passive: false\n } : false);\n });\n }\n }, {\n key: \"addOtherEventListeners\",\n value: function addOtherEventListeners() {\n window.addEventListener(\"resize\", this.handleResize);\n window.addEventListener(\"load\", this.onLoadRefresh);\n }\n }, {\n key: \"removeOtherEventListeners\",\n value: function removeOtherEventListeners() {\n window.removeEventListener(\"resize\", this.handleResize);\n window.removeEventListener(\"load\", this.onLoadRefresh);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n style = _this$props3.style,\n className = _this$props3.className,\n children = _this$props3.children,\n cursorStyle = _this$props3.cursorStyle,\n cursorStyleActive = _this$props3.cursorStyleActive;\n\n var _this$getState2 = this.getState(),\n active = _this$getState2.active;\n\n var combinedStyle = _objectSpread(_objectSpread({}, style), {}, {\n WebkitUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n userSelect: \"none\",\n cursor: active ? cursorStyleActive || cursorStyle : cursorStyle\n });\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: combinedStyle,\n className: className,\n ref: this.containerRef\n }, _utils[\"default\"].decorateChildren(children, _objectSpread(_objectSpread({}, this.getState()), {}, {\n itemRef: this.itemRef,\n onLoadRefresh: this.onLoadRefresh\n })));\n }\n }]);\n\n return ReactInputPosition;\n}(_react.Component);\n\n_defineProperty(ReactInputPosition, \"propTypes\", {\n mouseActivationMethod: _propTypes[\"default\"].oneOf([_constants.MOUSE_ACTIVATION.CLICK, _constants.MOUSE_ACTIVATION.DOUBLE_CLICK, _constants.MOUSE_ACTIVATION.HOVER, _constants.MOUSE_ACTIVATION.MOUSE_DOWN]).isRequired,\n touchActivationMethod: _propTypes[\"default\"].oneOf([_constants.TOUCH_ACTIVATION.DOUBLE_TAP, _constants.TOUCH_ACTIVATION.LONG_TOUCH, _constants.TOUCH_ACTIVATION.TAP, _constants.TOUCH_ACTIVATION.TOUCH]).isRequired,\n tapDurationInMs: _propTypes[\"default\"].number,\n doubleTapDurationInMs: _propTypes[\"default\"].number,\n longTouchDurationInMs: _propTypes[\"default\"].number,\n longTouchMoveLimit: _propTypes[\"default\"].number,\n clickMoveLimit: _propTypes[\"default\"].number,\n itemPositionMinX: _propTypes[\"default\"].number,\n itemPositionMaxX: _propTypes[\"default\"].number,\n itemPositionMinY: _propTypes[\"default\"].number,\n itemPositionMaxY: _propTypes[\"default\"].number,\n itemPositionLimitBySize: _propTypes[\"default\"].bool,\n itemPositionLimitInternal: _propTypes[\"default\"].bool,\n linkItemToActive: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n minUpdateSpeedInMs: _propTypes[\"default\"].number,\n trackPassivePosition: _propTypes[\"default\"].bool,\n trackItemPosition: _propTypes[\"default\"].bool,\n trackPreviousPosition: _propTypes[\"default\"].bool,\n centerItemOnActivate: _propTypes[\"default\"].bool,\n centerItemOnActivatePos: _propTypes[\"default\"].bool,\n centerItemOnLoad: _propTypes[\"default\"].bool,\n alignItemOnActivePos: _propTypes[\"default\"].bool,\n itemMovementMultiplier: _propTypes[\"default\"].number,\n cursorStyle: _propTypes[\"default\"].string,\n cursorStyleActive: _propTypes[\"default\"].string,\n onUpdate: _propTypes[\"default\"].func,\n overrideState: _propTypes[\"default\"].object,\n mouseDownAllowOutside: _propTypes[\"default\"].bool,\n onActivate: _propTypes[\"default\"].func,\n onDeactivate: _propTypes[\"default\"].func\n});\n\n_defineProperty(ReactInputPosition, \"defaultProps\", {\n tapDurationInMs: 180,\n doubleTapDurationInMs: 400,\n longTouchDurationInMs: 500,\n longTouchMoveLimit: 5,\n clickMoveLimit: 5,\n style: {},\n minUpdateSpeedInMs: 1,\n itemMovementMultiplier: 1,\n cursorStyle: \"crosshair\",\n mouseActivationMethod: _constants.MOUSE_ACTIVATION.CLICK,\n touchActivationMethod: _constants.TOUCH_ACTIVATION.TAP,\n mouseDownAllowOutside: false\n});\n\nvar _default = ReactInputPosition;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction getLargeImageStyle(positionX, positionY, active) {\n return {\n position: \"absolute\",\n boxSizing: \"border-box\",\n display: \"block\",\n top: 0,\n left: 0,\n transform: \"translate(\".concat(positionX, \"px, \").concat(positionY, \"px)\"),\n zIndex: \"1\",\n visibility: !active ? \"hidden\" : \"visible\",\n width: \"auto\"\n };\n}\n\nfunction getZoomContainerStyle(width, height, inPlace, switchSides) {\n var style = {\n position: \"absolute\",\n boxSizing: \"border-box\",\n pointerEvents: \"none\",\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n top: \"0\",\n overflow: \"hidden\"\n };\n\n if (inPlace) {\n style.left = \"0px\";\n } else if (switchSides) {\n style.right = \"\".concat(width, \"px\");\n } else {\n style.left = \"\".concat(width, \"px\");\n }\n\n return style;\n}\n\nfunction getOverlayCenterStyle(width, height, left, top, opacity, transitionSpeed, color, backgroundImage, backgroundImageSize) {\n var backgroundStyle = {};\n\n if (backgroundImage) {\n backgroundStyle.backgroundImage = \"url(\\\"\".concat(backgroundImage, \"\\\")\");\n }\n\n if (backgroundImageSize) {\n backgroundStyle.backgroundSize = backgroundImageSize;\n }\n\n return _objectSpread({\n position: \"absolute\",\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n left: 0,\n top: 0,\n boxSizing: \"border-box\",\n transform: \"translate(\".concat(left, \"px, \").concat(top, \"px)\"),\n border: \"1px solid \".concat(color),\n opacity: opacity,\n transition: \"opacity \".concat(transitionSpeed, \"s ease\"),\n zIndex: \"15\",\n pointerEvents: \"none\"\n }, backgroundStyle);\n}\n\nfunction getOverlayTopStyle(width, height, opacity, transitionSpeed, backgroundColor) {\n return {\n backgroundColor: backgroundColor,\n position: \"absolute\",\n boxSizing: \"border-box\",\n top: 0,\n left: 0,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n zIndex: \"10\",\n transition: \"opacity \".concat(transitionSpeed, \"s ease\"),\n opacity: opacity,\n transform: \"scale3d(1,1,1)\",\n pointerEvents: \"none\"\n };\n}\n\nfunction getOverlayLeftStyle(width, height, top, opacity, transitionSpeed, backgroundColor) {\n return {\n backgroundColor: backgroundColor,\n position: \"absolute\",\n boxSizing: \"border-box\",\n width: \"\".concat(width, \"px\"),\n top: \"\".concat(top, \"px\"),\n left: 0,\n height: \"\".concat(height, \"px\"),\n zIndex: \"10\",\n transition: \"opacity \".concat(transitionSpeed, \"s ease\"),\n opacity: opacity,\n transform: \"scale3d(1,1,1)\",\n pointerEvents: \"none\"\n };\n}\n\nfunction getOverlayRightStyle(width, height, top, opacity, transitionSpeed, backgroundColor) {\n return {\n backgroundColor: backgroundColor,\n position: \"absolute\",\n boxSizing: \"border-box\",\n top: \"\".concat(top, \"px\"),\n right: 0,\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n zIndex: \"10\",\n transition: \"opacity \".concat(transitionSpeed, \"s ease\"),\n opacity: opacity,\n transform: \"scale3d(1,1,1)\",\n pointerEvents: \"none\"\n };\n}\n\nfunction getOverlayBottomStyle(width, height, top, opacity, transitionSpeed, backgroundColor) {\n return {\n backgroundColor: backgroundColor,\n position: \"absolute\",\n boxSizing: \"border-box\",\n top: \"\".concat(top, \"px\"),\n width: \"\".concat(width, \"px\"),\n height: \"\".concat(height, \"px\"),\n zIndex: \"10\",\n transition: \"opacity \".concat(transitionSpeed, \"s ease\"),\n opacity: opacity,\n transform: \"scale3d(1,1,1)\",\n pointerEvents: \"none\"\n };\n}\n\nfunction getMagnifierZoomStyle(active, transitionSpeed) {\n return {\n position: \"relative\",\n opacity: active ? 1 : 0,\n transition: \"opacity \".concat(transitionSpeed, \"s ease\")\n };\n}\n\nvar _default = {\n getLargeImageStyle: getLargeImageStyle,\n getZoomContainerStyle: getZoomContainerStyle,\n getOverlayCenterStyle: getOverlayCenterStyle,\n getOverlayTopStyle: getOverlayTopStyle,\n getOverlayLeftStyle: getOverlayLeftStyle,\n getOverlayRightStyle: getOverlayRightStyle,\n getOverlayBottomStyle: getOverlayBottomStyle,\n getMagnifierZoomStyle: getMagnifierZoomStyle\n};\nexports[\"default\"] = _default;","import { number, oneOf, shape, string } from \"prop-types\";\n\nconst ImageShape = shape({\n id: number,\n role: oneOf([\"product_image\", \"primary\", \"thumb\"]),\n position: number,\n created_at: string,\n updated_at: string,\n url: string\n});\nexport default ImageShape;\n","import { arrayOf, bool, number, shape, string } from \"prop-types\";\nimport ImageShape from \"shared/shapes/image.shape\";\n\nexport const ProductShape = shape({\n id: number,\n name: string,\n description: string,\n technical_description: string,\n sku: string,\n series: string,\n supplier: string,\n supplier_id: string,\n // product_tags: arrayOf(),\n deletable: bool,\n custom_product_code: string,\n trades: arrayOf(string),\n created_at: string,\n updated_at: string,\n product_manager_url: string,\n thumb_url: string,\n images: arrayOf(ImageShape),\n // specifications: arrayOf\n supplier_url: string,\n vr_model_url: string,\n product_files: arrayOf(\n shape({\n id: number,\n file_file_name: string,\n visibility: string,\n internal_url: string\n })\n )\n});\n\nexport default ProductShape;\n","import es6Promise from \"es6-promise\";\nimport fetch from \"isomorphic-fetch\";\nimport { UPDATE_IS_LOADING, UPDATE_MESSAGE } from \"../constants/appConstants\";\nimport localStorage from \"../helpers/localStorage\";\n// import APM from \"../middlewares/apm\";\nimport { browserHistory } from \"../routes/browserHistory\";\n// es lint:\n/* global Promise */\n\n// isomorphic fetch\nes6Promise.polyfill();\n\nconst versionString = \"\";\n\nconst handleUnauthorizedRequest = (dispatch, silent) => {\n const { pathname } = browserHistory.getCurrentLocation();\n const { search } = browserHistory.getCurrentLocation();\n\n if (!pathname.match(\"users/\")) {\n localStorage.set(\"landingPage\", `/${pathname}`.replace(\"//\", \"/\") + search);\n browserHistory.push(\"/users/login\");\n }\n\n if (!silent) {\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n title: \"message.errorUnauthorized.title\",\n body: \"message.errorUnauthorized.body\"\n }\n });\n }\n\n console.info(\"Unauthorized Request - Redirecting to Login\");\n};\n\nfunction failureMessage(method) {\n switch (method) {\n case \"GET\":\n return {\n type: \"error\",\n title: \"message.errorLoad.title\",\n body: \"message.errorLoad.body\"\n };\n case \"POST\":\n case \"PATCH\":\n case \"PUT\":\n return {\n type: \"error\",\n title: \"message.errorSave.title\",\n body: \"message.errorSave.body\"\n };\n case \"DELETE\":\n return {\n type: \"error\",\n title: \"message.errorDelete.title\",\n body: \"message.errorDelete.body\"\n };\n }\n}\n\nfunction requestObject(method, payload) {\n const hasBody = method === \"POST\" || method === \"PUT\" || method === \"PATCH\";\n const authorization = `Bearer ${localStorage.get(\"token\")}`;\n\n if (hasBody) {\n if (payload instanceof FormData) {\n return {\n method,\n headers: {\n Authorization: authorization\n },\n timeout: 5000,\n body: payload\n };\n }\n return {\n method,\n headers: {\n Authorization: authorization,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\"\n },\n timeout: 5000,\n body: JSON.stringify(payload)\n };\n }\n return {\n method,\n headers: {\n Authorization: authorization,\n Accept: \"application/json\"\n },\n timeout: 5000\n };\n}\n\nexport class SilentApiRequestError extends Error {\n constructor() {\n super();\n this.name = \"SilentApiRequestError\";\n }\n}\n\nconst apiRequest = {\n fetch: (method, url, dispatch, payload, silent) => {\n return new Promise((resolve, reject) => {\n // const apmTransaction = APM.startTransaction(\"apiRequest\", \"fetch\");\n // const apmSpan = apmTransaction?.startSpan(`${url}`, method);\n\n dispatch({\n type: UPDATE_IS_LOADING,\n payload: { [url]: true }\n });\n\n return fetch(versionString + url, requestObject(method, payload))\n .catch(error => {\n console.error(`API ${method} ${url} request failed: ${error}`);\n reject(new SilentApiRequestError());\n return Promise.reject(error);\n })\n .then(response => {\n dispatch({\n type: UPDATE_IS_LOADING,\n payload: { [url]: null }\n });\n\n const contentType = response.headers.get(\"content-type\");\n if (contentType && contentType.includes(\"application/json\")) {\n return response\n .json()\n .then(data => ({ response, data }))\n .catch(error => {\n // If json parsing fails, we log the error, but continue\n console.error(\n `Failed parsing response of ${method} ${url}: ${error}`\n );\n return { response };\n });\n }\n return { response };\n })\n .then(({ response, data }) => {\n const { status } = response;\n if (response.ok) {\n // apmSpan?.end();\n // apmTransaction?.end();\n resolve({ status, data });\n } else {\n dispatch({\n type: UPDATE_IS_LOADING,\n payload: { [url]: null }\n });\n\n if (status === 401) {\n handleUnauthorizedRequest(dispatch, silent);\n } else {\n console.error(\n `API ${method} request failed`,\n { status, data },\n url,\n payload\n );\n if (!silent) {\n const messagePayload = failureMessage(method);\n dispatch({ type: UPDATE_MESSAGE, payload: messagePayload });\n }\n }\n // apmSpan?.end();\n // apmTransaction?.end();\n reject({ status, data });\n }\n });\n });\n },\n get: (url, dispatch, payload, silent) =>\n apiRequest.fetch(\"GET\", url, dispatch, payload, silent),\n post: (url, dispatch, payload, silent) =>\n apiRequest.fetch(\"POST\", url, dispatch, payload, silent),\n put: (url, dispatch, payload, silent) =>\n apiRequest.fetch(\"PUT\", url, dispatch, payload, silent),\n patch: (url, dispatch, payload, silent) =>\n apiRequest.fetch(\"PUT\", url, dispatch, payload, silent), // TODO: WTF!! Why do we use put for patch?!?\n delete: (url, dispatch, silent) =>\n apiRequest.fetch(\"DELETE\", url, dispatch, null, silent)\n};\n\nexport default apiRequest;\n","import { shape, number, string } from \"prop-types\";\n\nexport const UserShape = shape({\n id: number,\n salutation: string,\n title: string,\n first_name: string,\n last_name: string,\n email: string\n});\n\nexport default UserShape;\n","import { oneOf } from \"prop-types\";\n\nexport default oneOf([\n \"length\",\n \"pieces\",\n \"area\",\n \"flat\",\n \"hour\",\n \"individual\"\n]);\n","export const getTagNames = (tags, taxonomies) => {\n const allTags = taxonomies.reduce((accu, taxonomy) => {\n return accu.concat(\n taxonomy.tags.map(tag => {\n return {\n name: tag.name,\n composite_id: tag.composite_id\n };\n })\n );\n }, []);\n\n return allTags\n .filter(tag => {\n return tags.includes(tag.composite_id);\n })\n .map(tag => {\n return tag.name;\n });\n};\n","import { createSelector } from \"reselect\";\nimport { get } from \"lodash\";\n\nexport const getI18N = state => state.i18n;\nexport const getAccountData = state => state.account;\nexport const getFilter = state => state.filter;\nexport const getPageContent = state => get(state, \"pageContent\", {});\nexport const getNotifications = state =>\n get(state, \"notifications\", { notifications: 0, messages: 0 });\nexport const getState = state => state;\nexport const getProps = (_, props) => props;\nexport const getRouterParams = createSelector(\n [getProps],\n props => props.params\n);\nexport const getPageName = (_, props) => get(props, \"router.routes[1].name\");\n\nexport const getUser = createSelector([getAccountData], accountData =>\n get(accountData, \"user\")\n);\n\nexport const getUserRole = createSelector([getUser], user => {\n return get(user, \"group\", \"buyer\");\n});\n","import { bool, number, oneOfType, shape, string } from \"prop-types\";\n\nexport const BuyerShape = shape({\n id: oneOfType([string, number]).isRequired,\n first_name: string.isRequired,\n last_name: string.isRequired,\n email: string.isRequired,\n invited_at: string,\n login_count: number,\n portal_active: bool.isRequired,\n portal_registered: bool,\n bp_created_at: string,\n bp_reminded_at: string\n});\n\nexport default BuyerShape;\n","import { func, instanceOf, shape } from \"prop-types\";\nimport { ProductResource } from \"../../builder_portal/actions/productActions\";\nimport ProductGroupResource, {\n ProductPriceResource\n} from \"../../builder_portal/actions/productGroupActions\";\nimport ProductTypeResource from \"../../builder_portal/actions/productTypeActions\";\n\nexport const ProductGroupResourcesShape = shape({\n products: instanceOf(ProductResource),\n prices: instanceOf(ProductPriceResource),\n pricesFactory: func, // returns instanceOf(ProductPriceResource)\n groups: instanceOf(ProductGroupResource),\n productTypes: instanceOf(ProductTypeResource)\n});\n\nexport default ProductGroupResourcesShape;\n","import { number, shape, string } from \"prop-types\";\n\nconst CostAttributeShape = shape({\n id: number,\n cost: number,\n excess_cost: number,\n trade: string\n});\nexport default CostAttributeShape;\n","import { arrayOf, bool, number, shape, string } from \"prop-types\";\nimport ProductPriceShape from \"shared/shapes/productPrice.shape\";\nimport { ProductLineShape } from \"./productLine.shape\";\n\nconst ProductOptionShape = shape({\n id: number,\n product_id: number,\n product_group_id: number,\n position: number,\n portal_offer: bool,\n on_request: bool,\n product_tags: arrayOf(string),\n created_at: string,\n updated_at: string,\n is_default: bool,\n product_prices: arrayOf(ProductPriceShape),\n productLines: arrayOf(ProductLineShape),\n external_id: string\n});\nexport default ProductOptionShape;\n","import {\n arrayOf,\n bool,\n number,\n objectOf,\n oneOf,\n oneOfType,\n shape,\n string\n} from \"prop-types\";\n\nexport const ProductLineTagDescriptionShape = shape({\n id: string, // one of `tags` value\n displayName: string,\n description: string,\n images: arrayOf(string) // urls for image\n});\nexport const ProductLineShape = shape({\n id: oneOfType([number, string]),\n composite_id: string,\n name: string,\n name_plural: string,\n mode: oneOf([\"recommend\", \"silent\", \"warn\", \"required\"]),\n exclusive: bool,\n scope: oneOf([\"roombook\", \"section\", \"sub_section\"]),\n warning: string,\n tags: arrayOf(string), // syntax: \"id:displayedName\" i.E. \"equipment_line:trend\"\n tagDescriptions: objectOf(ProductLineTagDescriptionShape)\n});\n\nexport default ProductLineShape;\n","import { bool, number, shape, string } from \"prop-types\";\n\nexport const SectionShape = shape({\n id: number,\n parentId: number,\n title: string,\n image: string,\n imageClass: string,\n total: number,\n isVisible: bool,\n hasChildren: bool,\n isRoot: bool,\n isDecided: bool,\n isValid: bool,\n isConfigurable: bool,\n isPriceOnRequest: bool,\n configuratorId: string,\n selector: string,\n position: number\n});\n\nexport default SectionShape;\n","import { get } from \"lodash\";\nimport { getProjectsConfig } from \"./account\";\n\nconst CURRENCY_MAPPING = {\n USD: \"$\",\n EUR: \"€\",\n CHF: \"CHF\"\n};\n\nexport const getProjectCurrency = (state, projectId) => {\n const code = get(\n getProjectsConfig(state),\n [projectId, \"currency_code\"],\n \"EUR\"\n );\n const sign = CURRENCY_MAPPING[code];\n return { code, sign };\n};\n","import { connect } from \"react-redux\";\n\nconst mapStateToProps = state => {\n return {\n i18n: state.i18n\n };\n};\n\nexport const withI18n = Component => {\n return connect(mapStateToProps)(Component);\n};\n","import React, { useEffect, useState } from \"react\";\nimport { func, number, shape } from \"prop-types\";\nimport { Progress } from \"semantic-ui-react\";\nimport \"./timeoutProgressBar.scss\";\n\nconst useAnimationFrame = callback => {\n // Use useRef for mutable variables that we want to persist\n // without triggering a re-render on their change\n const requestRef = React.useRef();\n const previousTimeRef = React.useRef();\n\n const animationStep = time => {\n if (previousTimeRef.current !== undefined) {\n const deltaTime = time - previousTimeRef.current;\n callback(deltaTime);\n }\n\n previousTimeRef.current = time;\n requestRef.current = requestAnimationFrame(animationStep);\n };\n\n React.useEffect(() => {\n // componentDidMount\n requestRef.current = requestAnimationFrame(animationStep);\n\n // componentWillUnmount\n return () => cancelAnimationFrame(requestRef.current);\n }, []);\n\n return () => {\n cancelAnimationFrame(requestRef.current);\n };\n};\n\nfunction TimeoutProgressBar({ progressBarProps, timeout, onTimeoutComplete }) {\n const [progress, setProgress] = useState(timeout);\n const cancelAnimation = useAnimationFrame(deltaTime => {\n // Pass on a function to the setter of the state\n // to make sure we always have the latest state\n setProgress(prevProgress => prevProgress - deltaTime);\n });\n\n useEffect(() => {\n if (progress <= 0) {\n cancelAnimation();\n onTimeoutComplete();\n }\n }, [progress]);\n\n // spreading is totally valid for a HOC\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n}\n\nTimeoutProgressBar.defaultProps = {\n timeout: 5000, // keep between 4 and 8 seconds\n progressBarProps: {}\n};\n\nTimeoutProgressBar.propTypes = {\n timeout: number,\n onTimeoutComplete: func.isRequired,\n progressBarProps: shape(Progress.propTypes)\n};\n\nexport default TimeoutProgressBar;\n","import { object, number, instanceOf, oneOf, string } from \"prop-types\";\nimport React, { PureComponent } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Icon, Message } from \"semantic-ui-react\";\nimport { connect } from \"react-redux\";\nimport { scrollToTop } from \"../../helpers/scrollToTop\";\nimport TimeoutProgressBar from \"../elements/timeoutProgressBar\";\nimport Growl from \"../../../builder_portal/actions/growlActions\";\nimport \"./growlMessage.scss\";\n\nclass GrowlMessage extends PureComponent {\n componentDidMount() {\n scrollToTop();\n }\n\n dismiss = () => {\n const { growl } = this.props;\n growl.dismiss();\n };\n\n render() {\n const {\n type,\n title,\n body,\n icon,\n timeout,\n titleValues,\n bodyValues\n } = this.props;\n\n const progressBarColorMap = {\n success: \"green\",\n warning: \"yellow\",\n error: \"red\"\n };\n\n if (!title && !body) return null;\n return (\n <>\n \n \n \n \n \n \n \n {timeout && (\n \n )}\n \n \n \n );\n }\n}\n\nGrowlMessage.propTypes = {\n type: oneOf([\"error\", \"success\", \"warning\"]),\n title: string,\n // will be passed to FormattedMessage for dynamic translation values\n // eslint-disable-next-line react/forbid-prop-types\n titleValues: object,\n body: string,\n // will be passed to FormattedMessage for dynamic translation values\n // eslint-disable-next-line react/forbid-prop-types\n bodyValues: object,\n icon: oneOf([\"exclamation circle\", \"check\", \"warning\"]),\n timeout: number,\n growl: instanceOf(Growl).isRequired\n};\n\nGrowlMessage.defaultProps = {\n type: \"error\",\n title: \"\",\n titleValues: {},\n body: \"\",\n bodyValues: {},\n icon: \"exclamation circle\",\n timeout: 6000\n};\n\nconst mapStateToProps = state => ({\n ...state.message\n});\n\nconst mapDispatchToProps = dispatch => ({\n growl: new Growl(dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GrowlMessage);\n","import { UPDATE_DIALOG } from \"../constants/appConstants\";\n\nexport default (dispatch, id, module) => {\n return (dialogName, isVisible) => {\n if (typeof dialogName !== \"object\") {\n if (id) {\n const dialog = {\n [module]: {\n [id]: {\n [dialogName]: isVisible\n }\n }\n };\n\n dispatch({\n type: UPDATE_DIALOG,\n payload: dialog\n });\n }\n } else {\n // supports manual usage such as toggleDialog({ memo: { [122]: true }})\n if (id) {\n const dialog = {\n [module]: {\n [id]: dialogName\n }\n };\n\n dispatch({\n type: UPDATE_DIALOG,\n payload: dialog\n });\n }\n }\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\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\nvar Image = /*#__PURE__*/_react[\"default\"].forwardRef(function (props, ref) {\n var onImageLoad = props.onImageLoad,\n onLoadRefresh = props.onLoadRefresh,\n src = props.src,\n alt = props.alt,\n otherProps = _objectWithoutProperties(props, [\"onImageLoad\", \"onLoadRefresh\", \"src\", \"alt\"]);\n\n var _React$useState = _react[\"default\"].useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n imageIdx = _React$useState2[0],\n setImageIdx = _React$useState2[1];\n\n var imageErrorRef = _react[\"default\"].useRef(false);\n\n var imageArr = src.constructor === Array ? src : [src];\n return /*#__PURE__*/_react[\"default\"].createElement(\"img\", _extends({\n ref: ref,\n src: imageArr[imageIdx],\n alt: alt,\n onLoad: function onLoad(e) {\n onImageLoad(e);\n\n if (imageErrorRef.current) {\n onLoadRefresh();\n }\n },\n onError: function onError(e) {\n if (imageIdx < imageArr.length) {\n imageErrorRef.current = true;\n setImageIdx(function (idx) {\n return idx + 1;\n });\n }\n }\n }, otherProps));\n});\n\nImage.defaultProps = {\n onImageLoad: _utils[\"default\"].noop,\n onLoadRefresh: _utils[\"default\"].noop\n};\nvar _default = Image;\nexports[\"default\"] = _default;","import { createSelector } from \"reselect\";\nimport { keyBy, get } from \"lodash\";\nimport { getPageContent } from \"./base\";\n\nexport const getCatalogs = createSelector([getPageContent], pageContent => {\n return pageContent?.project_catalogs || [];\n});\n\nexport const getCatalogsForProject = createSelector(\n [getCatalogs, (_, props) => props.projectId],\n (catalogs, projectId) => {\n const priceCatalogMatcher = pc => pc.project_ids.includes(projectId);\n return catalogs\n .filter(catalog => {\n return catalog.price_catalogs.some(priceCatalogMatcher);\n })\n .map(catalog => {\n return {\n ...catalog,\n price_catalogs: catalog.price_catalogs.filter(priceCatalogMatcher)\n };\n });\n }\n);\n\nexport const makeGetCatalogById = () => {\n return createSelector(\n [getCatalogs, (_, props) => props.catalogId],\n (catalogs, catalogId) => {\n return catalogs.find(catalog => {\n return catalog.slug === catalogId;\n });\n }\n );\n};\n\nexport const makeGetCatalogNameById = () => {\n const getCatalogById = makeGetCatalogById();\n return createSelector([getCatalogById], catalog => {\n return catalog?.name;\n });\n};\n\nexport const getPriceCatalogs = createSelector([getCatalogs], catalogs => {\n return catalogs.flatMap(catalog => {\n return catalog.price_catalogs || [];\n });\n});\n\nexport const getPriceCatalogsById = createSelector(\n [getPriceCatalogs],\n priceCatalogs => {\n return keyBy(priceCatalogs, c => c.id);\n }\n);\n\nexport const getDesignLineGroups = createSelector(\n [getPageContent],\n pageContent => {\n return get(pageContent, \"design_line_groups\", []);\n }\n);\n\nexport const getAllDesignLines = createSelector(\n [getDesignLineGroups],\n designLineGroups => {\n const designLines = [];\n designLineGroups.forEach(dlg => designLines.push(...dlg.design_lines));\n return designLines;\n }\n);\n","import scrollToElement from \"scroll-to-element\";\n\nexport const scrollToTop = () => {\n setTimeout(() => {\n const element = window.document.querySelector(\"body\");\n scrollToElement(element, {\n offset: -10,\n ease: \"out-circ\",\n duration: 1000\n });\n }, 50);\n};\n","export const translations = {\n \"en\": {\n \"devise.confirmations.confirmed\": \"Your email address has been successfully confirmed.\",\n \"devise.confirmations.send_instructions\": \"You will receive an email with instructions for how to confirm your email address in a few minutes.\",\n \"devise.confirmations.send_paranoid_instructions\": \"If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes.\",\n \"devise.failure.already_authenticated\": \"You are already signed in.\",\n \"devise.failure.inactive\": \"Your account is not activated yet.\",\n \"devise.failure.invalid\": \"Invalid %{authentication_keys} or password.\",\n \"devise.failure.locked\": \"Your account is locked.\",\n \"devise.failure.last_attempt\": \"You have one more attempt before your account is locked.\",\n \"devise.failure.not_found_in_database\": \"Invalid %{authentication_keys} or password.\",\n \"devise.failure.timeout\": \"Your session expired. Please sign in again to continue.\",\n \"devise.failure.unauthenticated\": \"You need to sign in or sign up before continuing.\",\n \"devise.failure.unconfirmed\": \"You have to confirm your email address before continuing.\",\n \"devise.mailer.confirmation_instructions.subject\": \"Confirmation instructions\",\n \"devise.mailer.reset_password_instructions.subject\": \"Reset password instructions\",\n \"devise.mailer.unlock_instructions.subject\": \"Unlock instructions\",\n \"devise.mailer.password_change.subject\": \"Password Changed\",\n \"devise.omniauth_callbacks.failure\": \"Could not authenticate you from %{kind} because \\\"%{reason}\\\".\",\n \"devise.omniauth_callbacks.success\": \"Successfully authenticated from %{kind} account.\",\n \"devise.passwords.no_token\": \"You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.\",\n \"devise.passwords.send_instructions\": \"You will receive an email with instructions on how to reset your password in a few minutes.\",\n \"devise.passwords.send_paranoid_instructions\": \"If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes.\",\n \"devise.passwords.updated\": \"Your password has been changed successfully. You are now signed in.\",\n \"devise.passwords.updated_not_active\": \"Your password has been changed successfully.\",\n \"devise.registrations.destroyed\": \"Bye! Your account has been successfully cancelled. We hope to see you again soon.\",\n \"devise.registrations.signed_up\": \"Welcome! You have signed up successfully.\",\n \"devise.registrations.signed_up_but_inactive\": \"You have signed up successfully. However, we could not sign you in because your account is not yet activated.\",\n \"devise.registrations.signed_up_but_locked\": \"You have signed up successfully. However, we could not sign you in because your account is locked.\",\n \"devise.registrations.signed_up_but_unconfirmed\": \"A message with a confirmation link has been sent to your email address. Please follow the link to activate your account.\",\n \"devise.registrations.update_needs_confirmation\": \"You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address.\",\n \"devise.registrations.updated\": \"Your account has been updated successfully.\",\n \"devise.sessions.signed_in\": \"Signed in successfully.\",\n \"devise.sessions.signed_out\": \"Signed out successfully.\",\n \"devise.sessions.already_signed_out\": \"Signed out successfully.\",\n \"devise.unlocks.send_instructions\": \"You will receive an email with instructions for how to unlock your account in a few minutes.\",\n \"devise.unlocks.send_paranoid_instructions\": \"If your account exists, you will receive an email with instructions for how to unlock it in a few minutes.\",\n \"devise.unlocks.unlocked\": \"Your account has been unlocked successfully. Please sign in to continue.\",\n \"errors.messages.already_confirmed\": \"was already confirmed, please try signing in\",\n \"errors.messages.confirmation_period_expired\": \"needs to be confirmed within %{period}, please request a new one\",\n \"errors.messages.expired\": \"has expired, please request a new one\",\n \"errors.messages.not_found\": \"not found\",\n \"errors.messages.not_locked\": \"was not locked\",\n \"errors.messages.not_saved.one\": \"1 error prohibited this %{resource} from being saved:\",\n \"errors.messages.not_saved.other\": \"%{count} errors prohibited this %{resource} from being saved:\",\n \"hello\": \"Hello world\",\n \"title\": \"PLANO Project Management Software\",\n \"menu.main.home\": \"Home\",\n \"menu.main.projects\": \"Projects\",\n \"meta.form_of_address.greeting.default\": \"Dear\",\n \"meta.form_of_address.greeting.mr\": \"Dear\",\n \"meta.form_of_address.greeting.mrs\": \"Dear\",\n \"meta.form_of_address.salutation.label\": \"Salutation\",\n \"meta.form_of_address.salutation.nil\": \"No salutation\",\n \"meta.form_of_address.salutation.mr\": \"Mr\",\n \"meta.form_of_address.salutation.mrs\": \"Mrs\",\n \"meta.form_of_address.title.label\": \"Title\",\n \"meta.form_of_address.title.nil\": \"No title\",\n \"meta.form_of_address.title.dr\": \"Dr.\",\n \"meta.form_of_address.title.prof_dr\": \"Prof. Dr.\",\n \"meta.form_of_address.title.dipl_ing\": \"Dipl.-Ing.\",\n \"login.error.credentials\": \"Unknown username or password\",\n \"config_file_not_present\": \"File does not exist in the system: '% {file}'. Changes cannot be saved.\"\n },\n \"de\": {\n \"activerecord.errors.messages.record_invalid\": \"Datensatz ist ungültig\",\n \"activerecord.errors.messages.restrict_dependent_destroy.has_one\": \"Datensatz kann nicht gelöscht werden, da ein abhängiger %{record}-Datensatz existiert.\",\n \"activerecord.errors.messages.restrict_dependent_destroy.has_many\": \"Datensatz kann nicht gelöscht werden, da abhängige %{record} existieren.\",\n \"date.abbr_day_names\": [\n \"So\",\n \"Mo\",\n \"Di\",\n \"Mi\",\n \"Do\",\n \"Fr\",\n \"Sa\"\n ],\n \"date.abbr_month_names\": [\n null,\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\"\n ],\n \"date.day_names\": [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\"\n ],\n \"date.formats.default\": \"%d.%m.%Y\",\n \"date.formats.long\": \"%e. %B %Y\",\n \"date.formats.short\": \"%e. %b\",\n \"date.month_names\": [\n null,\n \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\"\n ],\n \"date.order\": [\n \"day\",\n \"month\",\n \"year\"\n ],\n \"datetime.distance_in_words.about_x_hours.one\": \"etwa eine Stunde\",\n \"datetime.distance_in_words.about_x_hours.other\": \"etwa %{count} Stunden\",\n \"datetime.distance_in_words.about_x_months.one\": \"etwa ein Monat\",\n \"datetime.distance_in_words.about_x_months.other\": \"etwa %{count} Monate\",\n \"datetime.distance_in_words.about_x_years.one\": \"etwa ein Jahr\",\n \"datetime.distance_in_words.about_x_years.other\": \"etwa %{count} Jahre\",\n \"datetime.distance_in_words.almost_x_years.one\": \"fast ein Jahr\",\n \"datetime.distance_in_words.almost_x_years.other\": \"fast %{count} Jahre\",\n \"datetime.distance_in_words.half_a_minute\": \"eine halbe Minute\",\n \"datetime.distance_in_words.less_than_x_minutes.one\": \"weniger als eine Minute\",\n \"datetime.distance_in_words.less_than_x_minutes.other\": \"weniger als %{count} Minuten\",\n \"datetime.distance_in_words.less_than_x_seconds.one\": \"weniger als eine Sekunde\",\n \"datetime.distance_in_words.less_than_x_seconds.other\": \"weniger als %{count} Sekunden\",\n \"datetime.distance_in_words.over_x_years.one\": \"mehr als ein Jahr\",\n \"datetime.distance_in_words.over_x_years.other\": \"mehr als %{count} Jahre\",\n \"datetime.distance_in_words.x_days.one\": \"ein Tag\",\n \"datetime.distance_in_words.x_days.other\": \"%{count} Tage\",\n \"datetime.distance_in_words.x_minutes.one\": \"eine Minute\",\n \"datetime.distance_in_words.x_minutes.other\": \"%{count} Minuten\",\n \"datetime.distance_in_words.x_months.one\": \"ein Monat\",\n \"datetime.distance_in_words.x_months.other\": \"%{count} Monate\",\n \"datetime.distance_in_words.x_years.one\": \"ein Jahr\",\n \"datetime.distance_in_words.x_years.other\": \"%{count} Jahr\",\n \"datetime.distance_in_words.x_seconds.one\": \"eine Sekunde\",\n \"datetime.distance_in_words.x_seconds.other\": \"%{count} Sekunden\",\n \"datetime.prompts.day\": \"Tag\",\n \"datetime.prompts.hour\": \"Stunden\",\n \"datetime.prompts.minute\": \"Minute\",\n \"datetime.prompts.month\": \"Monat\",\n \"datetime.prompts.second\": \"Sekunde\",\n \"datetime.prompts.year\": \"Jahr\",\n \"errors.format\": \"%{attribute} %{message}\",\n \"errors.messages.accepted\": \"muss akzeptiert werden\",\n \"errors.messages.blank\": \"muss ausgefüllt werden\",\n \"errors.messages.present\": \"darf nicht ausgefüllt werden\",\n \"errors.messages.confirmation\": \"stimmt nicht mit %{attribute} überein\",\n \"errors.messages.empty\": \"muss ausgefüllt werden\",\n \"errors.messages.equal_to\": \"muss genau %{count} sein\",\n \"errors.messages.even\": \"muss gerade sein\",\n \"errors.messages.exclusion\": \"ist nicht verfügbar\",\n \"errors.messages.greater_than\": \"muss größer als %{count} sein\",\n \"errors.messages.greater_than_or_equal_to\": \"muss größer oder gleich %{count} sein\",\n \"errors.messages.inclusion\": \"ist kein gültiger Wert\",\n \"errors.messages.invalid\": \"ist nicht gültig\",\n \"errors.messages.less_than\": \"muss kleiner als %{count} sein\",\n \"errors.messages.less_than_or_equal_to\": \"muss kleiner oder gleich %{count} sein\",\n \"errors.messages.model_invalid\": \"Gültigkeitsprüfung ist fehlgeschlagen: %{errors}\",\n \"errors.messages.not_a_number\": \"ist keine Zahl\",\n \"errors.messages.not_an_integer\": \"muss ganzzahlig sein\",\n \"errors.messages.odd\": \"muss ungerade sein\",\n \"errors.messages.required\": \"muss ausgefüllt werden\",\n \"errors.messages.taken\": \"ist bereits vergeben\",\n \"errors.messages.too_long.one\": \"ist zu lang (mehr als 1 Zeichen)\",\n \"errors.messages.too_long.other\": \"ist zu lang (mehr als %{count} Zeichen)\",\n \"errors.messages.too_short.one\": \"ist zu kurz (weniger als 1 Zeichen)\",\n \"errors.messages.too_short.other\": \"ist zu kurz (weniger als %{count} Zeichen)\",\n \"errors.messages.wrong_length.one\": \"hat die falsche Länge (muss genau 1 Zeichen haben)\",\n \"errors.messages.wrong_length.other\": \"hat die falsche Länge (muss genau %{count} Zeichen haben)\",\n \"errors.messages.other_than\": \"darf nicht gleich %{count} sein\",\n \"errors.template.body\": \"Bitte überprüfen Sie die folgenden Felder:\",\n \"errors.template.header.one\": \"Konnte %{model} nicht speichern: ein Fehler.\",\n \"errors.template.header.other\": \"Konnte %{model} nicht speichern: %{count} Fehler.\",\n \"helpers.select.prompt\": \"Bitte wählen\",\n \"helpers.submit.create\": \"%{model} erstellen\",\n \"helpers.submit.submit\": \"%{model} speichern\",\n \"helpers.submit.update\": \"%{model} aktualisieren\",\n \"number.currency.format.delimiter\": \".\",\n \"number.currency.format.format\": \"%n %u\",\n \"number.currency.format.precision\": 2,\n \"number.currency.format.separator\": \",\",\n \"number.currency.format.significant\": false,\n \"number.currency.format.strip_insignificant_zeros\": false,\n \"number.currency.format.unit\": \"€\",\n \"number.format.delimiter\": \".\",\n \"number.format.precision\": 2,\n \"number.format.separator\": \",\",\n \"number.format.significant\": false,\n \"number.format.strip_insignificant_zeros\": false,\n \"number.human.decimal_units.format\": \"%n %u\",\n \"number.human.decimal_units.units.billion.one\": \"Milliarde\",\n \"number.human.decimal_units.units.billion.other\": \"Milliarden\",\n \"number.human.decimal_units.units.million.one\": \"Million\",\n \"number.human.decimal_units.units.million.other\": \"Millionen\",\n \"number.human.decimal_units.units.quadrillion.one\": \"Billiarde\",\n \"number.human.decimal_units.units.quadrillion.other\": \"Billiarden\",\n \"number.human.decimal_units.units.thousand\": \"Tausend\",\n \"number.human.decimal_units.units.trillion.one\": \"Billion\",\n \"number.human.decimal_units.units.trillion.other\": \"Billionen\",\n \"number.human.decimal_units.units.unit\": \"\",\n \"number.human.format.delimiter\": \"\",\n \"number.human.format.precision\": 3,\n \"number.human.format.significant\": true,\n \"number.human.format.strip_insignificant_zeros\": true,\n \"number.human.storage_units.format\": \"%n %u\",\n \"number.human.storage_units.units.byte.one\": \"Byte\",\n \"number.human.storage_units.units.byte.other\": \"Bytes\",\n \"number.human.storage_units.units.gb\": \"GB\",\n \"number.human.storage_units.units.kb\": \"KB\",\n \"number.human.storage_units.units.mb\": \"MB\",\n \"number.human.storage_units.units.tb\": \"TB\",\n \"number.percentage.format.delimiter\": \"\",\n \"number.percentage.format.format\": \"%n %\",\n \"number.precision.format.delimiter\": \"\",\n \"support.array.last_word_connector\": \" und \",\n \"support.array.two_words_connector\": \" und \",\n \"support.array.words_connector\": \", \",\n \"time.am\": \"vormittags\",\n \"time.formats.default\": \"%A, %d. %B %Y, %H:%M Uhr\",\n \"time.formats.long\": \"%A, %d. %B %Y, %H:%M Uhr\",\n \"time.formats.short\": \"%d. %B, %H:%M Uhr\",\n \"time.pm\": \"nachmittags\",\n \"bau_digital\": \"Rubus Bau GmbH\",\n \"title\": \"SWM\",\n \"buyer_portal\": \"Online Konfigurator\",\n \"admin.schedule_account_jobs.index.title\": \"Schedule Jobs\",\n \"admin.schedule_account_jobs.index.display_name\": \"Job Name\",\n \"admin.product_manager_caches.index.title\": \"Produktmanager Caches\",\n \"admin.product_manager_caches.index.display_name\": \"Cache Name\",\n \"admin.product_manager_caches.index.cache_name\": \"%{cache_name} Cache\",\n \"admin.product_manager_caches.index.clear_button\": \"Cache leeren\",\n \"meta.form_of_address.greeting.label\": \"Begrüßung\",\n \"meta.form_of_address.greeting.default\": \"Sehr geehrte/r\",\n \"meta.form_of_address.greeting.defaultGeneric\": \"Sehr geehrte Damen und Herren\",\n \"meta.form_of_address.greeting.mr\": \"Sehr geehrter\",\n \"meta.form_of_address.greeting.mrs\": \"Sehr geehrte\",\n \"meta.form_of_address.greeting.mr+mrs\": \"Sehr geehrte\",\n \"meta.form_of_address.greeting.family\": \"Sehr geehrte\",\n \"meta.form_of_address.greeting.spouses\": \"Sehr geehrte\",\n \"meta.form_of_address.greeting.empty\": \"\",\n \"meta.form_of_address.greeting.other\": \"Sehr geehrt*\",\n \"meta.form_of_address.salutation.label\": \"Anrede\",\n \"meta.form_of_address.salutation.nil\": \"Keine Anrede\",\n \"meta.form_of_address.salutation.mr\": \"Herr\",\n \"meta.form_of_address.salutation.mrs\": \"Frau\",\n \"meta.form_of_address.salutation.mr+mrs\": \"Herr und Frau\",\n \"meta.form_of_address.salutation.family\": \"Familie\",\n \"meta.form_of_address.salutation.spouses\": \"Eheleute\",\n \"meta.form_of_address.salutation.empty\": \"\",\n \"meta.form_of_address.salutation.other\": \"Divers\",\n \"meta.form_of_address.title.label\": \"Titel\",\n \"meta.form_of_address.title.nil\": \"Kein Titel\",\n \"meta.form_of_address.title.dr\": \"Dr.\",\n \"meta.form_of_address.title.prof_dr\": \"Prof. Dr.\",\n \"meta.form_of_address.title.dipl_ing\": \"Dipl.-Ing.\",\n \"meta.form_of_address.title.empty\": \"\",\n \"meta.app.name\": \"SWM\",\n \"meta.title.attention\": \"Achtung\",\n \"meta.title.hint\": \"Hinweis\",\n \"meta.actions.activate\": \"Aktivieren\",\n \"meta.actions.deactivate\": \"Deaktivieren\",\n \"meta.actions.add\": \"Hinzufügen\",\n \"meta.actions.assign\": \"Zuordnen\",\n \"meta.actions.save\": \"Speichern\",\n \"meta.actions.complete\": \"Abschließen\",\n \"meta.actions.check\": \"Prüfen\",\n \"meta.actions.recheck\": \"Erneut prüfen\",\n \"meta.actions.copy\": \"Kopieren\",\n \"meta.actions.fork\": \"Ableiten\",\n \"meta.actions.remove\": \"Löschen\",\n \"meta.actions.remove_all\": \"Alle löschen\",\n \"meta.actions.reset\": \"Zurücksetzen\",\n \"meta.actions.restore\": \"Wiederherstellen\",\n \"meta.actions.purge\": \"Löschen\",\n \"meta.actions.delete_file\": \"Datei löschen\",\n \"meta.actions.archive\": \"Archivieren\",\n \"meta.actions.unlink\": \"Entfernen\",\n \"meta.actions.send\": \"Absenden\",\n \"meta.actions.cancel\": \"Abbrechen\",\n \"meta.actions.cancelOrder\": \"Storno\",\n \"meta.actions.download\": \"Herunterladen\",\n \"meta.actions.upload\": \"Hochladen\",\n \"meta.actions.preview\": \"Vorschau\",\n \"meta.actions.details\": \"Details\",\n \"meta.actions.download_now\": \"Jetzt Herunterladen\",\n \"meta.actions.ok\": \"OK\",\n \"meta.actions.true\": \"Ja\",\n \"meta.actions.yeah\": \"Ja\",\n \"meta.actions.false\": \"Nein\",\n \"meta.actions.nope\": \"Nein\",\n \"meta.actions.edit\": \"Bearbeiten\",\n \"meta.actions.next\": \"Weiter\",\n \"meta.actions.back\": \"Zurück\",\n \"meta.actions.done\": \"Fertig\",\n \"meta.actions.close\": \"Schließen\",\n \"meta.actions.accept\": \"Alles klar!\",\n \"meta.actions.clone\": \"Duplizieren\",\n \"meta.actions.apply\": \"Übernehmen\",\n \"meta.actions.applyAll\": \"{count, plural, one {Auswahl übernehmen} other {Alle übernehmen}}\",\n \"meta.actions.discard\": \"Verwerfen\",\n \"meta.actions.ignore\": \"Ignorieren\",\n \"meta.actions.start\": \"Beginnen\",\n \"meta.actions.select\": \"Auswählen\",\n \"meta.actions.select_all\": \"Alles auswählen\",\n \"meta.actions.selected\": \"Ausgewählt\",\n \"meta.actions.move\": \"Verschieben\",\n \"meta.actions.import\": \"Importieren\",\n \"meta.actions.replace\": \"Ersetzen\",\n \"meta.actions.showAll\": \"Alle Anzeigen\",\n \"meta.actions.showMore\": \"Mehr anzeigen\",\n \"meta.actions.showLess\": \"Weniger anzeigen\",\n \"meta.actions.correct\": \"Beheben\",\n \"meta.actions.confirmeCustomCostsPrices\": \"Die Preise und Kosten sollen abweichend vom Ausstattungskatalog überschrieben werden.\",\n \"meta.actions.proceed\": \"Fortfahren\",\n \"meta.actions.proceedAnyway\": \"Trotzdem fortfahren\",\n \"meta.actions.processing\": \"Ihre Anfrage wird verarbeitet\",\n \"meta.actions.sync\": \"Synchronisieren\",\n \"meta.actions.execute\": \"Ausführen\",\n \"meta.actions.omission\": \"Entfall\",\n \"meta.actions.clipboard\": \"URL in die Zwischenablage kopieren\",\n \"meta.actions.duplicate\": \"Duplizieren\",\n \"meta.actions.message.newMessage\": \"Neue Nachricht / Notiz\",\n \"meta.actions.message.newEmail\": \"Neue E-Mail\",\n \"meta.actions.message.replyEmail\": \"E-Mail beantworten\",\n \"meta.actions.message.newCall\": \"Neue Gesprächsnotiz\",\n \"meta.actions.message.newNote\": \"Neuer Kommentar\",\n \"meta.actions.message.reply\": \"Beantworten\",\n \"meta.actions.message.close_window\": \"Fenster schließen\",\n \"meta.actions.message.previousMessage\": \"Vorherige Nachricht\",\n \"meta.actions.dragAndDropUploadImage\": \"Bild-Datei hier her ziehen\",\n \"meta.actions.dragAndDropFile\": \"Hier klicken oder Datei hierher ziehen\",\n \"meta.confirmations.proceedAnyway\": \"Möchten Sie trotzdem fortfahren?\",\n \"meta.confirmations.changesNotSaved\": \"Die Änderungen wurden noch nicht übernommen!\",\n \"meta.confirmations.actionNotAllowed\": \"Aktion nicht erlaubt!\",\n \"meta.states.sent\": \"Nachricht wurde erfolgreich gesendet\",\n \"meta.states.loading\": \"Daten werden geladen\",\n \"meta.states.saving\": \"Daten werden gespeichert\",\n \"meta.states.selectedFromTotal\": \"{selected} von {total} ausgewählt\",\n \"meta.states.saved\": \"Die Daten wurden erfolgreich gespeichert\",\n \"meta.states.error\": \"Es ist ein Fehler aufgetreten. Die Daten konnten nicht gespeichert werden.\",\n \"meta.states.hint\": \"Hinweis\",\n \"meta.states.deleted\": \"Die Daten wurden gelöscht\",\n \"meta.states.active\": \"Aktiv\",\n \"meta.states.inactive\": \"Inaktiv\",\n \"meta.date.month.january\": \"Januar\",\n \"meta.date.month.february\": \"Februar\",\n \"meta.date.month.march\": \"März\",\n \"meta.date.month.april\": \"April\",\n \"meta.date.month.may\": \"Mai\",\n \"meta.date.month.june\": \"Juni\",\n \"meta.date.month.july\": \"Juli\",\n \"meta.date.month.august\": \"August\",\n \"meta.date.month.september\": \"September\",\n \"meta.date.month.october\": \"Oktober\",\n \"meta.date.month.november\": \"November\",\n \"meta.date.month.december\": \"Dezember\",\n \"meta.date.formatSince.today\": \"heute\",\n \"meta.date.formatSince.yesterday\": \"seit gestern\",\n \"meta.date.formatSince.days\": \"letzte {value} Tage\",\n \"meta.date.formatSince.months\": \"letzte {value} Monate\",\n \"meta.message.noResults\": \"Es wurden keine Einträge gefunden.\",\n \"meta.validation.required\": \"Pflichtfeld\",\n \"meta.validation.minCharacters\": \"Mindestens {min} Zeichen\",\n \"meta.validation.email\": \"Valide E-Mail Adresse erforderlich\",\n \"meta.last_edited\": \"zuletzt bearbeitet: {datetime, select, null {nie} other {{datetime}}}\",\n \"meta.languages.de\": \"Deutsch\",\n \"meta.languages.en\": \"English\",\n \"menu.main.login\": \"Anmelden\",\n \"menu.main.dashboard\": \"Übersicht\",\n \"menu.main.process\": \"Vorgänge\",\n \"menu.main.project\": \"Bauprojekte\",\n \"menu.main.buyer\": \"Erwerber\",\n \"menu.main.contractor\": \"Nachunternehmen\",\n \"menu.main.roomBook\": \"Raumbücher\",\n \"menu.main.notification\": \"Benachrichtigungen\",\n \"menu.main.setting\": \"Einstellungen\",\n \"menu.main.myProfile\": \"Mein Profil\",\n \"menu.main.accountAdmin\": \"Kontoeinstellungen\",\n \"menu.main.supportUtils\": \"Danger Zone\",\n \"menu.main.jobs\": \"Jobs\",\n \"menu.main.logout\": \"Abmelden\",\n \"menu.main.products\": \"Ausstattungskatalog\",\n \"menu.main.gettingStarted\": \"Erste Schritte\",\n \"menu.main.help\": \"Hilfe\",\n \"menu.main.news\": \"Neuigkeiten\",\n \"menu.main.documentExports\": \"Dokumentenexporte\",\n \"menu.main.featureToggles\": \"Feature Toggles\",\n \"menu.main.packageManager\": \"Package Manager\",\n \"menu.main.accountRoles\": \"Rollen\",\n \"menu.main.API\": \"API Dokumentation\",\n \"menu.main.webhooks\": \"API Webhooks\",\n \"menu.main.dataExport\": \"Data export\",\n \"menu.main.projectFiles\": \"Projektdateien\",\n \"process.header.title\": \"Prozesse\",\n \"process.header.button.add\": \"Prozess hinzufügen\",\n \"process.title.state.one\": \"Arbeitsschritt\",\n \"process.title.phase.one\": \"Arbeitsphase\",\n \"process.attributes.id.label\": \"ID\",\n \"process.attributes.process_type.label\": \"ID\",\n \"process.attributes.process_role.label\": \"Prozessrolle\",\n \"process.attributes.activity_scope.label\": \"Vorgangsbezug\",\n \"process.attributes.label.label\": \"Anzeigename\",\n \"process.attributes.deprecated.label\": \"Veraltet\",\n \"process.attributes.startable_from_message_thread.label\": \"Kann aus Nachricht gestartet werden\",\n \"process.attributes.hides_carts.label\": \"Ohne Leistungsumfang\",\n \"process.attributes.color.label\": \"Anzeigefarbe\",\n \"process.attributes.bp_label.label\": \"Anzeigename (Erwerber)\",\n \"process.attributes.bp_color.label\": \"Anzeigefarbe (Erwerber)\",\n \"process.attributes.terminal.label\": \"Endzustand - keine Frist\",\n \"process.attributes.summary.label\": \"Beschreibung\",\n \"process.attributes.startable.label\": \"Möglicher Vorgangsbeginn\",\n \"process.attributes.deadline.label\": \"Frist in Tagen\",\n \"process.attributes.deadline.placeholder\": \"Keine Frist\",\n \"process.attributes.deadline.error\": \"Bitte geben Sie eine ganze Zahl ein\",\n \"process.attributes.deadline_on.label\": \"Zeitpunkt der Fristaktivierung\",\n \"process.attributes.existing_process_types.label\": \"Select original process\",\n \"process.messages.add.success.title\": \"Saved\",\n \"process.messages.add.success.body\": \"New process added.\",\n \"process.messages.add.error.title\": \"Not saved\",\n \"process.messages.add.error.body\": \"Adding a new process failed.\",\n \"process.messages.edit.success.title\": \"Process saved\",\n \"process.messages.edit.success.body\": \"Changes are saved.\",\n \"process.messages.edit.error.title\": \"Not saved\",\n \"process.messages.edit.error.body\": \"Saving changes failed.\",\n \"process.messages.remove.success.title\": \"Process removed\",\n \"process.messages.remove.success.body\": \"Process is sucessfuly removed.\",\n \"process.messages.remove.error.title\": \"Not removed\",\n \"process.messages.remove.error.body\": \"Remove process failed.\",\n \"process.remove_dialog.title\": \"Prozess löschen\",\n \"process.remove_dialog.message\": \"Wollen Sie diesen Prozess löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"trades.title.one\": \"Gewerk\",\n \"trades.title.many\": \"Gewerke\",\n \"trades.attributes.id.label\": \"ID\",\n \"trades.attributes.id.error\": \"Eindeutiger, 3-5 - Großbuchstaben Kürzel\",\n \"trades.attributes.defaultMargin.label\": \"Standard Aufschlag\",\n \"trades.attributes.defaultMargin.short_label\": \"Aufschlag (%)\",\n \"trades.attributes.label.label\": \"Bezeichnung\",\n \"trades.actions.removeDialog.title\": \"Gewerk löschen\",\n \"trades.actions.removeDialog.message\": \"Möglicherweise wird das Gewerk bereits verwendet. Das Löschen könnte zu Fehlern führen. Wollen Sie trotzdem fortfahren?\",\n \"trades.unknown_trade\": \"Unbekanntes Gewerk %{id}\",\n \"account.selector.search.placeholder\": \"Suche...\",\n \"account.selector.search.resultCount\": \"Es werden {resultsShown} von insgesamt {resultsTotal} Ergebnissen angezeigt.\",\n \"account.selector.search.empty\": \"Keine Einträge gefunden\",\n \"account.selector.trade.placeholder\": \"Gewerk...\",\n \"account.selector.trade.no_trades\": \"Ohne Gewerk\",\n \"account.title.settings\": \"Kontoeinstellungen\",\n \"account.title.headers.buyer_portal_general\": \"Online-Konfigurator Allgemein\",\n \"account.title.headers.upload_section\": \"Dateien hochladen\",\n \"account.title.headers.settings_section\": \"Allgemeine Einstellungen\",\n \"account.title.headers.upload_login_logo\": \"Logo, das auf der Login-Seite des Online Konfigurators angezeigt wird.\",\n \"account.title.headers.upload_terms\": \"Allgemeine Geschäftsbedingungen\",\n \"account.title.headers.data_protection_policy_terms\": \"Datenschutzbestimmungen\",\n \"account.attributes.name.label\": \"Name\",\n \"account.attributes.slug.label\": \"Slug\",\n \"account.attributes.logo_url.label\": \"Logo Url\",\n \"account.attributes.reply_to_email.label\": \"Antwort E-Mail Adresse\",\n \"account.attributes.sender_mode.label\": \"E-Mail Versand Modus\",\n \"account.attributes.reply_mode.label\": \"E-Mail Empfang Modus\",\n \"account.attributes.unknown_message_mode.label\": \"E-Mail Empfang von unbekannten Nachrichten\",\n \"account.attributes.sender_email.label\": \"Account Absender Adresse\",\n \"account.attributes.fallback_email.label\": \"Account Fallback E-Mail Adresse\",\n \"account.attributes.mailjet_variation.label\": \"Mailjet variation\",\n \"account.attributes.domain.label\": \"Domain\",\n \"account.attributes.processes.label\": \"Prozess-Definitionen\",\n \"account.attributes.trades.label\": \"Gewerke\",\n \"account.attributes.features.label\": \"Feature Toggles\",\n \"account.attributes.attachment_types.label\": \"Dokumenttypen\",\n \"account.attributes.project_roles.label\": \"Rollen\",\n \"account.attributes.buyer_portal.admin_area\": \"Adminbereich\",\n \"account.attributes.buyer_portal.uploads.logo\": \"Logo für den Account\",\n \"account.attributes.buyer_portal.uploads.data_protection_policy\": \"Datenschutzinformationen für die Erwerber\",\n \"account.attributes.buyer_portal.uploads.terms_and_conditions\": \"Allgemeine Geschäftsbedingungen für die Erwerber\",\n \"account.attributes.buyer_portal.textareas.imprint\": \"Impressum\",\n \"account.attributes.buyer_portal.textareas.display_text\": \"Bei der Anmeldung angezeigter Text, dem die Erwerber zustimmen müssen.\",\n \"account.attributes.buyer_portal.legal_terms.title\": \"Rechtsbelehrung\",\n \"account.attributes.buyer_portal.legal_terms.label\": \"Laden Sie ihre Dateien hoch und passen Sie den Text an. HTML wird unterstützt\",\n \"account.attributes.buyer_portal.legal_terms.data_privacy_info\": \"Datenschutzinformationen für die Erwerber\",\n \"account.attributes.buyer_portal.legal_terms.terms_and_conditions\": \"Allgemeine Geschäftsbedingungen für die Erwerber\",\n \"account.attributes.buyer_portal.legal_terms.display_text\": \"Bei der Anmeldung angezeigter Text, dem die Erwerber zustimmen müssen.\",\n \"account.attributes.buyer_portal.login_logo_url.title\": \"Logo für den Account\",\n \"account.attributes.buyer_portal.login_logo_url.label\": \"Laden Sie das Logo Ihres Unternehmens hoch, wird auf der Login Seite angezeigt\",\n \"account.attributes.buyer_portal.favicon_html.title\": \"Favicon\",\n \"account.attributes.buyer_portal.favicon_html.label\": \"HTML Code für Bookmark- und App- Icon\",\n \"account.attributes.buyer_portal.styling.title\": \"CSS Stylesheet (SASS)\",\n \"account.attributes.buyer_portal.styling.label\": \"CSS Stylesheet (SASS)\",\n \"account.attributes.buyer_portal.accept_terms_label.title\": \"Hinweis auf die Nutzungsbedingungen / Datenschutzerklärung\",\n \"account.attributes.buyer_portal.accept_terms_label.label\": \"Bei der Anmeldung angezeigter Text, dem die Erwerber zustimmen müssen.\",\n \"account.attributes.buyer_portal.buyer_portal_data_privacy_statement_url.label\": \"Link URI Datenschutzerklärung\",\n \"account.attributes.buyer_portal.buyer_portal_terms_url.label\": \"Link URI AGB\",\n \"account.attributes.buyer_portal.imprint.title\": \"Impressum für den Online Konfigurator\",\n \"account.attributes.buyer_portal.imprint.label\": \"Hier ist Platz für das Impressum. HTML wird Unterstützt\",\n \"account.attributes.buyer_portal.allowed_origins.title\": \"Marketingportal\",\n \"account.attributes.buyer_portal.allowed_origins.label\": \"Erlaubte Seiten, die das Marketingportal einbinden, Dies muss eine URL sein. (https://baudigital.com/demo.html)\",\n \"account.project_memberships.title\": \"Benutzerberechtigungen auf Projektebene\",\n \"account.project_memberships.description\": \"Der Zugriff auf Projekte ist nur autorisierten Benutzern erlaubt. Bitte legen Sie hier die autorisierten Benutzer pro Projekt fest.\",\n \"account.project_memberships.missing\": \"Diesem Projekt sind keine Benutzer zugeordnet.\",\n \"account.project_memberships.user_added_to_project\": \"Benutzer wurde dem Projekt hinzugefügt.\",\n \"account.project_memberships.user_added_to_project_error\": \"Beim Hinzufügen des Benutzers zum Projekt ist ein Fehler aufgetreten.\",\n \"account.project_memberships.user_removed_from_project\": \"Benutzer wurde aus dem Projekt entfernt.\",\n \"account.project_memberships.user_removed_from_project_error\": \"Beim Entfernen des Benutzers aus dem Projekt ist ein Fehler aufgetreten.\",\n \"account.project_memberships.user_changed\": \"Benutzer wurde geändert.\",\n \"account.project_memberships.user_changed_error\": \"Benutzer konnte nicht geändert werden.\",\n \"account.project_memberships.user_assigned_to_project\": \"Benutzer wurde dem Projekt zugewiesen.\",\n \"account.project_memberships.user_assigned_to_project_error\": \"Beim Zuweisen des Benutzers zum Projekt ist ein Fehler aufgetreten.\",\n \"account.project_memberships.dialog.title\": \"Nachfolger für Benutzer {user} nominieren\",\n \"account.project_memberships.dialog.messages\": \"Nachrichten\",\n \"account.project_memberships.dialog.units\": \"Wohneinheiten\",\n \"account.project_memberships.dialog.activities\": \"Vorgänge\",\n \"account.project_memberships.dialog.prospects\": \"Interessenten\",\n \"account.project_memberships.dialog.edit\": \"Bearbeiten\",\n \"account.project_memberships.attributes.name.label\": \"Name\",\n \"account.project_memberships.attributes.email_signature.label\": \"E-Mail Signatur\",\n \"account.project_memberships.attributes.project_role.label\": \"Rolle\",\n \"account.project_memberships.attributes.project_email.label\": \"Projekt E-Mail\",\n \"account.project_memberships.attributes.roles.label\": \"Vorgangsrollen\",\n \"account.actions.upload_logo\": \"Datei wählen\",\n \"account.actions.remove_logo\": \"Datei entfernen\",\n \"account.settings.saving_reminder.header\": \"Ungespeicherte Änderungen\",\n \"account.settings.saving_reminder.content\": \"Möchten Sie Ihre Änderungen speichern?\",\n \"account.settings.image_selector.select_image\": \"Bild auswählen\",\n \"account.settings.image_selector.select_project\": \"Projekt wählen\",\n \"account.settings.image_selector.add_new_gallery\": \"Neue Galerie anlegen\",\n \"account.settings.image_selector.delete_selected_images\": \"Ausgewählte Bilder löschen\",\n \"account.settings.image_selector.unable_to_delete_selected_image\": \"Das Bild ist aktuell der Sektion zugeordnet und kann deshalb nicht gelöscht werden.\",\n \"account.settings.image_selector.edit_gallery\": \"Galerie bearbeiten\",\n \"account.settings.image_selector.finish_edit\": \"Bearbeiten beenden\",\n \"account.settings.image_selector.menu.default\": \"Allgemein\",\n \"account.settings.buyer_portal.account_tab.account_configuration\": \"Konfiguration\",\n \"account.settings.buyer_portal.project_tab.warning_color\": \"Warnfarbe\",\n \"account.settings.buyer_portal.project_tab.branding_color\": \"Unternehmensfarbe\",\n \"account.settings.buyer_portal.project_tab.branding_contrast_color\": \"Kontrastfarbe\",\n \"account.settings.buyer_portal.project_tab.units_menu_item_text.label\": \"Menüpunkt \\\"Wohneinheiten\\\" umbenennen\",\n \"account.settings.buyer_portal.project_tab.units_menu_item_text.placeholder\": \"Meine Wohnungen\",\n \"account.settings.buyer_portal.project_tab.banner_image_url.header\": \"Bildbanner für den Online Konfigurator\",\n \"account.settings.buyer_portal.project_tab.banner_image_url.info\": \"Die ideale Bildgröße liegt um 2000x470 Pixel.\\n\\nBitte beachten Sie, dass sich die Dateigröße auf die Ladezeit im Online Konfigurator auswirkt.\",\n \"account.settings.buyer_portal.project_tab.project_logo_url.header\": \"Logo für das Projekt\",\n \"account.settings.buyer_portal.project_tab.project_logo_url.info\": \"Das Projektlogo wird über das Bildbanner im Online Konfigurator gelegt. Es ersetzt nicht das Firmenlogo, das in der Menüleiste oben links angezeigt wird.\",\n \"account.settings.buyer_portal.project_tab.configurator_sections\": \"Sektionen im Online Konfigurator bearbeiten\",\n \"account.settings.buyer_portal.project_tab.css\": \"CSS bearbeiten\",\n \"account.settings.buyer_portal.project_tab.project_configuration\": \"Projektkonfiguration\",\n \"account.settings.buyer_portal.project_tab.project_rooms\": \"Räume\",\n \"account.settings.buyer_portal.project_tab.configurator_backends\": \"Konfiguratoren (Glencoe)\",\n \"account.settings.buyer_portal.project_tab.flat_finder\": \"FlatFinder\",\n \"macro.title\": \"Makro: {name}\",\n \"macro.toggle.label\": \"Toggle HTML view\",\n \"macro.attributes.macro_id.label\": \"ID\",\n \"macro.attributes.name.label\": \"Name\",\n \"macro.attributes.call_to_action.label\": \"Call to action\",\n \"macro.attributes.deadline.label\": \"Frist\",\n \"macro.attributes.icon.label\": \"Icon\",\n \"macro.attributes.body.label\": \"Nachricht\",\n \"macro.attributes.body_template.label\": \"Vorlage Nachricht\",\n \"macro.attributes.subject_template.label\": \"Vorlage Betreff\",\n \"macro.attributes.config.label\": \"Konfiguration\",\n \"macro.attributes.original_macro.label\": \"Original Makro\",\n \"macro.attributes.projects.label\": \"Projekte\",\n \"macro.attributes.projects.placeholder\": \"Alle Projekte\",\n \"macro.message.success.title\": \"Speichern abgeschlossen\",\n \"macro.message.success.body\": \"Die Änderungen wurden erfolgreich übernommen\",\n \"macro.message.success.body_remove\": \"Macro is successfully deleted\",\n \"macro.message.error.title\": \"Es ist ein Fehler aufgetreten\",\n \"macro.message.error.body\": \"Die Änderungen konnten nicht übernommen werden\",\n \"macro.message.error.body_remove\": \"Macro couldn't be deleted\",\n \"roomBook.title.zero\": \"Kein Raumbuch\",\n \"roomBook.title.one\": \"Raumbuch\",\n \"roomBook.title.other\": \"Raumbücher\",\n \"roomBook.title.missing\": \"Es wurde noch kein Raumbuch angelegt\",\n \"roomBook.title.creation\": \"Raumbuch wird angelegt\",\n \"roomBook.templateTitle.one\": \"Raumbuchvorlage\",\n \"roomBook.priceStrategy.length\": \"m\",\n \"roomBook.priceStrategy.pieces\": \"Stk.\",\n \"roomBook.priceStrategy.area\": \"m²\",\n \"roomBook.priceStrategy.flat\": \"pauschal\",\n \"roomBook.priceStrategy.hour\": \"Std.\",\n \"roomBook.priceStrategyLong.length\": \"Meter\",\n \"roomBook.priceStrategyLong.pieces\": \"Stück\",\n \"roomBook.priceStrategyLong.area\": \"m²\",\n \"roomBook.priceStrategyLong.flat\": \"pauschal\",\n \"roomBook.priceStrategyLong.flatLabel\": \"Pauschal\",\n \"roomBook.priceStrategyLong.hour\": \"Stunde\",\n \"roomBook.priceStrategyShort.length\": \"m\",\n \"roomBook.priceStrategyShort.pieces\": \"x\",\n \"roomBook.priceStrategyShort.area\": \"m²\",\n \"roomBook.priceStrategyShort.hour\": \"h\",\n \"roomBook.priceStrategyShort.flat\": \" \",\n \"roomBook.priceStrategyExports.length\": \"lfm\",\n \"roomBook.priceStrategyExports.pieces\": \"stk\",\n \"roomBook.priceStrategyExports.area\": \"m²\",\n \"roomBook.priceStrategyExports.hour\": \"h\",\n \"roomBook.priceStrategyExports.flat\": \"pauschal\",\n \"roomBook.priceStrategyLongValue.length\": \"{quantity} Meter\",\n \"roomBook.priceStrategyLongValue.pieces\": \"{quantity} Stück\",\n \"roomBook.priceStrategyLongValue.area\": \"{quantity} m²\",\n \"roomBook.priceStrategyLongValue.hour\": \"{quantity} {quantity, plural, one {Stunde} other {Stunden}}\",\n \"roomBook.standardSelection\": \"Standardauswahl\",\n \"roomBook.approvedSelection\": \"Bestätigt\",\n \"roomBook.buyerSelection\": \"Erwerberwunsch\",\n \"roomBook.standardCostsAttributes\": \"Kosten der Standardauswahl (netto)\",\n \"roomBook.selection\": \"Preis (Standardmenge)\",\n \"roomBook.selectionExcess\": \"Preis (Mehrmenge)\",\n \"roomBook.budget\": \"Standardbudget\",\n \"roomBook.unitVariableType\": \"Mengenvariable\",\n \"roomBook.subsubtotal.gross\": \"Zwischensumme (brutto)\",\n \"roomBook.subsubtotal.net\": \"Zwischensumme (netto)\",\n \"roomBook.subtotal.gross\": \"Zwischensumme (brutto)\",\n \"roomBook.subtotal.net\": \"Zwischensumme (netto)\",\n \"roomBook.roomBookTotal.gross\": \"Gesamt (brutto)\",\n \"roomBook.roomBookTotal.net\": \"Gesamt (netto)\",\n \"roomBook.genericSubtotal\": \"Gesamt\",\n \"roomBook.total\": \"Mehrpreis (brutto)\",\n \"roomBook.copyOf\": \"Kopie von \",\n \"roomBook.derivedFrom\": \"Abgeleitet von:\",\n \"roomBook.new\": \"Neues Raumbuch\",\n \"roomBook.otherTrades\": \"Andere Gewerke\",\n \"roomBook.chooseTrade\": \"Kategorie auswählen\",\n \"roomBook.noCart\": \"Entscheidung offen\",\n \"roomBook.noCarts\": \"Es wurden noch keine Produkte zu einer Erwerberauswahl hinzugefügt.\",\n \"roomBook.progress.title.one\": \"Bemusterungsfortschritt\",\n \"roomBook.progress.states.none\": \"Offen\",\n \"roomBook.progress.states.decided\": \"Bemusterungs­festlegung\",\n \"roomBook.progress.states.favourite\": \"Ausgewählt\",\n \"roomBook.progress.states.buyer_selection\": \"Erwerber­auswahl\",\n \"roomBook.cart.title.one\": \"Vorgang\",\n \"roomBook.cart.title.other\": \"Vorgänge\",\n \"roomBook.cart.exampleTitle\": \"Vorgang\",\n \"roomBook.cart.attributes.process_type.label\": \"Vorgangstyp\",\n \"roomBook.cart.attributes.start_status.label\": \"Vorgangsbeginn\",\n \"roomBook.cart.attributes.unit.label\": \"Wohneinheit\",\n \"roomBook.cart.attributes.section.label\": \"Bauabschnitt\",\n \"roomBook.cart.attributes.title.label\": \"Bezeichnung\",\n \"roomBook.cart.attributes.title.placeholder\": \"z.B. \\\"Bemusterungstermin 13.06.\\\"\",\n \"roomBook.cart.attributes.title.error\": \"Bitte geben Sie eine Bezeichnung für den Vorgang an.\",\n \"roomBook.cart.actions.export\": \"Export\",\n \"roomBook.cart.messages.export\": \"Dieser Export wurde den Dokumenten des Vorgangs hinzugefügt.\",\n \"roomBook.customProduct\": \"Individualwunsch\",\n \"roomBook.tabs.positions\": \"Positionen\",\n \"roomBook.tabs.carts\": \"Vorgänge\",\n \"roomBook.attributes.name.label\": \"Titel\",\n \"roomBook.attributes.name.placeholder\": \"Titel des Raumbuchs z.B. \\\"Gebäude II Wohnungstyp 80qm\\\"\",\n \"roomBook.attributes.project_catalog_id.label\": \"Ausstattungskatalog\",\n \"roomBook.attributes.project_catalog_id.placeholder\": \"Wählen Sie den Ausstattungskatalog\",\n \"roomBook.attributes.price_catalog_id.label\": \"Preisliste\",\n \"roomBook.attributes.price_catalog_id.placeholder\": \"Wählen Sie die Preisliste\",\n \"roomBook.sections.primary.notFound\": \"Dieses Raumbuch verfügt noch nicht über Abschnitte. Legen Sie den ersten Abschnitt jetzt an.\",\n \"roomBook.sections.primary.attributes.title.label\": \"Bezeichnung\",\n \"roomBook.sections.primary.attributes.title.placeholder\": \"z.B. \\\"Sanitärtechnik\\\" oder \\\"Elektroinstallation\\\"\",\n \"roomBook.sections.primary.attributes.title.error\": \"Bitte geben Sie eine Bezeichnung für den Abschnitt an.\",\n \"roomBook.sections.secondary.attributes.title.label\": \"Bezeichnung\",\n \"roomBook.sections.secondary.attributes.title.placeholder\": \"z.B. \\\"Badezimmer\\\" oder \\\"Küche\\\"\",\n \"roomBook.sections.secondary.attributes.title.error\": \"Bitte geben Sie eine Bezeichnung für die Rubrik an.\",\n \"roomBook.sections.actions.removeDialog.title\": \"Abschnitt löschen\",\n \"roomBook.sections.actions.removeDialog.message\": \"Wollen Sie den Abschnitt wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.sections.attributes.project_room_id.label\": \"Raum im Online-Konfigurator\",\n \"roomBook.sections.attributes.project_room_id.placeholder\": \"Bitte ordnen Sie diesen Abschnitt einem Raum im Online-Konfigurator zu\",\n \"roomBook.sections.attributes.project_room_ids.label\": \"Räume im Online-Konfigurator\",\n \"roomBook.sections.attributes.project_room_ids.placeholder\": \"Bitte ordnen Sie diesen Abschnitt einem oder mehreren Räumen im Online-Konfigurator zu\",\n \"roomBook.sections.attributes.external_id.label\": \"Externe ID\",\n \"roomBook.sections.attributes.external_id.placeholder\": \"z.B. 123\",\n \"roomBook.sections.attributes.unitFeatures.label\": \"Merkmale\",\n \"roomBook.lineItems.title.one\": \"Position\",\n \"roomBook.lineItems.title.other\": \"Positionen\",\n \"roomBook.lineItems.tabs.standards\": \"Standardauswahl\",\n \"roomBook.lineItems.tabs.selection\": \"Kundenauswahl\",\n \"roomBook.lineItems.tabs.documents\": \"Dokumente\",\n \"roomBook.lineItems.tabs.costs\": \"Kosten\",\n \"roomBook.lineItems.surcharge\": \"Preisanpassung (brutto)\",\n \"roomBook.lineItems.discount\": \"Aufschlag / Rabatt (brutto)\",\n \"roomBook.lineItems.total.net\": \"Summe (netto)\",\n \"roomBook.lineItems.total.gross\": \"Summe (brutto)\",\n \"roomBook.lineItems.net\": \"netto\",\n \"roomBook.lineItems.gross\": \"brutto\",\n \"roomBook.lineItems.selectedProduct\": \"Ausgewähltes Produkt\",\n \"roomBook.lineItems.individualProduct\": \"Wunschprodukt\",\n \"roomBook.lineItems.addIndividualProduct\": \"Wunschprodukt hinzufügen\",\n \"roomBook.lineItems.individualProductDescription\": \"Beschreibung Wunschprodukt\",\n \"roomBook.lineItems.productAlternatives\": \"Alternativen aus dem Ausstattungskatalog\",\n \"roomBook.lineItems.buyerSelection.buyerSelectionNotFound\": \"Erwerber hat noch keine Auswahl getroffen\",\n \"roomBook.lineItems.buyerSelection.equalsBuyerSelection\": \"Mit Erwerberauswahl übereinstimmend\",\n \"roomBook.lineItems.buyerSelection.buyerSelected\": \"Erwerber wünscht\",\n \"roomBook.lineItems.buyerSelection.buyerSelectedBatch.title\": \"Erwerberauswahl übernehmen\",\n \"roomBook.lineItems.buyerSelection.buyerSelectedBatch.total\": \"Für {count, plural, one {eine Position} other {# Positionen}} liegt eine Erwerberauswahl vor.\",\n \"roomBook.lineItems.buyerSelection.customProductBuyerSelections.title\": \"Wunschprodukte\",\n \"roomBook.lineItems.buyerSelection.customProductBuyerSelections.total\": \"Für {count, plural, one {eine Position wird ein Individualprodukt} other {# Positionen werden Individualprodukte}} gewünscht.\",\n \"roomBook.lineItems.buyerSelection.acceptedAll.title\": \"Auswahl übernommen\",\n \"roomBook.lineItems.buyerSelection.acceptedAll.body\": \"Die Erwerberauswahl wurde erfolgreich übernommen.\",\n \"roomBook.lineItems.buyerSelection.pending\": \"Bitte übernehmen oder verwerfen Sie die Erwerberauswahl, bevor Sie mit der Abwicklung fortfahren.\",\n \"roomBook.lineItems.lightBox.title\": \"Produktauswahl\",\n \"roomBook.lineItems.timeline.title\": \"Statushistorie\",\n \"roomBook.lineItems.attributes.product_id.label\": \"Produkt\",\n \"roomBook.lineItems.attributes.title.label\": \"Positionstitel\",\n \"roomBook.lineItems.attributes.title.placeholder\": \"z.B. \\\"Waschtisch\\\"\",\n \"roomBook.lineItems.attributes.title.error\": \"Bitte geben Sie hier eine Positionsbezeichnung an.\",\n \"roomBook.lineItems.attributes.display_mode.label\": \"Darstellungsmodus\",\n \"roomBook.lineItems.attributes.display_mode.options.cards\": \"Produktkarten (Standard)\",\n \"roomBook.lineItems.attributes.display_mode.options.compact_list\": \"Kompakte Liste mit Mengenregeler\",\n \"roomBook.lineItems.attributes.display_mode.options.mandatory\": \"Einzelne Karte + kompakt im Erwerberangebot (veraltet)\",\n \"roomBook.lineItems.attributes.display_mode.options.compacted\": \"Nur Hauptposition im Erwerberangebot, Unterposition verstecken\",\n \"roomBook.lineItems.attributes.display_mode_buyer.label\": \"Darstellungsmodus Exporte Erwerber\",\n \"roomBook.lineItems.attributes.display_mode_exports.options.default\": \"Standard\",\n \"roomBook.lineItems.attributes.display_mode_exports.options.compact\": \"Kompakt\",\n \"roomBook.lineItems.attributes.upgrade_bundle_id.label\": \"Upgrade Paket (Standard)\",\n \"roomBook.lineItems.attributes.upgrade_bundle_id.placeholder\": \"Wenn diese Position den Inhalt des Standard Upgrade Paketes definiert\",\n \"roomBook.lineItems.attributes.optional.title\": \"Optional\",\n \"roomBook.lineItems.attributes.optional.label\": \"Position ist optional\",\n \"roomBook.lineItems.attributes.upgrade_bundle.title\": \"{name}\",\n \"roomBook.lineItems.attributes.upgrade_bundle.label\": \"Upgrade Paket {name}\",\n \"roomBook.lineItems.attributes.quantity.label\": \"Menge\",\n \"roomBook.lineItems.attributes.quantity.placeholder\": \"z.B. 1\",\n \"roomBook.lineItems.attributes.quantity.error\": \"Bitte geben Sie hier die benötigte Anzahl oder Menge des ausgewählten Produkts an.\",\n \"roomBook.lineItems.attributes.discount.label\": \"Rabatt\",\n \"roomBook.lineItems.attributes.discount.placeholder\": \"z.B. 112,00\",\n \"roomBook.lineItems.attributes.discount.error\": \"Bitte geben Sie hier einen Brutto-Rabatt oder 0 an.\",\n \"roomBook.lineItems.attributes.default_product_id.label\": \"Standardprodukt\",\n \"roomBook.lineItems.attributes.default_product_id.error\": \"Bitte geben Sie hier einen Brutto-Rabatt oder 0 an.\",\n \"roomBook.lineItems.attributes.default_quantity.label\": \"Standardmenge\",\n \"roomBook.lineItems.attributes.default_quantity.placeholder\": \"z.B. 1\",\n \"roomBook.lineItems.attributes.default_quantity.error\": \"Bitte geben Sie hier die benötigte Standard-Anzahl oder -Menge des ausgewählten Produkts an.\",\n \"roomBook.lineItems.attributes.price.label\": \"Pauschalpreis\",\n \"roomBook.lineItems.attributes.price.placeholder\": \"z.B. 129,99 oder 0,00\",\n \"roomBook.lineItems.attributes.price.error\": \"Bitte geben Sie hier den Pauschal- oder Einzelpreis des Produkts an.\",\n \"roomBook.lineItems.attributes.default_price.label\": \"Vorgesehenes Pauschalbudget\",\n \"roomBook.lineItems.attributes.default_price.placeholder\": \"z.B. 129,99 oder 0,00\",\n \"roomBook.lineItems.attributes.default_price.error\": \"Bitte geben Sie hier den vorgesehenen Standard-Pauschal- oder Standard-Einzelpreis des Produkts an.\",\n \"roomBook.lineItems.attributes.budget.label\": \"Budget\",\n \"roomBook.lineItems.attributes.total.label\": \"Gesamt\",\n \"roomBook.lineItems.attributes.description.label\": \"Beschreibung des Kundenwunsches\",\n \"roomBook.lineItems.attributes.description.placeholder\": \"z.B. \\\"Türzarge 180° gedreht\\\" oder \\\"Boden ohne Fliesen\\\"\",\n \"roomBook.lineItems.attributes.description.error\": \"Bitte geben Sie hier eine Beschreibung der gewünschten Änderung an.\",\n \"roomBook.lineItems.attributes.instructions.label\": \"Allgemeiner Ausführungshinweis\",\n \"roomBook.lineItems.attributes.instructions.placeholder\": \" \",\n \"roomBook.lineItems.attributes.default_description.label\": \"Beschreibung der vorgesehenen Standardausführung\",\n \"roomBook.lineItems.attributes.default_description.placeholder\": \"z.B. \\\"Tür 80cm, Standardzarge, weiss\\\"\",\n \"roomBook.lineItems.attributes.default_description.error\": \"Bitte geben Sie hier die Beschreibung der vorgesehenen Standardausführung dieser Position an.\",\n \"roomBook.lineItems.attributes.activity.missing\": \"Kein Vorgang\",\n \"roomBook.lineItems.attributes.newPosition.label\": \"Neue Position\",\n \"roomBook.lineItems.attributes.costs.trade.label\": \"Gewerk\",\n \"roomBook.lineItems.attributes.costs.default_quantity.label\": \"Standardmenge\",\n \"roomBook.lineItems.attributes.costs.excess_quantity.label\": \"Mehrmenge\",\n \"roomBook.lineItems.attributes.costs.net_total.label\": \"Gesamt (netto)\",\n \"roomBook.lineItems.attributes.costs.selection_costs.label\": \"Kosten der Kundenauswahl\",\n \"roomBook.lineItems.attributes.costs.default_costs.label\": \"Kosten der Standardauswahl\",\n \"roomBook.lineItems.attributes.costs.net_unit_costs.label\": \"Einzelpreis (netto)\",\n \"roomBook.lineItems.attributes.costs.net_sum_of_costs.label\": \"Gesamt (netto)\",\n \"roomBook.lineItems.attributes.costs.total_costs.label\": \"Mehrkosten\",\n \"roomBook.lineItems.attributes.cancellation_contactor_mode.skip.title\": \"Ohne Stornoauftrag\",\n \"roomBook.lineItems.attributes.cancellation_contactor_mode.skip.hint\": \"Die Leistung muss nicht beim Nachunternehmen storniert werden, da sie noch nicht beauftragt wurde.\",\n \"roomBook.lineItems.attributes.cancellation_contactor_mode.inform.title\": \"Stornoauftrag\",\n \"roomBook.lineItems.attributes.cancellation_contactor_mode.inform.hint\": \"Die Stornierung muss explizit beim Nachunternehmen beauftragt werden.\",\n \"roomBook.lineItems.attributes.cancellation_mode.cancellation.title\": \"Rücktritt\",\n \"roomBook.lineItems.attributes.cancellation_mode.cancellation.hint\": \"Erwerber möchte ausschließlich von der Beauftragung zurücktreten und wünscht keine Neuauswahl.\",\n \"roomBook.lineItems.attributes.cancellation_mode.replacement.title\": \"Neuauswahl\",\n \"roomBook.lineItems.attributes.cancellation_mode.replacement.hint\": \"Erwerber möchte die bereits beauftragte Leistung durch eine Alternative ersetzen.\",\n \"roomBook.lineItems.attributes.external_id.title.label\": \"Externe ID\",\n \"roomBook.lineItems.attributes.external_id.title.placeholder\": \"z.B. 123\",\n \"roomBook.lineItems.status.open.label\": \"Entscheidung offen\",\n \"roomBook.lineItems.status.open.hint\": \"Ordnen Sie dieser Position ein Vorgang zu, um mit der Abwicklung zu beginnen.\",\n \"roomBook.lineItems.status.inProgress.hint\": \"Dieser Vorgang befindet sich im Status:\",\n \"roomBook.lineItems.status.pending.hint\": \"Dieser Vorgang wurde noch nicht gestartet. Klicken Sie den Vorgang an, um diesen zu starten.\",\n \"roomBook.lineItems.actions.confirm\": \"Trotzdem fortfahren\",\n \"roomBook.lineItems.actions.cancel\": \"Abbrechen\",\n \"roomBook.lineItems.actions.sort\": \"Produkt verschieben\",\n \"roomBook.lineItems.actions.increasePosition\": \"Nach oben verschieben\",\n \"roomBook.lineItems.actions.decreasePosition\": \"Nach unten verschieben\",\n \"roomBook.lineItems.actions.sortSection\": \"Abschnitt einordnen\",\n \"roomBook.lineItems.actions.linkToCatalogProductGroup\": \"Produktgruppe im Katalog öffnen\",\n \"roomBook.lineItems.actions.linkToCatalogProduct\": \"Ausgewähltes Produkt im Katalog öffnen\",\n \"roomBook.lineItems.actions.paste\": \"Hier einfügen\",\n \"roomBook.lineItems.actions.changeProduct\": \"Auswahl ändern\",\n \"roomBook.lineItems.actions.copyId\": \"ID in die Zwischenablage kopieren\",\n \"roomBook.lineItems.actions.copyIdShort\": \"ID\",\n \"roomBook.lineItems.actions.removeDialog.title\": \"Position löschen\",\n \"roomBook.lineItems.actions.removeDialog.message\": \"Wollen Sie die Position wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.lineItems.actions.unlinkDialog.title\": \"Position aus dem Vorgang entfernen\",\n \"roomBook.lineItems.actions.unlinkDialog.message\": \"Wollen Sie die Position wirklich aus dem Vorgang entfernen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.lineItems.actions.unlinkDialog.messageStarted\": \"Durch das entfernen der Position wird der Leistungsumfang eines laufenden Vorgangs geändert. Ggf. sollten Sie beteiligt Parteien darüber informieren.

    Wollen Sie die Position wirklich aus dem Vorgang entfernen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.lineItems.actions.cartSelection.change.label\": \"Vorgang ändern\",\n \"roomBook.lineItems.actions.cartSelection.remove.label\": \"Vorgang entfernen\",\n \"roomBook.lineItems.actions.cartSelection.suggestion.pending\": \"Weiter mit:\",\n \"roomBook.lineItems.actions.cartSelection.suggestion.active\": \"Offene Vorgänge\",\n \"roomBook.lineItems.actions.cartSelection.activeToggle.show\": \"Alle Vorgänge anzeigen\",\n \"roomBook.lineItems.actions.cartSelection.activeToggle.hide\": \"Nur offene Vorgänge anzeigen\",\n \"roomBook.lineItems.actions.cartSelection.furtherOptions.label\": \"Weitere Optionen\",\n \"roomBook.lineItems.actions.cartSelection.pendingOptions.label\": \"Laufende Vorgänge\",\n \"roomBook.lineItems.actions.cancellationDialog.title\": \"Beauftragte Position stornieren\",\n \"roomBook.lineItems.actions.cancellationDialog.message01\": \"Diese Position wurde bereits beauftragt. Eine Stornierung muss durch den Erwerber beauftragt und ggf. im Anschluss an das Nachunternehmen kommuniziert werden.\",\n \"roomBook.lineItems.actions.cancellationDialog.message02\": \"Bitte wählen Sie aus, mit welchem Ziel die Stornierung durchgeführt werden soll:\",\n \"roomBook.lineItems.actions.cancellationDialog.message03\": \"Bitte wählen Sie aus, wie das Nachunternehmen über die Stornierung informiert werden soll:\",\n \"roomBook.lineItems.actions.cancellationDialog.gotoPosition.hint\": \"Die Stornoposition wurde erfolgreich angelegt\",\n \"roomBook.lineItems.actions.cancellationDialog.gotoPosition.label\": \"Zur Stornoposition\",\n \"roomBook.lineItems.messages.header\": \"Achtung!\",\n \"roomBook.lineItems.messages.warningsPresent\": \"Folgende Warnungen liegen vor\",\n \"roomBook.lineItems.messages.confirmChanges\": \"Möchten Sie trotzdem mit den Änderungen fortfahren?\",\n \"roomBook.lineItems.messages.activityAlreadyStarted\": \"Der Vorgang zu dem diese Position gehört wurde bereits gestartet.\",\n \"roomBook.lineItems.messages.warningRemoveFromActiveActivity\": \"Positionen können nur in einem der folgenden Arbeitsschritten: {states}; entfernt werden. Bitte kehren Sie in einen dieser Arbeitsschritte zurück, entfernen die Positionen und informieren Sie bei Bedarf die Beteiligten.\",\n \"roomBook.lineItems.messages.warningAssignToActiveActivity\": \"Der Vorgang wurde bereits gestartet. Sind Sie sicher, dass Sie die Position dem Vorgang hinzufügen wollen?\",\n \"roomBook.lineItems.messages.changeOfCosts\": \"Sie haben für diese Produktauswahl bereits Kosten hinterlegt, diese werden beim Wechsel des Produkts überschrieben.\",\n \"roomBook.lineItems.messages.changeOfDefaultCosts\": \"Sie haben für das Standardprodukt bereits Kosten hinterlegt, diese werden beim Wechsel des Standardprodukts überschrieben.\",\n \"roomBook.lineItems.messages.changeOfPrice\": \"Der Preis der aktuellen Produktauswahl wurde abweichend vom Ausstattungskatalog festgesetzt. Der Preis wird beim Produktwechsel durch den Preis der neuen Produktauswahl überschrieben.\",\n \"roomBook.lineItems.messages.changeOfDefaultPrice\": \"Der Preis der aktuellen Standardauswahl wurde abweichend vom Ausstattungskatalog festgesetzt. Der Preis wird beim Produktwechsel durch den Preis der neuen Standardauswahl überschrieben.\",\n \"roomBook.lineItems.messages.productPriceDiversion\": \"Der Preis der aktuellen Produktauswahl weicht vom aktuellen Ausstattungskatalog ab.\",\n \"roomBook.lineItems.messages.defaultProductPriceDiversion\": \"Der Preis der aktuellen Standardauswahl weicht vom aktuellen Ausstattungskatalog ab.\",\n \"roomBook.lineItems.messages.defaultExcessPriceDiversion\": \"Der Preis für Mehrmengen weicht vom aktuellen Ausstattungskatalog ab.\",\n \"roomBook.lineItems.messages.quantityUnitVariableDiversion\": \"Die Menge der Kundenauswahl weicht von der hinterlegten Menge für die Wohnung ab.\",\n \"roomBook.lineItems.messages.defaultQuantityUnitVariableDiversion\": \"Die Menge der Standardauswahl weicht von der hinterlegten Menge für die Wohnung ab.\",\n \"roomBook.lineItems.messages.costsDiversion\": \"Die Kosten der Kundenauswahl weichen vom aktuellen Ausstattungskatalog ab.\",\n \"roomBook.lineItems.messages.defaultCostsDiversion\": \"Die Kosten der Standardauswahl weichen vom aktuellen Ausstattungskatalog ab.\",\n \"roomBook.lineItems.messages.unremovableDueToProgress\": \"Die Abwicklung der Position wurde bereits mit einem anderen Vorgang fortgesetzt. Daher kann die Position aus diesem Vorgang nicht mehr entfernt werden.\",\n \"roomBook.lineItems.messages.skipContractorCancellationInfo\": \"Hinweis: Die Stornopositionen werden im Nachunternehmerauftrag nicht ausgewiesen.\",\n \"roomBook.lineItems.messages.priseCostDiverged\": \"Achtung: Kosten oder Preise weichen vom Ausstattungskatalog ab.\",\n \"roomBook.lineItems.messages.unitVariableValue\": \"\",\n \"roomBook.lineItems.messages.priceOnRequest.title\": \"Preis auf Anfrage\",\n \"roomBook.lineItems.messages.priceOnRequest.body\": \"Für diese Produktauswahl liegt aktuell kein Preis vor.\",\n \"roomBook.lineItems.messages.quantityOnRequest.title\": \"Mengenermittlung ggf. erforderlich\",\n \"roomBook.lineItems.messages.quantityOnRequest.body\": \"Bitte ermitteln Sie die Menge, wenn es sich um ein aufpreispflichtiges Produkt handelt.\",\n \"roomBook.lineItems.messages.trades.label\": \"Gewerke\",\n \"roomBook.lineItems.messages.selectInitialTrades.label\": \"Wählen Sie das Gewerk für den Individualwunsch aus\",\n \"roomBook.lineItems.messages.selectInitialTrades.validation\": \"Bitte wählen Sie mindestens ein Gewerk!\",\n \"roomBook.lineItems.wizard.header\": \"Neue Position\",\n \"roomBook.lineItems.wizard.subheaders.productSelection\": \"Bitte wählen Sie das Produkt aus, das in der Wohnung verbaut werden soll.\",\n \"roomBook.lineItems.wizard.subheaders.modeSelection\": \"Wenn durch diese Position eine Standardleistung der Baubeschreibung ersetzt wird, verrechnet das System die Preise für Sie automatisch. Wenn nicht, wird die Position als zusätzliche Leistung berechnet.\",\n \"roomBook.lineItems.wizard.subheaders.defaultProductSelection\": \"Bitte wählen Sie das Produkt aus, das laut Baubeschreibung verbaut werden sollte.\",\n \"roomBook.lineItems.wizard.subheaders.adhoc.stepTrade\": \"Bitte wählen Sie das Gewerk für den Individualwunsch\",\n \"roomBook.lineItems.wizard.subheaders.adhoc.stepProductGroup\": \"Bitte wählen Sie die Produktgruppe für den Individualwunsch\",\n \"roomBook.lineItems.wizard.subheaders.adhoc.stepProductGroupHint\": \"Wenn der Individualwunsch technisch zu einer bestehenden Produktgruppe gehört, wählen Sie diese bitte aus. Andernfalls können Sie diesen Schritt einfach überspringen.\",\n \"roomBook.lineItems.wizard.subheaders.adhoc.stepAdhoc\": \"Bitte beschreiben Sie den Individualwunsch\",\n \"roomBook.lineItems.wizard.subheaders.adhoc.stepAdhocHint\": \"Bitte geben Sie die Beschreibung und die weiteren Parameter für den Individualwunsch ein\",\n \"roomBook.lineItems.wizard.labels.modeSelection\": \"Wird eine Standardleistung ersetzt?\",\n \"roomBook.lineItems.wizard.labels.quantity\": \"Menge Kundenwunsch\",\n \"roomBook.lineItems.wizard.labels.defaultQuantity\": \"Menge laut Baubeschreibung\",\n \"roomBook.lineItems.wizard.messages.productSelection.header\": \"Es wurde kein Produkt ausgewählt!\",\n \"roomBook.lineItems.wizard.messages.productSelection.body\": \"Bitte wählen Sie ein Produkt aus, um fortzufahren.\",\n \"roomBook.lineItems.wizard.messages.modeSelection.header\": \"Es wurde keine Option ausgewählt!\",\n \"roomBook.lineItems.wizard.messages.modeSelection.body\": \"Bitte wählen Sie eine Option aus, um fortzufahren.\",\n \"roomBook.lineItems.wizard.messages.defaultProductSelection.header\": \"Es wurde kein Standardprodukt ausgewählt!\",\n \"roomBook.lineItems.wizard.messages.defaultProductSelection.body\": \"Bitte wählen Sie ein Standardprodukt aus, um fortzufahren.\",\n \"roomBook.lineItems.wizard.messages.quantity.header\": \"Es wurde keine zulässige Menge angegeben!\",\n \"roomBook.lineItems.wizard.messages.quantity.body\": \"Bitte geben Sie eine positive Menge an, um fortzufahren.\",\n \"roomBook.lineItems.wizard.buttons.cancelation\": \"Abbrechen\",\n \"roomBook.lineItems.wizard.buttons.next\": \"Weiter\",\n \"roomBook.lineItems.wizard.buttons.done\": \"Fertig\",\n \"roomBook.lineItems.wizard.buttons.positive\": \"Ja\",\n \"roomBook.lineItems.wizard.buttons.negative\": \"Nein\",\n \"roomBook.lineItems.wizard.buttons.skipProductGroup\": \"Überspringen\",\n \"roomBook.lineItems.filterByTrade\": \"Nach Gewerk filtern\",\n \"roomBook.carts.status.pending\": \"entschieden\",\n \"roomBook.carts.actions.hideDetails\": \"Details ausblenden\",\n \"roomBook.carts.actions.showDetails\": \"Details anzeigen\",\n \"roomBook.carts.actions.beginActivity\": \"Vorgang starten\",\n \"roomBook.carts.actions.export.label\": \"Herunterladen als...\",\n \"roomBook.carts.actions.removeDialog.title\": \"Freigabe löschen\",\n \"roomBook.carts.actions.removeDialog.message\": \"Positionen dieser Freigabe werden auf den Status \\\"offen\\\" zurückgesetzt. Wollen Sie die Freigabe wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.carts.actions.undeletableDialog.title\": \"Vorgang nicht löschbar\",\n \"roomBook.carts.actions.undeletableDialog.message\": \"Der Vorgang wurde bereits begonnen und kann nicht mehr gelöscht werden.\",\n \"roomBook.carts.tableHeaders.costs.net\": \"Mehrkosten NU (netto)\",\n \"roomBook.carts.tableHeaders.costs.gross\": \"Mehrkosten NU (brutto)\",\n \"roomBook.carts.tableHeaders.price.net\": \"Mehrkosten EW (netto)\",\n \"roomBook.carts.tableHeaders.price.gross\": \"Mehrkosten EW (brutto)\",\n \"roomBook.actions.goto\": \"Zum Raumbuch\",\n \"roomBook.actions.goToActivity\": \"Zum Vorgang\",\n \"roomBook.actions.add\": \"Neues Raumbuch\",\n \"roomBook.actions.addEmptyBook\": \"Leeres Raumbuch anlegen\",\n \"roomBook.actions.newCart\": \"Vorgang anlegen\",\n \"roomBook.actions.addCustomLineItem\": \"Individualwunsch anlegen\",\n \"roomBook.actions.addCustomProduct\": \"Wunschprodukt anlegen\",\n \"roomBook.actions.clearProductStatus\": \"Entscheidung offen\",\n \"roomBook.actions.chooseCart\": \"Produkt zu Vorgang hinzufügen:\",\n \"roomBook.actions.useTemplate\": \"Raumbuchvorlage verwenden:\",\n \"roomBook.actions.addTemplate\": \"Neue Raumbuchvorlage\",\n \"roomBook.actions.addPrimarySection\": \"Neuer Hauptabschnitt\",\n \"roomBook.actions.editPrimarySection\": \"Hauptabschnitt bearbeiten\",\n \"roomBook.actions.addSecondarySection\": \"Neuer Teilabschnitt\",\n \"roomBook.actions.editSecondarySection\": \"Teilabschnitt bearbeiten\",\n \"roomBook.actions.addLineItem\": \"Neue Position\",\n \"roomBook.actions.addCostItem\": \"Neue Kostenposition\",\n \"roomBook.actions.editLineItem\": \"Position bearbeiten\",\n \"roomBook.actions.deleteLineItem\": \"Position löschen\",\n \"roomBook.actions.sortOrder\": \"Sortierung\",\n \"roomBook.actions.moveToOtherSection\": \"\\\"{title}\\\" in folgenden Abschnitt verschieben:\",\n \"roomBook.actions.collapseSection\": \"Zuklappen\",\n \"roomBook.actions.collapseAllConfirmedSection\": \"Alle offenen Positionen anzeigen\",\n \"roomBook.actions.expandSection\": \"Aufklappen\",\n \"roomBook.actions.showDeprecated\": \"Ausgemusterte Produkte anzeigen\",\n \"roomBook.actions.hideDeprecated\": \"Ausgemusterte Produkte ausblenden\",\n \"roomBook.actions.advancedCreatorDialog.selectSource\": \"Bitte wählen Sie die Vorlage oder Quell-Raumbücher aus:\",\n \"roomBook.actions.advancedCreatorDialog.hint\": \"Wenn Sie mehrere Raumbücher auswählen, werden die Teilabschnitte aus allen Raumbüchern in das neue Raumbuch kopiert. Hauptabschnitte werden zusammengefasst, sofern möglich.\",\n \"roomBook.actions.purgeDialog.title\": \"Raumbuch löschen\",\n \"roomBook.actions.purgeDialog.message\": \"Wollen Sie das Raumbuch wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.actions.archiveDialog.title\": \"Raumbuch löschen\",\n \"roomBook.actions.archiveDialog.message\": \"Wollen Sie das Raumbuch wirklich löschen? Diese Aktion kann nur durch den Kundensupport rückgängig gemacht werden.\",\n \"roomBook.actions.resetDialog.title\": \"Raumbuch zurücksetzen\",\n \"roomBook.actions.resetDialog.message\": \"Wollen Sie das Raumbuch wirklich zurücksetzen? Es werden alle Positionen zurück in die Standardauswahl versetzt. Vorgänge werden gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.actions.resetDialog.htmlMessage\": \"

    Das Raumbuch wird in seinen Ausgangszustand versetzt:

    • Zusätzlichen Positionen werden gelöscht
    • Produktauswahl und Mengen werden übernommen
    • Vorgänge werden gelöscht
    • Erwerberauswahlen werden gelöscht

    !! Diese Aktion kann nicht rückgängig gemacht werden !!

    \",\n \"roomBook.actions.removeContent.title\": \"Auswahl löschen\",\n \"roomBook.actions.removeContent.message\": \"Wollen Sie die ausgewählten Abschnitte / Positionen wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.actions.deleteWithDerived.section.title\": \"Abschnitt löschen\",\n \"roomBook.actions.deleteWithDerived.section.summary\": \"Entfernen Sie diesen Abschnitt aus dem Raumbuch\",\n \"roomBook.actions.deleteWithDerived.section.derived_info\": \"{\\n derived_count, plural,\\n one{Beim Löschen wird auch in einem abgeleiteten Raumbuch der entsprechende Abschnitt mit gelöscht:}\\n other{Beim Löschen wird auch in # abgeleiteten Raumbüchern der entsprechende Abschnitt mit gelöscht:}\\n}\\n\",\n \"roomBook.actions.deleteWithDerived.item.title\": \"Position löschen\",\n \"roomBook.actions.deleteWithDerived.item.summary\": \"Entfernen Sie diese Position aus dem Raumbuch\",\n \"roomBook.actions.deleteWithDerived.item.derived_info\": \"{\\n derived_count, plural,\\n =0{Es sind keine Positionen in abgeleiteten Raumbüchern vorhanden.}\\n one{Beim Löschen wird auch in einem abgeleiteten Raumbuch die entsprechende Position mit gelöscht:}\\n other{Beim Löschen wird auch in # abgeleiteten Raumbüchern die entsprechende Position mit gelöscht:}\\n}\\n\",\n \"roomBook.actions.undeletableDialog.title\": \"Raumbuch nicht löschbar\",\n \"roomBook.actions.undeletableDialog.message\": \"Vorgänge wurden für dieses Raumbuch bereits begonnen. Das Raumbuch kann nicht mehr gelöscht werden.\",\n \"roomBook.actions.undeletableTemplateDialog.title\": \"Raumbuchvorlage nicht löschbar\",\n \"roomBook.actions.undeletableTemplateDialog.message\": \"Es wurden bereits Raumbücher aus dieser Vorlage erstellt. Diese Vorlage kann nicht mehr gelöscht werden.\",\n \"roomBook.actions.export.label\": \"Herunterladen als...\",\n \"roomBook.actions.discardBuyerSelectionDialog.title\": \"Erwerberauswahl verwerfen\",\n \"roomBook.actions.discardBuyerSelectionDialog.message\": \"Wollen Sie die Erwerberauswahl wirklich verwerfen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.actions.assignmentDialog.title\": \"Vorgangszuordnung\",\n \"roomBook.actions.assignmentDialog.attributes.cart_id.label\": \"Vorgang\",\n \"roomBook.actions.assignmentDialog.attributes.trades.label\": \"Gewerke\",\n \"roomBook.actions.addCostItemWarning.title\": \"Fehler\",\n \"roomBook.actions.addCostItemWarning.body\": \"Bitte erstellen Sie eine neue Kostenposition.\",\n \"roomBook.attachments.title\": \"Dokumente\",\n \"roomBook.projectQuestions.title\": \"Projekt FAQ\",\n \"roomBook.projectQuestions.description\": \"Hier können Sie häufig gestellte Fragen zu Ihrem Projekt hinterlegen. Den Erwerbern stehen diese im Erwerberportal zur Verfügung.\",\n \"roomBook.projectQuestions.add\": \"Frage hinzufügen\",\n \"roomBook.projectQuestions.dialog.createTitle\": \"Frage anlegen\",\n \"roomBook.projectQuestions.dialog.editTitle\": \"Frage bearbeiten\",\n \"roomBook.projectQuestions.dialog.question\": \"Frage\",\n \"roomBook.projectQuestions.dialog.answer\": \"Antwort\",\n \"roomBook.projectQuestions.dialog.projectQuestionGroupId\": \"Fragengruppe\",\n \"roomBook.projectQuestions.dialog.publishedBp\": \"Veröffentlicht im Erwerberportal\",\n \"roomBook.projectQuestions.dialog.publishedMp\": \"Veröffentlicht im Marketingportal\",\n \"roomBook.projectQuestions.dialog.position\": \"Position\",\n \"roomBook.projectQuestions.removeConfirmation.title\": \"Frage löschen\",\n \"roomBook.projectQuestions.removeConfirmation.message\": \"Wollen Sie die Frage wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.projectQuestionGroups.dialog.createTitle\": \"Fragegruppe anlegen\",\n \"roomBook.projectQuestionGroups.dialog.editTitle\": \"Fragengruppe bearbeiten\",\n \"roomBook.projectQuestionGroups.dialog.name\": \"Name\",\n \"roomBook.projectQuestionGroups.dialog.title\": \"Anzeigename (Konfigurator)\",\n \"roomBook.projectQuestionGroups.dialog.position\": \"Position\",\n \"roomBook.projectQuestionGroups.dialog.summary\": \"Zusammenfassung\",\n \"roomBook.projectQuestionGroups.removeConfirmation.title\": \"Fragegruppe löschen\",\n \"roomBook.projectQuestionGroups.removeConfirmation.message\": \"Wollen Sie die Fragegruppe wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.upgradeBundles.title\": \"Upgrade Pakete\",\n \"roomBook.upgradeBundles.description\": \"Upgrade Pakete stellen größere Erweiterungen/Umbauten an der Wohnung dar, umfassen mehrere Position und können Wohnungsabhängig zusammengestellt werden.\",\n \"roomBook.upgradeBundles.notFound\": \"Es liegen keine Upgrade Pakete zu diesem Projekt vor\",\n \"roomBook.upgradeBundles.notFoundInUnit\": \"Es liegen keine Upgrade Pakete zu dieser Wohneinheit vor\",\n \"roomBook.upgradeBundles.notFoundInGroup\": \"Es liegen keine Upgrade Pakete zu dieser Gruppe vor\",\n \"roomBook.upgradeBundles.noImage\": \"Kein Bild\",\n \"roomBook.upgradeBundles.add\": \"Upgrade Paket anlegen\",\n \"roomBook.upgradeBundles.dialog.createTitle\": \"Upgrade Paket anlegen\",\n \"roomBook.upgradeBundles.dialog.editTitle\": \"Upgrade Paket bearbeiten\",\n \"roomBook.upgradeBundles.dialog.name\": \"Name\",\n \"roomBook.upgradeBundles.dialog.titleField\": \"Anzeigename (Konfigurator)\",\n \"roomBook.upgradeBundles.dialog.description\": \"Beschreibung\",\n \"roomBook.upgradeBundles.dialog.image\": \"Bild\",\n \"roomBook.upgradeBundles.dialog.upgrade_bundle_group_id\": \"Gruppe (z.B. Dachgeschoss, Keller)\",\n \"roomBook.upgradeBundles.dialog.defaultDummy\": \"Standardplatzhalter\",\n \"roomBook.upgradeBundles.dialog.summary\": \"Zusammenfassung\",\n \"roomBook.upgradeBundles.dialog.portalOffer\": \"Verfügbar im Online Konfigurator\",\n \"roomBook.upgradeBundles.dialog.configurationLink\": \"Konfigurations Verlinkung\",\n \"roomBook.upgradeBundles.dialog.upgradeCode\": \"Upgrade Code\",\n \"roomBook.upgradeBundles.dialog.externalId\": \"Externe ID\",\n \"roomBook.upgradeBundles.removeConfirmation.title\": \"Upgrade Paket löschen\",\n \"roomBook.upgradeBundles.removeConfirmation.message\": \"Wollen Sie das Upgrade Paket wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.upgradeBundles.guard.conflict\": \"Achtung, der Erwerber hat ein anderes Upgradepaket gewählt!\",\n \"roomBook.upgradeBundles.guard.preference\": \"Der Erwerber wünscht dieses Upgradepaket!\",\n \"roomBook.upgreadeBundleGroups.title\": \"Die Liste der Upgradesgruppe\",\n \"roomBook.upgreadeBundleGroups.notFound\": \"Es liegen keine Upgrade Pakete Gruppe zu diesem Projekt vor\",\n \"roomBook.upgreadeBundleGroups.add\": \"Gruppe anlegen\",\n \"roomBook.upgreadeBundleGroups.error.title\": \"Error\",\n \"roomBook.upgreadeBundleGroups.error.body\": \"Upgrade Pakete Gruppe nicht angelegt\",\n \"roomBook.upgreadeBundleGroups.dialog.createTitle\": \"Upgrade Paket Gruppe anlegen\",\n \"roomBook.upgreadeBundleGroups.dialog.editTitle\": \"Upgrade Paket Gruppe bearbeiten\",\n \"roomBook.upgreadeBundleGroups.dialog.name\": \"Name\",\n \"roomBook.upgreadeBundleGroups.dialog.titleField\": \"Anzeigename (Konfigurator)\",\n \"roomBook.upgreadeBundleGroups.dialog.mode\": \"Modus\",\n \"roomBook.upgreadeBundleGroups.dialog.singleSelect\": \"Einfachauswahl\",\n \"roomBook.upgreadeBundleGroups.dialog.multiSelect\": \"Mehrfachauswahl\",\n \"roomBook.upgreadeBundleGroups.dialog.actsAsProductGroup\": \"Verhalten wie Produktauswahl\",\n \"roomBook.upgreadeBundleGroups.dialog.actsAsPreselection\": \"Upgrade Pakete dienen der Vorauswahl von Produkttypen im Konfigurator\",\n \"roomBook.upgreadeBundleGroups.dialog.dynamicCalculation\": \"Dynamische Berechnung (Beta)\",\n \"roomBook.upgreadeBundleGroups.dialog.configurationLink\": \"Konfigurations Verlinkung\",\n \"roomBook.upgreadeBundleGroups.dialog.upgradeCode\": \"Upgrade Code\",\n \"roomBook.upgreadeBundleGroups.dialog.externalId\": \"Externe ID\",\n \"roomBook.roomBookUpgradeBundles.dialog.title\": \"Upgrades\",\n \"roomBook.roomBookUpgradeBundles.dialog.adjustPriceTitle\": \"Basispreis anpassen\",\n \"roomBook.roomBookUpgradeBundles.dialog.subtitle\": \"Die Liste der dem Raumbuch zugeordneten Upgrades\",\n \"roomBook.roomBookUpgradeBundles.dialog.summary\": \"Die Basispreise der Upgrades werden aus den zugewiesenen Positionen und der dort ausgewählten Standardauswahl errechnet. Der Gesamtpreis kann aber durch zusätzliche Auswahl der Erwerbers höher liegen. Der Basispreis kann angepasst werden. Der Aufschlag wird proportional auf die Teilleistungen verteilt.\",\n \"roomBook.roomBookUpgradeBundles.dialog.table.name\": \"Name\",\n \"roomBook.roomBookUpgradeBundles.dialog.table.basePriceCalculated\": \"Kalkulierter Basispreis\",\n \"roomBook.roomBookUpgradeBundles.dialog.table.basePriceSurcharge\": \"Aufpreis Basispreis\",\n \"roomBook.roomBookUpgradeBundles.dialog.table.basePriceFinal\": \"Finaler Basispreis\",\n \"roomBook.roomBookUpgradeBundles.dialog.table.total\": \"Aktueller Gesamtpreis\",\n \"roomBook.roomBookUpgradeBundles.dialog.table.status\": \"Status\",\n \"roomBook.roomBookUpgradeBundles.dialog.status.activated\": \"aktiviert\",\n \"roomBook.roomBookUpgradeBundles.dialog.status.deactivated\": \"deaktiviert\",\n \"roomBook.unitFeatureGroups.title\": \"Merkmale\",\n \"roomBook.unitFeatureGroups.notFound\": \"Es liegen keine Merkmale zu diesem Projekt vor\",\n \"roomBook.unitFeatureGroups.tab\": \"Merkmale\",\n \"roomBook.unitFeatureGroups.filter\": \"Wohneinheit\",\n \"roomBook.unitFeatureGroups.empty\": \"Es gibt keine Merkmale\",\n \"roomBook.unitFeatureGroups.enableMessage\": \"Filter entfernen, um die Erstellung zu ermöglichen\",\n \"roomBook.unitFeatureGroups.removeConfirmation.title\": \"Merkmalgruppe löschen\",\n \"roomBook.unitFeatureGroups.removeConfirmation.message\": \"Wollen Sie die Merkmalgruppe wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.unitFeatureGroups.tableHeader.unit\": \"Wohneinheit\",\n \"roomBook.unitFeatureGroups.tableHeader.title\": \"Titel\",\n \"roomBook.unitFeatureGroups.tableHeader.name\": \"Name\",\n \"roomBook.unitFeatureGroups.tableHeader.action\": \"Aktion\",\n \"roomBook.unitFeatureGroups.dialog.title\": \"Merkmalegruppe\",\n \"roomBook.unitFeatureGroups.dialog.unit\": \"Wohneinheit\",\n \"roomBook.unitFeatureGroups.dialog.type\": \"Merkmalegruppen\",\n \"roomBook.unitFeatureGroups.success.title\": \"Gelöscht\",\n \"roomBook.unitFeatureGroups.success.message\": \"Merkmalgruppe erfolgreich gelöscht\",\n \"roomBook.unitFeatureGroups.types.title\": \"Merkmale\",\n \"roomBook.unitFeatureGroups.types.tab\": \"Merkmale\",\n \"roomBook.unitFeatureGroups.types.filter\": \"Merkmale\",\n \"roomBook.unitFeatureGroups.types.importDefaults.tooltip\": \"Merkmale importieren\",\n \"roomBook.unitFeatureGroups.types.importDefaults.confirmationDialog.title\": \"Merkmale importieren\",\n \"roomBook.unitFeatureGroups.types.importDefaults.confirmationDialog.message\": \"Wollen Sie die Merkmale wirklich importieren?\",\n \"roomBook.unitFeatureGroups.types.importDefaults.success.title\": \"Importiert\",\n \"roomBook.unitFeatureGroups.types.importDefaults.success.message\": \"Merkmale erfolgreich importiert\",\n \"roomBook.unitFeatureGroups.types.removeConfirmation.title\": \"Merkmale löschen\",\n \"roomBook.unitFeatureGroups.types.removeConfirmation.message\": \"Wollen Sie die Merkmale wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.unitFeatureGroups.types.dialog.createTitle\": \"Merkmalgruppe anlegen\",\n \"roomBook.unitFeatureGroups.types.dialog.editTitle\": \"Merkmalgruppe bearbeiten\",\n \"roomBook.unitFeatureGroups.types.dialog.titleField\": \"Anzeigename (Konfigurator)\",\n \"roomBook.unitFeatureGroups.types.dialog.name\": \"Name\",\n \"roomBook.unitFeatureGroups.types.dialog.description\": \"Beschreibung\",\n \"roomBook.unitFeatureGroups.types.dialog.action\": \"Aktion\",\n \"roomBook.unitFeatures.add\": \"Hinzufügen\",\n \"roomBook.unitFeatures.notFoundInGroup\": \"Es liegen keine Merkmale zu dieser Gruppe vor\",\n \"roomBook.unitFeatures.dialog.createTitle\": \"Merkmal anlegen\",\n \"roomBook.unitFeatures.dialog.editTitle\": \"Merkmal bearbeiten\",\n \"roomBook.unitFeatures.dialog.titleField\": \"Anzeigename (Konfigurator)\",\n \"roomBook.unitFeatures.dialog.name\": \"Name\",\n \"roomBook.unitFeatures.dialog.description\": \"Beschreibung\",\n \"roomBook.unitFeatures.dialog.icon\": \"Icon\",\n \"roomBook.unitFeatures.dialog.marketingFeature\": \"Vertriebsmerkmal\",\n \"roomBook.unitFeatures.dialog.marketingLabel\": \"Anzeigename (Vertriebskonfigurator)\",\n \"roomBook.unitFeatures.dialog.marketingDescription\": \"Beschreibung (Vertriebskonfigurator)\",\n \"roomBook.unitFeatures.dialog.unitFeatureGroup\": \"Gruppe\",\n \"roomBook.unitFeatures.dialog.action\": \"Aktion\",\n \"roomBook.unitFeatures.tab.title\": \"Merkmale\",\n \"roomBook.unitFeatures.tab.uploadTooltip\": \"Merkmale hochladen\",\n \"roomBook.unitVariables.title\": \"Mengen\",\n \"roomBook.unitVariables.notFound\": \"Es liegen keine Unit variable types zu diesem Projekt vor\",\n \"roomBook.unitVariables.tab\": \"Mengen\",\n \"roomBook.unitVariables.filter\": \"Wohneinheit\",\n \"roomBook.unitVariables.empty\": \"Es gibt keine Mengen\",\n \"roomBook.unitVariables.enableMessage\": \"Filter entfernen, um die Erstellung zu ermöglichen\",\n \"roomBook.unitVariables.removeConfirmation.title\": \"Menge löschen\",\n \"roomBook.unitVariables.removeConfirmation.message\": \"Wollen Sie die Menge wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.unitVariables.tableHeader.unit\": \"Wohneinheit\",\n \"roomBook.unitVariables.tableHeader.identifier\": \"Mengenvariable\",\n \"roomBook.unitVariables.tableHeader.name\": \"Name\",\n \"roomBook.unitVariables.tableHeader.value\": \"Wert\",\n \"roomBook.unitVariables.tableHeader.action\": \"Aktion\",\n \"roomBook.unitVariables.tableHeader.active\": \"Aktiv\",\n \"roomBook.unitVariables.dialog.title\": \"Menge\",\n \"roomBook.unitVariables.dialog.unit\": \"Wohneinheit\",\n \"roomBook.unitVariables.dialog.type\": \"Mengevariable\",\n \"roomBook.unitVariables.dialog.value\": \"Wert\",\n \"roomBook.unitVariables.dialog.default\": \"Default\",\n \"roomBook.unitVariables.dialog.global\": \"Global\",\n \"roomBook.unitVariables.success.title\": \"Gelöscht\",\n \"roomBook.unitVariables.success.message\": \"Menge erfolgreich gelöscht\",\n \"roomBook.unitVariables.types.title\": \"Mengenvariablen\",\n \"roomBook.unitVariables.types.tab\": \"Mengenvariablen\",\n \"roomBook.unitVariables.types.filter\": \"Mengenvariable\",\n \"roomBook.unitVariables.types.importDefaults.tooltip\": \"Standardwerte importieren\",\n \"roomBook.unitVariables.types.importDefaults.confirmationDialog.title\": \"Mengenvariablen importieren\",\n \"roomBook.unitVariables.types.importDefaults.confirmationDialog.message\": \"Wollen Sie die standard Mengenvariablen wirklich import. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.unitVariables.types.importDefaults.success.title\": \"Importiert\",\n \"roomBook.unitVariables.types.importDefaults.success.message\": \"Mengenvariablen erfolgreich importiert\",\n \"roomBook.unitVariables.types.removeConfirmation.title\": \"Mengenvariable löschen\",\n \"roomBook.unitVariables.types.removeConfirmation.message\": \"Wollen Sie die Mengenvariable wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.unitVariables.types.dialog.title\": \"Mengenvariable\",\n \"roomBook.unitVariables.types.dialog.identifier\": \"Mengenvariable\",\n \"roomBook.unitVariables.types.dialog.name\": \"Name\",\n \"roomBook.unitVariables.types.dialog.description\": \"Beschreibung\",\n \"roomBook.unitVariables.types.dialog.action\": \"Aktion\",\n \"roomBook.configurationGroups.success.title\": \"Gelöscht\",\n \"roomBook.configurationGroups.success.message\": \"Positionsgruppe erfolgreich gelöscht\",\n \"roomBook.configurationGroups.title\": \"Positionsgruppen\",\n \"roomBook.configurationGroups.tab\": \"Positionsgruppen\",\n \"roomBook.configurationGroups.filter\": \"Positionsgruppen\",\n \"roomBook.configurationGroups.empty\": \"Es gibt keine Positionsgruppen\",\n \"roomBook.configurationGroups.enableMessage\": \"Filter entfernen, um die Erstellung zu ermöglichen\",\n \"roomBook.configurationGroups.notFound\": \"Es liegen keine Positionsgruppen zu diesem Projekt vor\",\n \"roomBook.configurationGroups.removeConfirmation.title\": \"Positionsgruppe löschen\",\n \"roomBook.configurationGroups.removeConfirmation.message\": \"Wollen Sie die Positionsgruppe wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"roomBook.configurationGroups.tableHeader.identifier\": \"Positionsgruppe\",\n \"roomBook.configurationGroups.tableHeader.name\": \"Name\",\n \"roomBook.configurationGroups.tableHeader.action\": \"Aktion\",\n \"roomBook.configurationGroups.dialog.title\": \"Anzeigename (Konfigurator)\",\n \"roomBook.configurationGroups.dialog.summary\": \"Zusammenfassung\",\n \"roomBook.configurationGroups.dialog.name\": \"Name\",\n \"roomBook.configurationGroups.dialog.description\": \"Beschreibung\",\n \"roomBook.configurationGroups.dialog.action\": \"Aktion\",\n \"roomBook.configurationGroups.types.title\": \"Anzeigename (Konfigurator)\",\n \"roomBook.configurationGroups.types.summary\": \"Zusammenfassung\",\n \"roomBook.configurationGroups.types.name\": \"Name\",\n \"roomBook.configurationGroups.types.description\": \"Beschreibung\",\n \"roomBook.configurationGroups.types.action\": \"Aktion\",\n \"roomBook.configurationGroups.types.tab\": \"Konfigurationsgruppen\",\n \"roomBook.unitProspect.new\": \"Neu\",\n \"roomBook.unitProspect.active\": \"Aktiv\",\n \"roomBook.unitProspect.lost\": \"Verloren\",\n \"roomBook.unitProspect.won\": \"Gewonnen\",\n \"roomBook.unitProspect.prospect\": \"Interessenten\",\n \"roomBook.unitProspect.noProspectsFound\": \"Keine Interessenten\",\n \"roomBook.unitProspect.actions.download.tooltip\": \"Als Excel herunterladen\",\n \"roomBook.unitProspect.attributes.redirect_to_messages\": \"Nachricht\",\n \"roomBook.unitProspect.attributes.redirect_to_configuration_url\": \"Ausstattung\",\n \"roomBook.unitProspect.attributes.first_contact\": \"Erstkontakt\",\n \"roomBook.unitProspect.dialog.title\": \"Mengenvariable\",\n \"roomBook.unitProspect.dialog.prospectEdit\": \"Interesenten bearbeiten\",\n \"roomBook.unitProspect.dialog.email\": \"Email\",\n \"roomBook.unitProspect.dialog.editProspect\": \"Interesenten bearbeiten\",\n \"roomBook.unitProspect.dialog.notes\": \"Notizen\",\n \"roomBook.unitProspect.dialog.personalData\": \"Personliche Daten\",\n \"roomBook.unitProspect.dialog.firstName\": \"Vorname\",\n \"roomBook.unitProspect.dialog.lastName\": \"Nachname\",\n \"roomBook.unitProspect.dialog.salutation\": \"Anrede\",\n \"roomBook.unitProspect.dialog.company\": \"Firma\",\n \"roomBook.unitProspect.dialog.phone\": \"Telefon\",\n \"roomBook.unitProspect.dialog.mobileNumber\": \"Mobilnummer\",\n \"roomBook.unitProspect.dialog.street\": \"Straße\",\n \"roomBook.unitProspect.dialog.houseNumber\": \"Hausnummer\",\n \"roomBook.unitProspect.dialog.postalCode\": \"Postleitzahl\",\n \"roomBook.unitProspect.dialog.location\": \"Ort\",\n \"roomBook.unitProspect.dialog.new_status\": \"Neuer Status\",\n \"roomBook.unitProspect.dialog.comment\": \"Notizen\",\n \"roomBook.unitProspect.dialog.add_comment\": \"Notiz hinzufügen\",\n \"roomBook.unitProspect.dialog.update_status_title\": \"Status ändern\",\n \"roomBook.unitProspect.dialog.change_status\": \"Ändern\",\n \"roomBook.unitProspect.dialog.requests\": \"Anfragen\",\n \"roomBook.unitProspect.dialog.emptyRequests\": \"Es gibt noch keine Anfragen.\",\n \"roomBook.unitProspect.moveDialog.won.title\": \"Wohneinheit verkauft\",\n \"roomBook.unitProspect.moveDialog.won.label\": \"Notizen\",\n \"roomBook.unitProspect.moveDialog.lost.title\": \"Prozess abgebrochen\",\n \"roomBook.unitProspect.moveDialog.lost.label\": \"Notizen\",\n \"roomBook.unitProspect.filter.accountManager\": \"Account Manager\",\n \"roomBook.unitProspect.filter.section\": \"Bauabschnitt\",\n \"roomBook.unitProspect.filter.unit\": \"Wohneinheit\",\n \"roomBook.unitProspect.filter.byText\": \"Schnellsuche...\",\n \"roomBook.derivedRoombooks.noRoombookTemplates\": \"Es gibt keine abgeleiteten Raumbuchvorlagen\",\n \"roomBook.derivedRoombooks.noRoombookUnits\": \"Diese Vorlage wurde noch in keinen Wohneinheiten genutzt\",\n \"roomBook.derivedRoombooks.tooltip\": \"Abgeleitete Raumbücher\",\n \"roomBook.derivedRoombooks.dialog.title\": \"Abgeleitete Raumbücher\",\n \"roomBook.derivedRoombooks.dialog.templates\": \"Raumbuchvorlagen\",\n \"roomBook.derivedRoombooks.dialog.units\": \"Wohneinheiten\",\n \"roomBook.copyTemplates.dialog.title\": \"Raumbuchvorlage importieren\",\n \"roomBook.copyTemplates.dialog.sourceProject\": \"Quellprojekt\",\n \"roomBook.copyTemplates.dialog.templates\": \"Raumbuchvorlagen\",\n \"buyer.title.zero\": \"Kein Erwerber\",\n \"buyer.title.one\": \"Erwerber\",\n \"buyer.title.other\": \"Erwerber\",\n \"buyer.attributes.firstName.label\": \"Vorname\",\n \"buyer.attributes.lastName.label\": \"Nachname\",\n \"buyer.attributes.displayName.label\": \"Anzeigename\",\n \"buyer.attributes.company.label\": \"Firma\",\n \"buyer.attributes.email.label\": \"E-Mail\",\n \"buyer.attributes.email.error\": \"Bitte geben Sie eine valide Email-Adresse an.\",\n \"buyer.attributes.phone.label\": \"Telefon\",\n \"buyer.attributes.mobile.label\": \"Mobilnummer\",\n \"buyer.attributes.mobile.error\": \"Bitte Nummer mit Ländervorwahl eingeben, z.B. +491560000000\",\n \"buyer.attributes.address_street.label\": \"Straße\",\n \"buyer.attributes.address_number.label\": \"Hausnummer\",\n \"buyer.attributes.address_postcode.label\": \"Postleitzahl\",\n \"buyer.attributes.address_town.label\": \"Ort\",\n \"buyer.attributes.salutation.label\": \"Anrede\",\n \"buyer.attributes.title.label\": \"Titel\",\n \"buyer.options.all\": \"Alle Erwerber\",\n \"buyer.options.not_invited\": \"Nicht eingeladen\",\n \"buyer.options.pending_invitation\": \"Einladung noch nicht angenommen\",\n \"buyer.options.accepted_invitation\": \"Einladung angenommen\",\n \"buyer.section_options.all\": \"Alle Bauabschnitte\",\n \"buyer.message.noneAssigned\": \"Es liegt noch kein Erwerber vor.\",\n \"buyer.upload.title\": \"Erwerber hochladen\",\n \"buyer.upload.upload_error\": \"Erwerber konnten nicht hochgeladen werden\",\n \"buyer.upload.select_file\": \"Wählen Sie bitte eine Datei aus\",\n \"buyer.actions.new\": \"Neuer Erwerber\",\n \"buyer.actions.edit\": \"Erwerber bearbeiten\",\n \"buyer.actions.download\": \"Erwerber herunterladen\",\n \"buyer.actions.upload\": \"Erwerber hochladen\",\n \"buyer.actions.removeDialog.title\": \"Erwerber löschen\",\n \"buyer.actions.removeDialog.message\": \"Wollen Sie den Erwerber wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"buyer.actions.undeletableDialog.title\": \"Erwerber nicht löschbar\",\n \"buyer.actions.undeletableDialog.message\": \"Der Erwerber ist bereits einer Wohneinheit zugeordnet und kann nicht gelöscht werden.\",\n \"buyer.actions.invitationDialog.title\": \"Einladung Online-Konfigurator\",\n \"buyer.actions.invitationDialog.message\": \"Laden Sie die Erwerber zum Online-Konfigurator ein. Die Einladung wird an die angegebene E-Mail Adresse gesendet.\",\n \"buyer.actions.invitationDialog.send\": \"Einladung senden\",\n \"buyer.actions.invitationDialog.resend\": \"Erneut senden\",\n \"buyer.actions.invitationDialog.not_found\": \"Noch keine Einladung gesendet.\",\n \"buyer.actions.invitationDialog.invitation_date_info.invited_days_ago\": \"Wurde am {invited_days_ago} eingeladen.\",\n \"buyer.actions.invitationDialog.invitation_date_info.created_at\": \"Eingeladen am {created_at}, erinnert am {reminded_at}.\",\n \"buyer.actions.invitationDialog.reminder.title\": \"Angaben im Raumbuch überprüfen\",\n \"buyer.actions.invitationDialog.reminder.body\": \"Vergewissern Sie sich bitte vor dem Absenden der Einladung, dass u.a. die folgenden Angaben im Raumbuch korrekt sind:\",\n \"buyer.actions.invitationDialog.reminder.list.quantities\": \"Mengen- und Flächenangaben\",\n \"buyer.actions.invitationDialog.reminder.list.sorting\": \"Abschnitte und Positionen\",\n \"buyer.actions.invitationDialog.reminder.list.default\": \"hinterlegte Standardprodukte\",\n \"buyer.actions.invitationDialog.error.title\": \"Es konnte keine Einladung gesendet werden\",\n \"buyer.actions.invitationDialog.error.message\": \"Möglicherweise ist diesem Erwerber keine Wohneinheit zugewiesen oder Sie verwenden eine E-Mail Adresse, die bereits einem Systembenutzer zugewiesen ist.\",\n \"projectStoreys.dialog.title\": \"Stockwerk\",\n \"projectStoreys.dialog.titlePlural\": \"Stockwerke\",\n \"projectStoreys.dialog.name\": \"Name\",\n \"projectStoreys.dialog.shortName\": \"Kurzname\",\n \"projectStoreys.actions.new\": \"Neues Stockwerk\",\n \"projectStoreys.actions.edit\": \"Stockwerk bearbeiten\",\n \"projectStoreys.confirmation.title\": \"Stockwerk löschen\",\n \"projectStoreys.confirmation.body\": \"Wollen Sie den Stockwerk wirklich löschen. Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"projectStoreys.emptyList\": \"Noch keine Stockwerke vorhanden\",\n \"contractor.title.one\": \"Nachunternehmen\",\n \"contractor.title.other\": \"Nachunternehmen\",\n \"contractor.title.description\": \"Hier können Sie die Nachunternehmer für dieses Projekt nominieren. Diese werden bei Vorgängen automatisch vorselektiert.\",\n \"contractor.assignmentRule.removeConfirmation.title\": \"Removing Assignment Rule\",\n \"contractor.assignmentRule.removeConfirmation.message\": \"Do you really want to remove Assignment Rule?\",\n \"contractor.actions.new\": \"Neues Nachunternehmen\",\n \"contractor.actions.assign\": \"Nachunternehmen nominieren\",\n \"contractor.actions.edit\": \"Nachunternehmen bearbeiten\",\n \"contractor.actions.remove\": \"Nachunternehmen entfernen\",\n \"contractor.actions.suggestion\": \"Vorschlag erhalten\",\n \"contractor.actions.removeDialog.title\": \"Nachunternehmen löschen\",\n \"contractor.actions.removeDialog.message\": \"Wollen dieses Nachunternehmen wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"contractor.actions.undeletableDialog.title\": \"Nachunternehmen nicht löschbar\",\n \"contractor.actions.undeletableDialog.message\": \"Es wurden bereits Vorgänge für dieses Nachunternehmen gestartet. Das Nachunternehmen kann nicht gelöscht werden.\",\n \"contractor.message.noneAssigned\": \"Es wurden noch keine Nachunternehmen hinzugefügt.\",\n \"contractor.message.required\": \"Ein Nachunternehmen des Gewerks ist erforderlich!\",\n \"contractor.message.noneAvaiable\": \"Es wurden noch keine Nachunternehmen für dieses Gewerk hinterlegt!\",\n \"contractor.message.missing\": \"Es wurden noch nicht alle erforderlichen Nachunternehmen nominiert!\",\n \"contractor.message.noContractors\": \"Es wurden noch keine Nachunternehmen nominiert\",\n \"contractor.attributes.name.label\": \"Name\",\n \"contractor.attributes.trades.label\": \"Gewerke\",\n \"contractor.attributes.trades.all\": \"Alle\",\n \"contractor.attributes.trades.suggestion\": \"Erforderliche Gewerke\",\n \"contractor.attributes.contactPerson.label\": \"Kontaktperson\",\n \"contractor.attributes.email.label\": \"E-Mail\",\n \"contractor.attributes.email.error\": \"Bitte geben Sie eine valide Email-Adresse an.\",\n \"contractor.attributes.phone.label\": \"Telefon\",\n \"contractor.attributes.fax.label\": \"Fax\",\n \"contractor.attributes.address_street.label\": \"Straße\",\n \"contractor.attributes.address_number.label\": \"Hausnummer\",\n \"contractor.attributes.address_postcode.label\": \"Postleitzahl\",\n \"contractor.attributes.address_town.label\": \"Ort\",\n \"contractor.attributes.profit_margin.label\": \"Aufschlag (%)\",\n \"contractor.attributes.profit_margin.placeholder\": \"z.B. 15, überschreibt Aufschlag für die Gewerke\",\n \"contractor.attributes.profit_margin.labelLong\": \"Aufschlag Kostenverrechnung\",\n \"contractor.attributes.cost_accounting_mode.label\": \"Kostenverrechnung\",\n \"contractor.attributes.cost_accounting_mode.values.NET_ACCOUNTING.label\": \"Netto\",\n \"contractor.attributes.cost_accounting_mode.values.GROSS_ACCOUNTING.label\": \"Brutto\",\n \"contractor.attributes.external_id.label\": \"Externe ID\",\n \"contractor.attributes.external_id.placeholder\": \"z.B. 12345\",\n \"contractor.attributes.notes.label\": \"Notizen\",\n \"contractor.dialog.assign.project.header\": \"Nachunternehmen zum Bauprojekt hinzufügen\",\n \"contractor.inquiry.greeting\": \"Guten Tag {name}\",\n \"contractor.inquiry.title\": \"{count, plural, one {Preisanfrage} other {Preisanfragen}}\",\n \"contractor.inquiry.submit\": \"Angebot für {count} / {total} Preise erstellen\",\n \"contractor.inquiry.import\": \"Nachunternehmer Angebot Importieren\",\n \"contractor.inquiry.all_set_now_quit\": \"

    Vielen Dank für Ihre Eingabe.

    Die von Ihnen eingegebenen Preise für die Preisanfrage {activityDisplayName} wurden erfolgreich an {accountName} übermittelt.

    Sie können diese Seite nun verlassen.

    \",\n \"contractor.inquiry.prices_missing\": \"Es wurden noch nicht alle Preise ausgefüllt. Die Preise können nach der Einwertung nicht mehr geändert werden. Sind Sie sich sicher {n} von {total} Preise einzuwerten?\",\n \"contractor.inquiry.continue\": \"Preise weiter ausfüllen\",\n \"contractor.inquiry.force_submit\": \"Preise trotzdem Einwerten\",\n \"contractor.inquiry.demo_view\": \"

    Dies ist eine Vorschau, es können keine Angaben verändert werden.

    \",\n \"contractor.inquiry.already_submitted\": \"

    Die Preise wurden bereits abgesendet und können nicht mehr geändert werden.

    Sollten Sie dennoch eine Änderung vornehmen wollen, setzen Sie sich bitte mit {accountName} in Verbindung.

    \",\n \"contractor.inquiry.import_inquiry.quantity\": \"Menge\",\n \"contractor.inquiry.import_inquiry.position_number\": \"#\",\n \"contractor.inquiry.import_inquiry.sub_line_item_title\": \"Titel\",\n \"contractor.inquiry.import_inquiry.contractor\": \"Nachunternehmen\",\n \"contractor.inquiry.import_inquiry.calculation\": \"Kalkulation\",\n \"contractor.inquiry.import_inquiry.margin\": \"Aufschlag\",\n \"contractor.inquiry.import_inquiry.margin_overwrite_all\": \"Alle Aufschläge überschreiben\",\n \"contractor.inquiry.import_inquiry.net_purchase_price\": \"Netto EK\",\n \"contractor.inquiry.import_inquiry.gross_retail_price\": \"Brutto VK\",\n \"contractor.inquiry.import_inquiry.net_retail_price\": \"Netto VK\",\n \"contractor.inquiry.import_inquiry.gross_total_sum\": \"Brutto Gesamt\",\n \"contractor.inquiry.import_inquiry.net_total_sum\": \"Netto Gesamt\",\n \"contractor.inquiry.import_inquiry.summary\": \"Beschreibung\",\n \"contractor.inquiry.import_inquiry.info_calculation\": \"Der Brutto Preis errechnet sich so:

    Netto EK + Aufschlag in % + {tax}% MwSt. = Netto Gesamt * Menge = Brutto VK

    \",\n \"projectQuantities.title\": \"Mengen\",\n \"projectQuantities.productGroups\": \"Produktgruppe / Produkt\",\n \"projectQuantities.quantity\": \"Menge\",\n \"projectQuantities.noProductsFound\": \"Keine Produkte gefunden\",\n \"projectQuantities.filter.trade.all\": \"Alle gewerke\",\n \"projectQuantities.filter.status.offered\": \"Angeboten\",\n \"projectQuantities.filter.status.ordered\": \"Beauftragt (Erwerber)\",\n \"projectQuantities.filter.status.all\": \"Alle Zustände\",\n \"projectQuantities.filter.status.contracted\": \"Beauftragt (Nachunternehmen)\",\n \"projectQuantities.filter.section.all\": \"Alle Bauabschnitt\",\n \"projectQuantities.filter.unitFeature.all\": \"Alle Merkmale\",\n \"projectQuantities.noUnitsFound\": \"Keine Einheiten gefunden\",\n \"contractorAssignmentRule.contractData\": \"Vertragsdaten\",\n \"contractorAssignmentRule.dialog.title\": \"Vertragsdaten\",\n \"contractorAssignmentRule.dialog.attributes.details\": \"Vertragsdetails\",\n \"contractorAssignmentRule.dialog.attributes.field_required\": \"Dieses Feld ist erforderlich\",\n \"contractorAssignmentRule.dialog.attributes.profitMargin.label\": \"Aufschlag\",\n \"contractorAssignmentRule.dialog.attributes.cashDiscountInPercent.label\": \"Rabatt\",\n \"contractorAssignmentRule.dialog.attributes.contractDate.label\": \"Vertragsdatum\",\n \"contractorAssignmentRule.dialog.attributes.contractDate.placeholder\": \"Datum des Vertragsschlusses\",\n \"contractorAssignmentRule.dialog.attributes.contractNegotiationDate.label\": \"Verhandlungsdatum\",\n \"contractorAssignmentRule.dialog.attributes.contractNegotiationDate.placeholder\": \"Datum der Verhandlung\",\n \"contractorAssignmentRule.dialog.attributes.contractNumber.label\": \"Vertragsnummer\",\n \"contractorAssignmentRule.dialog.attributes.contractNumber.placeholder\": \"Nummer des Vertrages\",\n \"contractorAssignmentRule.dialog.attributes.externalId.label\": \"Externe ID\",\n \"contractorAssignmentRule.dialog.attributes.externalId.placeholder\": \"Externe ID des Vertrags\",\n \"contractorAssignmentRule.dialog.attributes.contractorId.label\": \"Nachunternehmer\",\n \"contractorAssignmentRule.dialog.attributes.contractorId.placeholder\": \"Nachunternehmer\",\n \"contractorAssignmentRule.dialog.attributes.tradeId.label\": \"Gewerk\",\n \"contractorAssignmentRule.dialog.attributes.tradeId.placeholder\": \"Gewerk\",\n \"contractorAssignmentRule.dialog.attributes.unitId.label\": \"Wohneinheit\",\n \"contractorAssignmentRule.dialog.attributes.unitId.placeholder\": \"Wohneinheit\",\n \"contractorAssignmentRule.dialog.attributes.sectionId.label\": \"Bauabschnitt\",\n \"contractorAssignmentRule.dialog.attributes.sectionId.placeholder\": \"Bauabschnitt\",\n \"memo.attributes.recipients.label\": \"Kontakte\",\n \"memo.attributes.recipients.placeholder\": \"Kontakte\",\n \"email.integration\": \"E-Mail Integration\",\n \"email.template.one\": \"E-Mail Vorlage\",\n \"email.template.other\": \"E-Mail Vorlagen\",\n \"email.macro.one\": \"Standardemail\",\n \"email.macro.other\": \"Standardemails\",\n \"email.activity_section.title\": \"Vorgang starten\",\n \"email.activity_section.button.label\": \"+ Vorgang: {name}\",\n \"email.activity_section.dialog.title\": \"Vorgang starten\",\n \"email.activity_section.dialog.user\": \"Verantwortlicher\",\n \"email.activity_section.dialog.activity_title\": \"Vorgangsbezeichnung\",\n \"email.message_labels.add.title\": \"Label anlegen\",\n \"email.message_labels.add.success\": \"Label gespeichert\",\n \"email.message_labels.edit.title\": \"Lebel bearbeiten\",\n \"email.message_labels.edit.success\": \"Label gespeichert\",\n \"email.message_labels.delete.success\": \"Label gelöscht\",\n \"email.message_labels.name\": \"Name\",\n \"email.message_labels.color\": \"Farbe\",\n \"email.message_labels.list.title\": \"Labels\",\n \"email.message_labels.list.empty\": \"Noch keine Labels vorhanden\",\n \"email.message_labels.remove_confirmation.title\": \"Label löschen\",\n \"email.message_labels.remove_confirmation.message\": \"Wollen Sie das Label wirklich löschen?\",\n \"email.message_labels.select_message.added\": \"Label wurde hinzugefügt\",\n \"email.message_labels.select_message.removed\": \"Label wurde entfernt\",\n \"email.message_labels.colors.red\": \"Rot\",\n \"email.message_labels.colors.orange\": \"Orange\",\n \"email.message_labels.colors.yellow\": \"Gelb\",\n \"email.message_labels.colors.olive\": \"Olive\",\n \"email.message_labels.colors.green\": \"Grüne\",\n \"email.message_labels.colors.teal\": \"Teal\",\n \"email.message_labels.colors.blue\": \"Blau\",\n \"email.message_labels.colors.violet\": \"Violett\",\n \"email.message_labels.colors.purple\": \"Lila\",\n \"email.message_labels.colors.pink\": \"Rosa\",\n \"email.message_labels.colors.brown\": \"Brown\",\n \"email.message_labels.colors.grey\": \"Grau\",\n \"email.message_labels.colors.black\": \"Schwarz\",\n \"email.attributes.boilerplate.list\": \"Liste möglicher Bausteine\",\n \"email.attributes.boilerplate.key\": \"Baustein\",\n \"email.attributes.boilerplate.value\": \"Beispielwert\",\n \"email.attributes.project.label\": \"Projekt\",\n \"email.attributes.project.placeholder\": \"Projekt\",\n \"email.attributes.project.error\": \"Bitte ordnen Sie ein Projekt zu.\",\n \"email.attributes.recipients.label\": \"Empfänger\",\n \"email.attributes.recipients.placeholder\": \"Empfänger\",\n \"email.attributes.recipients.error\": \"Bitte geben Sie mindestens einen Empfänger an\",\n \"email.attributes.noRecipients.label\": \"Keine Empfänger\",\n \"email.attributes.from.label\": \"Von\",\n \"email.attributes.to.label\": \"An\",\n \"email.attributes.cc.label\": \"Cc\",\n \"email.attributes.bcc.label\": \"Bcc\",\n \"email.attributes.add_contact.label\": \"Neuer Kontakt\",\n \"email.attributes.unit.label\": \"Wohneinheit\",\n \"email.attributes.unit.placeholder\": \"Wohneinheit\",\n \"email.attributes.subject.label\": \"Betreff\",\n \"email.attributes.subject.placeholder\": \"Betreff\",\n \"email.attributes.subject.error\": \"Bitte geben Sie einen Betreff an\",\n \"email.attributes.email.label\": \"E-mail\",\n \"email.attributes.status.label\": \"Status\",\n \"email.attributes.created_at.label\": \"Erstellt am\",\n \"email.attributes.body.label\": \"Nachricht\",\n \"email.attributes.body.placeholder\": \"Nachrichtentext\",\n \"email.attributes.attachments.label\": \"Angehängte Dokumente\",\n \"email.attributes.attachments.placeholder\": \"Dokumente hinzufügen\",\n \"email.attributes.render_message_thread.label\": \"Gesamten Nachrichtenverlauf zitieren\",\n \"email.attributes.migration.label\": \"E-Mail Integration 2.0 aktivieren\",\n \"attachment.title.one\": \"Dokument\",\n \"attachment.title.other\": \"Dokumente\",\n \"attachment.title.missing\": \"Es wurden noch keine Dokumente hochgeladen.\",\n \"attachment.actions.add\": \"Dokument hinzufügen\",\n \"attachment.actions.upload\": \"Dokument hochladen\",\n \"attachment.actions.assign\": \"Bestehendes Dokument verknüpfen\",\n \"attachment.actions.edit\": \"Dokument bearbeiten\",\n \"attachment.actions.remove\": \"Dokument löschen\",\n \"attachment.actions.dragAndDrop\": \"Dokument zum Upload hierher ziehen\",\n \"attachment.actions.selectType\": \"Bitte wählen Sie den Dokumenttyp aus\",\n \"attachment.actions.removeDialog.title\": \"Dokument löschen\",\n \"attachment.actions.removeDialog.message\": \"Wollen Sie das Dokument endgültig aus dieser Wohneinheit löschen?\",\n \"attachment.actions.removeDialog.messageWithReferences\": \"Das Dokument wird derzeit in {count} Vorgängen / Positionen referenziert.\",\n \"attachment.actions.unlinkDialog.title\": \"Dokument entfernen\",\n \"attachment.actions.unlinkDialog.message.activity\": \"Wollen Sie das Dokument aus diesem Vorgang entfernen?\",\n \"attachment.actions.unlinkDialog.message.lineItem\": \"Wollen Sie das Dokument aus dieser Position entfernen?\",\n \"attachment.actions.unlinkDialog.hint\": \"Hinweis: Das Dokument verbleibt in der Wohneinheit, kann dort aber endgültig gelöscht werden.\",\n \"attachment.actions.assignUser\": \"Dokument für {user} sichtbar machen\",\n \"attachment.actions.removeUser\": \"Dokument für {user} unsichtbar machen\",\n \"attachment.actions.attach\": \"Anhang hinzufügen\",\n \"attachment.attachDialog.header\": \"Dokumente anhängen\",\n \"attachment.uploadedAt\": \"Am {dateTime} hinzugefügt\",\n \"attachment.editVisibility\": \"Sichtbarkeit\",\n \"attachment.message.noneAssigned\": \"Es wurden noch keine Dokumente hinzugefügt.\",\n \"attachment.message.biggerFiles\": \"There are files larger then {warningThreshold}MB.\",\n \"attachment.message.unsupportedFile\": \"Dateiformat nicht akzeptiert, bitte ein gültiges Format nutzen.\",\n \"attachment.message.unsupportedSize\": \"Dateigröße nicht akzeptiert, bitte maximal {maxFilesize}MB.\",\n \"attachment.message.unsupportedFileOrSize\": \"Dateiformat oder Dateigröße nicht akzeptiert, bitte ein gültiges Format nutzen (maximal 5 MB).\",\n \"attachment.message.supportedOnlyExcel\": \"Achtung: bitte Excel Format (xlsx) verwenden\",\n \"attachment.message.supportedOnlyJSON\": \"Achtung: bitte JSON Format (json) verwenden\",\n \"attachment.reference.unit\": \"Dokumente der Wohneinheit\",\n \"attachment.reference.line_items\": \"Dokumente aus dem Leistungsumfang\",\n \"attachment.reference.project\": \"Dokumente des Projektes\",\n \"attachment.reference.activity\": \"Dokumente des Vorgangs\",\n \"attachment.type.attachment.one\": \"Sonstige\",\n \"attachment.type.attachment.singluar\": \"Das Dokument\",\n \"attachment.type.attachment.other\": \"Sonstige\",\n \"attachment.type.plan.one\": \"Plan\",\n \"attachment.type.plan.singluar\": \"Der Plan\",\n \"attachment.type.plan.other\": \"Pläne\",\n \"attachment.type.estimate_buyer.one\": \"Erwerberangebot\",\n \"attachment.type.estimate_buyer.singluar\": \"Der Erwerberangebot\",\n \"attachment.type.estimate_buyer.other\": \"Erwerberangebote\",\n \"attachment.type.estimate_contractor.one\": \"Nachunternehmerangebot\",\n \"attachment.type.estimate_contractor.singluar\": \"Der Nachunternehmerangebot\",\n \"attachment.type.estimate_contractor.other\": \"Nachunternehmerangebote\",\n \"attachment.type.invoice.one\": \"Rechnung\",\n \"attachment.type.invoice.singluar\": \"Die Rechnung\",\n \"attachment.type.invoice.other\": \"Rechnungen\",\n \"attachment.type.image.one\": \"Bild\",\n \"attachment.type.image.singluar\": \"Das Bild\",\n \"attachment.type.image.other\": \"Bilder\",\n \"attachment.type.order.one\": \"Leistungsverzeichnis\",\n \"attachment.type.order.singluar\": \"Das Leistungsverzeichnis\",\n \"attachment.type.order.other\": \"Leistungsverzeichnisse\",\n \"attachment.type.order_confirmation.one\": \"Nachunternehmerbeauftragung\",\n \"attachment.type.order_confirmation.singluar\": \"Die Nachunternehmerbeauftragung\",\n \"attachment.type.order_confirmation.other\": \"Nachunternehmerbeauftragungen\",\n \"attachment.attributes.export_id.label\": \"Vorlage\",\n \"attachment.attributes.display_name.label\": \"Titel\",\n \"attachment.attributes.display_name.long\": \"Dokumententitel\",\n \"attachment.attributes.display_name.placeholder\": \"Dateiname oder aussagekräftiger Titel des Dokuments\",\n \"attachment.attributes.display_name.error\": \"Pflichtfeld. Bitte verwenden Sie nur Buchstaben, Zahlen, Binde- und Unterstriche.\",\n \"attachment.attributes.role.label\": \"Dokumententyp\",\n \"attachment.attributes.file_name.label\": \"Dateiname\",\n \"attachment.hints.version_history\": \"Datei Versionsverlauf\",\n \"attachment.hints.attachment_version_history\": \"Datenbank Attachment Versionsverlauf\",\n \"attachment.hints.reference_count\": \"Dieses Dokument ist mit {count} Vorgängen oder Positionen verknüpft.\",\n \"attachment.hints.message_count\": \"Dieses Dokument wurde {count} mal als E-Mail versendet.\",\n \"attachment.hints.featured\": \"Schnellzugriff\",\n \"attachment.hints.feature\": \"Das Dokument ist derzeit nicht dem Schnellzugriff hinzugefügt.\",\n \"attachment.hints.unfeature\": \"Das Dokument ist dem Schnellzugriff hinzugefügt.\",\n \"attachment.hints.visible_extern\": \"Dieses Dokument ist für Erwerber sichtbar.\",\n \"attachment.hints.visible_intern\": \"Dieses Dokument ist nur intern sichtbar.\",\n \"attachment.hints.visible_public\": \"Dieses Dokument ist öffentlich sichtbar.\",\n \"attachment.hints.popup.title\": \"Verlinkt in\",\n \"attachment.hints.popup.project\": \"Projekt\",\n \"attachment.hints.popup.activity\": \"Vorgang\",\n \"attachment.hints.popup.unit\": \"Wohnung\",\n \"attachment.hints.popup.roomBookSubLineItem\": \"Position\",\n \"attachment.visibility.buyer.title\": \"Erwerber\",\n \"attachment.visibility.buyer.description\": \"Interne Benutzer und Erwerber, z.B. über den Online-Konfigurator können das Dokument öffnen.\",\n \"attachment.visibility.public.title\": \"Öffentlich\",\n \"attachment.visibility.public.description\": \"Jeder mit dem Link zum Dokument kann das Dokument aufrufen.\",\n \"attachment.visibility.internal.title\": \"Intern\",\n \"attachment.visibility.internal.description\": \"Nur interne Benutzer können das Dokument aufrufen.\",\n \"attachment_type.title.one\": \"Dokumenttyp\",\n \"attachment_type.title.many\": \"Dokumenttypen\",\n \"attachment_type.attributes.id.label\": \"ID\",\n \"attachment_type.attributes.id.error\": \"Bitte geben Sie eine eindeutige ID an.\",\n \"attachment_type.attributes.label.label\": \"Name\",\n \"attachment_type.attributes.count.label\": \"# Dokumente\",\n \"attachment_type.actions.removeDialog.title\": \"Dokumenttyp löschen\",\n \"attachment_type.actions.removeDialog.message\": \"Wollen Sie den Dokumenttypen wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"attachment_type.actions.undeletableDialog.title\": \"Dokumenttyp nicht löschbar\",\n \"attachment_type.actions.undeletableDialog.message\": \"Es wurden bereits Dokumente von diesem Typ hochgeladen. Dieser Typ kann nicht mehr gelöscht werden.\",\n \"accountRoles.title\": \"Rollen\",\n \"accountRoles.noRolesFound\": \"Keine Rollen gefunden\",\n \"accountRoles.deleteConfirmationDialog.title\": \"Rolle löschen\",\n \"accountRoles.deleteConfirmationDialog.message\": \"Wollen Sie die Rolle wirklich löschen?\",\n \"accountRoles.deleteConfirmationDialog.success.title\": \"Rolle gespecihert\",\n \"accountRoles.deleteConfirmationDialog.success.message\": \"Die Rolle wurde erfolgreich gelöscht.\",\n \"accountRoles.deleteConfirmationDialog.error.title\": \"Rolle nicht löschbar\",\n \"accountRoles.deleteConfirmationDialog.error.message\": \"Die Rolle konnte nicht gelöscht werden. Wahrscheinlich wird sie noch verwendet.\",\n \"accountRoles.actions.add\": \"Neue Rolle hinzufügen\",\n \"accountRoles.actions.edit\": \"Rolle bearbeiten\",\n \"accountRoles.dialog.name\": \"Name\",\n \"accountRoles.dialog.title.edit\": \"Rolle bearbeiten\",\n \"accountRoles.dialog.title.add\": \"Rolle hinzufügen\",\n \"accountRoles.dialog.description\": \"Bezeichnung\",\n \"accountRoles.dialog.roleDescription\": \"Rollenbeschreibung\",\n \"accountRoles.dialog.permissions\": \"Berechtigungen\",\n \"accountRoles.dialog.specialPermissions\": \"Spezialrechte\",\n \"accountRoles.dialog.editAccountSettings\": \"Kontoeinstellungen bearbeiten\",\n \"accountRoles.dialog.editSubcontractors\": \"Nachunternehmen bearbeiten\",\n \"accountRoles.dialog.editProductsData\": \"Produktdaten bearbeiten\",\n \"accountRoles.dialog.editAccessProjectCatalog\": \"Zugriff Projektkataloge\",\n \"accountRoles.dialog.editAccessStatisticsCenter\": \"Zugriff Statistikcenter\",\n \"accountRoles.dialog.editAccessUnassignedEmails\": \"Zugriff auf unzugeordnete E-Mails\",\n \"accountRoles.dialog.systemRoleHint\": \"Standardrollen können nicht bearbeitet werden. Sollten Sie eine Rolle mit abweichenden Berechtigungen benötigen, legen Sie bitte eine neue Rolle an.\",\n \"accountRoles.dialog.accessTrashbin\": \"Zugriff auf Papierkorb\",\n \"accountRoles.dialog.editConfigurator\": \"3D Konfigurator bearbeiten\",\n \"accountRoles.dialog.deleteActivities\": \"Vorgänge löschen\",\n \"accountRoles.dialog.deleteRoomBooks\": \"Raumbücher löschen\",\n \"accountRoles.dialog.accessVersionHistory\": \"Zugriff auf Versionsverlauf\",\n \"accountRoles.dialog.accessAPIDocumentation\": \"API\",\n \"apiDocumentation.title\": \"API Dokumentation\",\n \"apiDocumentation.description\": \"Die API Dokumentation ist nur für interne Benutzer sichtbar.\",\n \"apiDocumentation.dialog.title\": \"Titel\",\n \"apiDocumentation.dialog.create\": \"Neue API Dokumentation\",\n \"projectRoles.title\": \"Projektrollen\",\n \"projectRoles.noRolesFound\": \"Keine Rollen gefunden\",\n \"projectRoles.deleteConfirmationDialog.title\": \"Rolle löschen\",\n \"projectRoles.deleteConfirmationDialog.message\": \"Wollen Sie die Rolle wirklich löschen?\",\n \"projectRoles.deleteConfirmationDialog.success.title\": \"Rolle gespecihert\",\n \"projectRoles.deleteConfirmationDialog.success.message\": \"Die Rolle wurde erfolgreich gelöscht.\",\n \"projectRoles.deleteConfirmationDialog.error.title\": \"Rolle nicht löschbar\",\n \"projectRoles.deleteConfirmationDialog.error.message\": \"Die Rolle konnte nicht gelöscht werden. Wahrscheinlich wird sie noch verwendet.\",\n \"projectRoles.actions.add\": \"Neue Rolle hinzufügen\",\n \"projectRoles.actions.edit\": \"Rolle bearbeiten\",\n \"projectRoles.dialog.title.edit\": \"Projektrolle bearbeiten\",\n \"projectRoles.dialog.title.add\": \"Projektrolle hinzufügen\",\n \"projectRoles.dialog.name\": \"Name\",\n \"projectRoles.dialog.description\": \"Bezeichnung\",\n \"projectRoles.dialog.permissions\": \"Berechtigungen\",\n \"projectRoles.dialog.descriptionPlaceholder\": \"Rollenbeschreibung\",\n \"projectRoles.dialog.projectRolesDialogTitleAdd\": \"Role hinzufugen\",\n \"projectRoles.dialog.projectRolesDialogName\": \"Name\",\n \"projectRoles.dialog.projectRolesDialogDescription\": \"Bezeichnung\",\n \"projectRoles.dialog.projectRolesDialogPermissions\": \"Berechtigungen\",\n \"projectRoles.dialog.allowPerspectiveOnboarding\": \"Zugriff auf die Perspektive \\\"Einrichtung\\\"\",\n \"projectRoles.dialog.allowPerspectiveSales\": \"Zugriff auf die Perspektive \\\"Sales\\\"\",\n \"projectRoles.dialog.allowAccessAllActivities\": \"Zugriff auf alle Vorgänge des Projektes\",\n \"projectRoles.dialog.allowAccessActivities\": \"Zugriff auf Vorgänge\",\n \"projectRoles.dialog.allowAccessAllUnits\": \"Zugriff auf alle Wohneinheiten\",\n \"projectRoles.dialog.allowAccessDeadlines\": \"Zugriff auf Fristen\",\n \"projectRoles.dialog.allowAccessDocuments\": \"Zugriff auf Dokumente\",\n \"projectRoles.dialog.allowAccessStatistics\": \"Zugriff auf Statistiken\",\n \"projectRoles.dialog.allowAccessEditUnits\": \"Recht Wohneinheiten zu bearbeiten\",\n \"projectRoles.dialog.allowAccessAllMessages\": \"Zugriff auf alle Nachrichten des Projektes\",\n \"projectRoles.dialog.allowAccessEditProject\": \"Recht die Projektdaten zu bearbeiten\",\n \"projectRoles.dialog.allowAccessBuyers\": \"Zugriff Erwerbermanagement\",\n \"projectRoles.dialog.allowAccessContractors\": \"Zugriff Nachunternehmermanagement\",\n \"customFields.tab.title\": \"Datenmodel\",\n \"customFields.title\": \"Produktfelder\",\n \"customFields.errorMessage\": \"Fehlermeldung\",\n \"customFields.hint\": \"Hinweis\",\n \"customFields.label\": \"Label\",\n \"customFields.multiple\": \"Mehrfachauswahl\",\n \"customFields.name\": \"Name\",\n \"customFields.position\": \"Position\",\n \"customFields.required\": \"Erforderlich\",\n \"customFields.subject\": \"Bezug\",\n \"customFields.customDataType\": \"Datentyp\",\n \"customFields.noCustomFieldsFound\": \"Keine Produktfelder gefunden\",\n \"customFields.confirmations.deleteItem\": \"Möchten Sie dieses Element wirklich löschen?\",\n \"customFields.states.saving\": \"Speichern...\",\n \"customFields.button.cancel\": \"Abbrechen\",\n \"customFields.button.delete\": \"Löschen\",\n \"customFields.button.save\": \"Speichern\",\n \"customFields.message\": null,\n \"customFields.error.title\": \"Fehler\",\n \"customFields.success.title\": \"Erfolg\",\n \"customFields.dialog.deleteTitle\": \"Produktfeld löschen\",\n \"customFields.dialog.deleteMessage\": \"Möchten Sie dieses Produktfeld wirklich löschen?\",\n \"webhooks.id\": \"ID\",\n \"webhooks.url\": \"URL\",\n \"webhooks.method\": \"Method\",\n \"webhooks.project\": \"Projekt\",\n \"webhooks.occurrence\": \"Ereignis\",\n \"webhooks.emptyMessage\": \"Es sind noch keine Webhooks definiert\",\n \"webhooks.webhooks\": \"Webhooks\",\n \"webhooks.add\": \"Hinzufugen\",\n \"webhooks.loading\": \"Loading...\",\n \"webhooks.dialog.name\": \"Name\",\n \"webhooks.dialog.description\": \"Bezeichnung\",\n \"webhooks.dialog.createWebhook\": \"Webhook anlegen\",\n \"webhooks.dialog.project\": \"Projekt\",\n \"webhooks.dialog.entity\": \"Entity\",\n \"webhooks.dialog.event\": \"Event\",\n \"webhooks.dialog.url\": \"URL\",\n \"webhooks.dialog.method\": \"Method\",\n \"webhooks.dialog.clear\": \"Clear\",\n \"webhooks.dialog.cancel\": \"Abbrechen\",\n \"webhooks.dialog.save\": \"Speicherm\",\n \"webhooks.dialog.deleteTitle\": \"Webhook löschen\",\n \"webhooks.dialog.deleteWebhook\": \"Webhook löschen?\",\n \"contacts.title\": \"Kontakte\",\n \"contacts.search\": \"Suche\",\n \"contacts.add\": \"Hinzufügen\",\n \"contacts.no_contacts_found\": \"Keine Kontakte gefunden\",\n \"message_filters.title\": \"Filter\",\n \"message_filters.no_filters_found\": \"Keine Filter gefunden.\",\n \"message_filters.dialog.title.add\": \"Filter anlegen\",\n \"message_filters.dialog.title.edit\": \"Filter bearbeiten\",\n \"message_filters.dialog.title.if\": \"Wenn\",\n \"message_filters.dialog.title.then\": \"Dann\",\n \"message_filters.dialog.attributes.name\": \"Name\",\n \"message_filters.dialog.attributes.summary\": \"Kurzbeschreibung\",\n \"message_filters.dialog.attributes.filter_project\": \"Projekt\",\n \"message_filters.dialog.attributes.filter_user\": \"Benutzer\",\n \"message_filters.dialog.attributes.filter_sender_email_pattern\": \"Absender\",\n \"message_filters.dialog.attributes.filter_subject_pattern\": \"Betreff enthält\",\n \"message_filters.dialog.attributes.filter_body_pattern\": \"Nachricht enthält\",\n \"message_filters.dialog.attributes.filter_has_attachment\": \"Anhang vorhanden\",\n \"message_filters.dialog.attributes.action_assign_label\": \"Label zuweisen\",\n \"message_filters.dialog.attributes.action_assign_user\": \"Benutzer zuweisen\",\n \"message_filters.dialog.attributes.action_mark_read\": \"Als gelesen markieren\",\n \"message_filters.dialog.attributes.action_mute_notification\": \"Benachrichtigungen unterdrücken\",\n \"message_filters.confirmation.title\": \"Filter löschen\",\n \"message_filters.confirmation.body\": \"Wollen Sie den Filter wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"message_filters.remove.success.body\": \"Filter gelöscht wurde.\",\n \"message_filters.remove.failure.body\": \"Filter nicht gelöscht wurde.\",\n \"createContact.title.create\": \"Kontakt anlegen\",\n \"createContact.title.edit\": \"Kontakt bearbeiten\",\n \"createContact.form.salutation\": \"Anrede\",\n \"createContact.form.title\": \"Titel\",\n \"createContact.form.first_name\": \"Vorname\",\n \"createContact.form.last_name\": \"Nachname\",\n \"createContact.form.company\": \"Firma\",\n \"createContact.form.email\": \"E-Mail\",\n \"createContact.form.phone\": \"Telefon\",\n \"createContact.form.mobile\": \"Mobil\",\n \"createContact.form.address_postcode\": \"Postleitzahl\",\n \"createContact.form.address_number\": \"Hausnummer\",\n \"createContact.form.address_street\": \"Straße\",\n \"createContact.form.address_town\": \"Ort\",\n \"createContact.form.address_country\": \"Land\",\n \"createContact.form.notes\": \"Notizen\",\n \"createContact.removeConfirmation.title\": \"Kontakt löschen\",\n \"createContact.removeConfirmation.body\": \"Wollen Sie den Kontakt wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"project.title.one\": \"Bauprojekt\",\n \"project.title.other\": \"Bauprojekte\",\n \"project.items.one\": \"ein Bauprojekt\",\n \"project.items.other\": \"Bauprojekte\",\n \"project.filter\": \"Nach Bauphase filtern\",\n \"project.activity.zero\": \"Keine Vorgänge\",\n \"project.activity.one\": \"Ein Vorgang\",\n \"project.activity.other\": \"Vorgänge\",\n \"project.activity.filter.ownItemsOnly\": \"Nur meine Vorgänge anzeigen\",\n \"project.statistics.turnover\": \"Umsatz nach Phasen\",\n \"project.statistics.profit\": \"Mehrerlös nach Phasen\",\n \"project.statistics.activity\": \"Vorgänge nach Dringlichkeit\",\n \"project.statistics.metrics.by_unit.title.label\": \"Kennzahlen nach Wohneinheiten\",\n \"project.statistics.metrics.by_trade.title.label\": \"Kennzahlen nach Gewerken\",\n \"project.statistics.metrics.progress.label\": \"Fortschritt\",\n \"project.statistics.metrics.progress.hint\": \"Bemusterungsfortschritt\",\n \"project.statistics.metrics.revenue.gross.label\": \"Mehrumsatz (brutto)\",\n \"project.statistics.metrics.revenue.gross.hint\": \"Gesamtsumme (brutto) des durch Sonderwunschleistung zusätzlich erzielten Umsatzes\",\n \"project.statistics.metrics.revenue.net.label\": \"Mehrumsatz (netto)\",\n \"project.statistics.metrics.revenue.net.hint\": \"Gesamtsumme (netto) des durch Sonderwunschleistung zusätzlich erzielten Umsatzes\",\n \"project.statistics.metrics.amount_offered.label\": \"Angeboten EW\",\n \"project.statistics.metrics.amount_offered.hint\": \"Gesamtsumme der angebotenen Mehrleistung\",\n \"project.statistics.metrics.amount_pending.label\": \"Offen EW\",\n \"project.statistics.metrics.amount_pending.hint\": \"Gesamtsumme der beim Erwerber liegenden Angebote\",\n \"project.statistics.metrics.amount_ordered.label\": \"Beauftragt EW\",\n \"project.statistics.metrics.amount_ordered.hint\": \"Gesamtsumme der beauftragten Mehrleistung\",\n \"project.statistics.metrics.amount_cancelled.label\": \"Storniert EW\",\n \"project.statistics.metrics.amount_cancelled.hint\": \"Gesamtsumme der stornierten Mehrleistung\",\n \"project.statistics.metrics.costs.gross.label\": \"Mehrkosten (brutto)\",\n \"project.statistics.metrics.costs.gross.hint\": \"Gesamtsumme (brutto) der durch Sonderwunschleistung zusätzlich gegenüber den Gewerken erzeugten Kosten\",\n \"project.statistics.metrics.costs.net.label\": \"Mehrkosten (netto)\",\n \"project.statistics.metrics.costs.net.hint\": \"Gesamtsumme (netto) der durch Sonderwunschleistung zusätzlich gegenüber den Gewerken erzeugten Kosten\",\n \"project.statistics.metrics.costs_ordered.label\": \"Beauftragt EW\",\n \"project.statistics.metrics.costs_ordered.hint\": \"Gesamtkosten der durch den Erwerber beauftragten Mehrleistung\",\n \"project.statistics.metrics.costs_contracted.label\": \"Beauftragt NU\",\n \"project.statistics.metrics.costs_contracted.hint\": \"Gesamtkosten der bei den Gewerken beauftragten Mehrleistung\",\n \"project.unit_variables.section.label\": \"Export/Import\",\n \"project.unit_variables.section.download_tooltip\": \"Mengen herunterladen\",\n \"project.unit_variables.section.upload_tooltip\": \"Mengen hochladen\",\n \"project.unit_variables.section.upload_error\": \"Mengen konnten nicht hochgeladen werden\",\n \"project.unit_variables.dialog.title\": \"Mengen hochladen\",\n \"project.unit_variables.dialog.force\": \"Update erzwingen\",\n \"project.unit_variables.dialog.messages.selectFile\": \"Wählen Sie bitte eine Datei aus\",\n \"project.unit_variables.dialog.messages.forceInfo\": \"Achtung: wenn Update erzwingen angekreuzt ist, werden manuell geänderte Mengen falls benötigt überschrieben.\",\n \"project.roomBook.notFound\": \"Es liegen keine Raumbuchvorlagen zu diesem Projekt vor\",\n \"project.roomBook.noPriceCatalog\": \"Um eine neue Raumbuchvorlage anzulegen, weisen Sie bitte zunächst dem Projekt eine Preisliste zu.\",\n \"project.actions.edit.label\": \"Details dieses Bauprojekts bearbeiten\",\n \"project.actions.removeImage.label\": \"Bild entfernen\",\n \"project.actions.uploadImage.label\": \"Titelbild des Bauprojekts hierher ziehen\",\n \"project.actions.addSection.label\": \"Bauabschnitt\",\n \"project.actions.addUnit.label\": \"Wohneinheit\",\n \"project.tabs.overview\": \"Übersicht\",\n \"project.tabs.projectSetup\": \"Discovery\",\n \"project.tabs.activity\": \"Vorgänge\",\n \"project.tabs.sectionAndUnit\": \"Wohneinheiten & Raumbücher\",\n \"project.tabs.roomBook\": \"Raumbuchvorlagen\",\n \"project.tabs.roomBooks\": \"Wohneinheiten\",\n \"project.tabs.roomBookTemplates\": \"Raumbuchvorlagen\",\n \"project.tabs.statistics\": \"Auswertung\",\n \"project.tabs.deadlines\": \"Projektfristen\",\n \"project.tabs.search\": \"Suche\",\n \"project.tabs.contractors\": \"Nachunternehmen\",\n \"project.tabs.projectQuantities\": \"Mengenauswertung\",\n \"project.attributes.name.label\": \"Bauprojekt\",\n \"project.attributes.name.error\": \"Bitte geben Sie einen Bauprojektnamen an.\",\n \"project.attributes.slug.label\": \"Slug\",\n \"project.attributes.status.label\": \"Bauphase\",\n \"project.attributes.fullAddress.label\": \"Adresse\",\n \"project.attributes.address.label\": \"Straße & Hausnummer\",\n \"project.attributes.town.label\": \"Ort\",\n \"project.attributes.suburb.label\": \"Stadtteil\",\n \"project.attributes.postcode.label\": \"Postleitzahl\",\n \"project.attributes.developerName.label\": \"Organisation\",\n \"project.attributes.developerContactPerson.label\": \"Kontaktperson\",\n \"project.attributes.developerEmail.label\": \"E-Mail\",\n \"project.attributes.developerEmail.error\": \"Bitte geben Sie eine valide Email-Adresse an.\",\n \"project.attributes.developerPhone.label\": \"Telefon\",\n \"project.attributes.developerAddress.label\": \"Straße & Hausnummer\",\n \"project.attributes.developerPostcode.label\": \"Postleitzahl\",\n \"project.attributes.developerTown.label\": \"Ort\",\n \"project.attributes.customerSuccessManager.label\": \"Account Manager\",\n \"project.attributes.projectFeature.label\": \"Merkmale\",\n \"project.attributes.attachmentTypeFilters.label\": \"Dokumenttypen (Einschränkung)\",\n \"project.attributes.processDefinitionIds.label\": \"Prozesse\",\n \"project.attributes.processDefinitionIds.placeholder\": \"Verknüpfen Sie die Prozesse mit dem Projekt\",\n \"project.attributes.systemConfig.label\": \"System config\",\n \"project.attributes.reportingStatus.label\": \"Projektstatus\",\n \"project.attributes.reportingStatus.onboarding\": \"Einrichtung\",\n \"project.attributes.reportingStatus.active\": \"In Nutzung\",\n \"project.attributes.reportingStatus.completed\": \"Abgeschlossen\",\n \"project.attributes.reportingStatus.abandoned\": \"Eingestellt\",\n \"project.attributes.defaultUnitType.label\": \"Standard Wohnungstyp\",\n \"project.attributes.unitQuota.label\": \"Wohnungskontingent\",\n \"project.attributes.licenseKey.label\": \"Lizenzschlüssel\",\n \"project.attributes.customConfiguratorDomain.label\": \"Custom Domain\",\n \"project.attributes.externalId.label\": \"Externe ID\",\n \"project.attributes.projectCode.label\": \"Projektcode\",\n \"project.attributes.showroomCity.label\": \"Showroom Stadt\",\n \"project.attributes.showroomAddress.label\": \"Showroom Adresse\",\n \"project.attributes.production.label\": \"Reales Kundenprojekt\",\n \"project.attributes.accountManager.label\": \"Ansprechpartner Kundenbetreuung\",\n \"project.attributes.salesUser.label\": \"Ansprechpartner Vertrieb\",\n \"project.attributes.custom_import_configs.label\": \"Custom import configs\",\n \"project.attributes.vendor.label\": \"bau digital\",\n \"project.attributes.marketing_portal.label\": \"Marketing Portal\",\n \"project.attributes.marketing_portal.marketing_website_url.label\": \"Marketing Website\",\n \"project.attributes.marketing_portal.marketing_portal_activated.label\": \"Projekt veröffentlichen\",\n \"project.attributes.marketing_portal.marketing_portal_configurator_link.label\": \"Wohungsexpose veröffentlichen\",\n \"project.attributes.marketing_portal.marketing_portal_summary.label\": \"Kurzbeschreibung\",\n \"project.attributes.marketing_portal.marketing_portal_description.label\": \"Langbeschreibung\",\n \"project.attributes.marketing_portal.construction_begins_at.label\": \"Geplanter Baubeginn\",\n \"project.attributes.marketing_portal.construction_completes_at.label\": \"Geplante Fertigstellung\",\n \"project.attributes.marketing_portal.marketing_unit_price_min.label\": \"Preis von\",\n \"project.attributes.marketing_portal.marketing_unit_price_max.label\": \"Preis bis\",\n \"project.attributes.marketing_portal.marketing_unit_floor_space_min.label\": \"Wohnfläche von\",\n \"project.attributes.marketing_portal.marketing_unit_floor_space_max.label\": \"Wohnfläche bis\",\n \"project.attributes.marketing_portal.marketing_unit_rooms_min.label\": \"Anzahl Zimmer von\",\n \"project.attributes.marketing_portal.marketing_unit_rooms_max.label\": \"Anzahl Zimmer bis\",\n \"project.attributes.marketing_portal.marketing_unit_count_total.label\": \"Anzahl Wohneinheiten gesamt\",\n \"project.attributes.external_sales.label\": \"Externer Vertrieb\",\n \"project.attributes.external_sales.agent_name.label\": \"Anzeigename\",\n \"project.attributes.external_sales.agent_name_full.label\": \"Firma\",\n \"project.attributes.external_sales.agent_email.label\": \"E-Mail\",\n \"project.attributes.external_sales.agent_phone.label\": \"Telefon\",\n \"project.attributes.external_sales.agent_address_street.label\": \"Straße\",\n \"project.attributes.external_sales.agent_address_postcode.label\": \"Postleitzahl\",\n \"project.attributes.external_sales.agent_address_city.label\": \"Stadt\",\n \"project.attributes.external_sales.marketed_by_agent.label\": \"Als Anbieter auftreten\",\n \"project.attributes.external_sales.agent_logo_id.label\": \"Firmenlogo\",\n \"project.attributes.thumb_id.label\": \"Projektbild\",\n \"project.attributes.buyer_portal.heading.configurators\": \"3D Konfiguratoren\",\n \"project.attributes.buyer_portal.banner_url.label\": \"URL Banner\",\n \"project.attributes.buyer_portal.styles.label\": \"CSS Stylesheet (SASS)\",\n \"project.attributes.buyer_portal.units_menu_item.label\": \"Menupunkt \\\"Wohneinheiten\\\" umbennen\",\n \"project.attributes.buyer_portal.additional_html.title\": \"Zusätzliches HTML\",\n \"project.attributes.buyer_portal.additional_html.label\": \"Hier ist Platz für zusätzliches HTML\",\n \"project.attributes.buyer_portal.product_lines.label\": \"Ausstattungslinien\",\n \"project.attributes.buyer_portal.glencoeURL.label\": \"Glencoe URL\",\n \"project.attributes.buyer_portal.configurators.label\": \"Hauptkonfiguration\",\n \"project.attributes.buyer_portal.product_mapping.label\": \"Produkt mapping\",\n \"project.attributes.buyer_portal.product_mapping.toggle_label\": \"Produkt mapping JSON field toggle\",\n \"project.attributes.buyer_portal.auto_product_mapping.label\": \"Do you want to map {num, plural, one {# product} other {# products}} automatically?\",\n \"project.attributes.buyer_portal.auto_product_mapping.button_label\": \"Make it so!\",\n \"project.attributes.buyer_portal.auto_product_mapping.no_products\": \"No products for auto mapping\",\n \"project.attributes.buyer_portal.auto_product_mapping.diverting_tooltip\": \"Group contains products that are already mapped to different 3d param\",\n \"project.attributes.buyer_portal.auto_product_mapping.table.label\": \"{num, plural, one {# value is not mapped because it already exists} other {values are not mapped because they already exist }} in product mapping:\",\n \"project.attributes.buyer_portal.auto_product_mapping.table.header_group\": \"Gruppe ID\",\n \"project.attributes.buyer_portal.auto_product_mapping.table.header_product\": \"Produkt ID\",\n \"project.attributes.buyer_portal.auto_product_mapping.table.header_existing_value\": \"Already mapped value\",\n \"project.attributes.buyer_portal.auto_product_mapping.table.header_new_value\": \"New product value (not mapped)\",\n \"project.attributes.buyer_portal.sections.group.label\": \"Bemusterungsgruppe\",\n \"project.attributes.buyer_portal.sections.description.label\": \"Einleitungstext\",\n \"project.attributes.buyer_portal.sections.thumb_url.label\": \"URL Abbildung\",\n \"project.attributes.buyer_portal.sections.visible.label\": \"Verfügbar im Online-Konfigurator\",\n \"project.attributes.buyer_portal.sections.configurator.label\": \"3D Konfigurator\",\n \"project.attributes.membership.title\": \"Abwesenheitsvertretung\",\n \"project.attributes.membership.active_from.label\": \"Aktiv von\",\n \"project.attributes.membership.active_to.label\": \"Aktiv bis\",\n \"project.attributes.membership.user.label\": \"Benutzer\",\n \"project.attributes.membership.empty.label\": \"Keine Abwesenheitsvertretungen gefunden\",\n \"project.attributes.membership.add.label\": \"Neue Abwesenheitsvertretung hinzufügen\",\n \"project.attributes.membership.all_projects.label\": \"Alle Projekte\",\n \"project.attributes.membership.confirmation.title\": \"Abwesenheitsvertretung löschen\",\n \"project.attributes.membership.confirmation.body\": \"Wollen Sie die Abwesenheitsvertretung wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"project.attributes.membership.remove.success.body\": \"Abwesenheitsvertretung gelöscht\",\n \"project.attributes.membership.remove.failure.body\": \"Abwesenheitsvertretung nicht gelöscht\",\n \"project.message.noResults\": \"Es wurden noch keine Bauprojekte angelegt.\",\n \"project.project_setup.title\": \"Projekt anlegen\",\n \"project.project_setup.tabs.basic_data\": \"Basisdaten\",\n \"project.project_setup.tabs.project\": \"Projektorganisation\",\n \"project.project_setup.tabs.project_structure\": \"Projektstruktur\",\n \"project.project_setup.tabs.project_catalog\": \"Ausstattungskatalog\",\n \"project.project_setup.tabs.room_books\": \"Raumbücher\",\n \"project.project_setup.tabs.process\": \"Prozesse\",\n \"project.project_setup.tabs.email_integration\": \"E-Mail Integration\",\n \"project.project_setup.tabs.data_providing\": \"Datenimport\",\n \"project.project_setup.items.project_catalog\": \"Projektkatalog\",\n \"project.project_setup.items.units\": \"Wohnungen\",\n \"project.project_setup.items.roombooks_templates\": \"Raumbuchvorlagen\",\n \"project.project_setup.items.unit_features\": \"Wohnungsmekmale\",\n \"project.project_setup.items.unit_variables\": \"Wohnungsmengen\",\n \"project.project_setup.toggle.label\": \"Projektsetup\",\n \"project.project_setup.wizard.title\": \"Projektwizard\",\n \"project.project_setup.dialog.project_name.label\": \"Projekt Name\",\n \"project.project_setup.dialog.customer_success_manager.label\": \"Projektmanager\",\n \"project.project_setup.dialog.add_comment.label\": \"Notiz hinzufügen\",\n \"project.project_setup.dialog.add_file.label\": \"Datei hinzufügen\",\n \"project.project_setup.dialog.add_file_title.label\": \"Datei hinzufügen\",\n \"project.project_setup.dialog.complete_topic.label\": \"Thema ist abschliessend geklärt\",\n \"project.project_setup.dialog.select_catalog.label\": \"Katalog auswählen\",\n \"project.project_setup.dialog.upload_catalog.label\": \"Katalog hochladen\",\n \"project.project_setup.dialog.project_catalog.label\": \"Ausstattungskatalog\",\n \"project.project_setup.dialog.create_project_catalog.label\": \"Katalog anlegen\",\n \"project.project_setup.dialog.price_list.label\": \"Preisliste\",\n \"project.project_setup.dialog.name.label\": \"Name\",\n \"project.project_setup.dialog.generate_roombook.label\": \"Raumbuch generieren\",\n \"project.project_setup.dialog.generate_roombook_again.label\": \"Nochmal generieren\",\n \"project.project_setup.dialog.generate_roombook_new.label\": \"Neu generieren\",\n \"project.project_setup.dialog.open_roombook.label\": \"Raumbuch öffnen\",\n \"project.project_setup.dialog.catalog_changed.label\": \"Achtung: Der Projektkatalog wurde nachträglich geändert.\",\n \"project.project_setup.dialog.no_topics.label\": \"Es liegen noch keine Fragestellungen vor\",\n \"project.project_setup.dialog.filter_message.label\": \"Abhängigkeit: Nur sichtbar wenn {reference} == {value}\",\n \"project.project_setup.analysisTopics.new.label\": \"Fragestellung hinzufügen\",\n \"project.project_setup.analysisTopics.dialog.title\": \"Project Analysis Topics Bearbeiten\",\n \"project.project_setup.analysisTopics.dialog.name\": \"Bezeichnung\",\n \"project.project_setup.analysisTopics.dialog.summary\": \"Fragestellung\",\n \"project.project_setup.analysisTopics.dialog.technicalReference\": \"Technical Reference\",\n \"project.project_setup.analysisTopics.dialog.topic\": \"Project Analysis Topic\",\n \"project.project_setup.analysisTopics.dialog.options\": \"Optionen\",\n \"project.project_setup.analysisTopics.dialog.option\": \"Option\",\n \"project.project_setup.analysisTopics.dialog.newOption\": \"Neue Option\",\n \"project.project_setup.analysisTopics.dialog.editingNote\": \"Bearbeitungshinweis\",\n \"project.project_setup.analysisTopics.dialog.label\": \"Anzeigename\",\n \"project.project_setup.analysisTopics.dialog.value\": \"Wert\",\n \"project.project_setup.analysisTopics.dialog.description\": \"Beschreibung\",\n \"project.project_setup.analysisTopics.dialog.requirements\": \"Abhängigkeiten\",\n \"project.project_setup.analysisTopics.dialog.errors.optionExists\": \"Diese Option existiert bereits\",\n \"project.project_setup.analysisTopics.dialog.errors.requirementExists\": \"Diese Abhängigkeit existiert bereits\",\n \"project.project_setup.data.changedBy.label\": \"Wohnungsdaten wurden am {date} um {time} von {user} hochgeladen.\",\n \"project.project_setup.data.reset.label\": \"Ändern\",\n \"project.perspectives.onboarding\": \"Einrichtung\",\n \"project.perspectives.customer_management\": \"Kundenbetreuung\",\n \"project.perspectives.sales\": \"Vertrieb\",\n \"configuratorBackend.actions.new\": \"Konfigurator anlegen\",\n \"configuratorBackend.actions.edit\": \"Konfigurator bearbeiten\",\n \"configuratorBackend.attributes.name.label\": \"Name\",\n \"configuratorBackend.attributes.url.label\": \"Glencoe Url\",\n \"configuratorBackend.attributes.config_sealed.label\": \"Konfiguration weicht bewusst von Glencoe ab\",\n \"configuratorBackend.attributes.editing_note.label\": \"Bearbeitungshinweis\",\n \"configuratorBackend.messages.diverged\": \"Achtung: es liegen Änderungen im Konfigurator-Setup vor.\",\n \"configuratorBackend.messages.sealed\": \"Diese Konfiguration weicht bewusst von Glencoe ab.\",\n \"projectRoom.actions.new\": \"Raum anlegen\",\n \"projectRoom.actions.edit\": \"Raum bearbeiten\",\n \"projectRoom.attributes.title.label\": \"Anzeigename\",\n \"projectRoom.attributes.name.label\": \"Name\",\n \"projectRoom.attributes.mode.label\": \"Verhalten\",\n \"projectRoom.attributes.description.label\": \"Beschreibung\",\n \"projectRoom.attributes.configurator_backend_id.label\": \"Konfigurator (Glencoe)\",\n \"projectRoom.attributes.render_id.label\": \"Konfigurator Raum\",\n \"projectRoom.attributes.configurator_alignment.label\": \"Bildausrichtung\",\n \"projectRoom.attributes.configurator_behaviour.label\": \"Bildverhalten\",\n \"projectRoom.attributes.room_type.label\": \"Raumtyp\",\n \"projectRoom.attributes.background_image.label\": \"Hintergrundbild\",\n \"projectRoom.attributes.section_selectors.label\": \"Welche Abschnitte sollen dargestellt werden?\",\n \"projectRoom.attributes.show_empty.label\": \"Raum auch ohne aktive Inhalte anzeigen\",\n \"projectRoom.attributes.hint_empty_state.label\": \"Hinweis wenn keine aktiven Inhalte vorhanden sind\",\n \"projectRoom.attributes.hint_upgrade_bundles.label\": \"Hinweis zu den Upgrade-Paketen im Raum\",\n \"projectRoom.attributes.label_upgrade_bundles.label\": \"Bezeichnung Upgrade-Pakete im Raum\",\n \"projectRoom.attributes.placeholder_upgrade_bundles.label\": \"Hinweis wenn kein Upgrade Paket ausgewählt wurde\",\n \"projectRoom.attributes.placeholder_upgrade_bundles.placeholder\": \"Hinweis wenn kein Upgrade Paket ausgewählt wurde\",\n \"projectRoom.attributes.hint_design_lines.label\": \"Hinweis zu den Design Linien im Raum\",\n \"projectRoom.attributes.label_design_lines.label\": \"Bezeichnung Design Linien im Raum\",\n \"projectRoom.attributes.position_upgrade_bundles.label\": \"Position Upgrade-Pakete\",\n \"projectRoom.attributes.disclaimer_text.label\": \"Rechtshinweis\",\n \"projectRoom.attributes.disclaimer_text.placeholder\": \"Rechtshinweise zu Abbildungen, Farben, Raum\",\n \"developer.title.one\": \"Bauträger\",\n \"developer.title.ohter\": \"Bauträger\",\n \"developer.title.zero\": \"Kein Bauträger\",\n \"developer.message.noneAssigned\": \"Es liegt noch kein Bauträger vor.\",\n \"unit.singular\": \"Wohneinheit\",\n \"unit.one\": \"Wohneinheit\",\n \"unit.other\": \"Wohneinheiten\",\n \"unit.preview.buyer\": \"Erwerberansicht\",\n \"unit.preview.marketing\": \"Musterwohnungsansicht\",\n \"unit.title.singular\": \"Wohneinheit\",\n \"unit.title.one\": \"Wohneinheit\",\n \"unit.title.other\": \"Wohneinheiten\",\n \"unit.title.missing\": \"Es wurden noch keine Wohneinheiten angelegt\",\n \"unit.title.activities_missing\": \"Es liegen keine Vorgänge für diese Wohneinheit vor\",\n \"unit.tabs.statistics\": \"Auswertung\",\n \"unit.tabs.roomBook\": \"Raumbuch\",\n \"unit.tabs.activities\": \"Vorgänge\",\n \"unit.tabs.attachments\": \"Dokumente\",\n \"unit.tabs.deadlines\": \"Fristen\",\n \"unit.tabs.messages\": \"Nachrichten\",\n \"unit.tabs.nachunternehmen\": \"Nachunternehmen\",\n \"unit.statistics.progress.title\": \"Bemusterungsfortschritt\",\n \"unit.statistics.profit.net.title\": \"Nettoergebnis\",\n \"unit.statistics.profit.gross.title\": \"Bruttoergebnis\",\n \"unit.statistics.netTotalCostsByTrade.title\": \"Mehrkosten (netto) je Gewerk\",\n \"unit.statistics.netTotalRevenueByTrade.title\": \"Mehrumsatz (netto) je Gewerk\",\n \"unit.statistics.netTotalProfitByTrade.title\": \"Mehrertrag (netto) je Gewerk\",\n \"unit.statistics.netMetricsByTradeAndPhase.title\": \"Kennzahlen Gewerke / Phase\",\n \"unit.statistics.netSelectedCostsByTrade.title\": \"Gesamtkosten (netto) je Gewerk\",\n \"unit.statistics.netSelectedRevenueByTrade.title\": \"Gesamtumsatz (netto) je Gewerk\",\n \"unit.statistics.grossTotalCostsByTrade.title\": \"Mehrkosten (brutto) je Gewerk\",\n \"unit.statistics.grossTotalRevenueByTrade.title\": \"Mehrumsatz (brutto) je Gewerk\",\n \"unit.statistics.grossTotalProfitByTrade.title\": \"Mehrertrag (brutto) je Gewerk\",\n \"unit.statistics.grossSelectedCostsByTrade.title\": \"Gesamtkosten (brutto) je Gewerk\",\n \"unit.statistics.grossSelectedRevenueByTrade.title\": \"Gesamtumsatz (brutto) je Gewerk\",\n \"unit.statistics.progressByTrade.title\": \"Fortschritt je Gewerk\",\n \"unit.statistics.relativeComparison.title\": \"Mehrkosten Erwerber / Nachunternehmen (netto)\",\n \"unit.statistics.relativeComparison.turnoverBar\": \"Mehrkosten Erwerber (netto)\",\n \"unit.statistics.relativeComparison.costsBar\": \"Mehrkosten Nachunternehmen (netto)\",\n \"unit.statistics.pseudoStatus.pending\": \"offen\",\n \"unit.statistics.pseudoStatus.buyerSelection\": \"Erwerber hat Wunsch geäußert\",\n \"unit.statistics.pseudoStatus.hasCart\": \"bemustert\",\n \"unit.statistics.noValues\": \"Es liegen noch keine statistischen Werte vor.\",\n \"unit.reportDownloads.sub_line_items.title\": \"Gesamtexport\",\n \"unit.reportDownloads.sub_line_items.description\": \"Enthält alle Positionen des Projekts\",\n \"unit.reportDownloads.ordered_products.title\": \"Produktstatistiken\",\n \"unit.reportDownloads.ordered_products.description\": \"Produktstatistiken über alle beauftragten Positionen im Projekt\",\n \"unit.reportDownloads.ordered_amounts.title\": \"Auftragssummen\",\n \"unit.reportDownloads.ordered_amounts.description\": \"Auftragssummen je Gewerk und Wohneinheit\",\n \"unit.reportDownloads.offered_amounts.title\": \"Angebotssummen\",\n \"unit.reportDownloads.offered_amounts.description\": \"Angebotssummen je Wohneinheit\",\n \"unit.reportDownloads.vista.title\": \"VISTA Paketauswahl\",\n \"unit.reportDownloads.vista.description\": \"Paketauswahl pro Haus / Gewerk\",\n \"unit.room.one\": \"Raum\",\n \"unit.room.other\": \"Räume\",\n \"unit.attributes.buyers.label\": \"Erwerber\",\n \"unit.attributes.buyers.placeholder\": \"Wählen Sie Erwerber aus\",\n \"unit.attributes.signees.label\": \"Erwerber\",\n \"unit.attributes.signees.placeholder\": \"Wählen Sie Erwerber aus\",\n \"unit.attributes.contacts.label\": \"Ansprechpartner\",\n \"unit.attributes.contacts.placeholder\": \"Wählen Sie weitere Ansprechpartner der Erwerber aus\",\n \"unit.attributes.salesManager.label\": \"Ansprechpartner Vertrieb\",\n \"unit.attributes.salesManager.placeholder\": \"Wählen Sie den Ansprechpartner aus\",\n \"unit.attributes.unitNumber.label\": \"Wohneinheit\",\n \"unit.attributes.unitNumber.error\": \"Bitte geben Sie eine Nummer für die Wohneinheit an. Die Nummer wird für die Erstellung der Vorgangsummer benötigt. \",\n \"unit.attributes.cellarNumber.label\": \"Keller\",\n \"unit.attributes.parkingSpaceNumber.label\": \"Stellplatz\",\n \"unit.attributes.unitNumbers.label\": \"Wohnungsnummern\",\n \"unit.attributes.unitNumbers.placeholder\": \"Beispiel: 110a\\n110b\\n111\\n112a\\n112b\\n113\\n210\\n211\\n212\",\n \"unit.attributes.unitNumbers.explanation\": \"Pro Zeile kann eine Wohnungsnummer angegeben werden. Sollte eine Wohnungsnummer bereits im ausgewählten Bauabschnitt verwendet worden sein, so wird für diese Nummer keine neue Wohneinheit angelegt.\",\n \"unit.attributes.sample.label\": \"Musterwohnung\",\n \"unit.attributes.description.label\": \"Beschreibung\",\n \"unit.attributes.unitType.label\": \"Typ\",\n \"unit.attributes.price.label\": \"Kaufpreis\",\n \"unit.attributes.floorSpace.label\": \"Wohnungsgröße\",\n \"unit.attributes.bauDigitalDemo.label\": \"Online Konfigurator Demo Modus\",\n \"unit.attributes.buyerPortalEnabled.label\": \"Erwerberportal aktiviert\",\n \"unit.attributes.marketingPortalEnabled.label\": \"Vertriebsportal aktiviert\",\n \"unit.attributes.flatFinderEnabled.label\": \"Flatfinder aktiviert\",\n \"unit.attributes.floor.label\": \"Stockwerk\",\n \"unit.attributes.roomCount.label\": \"Anzahl Zimmer\",\n \"unit.attributes.contractNumber.label\": \"Vertragsnummer\",\n \"unit.attributes.contractDate.label\": \"Datum Kaufvertrag\",\n \"unit.attributes.transferDate.label\": \"Datum Übergabe (geplant)\",\n \"unit.attributes.displayName.label\": \"Anzeigename\",\n \"unit.attributes.reportable.label\": \"In Berichten ausweisen\",\n \"unit.attributes.featured.label\": \"Ausgewählte Wohneinheit im Neubauportal\",\n \"unit.attributes.sampleLink.label\": \"Öffentlicher Link zum Teilen\",\n \"unit.attributes.buyerPortalLink.label\": \"Link zum Online-Konfigurator\",\n \"unit.attributes.marketingPortalLink.label\": \"Link zum Vertriebskonfigurator\",\n \"unit.attributes.meterNumberWaterCold.label\": \"Zählernummer Wasser (kalt)\",\n \"unit.attributes.meterNumberWaterWarm.label\": \"Zählernummer Wasser (warm)\",\n \"unit.attributes.meterNumberElectricity.label\": \"Zählernummer Strom\",\n \"unit.attributes.meterNumberGas.label\": \"Zählernummer Gas\",\n \"unit.attributes.unitFeatures.label\": \"Merkmale\",\n \"unit.attributes.externalId.label\": \"Externe ID\",\n \"unit.attributes.externalId.placeholder\": \"z.B. 123\",\n \"unit.attributes.configuratorDesign.label\": \"Konfigurator Design\",\n \"unit.attributes.project_storey_ids.label\": \"Stockwerke\",\n \"unit.attributes.salesStatus.label\": \"Verkaufsstatus\",\n \"unit.attributes.salesStatus.options.all\": \"Alle\",\n \"unit.attributes.salesStatus.options.vacant\": \"Frei\",\n \"unit.attributes.salesStatus.options.reserved\": \"Reserviert\",\n \"unit.attributes.salesStatus.options.notary\": \"Notartermin\",\n \"unit.attributes.salesStatus.options.sold\": \"Verkauft\",\n \"unit.attributes.salesStatus.error\": \"Bitte den Status auf \\\"Verkauft\\\" oder \\\"Notartermin\\\" setzen, wenn Erwerber vorhanden sind.\",\n \"unit.attributes.socialMediaTitleOverride.label\": \"Soziale Medien Titel\",\n \"unit.attributes.socialMediaDescriptionOverride.label\": \"Soziale Medien Beschreibung\",\n \"unit.attributes.accountManager.label\": \"Ansprechpartner Kundenbetreuung\",\n \"unit.attributes.accountManager.placeholder\": \"Wählen Sie den Ansprechpartner aus\",\n \"unit.attributes.accountManager.options.all\": \"Alle Ansprechpartner\",\n \"unit.attributes.accountManager.options.none\": \"Ohne Ansprechpartner\",\n \"unit.attributes.accountManager.filter.label\": \"Ansprechpartner\",\n \"unit.attributes.section.label\": \"Bauabschnitt\",\n \"unit.attributes.section.options.all\": \"Alle Bauabschnitte\",\n \"unit.actions.nominateContractor.title\": \"Nachunternehmen für Wohneinheit {display_name} nominieren\",\n \"unit.actions.edit\": \"Wohneinheit bearbeiten\",\n \"unit.actions.batchCreate\": \"Wohneinheiten anlegen\",\n \"unit.actions.unitLoading\": \"Wohneinheit wird geladen\",\n \"unit.actions.roomBookLoading\": \"Raumbuch wird geladen\",\n \"unit.actions.removeDialog.title\": \"Wohneinheit löschen\",\n \"unit.actions.removeDialog.message\": \"Wollen Sie die Wohneinheit wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"unit.actions.undeletableDialog.title\": \"Wohneinheit nicht löschbar\",\n \"unit.actions.undeletableDialog.message\": \"Für diese Wohneinheit sind aktive Vorgänge vorhanden und kann daher nicht gelöscht werden.\",\n \"unit.actions.addBuyer.label\": \"Erwerber hinzufügen\",\n \"unit.actions.upload.title\": \"Wohneinheiten hochladen\",\n \"unit.actions.upload.tooltip\": \"Wohneinheiten hochladen\",\n \"unit.actions.upload.error\": \"Fehler beim Upload\",\n \"unit.actions.upload.customDialogError\": \"Select all values\",\n \"unit.actions.customUpload.link.label\": \"Download example file\",\n \"unit.actions.download.tooltip\": \"Wohneinheiten herunterladen\",\n \"unit.actions.download.error\": \"Fehler beim Download\",\n \"unit.message.noRecords\": \"Entweder liegen noch keine Wohneinheiten für diesen Bauabschnitt vor oder diese werden durch den aktuellen Filter ausgeblendet.\",\n \"section.title.singular\": \"Bauabschnitt\",\n \"section.title.one\": \"Ein Bauabschnitt\",\n \"section.title.other\": \"Bauabschnitte\",\n \"section.title.all\": \"Alle\",\n \"section.actions.new\": \"Neuer Bauabschnitt\",\n \"section.actions.edit\": \"Bauabschnitt bearbeiten\",\n \"section.actions.removeDialog.title\": \"Bauabschnitt löschen\",\n \"section.actions.removeDialog.message\": \"Wollen Sie den Bauabschnitt wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"section.actions.undeletableDialog.title\": \"Bauabschnitt nicht löschbar\",\n \"section.actions.undeletableDialog.message\": \"Es wurden bereits Vorgänge für Wohneinheiten des Bauabschnitts gestartet. Bitte löschen Sie die nicht benötigten Wohneinheiten individuell.\",\n \"section.attributes.code.label\": \"Kürzel\",\n \"section.attributes.code.placeholder\": \"z.B. \\\"G4\\\"\",\n \"section.attributes.code.error\": \"Bitte geben Sie ein Kürzel für den Bauabschnitt an, das Kürzel wird für die Erstellung der Vorgangsummer benötigt.\",\n \"section.attributes.name.label\": \"Bezeichnung\",\n \"section.attributes.name.placeholder\": \"z.B. \\\"Gebäude 4\\\" oder \\\"2. Etage\\\"\",\n \"section.attributes.name.error\": \"Bitte geben Sie eine Bezeichnung an\",\n \"section.attributes.external_id.label\": \"Externe ID\",\n \"section.attributes.external_id.placeholder\": \"z.B. 123\",\n \"section.message.noRecords\": \"Es liegen noch keine Bauabschnitte vor.\",\n \"activity.label.one\": \"Prozess\",\n \"activity.label.other\": \"Prozesse\",\n \"activity.item.displayName\": \"Vorgangsnummer\",\n \"activity.item.nextStep\": \"Aktueller Arbeitsschritt\",\n \"activity.item.processTypeName\": \"Vorgangstyp\",\n \"activity.item.assignee.label\": \"Verantwortlicher\",\n \"activity.item.createdAt\": \"Begonnen am\",\n \"activity.scope.buyers\": \"Erwerber\",\n \"activity.scope.across\": \"Wohnungsübergreifend\",\n \"activity.title.one\": \"Vorgang\",\n \"activity.title.other\": \"Vorgänge\",\n \"activity.done\": \"Erledigt\",\n \"activity.close\": \"Bald fällig\",\n \"activity.overdue\": \"Fällig\",\n \"activity.amountOverdue\": \"{amount} überfällig\",\n \"activity.amountClose\": \"{amount} bald fällig\",\n \"activity.overdueDays\": \"{amount} Tage überfällig\",\n \"activity.dueDays\": \"Noch {amount} Tage\",\n \"activity.dueToday\": \"Heute fällig\",\n \"activity.dueTomorrow\": \"Morgen fällig\",\n \"activity.dueYesterday\": \"Seit gestern überfällig\",\n \"activity.tabs.timeline\": \"Timeline\",\n \"activity.tabs.cart\": \"Leistungsumfang\",\n \"activity.tabs.attachments\": \"Dokumente\",\n \"activity.tabs.costs\": \"Kosten\",\n \"activity.search.universal.placeholder\": \"Suche nach Erwerber, Wohneinheit oder Nachunternehmen...\",\n \"activity.sort.dueDateDesc\": \"Sortiert nach Frist\",\n \"activity.sort.turnoverDesc\": \"Sortiert nach Umsatz\",\n \"activity.sort.turnoverAsc\": \"Sortiert nach Umsatz\",\n \"activity.deadline.one\": \"Frist\",\n \"activity.deadline.other\": \"Fristen\",\n \"activity.deadline.noDeadlines\": \"Es gibt keine offenen Fristen für diesen Vorgang.\",\n \"activity.deadline.showMore\": \"{amount} weitere Fristen anzeigen ››\",\n \"activity.transitions.title\": \"Statuswechsel\",\n \"activity.assignments.suggestion.title\": \"Wechsel der Verantwortlichkeit\",\n \"activity.assignments.suggestion.message\": \"Der Arbeitsschritt \\\"{state}\\\" sollte von einem Benutzer der Rolle \\\"{role}\\\" übernommen werden. Bitte wählen Sie einen passenden Benutzer aus, um die Verantwortlichkeit zu wechseln.\",\n \"activity.contractor.title\": \"Fachplaner, Gewerke & Nachunternehmen\",\n \"activity.contractor.contractorNotConfigured\": \"Es wurden noch keine {trade}-Nachunternehmen im System konfiguriert.\",\n \"activity.contractor.contractorNotSet\": \"Nachunternehmen jetzt nominieren\",\n \"activity.contractor.removeDialog.title\": \"Nachunternehmen entfernen\",\n \"activity.contractor.removeDialog.message\": \"Wollen Sie das Nachunternehmen aus diesem Vorgang wirklich entfernen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"activity.timeline.event.create\": \"Der Vorgang wurde angelegt.\",\n \"activity.timeline.event.assignContractor\": \"\\\"{name}\\\" wurde hinzugefügt.\",\n \"activity.timeline.event.unassignContractor\": \"\\\"{name}\\\" wurde entfernt.\",\n \"activity.timeline.event.assignTrade\": \"Das Gewerk \\\"{name}\\\" wurde hinzugefügt.\",\n \"activity.timeline.event.uploadAttachment\": \"{type} \\\"{name}\\\" wurde hinzugefügt.\",\n \"activity.timeline.event.removeAttachment\": \"{type} \\\"{name}\\\" wurde entfernt.\",\n \"activity.timeline.event.unassignTrade\": \"Das Gewerk \\\"{name}\\\" wurde entfernt.\",\n \"activity.timeline.event.changeStatus\": \"Der Status wurde von \\\"{oldValue}\\\" auf \\\"{newValue}\\\" geändert.\",\n \"activity.timeline.event.changeDeadline\": \"Frist für Status \\\"{status}\\\" von {oldDeadline} auf {newDeadline} geändert.\",\n \"activity.timeline.event.changeSummary\": \"Die Beschreibung wurde von \\\"{oldValue}\\\" auf \\\"{newValue}\\\" geändert.\",\n \"activity.timeline.event.changeTitle\": \"Der Titel wurde von \\\"{oldValue}\\\" auf \\\"{newValue}\\\" geändert.\",\n \"activity.timeline.event.changeAssignee\": \"Der verantwortliche Benutzer wurde von \\\"{oldValue}\\\" auf \\\"{newValue}\\\" geändert.\",\n \"activity.timeline.event.taskCompleted\": \"Die Aufgabe \\\"{title} {delegatee}\\\" wurde erledigt.\",\n \"activity.timeline.event.priceInquirySubmitted\": \"Die Preisanfrage \\\"{title}\\\" wurde von {contractor} beantwortet.\",\n \"activity.timeline.event.note\": \"Kommentar von {user}\",\n \"activity.timeline.event.call\": \"Gesprächsnotiz von {user}\",\n \"activity.timeline.event.email\": \"Diese Email wurde von {from} gesendet.\",\n \"activity.timeline.event.deadline\": \"Frist\",\n \"activity.timeline.filter.label\": \"Filter\",\n \"activity.timeline.filter.exclusive\": \"nur\",\n \"activity.timeline.filter.reset\": \"Filter zurücksetzen\",\n \"activity.timeline.filter.showFutureEvents\": \"Künftige Ereignisse anzeigen\",\n \"activity.timeline.filter.showDeadlines\": \"Fristen anzeigen\",\n \"activity.timeline.filter.showStatusChanges\": \"Statusänderungen anzeigen\",\n \"activity.timeline.filter.showAuditEvents\": \"Änderungen am Vorgang anzeigen\",\n \"activity.timeline.filter.showMessages\": \"Emails anzeigen\",\n \"activity.timeline.filter.showMemos\": \"Kommentare und Gesprächsnotizen anzeigen\",\n \"activity.timeline.filter.showStakeholder\": \"Anzeige Email-Korrespondenz begrenzen auf ...\",\n \"activity.costs.trade\": \"Gewerk\",\n \"activity.costs.totalCosts\": \"Gesamtkosten\",\n \"activity.costs.numberOfLineItems\": \"Anzahl Positionen\",\n \"activity.costs.total.label\": \"Gesamt\",\n \"activity.costs.total.amount\": \"{amount} €\",\n \"activity.costs.noCosts\": \"Es liegen noch keine Kosten vor.\",\n \"activity.costs.summary\": \"Zusammenfassung\",\n \"activity.costs.position\": \"Positionen\",\n \"activity.costs.additionalCosts\": \"Mehrkosten\",\n \"activity.costs.additionalSales\": \"Mehrumsatz\",\n \"activity.costs.return\": \"Ertrag\",\n \"activity.costs.cart\": \"Cart\",\n \"activity.costs.net\": \"Netto\",\n \"activity.costs.gross\": \"Brutto\",\n \"activity.actions.new\": \"Vorgang\",\n \"activity.actions.add\": \"Vorgang erstellen\",\n \"activity.actions.add_with_name\": \"Vorgang \\\"{name}\\\" erstellen\",\n \"activity.actions.start\": \"Vorgang beginnen\",\n \"activity.actions.edit\": \"Vorgang bearbeiten\",\n \"activity.actions.showMore\": \"Mehr anzeigen ››\",\n \"activity.actions.showLess\": \"Weniger anzeigen ››\",\n \"activity.actions.changeStatus\": \"Status ändern\",\n \"activity.actions.proceedWith\": \"Weiter mit\",\n \"activity.actions.configureTransitions.label\": \"Status individuell festlegen\",\n \"activity.actions.delete.header\": \"Vorgang löschen\",\n \"activity.actions.delete.confirmationPrompt\": \"Bitte geben Sie Vorgangsnummer \\\"{display_name}\\\" zur Bestätigung ein:\",\n \"activity.actions.delete.confirmationMessagesPrompt\": \"Achtung! Mit dem Vorgang {messages_count, plural, one {wird eine Nachricht} other {werden # Nachrichten}} gelöscht! Bitte geben Sie zur Bestätigung die Anzahl Nachrichten ein:\",\n \"activity.actions.delete.body\": \"{count, plural, =0 {Keine Position wurde} one {Eine Position wurde} other {# Positionen wurden}} gelöscht.\",\n \"activity.export.title\": \"Vorgänge exportieren\",\n \"activity.export.byUnit\": \"Geordnet nach Wohneinheiten\",\n \"activity.export.byContractor\": \"Geordnet nach Nachunternehmen\",\n \"activity.attributes.title.label\": \"Bezeichnung\",\n \"activity.attributes.title.long\": \"Vorgangsbezeichnung\",\n \"activity.attributes.title.placeholder\": \"z.B. Türzarge um 180° drehen\",\n \"activity.attributes.title.error\": \"Bitte geben Sie eine Bezeichnung für den Vorgang an\",\n \"activity.attributes.summary.label\": \"Beschreibung der umzusetzenden Änderungen\",\n \"activity.attributes.summary.placeholder\": \"Hier können die Anforderungen detaillierter beschrieben werden.\",\n \"activity.attributes.room.label\": \"Raum\",\n \"activity.attributes.room.placeholder\": \"z.B. Küche\",\n \"activity.attributes.unit.label\": \"Wohneinheit\",\n \"activity.attributes.unit.placeholder\": \"Bitte auswählen\",\n \"activity.attributes.unit.noResultsMessage\": \"Keine Wohneinheit gefunden\",\n \"activity.attributes.price.gross.label\": \"Mehrkosten EW (brutto)\",\n \"activity.attributes.price.net.label\": \"Mehrkosten EW (netto)\",\n \"activity.attributes.price.error\": \"Bitte geben Sie einen Preis im Format \\\"0000,00\\\" an.\",\n \"activity.attributes.costs.net.label\": \"Mehrkosten NU (netto)\",\n \"activity.attributes.costs.gross.label\": \"Mehrkosten NU (brutto)\",\n \"activity.attributes.assignee.label\": \"Verantwortlicher Benutzer\",\n \"activity.attributes.startState.label\": \"Vorgang beginnen mit Schritt...\",\n \"activity.attributes.observer.label\": \"Beobachter\",\n \"activity.attributes.creation.filter.buyerSelection\": \"Nur Erwerberauswahl\",\n \"activity.attributes.creation.filter.selectable\": \"Alle Auswählbaren\",\n \"activity.attributes.creation.filter.all\": \"Alle Positionen\",\n \"activity.message.noResults\": \"Es wurde kein Vorgang gefunden.\",\n \"activity.message.transitions.ok\": \"Statuswechsel erfolgreich\",\n \"activity.message.transitions.illegal\": \"Der Statuswechsel kann nicht durchgeführt werden.\",\n \"activity.message.transitions.forbidden\": \"Der Statuswechsel kann nicht durchgeführt werden, da die Abwicklung mindestens einer Position bereits in einem anderen Vorgang fortgesetzt worden ist.\",\n \"activity.message.transitions.bulkUpdate\": \"Sollen alle Positionen in den Status: \\\"{state}\\\" überführt werden?\",\n \"activity.message.successors.forbidden\": \"Einige Positionen sind bereits einem anderen aktiven Vorgang zugeordnet worden. Daher konnte die Aktion nicht durchgeführt werden.\",\n \"activity.message.noLineItems.title\": \"Leerer Leistungsumfang\",\n \"activity.message.noLineItems.body\": \"Diesem Vorgang sind derzeit keine Positionen zugeordnet.\",\n \"activity.message.noLineItemsForThisFilter.title\": \"Keine Positionen für diesen Filter\",\n \"activity.message.noLineItemsForThisFilter.body\": \"Dieser Abschnitt enthält keine Positionen für das ausgewählte Gewerk\",\n \"activity.message.priceOnRequest.body\": \"Es gibt Produkte mit Preis auf Anfrage. Bitte prüfen Sie die angegebenen Preise.\",\n \"activity.message.priceOnRequest.tooltip\": \"Preis auf Anfrage\",\n \"activity.preview.generate\": \"Vorschau erstellen\",\n \"activity.preview.open\": \"Vorschau öffnen\",\n \"activity.preview.selectAndOpen\": \"Vorschau öffnen\",\n \"cartAssignment.dialog.unit.label\": \"Wohneinheit\",\n \"cartAssignment.dialog.progress.label\": \"Fortschritt\",\n \"cartAssignment.dialog.pending.label\": \"Ausstehend\",\n \"cartAssignment.dialog.pending.hint\": \"Anzahl der Positionen, die in der Abwicklung zurückliegen.\",\n \"cartAssignment.dialog.assignable.label\": \"Zuweisbar\",\n \"cartAssignment.dialog.assignable.hint\": \"Anzahl der Positionen, die diesem Vorgang zugewiesen werden können.\",\n \"cartAssignment.dialog.assigned.label\": \"Zugewiesen\",\n \"cartAssignment.dialog.assigned.hint\": \"Anzahl der Positionen, die diesem Vorgang zugewiesen sind\",\n \"cartAssignment.dialog.completed.label\": \"Erledigt\",\n \"cartAssignment.dialog.completed.hint\": \"Anzahl der Positionen, die bereits in der Abwicklung weiter vorangeschritten sind.\",\n \"cartAssignment.dialog.assignedDifferently.hint\": \"Positionen des Gewerkes aus dieser Wohneinheit sind einem anderen aktiven Vorgang zugewiesen. Ggf. sollte diese Wohneinheit nicht über diesen Vorgang abgewickelt werden.\",\n \"cartAssignment.actions.optionality.activate\": \"Optionale Position aktivieren\",\n \"cartAssignment.actions.optionality.deactivate\": \"Optionale Position deaktivieren\",\n \"cartAssignment.actions.optionality.activateTitle\": \"Aktivieren Sie diese optionale Position\",\n \"cartAssignment.actions.optionality.deactivateTitle\": \"Deaktivieren Sie diese optionale Position\",\n \"cartAssignment.actions.upgradeBundle.activate\": \"{upgradeBundleName} aktivieren\",\n \"cartAssignment.actions.upgradeBundle.deactivate\": \"{upgradeBundleName} deaktivieren\",\n \"cartAssignment.actions.upgradeBundle.activateTitle\": \"Aktivieren Sie {upgradeBundleName} Upgrade Bundle\",\n \"cartAssignment.actions.upgradeBundle.deactivateTitle\": \"Dektivieren Sie {upgradeBundleName} Upgrade Bundle\",\n \"cartAssignment.message.uneditable.title\": \"Bearbeitung des Leistungsumfangs\",\n \"cartAssignment.message.uneditable.body\": \"Der Leistungsumfang kann nicht mehr geändert werden, da der Vorgang bereits seinen Startzustand verlassen hat.\",\n \"cartAssignment.message.updated.title\": \"Bearbeitung des Leistungsumfangs\",\n \"cartAssignment.message.updated.body\": \"Der Leistungsumfang wurde erfolgreich aktualisiert.\",\n \"cartAssignment.message.already_assigned\": \"Die Position ist bereits einem aktivem Vorgang zugeordnet.\",\n \"cartAssignment.message.invalid_status\": \"Die Position befindet sich in einem Status, der diesem Vorgang nicht zugeordnet werden kann.\",\n \"cartAssignment.message.inactive\": \"Bitte aktivieren Sie diese Position, bevor die Abwicklung fortgesetzt werden kann.\",\n \"cartAssignment.message.replaced\": \"Diese Position wurde durch die Alternative {replacement} ersetzt und kann daher nicht beauftragt werden.\",\n \"cartAssignment.message.replacedShort\": \"Diese Position wurde durch eine Alternative ersetzt und kann daher nicht beauftragt werden.\",\n \"cartAssignment.message.unactivatable\": \"Diese Position kann nicht mehr aktiviert werden, da die Position {replacement} bereits aktiviert wurde.\",\n \"cartAssignment.message.confirmationAlert\": \"Achtung: Durch das deaktivieren der Position wird die aktuelle Erwerberauswahl verworfen.\",\n \"deadline.title.one\": \"Frist\",\n \"deadline.title.other\": \"Fristen\",\n \"deadline.actions.edit\": \"Fristen bearbeiten\",\n \"trade.title.one\": \"Gewerk\",\n \"trade.title.other\": \"Gewerke\",\n \"trade.actions.remove\": \"Gewerk entfernen\",\n \"trade.message.noContractor\": \"Hier ist noch kein Nachunternehmen hinzugefügt worden.\",\n \"notification.title.one\": \"Benachrichtigung\",\n \"notification.title.other\": \"Benachrichtigungen\",\n \"notification.amountMessages.zero\": \"Keine neue Nachrichten\",\n \"notification.amountMessages.one\": \"Eine neue Nachricht von\",\n \"notification.amountMessages.other\": \"neue Nachrichten von\",\n \"notification.assignment.label\": \"Der Vorgang wurde Ihnen zugewiesen.\",\n \"notification.memoCreated.label\": \"Eine Gesprächsnotiz / ein Kommentar wurde erfasst oder geändert\",\n \"notification.memoCreated.zero\": \"Keine Gesprächsnotiz / ein Kommentar wurde erfasst oder geändert\",\n \"notification.memoCreated.one\": \"Eine Gesprächsnotiz / ein Kommentar wurde erfasst oder geändert\",\n \"notification.memoCreated.other\": \"{count} Gesprächsnotizen / Kommentare wurden erfasst oder geändert\",\n \"notification.newMessages.one\": \"Es liegt ein neues Ereignis vor.\",\n \"notification.newMessages.other\": \"Es liegen {amount} neue Ereignisse vor.\",\n \"notification.statusChanged.label\": \"Der Vorgangsstatus wurde geändert\",\n \"notification.statusChanged.zero\": \"Der Vorgangsstatus wurde geändert\",\n \"notification.statusChanged.one\": \"Der Vorgangsstatus wurde geändert\",\n \"notification.statusChanged.other\": \"Der Vorgangsstatus wurde geändert\",\n \"notification.prospects.one\": \"Ein neuer Interessent für Wohneinheit\",\n \"notification.prospects.new\": \"Ein Interessent hat eine Ausstattungskonfiguration gespeichert\",\n \"notification.messageOutboundCreated.label\": \"Neue Nachrichten wurden gesendet\",\n \"notification.messageOutboundCreated.zero\": \"Neue Nachrichten wurden gesendet\",\n \"notification.messageOutboundCreated.one\": \"Eine neue Nachrichte wurde gesendet\",\n \"notification.messageOutboundCreated.other\": \"{count} Nachrichten wurden gesendet\",\n \"notification.noResults\": \"Es liegen keine Benachrichtigungen vor.\",\n \"notification.actions.dismiss\": \"Alles klar!\",\n \"notification.confirmation.title\": \"Clear all notifications\",\n \"notification.confirmation.message\": \"Are you sure?\",\n \"user.actions.add.label\": \"Benutzer hinzufügen\",\n \"user.actions.invite.label\": \"Benutzer einladen\",\n \"user.actions.editMembership.label\": \"Benutzer bearbeiten\",\n \"user.actions.resendInvitation.label\": \"Einladung nochmals senden\",\n \"user.actions.sendResetPasswordInstructions.label\": \"Anleitung senden\",\n \"user.actions.sendResetPasswordInstructions.title\": \"Passwort zurücksetzen\",\n \"user.actions.sendResetPasswordInstructions.body\": \"Wir senden Ihnen eine Anleitung zum Zurücksetzen Ihres Passwortes. Bitte geben Sie Ihre E-Mail Adresse an.\",\n \"user.actions.resetPassword.label\": \"Passwort speichern\",\n \"user.actions.resetPassword.title\": \"Neues Passwort vergeben\",\n \"user.actions.resetPassword.body\": \"Bitte vergeben Sie nun ein neues Passwort.\",\n \"user.actions.resetPassword.invalidToken.title\": \"Link abgelaufen\",\n \"user.actions.resetPassword.invalidToken.body\": \"Leider ist dieser Link nicht mehr gültig. Bitte fordern sie den Link zum Ändern ihres Kennwortes erneut an.\",\n \"user.actions.resetPassword.invalidToken.link\": \"Neuen Link anfordern\",\n \"user.actions.invitation.label\": \"Registrierung abschließen\",\n \"user.actions.invitation.welcome\": \"Herzlich Willkommen beim Online-Konfigurator!\",\n \"user.actions.invitation.body\": \"Bitte vergeben Sie ein sicheres Passwort und akzeptieren Sie die Nutzungsbedingungen, um den Online-Konfigurator zu nutzen.\",\n \"user.attributes.email.label\": \"E-Mail\",\n \"user.attributes.email.error\": \"Bitte geben Sie eine valide Email-Adresse an.\",\n \"user.attributes.name.label\": \"Name\",\n \"user.attributes.first_name.label\": \"Vorname\",\n \"user.attributes.last_name.label\": \"Nachname\",\n \"user.attributes.role.label\": \"Rolle\",\n \"user.attributes.incognito.label\": \"Incognito Modus\",\n \"user.attributes.masterdata_access.label\": \"Zugriff auf alle Erwerber- und Nachunternehmerdaten\",\n \"user.attributes.status.label\": \"Status\",\n \"user.attributes.password.label\": \"Passwort\",\n \"user.attributes.password.error\": \"Mindestens 6 Zeichen\",\n \"user.attributes.password_confirmation.label\": \"Passwort bestätigen\",\n \"user.attributes.password_confirmation.error\": \"Muss dem Passwort entsprechen\",\n \"user.attributes.phone.label\": \"Telefon\",\n \"user.attributes.mobile.label\": \"Mobil\",\n \"user.attributes.fax.label\": \"Fax\",\n \"user.attributes.position.label\": \"Position\",\n \"user.attributes.daily_digest.label\": \"Tägliche Fristenübersicht\",\n \"user.attributes.outbound_bcc.label\": \"Blindkopie ausgehender E-Mails\",\n \"user.attributes.inbound_fwd.label\": \"Weiterleitung eingehender E-Mails\",\n \"user.attributes.emailTemplate.label\": \"E-Mail Template\",\n \"user.attributes.image.label\": \"Profilbild\",\n \"user.attributes.lastSignIn.label\": \"Letzte Anmeldung\",\n \"user.roles.operator.label\": \"Benutzer\",\n \"user.roles.admin.label\": \"Administrator\",\n \"user.roles.api.label\": \"API Nutzer\",\n \"user.roles.contractor.label\": \"Nachunternehmer\",\n \"user.roles.Projektadmin.label\": \"Projekt Admin.\",\n \"user.status.active.label\": \"Aktiv\",\n \"user.status.inactive.label\": \"Inaktiv\",\n \"user.filter.showAll.label\": \"Alle Benutzer anzeigen\",\n \"user.filter.role.label\": \"Select a role...\",\n \"user.filter.text.label\": \"Enter search text...\",\n \"user.messages.alreadyInvited\": \"Ein Benutzer mit der angegebenen E-Mail Adresse ist diesem Konto bereits zugeordnet.\",\n \"user.messages.alreadyExists\": \"Ein Benutzer mit der angegebenen E-Mail Adresse ist bereits einem anderen Konto zugeordnet. Sie können diesen Benutzer zu diesem Konto einladen.\",\n \"user.messages.resetSuccess.title\": \"Neues Passwort gespeichert\",\n \"user.messages.resetSuccess.message\": \"Sie können Sich nun mit E-Mail Adresse und Ihrem neuen Passwort anmelden\",\n \"user.messages.resendInvitation.title\": \"Einladung gesendet\",\n \"user.messages.resendInvitation.message\": \"Die Einladung wurde erfolgreich an den Benutzer gesendet.\",\n \"user.messages.registered.title\": \"Registrierung erfolgreich abgeschlossen\",\n \"user.messages.registered.message\": \"Sie können sich nun mit Ihrem Passwort anmelden\",\n \"user.messages.statusChange.dropdownItem.activate\": \"Aktivieren\",\n \"user.messages.statusChange.dropdownItem.deactivate\": \"Deaktivieren\",\n \"user.messages.statusChange.title\": \"Status\",\n \"user.messages.statusChange.message.activated\": \"Benutzer aktiviert\",\n \"user.messages.statusChange.message.deactivated\": \"Benutzer deaktiviert\",\n \"product.title.one\": \"Produkt\",\n \"product.title.other\": \"Produkte\",\n \"product.title.catalog\": \"Produktkatalog\",\n \"product.title.suppliers\": \"Herstellerkataloge\",\n \"product.image.one\": \"Produktbild\",\n \"product.image.many\": \"Produktbilder\",\n \"product.attachment.title\": \"Produktvideos\",\n \"product.attachment.invalid\": \"Bitte einen vollständigen YouTube oder mp4 Link angeben\",\n \"product.attachment.actions.add\": \"Hinzufügen\",\n \"product.attachment.actions.remove\": \"Video entfernen\",\n \"product.attachment.file.title\": \"Dateien\",\n \"product.attachment.file.empty\": \"Es sind noch keine Dateien vorhanden\",\n \"product.attachment.file.listDialog.link\": \"Dateien ({n})\",\n \"product.attachment.file.listDialog.title\": \"Dateien\",\n \"product.attachment.file.confirmation.visibility.title\": \"Sichtbarkeit ändern\",\n \"product.attachment.file.confirmation.visibility.messagePublish\": \"Wollen Sie die Datei wirklich öffentlich aufrufbar machen?\",\n \"product.attachment.file.confirmation.visibility.messageHide\": \"Wollen Sie den öffentlichen Zugriff wirklich verweigern?\",\n \"product.attachment.file.confirmation.delete.title\": \"Datei löschen\",\n \"product.attachment.file.confirmation.delete.message\": \"Wollen Sie das Datei wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"product.attachment.file.dialog.title\": \"Datei hochladen\",\n \"product.attachment.file.dialog.visibility\": \"Öffentlich\",\n \"product.emptyProducts\": \"Es wurden keine Produkte gefunden!\",\n \"product.filters.title\": \"Produktsuche\",\n \"product.filters.term\": \"Suchbegriff\",\n \"product.filters.name\": \"Name\",\n \"product.filters.supplier\": \"Hersteller\",\n \"product.filters.series\": \"Produktlinie\",\n \"product.filters.productTypes\": \"Produkttypen\",\n \"product.filters.trades\": \"Gewerke\",\n \"product.filters.search\": \"Suche\",\n \"product.filters.productCatalog\": \"Produktkatalog\",\n \"product.actions.add.label\": \"Produkt anlegen\",\n \"product.actions.edit.label\": \"Produkt bearbeiten\",\n \"product.actions.clone.label\": \"Produkt duplizieren\",\n \"product.actions.removeImage.label\": \"Produktbild entfernen\",\n \"product.actions.uploadImage.label\": \"Produktbild hochladen\",\n \"product.actions.addSupplier.label\": \"Hersteller hinzufügen\",\n \"product.actions.removeDialog.title\": \"Produkt löschen\",\n \"product.actions.removeDialog.message\": \"Wollen Sie das Produkt wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"product.actions.undeletableDialog.title\": \"Produkt nicht löschbar\",\n \"product.actions.undeletableDialog.message\": \"Die Produkt wird bereits in Produktgruppen verwendet und kann nicht mehr gelöscht werden.\",\n \"product.actions.removeImageDialog.title\": \"Produktbild löschen\",\n \"product.actions.removeImageDialog.message\": \"Wollen Sie das Produktbild wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"product.actions.editSpecificationDialog.title\": \"Leistungsbeschreibung bearbeiten\",\n \"product.actions.editSpecificationDialog.removeConfirmation.title\": \"Leistungsbeschreibung zurücksetzen\",\n \"product.actions.editSpecificationDialog.removeConfirmation.message\": \"Wollen Sie die Leistungsbeschreibung für dieses Gewerk auf den Standard zurücksetzen?\",\n \"product.actions.addCatalog.label\": \"Produktkatalog hinzufügen\",\n \"product.catalogDialog.title\": \"Neuen Produktkatalog anlegen\",\n \"product.catalogDialog.attributes.name.label\": \"Name\",\n \"product.catalogDialog.attributes.description.label\": \"Beschreibung\",\n \"product.attributes.customFields.label\": \"Zusatzdaten\",\n \"product.attributes.customFields.empty\": \"Keine Zusatzdaten\",\n \"product.attributes.name.label\": \"Name\",\n \"product.attributes.display_name.label\": \"Name Online Konfigurator\",\n \"product.attributes.display_name.hint\": \"Im Online Konfigurator angezeigter Name\",\n \"product.attributes.display_hint.label\": \"Hinweis Online Konfigurator\",\n \"product.attributes.display_hint.hint\": \"Im Online Konfigurator angezeigter Hinweis\",\n \"product.attributes.description.label\": \"Produktbeschreibung\",\n \"product.attributes.description.specifications\": \"Leistungsbeschreibungen\",\n \"product.attributes.description.none\": \"Ohne Beschreibung\",\n \"product.attributes.technical_description.label\": \"Angebotstext\",\n \"product.attributes.sku.label\": \"Produktcode\",\n \"product.attributes.sku.none\": \"Ohne Produktcode\",\n \"product.attributes.supplier.label\": \"Hersteller\",\n \"product.attributes.supplier.placeholder\": \"Hersteller\",\n \"product.attributes.supplier.none\": \"Ohne Hersteller\",\n \"product.attributes.series.label\": \"Produktlinie\",\n \"product.attributes.series.none\": \"Ohne Produktlinie\",\n \"product.attributes.images.label\": \"Produktbilder\",\n \"product.attributes.references.label\": \"Verwendung\",\n \"product.attributes.references.missing\": \"Dieses Produkt wird derzeit in keiner Produktgruppe verwendet.\",\n \"product.attributes.custom_product_code.label\": \"Interner Produktcode\",\n \"product.attributes.supplier_price.label\": \"Preisempfehlung\",\n \"product.attributes.unit_price.label\": \"Einheitspreis\",\n \"product.attributes.product_type.label\": \"Produkttyp\",\n \"product.attributes.product_tags.label\": \"Tags\",\n \"product.attributes.product_tags.placeholder\": \"Tags auswählen\",\n \"product.attributes.design_line_ids.label\": \"Designlinien\",\n \"product.attributes.design_line_ids.placeholder\": \"Designlinien auswählen\",\n \"product.attributes.specifications.trade.specification\": \"Leistungsbeschreibung nach Gewerk\",\n \"product.attributes.supplier_url.label\": \"URL Produktwebsite\",\n \"product.attributes.vr_model_url.label\": \"URL VR Model (ifc, gltf, fbx)\",\n \"product.attributes.internal_hint.label\": \"Interner Hinweis\",\n \"product.attributes.color_code.label\": \"Color code\",\n \"product.attributes.master_product_id.label\": \"Master product\",\n \"product.attributes.product_catalog_id.label\": \"Produktkatalog\",\n \"product.attributes.external_id.label\": \"Externe ID\",\n \"product.attributes.external_id.placeholder\": \"z.B. 123\",\n \"price_catalog.title.add\": \"Preisliste anlegen\",\n \"price_catalog.title.edit\": \"Preisliste bearbeiten\",\n \"price_catalog.attributes.name.label\": \"Name\",\n \"price_catalog.attributes.name.placeholder\": \"Name der Preisliste\",\n \"price_catalog.attributes.source_id.label\": \"Datenübernahme\",\n \"price_catalog.attributes.source_id.placeholder\": \"Ohne Datenübernahme\",\n \"price_catalog.attributes.project_ids.label\": \"Projektzugriff\",\n \"price_catalog.attributes.project_ids.placeholder\": \"In welchen Projekten darf der Preiskatalog verwendet werden?\",\n \"price_catalog.attributes.external_id.label\": \"Externe ID\",\n \"price_catalog.attributes.external_id.placeholder\": \"z.B. 123\",\n \"project_catalog.title.add\": \"Ausstattungskatalog anlegen\",\n \"project_catalog.title.edit\": \"Ausstattungskatalog bearbeiten\",\n \"project_catalog.title.upload\": \"Ausstattungskatalog hochladen\",\n \"project_catalog.title.as_design_line\": \"Ausstattungskatalog als Designlinie\",\n \"project_catalog.attributes.name.label\": \"Name\",\n \"project_catalog.attributes.name.placeholder\": \"Name des Ausstattungskatalogs\",\n \"project_catalog.attributes.slug.label\": \"Slug\",\n \"project_catalog.attributes.slug.placeholder\": \"Slug des Ausstattungskatalogs\",\n \"project_catalog.attributes.product_catalog_id.label\": \"Produktkatalog\",\n \"project_catalog.attributes.product_catalog_id.placeholder\": \"Produktkatalog\",\n \"project_catalog.attributes.source_id.label\": \"Datenübernahme\",\n \"project_catalog.attributes.source_id.placeholder\": \"Ohne Datenübernahme\",\n \"project_catalog.attributes.project_ids.label\": \"Projektzugriff\",\n \"project_catalog.attributes.project_ids.placeholder\": \"In welchen Projekten darf der Ausstattungskatalog verwendet werden?\",\n \"project_catalog.attributes.user_ids.label\": \"Bearbeiter\",\n \"project_catalog.attributes.user_ids.placeholder\": \"Alle Benutzer\",\n \"project_catalog.attributes.no_current_user_id_warning_message\": \"Achtung: Derzeit sind Sie selbst nicht mehr als Bearbeiter aufgeführt. Nachdem Sie diese Änderung vorgenommen haben, können Sie den Katalog nicht mehr bearbeiten.\",\n \"project_catalog.actions.edit.label\": \"Ausstattungskatalog bearbeiten\",\n \"project_catalog.actions.upload.label\": \"Ausstattungskatalog hochladen\",\n \"product_group.title.one\": \"Produktgruppe\",\n \"product_group.title.other\": \"Produktgruppen\",\n \"product_group.actions.download_project_catalog\": \"Download Projektkatalog\",\n \"product_group.actions.download_price_catalog\": \"Download Preiskatalog\",\n \"product_group.actions.bulks_price_change\": \"Kosten und Preisen aktualisieren\",\n \"product_group.actions.download_product_catalog\": \"Download Produktkatalog\",\n \"product_group.actions.download_3d_products\": \"Download 3D-Produkte\",\n \"product_group.actions.supplier_integration\": \"Herstellerkataloge\",\n \"product_group.actions.add.label\": \"Produktgruppe anlegen\",\n \"product_group.actions.edit.label\": \"Produktgruppe bearbeiten\",\n \"product_group.actions.removeDialog.title\": \"Produktgruppe löschen\",\n \"product_group.actions.removeDialog.message\": \"Wollen Sie die Produktgruppe wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"product_group.actions.undeletableDialog.title\": \"Produktgruppe nicht löschbar\",\n \"product_group.actions.undeletableDialog.message\": \"Die Produktgruppe wird bereits in Raumbüchern verwendet und kann nicht mehr gelöscht werden.\",\n \"product_group.search.title\": \"Produkte importieren\",\n \"product_group.attributes.name.label\": \"Bezeichnung\",\n \"product_group.attributes.desciption.label\": \"Beschreibung\",\n \"product_group.attributes.price_strategy.label\": \"Preisberechnung\",\n \"product_group.attributes.price_strategy.alternate_label\": \"Einheit\",\n \"product_group.attributes.glencoe_product_category.label\": \"Produktkategorie 3D Mapping (intern)\",\n \"product_group.attributes.glencoe_product_category.placeholder\": \"Ordnen Sie eine 3D Produktkategoerie zu wenn Produktgruppe für 3D Relevant ist\",\n \"product_group.attributes.trades.label\": \"Gewerke\",\n \"product_group.attributes.external_id.label\": \"Externe ID\",\n \"product_group.attributes.external_id.placeholder\": \"z.B. 123\",\n \"product_group.attributes.room_types.label\": \"Für Räume\",\n \"product_group.attributes.room_types.placeholder\": \"Alle\",\n \"product_group.attributes.portal_offer.label\": \"Verfügbar im Online-Konfigurator\",\n \"product_group.attributes.portal_offer.hints.hidden\": \"Diese Produktgruppe ist im Online Konfigurator nicht sichtbar.\",\n \"product_group.attributes.portal_offer.hints.shown\": \"Diese Produktgruppe ist im Online Konfigurator sichtbar.\",\n \"product_group.attributes.marketing_portal_offer.label\": \"Verfügbar im Marketing Portal\",\n \"product_group.attributes.marketing_portal_offer.hints.hidden\": \"Diese Produktgruppe ist im Marketing Portal nicht sichtbar.\",\n \"product_group.attributes.marketing_portal_offer.hints.shown\": \"Diese Produktgruppe ist im Marketing Portal sichtbar.\",\n \"product_group.attributes.quantity_on_request.label\": \"Mengenermittlung nur auf Anfrage für den Erwerber\",\n \"product_group.attributes.quantity_hidden.label\": \"Mengen im Online Konfigurator ausblenden\",\n \"product_group.attributes.product_group_tags.label\": \"Tags\",\n \"product_group.attributes.product_group_tags.placeholder\": \"Tags auswählen\",\n \"product_group.attributes.costs.label\": \"Kosten\",\n \"product_group.attributes.price.label\": \"Preise\",\n \"product_group.price_strategies.title\": \"Preisberechnung\",\n \"product_group.price_strategies.choose_price_strategy\": \"Wählen Sie die genutzte Preisberechnung für den Individualwunsch\",\n \"product_group.price_strategies.on_request\": \"Preis auf Anfrage\",\n \"product_group.price_strategies.flat.label\": \"Pauschalpreis\",\n \"product_group.price_strategies.flat.price\": \"Preis (pauschal)\",\n \"product_group.price_strategies.flat.per_unit\": \" psch\",\n \"product_group.price_strategies.area.label\": \"Fläche (qm)\",\n \"product_group.price_strategies.area.price\": \"Preis (€) / qm\",\n \"product_group.price_strategies.area.per_unit\": \"/qm\",\n \"product_group.price_strategies.length.label\": \"Länge (lfm)\",\n \"product_group.price_strategies.length.price\": \"Preis (€) / lfm\",\n \"product_group.price_strategies.length.per_unit\": \"/lfm\",\n \"product_group.price_strategies.pieces.label\": \"Stück\",\n \"product_group.price_strategies.pieces.price\": \"Preis (€) / Stück\",\n \"product_group.price_strategies.pieces.per_unit\": \"/stk\",\n \"product_group.price_strategies.hour.label\": \"Stunde\",\n \"product_group.price_strategies.hour.price\": \"Preis (€) / Stunde\",\n \"product_group.price_strategies.hour.per_unit\": \"/std\",\n \"product_group.missing.short\": \"Keine Produktgruppen vorhanden\",\n \"product_group.missing.long\": \"Es wurden für dieses Bauprojekt noch keine Produktgruppen angelegt.\",\n \"product_group.warnings.productCategories.title\": \"Error loading categories\",\n \"product_group.warnings.productCategories.body\": \"Product categories coulden't be loaded.\",\n \"product_group.warnings.trades.title\": \"Für die folgenden Gewerke sind noch Kosten hinterlegt:\",\n \"product_group.warnings.trades.suggestion\": \"Setzen Sie diese Kosten zunächst auf 0,00 bevor Sie die Gewerke entfernen.\",\n \"product_group.warnings.segment.title\": \"Warnungen\",\n \"product_group.warnings.segment.message\": \"An der Produktoption {name} existieren Kosten für die Gewerke {trades}. Diese Gewerke sind dem Produkt derzeit nicht zugewiesen.\",\n \"product_group.warnings.segment.deleteCosts\": \"Kosten löschen\",\n \"product_group.warnings.segment.changeProduct\": \"Produkt ändern\",\n \"product_group.warnings.bulks_price_change.title\": \"Hinweis\",\n \"product_group.warnings.bulks_price_change.message\": \"Wenn Produkte Kosten für mehrere Gewerke haben, wird jeweils der höherer Aufschlag angewandt.\",\n \"product_group.menu.overview\": \"Produktübersicht\",\n \"product_group.menu.localProductSearch\": \"Aus Produktkatalog\",\n \"product_group.menu.globalProductSearch\": \"Neu importieren\",\n \"product_group.menu.addCustomProduct\": \"Manuell hinzufügen\",\n \"product_group.menu.additionalResultsHint\": \"Es werden {resultsShown} von insgesamt {resultsTotal} Ergebnissen angezeigt.\",\n \"product_filter_tags.title\": \"Produktfilter Tags verwalten\",\n \"design_lines.title\": \"Designlinien\",\n \"design_lines.add\": \"Linie anlegen\",\n \"design_lines.uploadImage\": \"Bild hochladen\",\n \"design_lines.dialog.title\": \"Neue Designlinie\",\n \"design_lines.dialog.name.label\": \"Name\",\n \"design_lines.dialog.title_field.label\": \"Anzeigename\",\n \"design_lines.dialog.title_action.label\": \"Titel des Auswahldialogs\",\n \"design_lines.dialog.description.label\": \"Beschreibung\",\n \"design_lines.dialog.confirmation_message.label\": \"Hinweis bei abweichender Produktauswahl\",\n \"design_lines.dialog.image.label\": \"Bild\",\n \"design_lines.dialog.summary.label\": \"Kurzbeschreibung\",\n \"design_lines.removeConfirmation.title\": \"Designlinie löschen\",\n \"design_lines.removeConfirmation.message\": \"Wollen Sie die Designlinie wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"design_lines.groups.add\": \"Gruppe anlegen\",\n \"design_lines.groups.sort_by.label\": \"Sortierung im Online Konfigurator\",\n \"design_lines.groups.sort_by.price\": \"Preis\",\n \"design_lines.groups.sort_by.position\": \"Position\",\n \"design_lines.groups.dialog.title\": \"Neue Designliniengruppe\",\n \"design_lines.groups.dialog.severity.label\": \"Verhalten\",\n \"design_lines.groups.dialog.scope.label\": \"Reichweite\",\n \"design_lines.groups.removeConfirmation.title\": \"DesignLinienGruppe löschen\",\n \"design_lines.groups.removeConfirmation.message\": \"Wollen Sie die DesignLinienGruppe wirklich löschen. Die Aktion kann nicht rückgängig gemacht werden.\",\n \"design_lines.severity.recommendation\": \"Empfehlung\",\n \"design_lines.severity.constraint\": \"Einschränkung\",\n \"design_lines.scope.room\": \"Raum\",\n \"design_lines.scope.unit\": \"Wohnung\",\n \"product_option.attributes.external_id.label\": \"Externe ID\",\n \"product_option.attributes.external_id.placeholder\": \"z.B. 123\",\n \"product_price.title.one\": \"Produkt\",\n \"product_price.title.other\": \"Produkte\",\n \"product_price.filter.active.label\": \"Nur aktive anzeigen\",\n \"product_price.filter.inactive.label\": \"Nur inaktive anzeigen\",\n \"product_price.filter.all.label\": \"Alle anzeigen\",\n \"product_price.actions.add.label\": \"Produkt hinzufügen\",\n \"product_price.actions.edit.label\": \"Produktpreis bearbeiten\",\n \"product_price.actions.removeDialog.title\": \"Produktpreis löschen\",\n \"product_price.actions.removeDialog.message\": \"Wollen Sie den Produktpreis wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"product_price.actions.undeletableDialog.title\": \"Produktpreis nicht löschbar\",\n \"product_price.actions.undeletableDialog.message\": \"Der Produktpreis wird bereits in Raumbüchern verwendet und kann nicht mehr gelöscht werden.\",\n \"product_price.actions.toggleExcessPrice.label\": \"Mehrmengen mit abweichendem Einheitspreis berechnen\",\n \"product_price.attributes.product.label\": \"Produkt\",\n \"product_price.attributes.price.gross\": \"Preis (brutto)\",\n \"product_price.attributes.price.net\": \"Preis (netto)\",\n \"product_price.attributes.price.buyer.gross\": \"Erwerberpreise (brutto)\",\n \"product_price.attributes.price.buyer.net\": \"Erwerberpreise (netto)\",\n \"product_price.attributes.price.unit.gross\": \"Einheitspreis (brutto)\",\n \"product_price.attributes.price.unit.net\": \"Einheitspreis (netto)\",\n \"product_price.attributes.price.unit.cost\": \"Einheitskosten (netto)\",\n \"product_price.attributes.excess_price.label\": \"Preis für Mehrmengen (brutto)\",\n \"product_price.attributes.trade.label\": \"Gewerk\",\n \"product_price.attributes.cost.label\": \"Kosten (netto)\",\n \"product_price.attributes.excess_cost.label\": \"Kosten Mehrmenge (netto)\",\n \"product_price.attributes.gross_cost.label\": \"Kosten (brutto)\",\n \"product_price.attributes.gross_excess_cost.label\": \"Kosten Mehrmenge (brutto)\",\n \"product_price.attributes.total_cost.label\": \"Gesamtkosten (netto)\",\n \"product_price.attributes.portal_offer.label\": \"Verfügbar im Online-Konfigurator\",\n \"product_price.attributes.glencoe_product.label\": \"Verfügbar im 3D-Konfigurator\",\n \"product_price.attributes.glencoe_product.hint\": \"Dieses Produkt soll im 3D Konfigurator konfigurierbar sein.\",\n \"product_price.attributes.glencoe_product_id.label\": \"3D Parameter\",\n \"product_price.attributes.glencoe_product_id.hint\": \"Lesbarer Parameter für das 3D Mapping.\",\n \"product_price.attributes.glencoe_product_id.error\": \"Pflichtfeld - nur Buchstaben, Zahlen und \\\"-\\\" sind erlaubt\",\n \"product_price.attributes.on_request.label\": \"Preis auf Anfrage\",\n \"product_price.attributes.on_request.hint\": \"Preis für den Erwerber nur auf Anfrage\",\n \"product_price.attributes.excess_quantity.label\": \"für Mehrmenge\",\n \"product_price.attributes.default_quantity.label\": \"für Standardmenge\",\n \"product_price.search.placeholder\": \"Name, Hersteller, Produktnummer, Beschreibung, ...\",\n \"product_price.search.supplier\": \"Hersteller\",\n \"product_price.search.productSeries\": \"Produktserie\",\n \"product_price.search.productType\": \"Produkttyp\",\n \"product_price.search.results.few.title\": \"Es wurden nur wenige Produkte zu diesem Suchbegriff gefunden.\",\n \"product_price.search.results.few.content\": \"Suche im globalen Herstellerkatalog fortsetzen\",\n \"product_price.search.results.none.title\": \"Es wurde kein Produkt zu diesem Suchbegriff gefunden.\",\n \"product_price.search.results.none.content\": \"Suche im globalen Herstellerkatalog fortsetzen\",\n \"product_price.undeletable\": \"Das Produkt wird bereits verwendet und kann nicht gelöscht werden.\",\n \"product_price.missing\": \"Es wurde noch keine Produkte hinzugefügt. Eine Produkt Gruppe muss mindestens ein Produkt enthalten, damit diese verwendet werden kann.\",\n \"product_price.products.empty\": \"Die Produktliste ist leer.\",\n \"productRules.headers.when\": \"Wenn\",\n \"productRules.headers.then\": \"Dann\",\n \"productRules.headers.status\": \"Aktiviert\",\n \"productRules.headers.scope\": \"Geltungsbereich\",\n \"productRules.headers.title\": \"Produktregel\",\n \"productRules.headers.description\": \"Beschreibung\",\n \"productRules.headers.hint\": \"Hinweis Raumbuch/Onlinekonfigurator\",\n \"productRules.status.active\": \"Regel ist aktiv\",\n \"productRules.status.deactivated\": \"Regel ist deaktiviert\",\n \"productRules.scopes.line_item\": \"Position\",\n \"productRules.scopes.sub_section\": \"Teilabschnitt\",\n \"productRules.scopes.section\": \"Hauptabschnitt\",\n \"productRules.scopes.room_book\": \"Raumbuch\",\n \"productRules.actions.removeDialog.title\": \"Regelsatz löschen\",\n \"productRules.actions.removeDialog.message\": \"Wollen Sie diesen Regelsatz löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"productRules.error.notInProductGroup\": \"Produkt gehört nicht zu dieser Produktgruppe!\",\n \"productRules.error.ruleViolation\": \"Diese Auswahl verletzt eine Produktregel mit der Position {sub_line_item_title}.\",\n \"productRules.warning.notAllAssinged\": \"Hinweis: Es wurde noch nicht für jedes Produkt eine Regel definiert.\",\n \"productRules.warning.productRepeating\": \"Folgende Produkte werden mehrfach auf der linken Regelseite verwendet. Dies wird zu Konflikten in Raumbuch und Online Konfigurator führen.\",\n \"login.title\": \"Anmeldung\",\n \"login.email\": \"Email\",\n \"login.password\": \"Passwort\",\n \"login.signIn\": \"Anmelden\",\n \"login.backToLogin\": \"Zurück zum Login\",\n \"login.error.title\": \"Hoppla!\",\n \"login.error.credentials\": \"Ungültige E-Mail oder Passwort\",\n \"login.error.unknown\": \"Es ist ein unbekannter Fehler aufgetreten, bitte Kontaktieren Sie Ihren technischen Support\",\n \"login.success.login\": \"Sie wurden erfolgreich Angemeldet\",\n \"login.success.requestPassword\": \"Wenn die Email in unserem System registriert ist, haben Wir Ihnen eine Mail zugesandt. Sollten sie in den nächsten Minuten kein Neueingang in Ihrem Postfach finden, prüfen Sie bitte die angegebene Email-Adresse.\",\n \"login.success.newPassword\": \"Ihr neues Passwort wurde erfolgreich gespeichert. Sie werden nun automatisch eingeloggt!\",\n \"login.success.generic\": \"Operation erfolgreich\",\n \"login.noAccountYet\": \"Noch kein Account?\",\n \"login.createAccountHint\": \"Sollten Sie noch keinen Account haben, prüfen Sie bitte Ihren Posteingang. Sie erhalten bei Einladung eine zusätzliche E-Mail, in der Sie das Passwort erstmalig vergeben können.\",\n \"login.forgottenPassword\": \"Passwort vergessen?\",\n \"login.newPasswordTitle\": \"Neues Passwort festlegen\",\n \"login.newPassword\": \"Neues Passwort\",\n \"login.newPasswordHint\": \"Bitte wählen Sie ihr neues Passwort und bestätigen es, um Tippfehler auszuschließen.\",\n \"login.verifyPassword\": \"Passwort bestätigen\",\n \"login.saveNewPassword\": \"Neues Passwort speichern\",\n \"login.enterEmail\": \"Bitte geben Sie Ihre E-Mail Adresse ein\",\n \"login.enterPassword\": \"Bitte geben Sie Ihr Passwort ein\",\n \"login.nextStep\": \"Weiter\",\n \"login.loginProcess\": \"Anmelden\",\n \"login.loginProcessEmailDescription\": \"Bitte geben Sie Ihre E-Mail Adresse an, um sich an der bau digital Platform anzumelden.\",\n \"login.loginProcessPasswordDescription\": \"Bitte geben Sie Ihr Passwort ein, um sich an der bau digital Platform anzumelden.\",\n \"login.email2\": \"E-Mail Adresse\",\n \"login.signToDifferentAccount\": \"Bei einem anderen Account anmelden\",\n \"login.authRedirect.signingIn\": \"Sie werden angemeldet\",\n \"login.deleteData.label\": \"Lokale Daten Löschen\",\n \"login.deleteData.success.message\": \"Lokale Daten wurden gelöschen\",\n \"login.deleteData.error.message\": \"Lokale Daten konnten nicht gelöscht werden\",\n \"dashboard.title\": \"PLANO-Dashboard\",\n \"dashboard.welcome\": \"Willkommen\",\n \"dropzone.defaultMessage\": \"Bild-Datei in dieses Feld ziehen\",\n \"dropzone.fallbackMessage\": \"Ihr Browser unterstützt keine Drag & Drop Datei-Uploads, bitte benutzen Sie eine aktuelle Version von Firefox oder Chrome.\",\n \"dropzone.invalidFileType\": \"Dieser Dateityp kann hier nicht verwendet werden.\",\n \"dropzone.fileTooBig\": \"Die ausgewählte Datei ist mit {{filesize}} zu gross. Die maximale Dateigröße beträgt {{maxFilesize}}.\",\n \"dropzone.responseError\": \"Der Server meldet einen Fehler zurück: {{statusCode}}\",\n \"dropzone.cancelUpload\": \"Upload abbrechen\",\n \"dropzone.cancelUploadConfirmation\": \"Wirklich abbrechen?\",\n \"dropzone.removeFile\": \"Bild entfernen\",\n \"dropzone.maxFilesExceeded\": \"Die maximale Anzahl der gleichzeitig hochzuladenden Dateien wurde überschritten.\",\n \"message.from\": \"Von\",\n \"message.to\": \"An\",\n \"message.call\": \"Gespräch mit\",\n \"message.success.title\": \"Erfolg\",\n \"message.success.body\": \"Der Vorgang wurde erfolgreich abgeschlossen.\",\n \"message.warning.title\": \"Achtung\",\n \"message.warning.body\": \"Es liegt eine Warnung vor.\",\n \"message.reply.subjectTemplate\": \"{prefix} {subject}\",\n \"message.reply.bodyTemplate\": \"\\\\n\\\\n\\\\nAm {date} schrieb {sender}:\\\\n\\\\n> {body}\",\n \"message.reply.bodyTemplateDraft\": \"{body}\",\n \"message.error.title\": \"Hoppla!\",\n \"message.error.body\": \"Hier ist etwas schiefgelaufen. Ein Fehler ist aufgetreten.\",\n \"message.error.body_long\": \"Beim Laden der Daten ist ein Fehler aufgetreten. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.\",\n \"message.errorForm.at_least_n_chars\": \"muss mindestens aus {n} Zeichen bestehen\",\n \"message.errorForm.max_n_chars\": \"maximal {n} Zeichen\",\n \"message.errorForm.required\": \"Pflichtfeld\",\n \"message.errorForm.url_format\": \"Ungültige URL\",\n \"message.errorForm.identifierFormat\": \"Nur Kleinbuchstaben, Zahlen und Punkte sind erlaubt.\",\n \"message.errorForm.email\": \"E-mail\",\n \"message.errorForm.mobile\": \"Bitte Nummer mit Ländervorwahl eingeben, z.B. +491560000000\",\n \"message.errorLogout.title\": \"Hoppla!\",\n \"message.errorLogout.body\": \"Hier ist etwas schiefgelaufen. Die Abmeldung ist gescheitert.\",\n \"message.errorLoad.title\": \"Hoppla!\",\n \"message.errorLoad.body\": \"Hier ist etwas schiefgelaufen. Die Daten konnten nicht geladen werden\",\n \"message.errorBackend.title\": \"Hoppla!\",\n \"message.errorBackend.body\": \"{translatedBody}\",\n \"message.display_error.title\": \"Hoppla!\",\n \"message.display_error.body\": \" Es ist folgender Fehler aufgetreten: {translatedBody}\",\n \"message.errorUnauthorized.title\": \"Ihre Sitzung ist abgelaufen.\",\n \"message.errorUnauthorized.body\": \"Sie wurden abgemeldet weil Ihre Sitzung die maximale Zeit überschritten hat. Bitte melden Sie sich erneut an.\",\n \"message.errorSave.title\": \"Speichern fehlgeschlagen\",\n \"message.errorSave.body\": \"Die Daten konnten nicht gespeichert werden.\",\n \"message.errorDelete.title\": \"Löschen fehlgeschlagen\",\n \"message.errorDelete.body\": \"Die Daten konnten nicht gelöscht werden.\",\n \"message.logout.title\": \"Auf Wiedersehen\",\n \"message.logout.body\": \"Sie wurden abgemeldet.\",\n \"message.loginDenied.title\": \"Es gab einen Fehler bei der Anmeldung\",\n \"message.loginDenied.body\": \"Die Zugangsdaten wurden nicht akzeptiert.\",\n \"message.redirectBuyerApp.title\": \"Sie werden in 5 Sekunden zu ihrer Anmeldungsseite weitergeleitet.\",\n \"message.redirectBuyerApp.body\": \"Bitte nutzen Sie die Anmeldungsseite, die Ihnen per Email mitgeteilt wurde.\",\n \"message.authenticationFailed.title\": \"Hoppla!\",\n \"message.authenticationFailed.body\": \"Die Anmeldung ist fehlgeschlagen. Bitte versuchen Sie es erneut.\",\n \"message.passwordRequestFailed.title\": \"Ein Fehler ist aufgetreten.\",\n \"message.passwordRequestFailed.body\": \"Die Anleitung konnte Ihnen leider nicht zugesendet werden. Wir wurden informiert und werden das Problem schnellstmöglich lösen.\",\n \"message.passwordResetFailed.title\": \"Hoppla!\",\n \"message.passwordResetFailed.body\": \"Ihr neues Passwort konnte nicht gespeichert werden. Wir wurden informiert und werden das Problem schnellstmöglich lösen.\",\n \"message.unitNotFound.title\": \"Hoppla!\",\n \"message.unitNotFound.body\": \"Die Wohneinheit konnte nicht gefunden werden.\",\n \"message.roomBookNotFound.title\": \"Hoppla!\",\n \"message.roomBookNotFound.body\": \"Es liegt kein Ausstattungskatalog für diese Wohneinheit vor.\",\n \"message.searchFailed.title\": \"Suche fehlgeschlagen!\",\n \"message.searchFailed.error\": \"Es ist ein Fehler beim Suchen aufgetreten: {error}\",\n \"message.searchFailed.unknown\": \"Es ist ein unbekannter Fehler beim Suchen aufgetreten\",\n \"message.on_office.title\": \"Übertragung an On Office\",\n \"message.on_office.error\": \"Es ist ein Fehler bei der Übertragung zu OnOffice aufgetreten: {error}\",\n \"message.on_office.success\": \"Die Daten wurden erfolgreich übertragen\",\n \"message.on_office.unknown\": \"Es ist ein unbekannter Fehler bei derÜbertragung zu OnOffice aufgetreten\",\n \"message.file_upload.success.title\": \"Upload abgeschlossen\",\n \"message.file_upload.success.body\": \"Die Datei wurde erfolgreich gespeichert\",\n \"message.file_upload.error.title\": \"Upload Fehler\",\n \"message.file_upload.error.body\": \"{msg}\",\n \"message.file_upload.error.time.title\": \"Es dauert zu lange\",\n \"message.file_upload.error.time.body\": \"Die Datenverarbeitung dauert zu lange\",\n \"message.invalid_mapping.title\": \"Ungültiges Mapping\",\n \"message.invalid_mapping.body\": \"Es gibt kein Mappimg für \\\"{paramName}\\\"\",\n \"loadingIndicator.loading\": \"Daten werden geladen...\",\n \"error.pageNotFound.title\": \"Diese Seite wurde nicht gefunden.\",\n \"error.accessDenied.title\": \"Sie haben leider keinen Zugriff auf diese Funktion.\",\n \"activerecord.errors.messages.record_not_unique\": \"Datensatz ist nicht eindeutig!\",\n \"activerecord.errors.models.attachment.attributes.file.spoofed_media_type\": \"Falscher Medien-Typ erkannt. Bitte überprüfen Sie die Dateiendung.\",\n \"activerecord.errors.models.buyer.attributes.mobile.invalid\": \"Bitte nutzen Sie das internationale Format, z.B. +490170111111\",\n \"activerecord.errors.models.macro.attributes.subject_template.no_whitespace_in_template_vars\": \"Bitte entfernen Sie die Leerzeichen in den Variablen der Vorlage \\\"Betreff\\\"\",\n \"activerecord.errors.models.macro.attributes.body_template.no_whitespace_in_template_vars\": \"Bitte entfernen Sie die Leerzeichen in den Variablen der Vorlage \\\"Nachricht\\\"\",\n \"activerecord.errors.models.product_group_rule_set.attributes.product_group_then.cannot_be_same\": \"darf nicht gleich der \\\"wenn\\\" Produktgruppe sein\",\n \"activerecord.errors.models.product_group_rule_set.attributes.rules.illegal_product_when\": \"\\\"wenn\\\" enthält falsche Produkte\",\n \"activerecord.errors.models.product_group_rule_set.attributes.rules.illegal_product_then\": \"\\\"dann\\\" enthält falsche Produkte\",\n \"activerecord.errors.models.product_group_rule_set.attributes.rules.illegal_products_when\": \"\\\"wenn\\\" enthält falsche Produkte\",\n \"activerecord.errors.models.product_group_rule_set.attributes.rules.illegal_products_then\": \"\\\"dann\\\" enthält falsche Produkte\",\n \"activerecord.errors.models.product_group_rule_set.attributes.rules.illegal_products\": \"enthält falsche Produkte\",\n \"activerecord.errors.models.product_group_rule_set.attributes.rules.format\": \"hat das falsche Format\",\n \"activerecord.errors.models.room_book_sub_line_item.not_bulk_updateable\": \"Position kann nicht bearbeitet werden, da abhängige Vorgänge existieren.\",\n \"activerecord.errors.models.room_book_sub_line_item.not_valid_project_catalog\": \"Ausstattungskatalog muss in Produktgruppe und Raumbuch gleich sein.\",\n \"activerecord.errors.models.room_book_line_item.not_bulk_updateable\": \"Position kann nicht bearbeitet werden, da abhängige Vorgänge existieren.\",\n \"activerecord.errors.models.product.attributes.product_manager_id.taken\": \"Ein anderes Produkt ist bereits mit diesen Daten synchronisiert!\",\n \"activerecord.models.Contractor\": \"Nachunternehmer\",\n \"activerecord.models.ContractorAssignment\": \"Nominierte Nachunternehmer\",\n \"activerecord.models.ContractorAssignmentRule\": \"Nachunternehmerzuweisung für Projekte, Bauabschnitte oder Wohneinheiten\",\n \"activerecord.models.Cost\": \"Kostenpositionen in Produkten oder Individualwünschen\",\n \"activerecord.models.PriceInquiry\": \"Digitale Preisanfragen\",\n \"activerecord.models.Product\": \"Produkte\",\n \"activerecord.models.ProductGroup\": \"Produktgruppen\",\n \"activerecord.models.ProductSpecification\": \"Leistungsbeschreibungen\",\n \"activerecord.models.ProjectDeadline\": \"Projektfristen\",\n \"activerecord.models.mail_template.one\": \"E-Mail Vorlage\",\n \"activerecord.models.mail_template.other\": \"E-Mail Vorlagen\",\n \"activerecord.models.cart.one\": \"Vorgang\",\n \"activerecord.models.cart.other\": \"Vorgänge\",\n \"activerecord.models.buyer_selection.one\": \"Erwerberauswahl\",\n \"activerecord.models.buyer_selection.other\": \"Erwerberauswahlen\",\n \"activerecord.attributes.mail_template.name\": \"Name\",\n \"activerecord.attributes.mail_template.role\": \"Rolle\",\n \"activerecord.attributes.mail_template.projects\": \"Projekte\",\n \"activerecord.attributes.mail_template.subject\": \"Betreff\",\n \"activerecord.attributes.mail_template.text\": \"Text\",\n \"activerecord.attributes.mail_template.html\": \"HTML\",\n \"activerecord.attributes.mail_template.sender_label\": \"Sender label\",\n \"activerecord.attributes.project_config_selection.exports_config\": \"Exporte\",\n \"activerecord.attributes.project_config_selection.emails_config\": \"E-Mails\",\n \"activerecord.attributes.project_config_selection.hooks_config\": \"Hooks\",\n \"activerecord.attributes.product_group_rule_set.product_group_then\": \"\\\"Dann\\\"-Produktgruppe\",\n \"activerecord.attributes.product_group_rule_set.product_group_when\": \"\\\"Wenn\\\"-Produktgruppe\",\n \"activerecord.attributes.product_group_rule_set.rules\": \"Regeln\",\n \"activerecord.attributes.product_group_rule_set.rule_scope\": \"Geltungsbereich\",\n \"activerecord.attributes.room_book_sub_line_item.carts\": \"Vorgänge\",\n \"activerecord.attributes.room_book_sub_line_item.derivations\": \"Ableitungen\",\n \"activerecord.attributes.room_book_line_item.derivations\": \"Ableitungen\",\n \"activerecord.attributes.room_book_section.derivations\": \"Ableitungen\",\n \"activerecord.attributes.product_price.buyer_selections\": \"Erwerberauswahlen\",\n \"buyerPortal.label.one\": \"Erwerberportal\",\n \"buyerPortal.label.other\": \"Erwerberportale\",\n \"buyerPortal.menu.units\": \"Meine Wohnungen\",\n \"buyerPortal.menu.products\": \"Ausstattung\",\n \"buyerPortal.menu.deadlines\": \"Fristen\",\n \"buyerPortal.menu.attachments\": \"Dokumente\",\n \"buyerPortal.menu.orderStatus\": \"Übersicht\",\n \"buyerPortal.menu.login\": \"Anmeldung\",\n \"buyerPortal.menu.logout\": \"Abmelden\",\n \"buyerPortal.menu.password\": \"Passwort vergessen?\",\n \"buyerPortal.mobileMenu.units\": \"Wohnungen\",\n \"buyerPortal.mobileMenu.products\": \"Ausstattung\",\n \"buyerPortal.mobileMenu.attachments\": \"Dokumente\",\n \"buyerPortal.mobileMenu.orderStatus\": \"Übersicht\",\n \"buyerPortal.mobileMenu.logout\": \"Abmelden\",\n \"buyerPortal.messages.loading\": \"Ihre Wohnung wird geladen\",\n \"buyerPortal.messages.somethingWentWrong\": \"Hoppla, hier ist etwas schiefgelaufen.\",\n \"buyerPortal.messages.generic_error\": \"Bitte wenden Sie sich an Ihren Kundenberater.\",\n \"buyerPortal.messages.missing_configuration\": \"Dieser Bereich wurde noch nicht konfiguriert, bitte wenden Sie sich an Ihren Kundenberater.\",\n \"buyerPortal.messages.noItemsInStatus\": \"Keine Positionen in diesem Status.\",\n \"buyerPortal.messages.accept_terms\": \"Hiermit akzeptiere ich die Allgemeinen Geschäftsbedingungen\",\n \"buyerPortal.messages.accept_data_policy\": \"Hiermit akzeptiere ich die Datenschutzbestimmungen.\",\n \"buyerPortal.messages.accept_terms_and_data_policy\": \"Hiermit akzeptiere ich die Allgemeinen Geschäftsbedingungen und die Datenschutzbestimmungen.\",\n \"buyerPortal.dialogs.unit_completion.header\": \"Konfiguration abschliessen\",\n \"buyerPortal.dialogs.unit_completion.content.initial\": \"Ihr Kundenbetreuer wird über den Abschluss der Konfiguration informiert und kommt bzgl. weiterer Schritte in Kürze auf Sie zu.\",\n \"buyerPortal.dialogs.unit_completion.content.success\": \"Ihr Kundenbetreuer wurde über den Abschluss der Konfiguration informiert und kommt in Kürze auf Sie zu.\",\n \"buyerPortal.dialogs.unit_completion.undecided_hint.header\": \"Offene Entscheidungen\",\n \"buyerPortal.dialogs.unit_completion.undecided_hint.body\": \"Hinweis: Es sind noch nicht alle Entscheidungen in Ihrer Wohnung getroffen worden.\",\n \"buyerPortal.dialogs.unit_completion.checkbox_label\": \"Ich kläre die offenen Entscheidungen im Gespräch mit meinem Kundenbetreuer.\",\n \"buyerPortal.dialogs.unit_completion.message_label\": \"Ihre Nachricht an Ihren Kundenbetreuer\",\n \"buyerPortal.actions.configure\": \"Konfigurieren\",\n \"buyerPortal.actions.configured\": \"Konfiguriert\",\n \"buyerPortal.actions.backToOverview\": \"Zurück\",\n \"buyerPortal.actions.selectProduct\": \"Als Favorit kennzeichnen\",\n \"buyerPortal.actions.selectedProduct\": \"Mein Favorit\",\n \"buyerPortal.actions.acceptSelection\": \"Auswahl übernehmen\",\n \"buyerPortal.actions.beginConfiguration\": \"Bemusterung starten\",\n \"buyerPortal.actions.beginSampling\": \"Bemusterung beginnen\",\n \"buyerPortal.actions.continueSampling\": \"Bemusterung fortsetzten\",\n \"buyerPortal.actions.reEnterMyFlat\": \"Meine Wohnung betreten\",\n \"buyerPortal.actions.getOffer\": \"Angebot einholen\",\n \"buyerPortal.actions.viewOffer\": \"Angebot ansehen\",\n \"buyerPortal.status.begin\": \"Los Geht's!\",\n \"buyerPortal.status.sampling\": \"Bemusterung\",\n \"buyerPortal.status.offer\": \"Angebot einholen\",\n \"buyerPortal.status.pending\": \"Entscheidung offen\",\n \"buyerPortal.status.chosen\": \"Produkt ausgewählt\",\n \"buyerPortal.status.selected\": \"Auswahl wurde getroffen\",\n \"buyerPortal.status.notSelected\": \"Verworfen\",\n \"buyerPortal.status.approved\": \"Kosten freigegeben\",\n \"buyerPortal.status.progress\": \"Umsetzung in Arbeit\",\n \"buyerPortal.status.done\": \"Umgesetzt\",\n \"buyerPortal.orderStatus.total\": \"Gesamtsumme (brutto)\",\n \"buyerPortal.attachments.header\": \"Dokumente\",\n \"buyerPortal.attachments.noResults\": \"Es wurden noch keine Dokumente für Sie bereitgestellt.\",\n \"buyerPortal.sections.total\": \"Mehrpreis der gesamten Auswahl inkl. MwSt.\",\n \"buyerPortal.sections.subtotal\": \"Mehrpreis {sectionTitle} inkl. MwSt.\",\n \"buyerPortal.sections.subtotalWithoutVat\": \"Mehrpreis {sectionTitle}\",\n \"buyerPortal.sections.priceOnRequestHint\": \"Für mindestens eine Auswahl liegt uns derzeit kein Preis vor. Diese Auswahl ist im Gesamtpreis nicht berücksichtigt.\",\n \"buyerPortal.sections.caution\": \"Hinweis\",\n \"buyerPortal.sections.onlyAdjustableByBuyer\": \"Die Auswahl kann nur durch den Erwerber geändert werden\",\n \"buyerPortal.footer.imprint\": \"Impressum\",\n \"buyerPortal.footer.dataPrivacyStatement\": \"Datenschutzerklärung\",\n \"buyerPortal.footer.terms\": \"Geschäftsbedingungen\",\n \"buyerPortal.roomBook.productOptions.messages.incompatible\": \"Ihr derzeitiger Produktwunsch ist mit der Auswahl {option} nicht kompatibel. Bitte ändern Sie Ihre Auswahl.\",\n \"buyerPortal.roomBook.productOptions.messages.missing\": \"Aufgrund Ihrer Auswahl {option} können wir Ihnen derzeit keine Produkte in dieser Kategorie zur Auswahl anbieten.\",\n \"buyerPortal.roomBook.productOptions.messages.filterHint\": \"Hinweis: Es werden nur Produkte angezeigt, die zu Ihrer Auswahl {option} kompatibel sind.\",\n \"buyerPortal.roomBook.productOptions.messages.unavailable\": \"Hinweis: Die nachfolgenden Produkte sind mit Ihrer Auswahl {option} nicht kompatibel und können derzeit nicht ausgewählt werden.\",\n \"buyerPortal.roomBook.productLine.messages.notRecommended\": \"Sie haben Produkte aus unterschiedlichen {type_plural} ({series}) gewählt. Wir empfehlen Ihnen in einer {type} zu bleiben.\",\n \"buyerPortal.roomBook.productLine.messages.incompatible\": \"Produkte aus unterschiedlichen {type_plural} ({series}) können nicht gemischt werden. Bitte ändern Sie Ihre Auswahl.\",\n \"buyerPortal.roomBook.productLine.messages.missing\": \"Aus der auswählten Ausstattungslinie {option} können wir Ihnen derzeit keine Produkte in dieser Kategorie anbieten.\",\n \"buyerPortal.roomBook.productLine.messages.filterHint\": \"Hinweis: Es werden nur Produkte der Ausstattungslinie {option} angezeigt.\",\n \"buyerPortal.roomBook.productLine.messages.unavailable\": \"Hinweis: Die nachfolgenden Produkte sind in der Ausstattungslinie {option} nicht verfügbar und können derzeit nicht ausgewählt werden. Wechseln Sie die Ausstattungslinie, wenn Sie eines dieser Produkte auswählen möchten.\",\n \"buyerPortal.roomBook.productLine.messages.required\": \"Bitte wählen Sie eine Ausstattungslinie bevor Sie mit der Bemusterung beginnen.\",\n \"buyerPortal.roomBook.productLine.actions.select\": \"Wählen Sie jetzt {displayName}\",\n \"buyerPortal.roomBook.buyerSelection.confirmation.title\": \"Ihre Auswahl\",\n \"buyerPortal.roomBook.buyerSelection.confirmation.message.reset\": \"Durch diese Auswahl müssen aufgrund baulicher Abhängigkeiten bereits getroffene Entscheidungen zurückgesetzt oder Standardleistungen durch alternative Leistungen ersetzt werden.\",\n \"buyerPortal.roomBook.buyerSelection.confirmation.message.extra\": \"Die Gesamtkosten Ihrer Auswahl ändert sich zusätzlich um {total}. Mehrkosten werden an den entsprechenden Stellen ausgewiesen und müssen von Ihnen bestätigt werden.\",\n \"buyerPortal.roomBook.buyerSelection.confirmation.message.extraOnRequest\": \"Hierdurch könnten zusätzliche Mehrkosten entstehen, die wir gerne individuell für Ihre Wohnung ermitteln. Dies wird an den betroffenen Positionen ausgewiesen.\",\n \"buyerPortal.roomBook.optionalLineItem.attributes.totalBase\": \"Basispreis\",\n \"buyerPortal.roomBook.optionalLineItem.hints.extraCosts\": \"Durch die weitergehende Konfiguration können weitere Kosten über den Basispreis hinaus entstehen.\",\n \"buyerPortal.roomBook.optionalLineItem.actions.select.label\": \"Alternative wählen\",\n \"buyerPortal.roomBook.optionalLineItem.actions.remove.title\": \"Sonderwunschpaket {title} entfernen\",\n \"buyerPortal.roomBook.optionalLineItem.actions.remove.message\": \"Wollen Sie wirklich das Sonderwunschpaket {title} aus Ihrer Wohnung entfernen?\",\n \"buyerPortal.roomBook.optionalLineItem.actions.noSelectionWarning.title\": \"Sonderwunschpaket {title} entfernen\",\n \"buyerPortal.roomBook.optionalLineItem.actions.noSelectionWarning.message\": \"Sie haben keine Auswahl getroffen, hierdurch wird das Sonderwunschpaket {title} wieder entfernt. Wollen Sie ohne Auswahl zurück?\",\n \"buyerPortal.roomBook.optionalLineItem.actions.add.title\": \"Sonderwunschpaket {title} hinzufügen\",\n \"buyerPortal.roomBook.optionalLineItem.actions.add.message\": \"Fügen Sie Ihrer Wohnung das optionale Sonderwunschpaket \\\"{title}\\\" hinzu.\",\n \"buyerPortal.roomBook.optionalLineItem.actions.replace.title\": \"Sonderwunschpaket {title} hinzufügen\",\n \"buyerPortal.roomBook.optionalLineItem.actions.replace.message\": \"Fügen Sie Ihrer Wohnung das optionale Sonderwunschpaket \\\"{title}\\\" hinzu.\",\n \"buyerPortal.roomBook.cardActions.decided\": \"Konfiguriert\",\n \"buyerPortal.roomBook.cardActions.undecided\": \"Konfigurieren\",\n \"buyerPortal.roomBook.cardActions.warning\": \"Ungültige Auswahl\",\n \"buyerPortal.roomBook.cardActions.disabled\": \"Nicht verfügbar\",\n \"buyerPortal.roomBook.cardActions.buyable\": \"Hinzufügen\",\n \"buyerPortal.roomBook.cardActions.replacement\": \"Alternative wählen\",\n \"buyerPortal.roomBook.cardActions.mandatory\": \"Pflichtposition\",\n \"buyerPortal.roomBook.price\": \"Preis\",\n \"buyerPortal.roomBook.sku\": \"Produktnr.\",\n \"buyerPortal.roomBook.filterByTradePlaceholder\": \"Filtern nach Gewerk\",\n \"buyerPortal.roomBook.noLineItems\": \"Dieser Abschnitt enthält keine Positionen für das ausgewählte Gewerk\",\n \"buyerPortal.productLineUpdate.confirmationDialog.title\": \"Wechsel der Ausstattungslinie\",\n \"buyerPortal.productLineUpdate.confirmationDialog.totalDebit\": \"Gesamt Mehrkosten: +\",\n \"buyerPortal.productLineUpdate.confirmationDialog.totalCredit\": \"Gesamt Minderkosten:\",\n \"buyerPortal.productLineUpdate.confirmationDialog.description\": \"

    Sie wählen ein Produkt einer anderen Ausstattungslinie.

    Sie wechseln von der Ausstattungslinie {prevLabel} zu {nextLabel}

    Folgende Produkte der Ausstattungslinie {nextLabel} werden automatisch für Sie gewählt.

    \",\n \"buyerPortal.productLineUpdate.confirmationDialog.actionHint\": \"

    Wenn Sie fortfahren werden die oben gelisteten Produkte automatisch für Sie ausgewählt.

    \",\n \"buyerPortal.productLineUpdate.confirmationDialog.actionLabel\": \"Weiter\",\n \"statistics.messages.empty.title\": \"Es liegen noch keine Kennzahlen vor\",\n \"projectDeadline.title.missing\": \"Es existieren noch keine Fristen auf dieser Ebene\",\n \"projectDeadline.actions.new\": \"Frist anlegen\",\n \"projectDeadline.actions.edit\": \"Frist bearbeiten\",\n \"projectDeadline.actions.override\": \"Jetzt überschreiben\",\n \"projectDeadline.actions.removeDialog.title\": \"Frist löschen\",\n \"projectDeadline.actions.removeDialog.message\": \"Wollen Sie diese und alle untergeordneten Fristen löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"projectDeadline.messages.close\": \"Bald fällig\",\n \"projectDeadline.messages.overdue\": \"Fällig\",\n \"projectDeadline.messages.expires_at\": \"Fristende: {expires_at}\",\n \"projectDeadline.attributes.title.label\": \"Titel\",\n \"projectDeadline.attributes.expires_at.label\": \"Fristende\",\n \"projectDeadline.attributes.expiration_scope.label\": \"Fristgegenstand\",\n \"projectDeadline.attributes.scheduled_for.label\": \"Frist für\",\n \"projectDeadline.attributes.trades.label\": \"Gewerkebezug\",\n \"projectDeadline.attributes.lock_trades.label\": \"Konfiguration für Gewerke sperren (Online Konfigurator)\",\n \"projectDeadline.attributes.description.label\": \"Beschreibung (Online Konfigurator)\",\n \"projectDeadline.attributes.reminder_active.label\": \"Automatische Erinnerung aktivieren\",\n \"projectDeadline.attributes.reminder_schedule.label\": \"Anzahl Tage vor Fristablauf\",\n \"projectDeadline.attributes.reminder_subject.label\": \"Betreff der Erinnerungsemail\",\n \"projectDeadline.attributes.reminder_text.label\": \"Nachricht der Erinnerungsemail\",\n \"projectDeadline.expiration_scopes.project.label\": \"Projekt\",\n \"projectDeadline.expiration_scopes.project.tooltip\": \"Die Frist bezieht sich auf das Projekt\",\n \"projectDeadline.expiration_scopes.section.label\": \"Bauabschnitt\",\n \"projectDeadline.expiration_scopes.section.tooltip\": \"Die Frist bezieht sich auf Bauabschnitte\",\n \"projectDeadline.expiration_scopes.unit.label\": \"Wohneinheit\",\n \"projectDeadline.expiration_scopes.unit.tooltip\": \"Die Frist bezieht sich auf Wohneinheiten\",\n \"emailTemplates.actions.removeDialog.title\": \"Email-Template löschen\",\n \"emailTemplates.actions.removeDialog.message\": \"Wollen Sie das Email-Template wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"resources.error.delete.title\": \"Die Daten konnten nicht gelöscht werden.\",\n \"resources.error.delete.body\": \"{reason}\",\n \"resources.error.update.title\": \"Die Daten konnten nicht gespeichert werden.\",\n \"resources.error.update.body\": \"{reason}\",\n \"messaging.title\": \"Nachricht\",\n \"messaging.recipient_options.no_email\": \"[Achtung: Keine E-Mail hinterlegt]\",\n \"messaging.attachment_picker.title\": \"Dateien einfügen\",\n \"messaging.attachment_picker.messages.documentTypeMissing\": \"Bitte wählen Sie zum Hochladen zunächst einen Dokumententyp aus.\",\n \"messaging.attachment_picker.messages.documentsMissing\": \"Keine Dokumente vorhanden. Bitte ändern Sie den Filter oder laden ein neues Dokument hoch.\",\n \"messaging.messages_container.messageThread.participantCount\": \"{participantCount, plural, =0 { } one { und ein weiterer} other { und # weitere}}\",\n \"messaging.messages_container.messageThread.attachmentCount\": \"{attachmentCount} {attachmentCount, plural, one {} other {}}\",\n \"messaging.messages_container.messageThread.messageCount\": \"{messageCount} {messageCount, plural, one {} other {}}\",\n \"messaging.messages_container.messageThread.confirmation.title\": \"Nachrichtenverlauf löschen\",\n \"messaging.messages_container.messageThread.confirmation.body\": \"Wollen Sie den Nachrichtenverlauf wirklich löschen. Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"messaging.messages_container.buttons.write\": \"Schreiben\",\n \"messaging.messages_container.header.new_message\": \"Neue Nachricht\",\n \"messaging.messages_container.menu.inbox\": \"Posteingang\",\n \"messaging.messages_container.menu.outbox\": \"Postausgang\",\n \"messaging.messages_container.menu.contacts\": \"Kontakte\",\n \"messaging.messages_container.menu.filters\": \"Filter\",\n \"messaging.messages_container.messages.no_messages_found\": \"Es wurden keine Nachrichten gefunden.\",\n \"messaging.messages_container.messages.error_loading_messages\": \"Es ist ein Fehler aufgetreten und die Nachrichten konnten nicht geladen werden. Bitte versuchen Sie, die Seite zu einem späteren Zeitpunkt erneut zu laden.\",\n \"messaging.messages_container.messages.message_sent\": \"Die Nachricht wurde erfolgreich gesendet.\",\n \"messaging.messages_container.placeholder.search_term\": \"Suchbegriff\",\n \"messaging.messages_container.popup.unit_selection_disabled\": \"Bitte wählen Sie zunächst ein Projekt.\",\n \"messaging.message_container.buttons.reply\": \"Antworten\",\n \"messaging.message_container.buttons.tooltips.mark_read\": \"Ungelesen - klicken, um Nachricht als gelesen zu markieren\",\n \"messaging.message_container.buttons.tooltips.mark_unread\": \"Gelesen - klicken, um Nachricht als ungelesen zu markieren\",\n \"messaging.message_container.buttons.tooltips.select_project\": \"Bitte ordnen Sie die Nachricht einem Projekt zu, bevor Sie fortfahren.\",\n \"messaging.message_container.buttons.showOriginal\": \"Original E-Mail anzeigen\",\n \"messaging.message_container.empty_references.no_internal\": \"Keine internen Teilnehmer\",\n \"messaging.message_container.empty_references.no_external\": \"Keine externen Teilnehmer\",\n \"messaging.message_container.empty_references.no_project\": \"Kein zugeordnetes Projekt\",\n \"messaging.message_container.empty_references.no_unit\": \"Keine zugeordnete WE\",\n \"messaging.message_container.empty_references.no_activity\": \"Kein zugeordneter Vorgang\",\n \"messaging.message_container.empty_references.add_new_contact\": \"Neuen Kontakt anlegen\",\n \"messaging.message_container.empty_references.no_results_found\": \"Keine Ergebnisse gefunden\",\n \"messaging.message_container.header.reply\": \"Antwort schreiben\",\n \"messaging.message_container.header.new_message\": \"Neue Nachricht\",\n \"messaging.message_container.menu.back\": \"Zurück zum Postfach\",\n \"messaging.message_container.menu.internal\": \"Intern\",\n \"messaging.message_container.menu.external\": \"Extern\",\n \"messaging.message_container.menu.project\": \"Projekt\",\n \"messaging.message_container.menu.unit\": \"Wohneinheit\",\n \"messaging.message_container.menu.activity\": \"Vorgang\",\n \"messaging.message_container.thread.wrote\": \"schrieb\",\n \"messaging.message_container.title\": \"E-Mail - SWM\",\n \"messaging.drafts.title\": \"Meine Entwürfe\",\n \"messaging.drafts.no_subject\": \"kein Betreff\",\n \"messaging.drafts.no_drafts\": \"Es wurden keine Entwürfe gefunden.\",\n \"messaging.drafts.menu.title\": \"Meine Entwürfe\",\n \"messaging.drafts.delete.title\": \"Entwurf löschen\",\n \"messaging.drafts.delete.message\": \"Wollen Sie den Entwurf wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden!\",\n \"messaging.drafts.cancel.title\": \"Entwurf verlassen\",\n \"messaging.drafts.cancel.message\": \"Achtung! Ungespeicherte Änderungen gehen verloren. Wollen Sie Ihre Änderungen speichern oder verwerfen?\",\n \"messaging.drafts.messages.saved.title\": \"Entwurf gespeichert\",\n \"messaging.drafts.messages.saved.body\": \"Ihr Entwurf wurde erfolgreich gespeichert\",\n \"messaging.drafts.messages.deleted.title\": \"Entwurf verworfen\",\n \"messaging.drafts.messages.deleted.body\": \"Ihr Entwurf wurde verworfen\",\n \"messaging.send_status.title\": \"Sendestatus\",\n \"configurator.title\": \"3D-Konfigurator\",\n \"configurator.missingMapping\": \"Produkt ist wählbar, wird aber nicht im 3D-Konfigurator abgebildet.\",\n \"configurator.disclaimer\": \"Die Visualisierung der Produkte und Räume zeigt unverbindliche Darstellungen. Farbtöne können je nach Monitor von der Realität abweichen.\",\n \"configurator.enterRoom\": \"Raum betreten\",\n \"configurator.stayHere\": \"Weiter Umschauen\",\n \"configurator.samplingProgress\": \"Bemusterungsfortschritt\",\n \"configurator.dashboard\": \"Dashboard\",\n \"configurator.switchRoom\": \"Raum wechseln\",\n \"configurator.preview\": \"3D-Vorschau\",\n \"configurator.productDetails\": \"Info\",\n \"configurator.menu\": \"Menü\",\n \"configurator.welcome.heading\": \"Hallo und Willkommen!\",\n \"configurator.welcome.body\": \"In diesem Bereich können Sie nun Ihre eigene Wohnung individuell gestalten, Viel Spaß!\",\n \"batchEdit.title\": \"Suche\",\n \"batchEdit.searchStatus\": \"{min, number} - {max, number} von {total, number}\",\n \"batchEdit.table_header.product_group.name\": \"Produkt­gruppe\",\n \"batchEdit.table_header.product\": \"Produkt­auswahl\",\n \"batchEdit.table_header.product.sku\": \"Produkt-SKU\",\n \"batchEdit.table_header.default_product\": \"Standard­auswahl\",\n \"batchEdit.table_header.default_product.sku\": \"Standard-SKU\",\n \"batchEdit.table_header.buyer_selection_product\": \"Konfigurator­auswahl\",\n \"batchEdit.table_header.buyer_selection_product.sku\": \"Konfiguratorauswahl-SKU\",\n \"batchEdit.table_header.quantity\": \"Menge\",\n \"batchEdit.table_header.default_quantity\": \"Standard­menge\",\n \"batchEdit.table_header.section.title\": \"Sektion\",\n \"batchEdit.table_header.unit\": \"Wohneinheit / Raumbuch\",\n \"batchEdit.table_header.title\": \"Titel\",\n \"batchEdit.table_header.room_book.template\": \"Vorlage\",\n \"batchEdit.header.select_operation\": \"Bearbeitungsvorgang auswählen\",\n \"batchEdit.header.delete\": \"Positionen löschen\",\n \"batchEdit.header.success\": \"Vorgang erfolgreich\",\n \"batchEdit.header.edit\": \"Positionen bearbeiten\",\n \"batchEdit.header.confirm_edit\": \"Änderungen bestätigen\",\n \"batchEdit.buttons.select_operation\": \"Weiter\",\n \"batchEdit.buttons.success\": \"Schließen\",\n \"batchEdit.buttons.cancel\": \"Abbrechen\",\n \"batchEdit.buttons.delete\": \"Löschen\",\n \"batchEdit.buttons.search\": \"Suchen\",\n \"batchEdit.buttons.edit\": \"Weiter\",\n \"batchEdit.buttons.editItems\": \"Bearbeiten\",\n \"batchEdit.buttons.confirm_edit\": \"Übernehmen\",\n \"batchEdit.messages.noSelection.label\": \"Keine Auswahl\",\n \"batchEdit.messages.noResults.header\": \"Kein Suchergebnis\",\n \"batchEdit.messages.noResults.content\": \"Die Suche ergab keine Treffer\",\n \"batchEdit.messages.disabledEdit.header\": \"Bearbeiten der Auswahl nicht möglich\",\n \"batchEdit.messages.disabledEdit.content\": \"Positionen aus unterschiedlichen Produktgruppen sowie Individualwünsche können nicht bearbeitet werden.\",\n \"batchEdit.messages.disabledDelete.header\": \"Löschen der Auswahl nicht möglich\",\n \"batchEdit.messages.disabledDelete.content\": \"Positionen, für die ein Vorgang angelegt wurde, können nicht gelöscht werden.\",\n \"batchEdit.messages.noUndo\": \"Dieser Vorgang kann nicht rückgängig gemacht werden.\",\n \"batchEdit.messages.disabledCheckbox\": \"Die Position kann zur Zeit nicht bearbeitet werden\",\n \"batchEdit.messages.itemsSelected\": \"Ausgewählte Positionen: \",\n \"batchEdit.messages.select_operation\": \"Bitte wählen Sie die Aktion aus, die Sie durchführen möchten:\",\n \"batchEdit.messages.delete\": \"Möchten Sie die folgenden Positionen wirklich löschen?\",\n \"batchEdit.messages.edit\": \"Möchten Sie die folgenden Änderungen übernehmen?\",\n \"batchEdit.messages.change_default_product\": \"Standardprodukt ändern\",\n \"batchEdit.messages.change_default_quantity\": \"Standardmenge ändern\",\n \"batchEdit.messages.change_product\": \"Die Produktauswahl ändern\",\n \"batchEdit.messages.change_quantity\": \"Menge ändern\",\n \"batchEdit.messages.success.delete.title\": \"Löschen erfolgreich!\",\n \"batchEdit.messages.success.delete.body\": \"{count, plural, =0 {Keine Position wurde} one {Eine Position wurde} other {# Positionen wurden}} gelöscht.\",\n \"batchEdit.messages.success.update.title\": \"Bearbeiten erfolgreich!\",\n \"batchEdit.messages.success.update.body\": \"{count, plural, =0 {Keine Position wurde} one {Eine Position wurde} other {# Positionen wurden}} geändert.\",\n \"batchEdit.labels.checkbox.newDefaultQuantity\": \"Standardmenge ändern\",\n \"batchEdit.labels.checkbox.newDefaultProductId\": \"Standardprodukt ändern\",\n \"batchEdit.labels.checkbox.newQuantity\": \"Menge ändern\",\n \"batchEdit.labels.checkbox.newProductId\": \"Produktauswahl ändern\",\n \"batchEdit.labels.product_group\": \"Produktgruppe\",\n \"batchEdit.labels.product\": \"Produkt\",\n \"batchEdit.labels.default_product\": \"Standardprodukt\",\n \"batchEdit.labels.full_text_search\": \"Volltextsuche\",\n \"batchEdit.labels.templates_only\": \"nur Raumbuchvorlagen\",\n \"batchEdit.labels.no_templates\": \"ohne Raumbuchvorlagen\",\n \"batchEdit.priceStrategy.length\": \"{quantity} m\",\n \"batchEdit.priceStrategy.pieces\": \"{quantity} Stk.\",\n \"batchEdit.priceStrategy.area\": \"{quantity} m²\",\n \"batchEdit.priceStrategy.hour\": \"{quantity} Std.\",\n \"batchEdit.priceStrategy.flat\": \"psch.\",\n \"batchEdit.priceStrategy.individual\": \"k.A.\",\n \"batchEdit.drop_down.product_groups_subheader\": \"{count, plural, =0 {Keine Produkte} one {# Produkt} other {# Produkte}}\",\n \"batchEdit.placeholder.newDefaultQuantity\": \"Standardmenge\",\n \"batchEdit.placeholder.newDefaultProductId\": \"Standardprodukt wählen\",\n \"batchEdit.placeholder.newQuantity\": \"Menge\",\n \"batchEdit.placeholder.newProductId\": \"Produkt wählen\",\n \"batchEdit.placeholder.select_product_group\": \"Produktgruppe wählen\",\n \"batchEdit.placeholder.select_product\": \"Produkt wählen\",\n \"batchEdit.placeholder.select_default_product\": \"Standardprodukt wählen\",\n \"batchEdit.placeholder.select_new_default\": \"Neues Standardprodukt\",\n \"batchEdit.placeholder.select_new_product\": \"Neue Produktauswahl\",\n \"batchEdit.radio.delete\": \"Löschen\",\n \"batchEdit.radio.edit\": \"Bearbeiten\",\n \"supplierIntegration.loading\": \"Herstellerkatalog wird geladen ...\",\n \"supplierIntegration.missing\": \"Es wurden keine Herstellerkataloge gefunden\",\n \"supplierIntegration.transfer.title\": \"Produkte übernommen\",\n \"supplierIntegration.transfer.body\": \"{count, plural, =0 {Alle Produkte sind bereits im Produktkatalog vorhanden.} one {Ein Produkt wurde erfolgreich in den Produktkatalog übernommen.} other {# Produkte wurden erfolgreich in den Produktkatalog übernommen.}}\",\n \"replaced_by\": \"Ersetzt durch:\",\n \"contractor_portal.footer.imprint\": \"Impressum\",\n \"contractor_portal.footer.data_privacy_statement\": \"Datenschutzerklärung\",\n \"contractor_portal.footer.terms\": \"Geschäftsbedingungen\",\n \"contractor_portal.price_inquiry.error.header\": \"Hoppla!\",\n \"contractor_portal.price_inquiry.error.Record not found!\": \"Dieses Preisformular wurde nicht gefunden!\",\n \"contractor_portal.price_inquiry.submitted_mail_subject\": \"sonderwunsch manager | Neues Preisangebot eingegangen\",\n \"contractor_portal.invitation.subject\": \"Einladung von %{sender_name} von %{account_name}\",\n \"edit_product_prices.action.success\": \"Die Preise wurden erfolgreich für übernommen\",\n \"edit_product_prices.action.text\": \"Produktpreise bearbeiten\",\n \"edit_product_prices.header.title\": \"Produktpreise für {catalogName} bearbeiten\",\n \"edit_product_prices.table.header.product_information\": \"Produktinformation\",\n \"edit_product_prices.table.header.cost_net\": \"Nachunternehmen Kosten Netto\",\n \"edit_product_prices.table.header.price.gross\": \"Preise Brutto\",\n \"edit_product_prices.table.header.price.net\": \"Preise Netto\",\n \"edit_product_prices.table.header.trade\": \"Gewerk\",\n \"edit_product_prices.filter.start_search\": \"Um die Suche zu starten, fügen Sie Kriterien zum Filter hinzu.\",\n \"edit_product_prices.filter.no_result_found\": \"Keine Produkte gefunden.\",\n \"edit_product_prices.filter.result_count\": \"gefundene Ergebnisse: {count} {count, plural, one {Produkt} other {Produkte}}\",\n \"edit_product_prices.filter.placeholder\": \"Geben Sie Kriterien ein, um die Produkte zu Filtern: Gewerk, Produktgruppe, Textsuche...\",\n \"edit_product_prices.filter.options.trade\": \"Gewerk | {tradeName}\",\n \"edit_product_prices.filter.options.product_group\": \"Produktgruppe | {pgName}\",\n \"edit_product_prices.filter.options.fullText\": \"Text | {searchQuery}\",\n \"edit_product_prices.filter.options.onlyDefault\": \"nur Standardprodukte\",\n \"contractor_portal_link\": \"Hier gelangen Sie in unser Portal: %{url}\",\n \"contractor_portal_link_html\": \"Hier gelangen Sie in unser Portal: %{url}\",\n \"errors.something_went_wrong\": \"Etwas ist schief gelaufen\",\n \"errors.no_contractors_for_activity\": \"Es wurde kein Nachunternehmer nominiert %{id}!\",\n \"errors.no_matching_contractors_for_activity\": \"Es wurden keine Nachunternehmer zu diesen Gewerken gefunden werden! Bitte stellen Sie sicher, dass sie Nachunternehmer für diese Gewerke definiert haben: %{trades}\",\n \"errors.no_matching_trade_for_recipient\": \"Es konnte kein Gewerk für den Nachunternehmer gefunden werden! Bitte stellen Sie sicher, dass der Nachunternehmer mit der E-Mail-Adresse %{email} für eines dieser Gewerke nominiert wurde: %{trades}.\",\n \"errors.contractor_user_already_exists\": \"Die digitale Preisfrage für '%{email}' kann nicht erstellt werden, da es bereits einen Benutzer mit dieser E-Mail-Adresse gibt.\",\n \"errors.account.trade_in_use\": \"Das Gewerk '%{trade_label}' ist in Verwendung und kann daher nicht gelöscht werden. Um es zu löschen, müssen die Verwendungen in %{models} gelöscht werden.\",\n \"errors.mail_delivery_failed\": \"E-Mail-Zustellung fehlgeschlagen: %{delivery_status}\",\n \"errors.unknown\": \"unbekannt\",\n \"errors.contractor_not_present\": \"Bitte nominieren Sie einen Nachunternehmer für diesen Vorgang.\",\n \"errors.contractor_has_no_price_inquiries\": \"Es konnte kein Nachunternehmer für diese Preisanfrage gefunden werden.\",\n \"upload_quantities_dialog.title\": \"Mengenänderung\",\n \"upload_quantities_dialog.error.title\": \"Es sind Fehler beim Verarbeiten der Datei aufgetreten\",\n \"upload_quantities_dialog.error.unknown_section\": \"Unbekannte Bauabschnitte {count}\",\n \"upload_quantities_dialog.error.unknown_units\": \"Unbekannte Wohneinheiten {count}\",\n \"upload_quantities_dialog.error.unknown_qunatity\": \"Unbekannte Standardmengen {count}\",\n \"upload_quantities_dialog.error.unknown_default_quantity\": \"Unbekannte Mehrmengen {count}\",\n \"affiliates.upscale.title\": \"Jeder verdient ein gutes Interior Design.\",\n \"affiliates.upscale.header\": \"Entdecken Sie die Top-Innendesign-Marken des Jahres 2020\",\n \"affiliates.upscale.content\": \"Nutzen Sie unser Full-Service-Angebot für die Inneneinrichtung Ihrer neuen Wohnung. Vordefinierte Einrichtungslinien - Individuelle Beratung von Ihrem persönlichen Innenarchitekten - Lieferung und Montage zum vereinbarten Zeitpunkt.\",\n \"affiliates.upscale.clickbait\": \"Entdecken Sie Ihren Interior Design - Stil\",\n \"exports.cancellation_base_total_item_description.replacement\": \"Entfall der Alternativleistung %{line_item_title}. Basispreis für die Umsetzung der Standardleistung %{replaced_title}, deren Entfall zuvor beauftragt wurde.\",\n \"exports.cancellation_base_total_item_description.default\": \"Entfall der Alternativleistung '%{line_item_title}'\",\n \"exports.base_total_item_description.replacement\": \"Entfall der Standardleistung '%{title}'\",\n \"exports.base_total_item_description.default\": \"Umsetzung der Leistung '${title}'\",\n \"exports.base_total_item_default_description.replacement\": \"Umsetzung der Standardleistung '%{title}'\",\n \"exports.base_total_item_default_description.default\": \"\",\n \"exports.status.open\": \"Offen\",\n \"exports.status.selected\": \"Erwerberauswahl\",\n \"exports.status.ordered\": \"Beauftragt\",\n \"exports.status.tendering\": \"Angebotserstellung\",\n \"exports.status.offering\": \"Beauftragung offen\",\n \"exports.status.cancelled\": \"Storniert\",\n \"exports.omitted_trade_hint\": \"Keine Leistung für %{trade} erforderlich.\\n\\n(%{default_summary})\",\n \"config_file_not_present\": \"Datei nicht im System vorhanden: ' %{file} '. Änderungen können nicht gespeichert werden.\",\n \"documentsExport.menu.assignments.title\": \"Projektzuordnung\",\n \"documentsExport.menu.exports.title\": \"Definitionen\",\n \"documentsExport.menu.styles.title\": \"Designs\",\n \"documentsExport.menu.contentHeaders.title\": \"Inhalte (vor LV)\",\n \"documentsExport.menu.signatures.title\": \"Inhalte\",\n \"documentsExport.menu.signatures.assignmentsTitle\": \"Inhalte (nach LV)\",\n \"documentsExport.filter.project\": \"Projekt\",\n \"documentsExport.filter.role\": \"Typ\",\n \"documentsExport.filter.group\": \"Gruppe\",\n \"documentsExport.filter.remove.title\": \"Filter entfernen\",\n \"documentsExport.dialogs.assignments.title.create\": \"Projektzuordnung erstellen\",\n \"documentsExport.dialogs.assignments.title.edit\": \"Projektzuordnung bearbeiten\",\n \"documentsExport.dialogs.assignments.placeholders.project\": \"Projekt\",\n \"documentsExport.dialogs.assignments.placeholders.export\": \"Definitionen\",\n \"documentsExport.dialogs.assignments.placeholders.style\": \"Designs\",\n \"documentsExport.dialogs.assignments.placeholders.header\": \"Inhalt vor den Positionen\",\n \"documentsExport.dialogs.assignments.placeholders.signature\": \"Inhalt nach den Positionen\",\n \"documentsExport.dialogs.exports.title.create\": \"Exportdefinition hinzufügen\",\n \"documentsExport.dialogs.exports.title.edit\": \"Exportdefinition bearbeiten\",\n \"documentsExport.dialogs.exports.tabs.base\": \"Basisdaten\",\n \"documentsExport.dialogs.exports.tabs.texts\": \"Dokumententexte\",\n \"documentsExport.dialogs.exports.tabs.dialogueFields\": \"Dialogfelder\",\n \"documentsExport.dialogs.exports.tabs.tradeHints\": \"Gewerkstexte\",\n \"documentsExport.dialogs.exports.tabs.content\": \"Produkttabelle\",\n \"documentsExport.dialogs.exports.tabs.settings\": \"Einstellungen\",\n \"documentsExport.dialogs.exports.tabs.json\": \"JSON\",\n \"documentsExport.dialogs.exports.placeholders.name\": \"Exportname\",\n \"documentsExport.dialogs.exports.placeholders.group\": \"Ebene\",\n \"documentsExport.dialogs.exports.placeholders.role\": \"Rolle\",\n \"documentsExport.dialogs.exports.tradeHints.title\": \"Gewerkehinweise\",\n \"documentsExport.dialogs.exports.tradeHints.add\": \"Hinzufügen\",\n \"documentsExport.dialogs.exports.tradeHints.removeConfirmation.title\": \"Gewerkehinweis enterfernen\",\n \"documentsExport.dialogs.exports.tradeHints.removeConfirmation.message\": \"Das Entfernen kann nicht rückgängig gemacht werden. Wollen Sie wirklich fortfahren?\",\n \"documentsExport.dialogs.exports.dialogueFields.text.header\": \"Dialogfelder\",\n \"documentsExport.dialogs.exports.dialogueFields.text.specialFieldsDropdown\": \"Spezialfelder\",\n \"documentsExport.dialogs.exports.dialogueFields.columns.title\": \"Titel\",\n \"documentsExport.dialogs.exports.dialogueFields.columns.key\": \"Schlüssel\",\n \"documentsExport.dialogs.exports.dialogueFields.columns.type\": \"Typ\",\n \"documentsExport.dialogs.exports.dialogueFields.columns.isRequired\": \"Muss ausgefüllt sein?\",\n \"documentsExport.dialogs.exports.dialogueFields.types.string\": \"Kurztext\",\n \"documentsExport.dialogs.exports.dialogueFields.types.text\": \"Langtext\",\n \"documentsExport.dialogs.exports.dialogueFields.types.date\": \"Datum\",\n \"documentsExport.dialogs.exports.dialogueFields.types.boolean\": \"Ankreuzfeld\",\n \"documentsExport.dialogs.exports.dialogueFields.errorMessages.emptyLabel\": \"leerer titel\",\n \"documentsExport.dialogs.exports.dialogueFields.errorMessages.emptyKey\": \"schlüssel darf nicht leer sein\",\n \"documentsExport.dialogs.exports.dialogueFields.errorMessages.leadingCtx\": \"muss mit \\\"ctx_\\\" anfangen\",\n \"documentsExport.dialogs.exports.dialogueFields.errorMessages.takenKey\": \"schlüssel bereits vergeben\",\n \"documentsExport.dialogs.exports.dialogueFields.errorMessages.whitespace\": \"leerzeichen nicht erlaubt\",\n \"documentsExport.dialogs.exports.content.lineItemHeader\": \"Hauptposition: Kopfzeile\",\n \"documentsExport.dialogs.exports.content.lineItemBody\": \"Hauptposition: Inhalte\",\n \"documentsExport.dialogs.exports.content.subLineItemHeader\": \"Unterposition: Kopfzeile\",\n \"documentsExport.dialogs.exports.content.subLineItemBody\": \"Unterposition: Inhalte\",\n \"documentsExport.dialogs.exports.content.addCell\": \"Spalte hinzufügen\",\n \"documentsExport.dialogs.exports.content.addRow\": \"Zeile hinzufügen\",\n \"documentsExport.dialogs.exports.content.deleteRow\": \"Zeile löschen\",\n \"documentsExport.dialogs.exports.content.if\": \"nur wenn\",\n \"documentsExport.dialogs.exports.content.unless\": \"nur wenn nicht\",\n \"documentsExport.dialogs.exports.content.noCells\": \"In dieser Zeile sind noch keine Spalten vorhanden\",\n \"documentsExport.dialogs.exports.content.dialog.title\": \"{editMode, select, true {Edit} other {Add}} Cell\",\n \"documentsExport.dialogs.exports.content.dialog.titleName\": \"Titel\",\n \"documentsExport.dialogs.exports.content.dialog.fieldName\": \"Feldname\",\n \"documentsExport.dialogs.exports.content.dialog.expression\": \"If/Unless\",\n \"documentsExport.dialogs.exports.content.dialog.condition\": \"Bedingung\",\n \"documentsExport.dialogs.exports.content.dialog.style\": \"Stil\",\n \"documentsExport.dialogs.exports.content.dialog.width\": \"Breite\",\n \"documentsExport.dialogs.exports.content.dialog.deprecated.title\": \"Veraltet\",\n \"documentsExport.dialogs.exports.content.dialog.deprecated.message\": \"Veraltetes Feld wird verwendet\",\n \"documentsExport.dialogs.exports.content.addCustomKey.add\": \"Eigener Schlüssel\",\n \"documentsExport.dialogs.exports.content.addCustomKey.title\": \"Benutzerdefinierten Schlüssel hinzufügen\",\n \"documentsExport.dialogs.exports.content.addCustomKey.key\": \"Schlüssel\",\n \"documentsExport.dialogs.exports.content.addCustomKey.value\": \"Wert\",\n \"documentsExport.dialogs.exports.content.addCustomKey.error\": \"Dieser Schlüssel Existiert bereits\",\n \"documentsExport.dialogs.exports.content.addCustomKey.noKey\": \"Geben Sie den Schlüssel ein\",\n \"documentsExport.dialogs.exports.content.addCustomKey.errorValue\": \"Geben Sie den Wert ein\",\n \"documentsExport.dialogs.styles.title.create\": \"Create Style\",\n \"documentsExport.dialogs.styles.title.edit\": \"Edit Style\",\n \"documentsExport.dialogs.styles.placeholders.name\": \"Enter style name\",\n \"documentsExport.dialogs.styles.labels.name\": \"Style name\",\n \"documentsExport.dialogs.styles.labels.accountLogo\": \"Upload account logo\",\n \"documentsExport.dialogs.styles.labels.projectLogo\": \"Upload project logo\",\n \"documentsExport.dialogs.styles.labels.layoutHeaderLogo\": \"Upload layout header logo\",\n \"documentsExport.dialogs.styles.labels.layoutFooterLogo\": \"Upload layout footer logo\",\n \"documentsExport.dialogs.styles.labels.position\": \"Positionierung\",\n \"documentsExport.dialogs.styles.labels.scale\": \"Größe\",\n \"documentsExport.dialogs.signatures.title.create\": \"Inhalt anlegen\",\n \"documentsExport.dialogs.signatures.title.edit\": \"Inhalt bearbeiten\",\n \"documentsExport.dialogs.signatures.placeholders.name\": \"Bezeichnung\",\n \"documentsExport.dialogs.duplicate.title\": \"Projektzuordnungen duplizieren\",\n \"documentsExport.dialogs.duplicate.sourceProject\": \"Quellprojekt\",\n \"documentsExport.dialogs.duplicate.targetProject\": \"Zielprojekt\",\n \"documentsExport.dialogs.preview.title\": \"Document previews\",\n \"documentsExport.dialogs.preview.labels.load\": \"Load\",\n \"documentsExport.dialogs.preview.labels.activity\": \"Activity\",\n \"documentsExport.dialogs.preview.labels.roomBook\": \"Roombook\",\n \"documentsExport.dialogs.editSignature.value\": \"Text\",\n \"documentsExport.dialogs.editSignature.newLine\": \"Leerzeilen (nach Text)\",\n \"documentsExport.dialogs.editSignature.addElements.heading1\": \"Überschrift\",\n \"documentsExport.dialogs.editSignature.addElements.heading2\": \"Text (fett)\",\n \"documentsExport.dialogs.editSignature.addElements.text\": \"Text\",\n \"documentsExport.dialogs.editSignature.addElements.signature\": \"Unterschrift\",\n \"documentsExport.dialogs.editSignature.title.create\": \"Inhalt anlegen\",\n \"documentsExport.dialogs.editSignature.title.edit\": \"Inhalt bearbeiten\",\n \"documentsExport.dialogs.editSignature.name\": \"Name\",\n \"documentsExport.dialogs.editSignature.removeConfirmation.title\": \"Inhalt löschen\",\n \"documentsExport.dialogs.editSignature.removeConfirmation.message\": \"Das Entfernen kann nicht rückgängig gemacht werden. Wollen Sie wirklich fortfahren?\",\n \"documentsExport.dialogs.editSignature.menu.visual\": \"Visuell\",\n \"documentsExport.dialogs.editSignature.menu.json\": \"JSON\",\n \"documentsExport.dialogs.editSignature.blocks.newPage\": \"Seite ausfüllen?\",\n \"documentsExport.dialogs.editSignature.blocks.deleteButton\": \"Block löschen\",\n \"documentsExport.dialogs.editSignature.blocks.deleteConfirmationMessage\": \"Wollen Sie den Block wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"documentsExport.dialogs.editSignature.conditions.title\": \"Bedingungen\",\n \"documentsExport.dialogs.editSignature.conditions.options.mustBePresent\": \"Muss vorhanden sein\",\n \"documentsExport.dialogs.editSignature.conditions.options.mustNotBePresent\": \"Darf nicht vorhanden sein\",\n \"documentsExport.dialogs.editSignature.conditions.add\": \"Regel hinzufügen\",\n \"documentsExport.dialogs.editSignature.conditions.modal.enterKey\": \"Schlüssel eingeben\",\n \"documentsExport.dialogs.editSignature.conditions.modal.keyTaken\": \"Schlüssel bereits vergeben\",\n \"documentsExport.removeConfirmation.assignment.title\": \"Delete Assignment\",\n \"documentsExport.removeConfirmation.assignment.message\": \"Are you sure you want to delete this Document Assignment? This action cannot be undone.\",\n \"documentsExport.removeConfirmation.export.title\": \"Delete Export\",\n \"documentsExport.removeConfirmation.export.message\": \"Are you sure you want to delete this Document Export? This action cannot be undone.\",\n \"documentsExport.removeConfirmation.style.title\": \"Delete Style\",\n \"documentsExport.removeConfirmation.style.message\": \"Are you sure you want to delete this Document Export Style? This action cannot be undone.\",\n \"documentsExport.removeConfirmation.signature.title\": \"Delete Signature\",\n \"documentsExport.removeConfirmation.signature.message\": \"Are you sure you want to delete this Document Export Signature? This action cannot be undone.\",\n \"documentsExport.messages.notDeletable\": \"Cannot delete. Used in existing assignment.\",\n \"documentsExport.messages.noPreviewTitle\": \"Vorschau derzeit leider nicht möglich\",\n \"documentsExport.messages.noPreviewActivity\": \"Bitte legen Sie zunächst einen Vorgang an, um die Vorschau des Dokumentenexportes zu aktivieren.\",\n \"documentsExport.messages.noPreviewRoomBook\": \"Bitte legen Sie zunächst ein Raumbuch an, um die Vorschau des Dokumentenexportes zu aktivieren.\",\n \"featureToggles.title\": \"Feature Toggles\",\n \"featureToggles.projectChoose\": \"Auswählen\",\n \"projectIssues.title\": \"Project Issues\",\n \"projectIssues.filter.label\": \"Filter\",\n \"projectIssues.filter.selectAccount.label\": \"Select an account\",\n \"projectIssues.filter.selectProject.label\": \"Select a project\",\n \"projectIssues.filter.selectUser.label\": \"Select an user\",\n \"projectIssues.filter.selectIssueType.label\": \"Select issue type\",\n \"projectIssues.filter.showResolved.label\": \"Erledigte anzeigen\",\n \"projectIssues.attributes.account.label\": \"Account\",\n \"projectIssues.attributes.project.label\": \"Projekt\",\n \"projectIssues.attributes.user.label\": \"Benutzer\",\n \"projectIssues.attributes.issueType.label\": \"Issue type\",\n \"projectIssues.attributes.subject.label\": \"Betreff\",\n \"projectIssues.attributes.message.label\": \"Nachricht\",\n \"projectIssues.messages.empty\": \"Keine Probleme gefunden \",\n \"trashBin.title\": \"Papierkorb\",\n \"trashBin.subtitle\": \"Im Papierkorb können gelöschte Daten gefunden und wiederhergestellt werden\",\n \"trashBin.filter\": \"Zeitraum:\",\n \"trashBin.messages.success.title\": \"Erfolg\",\n \"trashBin.messages.success.body\": \"Objekt wurde wiederhergestellt: {message}\",\n \"trashBin.messages.error.title\": \"Fehler\",\n \"trashBin.messages.error.body\": \"Objekt konnte nicht wiederhergestellt werden: {error}\",\n \"trashBin.messages.empty\": \"Papierkorb ist leer\",\n \"trashBin.table.project\": \"Projekt\",\n \"trashBin.table.title\": \"Titel\",\n \"trashBin.table.versionId\": \"VID\",\n \"trashBin.table.deletedBy\": \"Gelöscht von\",\n \"trashBin.table.deletedAt\": \"Gelöscht am\",\n \"trashBin.table.action\": \"Aktion\",\n \"trashBin.tabs.project\": \"Projekte\",\n \"trashBin.tabs.section\": \"Bauabschnitte\",\n \"trashBin.tabs.unit\": \"Wohneinheiten\",\n \"trashBin.tabs.roombook\": \"Raumbucher\",\n \"trashBin.tabs.activity\": \"Vorgänge\",\n \"trashBin.tabs.messagethread\": \"Nachrichtenverläufe\",\n \"trashBin.tabs.message\": \"Nachrichten\",\n \"trashBin.tabs.projectdeadline\": \"Projektfristen\",\n \"trashBin.tabs.product\": \"Produkte\",\n \"trashBin.tabs.productgroup\": \"Produktgruppen\",\n \"trashBin.tabs.productoption\": \"Produktoptionen\",\n \"trashBin.tabs.projectcatalog\": \"Projektkataloge\",\n \"trashBin.tabs.pricecatalog\": \"Preiskataloge\",\n \"trashBin.tabs.roombooksection\": \"Raumbuch Abschnitte\",\n \"trashBin.tabs.roombooklineitem\": \"Raumbuch Hauptpositionen\",\n \"trashBin.tabs.roombooksublineitem\": \"Raumbuch Unterpositionen\",\n \"trashBin.tabs.buyer\": \"Erwerber\",\n \"trashBin.tabs.contractor\": \"Nachunternemen\",\n \"trashBin.tabs.unitvariabletype\": \"Mengenvariablen\",\n \"trashBin.tabs.unitvariable\": \"Mengenvariablen\",\n \"trashBin.tabs.documentexport\": \"Document Exporte\",\n \"trashBin.confirmationDialog.title\": \"{type} wiederherstellen\",\n \"trashBin.confirmationDialog.message\": \"Wollen Sie {type} mit der ID {id} wirklich wieder herstellen?\",\n \"versions.title\": \"Versionshistorie\",\n \"versions.headers.datum\": \"Datum/Uhrzeit\",\n \"versions.headers.user\": \"Benutzer\",\n \"versions.headers.action\": \"Aktion\",\n \"versions.headers.details\": \"Details\",\n \"versions.headers.child\": \"Kindelement\",\n \"versions.changes.title\": \"Änderung\",\n \"versions.changes.headers.field\": \"Feld\",\n \"versions.changes.headers.oldValue\": \"Alter Wert\",\n \"versions.changes.headers.newValue\": \"Neuer Wert\",\n \"versions.showDetails\": \"anzeigen\",\n \"versions.paramError\": \"Required params are missing.\",\n \"versions.compare.title\": \"Werte vergleichen\",\n \"references.title\": \"Referenzen für {subject_type} {subject_id}\",\n \"references.tooltip\": \"Referenzen\",\n \"references.empty\": \"Keine Referenzen gefunden\",\n \"references.link.label\": \"Öffnen\",\n \"references.headers.project_name\": \"Projektname\",\n \"references.headers.display_name\": \"Name\",\n \"references.headers.status\": \"Status\",\n \"references.headers.title\": \"Titel\",\n \"references.headers.link\": \"Link\",\n \"references.errors.noParams\": \"Required params are missing.\",\n \"payment_reminder.text\": \"Bitte begleichen Sie Ihre offene Rechnung, um sicherzustellen, dass Sie und Ihre Kunden weiterhin Zugriff auf die Plattform und den Online-Konfigurator haben. Sollten Sie dazu Fragen haben, wenden Sie sich bitte an unsere Buchhaltung: rechnung@baudigital.com\",\n \"projectEmail.edit.title\": \"E-Mail Adresse bearbeiten\",\n \"projectEmail.edit.fields.email.label\": \"E-Mail\",\n \"projectEmail.edit.fields.reply_to_email.label\": \"Interne Antwortadresse\",\n \"projectEmail.edit.fields.mailjet_account.label\": \"Mailjet Account\",\n \"projectEmail.edit.fields.bcc_emails.label\": \"BCC Adressen\",\n \"projectEmail.edit.fields.notes.label\": \"Notizen\",\n \"projectEmail.list.title\": \"Projekt E-Mail Adressen\",\n \"projectEmail.list.projectTitle\": \"Projekt {name}\",\n \"projectEmail.list.noEmails\": \"Es wurden noch keine E-Mails eingerichtet\",\n \"projectEmail.list.status.pending\": \"In Einrichnung\",\n \"projectEmail.list.status.active\": \"Aktiviert\",\n \"projectEmail.list.status.deactivated\": \"Deaktiviert\",\n \"projectEmail.list.details.alias.message\": \"Einrichtung der Alias E-Mail Adresse\",\n \"projectEmail.list.details.alias.pending\": \"Die Alias E-Mail Adresse wurde noch nicht von der Rubus Bau GmbH eingerichtet.\",\n \"projectEmail.list.details.alias.confirmed\": \"Die Alias E-Mail Adresse wurde erfolgreich von der Rubus Bau GmbH eingerichtet.\",\n \"projectEmail.list.details.alias.error\": \"Prüfung fehlgeschlagen\",\n \"projectEmail.list.details.outbound.message\": \"Einrichtung ausgehender E-Mails\",\n \"projectEmail.list.details.outbound.pending\": \"Die E-Mail Adresse ist für das Versenden ausgehender Nachrichten noch nicht vollständig eingerichtet.\",\n \"projectEmail.list.details.outbound.confirmed\": \"Die E-Mail Adresse ist für das Versenden ausgehender Nachrichten vollständig eingerichtet.\",\n \"projectEmail.list.details.outbound.error\": \"Prüfung fehlgeschlagen\",\n \"projectEmail.list.details.inbound.message\": \"Einrichtung eingehender E-Mails\",\n \"projectEmail.list.details.inbound.pending\": \"Die E-Mail Adresse ist für den Empfang eingehender Nachrichten noch nicht vollständig eingerichtet.\",\n \"projectEmail.list.details.inbound.confirmed\": \"Die E-Mail Adresse ist für den Empfang eingehender Nachrichten vollständig eingerichtet.\",\n \"projectEmail.list.details.inbound.messageTitle\": \"Prüfung: Eingehende E-Mails\",\n \"projectEmail.list.details.inbound.messageError\": \"Der Empfang eingehender E-Mails ist noch nicht funktionsfähig. Bitte prüfen Sie Ihre Einstellungen und probieren es erneut.\",\n \"projectEmail.list.details.inbound.messageSuccess\": \"Der Empfang eingehender E-Mails wurde erfolgreich geprüft.\",\n \"projectEmail.list.buttons.add\": \"E-Mail einrichten\",\n \"projectEmail.list.buttons.details\": \"Details\",\n \"projectEmail.list.buttons.check\": \"Prüfen\",\n \"projectEmail.list.buttons.instructions\": \"Anleitung\",\n \"projectEmail.wizard.title\": \"E-Mail Intergration Einrichten\",\n \"projectEmail.wizard.message.title\": \"Hinweis\",\n \"projectEmail.wizard.message.body\": \"Bitte prüfen Sie vorab mit Ihrer IT, ob die gewünschte E-Mail Adresse im Kontext des sonderwunsch managers genutzt werden kann. Bitte kündigen Sie ihr auch an, dass sie eine Anleitung für die Einrichtung der E-Mail Integration erhalten wird.\",\n \"projectEmail.wizard.labels.email\": \"E-Mail Adresse\",\n \"projectEmail.wizard.labels.name\": \"Name\",\n \"projectEmail.wizard.buttons.setup\": \"Einrichten\",\n \"projectEmail.wizard.buttons.next\": \"Weiter\",\n \"projectEmail.wizard.validation.invalidEmail\": \"E-Mail-Format ungültig\",\n \"projectEmail.wizard.validation.emailRequired\": \"E-Mail ist Pflichtfeld\",\n \"projectEmail.wizard.validation.contactNameMinLength\": \"mindestens 5 Zeichen\",\n \"projectEmail.instructionDialog.title\": \"Anleitung senden\",\n \"projectEmail.instructionDialog.body\": \"Teilen Sie die Anleitung für die Einrichtung der E-Mail Integration an Ihren technischen Ansprechpartner.\",\n \"projectEmail.instructionDialog.summary\": \"Unter folgendem Link wird aller erklärt, um die E-Mail {email} für den Sonderwunsch Manager einzurichten. Bitte teilen Sie diesen mit Ihrem technischen Ansprechpartner, um die Einrichtung durchzuführen.\",\n \"projectEmail.instructionDialog.alternative\": \"Alternative senden wir den Link auch gerne an Ihren Ansprechpartner per E-Mail direkt an:\",\n \"projectEmail.messages.delete.title\": \"Projekt E-Mail löschen\",\n \"projectEmail.messages.delete.message\": \"Wollen Sie diesen Projekt E-Mail löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"projectEmail.messages.deactivate.title\": \"Projekt E-Mail deaktivieren\",\n \"projectEmail.messages.deactivate.message\": \"Wollen Sie diesen Projekt E-Mail deaktivieren?\",\n \"unitSetup.tabs.unitVariables\": \"Mengen\",\n \"unitSetup.tabs.unitFeatures\": \"Merkmale\",\n \"unitFeatureAssignments.title\": \"Merkmale\",\n \"unitFeatureAssignments.filters.unit\": \"Wohneinheit\",\n \"unitFeatureAssignments.filters.unitFeature\": \"Mit Merkmal\",\n \"unitFeatureAssignments.filters.unitNoFeature\": \"Ohne Merkmal\",\n \"unitFeatureAssignments.table.unit\": \"Wohneinheit\",\n \"unitFeatureAssignments.table.unitFeatures\": \"Merkmale\",\n \"unitFeatureAssignments.table.action\": \"Aktion\",\n \"unitFeatureAssignments.actions.download.tooltip\": \"Merkmale herunterladen\",\n \"unitFeatureAssignments.actions.upload.tooltip\": \"Merkmale hochladen\",\n \"unitFeatureAssignments.dialog.title\": \"Wohneinheit Merkmale\",\n \"unitFeatureAssignments.dialog.unitFeatures\": \"Merkmalegruppen\",\n \"unitFeatureAssignments.upload.dialog.title\": \"Merkmale hohladen\",\n \"configuratorDesign.title\": \"Konfigurator Designs\",\n \"configuratorDesign.migration.label\": \"Konfigurator Design anlegen\",\n \"configuratorDesign.removeConfirmation.title\": \"Design löschen\",\n \"configuratorDesign.removeConfirmation.message\": \"Wollen Sie das Design wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.\",\n \"configuratorDesign.dialog.newTitle\": \"Design anlegen\",\n \"configuratorDesign.dialog.editTitle\": \"Design Bearbeiten\",\n \"configuratorDesign.dialog.listNewTitle\": \"Neues Design\",\n \"configuratorDesign.dialog.tabs.settings\": \"Einstellungen\",\n \"configuratorDesign.dialog.tabs.images\": \"Bilder\",\n \"configuratorDesign.dialog.tabs.logos\": \"Logos\",\n \"configuratorDesign.dialog.tabs.style\": \"Farben\",\n \"configuratorDesign.dialog.tabs.dashboards\": \"Dashboards\",\n \"configuratorDesign.dialog.tabs.translations\": \"Übersetzungen\",\n \"configuratorDesign.dialog.tabs.faqs\": \"FAQ\",\n \"configuratorDesign.dialog.tabs.pages\": \"Website (beta)\",\n \"configuratorDesign.dialog.contentPageEditor.url\": \"URL\",\n \"configuratorDesign.dialog.contentPageEditor.title\": \"Titel\",\n \"configuratorDesign.dialog.contentPageEditor.summary\": \"Summary\",\n \"configuratorDesign.dialog.contentPageEditor.role\": \"Rolle\",\n \"configuratorDesign.dialog.contentPageEditor.text\": \"Text\",\n \"configuratorDesign.dialog.contentPageEditor.variant\": \"Variant\",\n \"configuratorDesign.dialog.contentPageEditor.message\": \"Message\",\n \"configuratorDesign.dialog.contentPageEditor.action\": \"Action\",\n \"configuratorDesign.dialog.contentPageEditor.actionId\": \"ActionId\",\n \"configuratorDesign.dialog.contentPageEditor.color\": \"Color\",\n \"configuratorDesign.dialog.contentPageEditor.image\": \"Image\",\n \"configuratorDesign.dialog.contentPageEditor.noImages\": \"This project contains no images.\",\n \"configuratorDesign.dialog.contentPageEditor.direction\": \"Direction\",\n \"configuratorDesign.dialog.contentPageEditor.presentation\": \"Darstellung\",\n \"configuratorDesign.dialog.contentPageEditor.margin\": \"Margin\",\n \"configuratorDesign.dialog.contentPageEditor.html\": \"HTML content\",\n \"configuratorDesign.dialog.contentPageEditor.address\": \"Adresse\",\n \"configuratorDesign.dialog.contentPageEditor.latitude\": \"Breitengrad\",\n \"configuratorDesign.dialog.contentPageEditor.longitude\": \"Längengrad\",\n \"configuratorDesign.dialog.contentPageEditor.description\": \"Beschreibung\",\n \"configuratorDesign.dialog.contentPageEditor.subtitle\": \"Untertitel\",\n \"configuratorDesign.dialog.contentPageEditor.fullWidth\": \"Volle Breite\",\n \"configuratorDesign.dialog.contentPageEditor.label\": \"Label\",\n \"configuratorDesign.dialog.contentPageEditor.json\": \"JSON content\",\n \"configuratorDesign.dialog.contentPageEditor.addImage\": \"Bild hinzufügen\",\n \"configuratorDesign.dialog.contentPageEditor.addPage\": \"Seite hinzufügen\",\n \"configuratorDesign.dialog.contentPageEditor.editPage\": \"Seite bearbeiten\",\n \"configuratorDesign.dialog.contentPageEditor.type\": \"Typ\",\n \"configuratorDesign.dialog.contentPageEditor.css\": \"CSS\",\n \"configuratorDesign.dialog.name\": \"Name\",\n \"configuratorDesign.dialog.defaultButton\": \"Standarddesign\",\n \"configuratorDesign.dialog.defaultLabel\": \"Standard\",\n \"configuratorDesign.dialog.duplicateName\": \"Kopie von {originalName}\",\n \"configuratorDesign.dialog.project_logo\": \"Projektlogo\",\n \"configuratorDesign.dialog.project_logo_id\": \"Projektlogo\",\n \"configuratorDesign.dialog.project_logo_secondary\": \"Sekundäres Projektlogo\",\n \"configuratorDesign.dialog.project_logo_secondary_id\": \"Sekundäres Projektlogo\",\n \"configuratorDesign.dialog.project_logo_wide\": \"Projektlogo (flach)\",\n \"configuratorDesign.dialog.project_logo_wide_id\": \"Projektlogo (flach)\",\n \"configuratorDesign.dialog.project_logo_menu_id\": \"Projektlogo (Menü)\",\n \"configuratorDesign.dialog.project_logo_loader_id\": \"Projektlogo (Ladebildschirm)\",\n \"configuratorDesign.dialog.flat_finder_logo_id\": \"Flat Finder Logo\",\n \"configuratorDesign.dialog.flat_finder_logo_drawer_id\": \"Flat Finder Logo Drawer\",\n \"configuratorDesign.dialog.favicon\": \"Favicon\",\n \"configuratorDesign.dialog.favicon_id\": \"Favicon\",\n \"configuratorDesign.dialog.social_media_image\": \"Social Media Preview\",\n \"configuratorDesign.dialog.social_media_image_id\": \"Social Media Preview\",\n \"configuratorDesign.dialog.contact_image\": \"Kontaktdialog\",\n \"configuratorDesign.dialog.contact_image_id\": \"Kontaktdialog\",\n \"configuratorDesign.dialog.company_logo\": \"Unternehmenslogo\",\n \"configuratorDesign.dialog.company_logo_id\": \"Unternehmenslogo\",\n \"configuratorDesign.dialog.banner\": \"Banner (tablet + desktop)\",\n \"configuratorDesign.dialog.banner_id\": \"Banner (tablet + desktop)\",\n \"configuratorDesign.dialog.backdrop\": \"Backdrop (tablet + desktop)\",\n \"configuratorDesign.dialog.backdrop_id\": \"Backdrop (tablet + desktop)\",\n \"configuratorDesign.dialog.mobile_banner\": \"Banner (mobil)\",\n \"configuratorDesign.dialog.mobile_banner_id\": \"Banner (mobil)\",\n \"configuratorDesign.dialog.mobile_banner_public\": \"Banner (mobil, öffentliche Seiten)\",\n \"configuratorDesign.dialog.mobile_banner_public_id\": \"Banner (mobil, öffentliche Seiten)\",\n \"configuratorDesign.dialog.project_images\": \"Projektbilder\",\n \"configuratorDesign.dialog.project_image_ids\": \"Projektbilder\",\n \"configuratorDesign.dialog.marketing_banner\": \"Banner (Marktplatz)\",\n \"configuratorDesign.dialog.marketing_banner_id\": \"Banner (Marktplatz)\",\n \"configuratorDesign.dialog.marketing_hero\": \"Hero Image (Marktplatz)\",\n \"configuratorDesign.dialog.marketing_hero_id\": \"Hero Image (Marktplatz)\",\n \"configuratorDesign.dialog.marketing_project_images\": \"Projektbilder (Marktplatz)\",\n \"configuratorDesign.dialog.marketing_project_image_ids\": \"Projektbilder (Marktplatz)\",\n \"configuratorDesign.dialog.translations\": \"Übersetzungen\",\n \"configuratorDesign.dialog.newQuestion\": \"Neue Frage\",\n \"configuratorDesign.dialog.answer\": \"Antwort\",\n \"configuratorDesign.dialog.htmlHead\": \"HTML Header\",\n \"configuratorDesign.dialog.stylingMode.title\": \"Styling-Modus\",\n \"configuratorDesign.dialog.stylingMode.simple\": \"Einfach\",\n \"configuratorDesign.dialog.stylingMode.advanced\": \"Fortgeschritten\",\n \"configuratorDesign.dialog.marketingPortalDashboardVersion.title\": \"Dashboard (wenn abweichend für Marketingportal)\",\n \"configuratorDesign.dialog.dashboardVersion.title\": \"Dashboard\",\n \"configuratorDesign.dialog.dashboardVersion.values.v1\": \"Variante 1\",\n \"configuratorDesign.dialog.dashboardVersion.values.v2\": \"Variante 2\",\n \"configuratorDesign.dialog.dashboardVersion.values.v3\": \"Variante 3\",\n \"configuratorDesign.dialog.dashboardVersion.values.custom\": \"Custom\",\n \"configuratorDesign.dialog.dashboardVersion.custom.buyerPortalDashboard\": \"Custom Dashboard\",\n \"configuratorDesign.dialog.dashboardVersion.custom.marketingPortalDashboard\": \"Custom Dashboard\",\n \"configuratorDesign.dialog.dashboardMenu.values.left\": \"Links\",\n \"configuratorDesign.dialog.dashboardMenu.values.none\": \"Ohne\",\n \"configuratorDesign.dialog.buyerPortalDashboardMenu.title\": \"Menü\",\n \"configuratorDesign.dialog.marketingPortalDashboardMenu.title\": \"Menü (wenn abweichend für Marketingportal)\",\n \"configuratorDesign.dialog.theme.title\": \"Basisdesign\",\n \"configuratorDesign.dialog.theme.light\": \"Hell\",\n \"configuratorDesign.dialog.theme.dark\": \"Dunkel\",\n \"configuratorDesign.dialog.projectVideo.title\": \"Projektvideo (youtube link)\",\n \"configuratorDesign.dialog.appId.title\": \"App ID\",\n \"configuratorDesign.dialog.marketingPortalAppId.title\": \"App ID (wenn abweichend für Marketingportal)\",\n \"configuratorDesign.dialog.sourceLanguage.title\": \"Hauptsprache\",\n \"configuratorDesign.dialog.supportedLanguages.title\": \"Sprachen (Automatische Übersetzung)\",\n \"configuratorDesign.dialog.dashboardWidgets.title\": \"Dashboard Kacheln\",\n \"configuratorDesign.dialog.dashboardWidgets.values.project_video\": \"Projektvideo\",\n \"configuratorDesign.dialog.dashboardWidgets.values.project_images\": \"Bildergallery\",\n \"configuratorDesign.dialog.dashboardWidgets.values.floor_plan\": \"Grundriss\",\n \"configuratorDesign.dialog.dashboardWidgets.values.configurator\": \"Konfigurator\",\n \"configuratorDesign.dialog.buyerPortalSocialMediaProjectTitle.title\": \"Social Media Vorschau: Überschrift Projekt\",\n \"configuratorDesign.dialog.buyerPortalSocialMediaProjectDescription.title\": \"Social Media Vorschau: Beschreibung Projekt\",\n \"configuratorDesign.dialog.marketingPortalSocialMediaProjectTitle.title\": \"Social Media Vorschau: Überschrift Projekt (wenn abweichend für Marketingportal)\",\n \"configuratorDesign.dialog.marketingPortalSocialMediaProjectDescription.title\": \"Social Media Vorschau: Beschreibung Projekt (wenn abweichend für Marketingportal)\",\n \"configuratorDesign.dialog.buyerPortalConfig.title\": \"Buyer portal config\",\n \"configuratorDesign.dialog.marketingPortalConfig.title\": \"Marketing portal config\",\n \"configuratorDesign.dialog.pages.label\": \"Pages\",\n \"configuratorDesign.dialog.translationSreach.label\": \"Text suchen\",\n \"configuratorDesign.dashboard.labels.addElement\": \"Add element\",\n \"configuratorDesign.dashboard.labels.addCard\": \"Add card\",\n \"configuratorDesign.dashboard.labels.selectImage\": \"Select an image\",\n \"configuratorDesign.dashboard.labels.templates\": \"Starter Dashboard\",\n \"configuratorDesign.dashboard.labels.importTemplates\": \"Starter Dashboard importieren\",\n \"configuratorDesign.dashboard.dashboardBannerV2.type\": \"DashboardBannerV2.\",\n \"configuratorDesign.dashboard.dashboardBannerV2.label\": \"Adds a banner to the dashboard\",\n \"configuratorDesign.dashboard.marketingUnitInfo.type\": \"MarketingUnitInfo\",\n \"configuratorDesign.dashboard.marketingUnitInfo.label\": \"Adds the standard unit info to the dashboard\",\n \"configuratorDesign.dashboard.mobileMenu.type\": \"MobileMenu\",\n \"configuratorDesign.dashboard.mobileMenu.label\": \"Adds a mobile menu to the dashboard\",\n \"configuratorDesign.dashboard.htmlElement.type\": \"HtmlElement\",\n \"configuratorDesign.dashboard.htmlElement.label\": \"Adds a html element to the dashboard\",\n \"configuratorDesign.dashboard.contentRow.type\": \"Kacheln\",\n \"configuratorDesign.dashboard.contentRow.label\": \"Es können unterschiedliche Elemente als Kacheln angeordnet werden\",\n \"configuratorDesign.dashboard.feature.type\": \"Feature\",\n \"configuratorDesign.dashboard.feature.label\": \"Adds a Feature Card to the dashboard\",\n \"configuratorDesign.dashboard.imageGallery.type\": \"ImageGallery\",\n \"configuratorDesign.dashboard.imageGallery.label\": \"Adds a Image Gallery to the dashboard\",\n \"configuratorDesign.dashboard.projectMap.type\": \"Projektkarte\",\n \"configuratorDesign.dashboard.projectMap.label\": \"Es wird die Projektadresse auf einer Kartenkachel dargestellt\",\n \"configuratorDesign.dashboard.projectVideo.type\": \"Projektvideo (deprecated)\",\n \"configuratorDesign.dashboard.projectVideo.label\": \"Bitte nicht mehr nutzen! Es wird das oben konfigurierte Video als Kach dargestellt.\",\n \"configuratorDesign.dashboard.floorPlan.type\": \"FloorPlan\",\n \"configuratorDesign.dashboard.floorPlan.label\": \"Adds a Floor Plan to the dashboard\",\n \"configuratorDesign.dashboard.videoCard.type\": \"VideoCard\",\n \"configuratorDesign.dashboard.videoCard.label\": \"Adds a Video Card to the dashboard\",\n \"configuratorDesign.dashboard.infoItemCard.type\": \"InfoItemCard\",\n \"configuratorDesign.dashboard.infoItemCard.label\": \"Adds a Info Item Card to the dashboard\",\n \"configuratorDesign.dashboard.documentCard.type\": \"DocumentCard\",\n \"configuratorDesign.dashboard.documentCard.label\": \"Adds a Document Card to the dashboard\",\n \"configuratorDesign.dashboard.mapCard.type\": \"MapCard\",\n \"configuratorDesign.dashboard.mapCard.label\": \"Adds a Map Card to the dashboard\",\n \"configuratorDesign.dashboard.applicationBar.type\": \"ApplicationBar\",\n \"configuratorDesign.dashboard.applicationBar.label\": \"Adds an Application Bar to the dashboard\",\n \"configuratorDesign.dashboard.dashboardUnitInfo.type\": \"DashboardUnitInfo\",\n \"configuratorDesign.dashboard.dashboardUnitInfo.label\": \"Adds a Dashboard Unit Info to the dashboard\",\n \"configuratorDesign.dashboard.unitRecommendations.type\": \"UnitRecommendations\",\n \"configuratorDesign.dashboard.unitRecommendations.label\": \"Adds Unit Recommendations to the dashboard\",\n \"flatFinder.addNewFlatFinder\": \"Neuen FlatFinder hinzufügen\",\n \"flatFinder.editFlatFinder\": \"FlatFinder bearbeiten\",\n \"flatFinder.dialog.name\": \"Name\",\n \"flatFinder.dialog.dataUrl\": \"Daten-URL\",\n \"flatFinder.dialog.url\": \"URL\",\n \"flatFinder.dialog.slug\": \"Slug\",\n \"flatFinder.dialog.configuratorDesign\": \"Konfigurator Design\",\n \"flatFinder.dialog.deleteTitle\": \"FlatFinder löschen\",\n \"flatFinder.dialog.deleteMessage\": \"Soll der FlatFinder wirklich gelöscht werden?\",\n \"flatFinder.dialog.savedSuccessfully\": \"FlatFinder erfolgreich gespeichert\",\n \"flatFinder.dialog.changesNotSaved\": \"Änderungen nicht gespeichert\",\n \"flatFinder.dialog.newTitle\": \"Neuer FlatFinder\",\n \"flatFinder.dialog.editTitle\": \"FlatFinder bearbeiten\",\n \"flatFinder.dialog.default\": \"Default\",\n \"flatFinder.dialog.colorHover\": \"Color hover\",\n \"flatFinder.dialog.colorActive\": \"Color active\",\n \"flatFinder.dialog.welcomeTitle\": \"Welcome title\",\n \"flatFinder.dialog.welcomeMessage\": \"Welcome message\",\n \"flatFinder.dialog.placeholderImage\": \"Placeholder image\",\n \"flatFinder.dialog.config\": \"JSON config\",\n \"flatFinder.states.saving\": \"FlatFinder erfolgreich gespeichert\",\n \"packageManager.title\": \"Package Manager\",\n \"packageManager.install\": \"Installieren\",\n \"packageManager.installed\": \"Installiert\",\n \"packageManager.noPackages\": \"Es gibt keine Pakete\",\n \"observers.title\": \"Beobachter\",\n \"imageSelector.singleImage\": \"Einzelbild\",\n \"imageSelector.multipleImages\": \"Mehrere Bilder\",\n \"imageSelector.noImageSelected\": \"Kein Bild ausgewählt\",\n \"imageSelector.selectImage\": \"Bild auswählen\",\n \"imageSelector.selectImages\": \"Bilder auswählen\",\n \"imageSelector.uploadImage\": \"Bild hochladen\",\n \"imageSelector.uploadImages\": \"Bilder hochladen\",\n \"imageSelector.uploadImageError\": \"Fehler beim Hochladen des Bildes\",\n \"imageSelector.uploadImagesError\": \"Fehler beim Hochladen der Bilder\",\n \"imageSelector.mediaLibrary\": \"Mediathek\",\n \"imageSelector.cancelImageSelection\": \"Auswahl abbrechen\",\n \"imageSelector.confirmImageSelection\": \"Auswahl bestätigen\",\n \"imageSelector.imageGallery\": \"Bildergalerie\",\n \"imageSelector.totalImagesSelected\": \"Bilder ausgewählt\",\n \"imageSelector.removeImage\": \"Bild entfernen\",\n \"imageSelector.noImageUploaded\": \"Es wurden noch keine Bilder gewählt\",\n \"imageSelector.noImagesInMediaLibrary\": \"Es wurde noch kein Bild gewählt\",\n \"imageSelector.noImageSelectedForPreview\": \"Es wurde noch kein Bild gewählt\",\n \"imageSelector.fileExceededSize\": \"Die Datei ist zu groß. Bitte optimieren Sie das Bild.\",\n \"imageSelector.filterByImageReferenceCount\": \"Ungenutzte Bilder\",\n \"imageSelector.imageReferenceCount\": \"Anzahl Verwendungen\",\n \"imageSelector.copyButtonLabel\": \"URL kopieren\",\n \"imageSelector.copyTitle\": \"URL kopiert\",\n \"imageSelector.copyBody\": \"Die URL wurde in die Zwischenablage kopiert\",\n \"imageSelector.deleteDialog.deleteTitle\": \"Bild löschen\",\n \"imageSelector.deleteDialog.deleteMessage\": \"Sind Sie sicher, dass Sie das Bild löschen möchten?\",\n \"imageSelector.deleteDialog.message.success.title\": \"Löschen\",\n \"imageSelector.deleteDialog.message.success.description\": \"Bild wurde erfolgreich gelöscht\",\n \"imageSelector.deleteDialog.message.error.title\": \"Löschen\",\n \"imageSelector.deleteDialog.message.error.description\": \"Bild konnte nicht gelöscht werden\",\n \"dataExport.button.label\": \"Start Export\",\n \"dataExport.startMessage\": \"Der Export wurde gestartet\",\n \"fileImports.title\": \"Jobs\",\n \"fileImports.table.role\": \"Role\",\n \"fileImports.table.user\": \"Username\",\n \"fileImports.table.status\": \"Status\",\n \"fileImports.table.createdAt\": \"Created at\",\n \"fileImports.table.startedAt\": \"Started at\",\n \"fileImports.table.completedAt\": \"Completed/failed at\",\n \"fileImports.table.duration\": \"Duration [s]\",\n \"fileImports.table.file\": \"File\",\n \"projectFiles.uploadButton.label\": \"Datei hochladen\",\n \"projectFiles.empty\": \"Es wurden noch keine Dateien hochgeladen\",\n \"projectFiles.dialog.title\": \"Datei hochladen\",\n \"projectFiles.dialog.submitButton\": \"Hochladen\",\n \"devise.confirmations.confirmed\": \"Your email address has been successfully confirmed.\",\n \"devise.confirmations.send_instructions\": \"You will receive an email with instructions for how to confirm your email address in a few minutes.\",\n \"devise.confirmations.send_paranoid_instructions\": \"If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes.\",\n \"devise.failure.already_authenticated\": \"You are already signed in.\",\n \"devise.failure.inactive\": \"Your account is not activated yet.\",\n \"devise.failure.invalid\": \"Invalid %{authentication_keys} or password.\",\n \"devise.failure.locked\": \"Your account is locked.\",\n \"devise.failure.last_attempt\": \"You have one more attempt before your account is locked.\",\n \"devise.failure.not_found_in_database\": \"Invalid %{authentication_keys} or password.\",\n \"devise.failure.timeout\": \"Your session expired. Please sign in again to continue.\",\n \"devise.failure.unauthenticated\": \"You need to sign in or sign up before continuing.\",\n \"devise.failure.unconfirmed\": \"You have to confirm your email address before continuing.\",\n \"devise.mailer.confirmation_instructions.subject\": \"Confirmation instructions\",\n \"devise.mailer.reset_password_instructions.subject\": \"sonderwunsch manager | Anleitung zur Passwortvergabe\",\n \"devise.mailer.unlock_instructions.subject\": \"Unlock instructions\",\n \"devise.mailer.password_change.subject\": \"Password Changed\",\n \"devise.omniauth_callbacks.failure\": \"Could not authenticate you from %{kind} because \\\"%{reason}\\\".\",\n \"devise.omniauth_callbacks.success\": \"Successfully authenticated from %{kind} account.\",\n \"devise.passwords.no_token\": \"You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.\",\n \"devise.passwords.send_instructions.title\": \"Anleitung gesendet\",\n \"devise.passwords.send_instructions.message\": \"Sie erhalten in wenigen Sekunden eine E-Mail, um Ihr Passwort zurückzusetzen.\",\n \"devise.passwords.send_paranoid_instructions\": \"If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes.\",\n \"devise.passwords.updated\": \"Your password has been changed successfully. You are now signed in.\",\n \"devise.passwords.updated_not_active\": \"Your password has been changed successfully.\",\n \"devise.registrations.destroyed\": \"Bye! Your account has been successfully cancelled. We hope to see you again soon.\",\n \"devise.registrations.signed_up\": \"Welcome! You have signed up successfully.\",\n \"devise.registrations.signed_up_but_inactive\": \"You have signed up successfully. However, we could not sign you in because your account is not yet activated.\",\n \"devise.registrations.signed_up_but_locked\": \"You have signed up successfully. However, we could not sign you in because your account is locked.\",\n \"devise.registrations.signed_up_but_unconfirmed\": \"A message with a confirmation link has been sent to your email address. Please follow the link to activate your account.\",\n \"devise.registrations.update_needs_confirmation\": \"You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address.\",\n \"devise.registrations.updated\": \"Your account has been updated successfully.\",\n \"devise.sessions.signed_in\": \"Signed in successfully.\",\n \"devise.sessions.signed_out\": \"Signed out successfully.\",\n \"devise.sessions.already_signed_out\": \"Signed out successfully.\",\n \"devise.unlocks.send_instructions\": \"You will receive an email with instructions for how to unlock your account in a few minutes.\",\n \"devise.unlocks.send_paranoid_instructions\": \"If your account exists, you will receive an email with instructions for how to unlock it in a few minutes.\",\n \"devise.unlocks.unlocked\": \"Your account has been unlocked successfully. Please sign in to continue.\",\n \"errors.messages.already_confirmed\": \"was already confirmed, please try signing in\",\n \"errors.messages.confirmation_period_expired\": \"needs to be confirmed within %{period}, please request a new one\",\n \"errors.messages.expired\": \"has expired, please request a new one\",\n \"errors.messages.not_found\": \"not found\",\n \"errors.messages.not_locked\": \"was not locked\",\n \"errors.messages.not_saved.one\": \"1 error prohibited this %{resource} from being saved:\",\n \"errors.messages.not_saved.other\": \"%{count} errors prohibited this %{resource} from being saved:\"\n }\n};","import React from \"react\";\n\nimport \"./hint.scss\";\n\nexport const Hint = props => {\n return

    {props.children}

    ;\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Image, Label, Modal } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\nimport ProductInfoItem from \"../../../builder_portal/components/product/ProductInfoItem\";\n\nexport default class OptionDetailsModal extends React.PureComponent {\n static propTypes = {\n option: PropTypes.object.isRequired,\n subLineItem: PropTypes.object,\n renderTags: PropTypes.bool\n };\n\n render() {\n const {\n renderTags = true,\n option,\n option: {\n description,\n hasCart,\n isActualSelection,\n isDefault,\n isOnRequest,\n name,\n priceStrategy,\n productLines,\n status,\n thumbUrl,\n total\n },\n subLineItem: {\n quantity,\n status: { selectable }\n },\n ...passThroughProps\n } = this.props;\n\n const tags = (productLines || []).map((tag, idx) => {\n return (\n \n );\n });\n\n const showPriceTag = isActualSelection || selectable;\n\n const { portal } = window.initialProps;\n\n return (\n \n {name}\n \n \n \n {isDefault && (\n \n )}\n {hasCart && (\n \n )}\n \n

    {description}

    \n {!!tags.length && renderTags && (\n

    {tags}

    \n )}\n

    \n {priceStrategy !== \"flat\" && (\n \n )}\n

    \n\n {showPriceTag && (\n

    \n {isOnRequest ? (\n \n ) : (\n \n )}\n

    \n )}\n
    \n
    \n \n );\n }\n}\n","import React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport ImageGallery from \"react-image-gallery\";\nimport { get } from \"lodash\";\nimport \"react-image-gallery/styles/css/image-gallery.css\";\nimport \"./thumbnailGallery.scss\";\nimport { Image, Modal } from \"semantic-ui-react\";\nimport ProductInfoItem from \"builder_portal/components/product/ProductInfoItem\";\nimport { Magnifier } from \"react-image-magnifiers\";\n\nclass ThumbnailGallery extends PureComponent {\n static propTypes = {\n option: PropTypes.object\n };\n\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false,\n startIndex: 0,\n thumbnailPosition: \"right\"\n };\n }\n\n onOrientationChange = () => {\n let thumbnailPosition;\n\n if (get(screen, \"orientation.type\")) {\n if (screen.orientation.type.includes(\"landscape\")) {\n thumbnailPosition = \"right\";\n } else if (screen.orientation.type.includes(\"portrait\")) {\n thumbnailPosition = \"bottom\";\n } else {\n console.warn(\"could not determine screen.orientation.type\");\n thumbnailPosition = \"right\"; // Default\n }\n } else {\n // extrawurst for SafariIOs since it has not implemented ScreenOrientationType yet (https://caniuse.com/#feat=screen-orientation)\n // Use bitwise orientation-magic (http://www.codecouch.com/2011/11/detecting-orientation-changes-in-mobile-safari-on-ios-and-other-supported-browsers/)\n if (window.orientation & 2) {\n // landscape mode\n thumbnailPosition = \"right\";\n } else {\n // portrait mode\n thumbnailPosition = \"bottom\";\n }\n }\n this.setState({ thumbnailPosition });\n };\n\n componentDidMount() {\n window.addEventListener(\n \"orientationchange\",\n this.onOrientationChange,\n false\n );\n this.onOrientationChange(); // initial state\n }\n\n componentWillUnmount() {\n window.removeEventListener(\n \"orientationchange\",\n this.onOrientationChange,\n false\n );\n }\n\n render() {\n const { option } = this.props;\n\n return (\n
    \n {this.renderThumbnailImageGroup()}\n {this.renderGalleryModal()}\n
    \n );\n }\n\n renderGalleryItem = item => {\n // re-render MagnifierComponent,\n // sets zoom-in cursor CSS-class\n // resets Zoomed-In state\n const refreshKey = Date.now();\n\n return (\n
    \n {\n \n }\n {item.description && (\n {item.description}\n )}\n
    \n );\n };\n\n renderYoutubeItem = ({ embedUrl }) => {\n return (\n
    \n \n
    \n );\n };\n\n optionImageToGalleryItem = ({ service, id, url }) => {\n if (service === \"youtube\") {\n return {\n original: `https://i.ytimg.com/vi/${id}/maxresdefault.jpg`,\n thumbnail: `https://i.ytimg.com/vi/${id}/default.jpg`,\n embedUrl: `https://www.youtube.com/embed/${id}`,\n renderItem: this.renderYoutubeItem\n };\n }\n return {\n // Paperclip creates several versions of the original, we dirty-pick the quality of need\n medium: url,\n large: url.replace(\"/medium/\", \"/large/\"),\n original: url.replace(\"/medium/\", \"/original/\"),\n thumbnail: url.replace(\"/medium/\", \"/thumb/\"),\n renderItem: this.renderGalleryItem\n };\n };\n\n optionImageToThumbnailItem = ({ service, id, url }, i) => {\n let backgroundImage;\n if (service === \"youtube\") {\n backgroundImage = `url(\"https://i.ytimg.com/vi/${id}/default.jpg\")`;\n } else {\n backgroundImage = `url(\"${url.replace(\"/medium/\", \"/thumb/\")}\")`;\n }\n\n return (\n {\n e.stopPropagation();\n this.setState({ modalOpen: true, startIndex: i });\n }}\n />\n );\n };\n\n renderGalleryModal() {\n const { modalOpen, thumbnailPosition, startIndex } = this.state;\n const { option } = this.props;\n const { images } = option;\n const galleryItems = images.map(this.optionImageToGalleryItem);\n\n return (\n {\n event.stopPropagation();\n this.setState({ modalOpen: false });\n }}\n >\n \n \n \n \n \n \n \n );\n }\n\n renderThumbnailImageGroup() {\n const { option } = this.props;\n const { images } = option;\n return (\n
    \n {images.map(this.optionImageToThumbnailItem)}\n
    \n );\n }\n}\n\nexport default ThumbnailGallery;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, Card, Container, Icon, Label, Popup } from \"semantic-ui-react\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\nimport FormatQuantity from \"shared/components/quantity/FormatQuantity\";\nimport { FormattedMessage } from \"react-intl\";\nimport { getRequiredUpdates } from \"shared/selectors/unit/subLineItemRules\";\nimport \"./productOptions.scss\";\nimport OptionDetailsModal from \"shared/components/configurator/OptionDetailsModal\";\nimport ProductInfoItem from \"../../../builder_portal/components/product/ProductInfoItem\";\nimport ThumbnailGallery from \"./productOptionCard/ThumbnailGallery\";\nimport { getAccount } from \"../../selectors\";\nimport ProductLineLabel from \"../elements/productLineLabel\";\n\nclass ProductOption extends React.Component {\n static propTypes = {\n subLineItem: PropTypes.object,\n option: PropTypes.object,\n onSelectProduct: PropTypes.func,\n renderMissingMappingIcon: PropTypes.bool,\n renderMetaThumbs: PropTypes.bool\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n info: false,\n loading: false,\n image: null,\n disabled: false,\n showDetailsModal: false\n };\n }\n\n componentWillUnmount() {\n this.didUnmount = true;\n }\n\n render() {\n const {\n subLineItem,\n option,\n index,\n renderMissingMappingIcon,\n renderMetaThumbs = true,\n renderQuantityLabel = true\n } = this.props;\n const { status } = subLineItem;\n const hasCart = !status.selectable;\n const isSelected = option.isBuyerSelection;\n const isAcceptable = option.isAcceptableProduct;\n const classes = [\"product\"];\n const showMissingMappingHint =\n renderMissingMappingIcon && !option.hasConfiguratorMapping;\n const showPriceTag = option.isActualSelection || status.selectable;\n\n if (this.renderStandardFlag) {\n classes.push(\"standard\");\n }\n\n let icon;\n let color;\n let buttonLabel;\n let buttonClass;\n\n if (hasCart) {\n classes.push(\"hasCart\");\n\n if (isSelected) {\n classes.push(\"selected\");\n icon = \"hourglass two\";\n buttonLabel = (\n \n );\n } else {\n icon = \"lock\";\n buttonLabel = (\n \n );\n }\n if (status && option.isSelected) {\n classes.push(\"selected\");\n icon = \"check\";\n color = status.color;\n buttonLabel = {status.label};\n } else {\n classes.push(\"discarded\");\n }\n } else if (isSelected) {\n classes.push(\"selected\");\n icon = \"check\";\n buttonLabel = (\n \n );\n } else {\n icon = \"heart outline\";\n buttonLabel = (\n \n );\n }\n\n if ((isSelected && !isAcceptable) || !option.isValidSelection) {\n classes.push(\"incompatible\");\n buttonClass = \"warning\";\n icon = \"exclamation triangle\";\n buttonLabel = \"Ungültige Auswahl\";\n }\n\n return (\n {\n if (!hasCart) this.handleSelection();\n }}\n >\n
    \n {this.renderImage(option.thumbUrl)}\n {renderQuantityLabel &&\n !option.isQuantityOnRequest &&\n this.renderQuantityLabel(subLineItem, option)}\n {showPriceTag && this.renderPriceTag(option)}\n {showMissingMappingHint && (\n \n )}\n {showPriceTag && this.renderExtraPrice()}\n {this.renderStandardFlag(option)}\n
    \n \n {this.renderProductDetails(option)}\n \n {\n this.setState({ info: false });\n }}\n onOpen={() => {\n this.setState({ info: true });\n }}\n option={option}\n subLineItem={subLineItem}\n />\n \n {renderMetaThumbs && this.renderMetaThumbs(option)}\n {this.renderButton(buttonClass, buttonLabel, icon, color)}\n \n );\n }\n\n renderWithMissingMappingHint(component) {\n const { renderMissingMappingIcon, option } = this.props;\n const showMissingMappingHint =\n renderMissingMappingIcon && !option.hasConfiguratorMapping;\n\n return (\n \n \n \n );\n }\n\n renderQuantityLabel(subLineItem, option) {\n if (option.priceStrategy !== \"flat\") {\n return (\n \n \n \n );\n }\n }\n\n renderExtraPrice() {\n const {\n requiredUpdates: { extraCosts, extraCostsOnRequest }\n } = this.props;\n\n if (!extraCostsOnRequest && extraCosts) {\n return (\n \n );\n }\n }\n\n renderPriceTag(option) {\n const { priceField, subLineItem } = this.props;\n\n if (option.isOnRequest) {\n return (\n \n );\n }\n if (option.isQuantityOnRequest && option.total != 0) {\n const field = subLineItem.isOptional ? \"price\" : \"relativePrice\";\n return (\n \n );\n }\n const amount = option[priceField || \"relativeTotal\"];\n const displayAmount = amount >= 0 ? amount : -amount;\n const displayIcon = amount >= 0 ? \"plus\" : \"minus\";\n return (\n \n \n \n \n );\n }\n\n renderStandardFlag(option) {\n if (option.isDefault) {\n return (\n \n );\n }\n }\n\n renderProductDetails(option, renderTags = true) {\n const tags = option.productLines.map(tag => (\n \n ));\n\n const productDetails = (\n \n \n {!!tags.length && renderTags && (\n \n {tags}\n \n )}\n \n );\n\n return this.renderWithMissingMappingHint(productDetails);\n }\n\n renderImage(url) {\n return (\n \n );\n }\n\n renderMetaThumbs(option) {\n return (\n \n \n \n );\n }\n\n renderButton(buttonClass, buttonLabel, icon) {\n const { subLineItem, option } = this.props;\n const isSelected = option.isBuyerSelection;\n const isAcceptable = option.isAcceptableProduct;\n const { status } = subLineItem;\n\n if (isSelected || isAcceptable) {\n const button = (\n \n );\n return this.renderWithMissingMappingHint(button);\n }\n return null;\n }\n\n handleToggleInfoFn() {\n return event => {\n event.stopPropagation();\n\n return this.handleToggleInfo();\n };\n }\n\n handleToggleInfo = () => {\n if (this.state.info) {\n this.setState({ info: false });\n } else {\n this.setState({ info: true });\n }\n };\n\n handleSelection = () => {\n const { handleSelectFn, option } = this.props;\n const isSelected = option.isBuyerSelection;\n const isAcceptable = option.isAcceptableProduct;\n\n if (isSelected || isAcceptable) {\n this.setState({ loading: true });\n\n const closeFn = () => {\n if (!this.didUnmount) {\n this.setState({ loading: false });\n }\n };\n\n return handleSelectFn(option).then(closeFn);\n }\n };\n}\n\nconst mapStateToProps = (state, props) => {\n const { subLineItem, option } = props;\n const optionWithVideo = option;\n if (getAccount(state).isEnabled(\"supplier_integration\")) {\n // Mock images (related: YoutubeVideoHack)\n if ([46, 30864].includes(option.id)) {\n optionWithVideo.images.push({\n service: \"youtube\",\n id: \"braH1VUDtg8\",\n src: \"https://www.youtube.com/watch?v=braH1VUDtg8\"\n });\n }\n }\n const requiredUpdates = getRequiredUpdates(state)(subLineItem.id, option.id);\n\n return {\n requiredUpdates,\n option: optionWithVideo\n };\n};\n\nexport default connect(mapStateToProps)(ProductOption);\n","import * as Sentry from \"@sentry/react\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { sortBy } from \"lodash\";\nimport { getUserRole } from \"shared/selectors\";\nimport { Button, Card, Divider, Icon, Message } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport {\n getResource,\n SUB_LINE_ITEM_RESOURCE\n} from \"shared/actions/actionLocator\";\nimport {\n getAffectingSubLineItems,\n getSubLineItemsById\n} from \"shared/selectors/unit/subLineItems\";\nimport { getActivatedProductLine } from \"shared/selectors/unit/productLines\";\nimport { Hint } from \"shared/components/hint/Hint\";\nimport { defaultRichTextTags } from \"builder_portal/helpers/defaultRichTextTags\";\nimport { withRouter } from \"../../helpers/withRouter\";\nimport SubLineItemPicker from \"./pickers/SubLineItemPicker\";\nimport ProductOption from \"./ProductOption\";\nimport { Unless } from \"../elements/Conditions\";\nimport \"./productOptions.scss\";\n\nclass ProductOptions extends React.Component {\n static propTypes = {\n i18n: PropTypes.object.isRequired,\n subLineItem: PropTypes.object.isRequired,\n userRole: PropTypes.string.isRequired,\n priceField: PropTypes.string,\n renderMissingMappingIcon: PropTypes.bool,\n renderMetaThumbs: PropTypes.bool,\n renderQuantityLabel: PropTypes.bool\n };\n\n /** Sorting * */\n static generateInitialOrder(subLineItemOptions) {\n return subLineItemOptions.reduce((order, option, idx) => {\n const base = !option.isValidOption\n ? 1000\n : !option.isRecommendable\n ? 500\n : 0;\n order[option.id] = option.isBuyerSelection ? -1 : base + idx;\n return order;\n }, {});\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n order: ProductOptions.generateInitialOrder(props.subLineItem.options)\n };\n }\n\n componentDidUpdate(prevProps) {\n const { subLineItem } = this.props;\n if (subLineItem.id !== prevProps.subLineItem.id) {\n // re-render only if new SLI ID has arrived\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n order: ProductOptions.generateInitialOrder(subLineItem.options)\n });\n }\n return null; // do not re-render\n }\n\n renderSelectionHint = messageKey => {\n const model = this.getMessageModel(messageKey);\n const warning = model.mode === \"warn\";\n const info = model.mode === \"recommend\";\n const silent = model.mode === \"silent\";\n const icon = warning ? \"exclamation triangle\" : \"info circle\";\n\n return (\n \n \n \n \n Hinweis\n

    {this.renderMessage(messageKey)}

    \n
    \n \n
    \n );\n };\n\n renderAdditionalProducts = (subLineItem, picker) => {\n if (this.hasAdditionalProducts(subLineItem)) {\n if (this.state.showUnacceptable) {\n return (\n
    \n \n Weitere Produkte\n \n {this.renderAdditionalProductsHint()}\n {this.renderUnacceptableCards(subLineItem, picker)}\n
    \n );\n }\n return (\n
    \n {this.renderFilterHint()}\n \n \n \n
    \n );\n }\n };\n\n renderFilterHint = () => {\n return {this.renderMessage(\"filterHint\")};\n };\n\n renderAdditionalProductsHint = () => {\n return {this.renderMessage(\"unavailable\")};\n };\n\n renderMessage = messageKey => {\n const model = this.getMessageModel(messageKey);\n return (\n \n );\n };\n\n getMessageModel = messageKey => {\n const { affectingSubLineItems, productLine } = this.props;\n if (affectingSubLineItems.length) {\n return {\n values: {\n option: affectingSubLineItems.map(sli => sli.title).join(\", \")\n },\n messageId: `buyerPortal.roomBook.productOptions.messages.${messageKey}`\n };\n }\n if (productLine) {\n return {\n values: {\n type: productLine.name,\n type_plural: productLine.name_plural,\n series: productLine.selectedTagData\n .map(td => `${td.count} x ${td.name}`)\n .join(\", \")\n },\n mode: productLine.mode,\n messageId:\n productLine.warning ||\n `buyerPortal.roomBook.productLine.messages.${messageKey}`\n };\n }\n\n /* Displaying the error that was sent to sentry\n * makes in-place-debugging much easier\n */\n const err = new Error(\n \"A SubLineItem was tagged as invalid without a known reason (affectingSubLineItems/productLine)\"\n );\n // eslint-disable-next-line no-console\n console.error(err);\n Sentry.captureException(err);\n\n return {\n values: {\n option: []\n },\n messageId: `buyerPortal.roomBook.productOptions.messages.${messageKey}`\n };\n };\n\n showUnacceptableProducts = () => {\n this.setState({ showUnacceptable: true });\n };\n\n hasAdditionalProducts = subLineItem => {\n return subLineItem.options.filter(o => !o.isAcceptableProduct).length > 0;\n };\n\n renderAcceptableCards = (subLineItem, picker) => {\n return this.renderCards(\n subLineItem,\n subLineItem.options.filter(\n o => o.isBuyerSelection || o.isAcceptableProduct\n ),\n picker\n );\n };\n\n renderUnacceptableCards = (subLineItem, picker) => {\n return this.renderCards(\n subLineItem,\n subLineItem.options.filter(\n o => !o.isAcceptableProduct && !o.isBuyerSelection\n ),\n picker\n );\n };\n\n renderCards = (subLineItem, options, picker) => {\n const {\n priceField,\n renderMissingMappingIcon,\n renderMetaThumbs,\n renderQuantityLabel\n } = this.props;\n const visibleOptions = options.filter(o => o.isVisible);\n return (\n \n {this.sort(visibleOptions).map((productOption, idx) => {\n return (\n \n );\n })}\n \n );\n };\n\n sort(options) {\n const { order } = this.state;\n return sortBy(options, option => {\n return order[option.id];\n });\n }\n\n render() {\n const { subLineItem } = this.props;\n return (\n \n \n {picker => {\n return (\n
    \n {!subLineItem.isValid &&\n this.renderSelectionHint(\"incompatible\")}\n {subLineItem.isDecided &&\n !subLineItem.isRecommendable &&\n this.renderSelectionHint(\"notRecommended\")}\n {!subLineItem.isConfigurable &&\n this.renderSelectionHint(\"missing\")}\n\n {this.renderAcceptableCards(subLineItem, picker)}\n\n {this.renderAdditionalProducts(subLineItem, picker)}\n
    \n );\n }}\n
    \n \n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n const { i18n } = state;\n const { subLineItem } = props;\n\n const userRole = getUserRole(state);\n const affectingSubLineItems = getAffectingSubLineItems(state)(subLineItem);\n const productLine = getActivatedProductLine(state)(subLineItem.productTags);\n const subLineItemsById = getSubLineItemsById(state);\n\n return {\n i18n,\n userRole,\n affectingSubLineItems,\n productLine,\n subLineItemsById\n };\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n const { id } = props.params;\n const LineItemResource = getResource(SUB_LINE_ITEM_RESOURCE);\n\n return {\n lineItemResource: new LineItemResource(dispatch, id)\n };\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(ProductOptions)\n);\n","export function stopPropagation(event) {\n event.stopPropagation();\n}\n","import {\n arrayOf,\n bool,\n func,\n node,\n object,\n oneOfType,\n shape,\n string\n} from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { withI18n } from \"shared/containers/i18n/i18n\";\nimport { Button, Message, Modal } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { I18nShape } from \"shared/shapes/i18n.shape\";\n\nclass ConfirmationDialog extends Component {\n constructor(props) {\n super(props);\n this.state = { open: props.open };\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n onSubmit(button, event) {\n this.setState({ loading: true });\n if (button.onClick) {\n button.onClick(this.handleClose, event);\n } else {\n this.handleClose();\n }\n }\n\n handleClick = event => event.stopPropagation();\n\n handleClose = () => {\n if (this.unmounted) {\n this.triggerOnCloseCallback();\n } else {\n this.setState({ loading: false, open: false }, () => {\n this.triggerOnCloseCallback();\n });\n }\n };\n\n triggerOnCloseCallback() {\n const { onAsyncClose } = this.props;\n if (onAsyncClose) {\n onAsyncClose();\n }\n }\n\n renderButtons() {\n const { i18n, buttons } = this.props;\n const { loading } = this.state;\n\n return buttons.map(button => {\n return (\n this.onSubmit(button, event)}\n loading={button.loading ?? loading}\n disabled={button.loading ?? loading}\n content={i18n[button.label] || button.label}\n />\n );\n });\n }\n\n render() {\n const {\n i18n,\n message,\n content,\n title,\n errorMessage,\n button,\n scrollContent,\n extra\n } = this.props;\n const { open } = this.state;\n\n return (\n this.setState({ open: true })}\n onClose={this.handleClose}\n >\n {i18n[title] || title}\n \n {message ? (\n

    \n ) : (\n

    {content}
    \n )}\n
    \n {errorMessage && (\n \n \n \n \n \n

    \n \n

    \n
    \n
    \n )}\n {extra && {extra}}\n {this.renderButtons()}\n \n );\n }\n}\nConfirmationDialog.defaultProps = {\n onAsyncClose: undefined,\n errorMessage: undefined,\n message: undefined,\n content: undefined,\n button: undefined,\n buttons: undefined,\n open: undefined,\n scrollContent: false,\n extra: undefined\n};\n\nConfirmationDialog.propTypes = {\n i18n: I18nShape.isRequired,\n title: oneOfType([object, string]).isRequired,\n message: string,\n content: node,\n button: node,\n buttons: arrayOf(\n shape({\n loading: bool,\n id: string,\n color: string,\n basic: bool,\n label: string,\n onClick: func\n })\n ),\n onAsyncClose: func, // be aware: This onClose is Async. No guarantee any component still exists when method is called\n errorMessage: string,\n open: bool,\n scrollContent: bool,\n extra: node\n};\nexport default withI18n(ConfirmationDialog);\n","import React, { useContext, useMemo } from \"react\";\nimport { bool, objectOf, node } from \"prop-types\";\nimport { useSelector } from \"react-redux\";\nimport { getAccount } from \"../../selectors\";\n\nconst FeatureToggleContext = React.createContext({});\n\nexport const useFeatureToggleContext = () => {\n return useContext(FeatureToggleContext);\n};\n\nexport const useAccountFeatureToggle = () => {\n const account = useSelector(getAccount);\n\n return useMemo(\n () => ({\n isEnabled: toggle => {\n return account.isEnabled(toggle);\n }\n }),\n [account]\n );\n};\n\nconst FeatureToggleProvider = ({ featureToggles, children }) => {\n return (\n \n {children}\n \n );\n};\n\nFeatureToggleProvider.propTypes = {\n children: node.isRequired,\n featureToggles: objectOf(bool).isRequired\n};\n\nexport default FeatureToggleProvider;\n","import Resources from \"../../shared/actions/resourcesActions\";\n\nclass ProductTypeResource extends Resources {\n constructor(dispatch) {\n super(dispatch, \"product_type\", \"/api/v1/product_types\");\n }\n}\n\nexport default ProductTypeResource;\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { connect } from \"react-redux\";\nimport { formatCurrency } from \"shared/helpers/formatCurrency\";\n\nimport { getProjectCurrency } from \"shared/selectors/currency\";\nimport { PriceStrategyShape } from \"shared/components/configurator/roomBook.shape\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nclass FormatCurrency extends Component {\n renderPerUnit() {\n const { priceStrategy } = this.props;\n if (priceStrategy && priceStrategy !== \"flat\") {\n return (\n \n  / \n \n \n );\n }\n return null;\n }\n\n render() {\n const { currency, amount, isOnRequest, className } = this.props;\n if (isOnRequest) {\n return (\n \n );\n }\n\n return (\n \n {formatCurrency(amount, currency.code)}\n {this.renderPerUnit()}\n \n );\n }\n}\n\nFormatCurrency.propTypes = {\n amount: PropTypes.number,\n currency: PropTypes.shape({\n code: PropTypes.string.isRequired\n }).isRequired,\n priceStrategy: PriceStrategyShape,\n isOnRequest: PropTypes.bool,\n className: PropTypes.string\n};\n\nFormatCurrency.defaultProps = {\n amount: 0,\n priceStrategy: null,\n isOnRequest: false,\n className: \"\"\n};\n\nconst mapStateToProps = (state, props) => {\n const { projectId } = props.params; // passed by `withRouter()` method\n return {\n currency: getProjectCurrency(state, projectId)\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(FormatCurrency));\n","import { arrayOf, bool, number, shape, string } from \"prop-types\";\nimport { PriceStrategyShape } from \"shared/components/configurator/roomBook.shape\";\nimport ProductPriceShape from \"./productPrice.shape\";\nimport ProductOptionShape from \"./productOption.shape\";\n\nconst ProductGroupShape = shape({\n id: number,\n name: string,\n desciption: string,\n price_strategy: PriceStrategyShape,\n trades: arrayOf(string),\n deletable: bool,\n portal_offer: bool,\n quantity_on_request: bool,\n created_at: string,\n updated_at: string,\n prices: arrayOf(ProductPriceShape),\n product_options: arrayOf(ProductOptionShape),\n thumb_url: string,\n external_id: string\n});\nexport default ProductGroupShape;\n","import { number, oneOfType, shape, string } from \"prop-types\";\n\nexport const ContractorShape = shape({\n id: oneOfType([string, number]).isRequired,\n contact_person: string.isRequired,\n email: string.isRequired,\n salutation: string,\n title: string\n});\n\nexport default ContractorShape;\n","import { shape, string } from \"prop-types\";\n\nexport const TradeLabelShape = shape({\n key: string,\n value: string,\n text: string\n});\n\nexport default TradeLabelShape;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = require(\"react\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction isReactComponent(element) {\n return typeof element.type === \"function\";\n}\n\nfunction decorateChild(child, props) {\n return /*#__PURE__*/(0, _react.cloneElement)(child, props);\n}\n\nfunction shouldDecorateChild(child) {\n return !!child && isReactComponent(child);\n}\n\nfunction decorateChildren(children, props) {\n return _react.Children.map(children, function (child) {\n return shouldDecorateChild(child) ? decorateChild(child, props) : child;\n });\n}\n\nfunction preventDefault(e) {\n e.preventDefault();\n}\n\nfunction convertRange(oldMin, oldMax, newMin, newMax, oldValue) {\n var percent = (oldValue - oldMin) / (oldMax - oldMin);\n return percent * (newMax - newMin) + newMin;\n}\n\nfunction limitPosition(minX, maxX, minY, maxY) {\n var itemPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n var position = _objectSpread({}, itemPosition);\n\n if (minX !== undefined && position.x < minX) {\n position.x = minX;\n } else if (maxX !== undefined && position.x > maxX) {\n position.x = maxX;\n }\n\n if (minY !== undefined && position.y < minY) {\n position.y = minY;\n } else if (maxY !== undefined && position.y > maxY) {\n position.y = maxY;\n }\n\n return position;\n}\n\nfunction createAdjustedLimits(minX, maxX, minY, maxY) {\n var elemDimensions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var itemDimensions = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var limitBySize = arguments.length > 6 ? arguments[6] : undefined;\n var internal = arguments.length > 7 ? arguments[7] : undefined;\n var limits = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY\n };\n\n if (limits.maxX < 0) {\n limits.maxX = elemDimensions.width + limits.maxX;\n }\n\n if (limits.maxY < 0) {\n limits.maxY = elemDimensions.height + limits.maxY;\n }\n\n if (!limitBySize) {\n return limits;\n }\n\n if (internal) {\n limits.minX = 0;\n limits.minY = 0;\n limits.maxX = elemDimensions.width - itemDimensions.width;\n limits.maxY = elemDimensions.height - itemDimensions.height;\n\n if (itemDimensions.width > elemDimensions.width || itemDimensions.height > elemDimensions.height) {\n limits.maxX = 0;\n limits.maxY = 0;\n }\n } else if (itemDimensions.width || itemDimensions.height) {\n limits.maxX = 0;\n limits.maxY = 0;\n limits.minX = -itemDimensions.width + elemDimensions.width;\n limits.minY = -itemDimensions.height + elemDimensions.height;\n\n if (itemDimensions.width < elemDimensions.width || itemDimensions.height < elemDimensions.height) {\n limits.minX = 0;\n limits.minY = 0;\n }\n }\n\n return limits;\n}\n\nfunction calculateItemPosition() {\n var itemPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var prevActivePosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var activePosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n\n var newItemPosition = _objectSpread({}, itemPosition);\n\n var moveX = (activePosition.x - prevActivePosition.x) * multiplier;\n var moveY = (activePosition.y - prevActivePosition.y) * multiplier;\n newItemPosition.x += moveX;\n newItemPosition.y += moveY;\n return newItemPosition;\n}\n\nfunction alignItemOnPosition() {\n var elemDimensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var itemDimensions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var position = arguments.length > 2 ? arguments[2] : undefined;\n var oldMaxX = elemDimensions.width;\n var newMaxX = -(itemDimensions.width || 0) + elemDimensions.width;\n var oldMaxY = elemDimensions.height;\n var newMaxY = -(itemDimensions.height || 0) + elemDimensions.height;\n return {\n x: convertRange(0, oldMaxX, 0, newMaxX, position.x),\n y: convertRange(0, oldMaxY, 0, newMaxY, position.y)\n };\n}\n\nfunction centerItemOnPosition() {\n var elemDimensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var itemDimensions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var position = arguments.length > 2 ? arguments[2] : undefined;\n var itemPosition = alignItemOnPosition(elemDimensions, itemDimensions, position);\n itemPosition.x += elemDimensions.width / 2 - position.x;\n itemPosition.y += elemDimensions.height / 2 - position.y;\n return itemPosition;\n}\n\nvar _default = {\n decorateChildren: decorateChildren,\n preventDefault: preventDefault,\n convertRange: convertRange,\n limitPosition: limitPosition,\n createAdjustedLimits: createAdjustedLimits,\n calculateItemPosition: calculateItemPosition,\n alignItemOnPosition: alignItemOnPosition,\n centerItemOnPosition: centerItemOnPosition\n};\nexports[\"default\"] = _default;","import {\n ADD_PAGE_CONTENT,\n UPDATE_PAGE_CONTENT\n} from \"shared/constants/appConstants\";\nimport Resources from \"./resourcesActions\";\n\nexport class BaseSubLineItemResource extends Resources {}\n\nexport class LineItemResource extends Resources {\n toggle(lineItemId, value) {\n return new Promise(resolve => {\n this.dispatch({\n type: ADD_PAGE_CONTENT,\n payload: { line_item_activation: { [lineItemId]: value } }\n });\n resolve({ status: 200 }); // fakes a successful apiRequest response\n });\n }\n\n activate(lineItemId) {\n return this.toggle(lineItemId, true);\n }\n\n deactivate(lineItemId) {\n return this.toggle(lineItemId, false);\n }\n\n get() {\n return new Promise(resolve => {\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: { line_item_activation: {} }\n });\n resolve({ status: 200 }); // fakes a successful apiRequest response\n });\n }\n}\n","// eslint-disable-next-line no-restricted-imports\nimport { withRouter as legacyWithRouter } from \"react-router\";\n\n// eslint-disable-next-line import/prefer-default-export\nexport function withRouter(children) {\n return legacyWithRouter(children);\n}\n","import React from \"react\";\nimport { Label } from \"semantic-ui-react\";\nimport { bool, number, shape, string } from \"prop-types\";\n\nconst ProductLineShape = shape({\n active: bool,\n composite_id: string,\n count: number,\n name: string,\n productLineGroup: string\n});\n\nfunction ProductLineLabel({ productLine }) {\n return (\n \n {productLine.name}\n \n );\n}\n\nProductLineLabel.propTypes = {\n productLine: ProductLineShape.isRequired\n};\n\nexport default ProductLineLabel;\n","import { bool, shape, string } from \"prop-types\";\nimport { LineItemShape } from \"shared/components/configurator/roomBook.shape\";\n\nexport const ConfiguratorLineItemShape = shape({\n ...LineItemShape,\n status: shape({\n id: string,\n label: string,\n color: string,\n selectable: bool\n }),\n isRequired: bool\n});\n\nexport default ConfiguratorLineItemShape;\n","import { arrayOf, bool, shape, string } from \"prop-types\";\nimport { SubLineItemShape } from \"shared/components/configurator/roomBook.shape\";\nimport { OptionShape } from \"shared/shapes/subLineItemOption.shape\";\nimport { ConfiguratorLineItemShape } from \"shared/shapes/configuratorLineItem.shape\";\n\nexport const ConfiguratorSubLineItemShape = shape({\n ...SubLineItemShape,\n lineItem: ConfiguratorLineItemShape,\n isOptional: bool,\n isReplaced: bool,\n isReplacement: bool,\n isActivated: bool,\n isRequired: bool,\n atLeastOneWithMapping: bool,\n status: shape({\n id: string,\n label: string,\n color: string,\n selectable: bool\n }),\n options: arrayOf(OptionShape),\n selectedOption: OptionShape,\n key: string\n});\n\nexport default ConfiguratorSubLineItemShape;\n","import { arrayOf, func, string, node, instanceOf } from \"prop-types\";\nimport React from \"react\";\nimport { Button, Header, Icon } from \"semantic-ui-react\";\nimport ProductOptions from \"shared/components/roomBook/ProductOptions\";\nimport { navigationButton } from \"shared/helpers/navigationButton\";\nimport CardGrid from \"shared/components/cardGrid/CardGrid\";\nimport LineItemPicker from \"shared/components/roomBook/pickers/LineItemPicker\";\nimport { FormattedMessage } from \"react-intl\";\nimport { ConfiguratorSubLineItemShape } from \"shared/shapes/configuratorSubLineItem.shape\";\nimport { RoomBookController } from \"shared/actions/roomBookController\";\nimport { ConfiguratorLineItemShape } from \"shared/shapes/configuratorLineItem.shape\";\n\nclass OptionsMenu extends React.PureComponent {\n getSelectLineItem = lineItem => () => {\n const { onSelectLineItemId } = this.props;\n onSelectLineItemId(lineItem.id);\n };\n\n getActivatedLineItem = lineItem => {\n return {\n key: lineItem.id,\n title: lineItem.title,\n imageUrl: lineItem.thumbUrl,\n imageClass: lineItem.imageClass,\n total: lineItem.total,\n isBasePrice: !lineItem.isActivated,\n isPriceOnRequest: lineItem.isPriceOnRequest,\n button: navigationButton(lineItem),\n modelType: \"line_item\",\n onClick: this.getSelectLineItem(lineItem)\n };\n };\n\n getReplacementLineItem = (lineItem, picker) => {\n return {\n key: lineItem.id,\n title: lineItem.title,\n imageUrl: lineItem.thumbUrl,\n imageClass: lineItem.imageClass,\n total: lineItem.totalMin,\n isPriceOnRequest: lineItem.isPriceOnRequest,\n isBasePrice: !lineItem.isActivated,\n button: navigationButton(lineItem),\n onClick: () => {\n picker\n .select(lineItem)\n .then(this.getSelectLineItem(lineItem), () => {});\n }\n };\n };\n\n getOptionalLineItem = (lineItem, picker) => {\n return {\n key: lineItem.id,\n title: lineItem.title,\n imageUrl: lineItem.thumbUrl,\n imageClass: lineItem.imageClass,\n total: lineItem.totalMin,\n isPriceOnRequest: lineItem.isPriceOnRequest,\n isBasePrice: !lineItem.isActivated,\n button: navigationButton(lineItem),\n onClick: () => {\n picker\n .select(lineItem)\n .then(this.getSelectLineItem(lineItem), () => {});\n }\n };\n };\n\n getLineItems(picker) {\n const { lineItems } = this.props;\n return lineItems.map(lineItem => {\n if (lineItem.isActivated) {\n return this.getActivatedLineItem(lineItem);\n }\n if (lineItem.isReplacement) {\n return this.getReplacementLineItem(lineItem, picker);\n }\n return this.getOptionalLineItem(lineItem, picker);\n });\n }\n\n getSubLineItems() {\n const { subLineItems, selectedLineItem } = this.props;\n\n return subLineItems\n .filter(subLineItem => subLineItem.lineItemId === selectedLineItem.id)\n .map(subLineItem => ({\n key: subLineItem.id,\n title: subLineItem.title,\n imageUrl: subLineItem.thumbUrl,\n imageClass: \"productImage\",\n isPriceOnRequest: subLineItem.isPriceOnRequest,\n isBasePrice: subLineItem.isOptional && !subLineItem.isActivated,\n total: subLineItem.total || subLineItem.totalMin,\n button: navigationButton({ ...subLineItem }),\n onClick: () => {\n this.handleSelectSubLineItem({ subLineItemId: subLineItem.id });\n }\n }));\n }\n\n handleSelectSubLineItem = ({ subLineItemId }) => {\n const { onSelectSubLineItemId } = this.props;\n onSelectSubLineItemId(subLineItemId);\n };\n\n handleBackButton = () => {\n const {\n onSelectSubLineItemId,\n onSelectLineItemId,\n selectedSubLineItem,\n selectedLineItem\n } = this.props;\n if (\n selectedLineItem?.isOptional &&\n !selectedLineItem.isActivated &&\n (!selectedSubLineItem || selectedLineItem.subLineItemIds.length === 1)\n ) {\n this.deactivateLineItemDialog(true);\n } else if (selectedSubLineItem) {\n onSelectSubLineItemId(null);\n } else {\n onSelectLineItemId(null);\n }\n };\n\n deactivateLineItemId(lineItemId) {\n const { subLineItems, ctrl } = this.props;\n const subLineItemIds = subLineItems\n .filter(sli => sli.lineItemId === lineItemId)\n .map(sli => sli.id);\n return ctrl\n .deselectProducts(subLineItemIds)\n .then(() => ctrl.deactivateLineItem(lineItemId));\n }\n\n deactivateLineItemDialog(noSelectionWarning = false) {\n const {\n confirmationDialog,\n selectedLineItem,\n onSelectLineItemId\n } = this.props;\n const titleId = noSelectionWarning\n ? \"buyerPortal.roomBook.optionalLineItem.actions.noSelectionWarning.title\"\n : \"buyerPortal.roomBook.optionalLineItem.actions.remove.title\";\n const messageId = noSelectionWarning\n ? \"buyerPortal.roomBook.optionalLineItem.actions.noSelectionWarning.message\"\n : \"buyerPortal.roomBook.optionalLineItem.actions.remove.message\";\n confirmationDialog({\n title: ,\n content: (\n \n ),\n buttons: [\n {\n id: \"remove\",\n label: \"meta.actions.unlink\",\n onClick: cb =>\n this.deactivateLineItemId(selectedLineItem.id).then(() => {\n cb();\n onSelectLineItemId(null);\n })\n },\n {\n id: \"cancel\",\n label: \"meta.actions.cancel\",\n basic: true\n }\n ]\n });\n }\n\n renderHeader() {\n const { selectedSubLineItem, selectedLineItem, roomName } = this.props;\n let title;\n if (selectedSubLineItem) {\n title = selectedSubLineItem.title;\n } else if (selectedLineItem) {\n title = selectedLineItem.title;\n } else {\n title = roomName;\n }\n\n return
    ;\n }\n\n renderActions() {\n const {\n selectedSubLineItem,\n subLineItems,\n selectedLineItem,\n lineItems\n } = this.props;\n const showBackButton =\n (selectedSubLineItem && subLineItems.length > 1) ||\n (selectedLineItem && lineItems.length > 1);\n const showRemoveButton =\n selectedLineItem &&\n selectedLineItem.isOptional &&\n !selectedLineItem.isProgressed &&\n (!selectedSubLineItem || selectedLineItem.subLineItemIds.length === 1);\n\n return (\n \n {showBackButton && (\n \n )}\n {showRemoveButton && (\n \n )}\n \n );\n }\n\n renderBody() {\n const { selectedSubLineItem, selectedLineItem } = this.props;\n\n if (selectedSubLineItem) {\n return this.renderProductOptions();\n }\n if (selectedLineItem) {\n return this.renderSubLineItemMenu();\n }\n return this.renderLineItemMenu();\n }\n\n renderLineItemMenu() {\n return (\n \n {picker => }\n \n );\n }\n\n renderSubLineItemMenu() {\n return ;\n }\n\n renderProductOptions() {\n const { selectedSubLineItem, subLineItems, onSelectOption } = this.props;\n\n return (\n sli.id === selectedSubLineItem.id\n )}\n />\n );\n }\n\n render() {\n const { children } = this.props;\n\n return (\n
    \n {this.renderHeader()}\n {children}\n {this.renderBody()}\n {this.renderActions()}\n
    \n );\n }\n}\n\nOptionsMenu.propTypes = {\n subLineItems: arrayOf(ConfiguratorSubLineItemShape),\n lineItems: arrayOf(ConfiguratorLineItemShape),\n onSelectLineItemId: func.isRequired,\n onSelectSubLineItemId: func.isRequired,\n onSelectOption: func.isRequired,\n roomName: string.isRequired,\n children: node,\n selectedSubLineItem: ConfiguratorSubLineItemShape,\n selectedLineItem: ConfiguratorLineItemShape,\n ctrl: instanceOf(RoomBookController).isRequired\n};\n\nOptionsMenu.defaultProps = {\n selectedSubLineItem: null,\n selectedLineItem: null,\n children: null,\n subLineItems: [],\n lineItems: []\n};\n\nexport default OptionsMenu;\n","import { shape, string } from \"prop-types\";\n\nexport const configuratorViewShape = shape({\n room: string\n});\n\nexport default configuratorViewShape;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport \"./pinchZoomPan.scss\";\n\nconst MIN_SCALE = 1;\nconst MAX_SCALE = 3;\nconst SETTLE_RANGE = 0.001;\nconst ADDITIONAL_LIMIT = 0.2;\nconst DOUBLE_TAP_THRESHOLD = 300;\nconst ANIMATION_SPEED = 0.1;\nconst RESET_ANIMATION_SPEED = 0.08;\nconst INITIAL_X = 0;\nconst INITIAL_Y = 0;\nconst INITIAL_SCALE = 1;\nconst MIN_DRAG_LIMIT = 5;\n\nconst settle = (val, target, range) => {\n const lowerRange = val > target - range && val < target;\n const upperRange = val < target + range && val > target;\n return lowerRange || upperRange ? target : val;\n};\n\nconst inverse = x => x * -1;\n\nconst getPointFromEvent = (event, element) => {\n const rect = element.getBoundingClientRect();\n return {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top\n };\n};\n\nconst getMidpoint = (pointA, pointB) => ({\n x: (pointA.x + pointB.x) / 2,\n y: (pointA.y + pointB.y) / 2\n});\n\nconst getDistanceBetweenPoints = (pointA, pointB) =>\n Math.sqrt(\n Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2)\n );\n\nconst between = (min, max, value) => Math.min(max, Math.max(min, value));\n\nclass PinchZoomPan extends React.Component {\n static propTypes = {\n renderContent: PropTypes.func.isRequired,\n children: PropTypes.node\n };\n\n constructor() {\n super(...arguments);\n\n this.state = {\n x: INITIAL_X,\n y: INITIAL_Y,\n scale: INITIAL_SCALE,\n limit: ADDITIONAL_LIMIT,\n dragging: false\n };\n }\n\n zoomTo(targetScale, midpoint) {\n cancelAnimationFrame(this.animation);\n\n const frame = () => {\n if (!this.container) return null;\n const { scale, limit } = this.state;\n\n if (scale === targetScale && limit === 0) return null;\n\n const distance = targetScale - scale;\n const newScale = scale + ANIMATION_SPEED * distance;\n\n const newLimit = limit - limit * ANIMATION_SPEED;\n\n this.zoom(\n settle(newScale, targetScale, SETTLE_RANGE),\n midpoint,\n settle(newLimit, 0, SETTLE_RANGE)\n );\n this.animation = requestAnimationFrame(frame);\n };\n\n this.animation = requestAnimationFrame(frame);\n }\n\n reset() {\n cancelAnimationFrame(this.animation);\n\n const frame = () => {\n if (\n (this.state.scale === INITIAL_SCALE &&\n this.state.x === INITIAL_X &&\n this.state.y === INITIAL_Y) ||\n !this.container\n )\n return null;\n const distance = INITIAL_SCALE - this.state.scale;\n const distanceX = INITIAL_X - this.state.x;\n const distanceY = INITIAL_Y - this.state.y;\n\n const targetScale = settle(\n this.state.scale + RESET_ANIMATION_SPEED * distance,\n INITIAL_SCALE,\n SETTLE_RANGE\n );\n const targetX = settle(\n this.state.x + RESET_ANIMATION_SPEED * distanceX,\n INITIAL_X,\n SETTLE_RANGE\n );\n const targetY = settle(\n this.state.y + RESET_ANIMATION_SPEED * distanceY,\n INITIAL_Y,\n SETTLE_RANGE\n );\n\n const nextWidth = this.container.offsetWidth * targetScale;\n const nextHeight = this.container.offsetHeight * targetScale;\n\n this.setState(\n {\n x: targetX,\n y: targetY,\n scale: targetScale,\n width: nextWidth,\n height: nextHeight\n },\n () => {\n this.animation = requestAnimationFrame(frame);\n }\n );\n };\n\n this.animation = requestAnimationFrame(frame);\n }\n\n handleTouchStart = event => {\n cancelAnimationFrame(this.animation);\n\n if (event.touches.length === 2) this.handlePinchStart(event);\n if (event.touches.length === 1) this.handleTapStart(event);\n\n event.preventDefault();\n event.stopPropagation();\n };\n\n handleTouchMove = event => {\n if (event.touches.length === 2) this.handlePinchMove(event);\n if (event.touches.length === 1) this.handlePanMove(event.touches[0]);\n };\n\n handleTouchEnd = event => {\n if (!this.container) return null;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (event.touches.length === 1) {\n this.lastPanPoint = getPointFromEvent(event.touches[0], this.container);\n }\n if (event.touches.length > 0) return null;\n\n this.checkLimits();\n\n if (\n this.lastTouchEnd &&\n this.lastTouchEnd + DOUBLE_TAP_THRESHOLD > event.timeStamp\n ) {\n const { scale } = this.state;\n if (scale > (MIN_SCALE + MAX_SCALE) / 2) {\n this.reset();\n } else {\n return this.zoomTo(MAX_SCALE, this.lastPanPoint);\n }\n }\n\n this.lastTouchEnd = event.timeStamp;\n };\n\n checkLimits() {\n const {\n offsetWidth: containerWidth,\n offsetHeight: containerHeight\n } = this.container;\n const {\n scale,\n x,\n y,\n width = containerWidth,\n height = containerHeight\n } = this.state;\n\n if (scale > MAX_SCALE) {\n this.zoomTo(MAX_SCALE, this.lastMidpoint);\n } else if (scale < MIN_SCALE) {\n this.zoomTo(MIN_SCALE, this.lastMidpoint);\n } else if (\n x > 0 ||\n x < containerWidth - width ||\n y > 0 ||\n y < containerHeight - height\n ) {\n this.zoomTo(scale, this.lastMidpoint || this.lastPanPoint);\n }\n }\n\n handleTapStart = event => {\n if (!this.container) return null;\n this.lastPanPoint = getPointFromEvent(event.touches[0], this.container);\n };\n\n handlePanMove = event => {\n if (!this.container) return null;\n const {\n offsetWidth: containerWidth,\n offsetHeight: containerHeight\n } = this.container;\n const {\n scale,\n x,\n y,\n width = containerWidth,\n height = containerHeight\n } = this.state;\n\n if (scale === 1 || !this.lastPanPoint) return null;\n\n const point = getPointFromEvent(event, this.container);\n const nextX = x + point.x - this.lastPanPoint.x;\n const nextY = y + point.y - this.lastPanPoint.y;\n\n const limit = ADDITIONAL_LIMIT;\n this.setState({\n x: between(\n (1 - limit / 2) * containerWidth - width,\n (limit / 2) * containerWidth,\n nextX\n ),\n y: between(\n (1 - limit / 2) * containerHeight - height,\n (limit / 2) * containerHeight,\n nextY\n ),\n limit\n });\n\n this.lastPanPoint = point;\n };\n\n handlePinchStart = event => {\n if (!this.container) return null;\n this.lastPanPoint = null;\n const pointA = getPointFromEvent(event.touches[0], this.container);\n const pointB = getPointFromEvent(event.touches[1], this.container);\n this.lastDistance = getDistanceBetweenPoints(pointA, pointB);\n };\n\n handlePinchMove = event => {\n if (!this.container) return null;\n const pointA = getPointFromEvent(event.touches[0], this.container);\n const pointB = getPointFromEvent(event.touches[1], this.container);\n const distance = getDistanceBetweenPoints(pointA, pointB);\n const midpoint = getMidpoint(pointA, pointB);\n const scale = between(\n MIN_SCALE - ADDITIONAL_LIMIT,\n MAX_SCALE + ADDITIONAL_LIMIT,\n this.state.scale * (distance / this.lastDistance)\n );\n\n this.zoom(scale, midpoint);\n\n this.lastMidpoint = midpoint;\n this.lastDistance = distance;\n };\n\n handleClick = event => {\n if (!this.container) return null;\n const { scale, dragging } = this.state;\n\n if (dragging) {\n this.setState({ dragging: false });\n this.checkLimits();\n } else if (scale > (MIN_SCALE + MAX_SCALE) / 2) {\n this.reset();\n } else {\n const point = getPointFromEvent(event, this.container);\n return this.zoomTo(MAX_SCALE, point);\n }\n };\n\n handleMouseDown = event => {\n if (!this.container) return null;\n this.lastPanPoint = getPointFromEvent(event, this.container);\n event.preventDefault();\n };\n\n handleMouseMove = event => {\n if (!this.container) return null;\n if (event.buttons === 1) {\n const { dragging } = this.state;\n const point = getPointFromEvent(event, this.container);\n this.lastPanPoint = this.lastPanPoint || point;\n if (\n dragging ||\n getDistanceBetweenPoints(this.lastPanPoint, point) > MIN_DRAG_LIMIT\n ) {\n this.setState({ dragging: true });\n this.handlePanMove(event);\n }\n }\n };\n\n handleMouseLeave = () => {\n if (!this.container) return null;\n const { dragging } = this.state;\n\n if (dragging) {\n this.setState({ dragging: false });\n this.checkLimits();\n }\n };\n\n zoom(scale, midpoint, limit = ADDITIONAL_LIMIT) {\n const {\n offsetWidth: containerWidth,\n offsetHeight: containerHeight\n } = this.container;\n const {\n x,\n y,\n width = containerWidth,\n height = containerHeight\n } = this.state;\n\n const nextWidth = containerWidth * scale;\n const nextHeight = containerHeight * scale;\n const nextX =\n x + (inverse(midpoint.x * scale) * (nextWidth - width)) / nextWidth;\n const nextY =\n y + (inverse(midpoint.y * scale) * (nextHeight - height)) / nextHeight;\n\n this.setState({\n width: nextWidth,\n height: nextHeight,\n x: between(\n (1 - limit / 2) * containerWidth - nextWidth,\n (limit / 2) * containerWidth,\n nextX\n ),\n y: between(\n (1 - limit / 2) * containerHeight - nextHeight,\n (limit / 2) * containerHeight,\n nextY\n ),\n scale,\n limit\n });\n }\n\n render() {\n const { scale, dragging } = this.state;\n\n const cursor = dragging\n ? \"all-scroll\"\n : scale > (MIN_SCALE + MAX_SCALE) / 2\n ? \"zoom-out\"\n : \"zoom-in\";\n\n return (\n \n {this.props.renderContent(this.state.x, this.state.y, this.state.scale)}\n {this.props.children}\n \n );\n }\n\n setContainerRef = ref => {\n this.container = ref;\n };\n}\n\nexport default PinchZoomPan;\n","class Pool {\n constructor(size, factory) {\n this.size = size;\n this.factory = factory;\n this.queue = [];\n this.working = [];\n this.completed = [];\n }\n\n schedule(item) {\n this.queue.push(item);\n this.next();\n }\n\n next() {\n if (\n this.queue.length &&\n this.working.length - this.completed.length < this.size\n ) {\n const item = this.queue.pop();\n\n const promise = this.factory(item);\n\n this.working.push(item);\n\n promise.then(() => {\n this.completed.push(item);\n this.next();\n });\n }\n }\n}\n\nexport default Pool;\n","import { func, instanceOf, string } from \"prop-types\";\nimport React from \"react\";\nimport { Loader } from \"semantic-ui-react\";\nimport Pool from \"./Pool\";\n\nexport default class ImagePreloader extends React.PureComponent {\n static propTypes = {\n imageURL: string.isRequired,\n children: func.isRequired,\n // prefetchImageURLs is used in handleImageLoaded but eslint doesn't recognize it.\n // eslint-disable-next-line react/no-unused-prop-types\n prefetchImageURLs: instanceOf(Set)\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n loading: true,\n imageURL: null\n };\n this.preLoaded = new Set();\n this.preLoading = new Set();\n this.timer = null;\n }\n\n componentDidMount() {\n const { imageURL } = this.props;\n this.preloadImage(imageURL);\n }\n\n componentDidUpdate(prevProps) {\n const { imageURL, prefetchImageURLs } = this.props;\n const {\n imageURL: prevImageUrl,\n prefetchImageURLs: prevPrefetchImageURLs\n } = prevProps;\n\n if (\n imageURL !== prevImageUrl ||\n prefetchImageURLs !== prevPrefetchImageURLs\n ) {\n this.updateImage(imageURL);\n this.updateLoading();\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n updateImage = imageURL => {\n const { imageURL: currentImageURL } = this.state;\n\n if (this.preLoaded.has(imageURL)) {\n if (currentImageURL !== imageURL) {\n this.setState({ imageURL, loading: false });\n }\n this.startPrefetching();\n } else if (!this.preLoading.has(imageURL)) {\n this.preloadImage(imageURL);\n }\n };\n\n updateLoading = () => {\n const { loading } = this.state;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (!loading) {\n // After a short delay, check if image is already loaded, otherwise display loader.\n // The delay is needed to give the browser cache some time to load from disk.\n this.timer = setTimeout(this.checkLoading, 100);\n }\n };\n\n checkLoading = () => {\n const { imageURL } = this.props;\n const { imageURL: currentImageURL, loading } = this.state;\n if (!loading && !(imageURL === currentImageURL))\n this.setState({ loading: true });\n };\n\n preloadImage = imageURL => {\n return new Promise(resolve => {\n if (this.preLoading.has(imageURL)) {\n resolve();\n } else {\n this.preLoading.add(imageURL);\n\n // Bind an event listener on the load to call the `resolve` function\n // Create a new image from JavaScript\n const image = new Image();\n\n image.onload = resolve;\n\n // If the image fails to be downloaded, we don't want the whole system\n // to collapse so we `resolve` instead of `reject`, even on error\n image.onerror = resolve;\n\n // Apply the path as `src` to the image so that the browser fetches it\n image.src = imageURL;\n }\n })\n .then(() => this.handleImageLoaded(imageURL))\n .catch(() => {\n this.preLoading.delete(imageURL);\n });\n };\n\n handleImageLoaded = loadedUrl => {\n if (this.unmounted) return;\n\n const { imageURL } = this.props;\n this.preLoaded.add(loadedUrl);\n\n const isMainImageLoaded = imageURL === loadedUrl;\n if (isMainImageLoaded) {\n this.updateImage(imageURL);\n }\n };\n\n startPrefetching() {\n const { prefetchImageURLs } = this.props;\n\n const pool = new Pool(5, url => {\n if (!this.preLoaded.has(url) && !this.preLoading.has(url)) {\n return this.preloadImage(url);\n }\n return Promise.resolve();\n });\n\n prefetchImageURLs.forEach(url => pool.schedule(url));\n }\n\n render() {\n const { children } = this.props;\n const { imageURL, loading } = this.state;\n\n return (\n
    \n \n {children(imageURL)}\n \n
    \n );\n }\n}\n","import { instanceOf, node, string } from \"prop-types\";\nimport React from \"react\";\nimport PinchZoomPan from \"shared/components/configurator/PinchZoomPan\";\nimport ImagePreloader from \"shared/components/configurator/ImagePreloader\";\n\nexport default class RemoteImage extends React.PureComponent {\n static propTypes = {\n imageURL: string,\n children: node,\n prefetchImageURLs: instanceOf(Set)\n };\n\n render() {\n const { imageURL, children, prefetchImageURLs } = this.props;\n\n return (\n \n {image => (\n (\n \n )}\n >\n {children}\n \n )}\n \n );\n }\n}\n","import { bool, instanceOf, node, arrayOf, string } from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Modal, Select } from \"semantic-ui-react\";\nimport { get } from \"lodash\";\nimport \"./configurator.scss\";\nimport OptionsMenu from \"shared/components/roomBook/OptionsMenu\";\nimport ConfiguratorActions from \"buyer_portal/actions/configuratorActions\";\nimport {\n getResource,\n SUB_LINE_ITEM_RESOURCE\n} from \"shared/actions/actionLocator\";\nimport { stopPropagation } from \"shared/helpers/event\";\nimport ConfiguratorImage from \"shared/components/configurator/ConfiguratorImage\";\nimport { createStructuredSelector } from \"reselect\";\nimport {\n getActiveConfiguratorViews,\n getVisibleConfiguratorLineItems,\n getConfiguratorSubLineItems,\n getConfiguratorViews,\n getConfiguratorTitle\n} from \"shared/selectors\";\nimport Button from \"semantic-ui-react/dist/es/elements/Button/Button\";\nimport { FormattedMessage } from \"react-intl\";\nimport {\n RoomBookController,\n roomBookController\n} from \"shared/actions/roomBookController\";\nimport { toggleConfirmationDialog } from \"shared/components/dialogs/ConfirmationDialogContainer\";\nimport { ConfiguratorSubLineItemShape } from \"shared/shapes/configuratorSubLineItem.shape\";\nimport { configuratorViewShape } from \"shared/shapes/configuratorView.shape\";\nimport { ConfiguratorLineItemShape } from \"shared/shapes/configuratorLineItem.shape\";\nimport RemoteImage from \"./RemoteImage\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nconst viewHasCategories = (currentView, productImageCategories) => {\n const viewCategories = get(currentView, \"productCategories\", []);\n return [...productImageCategories].every(cat => viewCategories.includes(cat));\n};\n\nconst extractImageCategories = subLineItems => {\n const imageCategories = new Set();\n subLineItems.forEach(subLineItem => {\n subLineItem.options.forEach(({ category }) => {\n if (category) imageCategories.add(category);\n });\n });\n return imageCategories;\n};\n\nclass Configurator extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n open: false,\n selection: {},\n selectedSubLineItemId: undefined,\n selectedLineItemId: undefined,\n currentView: undefined,\n viewSelectorOpen: false\n };\n }\n\n handleOpen = () => {\n const { subLineItems, lineItems } = this.props;\n const selectedSubLineItemId =\n subLineItems.length === 1 ? subLineItems[0].id : null;\n const selectedLineItemId = lineItems.length === 1 ? lineItems[0].id : null;\n this.setState({\n open: true,\n selectedSubLineItemId,\n selectedLineItemId,\n currentView: this.selectView(selectedSubLineItemId, selectedLineItemId)\n });\n };\n\n handleViewSelectorOpen = () => {\n this.setState({ viewSelectorOpen: true });\n };\n\n handleViewSelectorClose = () => {\n this.setState({ viewSelectorOpen: false });\n };\n\n handleChangeView = (_, { value }) => {\n const { views } = this.props;\n this.setState({ currentView: views.find(({ room }) => room === value) });\n };\n\n handleSelectSubLineItemId = selectedSubLineItemId => {\n this.setState(({ selectedLineItemId }, { lineItems }) => {\n const selectedLineItem = lineItems.find(\n li => li.id === selectedLineItemId\n );\n const newSelectedLineItemId =\n selectedLineItem?.subLineItemIds.length === 1\n ? null\n : selectedLineItemId;\n return {\n selectedSubLineItemId,\n selectedLineItemId: newSelectedLineItemId,\n currentView: this.selectView(\n selectedSubLineItemId,\n newSelectedLineItemId\n )\n };\n });\n };\n\n handleSelectLineItemId = selectedLineItemId => {\n const { lineItems } = this.props;\n const selectedLineItem = lineItems.find(li => li.id === selectedLineItemId);\n const selectedSubLineItemId =\n selectedLineItem?.subLineItemIds.length === 1\n ? selectedLineItem.subLineItemIds[0]\n : null;\n\n this.setState({\n selectedLineItemId,\n selectedSubLineItemId,\n currentView: this.selectView(selectedSubLineItemId, selectedLineItemId)\n });\n };\n\n handleSelectOption = option => {\n const { selection } = this.state;\n const subLineItem = this.getSubLineItemById(option.subLineItemId);\n\n if (!subLineItem.status.selectable) {\n return;\n }\n\n const key = subLineItem.id.toString();\n if (\n subLineItem.hasBuyerSelection &&\n subLineItem.selectedOption.id === option.id\n ) {\n const { [key]: _, ...newSelection } = selection;\n this.setState({ selection: newSelection });\n } else {\n this.setState({ selection: { ...selection, [key]: option } });\n }\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n getSubLineItemById = subLineItemId => {\n const { subLineItems } = this.props;\n return subLineItems.find(sli => sli.id === subLineItemId);\n };\n\n selectView(subLineItemId, lineItemId) {\n const { views, activeViews, subLineItems } = this.props;\n const { currentView } = this.state || views[0] || {};\n\n const relevantSubLineItems = subLineItems.filter(subLineItem =>\n lineItemId ? subLineItem.lineItemId === lineItemId : subLineItem.isActive\n );\n const subLineItem = subLineItemId && this.getSubLineItemById(subLineItemId);\n\n const lineItemProductImageCategories = extractImageCategories(\n relevantSubLineItems\n );\n const subLineItemProductImageCategories = subLineItem\n ? extractImageCategories([subLineItem])\n : lineItemProductImageCategories;\n\n if (!viewHasCategories(currentView, subLineItemProductImageCategories)) {\n const newView =\n views.find(view =>\n viewHasCategories(view, subLineItemProductImageCategories)\n ) ||\n views.find(view =>\n viewHasCategories(view, lineItemProductImageCategories)\n );\n if (newView) {\n return newView;\n }\n }\n const rooms = activeViews.map(view => view?.room);\n return rooms.includes(currentView?.room) ||\n !viewHasCategories(activeViews[0], lineItemProductImageCategories)\n ? currentView\n : activeViews[0];\n }\n\n renderViewSelector() {\n const { activeViews } = this.props;\n const { currentView, selectedSubLineItemId, viewSelectorOpen } = this.state;\n if (activeViews.length < 2) {\n return null;\n }\n const productImageCategories =\n selectedSubLineItemId &&\n extractImageCategories([this.getSubLineItemById(selectedSubLineItemId)]);\n\n const viewOptions = activeViews.map(view => ({\n text: view.title,\n value: view.room,\n disabled:\n selectedSubLineItemId &&\n !viewHasCategories(view, productImageCategories)\n }));\n return (\n \n );\n }\n\n renderContent() {\n const {\n lineItems,\n subLineItems,\n configuratorId,\n title: roomName,\n ctrl,\n confirmationDialog,\n views\n } = this.props;\n const {\n selection,\n currentView,\n selectedSubLineItemId,\n selectedLineItemId\n } = this.state;\n\n const rooms = views.map(view => view?.room);\n const selectedView = rooms.includes(currentView?.room)\n ? currentView\n : views[0];\n\n const selectedSubLineItem = subLineItems.find(\n sli => sli.id === selectedSubLineItemId\n );\n const selectedLineItem = lineItems.find(li => li.id === selectedLineItemId);\n\n return (\n
    \n \n {({ imageURL, prefetchImageURLs }) => (\n \n
    \n {/* TODO: Put back when we have \"real\" multiple views, but with a camera icon instead */}\n {/* currently moved to OptionsMenu below for sales presentation */}\n {/* {this.renderViewSelector()} */}\n \n )}\n \n \n {this.renderViewSelector()}\n \n
    \n );\n }\n\n render() {\n const { views, trigger, only3D, lineItems } = this.props;\n const { open, loading } = this.state;\n\n if (views.length < 1 || lineItems.length < 1) {\n return null;\n }\n\n if (only3D)\n return (\n \n
    {this.renderContent()}
    \n
    \n );\n\n return (\n \n {this.renderContent()}\n \n
    \n {/* Do not delete the inner span, we may hide and replace it with Project-Related-CSS */}\n \n \n \n
    \n \n
    \n \n );\n }\n}\n\nConfigurator.propTypes = {\n configuratorId: string.isRequired,\n subLineItems: arrayOf(ConfiguratorSubLineItemShape),\n lineItems: arrayOf(ConfiguratorLineItemShape),\n title: string.isRequired,\n trigger: node,\n views: arrayOf(configuratorViewShape).isRequired,\n activeViews: arrayOf(configuratorViewShape).isRequired,\n only3D: bool,\n ctrl: instanceOf(RoomBookController).isRequired\n};\n\nConfigurator.defaultProps = {\n trigger: null,\n only3D: false,\n subLineItems: [],\n lineItems: []\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n const { id } = props.params;\n const LineItemResource = getResource(SUB_LINE_ITEM_RESOURCE);\n\n return {\n lineItemResource: new LineItemResource(dispatch, id),\n configuratorActions: new ConfiguratorActions(dispatch),\n ctrl: roomBookController(dispatch, id),\n confirmationDialog: toggleConfirmationDialog(dispatch)\n };\n};\n\nconst mapStateToProps = createStructuredSelector({\n subLineItems: getConfiguratorSubLineItems,\n lineItems: getVisibleConfiguratorLineItems,\n title: getConfiguratorTitle,\n views: getConfiguratorViews,\n activeViews: getActiveConfiguratorViews\n});\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(Configurator)\n);\n","import { shape, number, string, oneOf, bool, arrayOf } from \"prop-types\";\n\nexport const AttachmentShape = shape({\n access_rights: arrayOf(oneOf([\"PUBLIC\", \"BUYER\", \"CONTRACTOR\"])),\n attachment_url: string,\n created_at: string,\n deletable: bool,\n display_name: string,\n featured: bool,\n file_name: string,\n id: number,\n message_attachments_count: number,\n references_count: number,\n role: string,\n updated_at: string\n});\n\nexport default AttachmentShape;\n","import { createSelector } from \"reselect\";\nimport { get, keyBy, sortBy, flatMap } from \"lodash\";\nimport createCachedSelector from \"re-reselect\";\nimport { getProjectBranding } from \"./project\";\nimport { getLineItems, getSections, getSubLineItems } from \"./unit\";\nimport { getPageContent } from \"./base\";\n\nconst DEFAULT_ROOM_BOOK = {};\nconst getRoomBook = createSelector(\n [getPageContent],\n pageContent => pageContent?.room_book ?? DEFAULT_ROOM_BOOK\n);\n\nexport const getRoomBookSectionMap = createSelector(\n [getPageContent],\n pageContent => {\n const sections = pageContent?.room_book?.sections;\n if (!sections) return {};\n const sectionMap = {};\n\n sections.forEach(section => {\n const temp = [];\n temp.push(section.id);\n section.sections.forEach(subSection => {\n temp.push(subSection.id);\n subSection.line_items.forEach(lineItem => {\n temp.push(lineItem.id);\n lineItem.sub_line_items.forEach(subLineItem => {\n temp.push(subLineItem.id);\n });\n });\n });\n sectionMap[section.display_number] = temp;\n });\n\n return sectionMap;\n }\n);\n\nexport const getConfigurators = createSelector(\n [getProjectBranding, getSections],\n (projectBranding, sections) =>\n new Map(\n [...projectBranding.getConfigurators()].filter(([, configurator]) =>\n configurator.sections.some(configuratorSection =>\n sections.some(\n unitSection => unitSection.selector === configuratorSection\n )\n )\n )\n )\n);\n\nexport const getRoomId = (state, props) => {\n return props?.roomId || props.routeParams?.roomId || props.params?.roomId;\n};\n\nexport const getConfiguratorId = createCachedSelector(\n [getConfigurators, getRoomId],\n (configurators, roomId) => {\n const configurator = configurators.get(roomId);\n return configurator?.id;\n }\n)(getRoomId);\n\nexport const getConfigurator = createCachedSelector(\n getConfiguratorId,\n getConfigurators,\n (configuratorId, configurators) =>\n configuratorId && configurators.get(configuratorId)\n)(getConfiguratorId);\n\nexport const getConfiguratorTitle = (state, props) =>\n getConfigurator(state, props)?.title;\n\nexport const getIsRoomWithMapping = createSelector(\n [getConfigurators, getRoomId],\n (configurators, roomId) => {\n return !!configurators.get(roomId);\n }\n);\n\nconst getConfiguratorSectionIds = createCachedSelector(\n [getConfigurator, getSections],\n (configurator, sections) => {\n return sections\n .filter(section =>\n get(configurator, \"sections\", []).includes(section.selector)\n )\n .map(section => section.id);\n }\n)(getConfiguratorId);\n\nconst getConfiguratorLineItemsById = createCachedSelector(\n [getConfiguratorSectionIds, getLineItems],\n (sectionIds, lineItems) => {\n return keyBy(\n lineItems.filter(lineItem => sectionIds.includes(lineItem.sectionId)),\n \"id\"\n );\n }\n)(getConfiguratorId);\n\nconst getAllConfiguratorLineItems = createCachedSelector(\n [getConfiguratorSectionIds, getLineItems],\n (sectionIds, lineItems) => {\n return lineItems.filter(\n lineItem =>\n sectionIds.includes(lineItem.sectionId) &&\n !lineItem.isReplaced &&\n (!lineItem.isReplacement ||\n !lineItem.replacementTo.isReplaced ||\n lineItem.replacementTo.replacedById === lineItem.id)\n );\n }\n)(getConfiguratorId);\n\nconst getConfiguratorLineItemIds = createCachedSelector(\n [getAllConfiguratorLineItems],\n lineItems => lineItems.map(lineItem => lineItem.id)\n)(getConfiguratorId);\n\nconst getConfiguratorCategories = createCachedSelector(\n [getConfigurator],\n ({ views }) => {\n const accu = new Set();\n views.forEach(view =>\n view.productCategories.forEach(category => accu.add(category))\n );\n return accu;\n }\n)(getConfiguratorId);\n\nfunction getOptionsWithMapping(\n subLineItem,\n productMapping,\n configuratorImageMapping\n) {\n const {\n options,\n productGroup,\n status,\n hasBuyerSelection,\n quantity\n } = subLineItem;\n\n const hasCart = !status.selectable;\n let atLeastOneWithMapping = false;\n const mappingCategoriesSet = new Set();\n\n if (!productGroup) {\n return { atLeastOneWithMapping, optionsWithMapping: [] };\n }\n\n const optionsWithMapping = options.reduce((akku, option) => {\n const [category, unmappedImageId] = get(\n productMapping,\n [productGroup.id, option.id],\n []\n );\n const imageId = get(configuratorImageMapping, [category, unmappedImageId]);\n if (category) {\n atLeastOneWithMapping = true;\n mappingCategoriesSet.add(category);\n }\n akku.push({\n ...option,\n category,\n imageId,\n hasBuyerSelection,\n status,\n hasCart,\n quantity,\n hasConfiguratorMapping: !!imageId,\n subLineItemId: subLineItem.id\n });\n return akku;\n }, []);\n const mappingCategories = [...mappingCategoriesSet];\n return { atLeastOneWithMapping, optionsWithMapping, mappingCategories };\n}\n\nconst getConfiguratorImageMapping = state =>\n state.pageContent.configuratorImageMapping;\n\nconst getProductMapping = (state, props) =>\n getProjectBranding(state, props).getProductMapping();\nconst getConfiguratorProductSorting = createCachedSelector(\n [getConfigurator],\n configurator =>\n get(configurator, \"productSorting\", [\n \"selected\",\n \"mappingAvailable\",\n \"order\"\n ])\n)(getConfiguratorId);\n\nconst getConfiguratorHideSubLineItemsWithoutMapping = createCachedSelector(\n [getConfigurator],\n configurator => get(configurator, \"hideSubLineItemsWithoutMapping\", false)\n)(getConfiguratorId);\n\nexport const getConfiguratorSubLineItems = createCachedSelector(\n [\n getConfiguratorLineItemIds,\n getConfiguratorLineItemsById,\n getSubLineItems,\n getProductMapping,\n getConfiguratorImageMapping,\n getConfiguratorProductSorting,\n getConfiguratorHideSubLineItemsWithoutMapping,\n getConfiguratorCategories\n ],\n (\n lineItemIds,\n lineItems,\n subLineItems,\n productMapping,\n configuratorImageMapping,\n productSorting,\n hideSubLineItemsWithoutMapping,\n configuratorCategories\n ) =>\n subLineItems\n .filter(\n subLineItem =>\n subLineItem.isVisible && lineItemIds.includes(subLineItem.lineItemId)\n )\n .reduce((akku, subLineItem) => {\n const {\n atLeastOneWithMapping,\n optionsWithMapping,\n mappingCategories\n } = getOptionsWithMapping(\n subLineItem,\n productMapping,\n configuratorImageMapping\n );\n\n let selectedOption = optionsWithMapping.find(\n option => option.isActualSelection\n );\n\n // fall back to first acceptable product if no product was found\n if (!selectedOption) {\n selectedOption = optionsWithMapping.find(\n option => option.isAcceptableProduct\n );\n }\n\n const orderFunctions = productSorting.map(orderName => {\n switch (orderName) {\n case \"selected\":\n return option => option !== selectedOption;\n case \"mappingAvailable\":\n return option => !option.hasConfiguratorMapping;\n default:\n return orderName;\n }\n });\n const sortedOptions = sortBy(optionsWithMapping, orderFunctions);\n\n const lineItem = lineItems[subLineItem.line_item_id];\n const { isOptional, isReplaced, isReplacement, isActivated } = lineItem;\n\n if (\n !isReplaced &&\n (!hideSubLineItemsWithoutMapping ||\n (atLeastOneWithMapping &&\n mappingCategories.some(category =>\n configuratorCategories.has(category)\n )))\n ) {\n // keep potential hidden 3D-Items in Mind for configured-Status: https://gitlab.com/baudigital/plano/-/issues/1200\n akku.push({\n ...subLineItem,\n isDecided:\n (hideSubLineItemsWithoutMapping && !atLeastOneWithMapping) ||\n subLineItem.isDecided,\n lineItem,\n isOptional,\n isReplaced,\n isReplacement,\n isActivated,\n atLeastOneWithMapping,\n options: sortedOptions,\n selectedOption,\n key: subLineItem.id.toString()\n });\n }\n return akku;\n }, [])\n)(getConfiguratorId);\n\n// Returns an array of ConfiguratorJourneyConfigShape\nexport const getConfiguratorJourneyConfigs = createSelector(\n [getRoomBook],\n roomBook => {\n return roomBook.configurator_journey?.map(c => {\n return {\n ...c,\n // this mapping was constructed on time-shortage.\n // The Backend changed the Variable names and there was no time to refactor it properly.\n renderId: c.render_id,\n roomId: c.room_id\n };\n });\n }\n);\n\nexport const getConfiguratorJourneyRoomConfig = createSelector(\n [getConfiguratorJourneyConfigs, getRoomId],\n (journeyConfig, selectedRoomId) => {\n return journeyConfig?.find(jc => jc.roomId === selectedRoomId);\n }\n);\n\nexport const getConfiguratorRoomJourney = createSelector(\n [\n getConfiguratorJourneyRoomConfig,\n getLineItems,\n getSubLineItems,\n getConfiguratorSubLineItems\n ],\n (journeyConfig, lineItems, subLineItems, configuratorSubLineItems) => {\n return journeyConfig?.sub_line_item_ids\n .map(sliId => {\n const subLineItemIdMatcher = subLineItem => subLineItem.id === sliId;\n const newSubLineItem =\n configuratorSubLineItems?.find(subLineItemIdMatcher) ||\n subLineItems?.find(subLineItemIdMatcher);\n\n if (newSubLineItem) {\n // we will need the lineItem Object, not just ID\n newSubLineItem.lineItem = newSubLineItem.lineItem\n ? newSubLineItem.lineItem\n : lineItems.find(li => li.id === newSubLineItem.lineItemId);\n }\n\n return newSubLineItem;\n })\n .filter(Boolean); // nullfilter\n }\n);\n\nexport const getVisibleConfiguratorLineItems = createCachedSelector(\n [\n getAllConfiguratorLineItems,\n getConfiguratorSubLineItems,\n getConfiguratorHideSubLineItemsWithoutMapping\n ],\n (lineItems, subLineItems, hideSubLineItemsWithoutMapping) =>\n lineItems.reduce((akku, lineItem) => {\n if (\n !lineItem.isReplaced &&\n (!lineItem.isReplacement ||\n !lineItem.replacementTo.isReplaced ||\n lineItem.replacementTo.replacedById === lineItem.id) &&\n subLineItems.some(\n subLineItem =>\n subLineItem.lineItemId === lineItem.id &&\n subLineItem.atLeastOneWithMapping\n )\n ) {\n const { subLineItemIds, ...rest } = lineItem;\n const filteredSubLineItemIds = subLineItemIds.filter(id =>\n subLineItems.some(subLineItem => subLineItem.id === id)\n );\n\n // keep potential hidden 3D-Items in Mind for configured-Status: https://gitlab.com/baudigital/plano/-/issues/1200\n const allSubLineItemsDecided = subLineItems\n .filter(({ lineItemId }) => lineItemId === lineItem.id)\n .every(({ atLeastOneWithMapping, isDecided }) =>\n hideSubLineItemsWithoutMapping\n ? !atLeastOneWithMapping || isDecided\n : isDecided\n );\n\n akku.push({\n ...rest,\n subLineItemIds: filteredSubLineItemIds,\n isDecided: allSubLineItemsDecided\n });\n }\n\n return akku;\n }, [])\n)(getConfiguratorId);\n\nexport const getConfiguratorCardInfo = createSelector(\n [\n getConfigurator,\n getConfiguratorSubLineItems,\n getConfiguratorHideSubLineItemsWithoutMapping\n ],\n (configurator, subLineItems, hideSubLineItemsWithoutMapping) => {\n const total = subLineItems.reduce((sum, item) => sum + item.total, 0);\n\n // keep potential hidden 3D-Items in Mind for configured-Status: https://gitlab.com/baudigital/plano/-/issues/1200\n const configured = subLineItems\n .filter(({ isActivated }) => isActivated)\n .every(({ atLeastOneWithMapping, isDecided }) =>\n hideSubLineItemsWithoutMapping\n ? !atLeastOneWithMapping || isDecided\n : isDecided\n );\n\n return {\n total,\n configured\n };\n }\n);\n\nconst extractAllImageCategories = subLineItems => {\n const imageCategories = new Set();\n subLineItems.forEach(subLineItem => {\n subLineItem.options.forEach(({ category }) =>\n imageCategories.add(category)\n );\n });\n return imageCategories;\n};\n\nconst extractActiveImageCategories = subLineItems => {\n const imageCategories = new Set();\n subLineItems.forEach(subLineItem => {\n if (\n !subLineItem.isReplaced &&\n (!subLineItem.isReplacement || subLineItem.isActivated)\n ) {\n subLineItem.options.forEach(({ category }) => {\n imageCategories.add(category);\n });\n }\n });\n return imageCategories;\n};\n\nconst extractNonOptionalImageCategories = subLineItems => {\n const imageCategories = new Set();\n subLineItems.forEach(subLineItem => {\n if (!subLineItem.isOptional || subLineItem.isActivated) {\n subLineItem.options.forEach(({ category }) => {\n imageCategories.add(category);\n });\n }\n });\n return imageCategories;\n};\n\nexport const getConfiguratorViews = createSelector(\n [getConfigurator, getConfiguratorSubLineItems, getConfiguratorImageMapping],\n (configurator, subLineItems, configuratorImageMapping) => {\n if (!configurator) {\n return [];\n }\n\n const { views } = configurator;\n\n const allProductImageCategories = extractAllImageCategories(subLineItems);\n const activeProductImageCategories = extractActiveImageCategories(\n subLineItems\n );\n const nonOptionalImageCategories = extractNonOptionalImageCategories(\n subLineItems\n );\n\n const viewsWithRelevantCategories = views.map(view => ({\n ...view,\n activeCategories: new Set(\n get(view, \"productCategories\", []).filter(cat =>\n activeProductImageCategories.has(cat)\n )\n ),\n relevantCategories: new Set(\n get(view, \"productCategories\", []).filter(cat =>\n allProductImageCategories.has(cat)\n )\n ),\n nonOptionalCategories: new Set(\n get(view, \"productCategories\", []).filter(cat =>\n nonOptionalImageCategories.has(cat)\n )\n ),\n defaultImages: {\n room: get(configuratorImageMapping, [\"room\", view.room]),\n ...view.productCategories.reduce((akku, cat) => {\n akku[cat] = get(configuratorImageMapping, [\n cat,\n `${cat.toUpperCase()}_missing`\n ]);\n return akku;\n }, {})\n }\n }));\n\n // If only one view, shortcut return that one\n if (viewsWithRelevantCategories.length === 1) {\n return viewsWithRelevantCategories;\n }\n\n const sortedViews = sortBy(viewsWithRelevantCategories, [\"order\", \"title\"]);\n\n // Find the first view with the most matching categories\n const bestView = sortedViews.reduce((best, current) =>\n current.nonOptionalCategories.size > best.nonOptionalCategories.size\n ? current\n : best\n );\n\n // Filter out all views that don't have any category the best one doesn't have\n const relevantViews = sortedViews.filter(\n view =>\n [...view.relevantCategories].filter(\n cat => !bestView.relevantCategories.has(cat)\n ).length > 0\n );\n\n // Mark all views where the extra categories are not active as deactivated\n const mappendViews = relevantViews.map(view => ({\n ...view,\n active: [...view.activeCategories].some(\n cat => !bestView.activeCategories.has(cat)\n ),\n optional: ![...view.nonOptionalCategories].some(\n cat => !bestView.relevantCategories.has(cat)\n )\n }));\n\n // Return the best view first, and all other ones sorted\n const bestAndMappedViews = [\n { ...bestView, active: true, optional: false },\n ...mappendViews\n ];\n\n // Order again by order and optionality. This way the order can be overwritten manually and\n // optional views are put to the back\n return sortBy(bestAndMappedViews, [\"order\", \"optional\"]);\n }\n);\n\nexport const getActiveConfiguratorViews = createSelector(\n [getConfiguratorViews],\n views => views.filter(view => view.active)\n);\n\nexport const getConfiguratorTemplateParams = createSelector(\n [getConfigurator, getRoomBook],\n (configurator, roomBook) => {\n if (!configurator || !roomBook) return [];\n\n const { templateParams = [] } = configurator;\n const { source_id: sourceId } = roomBook;\n const entry = templateParams.find(params => params.source_id === sourceId);\n return entry?.params;\n }\n);\n\nexport const getConfiguratorPreviewSelection = state =>\n state.configuratorPreviewSelection;\n\nexport const getOptionsForImageUrl = createSelector(\n [getConfiguratorSubLineItems, getConfiguratorPreviewSelection],\n (subLineItems, configuratorPreviewSelection) => {\n const optionsForImageUrl = subLineItems\n .filter(sli => !sli.isOptional || sli.isActivated)\n .map(sli => {\n if (configuratorPreviewSelection?.[sli.id]) {\n return sli.options.find(\n option => configuratorPreviewSelection[sli.id] === option.id\n );\n }\n return sli.selectedOption;\n });\n\n return optionsForImageUrl;\n }\n);\n\nexport const getRoomProgress = createSelector(\n [getConfiguratorRoomJourney],\n subLineItems => {\n const sampledSubLineItems = subLineItems?.filter(\n sli => sli.hasBuyerSelection\n ).length;\n\n return sampledSubLineItems / subLineItems?.length || 0;\n }\n);\n\nexport const getUnitProgress = createSelector(\n [getConfiguratorJourneyConfigs, getSubLineItems],\n (journeyConfig, subLineItems) => {\n const configurableItemIds = flatMap(\n journeyConfig,\n c => c.sub_line_item_ids\n );\n const configurableItems = subLineItems.filter(s =>\n configurableItemIds.includes(s.id)\n );\n const configuredItems = configurableItems.filter(s => s.hasBuyerSelection);\n return configurableItems.length\n ? configuredItems.length / configurableItems.length\n : 0;\n }\n);\n","import { flatMap, get, keyBy } from \"lodash\";\nimport moment from \"moment\";\nimport { Liquid } from \"liquidjs\";\n\nconst liquidEngine = new Liquid({ strictVariables: true });\n\nexport default class ProcessDefinition {\n constructor(id, account, i18n) {\n this.id = id;\n this.i18n = i18n;\n this.account = account;\n this.config = get(account.data, \"account.config.processes\", []).filter(\n process => {\n return process.process_type === id;\n }\n )[0] || {\n id,\n process: []\n };\n }\n\n getName() {\n return get(this.config, \"name\", this.id);\n }\n\n getActivityName() {\n return `${this.getName()} ${moment().format(\"YYYY-MM-DD\")}`;\n }\n\n getActivityScope() {\n return get(this.config, \"activity_scope\", false);\n }\n\n getPhases() {\n return this.config.process.map(phaseValue => {\n return {\n id: phaseValue.id,\n color: phaseValue.color,\n label: phaseValue.label\n };\n });\n }\n\n getPhaseMap() {\n return keyBy(this.config.process, \"id\");\n }\n\n getFlatProcessItems() {\n return this.getStatesById();\n }\n\n getStateById(id) {\n return this.getStatesById()[id];\n }\n\n getStatesById() {\n return keyBy(this.getStates(), \"id\");\n }\n\n getStates() {\n return get(this.config, \"process\", []);\n }\n\n getProcessStartStates() {\n const states = this.getStates();\n const startStates = states.filter(state => {\n return state.startable;\n });\n if (startStates.length > 0) {\n return startStates;\n }\n if (states.length > 0) {\n const firstState = this.config.process[0];\n return firstState ? [firstState] : [];\n }\n return [];\n }\n\n getStartActions() {\n return flatMap(this.getProcessStartStates(), ({ actions = [], id }) =>\n actions\n .filter(action => action.isStartAction)\n .map(action => ({\n ...action,\n status: id\n }))\n );\n }\n\n getStartInputs() {\n return flatMap(this.getProcessStartStates(), ({ inputs = {} }) =>\n Object.entries(inputs).map(([name, input]) => ({\n ...input,\n name\n }))\n );\n }\n\n getDefaultFormValues(parameters) {\n return this.getStartInputs().reduce((accu, { name, template }) => {\n // eslint-disable-next-line no-param-reassign\n accu[name] = liquidEngine.parseAndRenderSync(template, parameters);\n return accu;\n }, {});\n }\n\n isDeprecated() {\n return get(this.config, \"deprecated\", false);\n }\n\n isAvailable(projectId) {\n const whitelist = get(this.config, \"project_ids\", []);\n const blacklist = get(this.config, \"except_projects\", []);\n return whitelist.includes(projectId) && !blacklist.includes(projectId);\n }\n\n useCartCreationDialog() {\n return this.getProcessStartStates().some(\n state => state.useCartCreationDialog\n );\n }\n\n isAssignableStatus(status) {\n return (\n this.getProcessStartStates()\n .map(s => s.id)\n .indexOf(status) >= 0\n );\n }\n\n isAssignableToActivity(lineItem, activity) {\n return this.getProcessStartStates().some(state => {\n return (\n activity.status === state.id &&\n get(state, \"preconditions.line_item_status\", []).indexOf(\n lineItem.status\n ) >= 0 &&\n !ProcessDefinition.buyerSelectionPending(lineItem)\n );\n });\n }\n\n static buyerSelectionPending(lineItem) {\n // a buyer selection is not considered pending any more, if the status of the line item has progressed\n // as there are cases that buyers change their mind during the offer phase and we shouldn't require them\n // to go to the configurator to change it there.\n return (\n lineItem.status === \"open\" &&\n lineItem.sub_line_items.some(sli => sli.buyer_selection_pending)\n );\n }\n\n handlesStatus(lineItemStatus) {\n return (\n !this.isDeprecated() &&\n this.getProcessStartStates().some(state => {\n return (\n get(state, \"preconditions.line_item_status\", []).indexOf(\n lineItemStatus\n ) >= 0\n );\n })\n );\n }\n\n shouldPreselect(lineItem) {\n return (\n lineItem.isAssignableToProcess(this) &&\n // TODO: configurable for other processes\n lineItem\n .getSubLineItems()\n .some(sli => sli.selection_is_confirmed || sli.buyer_selection)\n );\n }\n}\n","import { createSelector } from \"reselect\";\nimport { get, groupBy, compact, uniq } from \"lodash\";\nimport { getFilter } from \"../base\";\nimport { isReady } from \"./base\";\nimport { getLineItems } from \"./lineItems\";\nimport { getSubLineItemsByLineItemId } from \"./subLineItems\";\nimport { getSections } from \"./sections\";\n\nexport const getOrderStatusFilter = createSelector([getFilter], filter => {\n return get(filter, \"bpOrderStatusFilter\", []);\n});\n\n// concatenate product data without empty fields\nconst brewProductName = (subLineItemOption, subLineItem) =>\n compact([\n subLineItem?.productGroup?.name ?? subLineItem?.title,\n subLineItemOption?.name,\n subLineItemOption?.supplier,\n subLineItemOption?.series\n ]).join(\", \");\n\nconst getProductNamesByLineItem = createSelector(\n [getSubLineItemsByLineItemId],\n subLineItems => {\n return Object.entries(subLineItems).reduce((accu, [lineItemId, items]) => {\n accu[lineItemId] = uniq(\n compact(\n items.map(subLineItem => {\n return subLineItem.options\n .filter(option => option.isActualSelection)\n .map(option => brewProductName(option, subLineItem))[0];\n })\n )\n );\n\n return accu;\n }, {});\n }\n);\n\nconst getFilteredLineItems = createSelector(\n [getLineItems, getProductNamesByLineItem, getOrderStatusFilter],\n (lineItems, productNames, filter) => {\n const result = lineItems\n .filter(lineItem => {\n return (\n lineItem.isActivated &&\n lineItem.isVisible &&\n (filter.length < 1 || filter.includes(lineItem.status.id))\n );\n })\n .map(lineItem => {\n return {\n ...lineItem,\n productNames: productNames[lineItem.id]\n };\n });\n\n return groupBy(result, \"sectionId\");\n }\n);\n\nconst getFilteredSubSections = createSelector(\n [getSections, getFilteredLineItems],\n (sections, lineItems) => {\n // Find all relevant sub sectionss\n const result = sections\n .filter(subSection => {\n return (\n subSection.isVisible &&\n Object.keys(lineItems).includes(String(subSection.id))\n );\n })\n .map(subSection => {\n return {\n ...subSection,\n total: lineItems[subSection.id]\n .filter(li => !li.isCancelled)\n .reduce((sum, li) => sum + li.total, 0)\n };\n });\n\n return groupBy(result, \"parentId\");\n }\n);\n\nconst getFilteredSections = createSelector(\n [getSections, getFilteredSubSections],\n (sections, subSections) => {\n // Find all relevant sections\n return sections\n .filter(section => {\n return (\n section.isRoot &&\n section.isVisible &&\n Object.keys(subSections).includes(String(section.id))\n );\n })\n .map(section => {\n return {\n ...section,\n total: subSections[section.id].reduce((sum, s) => sum + s.total, 0)\n };\n });\n }\n);\n\nconst getUnitTotal = createSelector([getFilteredSections], sections => {\n return sections.reduce((sum, s) => sum + s.total, 0);\n});\n\nconst isPriceOnRequest = createSelector([getFilteredSections], sections => {\n return sections.some(s => s.isPriceOnRequest);\n});\n\nexport const getOrderStatusDetails = createSelector(\n [\n isReady,\n getFilteredLineItems,\n getFilteredSubSections,\n getFilteredSections,\n getUnitTotal,\n isPriceOnRequest\n ],\n (isReady, lineItems, subSections, sections, total, isPriceOnRequest) => {\n if (isReady) {\n return {\n unit: {\n total,\n isPriceOnRequest\n },\n sections,\n subSections,\n lineItems\n };\n }\n return {};\n }\n);\n","import { get } from \"lodash\";\nimport { getUserRole } from \"shared/selectors/base\";\nimport {\n findSection,\n findSubSections,\n findLineItem,\n findLineItems,\n findSubLineItem,\n findSubLineItems,\n getUnitPath,\n getRootSections,\n getSectionPath,\n getLineItemPath,\n makeSectionPath,\n makeLineItemPath,\n makeSubLineItemPath\n} from \".\";\n\nimport { getAccount } from \"../account\";\nimport { getNextSibling } from \"./subLineItems\";\n\nexport const getSubLineItemModel = (state, props) => {\n const { lineItemId, subLineItemId } = props.params;\n\n const subLineItem = findSubLineItem(state)(subLineItemId);\n const lineItem = findLineItem(state)(lineItemId);\n\n const color = subLineItem.isDecided ? \"primary\" : \"secondary\";\n const basic = !subLineItem.isDecided;\n\n if (lineItem.isCompactDisplay) {\n return {\n next: {\n label: \"Fertig\",\n path: getLineItemPath(props),\n color,\n basic\n }\n };\n }\n const nextSibling = getNextSibling(state, subLineItem, sibling => {\n return sibling.isConfigurable;\n });\n\n const nextSiblingPath = nextSibling\n ? makeSubLineItemPath(props, nextSibling.id)\n : getLineItemPath(props);\n\n return {\n next: {\n label: nextSibling ? \"Weiter\" : \"Fertig\",\n path: nextSiblingPath,\n color,\n basic\n }\n };\n};\n\nexport const getLineItemModel = (state, props) => {\n const { id, lineItemId } = props.params;\n const { i18n } = state;\n const userRole = getUserRole(state);\n\n const lineItem = findLineItem(state)(lineItemId);\n\n if (lineItem.isDecided) {\n return {\n next: {\n label: \"Fertig\",\n path: getSectionPath(props),\n color: \"primary\",\n basic: false\n }\n };\n }\n if (lineItem.isCompactDisplay) {\n if (![\"admin\", \"buyer\"].includes(userRole)) {\n return {\n next: {\n label: i18n[\"meta.actions.next\"],\n path: getSectionPath(props),\n color: \"secondary\",\n basic: true\n }\n };\n }\n\n const subLineItems = findSubLineItems(state)(\n lineItemId,\n sli => sli.isVisible\n );\n\n const selection = subLineItems.reduce((accu, sli) => {\n if (sli.options.length && sli.isConfigurable && !sli.hasBuyerSelection) {\n // const validOptions = sli.options.filter((o) => o.isValidOption);\n // const selectedOption = validOptions.find((o) => o.isActualSelection);\n // const buyerOption = validOptions.find((o) => o.isBuyerSelection);\n // const defaultOption = validOptions.find((o) => o.isDefault);\n\n accu[sli.id] = get(sli.defactoSelectedOption, \"id\");\n }\n return accu;\n }, {});\n\n return {\n next: {\n label: \"Auswahl übernehmen\",\n path: getSectionPath(props),\n color: \"primary\",\n basic: false,\n eventAction: {\n type: \"autoSelectOptions\",\n payload: { unitId: id, selection }\n }\n }\n };\n }\n const subLineItems = findSubLineItems(state)(\n lineItemId,\n sli => sli.isVisible\n );\n if (subLineItems.length == 1) {\n return {\n next: {\n label: \"Fertig\",\n path: getSectionPath(props),\n color: \"secondary\",\n basic: true\n }\n };\n }\n const undecided = subLineItems.find(\n sli => !sli.isDecided && !sli.isMandatoryDisplay\n );\n const path = makeSubLineItemPath(props, undecided.id);\n\n return renderNextButton(undecided, path);\n};\n\nexport const getSectionModel = (state, props) => {\n const { sectionId } = props.params;\n\n const section = findSection(state)(sectionId);\n\n const parentPath = section.isRoot\n ? getUnitPath(props)\n : makeSectionPath(props, section.parentId);\n\n const completedButton = {\n next: {\n label: \"Fertig\",\n path: parentPath,\n color: \"primary\",\n basic: false\n }\n };\n\n if (section.isDecided) {\n return completedButton;\n }\n if (section.isRoot) {\n const sections = findSubSections(state, sectionId);\n const undecided = sections.find(\n s => s.isVisible && !s.isDecided && !s.isMandatoryDisplay\n );\n if (!undecided) {\n return completedButton;\n }\n\n const path = makeSectionPath(props, undecided.id);\n\n return renderNextButton(undecided, path);\n }\n const lineItems = findLineItems(state)(sectionId);\n const undecided = lineItems.find(\n li => li.isActivated && !li.isDecided && !li.isMandatoryDisplay\n );\n\n if (undecided) {\n const path = makeLineItemPath(props, undecided.id);\n\n return renderNextButton(undecided, path);\n }\n\n return {\n next: {\n label: \"Fertig\",\n path: parentPath,\n color: \"secondary\",\n basic: true,\n eventAction: {\n type: \"sectionCompleted\",\n payload: { value: section.id }\n }\n }\n };\n};\n\nexport const getRoomBookModel = (state, props) => {\n const account = getAccount(state);\n const sections = getRootSections(state);\n const undecided = sections.find(s => !s.isDecided && !s.isMandatoryDisplay);\n const showCompletionButton = account.isEnabled(\"bp_completion_button\");\n\n const allSelectedEnforcement = account.isEnabled(\n \"bp_completion_button_all_selected\"\n );\n const unitDecided = allSelectedEnforcement ? undecided === undefined : true;\n\n if (undecided) {\n const path = makeSectionPath(props, undecided.id);\n return renderNextButton(\n undecided,\n path,\n true,\n showCompletionButton && unitDecided\n );\n }\n return {\n showCompletionButton: showCompletionButton && unitDecided\n };\n};\n\nexport const renderNextButton = (\n undecided,\n path,\n hideBackButton,\n showCompletionButton = false\n) => {\n return {\n next: {\n label: `${undecided.title} konfigurieren`,\n path,\n color: \"primary\",\n basic: false,\n labelMobile: undecided.title,\n iconMobile: \"cogs\"\n },\n hideBackButton,\n showCompletionButton: !!showCompletionButton\n };\n};\n\nexport const getBottomNavigationModel = (state, props) => {\n const { id, sectionId, lineItemId, subLineItemId } = props.params;\n\n if (subLineItemId) {\n return getSubLineItemModel(state, props);\n }\n if (lineItemId) {\n return getLineItemModel(state, props);\n }\n if (sectionId) {\n return getSectionModel(state, props);\n }\n if (id) {\n return getRoomBookModel(state, props);\n }\n};\n","import { compact, sortBy } from \"lodash\";\n\nexport default class Branding {\n constructor(data) {\n this.data = data;\n\n const sections = data.sections || [];\n\n this.imageMap = sections.reduce((accu, section) => {\n accu[section.id] = section.thumb_url || data.default_thumb_url;\n return accu;\n }, {});\n\n this.groupMap = sections.reduce((accu, section) => {\n accu[section.id] = section.group;\n return accu;\n }, {});\n\n this.visibilityMap = sections.reduce((accu, section) => {\n accu[section.id] = JSON.parse(section.visible || \"false\");\n return accu;\n }, {});\n\n this.productLines = data.product_lines || [];\n\n const configuratorsData = Object.entries(\n data.configurators || {}\n ).map(([id, configurator]) => [id, { ...configurator, id }]);\n\n this.productMapping = data.product_mapping || {};\n\n const orderdConfiguratorsData = sortBy(\n configuratorsData,\n ([, { order }]) => order\n );\n\n this.configurators = new Map(orderdConfiguratorsData);\n\n this.configuratorMap = sections.reduce((accu, section) => {\n const configuratorId = section.configurator;\n if (this.configurators.has(configuratorId)) {\n accu[section.id] = configuratorId;\n }\n return accu;\n }, {});\n\n this.glencoeURL = data.glencoeURL;\n }\n\n isVisible(sectionPath) {\n return this.visibilityMap[this.getSelector(sectionPath)];\n }\n\n getImageUrl(sectionPath) {\n return this.imageMap[this.getSelector(sectionPath)];\n }\n\n getGroup(sectionPath) {\n return this.groupMap[this.getSelector(sectionPath)];\n }\n\n getConfiguratorId(sectionPath) {\n return this.configuratorMap[this.getSelector(sectionPath)];\n }\n\n getSelector(sectionPath) {\n return compact(sectionPath)\n .map(s => {\n return s.title;\n })\n .join(\"::\");\n }\n\n getConfigurators() {\n return this.configurators;\n }\n\n getProductMapping() {\n return this.productMapping;\n }\n\n getProductLines() {\n return this.productLines;\n }\n\n getGlencoeURL() {\n return this.glencoeURL;\n }\n}\n","import { shape, string, arrayOf, func, objectOf } from \"prop-types\";\n\nconst AccountShape = shape({\n data: shape({\n account: shape({\n config: shape({\n taxonomies: arrayOf(\n shape({\n tags: arrayOf(objectOf(string))\n })\n )\n })\n })\n }),\n isEnabled: func\n});\n\nexport default AccountShape;\n","import { string, number, shape } from \"prop-types\";\n\nconst RoomBookShape = shape({\n id: number,\n name: string\n});\n\nexport default RoomBookShape;\n","import { arrayOf, bool, shape, string } from \"prop-types\";\n\nexport const CustomImportArgumentShape = shape({\n id: string,\n label: string,\n data_type: string,\n provided: bool\n});\n\nexport const CustomImportConfigsShape = shape({\n dialog: shape({\n title: string,\n description: string\n }),\n importer: string,\n scope: string,\n arguments: arrayOf(CustomImportArgumentShape)\n});\n\nexport default CustomImportConfigsShape;\n","import localStorage from \"../helpers/localStorage\";\n\nexport default class UserConfig {\n set(key, value) {\n localStorage.set(key, value);\n }\n\n get(key) {\n return localStorage.get(key);\n }\n\n remove(key) {\n localStorage.remove(key);\n }\n\n setSectionFilter(projectSlug, sectionId) {\n return this.set(`project.${projectSlug}.sectionFilter`, sectionId);\n }\n\n getSectionFilter(projectSlug) {\n return this.get(`project.${projectSlug}.sectionFilter`);\n }\n\n removeSectionFilter(projectSlug) {\n return this.remove(`project.${projectSlug}.sectionFilter`);\n }\n}\n","import {\n ADD_CONFIGURATOR_SELECTION,\n REMOVE_CONFIGURATOR_SELECTION,\n SET_CONFIGURATOR_SELECTION,\n TOGGLE_CONFIGURATOR_SELECTION,\n UPDATE_PAGE_CONTENT\n} from \"shared/constants/appConstants\";\n\nexport default class ConfiguratorActions {\n constructor(dispatch, url) {\n this.dispatch = dispatch;\n this.url = url;\n }\n\n getMapping() {\n return fetch(`${this.url}/mapping`)\n .then(response => response.json())\n .then(json => {\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: { configuratorImageMapping: json }\n });\n });\n }\n\n addPreviewOption = (subLineItemId, optionId) => {\n this.dispatch({\n type: ADD_CONFIGURATOR_SELECTION,\n payload: { subLineItemId, optionId }\n });\n };\n\n removePreviewOption = (subLineItemId, optionId) => {\n this.dispatch({\n type: REMOVE_CONFIGURATOR_SELECTION,\n payload: { subLineItemId, optionId }\n });\n };\n\n togglePreviewOption = (subLineItemId, optionId) => {\n this.dispatch({\n type: TOGGLE_CONFIGURATOR_SELECTION,\n payload: { subLineItemId, optionId }\n });\n };\n\n setPreviewOption = (subLineItemId, optionId) => {\n this.dispatch({\n type: SET_CONFIGURATOR_SELECTION,\n payload: { subLineItemId, optionId }\n });\n };\n}\n","import localStorage from \"shared/helpers/localStorage\";\nimport es6Promise from \"es6-promise\";\nimport { UPDATE_PAGE_CONTENT } from \"shared/constants/appConstants\";\n\nes6Promise.polyfill();\n// es lint:\n/* global Promise */\n\nexport class LocalTableResource {\n constructor(dispatch, tableName) {\n this.dispatch = dispatch;\n this.tableName = tableName;\n }\n\n put = (key, value) => {\n return new Promise(resolve => {\n const data = JSON.parse(localStorage.get(this.tableName)) || {};\n\n if (value !== \"_destroy\") {\n data[key] = value;\n } else {\n delete data[key];\n }\n\n localStorage.set(this.tableName, JSON.stringify(data));\n\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: { [this.tableName]: data }\n });\n\n resolve({ status: 200 }); // fakes a successful apiRequest response\n });\n };\n\n get = () => {\n return new Promise(resolve => {\n const data = JSON.parse(localStorage.get(this.tableName)) || {};\n\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload: { [this.tableName]: data }\n });\n\n resolve({ status: 200 }); // fakes a successful apiRequest response\n });\n };\n}\n\nexport class SectionCompletedResource extends LocalTableResource {\n constructor(dispatch) {\n super(dispatch, \"sectionCompleted\");\n }\n}\n","import React from \"react\";\nimport { PropTypes } from \"prop-types\";\nimport FeatureToggle from \"./FeatureToggle\";\n\nconst FeatureToggleActive = ({ featureToggleName, children }) => {\n return (\n \n {children}\n \n );\n};\n\nFeatureToggleActive.propTypes = {\n featureToggleName: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default FeatureToggleActive;\n","import { createSelector } from \"reselect\";\n\nimport { get } from \"lodash\";\nimport { getSubLineItems, getSubLineItemsById } from \"./subLineItems\";\nimport { getRuleSets } from \"./productRules\";\n\nexport const getRulesForFnSelector = ruleSets => {\n return (productGroupId, productId) => {\n return ruleSets.reduce((accu, ruleSet) => {\n if (ruleSet.product_group_when == productGroupId) {\n ruleSet.rules.forEach(rule => {\n const productIds = rule.when.product.id;\n\n if (productIds.includes(productId)) {\n accu.push({\n product_group_when: ruleSet.product_group_when,\n product_group_then: ruleSet.product_group_then,\n scope: ruleSet.scope,\n then: rule.then,\n when: rule.when\n });\n }\n });\n }\n return accu;\n }, []);\n };\n};\n\nconst getRulesForFn = createSelector([getRuleSets], getRulesForFnSelector);\n\nexport const getSubLineItemsForScopeFn = createSelector(\n [getSubLineItems],\n subLineItems => {\n return (scope, other, productGroupId) => {\n return subLineItems.filter(sli => {\n return (\n sli[`${scope}_id`] == other[`${scope}_id`] &&\n sli.product_group_id === productGroupId &&\n (!sli.isOptional || (sli.isConfigurable && sli.isDecided)) &&\n !sli.isProgressed\n );\n });\n };\n }\n);\n\n/*\n * Given an proposed change (productId for subLineItemId) it returns the\n * list of required updates to the room book to keep valid in terms of\n * the rules.\n */\nexport const getRequiredUpdates = createSelector(\n [getRulesForFn, getSubLineItemsById, getSubLineItemsForScopeFn],\n (getRulesFor, subLineItemsById, getSubLineItemsForScope) => {\n return (subLineItemId, productId) => {\n const subLineItem = subLineItemsById[subLineItemId];\n const rules = getRulesFor(subLineItem.product_group_id, productId);\n\n const items = rules.reduce((accu, rule) => {\n const affected = getSubLineItemsForScope(\n rule.scope,\n subLineItem,\n rule.product_group_then\n );\n\n return affected.reduce((accu, item) => {\n if (\n !rule.then.product.id.includes(\n get(item, [\"defactoSelectedOption\", \"id\"])\n )\n ) {\n const productIds = item.isOptional ? [] : rule.then.product.id;\n const productOld = item.defactoSelectedOption;\n const productNew = item.options.find(o =>\n productIds.includes(o.id)\n );\n const totalOld = get(productOld, \"total\", 0);\n const totalNew = get(productNew, \"total\", 0);\n const totalChange = totalNew - totalOld;\n\n if (item.hasBuyerSelection || totalChange != 0) {\n accu.push({\n item,\n productIds,\n totalChange\n });\n }\n }\n return accu;\n }, accu);\n }, []);\n\n return {\n items,\n extraCosts: items\n .map(u => {\n return u.totalChange;\n })\n .reduce((sum, t) => {\n return sum + t;\n }, 0),\n extraCostsOnRequest: items.some(u => {\n return (\n get(u, [\"item\", \"isOnRequest\"], false) ||\n get(u, [\"item\", \"productGroup\", \"quantity_on_request\"], false)\n );\n })\n };\n };\n }\n);\n","import { shape, string, number } from \"prop-types\";\n\nexport const OptionShape = shape({\n id: number,\n subLineItemId: number,\n category: string\n});\nexport default OptionShape;\n","import React from \"react\";\nimport { bool, func } from \"prop-types\";\nimport { Button, Header, Modal } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\n\nconst AdminMessageDialog = ({ showAdminMessage, handleClose }) => {\n return (\n handleClose()}\n >\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nAdminMessageDialog.propTypes = {\n showAdminMessage: bool.isRequired,\n handleClose: func.isRequired\n};\n\nexport default AdminMessageDialog;\n","import { array, arrayOf, func, object, shape, string } from \"prop-types\";\nimport { PureComponent } from \"react\";\nimport { connect } from \"react-redux\";\nimport createCachedSelector from \"re-reselect\";\nimport {\n getConfiguratorSubLineItems,\n getConfiguratorTemplateParams,\n getConfiguratorViews,\n getProjectBranding\n} from \"shared/selectors\";\n\nclass ConfiguratorImage extends PureComponent {\n paramsToImageURL = params => {\n const { glencoeURL } = this.props;\n const basePath = `${glencoeURL}/combine`;\n const query = `?${Object.keys(params)\n .sort()\n .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)\n .join(\"&\")}`;\n return basePath + query;\n };\n\n render() {\n const {\n children,\n optionsForImageUrl,\n view,\n selectedSubLineItem,\n templateParams\n } = this.props;\n const params = { ...view.defaultImages };\n /**\n * you can define template wide params to be passed to the configurator\n * \"source_id\" is the id of the root template (Raumbuchvorlage) from which the roombook is derived.\n * \"params\" hold name => value pairs that were added to the image URL\n *\n * \"templateParams\": [\n * {\n * \"source_id\": 4711,\n * \"params\": [\n * {\n * \"name\": \"foo\",\n * \"value\": \"FOO_01_01\"\n * },\n * {\n * \"name\": \"bar\",\n * \"value\": \"BAR_01_01\"\n * }\n * ]\n * }\n * ]\n */\n templateParams.forEach(param => {\n params[[param.name]] = param.value;\n });\n const prefetchParams = { ...params };\n optionsForImageUrl.forEach(option => {\n if (option) {\n const { category, imageId } = option;\n if (imageId && view.productCategories.includes(category)) {\n params[category] = imageId;\n if (\n selectedSubLineItem &&\n !selectedSubLineItem.options.some(\n subLineItemOption =>\n option.id === subLineItemOption.id &&\n option.subLineItemId === subLineItemOption.subLineItemId\n )\n )\n prefetchParams[category] = imageId;\n }\n }\n });\n const imageURL = this.paramsToImageURL(params);\n\n const prefetchImageURLs = new Set(\n selectedSubLineItem &&\n selectedSubLineItem.options.map(option => {\n const { category, imageId } = option;\n const optionParams = { ...prefetchParams };\n if (imageId) {\n optionParams[category] = imageId;\n }\n return this.paramsToImageURL(optionParams);\n })\n );\n\n return children({ imageURL, prefetchImageURLs });\n }\n}\n\nConfiguratorImage.propTypes = {\n templateParams: arrayOf(\n shape({\n name: string,\n value: string\n })\n ),\n children: func.isRequired,\n optionsForImageUrl: array.isRequired,\n view: object.isRequired,\n selectedSubLineItem: object,\n glencoeURL: string.isRequired\n};\n\nConfiguratorImage.defaultProps = {\n templateParams: []\n};\n\nconst getView = (_, props) => props.view;\n\nconst getConfiguratorImageData = createCachedSelector(\n getConfiguratorViews,\n getConfiguratorSubLineItems,\n getView,\n getConfiguratorTemplateParams,\n getProjectBranding,\n (views, subLineItems, view, templateParams, branding) => ({\n templateParams,\n view: view || views[0],\n optionsForImageUrl: subLineItems\n .filter(sli => !sli.isOptional || sli.isActivated)\n .map(sli => {\n if (!sli.selectedOption?.isValidOption) {\n return sli.validOptions[0];\n }\n return sli.selectedOption;\n }),\n glencoeURL: branding.getGlencoeURL()\n })\n)((state, props) => props.configuratorId);\n\nconst ConfiguratorImageContainer = connect(getConfiguratorImageData)(\n ConfiguratorImage\n);\nConfiguratorImageContainer.propTypes = {\n configuratorId: string.isRequired,\n selection: object,\n view: object,\n selectedSubLineItem: object\n};\nexport default ConfiguratorImageContainer;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { findLineItems, getSectionPath } from \"shared/selectors/unit\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport CardGrid from \"../cardGrid/CardGrid\";\nimport { navigationButton } from \"../../helpers/navigationButton\";\nimport LineItemPicker from \"./pickers/LineItemPicker\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nclass LineItemList extends React.Component {\n static propTypes = {\n lineItems: PropTypes.array.isRequired\n };\n\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
    \n \n {picker => {\n return (\n
    \n \n
    \n );\n }}\n
    \n
    \n );\n }\n\n renderCardItems = picker => {\n const { lineItems, sectionPath } = this.props;\n return lineItems.map(lineItem => {\n if (lineItem.isMandatoryDisplay) {\n return {\n ...this.renderBaseLineItem(lineItem),\n total: lineItem.totalMin\n };\n }\n\n if (lineItem.isActivated) {\n return {\n ...this.renderBaseLineItem(lineItem),\n total: lineItem.total,\n url: `${sectionPath}/line_item/${lineItem.id}`\n };\n }\n\n // if isReplacement or Optional\n return {\n ...this.renderBaseLineItem(lineItem),\n total: lineItem.totalMin,\n onClick: () => {\n picker.select(lineItem).then(this.navigateTo, () => {});\n }\n };\n });\n };\n\n renderBaseLineItem = lineItem => ({\n button: navigationButton(lineItem),\n imageClass: lineItem.imageClass,\n imageUrl: lineItem.thumbUrl,\n isBasePrice: !lineItem.isActivated,\n isMandatoryDisplay: lineItem.isMandatoryDisplay,\n isPriceOnRequest: lineItem.isPriceOnRequest,\n key: lineItem.id.toString(),\n title: lineItem.title,\n modelType: \"line_item\"\n });\n\n navigateTo = lineItem => {\n const { sectionPath, router } = this.props;\n\n handleScrollTop();\n if (lineItem.subLineItemIds.length > 1) {\n router.push(\n `${sectionPath}/line_item/${lineItem.id}/sub_line_item/${lineItem.subLineItemIds[0]}`\n );\n } else {\n router.push(`${sectionPath}/line_item/${lineItem.id}`);\n }\n };\n}\n\nconst mapStateToProps = (state, props) => {\n const { sectionId } = props.params;\n let lineItems = [];\n\n if (props.lineItems) {\n lineItems = props.lineItems;\n } else {\n lineItems = findLineItems(state)(sectionId).filter(li => {\n return (\n li.isVisible &&\n li.isConfigurable &&\n !li.isReplaced &&\n (!li.isReplacement || li.isActivated)\n );\n });\n }\n\n const sectionPath = getSectionPath(props);\n return {\n sectionPath,\n lineItems\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(LineItemList));\n","import { createSelector } from \"reselect\";\nimport { intersection } from \"lodash\";\nimport { getSubLineItems } from \"./subLineItems\";\n\n// Check for required changes by equipmentLine (aka productLine aka productTag)\n// return all subLineItems have a de-facto selected (default or selected) option\n// that does not match at least one of the activatedProductLine.\nexport const getDivergentProductLineSubLineItems = createSelector(\n [getSubLineItems],\n subLineItems => {\n return acceptedProductLineTags => {\n return acceptedProductLineTags.length > 0\n ? subLineItems\n .filter(({ isOptional, hasBuyerSelection }) => {\n return isOptional ? hasBuyerSelection : true; // filter out every optional that is not activated\n })\n .filter(\n ({ defactoSelectedOption }) =>\n intersection(\n defactoSelectedOption?.productTags,\n acceptedProductLineTags\n ).length === 0\n )\n : undefined;\n };\n }\n);\n\n// returns a delta that represents the required changes\n// Array<{ subLineItem, oldInvalidOption, newValidOption}>\nexport const getSubLineItemAdjustmentDeltaForProductLine = createSelector(\n [getDivergentProductLineSubLineItems],\n getDivergentSubLineItems => {\n return acceptedProductLineTags =>\n getDivergentSubLineItems?.(acceptedProductLineTags)\n ?.map(subLineItem => ({\n subLineItem,\n oldInvalidOption: subLineItem.defactoSelectedOption,\n newValidOption: subLineItem.options.find(({ productTags }) =>\n productTags.some(productTag =>\n acceptedProductLineTags.includes(productTag)\n )\n )\n }))\n .filter(({ newValidOption, oldInvalidOption }) => {\n return !(\n !newValidOption && oldInvalidOption?.productTags?.length === 0\n );\n });\n }\n);\n","import React from \"react\";\nimport { bool, number, shape } from \"prop-types\";\nimport { FormattedMessage } from \"react-intl\";\nimport FormatCurrency from \"../../currency/FormatCurrency\";\n\nfunction RequiredRuleUpdates({ requiredUpdates }) {\n let content = null;\n if (requiredUpdates) {\n if (requiredUpdates.extraCostsOnRequest) {\n content = (\n \n );\n } else {\n content =\n requiredUpdates.extraCosts !== 0 ? (\n \n \n \n )\n }}\n />\n ) : null;\n }\n }\n\n return (\n
    \n
    \n \n
    \n {content}\n
    \n );\n}\n\nRequiredRuleUpdates.propTypes = {\n requiredUpdates: shape({\n extraCostsOnRequest: bool,\n extraCosts: number\n })\n};\n\nRequiredRuleUpdates.defaultProps = {\n requiredUpdates: undefined\n};\n\nexport default RequiredRuleUpdates;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { func } from \"prop-types\";\nimport { Divider, Header } from \"semantic-ui-react\";\nimport { getBreadcrumbPartials } from \"../../../selectors/unit/navigation\";\nimport { SubLineItemShape } from \"../../configurator/roomBook.shape\";\n\nfunction BreadcrumbPartials({\n lastSubLineItem,\n subLineItem,\n makeBreadcrumbPartials\n}) {\n const lastBreadcrumbPartials = lastSubLineItem\n ? makeBreadcrumbPartials({\n to: lastSubLineItem\n })\n : [];\n const breadcrumbPartials = makeBreadcrumbPartials({\n to: subLineItem\n });\n\n const renderSubSectionHeader =\n lastBreadcrumbPartials[1]?.key !== breadcrumbPartials[1]?.key;\n const renderLineItemHeader =\n lastBreadcrumbPartials[2]?.key !== breadcrumbPartials[2]?.key;\n const renderSubLineItemHeader =\n lastBreadcrumbPartials[3]?.key !== breadcrumbPartials[3]?.key;\n\n return (\n <>\n {renderSubSectionHeader && (\n \n
    \n {renderSubSectionHeader && breadcrumbPartials[1]?.content}\n \n {breadcrumbPartials[0]?.content}\n \n
    \n
    \n )}\n {renderLineItemHeader && (\n
    \n {breadcrumbPartials[2]?.content}\n
    \n )}\n {renderSubLineItemHeader && (\n
    \n {breadcrumbPartials[3]?.content}\n
    \n )}\n \n );\n}\n\nBreadcrumbPartials.propTypes = {\n subLineItem: SubLineItemShape.isRequired,\n lastSubLineItem: SubLineItemShape,\n makeBreadcrumbPartials: func.isRequired\n};\n\nBreadcrumbPartials.defaultProps = {\n lastSubLineItem: undefined\n};\n\nconst mapStateToProps = state => {\n const makeBreadcrumbPartials = getBreadcrumbPartials(state);\n\n return {\n makeBreadcrumbPartials\n };\n};\n\nexport default connect(mapStateToProps)(BreadcrumbPartials);\n","import React, { Fragment } from \"react\";\nimport { arrayOf, shape } from \"prop-types\";\nimport { Container, Item } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport ProductInfoItem from \"../../../../builder_portal/components/product/ProductInfoItem\";\nimport FormatCurrency from \"../../currency/FormatCurrency\";\nimport { SubLineItemShape } from \"../../configurator/roomBook.shape\";\nimport { OptionShape } from \"../../../shapes/subLineItemOption.shape\";\nimport ProductLineLabel from \"../../elements/productLineLabel\";\nimport BreadcrumbPartials from \"./breadcrumbPartials\";\nimport { defaultRichTextTags } from \"../../../../builder_portal/helpers/defaultRichTextTags\";\nimport \"./requiredProductLineUpdates.scss\";\n\nfunction RequiredProductLineUpdates({ productLineUpdates }) {\n return (\n
    \n \n \n ),\n nextLabel: (\n \n ),\n ...defaultRichTextTags\n }}\n />\n \n \n {productLineUpdates.map(\n ({ subLineItem, newValidOption, oldInvalidOption }, i) => {\n const totalDelta =\n (newValidOption?.total ?? 0) - (oldInvalidOption?.total ?? 0);\n return (\n \n \n \n \n \n \n \n \n = 0 ? \"debit\" : \"credit\"}\n amount={totalDelta}\n isOnRequest={newValidOption.isOnRequest}\n />\n \n \n \n );\n }\n )}\n \n
    \n );\n}\n\nRequiredProductLineUpdates.propTypes = {\n productLineUpdates: arrayOf(\n shape({\n subLineItem: SubLineItemShape,\n newValidOption: OptionShape,\n oldInvalidOption: OptionShape\n })\n )\n};\n\nRequiredProductLineUpdates.defaultProps = {\n productLineUpdates: []\n};\n\nexport default RequiredProductLineUpdates;\n","import PropTypes, { func, instanceOf } from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Divider, Header, Item } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { withRouter } from \"../../../helpers/withRouter\";\nimport { getAccount, getUserRole } from \"../../../selectors\";\nimport { getRequiredUpdates } from \"../../../selectors/unit/subLineItemRules\";\nimport ConfirmationDialog from \"../../dialogs/ConfirmationDialog\";\nimport { RoomBookController } from \"../../../actions/roomBookController\";\nimport \"./subLineItemPicker.scss\";\nimport { getSubLineItemAdjustmentDeltaForProductLine } from \"../../../selectors/unit/productLinesImpact\";\nimport RequiredRuleUpdates from \"./requiredRuleUpdates\";\nimport RequiredProductLineUpdates from \"./requiredProductLineUpdates\";\nimport { SubLineItemShape } from \"../../configurator/roomBook.shape\";\nimport FormatCurrency from \"../../currency/FormatCurrency\";\nimport { defaultRichTextTags } from \"../../../../builder_portal/helpers/defaultRichTextTags\";\nimport { Account } from \"../../../models/account\";\nimport { getProductLineScopeForTags } from \"../../../selectors/unit/productLines\";\nimport AdminMessageDialog from \"../AdminMessageDialog\";\n\nclass SubLineItemPicker extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = { showAdminMessage: false, loadingId: null };\n }\n\n componentDidMount = () => {\n const { subLineItem } = this.props;\n if (subLineItem.isAutoDecidable) {\n this.toggleSelection(subLineItem.validOptions[0]);\n }\n };\n\n handleClose = () => {\n this.setState({ showAdminMessage: false });\n };\n\n onlyAdminOrGuest(action) {\n const { userRole } = this.props;\n if ([\"admin\", \"buyer\"].includes(userRole)) {\n return action();\n }\n this.setState({ showAdminMessage: true });\n return Promise.resolve();\n }\n\n toggleSelection = product => {\n const { roomBookController, subLineItem } = this.props;\n return this.onlyAdminOrGuest(() => {\n if (product.isBuyerSelection) {\n return roomBookController\n .deselectProducts([subLineItem.id])\n .then(() => {\n this.setState({ loadingId: null });\n });\n }\n\n return this.confirmedRuleSelection(subLineItem.id, product.id)\n .then(accumulatedProductSelection => {\n return this.confirmedProductLineSelection(\n product,\n accumulatedProductSelection,\n subLineItem\n );\n })\n .then(accumulatedProductSelection => {\n return accumulatedProductSelection\n ? roomBookController.selectProducts(accumulatedProductSelection)\n : Promise.resolve();\n })\n .then(apiResponse => {\n this.setState({ loadingId: null, confirmationDialog: null });\n return apiResponse;\n });\n });\n };\n\n confirmedProductLineSelection = (\n selectedProduct,\n accumulatedProductSelection,\n selectedSubLineItem\n ) => {\n return new Promise(resolve => {\n const {\n getRequiredProductLineUpdates,\n getScopeForTags,\n account\n } = this.props;\n const productLineUpdatesWithDestroyed = getRequiredProductLineUpdates(\n selectedProduct?.productTags\n );\n const productLineUpdates = productLineUpdatesWithDestroyed\n ?.filter(({ newValidOption }) => !!newValidOption)\n .filter(({ subLineItem }) => {\n const productLineScope = getScopeForTags(\n subLineItem.product_group_id,\n selectedProduct?.productTags\n );\n let keepElement;\n switch (productLineScope) {\n case \"section\":\n keepElement =\n subLineItem.section_id === selectedSubLineItem.section_id;\n break;\n case \"sub_section\":\n keepElement =\n subLineItem.sub_section_id ===\n selectedSubLineItem.sub_section_id;\n break;\n default:\n // case \"roombook\":\n keepElement =\n subLineItem.room_book_id === selectedSubLineItem.room_book_id;\n break;\n }\n return keepElement;\n });\n\n if (\n productLineUpdates?.length > 1 &&\n account.isEnabled(\"product_line_macro\")\n ) {\n const buttons = [\n {\n id: \"ok\",\n icon: \"heart outline\",\n color: \"primary\", // goes into className prop, not color...\n label:\n \"buyerPortal.productLineUpdate.confirmationDialog.actionLabel\",\n onClick: () => {\n const additionalSelection = {};\n productLineUpdates.forEach(({ subLineItem, newValidOption }) => {\n additionalSelection[subLineItem.id] =\n newValidOption?.id ?? \"_destroy\";\n });\n resolve({\n ...accumulatedProductSelection,\n ...additionalSelection\n });\n }\n },\n {\n id: \"cancel\",\n label: \"meta.actions.cancel\",\n basic: true,\n onClick: () => {\n resolve({});\n }\n }\n ];\n const totalTotal = productLineUpdates.reduce(\n (totalSum, { newValidOption, oldInvalidOption }) =>\n totalSum +\n ((newValidOption?.total ?? 0) - (oldInvalidOption?.total ?? 0)),\n 0\n );\n const isOnRequest = productLineUpdates.reduce(\n (accu, { newValidOption }) => accu || newValidOption?.isOnRequest,\n false\n );\n\n const confirmationDialog = (\n {\n this.setState({ confirmationDialog: null });\n }}\n title={\n \n }\n content={\n \n }\n extra={\n <>\n \n \n \n \n
    \n {totalTotal >= 0 ? (\n \n ) : (\n \n )}\n  \n = 0 ? \"debit\" : \"credit\"}\n amount={totalTotal}\n isOnRequest={isOnRequest}\n />\n
    \n
    \n \n \n \n
    \n
    \n \n }\n buttons={buttons}\n />\n );\n\n this.setState({\n loadingId: selectedProduct.id,\n confirmationDialog\n });\n } else {\n resolve({ ...accumulatedProductSelection });\n }\n });\n };\n\n /*\n * Background:\n * If the buyer changes the selection and the other selections might become\n * invalid, those selections should be reset. Of course, the buyer should\n * confirm resetting other selections beforehand.\n */\n confirmedRuleSelection = (subLineItemId, productId) => {\n const { getRequiredRuleUpdates } = this.props;\n this.setState({ loadingId: productId });\n return new Promise(resolve => {\n const currentSelection = { [subLineItemId]: { product_id: productId } };\n const updates = getRequiredRuleUpdates(subLineItemId, productId);\n\n if (!updates.items.length) {\n resolve(currentSelection);\n } else {\n const buttons = [\n {\n id: \"ok\",\n label: \"meta.actions.proceedAnyway\",\n basic: true,\n onClick: cb => {\n const additionalSelection = updates.items.reduce((accu, u) => {\n if (u.item.isOptional) {\n accu[u.item.id] = \"_destroy\";\n } else {\n accu[u.item.id] = {\n product_id: null,\n quantity: u.item.quantityBuyerSelection\n };\n }\n return accu;\n }, {});\n\n resolve({\n ...currentSelection,\n ...additionalSelection\n });\n cb();\n }\n },\n {\n id: \"cancel\",\n label: \"meta.actions.cancel\",\n basic: true,\n onClick: cb => {\n this.setState({ loadingId: null }, () => {\n resolve({});\n cb();\n });\n }\n }\n ];\n const confirmationDialog = (\n {\n this.setState({ confirmationDialog: null });\n }}\n title=\"buyerPortal.roomBook.buyerSelection.confirmation.title\"\n content={}\n buttons={buttons}\n />\n );\n\n this.setState({\n confirmationDialog\n });\n }\n });\n };\n\n render = () => {\n const { children } = this.props;\n const { loadingId, showAdminMessage, confirmationDialog } = this.state;\n\n return (\n <>\n \n {confirmationDialog}\n {children?.({\n select: this.toggleSelection,\n loadingId\n })}\n \n );\n };\n}\n\nconst mapStateToProps = state => {\n return {\n userRole: getUserRole(state),\n getRequiredRuleUpdates: getRequiredUpdates(state),\n getRequiredProductLineUpdates: getSubLineItemAdjustmentDeltaForProductLine(\n state\n ),\n getScopeForTags: getProductLineScopeForTags(state),\n account: getAccount(state)\n };\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n const { id: unitId } = props.params;\n const roomBookController = new RoomBookController(dispatch, unitId);\n return {\n roomBookController\n };\n};\n\nSubLineItemPicker.propTypes = {\n roomBookController: instanceOf(RoomBookController).isRequired,\n subLineItem: SubLineItemShape.isRequired,\n getRequiredRuleUpdates: func.isRequired,\n getRequiredProductLineUpdates: func.isRequired,\n getScopeForTags: func.isRequired,\n children: func.isRequired,\n userRole: PropTypes.string.isRequired,\n account: instanceOf(Account).isRequired\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(SubLineItemPicker)\n);\n","import { createSelector } from \"reselect\";\n\nimport { getPageContent } from \"shared/selectors\";\n\nconst hasAttachments = createSelector([getPageContent], pageContent => {\n return pageContent?.attachments?.length > 0;\n});\n\nexport default hasAttachments;\n","import { createSelector } from \"reselect\";\n\nimport { getDeadlinesCount } from \"buyer_portal/selectors/deadlines\";\nimport { getProjectSlug } from \"shared/selectors/project\";\nimport { getBaseUnit, getUnitCount } from \"shared/selectors/unit/unit\";\nimport { getUser } from \"shared/selectors/base\";\nimport hasAttachments from \"../../buyer_portal/selectors/attachments\";\n\nexport const getPageMenu = createSelector(\n [\n getBaseUnit,\n getUnitCount,\n getProjectSlug,\n getUser,\n getDeadlinesCount,\n hasAttachments\n ],\n (unit, unitCount, projectSlug, user, deadlinesCount, attachments) => {\n const items = [];\n const hasMultipleUnits = unitCount > 1;\n const hasUnit = unit && projectSlug;\n\n if (hasMultipleUnits) {\n items.push({\n id: \"units\",\n link: `/`,\n message: \"buyerPortal.menu.units\"\n });\n }\n\n if (hasUnit) {\n if (!unit.sample) {\n [\n {\n id: \"products\",\n link: `/${projectSlug}/unit/${unit.slug}`,\n message: \"buyerPortal.menu.products\"\n },\n {\n id: \"deadlines\",\n link: `/${projectSlug}/unit/${unit.slug}/deadlines`,\n message: \"buyerPortal.menu.deadlines\",\n hidden: deadlinesCount < 1\n },\n {\n id: \"attachments\",\n link: `/${projectSlug}/unit/${unit.slug}/attachment`,\n message: \"buyerPortal.menu.attachments\"\n },\n {\n id: \"orderStatus\",\n link: `/${projectSlug}/unit/${unit.slug}/order-status`,\n message: \"buyerPortal.menu.orderStatus\"\n }\n ].forEach(i => {\n items.push(i);\n });\n }\n\n if (unit.sample) {\n items.push({\n id: \"description\",\n link: `/${projectSlug}/musterwohnung/${unit.sample_unit_token}`,\n message: unit.description\n });\n if (attachments) {\n items.push({\n id: \"attachments\",\n link: `/${projectSlug}/musterwohnung/${unit.sample_unit_token}/attachment`,\n message: \"buyerPortal.menu.attachments\"\n });\n }\n }\n }\n\n if (user) {\n items.push({\n id: \"logout\",\n action: \"logoutAction\",\n icon: {\n name: \"shutdown\"\n },\n message: \"buyerPortal.menu.logout\"\n });\n }\n\n return items.filter(i => !i.hidden);\n }\n);\n","import { browserHistory } from \"../../shared/routes/browserHistory\";\nimport {\n UPDATE_ACCOUNT,\n UPDATE_MESSAGE\n} from \"../../shared/constants/appConstants\";\nimport apiRequest from \"../../shared/network/apiRequest\";\nimport localStorage from \"../../shared/helpers/localStorage\";\n\nexport default dispatch => () => {\n apiRequest\n .delete(\"/api/v1/tokens\", dispatch)\n .then(function() {\n // clear local storage (except filter)\n localStorage.remove(\"token\");\n localStorage.remove(\"landingPage\");\n localStorage.remove(\"filter\");\n\n // update account\n dispatch({\n type: UPDATE_ACCOUNT,\n payload: { account: { id: window.initialProps.accountId } }\n });\n // show message\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n title: \"message.logout.title\",\n body: \"message.logout.body\"\n }\n });\n // redirect to login\n return browserHistory.push(\"/users/login\");\n })\n .catch(function(error) {\n console.error(\"Error logout\", error);\n dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n title: \"message.errorLogout.title\",\n body: \"message.errorLogout.body\"\n }\n });\n });\n\n return {};\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport { get } from \"lodash\";\nimport { Link } from \"react-router\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Menu, Icon } from \"semantic-ui-react\";\nimport { connect } from \"react-redux\";\nimport { getPageMenu } from \"shared/selectors/pageMenu\";\n\nimport logoutAction from \"buyer_portal/actions/logoutAction\";\n\nimport \"./pageMenu.scss\";\n\nfunction PageMenu(props) {\n const { menu } = props;\n\n function handleClick() {\n const { sidebarIsVisible, onToggleSidebar } = props;\n\n if (sidebarIsVisible) {\n onToggleSidebar(false);\n }\n\n handleScrollTop();\n }\n\n const renderLink = item => {\n if (item.id === \"units\") {\n const { UnitsMenuItemText } = props;\n return (\n \n
    \n {item.icon ? : null}\n {UnitsMenuItemText.length ? (\n UnitsMenuItemText\n ) : (\n \n )}\n
    \n \n );\n }\n if (item.link) {\n return (\n \n
    \n {item.icon ? : null}\n {item.message && (\n \n )}\n
    \n \n );\n }\n if (item.action) {\n const { actions } = props;\n return (\n \n {item.icon ? : null}\n {item.message && (\n \n )}\n \n );\n }\n return null;\n };\n\n const menuItems = menu.map(item => {\n return (\n \n {renderLink(item)}\n \n );\n });\n\n return (\n \n {menuItems}\n \n );\n}\n\nPageMenu.propTypes = {\n menu: PropTypes.array.isRequired,\n actions: PropTypes.object.isRequired,\n sidebarIsVisible: PropTypes.bool.isRequired,\n onToggleSidebar: PropTypes.func.isRequired,\n UnitsMenuItemText: PropTypes.string\n};\n\nPageMenu.defaultProps = {\n UnitsMenuItemText: \"\"\n};\n\nconst mapStateToProps = (state, props) => {\n const branding = get(state.branding, props.projectId);\n const UnitsMenuItemText = get(branding, \"units_menu_item_text\");\n return {\n menu: getPageMenu(state),\n UnitsMenuItemText\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n actions: {\n logoutAction: logoutAction(dispatch)\n }\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PageMenu);\n","import { arrayOf, bool, number, shape, string } from \"prop-types\";\nimport { SectionShape } from \"./section.shape\";\n\nexport const SectionGroupShape = shape({\n title: string,\n sections: arrayOf(SectionShape),\n position: number,\n showTitle: bool\n});\n\nexport default SectionGroupShape;\n","import PropTypes, { arrayOf } from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Message } from \"semantic-ui-react\";\nimport { findSubSections, makeSectionPath } from \"shared/selectors/unit\";\nimport { groupBy, sortBy, min } from \"lodash\";\nimport { FormattedMessage } from \"react-intl\";\nimport CardGrid from \"../cardGrid/CardGrid\";\nimport { navigationButton } from \"../../helpers/navigationButton\";\nimport \"./sectionMenu.scss\";\nimport { SectionGroupShape } from \"../../shapes/sectionGroup.shape\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nclass SectionMenu extends React.Component {\n renderSectionGroups() {\n const { sectionGroups } = this.props;\n\n return (\n
    \n {sectionGroups.map(this.renderSectionGroup)}\n
    \n );\n }\n\n renderSectionGroup = group => {\n const { makeSectionPath } = this.props;\n const items = group.sections.map(section => {\n return {\n key: `${section.id}`,\n title: section.title,\n imageUrl: section.image,\n imageClass: section.imageClass,\n url: makeSectionPath(section.id),\n total: section.total,\n isPriceOnRequest: section.isPriceOnRequest,\n isMandatoryDisplay: section.isMandatoryDisplay,\n button: navigationButton(section)\n };\n });\n\n return (\n \n {group.showTitle &&

    {group.title}

    }\n \n \n );\n };\n\n render() {\n const { sectionGroups } = this.props;\n\n if (sectionGroups.length > 0) {\n return this.renderSectionGroups();\n }\n return (\n \n }\n content={\n \n }\n />\n );\n }\n}\n\nconst mapStateToProps = (state, props) => {\n const { sectionId } = props.params;\n\n const subSections = findSubSections(state, sectionId).filter(subSection => {\n return subSection.isVisible && subSection.hasChildren;\n });\n\n const groupedSections = groupBy(subSections, \"group\");\n const sectionGroups = sortBy(\n Object.keys(groupedSections).map(title => {\n const sections = groupedSections[title] || [];\n const position = min(sections.map(s => s.position));\n return {\n title,\n sections,\n position,\n showTitle: Object.keys(groupedSections).length > 1\n };\n }),\n \"position\"\n );\n\n return {\n sectionGroups,\n makeSectionPath: id => makeSectionPath(props, id)\n };\n};\n\nSectionMenu.defaultProps = {\n sectionGroups: []\n};\n\nSectionMenu.propTypes = {\n sectionGroups: arrayOf(SectionGroupShape),\n makeSectionPath: PropTypes.func.isRequired\n};\n\nexport default withRouter(connect(mapStateToProps)(SectionMenu));\n","import React from \"react\";\nimport { pick } from \"lodash\";\nimport \"./responsiveImage.scss\";\n\nexport const ResponsiveImage = props => {\n const styles = pick(props, [\"height\"]);\n return (\n \n );\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Grid } from \"semantic-ui-react\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\nimport { FormattedMessage } from \"react-intl\";\nimport { ResponsiveImage } from \"shared/components/elements/ResponsiveImage\";\n\nimport { toggleConfirmationDialog } from \"shared/components/dialogs/ConfirmationDialogContainer\";\nimport { roomBookController } from \"shared/actions/roomBookController\";\n\nimport { withRouter } from \"../../../helpers/withRouter\";\n\nclass LineItemPicker extends React.Component {\n handleSelection = lineItem => {\n if (lineItem.isOptional) {\n return this.handleOptionalLineItem(lineItem);\n }\n return null;\n };\n\n handleOptionalLineItem = lineItem => {\n const { confirmationDialog } = this.props;\n\n const content = (\n \n \n \n \n \n

    \n \n \n :\n \n
    \n {!lineItem.isPriceOnRequest && (\n \n )}\n {lineItem.isPriceOnRequest && Preis auf Anfrage}\n

    \n

    \n \n :\n \n
    \n \n

    \n
    \n
    \n );\n\n return new Promise((resolve, reject) => {\n if (lineItem.isBackendActivated) {\n resolve(lineItem);\n } else {\n confirmationDialog({\n title: (\n \n ),\n content,\n buttons: [\n {\n id: \"ok\",\n label: \"meta.actions.add\",\n color: \"primary\",\n onClick: cb => {\n cb();\n resolve(lineItem);\n }\n },\n {\n id: \"cancel\",\n label: \"meta.actions.cancel\",\n color: \"secondary\",\n basic: true,\n onClick: cb => {\n cb();\n reject();\n }\n }\n ]\n });\n }\n });\n };\n\n render() {\n const { children } = this.props;\n return children({\n select: this.handleSelection\n });\n }\n}\n\nLineItemPicker.propTypes = {\n children: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = null;\n\nconst mapDispatchToProps = (dispatch, props) => {\n const { id } = props.params;\n const ctrl = roomBookController(dispatch, id);\n return {\n deselectProducts: subLineItemIds => {\n return ctrl.deselectProducts(subLineItemIds);\n },\n selectProducts: selections => {\n return ctrl.selectProducts(selections);\n },\n confirmationDialog: toggleConfirmationDialog(dispatch)\n };\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(LineItemPicker)\n);\n","import { useRouterHistory } from \"react-router\";\nimport { createHistory } from \"history\";\nimport { get } from \"lodash\";\n\nexport const browserHistory = useRouterHistory(createHistory)({\n basename: get(window, \"initialProps.basename\", \"\")\n});\n","import * as Sentry from \"@sentry/react\";\n\nfunction createLocalStorage() {\n try {\n const localStorage = {\n get: key => window.localStorage.getItem(key),\n set: (key, value) => window.localStorage.setItem(key, value),\n remove: key => window.localStorage.removeItem(key),\n clear: () => window.localStorage.clear()\n };\n\n // Need to check if it is actually working,\n // Safari Private Mode e.g. sets quota to 0\n // and fails\n const x = `test-localstorage-${Date.now()}`;\n localStorage.set(x, x);\n const y = localStorage.get(x);\n localStorage.remove(x);\n\n if (y !== x) {\n throw new Error(\n \"LocalStorage not available, reverting to MemoryStorage.\"\n );\n }\n\n return localStorage;\n } catch (e) {\n if (process.env.NODE_ENV !== \"test\" && Sentry) {\n Sentry.captureException(e);\n }\n\n if (!window.dataStorage) {\n window.dataStorage = {};\n }\n\n return {\n get: key => window.dataStorage[key],\n set: (key, value) => {\n window.dataStorage[key] = value;\n return window.dataStorage[key];\n },\n remove: key => {\n if (window.dataStorage[key]) {\n const value = window.dataStorage[key];\n delete window.dataStorage[key];\n return value;\n }\n return null;\n },\n clear: () => {\n return (window.dataStorage = {});\n }\n };\n }\n}\n\nconst localStorage = createLocalStorage();\n\nexport default localStorage;\n","import React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { PropTypes } from \"prop-types\";\nimport { getFeatureToggles } from \"shared/selectors\";\nimport { useFeatureToggleContext } from \"./FeatureToggleProvider\";\n\nconst FeatureToggle = ({\n featureToggleName,\n children,\n featureToggles: stateFeatureToggles,\n disabled,\n featureTogglesArray,\n any,\n ignore\n}) => {\n const { featureToggles: contextFeatureToggles } = useFeatureToggleContext();\n const [isFeatureVisible, setFeatureVisible] = useState(false);\n const featureToggles = contextFeatureToggles || stateFeatureToggles;\n useEffect(() => {\n if (any && featureToggles) {\n const atLeastOne = featureTogglesArray.some(ft => {\n return featureToggles[ft];\n });\n setFeatureVisible(atLeastOne);\n } else if (featureToggles)\n setFeatureVisible(featureToggles[featureToggleName]);\n }, [featureToggles]);\n\n if (ignore) return <>{children};\n\n if (disabled) {\n return !isFeatureVisible ? <>{children} : null;\n }\n return isFeatureVisible ? <>{children} : null;\n};\n\nFeatureToggle.propTypes = {\n featureToggleName: PropTypes.string,\n featureTogglesArray: PropTypes.arrayOf(PropTypes.string),\n children: PropTypes.node,\n // eslint-disable-next-line react/forbid-prop-types\n featureToggles: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n any: PropTypes.bool,\n ignore: PropTypes.bool\n};\n\nFeatureToggle.defaultProps = {\n children: null,\n disabled: false,\n any: false,\n featureTogglesArray: [],\n featureToggleName: undefined,\n ignore: false\n};\n\nconst mapStateToProps = state => {\n return {\n featureToggles: getFeatureToggles(state)\n };\n};\n\nexport default connect(mapStateToProps)(FeatureToggle);\n","window.actionLocator = {};\n\nexport const UNIT_RESOURCE = \"UNIT_RESOURCE\";\nexport const CATALOG_RESOURCE = \"CATALOG_RESOURCE\";\nexport const LINE_ITEM_RESOURCE = \"LINE_ITEM_RESOURCE\";\nexport const SUB_LINE_ITEM_RESOURCE = \"SUB_LINE_ITEM_RESOURCE\";\nexport const PRODUCT_LINE_RESOURCE = \"PRODUCT_LINE_RESOURCE\";\n\nexport const setResource = (key, resource) => {\n window.actionLocator[key] = resource;\n};\n\nexport const getResource = key => {\n return window.actionLocator[key];\n};\n","import { createSelector } from \"reselect\";\nimport { get } from \"lodash\";\n\nconst getRoomBook = state => {\n return get(state, [\"pageContent\", \"room_book\"], { sections: [] });\n};\n\nexport const isReady = state =>\n !!get(state, [\"pageContent\", \"room_book\"], null);\n\nexport const getFlatRoomBook = createSelector([getRoomBook], roomBook => {\n const sections = [];\n const subSections = [];\n const lineItems = [];\n const subLineItems = [];\n\n roomBook.sections.forEach(section => {\n section.sections.forEach(subSection => {\n subSection.line_items.forEach(lineItem => {\n lineItem.sub_line_items.forEach(subLineItem => {\n subLineItems.push({\n ...subLineItem,\n room_book_id: roomBook.id,\n line_item_id: lineItem.id,\n sub_section_id: subSection.id,\n section_id: section.id\n });\n });\n lineItems.push({ ...lineItem, section_id: subSection.id });\n });\n subSections.push({ ...subSection, section_id: section.id });\n });\n sections.push(section);\n });\n\n return {\n id: roomBook.id,\n sections,\n subSections,\n lineItems,\n subLineItems\n };\n});\n\nexport const getBuyerSelections = state => {\n return get(state, [\"pageContent\", \"buyer_selections\"], {});\n};\n","import { arrayOf, bool, number, objectOf, oneOfType, string } from \"prop-types\";\n\nexport const I18nShape = objectOf(\n oneOfType([string, number, bool, arrayOf(string)])\n);\n\nexport default I18nShape;\n","import React from \"react\";\nimport PropTypes, { bool } from \"prop-types\";\n\nexport const ShowIf = ({ condition, children }) => {\n return (\n
    {children}
    \n );\n};\nShowIf.propTypes = {\n condition: PropTypes.bool.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired\n};\n\nexport const If = props => {\n const { condition, children, styles, block } = props;\n if (condition) {\n if (children?.length > 1) {\n return (\n
    \n {children}\n
    \n );\n }\n if (children) return children;\n }\n return null;\n};\nIf.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n condition: PropTypes.any,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n // eslint-disable-next-line react/forbid-prop-types\n styles: PropTypes.object,\n block: bool\n};\nIf.defaultProps = {\n condition: false,\n styles: {},\n block: false,\n children: null\n};\nexport const Unless = props => {\n const { condition, children } = props;\n return {children};\n};\nUnless.propTypes = {\n condition: PropTypes.bool.isRequired,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired\n};\n","import { get, min, max } from \"lodash\";\n\nconst calculateRelativePrice = (price, defaultPrice) => {\n return get(price, \"price\", 0) - get(defaultPrice, \"price\", 0);\n};\n\nconst calculateDefaultPrice = (lineItem, defaultProduct) => {\n if (lineItem.optional) {\n return 0;\n }\n if (lineItem.price_strategy === \"flat\") {\n return get(defaultProduct, \"price\", get(lineItem, \"default_price\", 0));\n }\n return get(defaultProduct, \"price\", 0) * get(lineItem, \"default_quantity\", 0);\n};\n\nconst getExcessPrice = (excessQuantity, lineItem, product, defaultProduct) => {\n if (excessQuantity >= 0) {\n if (lineItem.product_id === product.product_id) {\n return lineItem.excess_price || lineItem.price;\n }\n return product.excess_price || product.price;\n }\n return defaultProduct.price;\n};\n\nconst calculatePrice = (lineItem, product, defaultProduct) => {\n if (defaultProduct) {\n const actualPrice =\n lineItem.product_id === product?.product_id\n ? lineItem.price\n : get(product, \"price\", lineItem.price);\n\n if (lineItem.price_strategy === \"flat\") {\n const defaultPrice = calculateDefaultPrice(lineItem, defaultProduct);\n return actualPrice - defaultPrice;\n }\n const excessQuantity = max([\n lineItem.quantity - lineItem.default_quantity,\n 0\n ]);\n const excessPrice = getExcessPrice(\n excessQuantity,\n lineItem,\n product,\n defaultProduct\n );\n const quantity = min([lineItem.default_quantity, lineItem.quantity]);\n return (\n excessQuantity * excessPrice +\n actualPrice * quantity -\n (lineItem.default_price ?? defaultProduct.price) *\n lineItem.default_quantity\n );\n }\n return lineItem.total;\n};\n\nconst hasCustomPrice = (lineItem, productPrice) => {\n const price = get(productPrice, \"price\", lineItem.price);\n return lineItem.price !== price;\n};\n\nexport const PriceCalculator = {\n calculateRelativePrice,\n calculateDefaultPrice,\n calculatePrice,\n hasCustomPrice\n};\n","import { createSelector } from \"reselect\";\nimport { get, keyBy, sortBy, uniq, min } from \"lodash\";\nimport { getI18N } from \"../base\";\nimport { getProjectBranding } from \"../project\";\nimport { getBuyerSelections } from \"./base\";\nimport { isProductAcceptable as productRuleMatcher } from \"./productRules\";\nimport {\n isProductAcceptable as productLineMatcher,\n isProductRecommendable,\n getProductLinesForTags,\n getActiveProductTag,\n getProductLine\n} from \"./productLines\";\nimport { getProductsById, getProductGroupsById } from \"./productData\";\nimport { PriceCalculator } from \"./priceCalculator\";\n\nexport const getProductOptions = createSelector(\n [\n getProductsById,\n getProductGroupsById,\n getProjectBranding,\n getBuyerSelections,\n productRuleMatcher,\n productLineMatcher,\n isProductRecommendable,\n getProductLinesForTags,\n getI18N,\n getActiveProductTag,\n getProductLine\n ],\n (\n products,\n productGroups,\n branding,\n buyerSelections,\n productRuleMatcher,\n productLineMatcher,\n isProductRecommendable,\n getProductLinesForTags,\n i18n,\n activeProductTag,\n productLine\n ) => {\n return subLineItem => {\n const buyerSelection = buyerSelections[subLineItem.id];\n const buyerSelectedProductId = get(buyerSelection, \"product_id\", null);\n const productGroup = productGroups[subLineItem.product_group_id];\n const prices = get(productGroup, \"prices\", []);\n const pricesByProductId = keyBy(prices, \"product_id\");\n const defaultProductPrice =\n pricesByProductId[subLineItem.default_product_id];\n const isQuantityOnRequest = get(\n productGroup,\n \"quantity_on_request\",\n false\n );\n\n const options = prices.map(price => {\n const product = products[price.product_id];\n const isBuyerSelection = product.id === buyerSelectedProductId;\n\n const isSelected = product.id === subLineItem.product_id;\n const isSelectable = subLineItem.status.selectable;\n const isActualSelection =\n isSelectable && buyerSelection ? isBuyerSelection : isSelected;\n const isPortalOffer = get(price, \"portal_offer\", false);\n\n const total = PriceCalculator.calculatePrice(\n subLineItem,\n price,\n defaultProductPrice\n );\n\n const hasCustomPrice =\n isSelected && PriceCalculator.hasCustomPrice(subLineItem, price);\n const isOnRequest = !hasCustomPrice && get(price, \"on_request\", false);\n const productTags = uniq(\n price.product_tags.concat(product.product_tags)\n );\n const productWithTags = { ...product, product_tags: productTags };\n const isAcceptableProduct =\n !subLineItem.status.selectable ||\n productRuleMatcher(subLineItem, productWithTags);\n const isValidOption =\n isAcceptableProduct &&\n productLineMatcher(subLineItem, productWithTags);\n const isValidSelection = !isBuyerSelection || isValidOption;\n const isRecommendable =\n isAcceptableProduct &&\n isProductRecommendable(subLineItem, productWithTags);\n const productLines = getProductLinesForTags(\n subLineItem.product_group_id,\n productTags\n );\n // this variable hides the option, when there is an selected ProductTag that's 'exclusive'\n // keep in mind, the builderPortals choice should always dominate.\n const filteredByExclusiveRule =\n !productLine?.exclusive || isValidOption;\n\n const isVisible =\n filteredByExclusiveRule &&\n (isBuyerSelection || (!isSelectable && isSelected) || isPortalOffer);\n\n return {\n id: product.id,\n subLineItemId: subLineItem.id,\n name: product.name,\n display_name: product.display_name,\n supplier: product.supplier,\n series: product.series,\n description: product.description,\n technical_description: product.technical_description,\n sku: product.sku,\n priceStrategy: productGroup.price_strategy,\n productTags,\n productLines,\n total,\n defaultTotal: PriceCalculator.calculateDefaultPrice(\n subLineItem,\n defaultProductPrice\n ),\n price: get(price, \"price\") || subLineItem.price,\n position: get(price, \"position\", 0),\n excessPrice:\n get(price, \"excess_price\") ||\n get(price, \"price\") ||\n subLineItem.excess_price ||\n subLineItem.price,\n relativePrice: PriceCalculator.calculateRelativePrice(\n price,\n defaultProductPrice\n ),\n isDefault:\n product.id === subLineItem.default_product_id &&\n subLineItem.default_quantity !== 0,\n isSelected,\n isBuyerSelection,\n isActualSelection,\n isVisible,\n isValidOption,\n isValidSelection,\n isAcceptableProduct,\n isRecommendable,\n isOnRequest,\n isQuantityOnRequest,\n images: product.images,\n thumbUrl: product.thumb_url\n };\n });\n\n if (!subLineItem.product_id) {\n const thumbUrl = get(branding, [\"data\", \"default_thumb_url\"]);\n const price = {\n price: subLineItem.price,\n excess_price: subLineItem.excess_price\n };\n const isDefault = !subLineItem.default_product_id;\n const isSelected = !subLineItem.product_id;\n const isBuyerSelection = buyerSelection && !buyerSelection.product_id;\n const isActualSelection =\n status.selectable && buyerSelection ? isBuyerSelection : isSelected;\n const isVisible = true;\n\n options.push({\n id: null,\n description: subLineItem.description,\n supplier: i18n[\"roomBook.lineItems.individualProduct\"],\n series: null,\n name: subLineItem.description,\n total: PriceCalculator.calculatePrice(\n subLineItem,\n price,\n defaultProductPrice\n ),\n defaultTotal: PriceCalculator.calculateDefaultPrice(\n subLineItem,\n defaultProductPrice\n ),\n relativePrice: PriceCalculator.calculateRelativePrice(\n subLineItem,\n defaultProductPrice\n ),\n priceStrategy: subLineItem.price_strategy,\n thumbUrl,\n individual: true,\n images: [\n {\n url: thumbUrl\n }\n ],\n price: price.price,\n excessPrice: price.excess_price,\n isDefault,\n isSelected,\n isVisible,\n isValidSelection: true,\n isValidOption: true,\n isRecommendable: true,\n isAcceptableProduct: true,\n isOnRequest: false,\n isQuantityOnRequest,\n isBuyerSelection,\n isActualSelection,\n productTags: [],\n productLines: []\n });\n }\n\n const defaultMinPrice = min(options.map(o => o.total)) || 0;\n\n options.forEach(o => {\n if (subLineItem.optional) {\n o.relativeTotal = o.total - defaultMinPrice;\n } else {\n o.relativeTotal = o.total;\n }\n });\n\n return sortBy(options, (option, idx) => {\n if (option.isActualSelection) {\n return -4000;\n }\n if (option.isBuyerSelection) {\n return -3000;\n }\n if (option.isSelected) {\n return -2000;\n }\n if (option.isDefault) {\n return -1000;\n }\n return idx;\n });\n };\n }\n);\n\nexport const getProductGroup = (state, subLineItem) => {\n return getProductGroupsById(state)[subLineItem.product_group_id];\n};\n","import { createSelector } from \"reselect\";\nimport {\n get,\n groupBy,\n keyBy,\n takeRightWhile,\n reverse,\n takeWhile,\n min,\n max,\n isNumber\n} from \"lodash\";\n\nimport { getState } from \"../base\";\nimport { getFlatRoomBook, getBuyerSelections } from \"./base\";\nimport { getProductOptions, getProductGroup } from \"./productOptions\";\nimport { getSubLineItemStatus } from \"./status\";\nimport { getSubLineItemDependencies } from \"./productRules\";\n\nimport { getAccount } from \"../account\";\n\n//* *****************************************************************************\nconst applyBaseInfo = (state, raw) => {\n return {\n ...raw,\n lineItemId: raw.line_item_id,\n priceStrategy: raw.price_strategy,\n quantity: raw.quantity,\n defaultQuantity: raw.default_quantity,\n isOptional: raw.optional\n };\n};\n\nconst applyProductGroup = (state, raw) => {\n return {\n productGroup: getProductGroup(state, raw)\n };\n};\n\nconst applyStatus = (state, raw, subLineItem) => {\n return {\n status: getSubLineItemStatus(state)(subLineItem)\n };\n};\n\nconst applyQuantity = (state, raw, subLineItem) => {\n const buyerSelections = getBuyerSelections(state);\n const buyerSelection = buyerSelections[subLineItem.id];\n\n if (buyerSelection && isNumber(buyerSelection.quantity)) {\n return {\n quantity: buyerSelection.quantity,\n quantityBuyerSelection: buyerSelection.quantity\n };\n }\n return {\n quantityBuyerSelection: null\n };\n};\n\nconst applyProductOptions = (state, raw, subLineItem) => {\n const options = getProductOptions(state)(subLineItem);\n return {\n options\n };\n};\n\nconst applyDerivedInfos = (state, raw, subLineItem) => {\n let defactoSelectedOption;\n let hasBuyerSelection;\n let isConfigurable;\n let isDecided;\n let isPriceOnRequest;\n let isProgressed;\n let isRecommendable;\n let isSelectable;\n let isValid;\n let isVisible;\n let selectedOption;\n let thumbUrl;\n let total;\n let totalBase;\n let totalDefault;\n let totalMin;\n let totalRelative;\n let validOptions;\n\n const {\n total: subLineItemTotal,\n options,\n status,\n productGroup\n } = subLineItem;\n const buyerSelectedOption = options.find(option => option.isBuyerSelection);\n const defaultOption = options.find(option => option.isDefault);\n\n validOptions = options.filter(option => option.isValidOption);\n const itemSelectedOption = validOptions.find(o => o.isSelected);\n\n if (!status.selectable) {\n total = subLineItemTotal;\n selectedOption = {\n ...itemSelectedOption,\n isOnRequest: false,\n isQuantityOnRequest: false,\n total\n };\n\n defactoSelectedOption = selectedOption;\n hasBuyerSelection = true;\n isConfigurable = true;\n isDecided = true;\n isPriceOnRequest = false;\n isProgressed = true;\n isRecommendable = true;\n isSelectable = false;\n isValid = true;\n isVisible = true;\n thumbUrl = itemSelectedOption?.thumbUrl;\n totalBase = subLineItemTotal;\n totalDefault = isPriceOnRequest ? 0 : get(defaultOption, \"defaultTotal\", 0);\n totalMin = subLineItemTotal;\n totalRelative = subLineItemTotal;\n validOptions = [selectedOption];\n } else {\n selectedOption = buyerSelectedOption;\n\n const validDefaultOption = !subLineItem.isOptional ? validOptions[0] : null;\n defactoSelectedOption = buyerSelectedOption || validDefaultOption;\n\n const optionsVisible = options.some(option => option.isVisible);\n isPriceOnRequest =\n get(defactoSelectedOption || validOptions[0], \"isOnRequest\", false) ||\n (get(\n defactoSelectedOption || validOptions[0],\n \"isQuantityOnRequest\",\n false\n ) &&\n (get(defactoSelectedOption, \"total\", 0) != 0 ||\n subLineItem.isOptional));\n\n total = isPriceOnRequest ? 0 : get(defactoSelectedOption, \"total\", 0);\n totalBase = isPriceOnRequest\n ? 0\n : min(options.filter(o => o.isDefault).map(o => o.total));\n totalMin = isPriceOnRequest\n ? 0\n : min(options.filter(o => o.isAcceptableProduct).map(o => o.total));\n totalDefault = isPriceOnRequest ? 0 : get(defaultOption, \"defaultTotal\", 0);\n totalRelative = subLineItem.optional ? max([total - totalMin, 0]) : total;\n\n isVisible = optionsVisible && get(productGroup, \"portal_offer\", true);\n hasBuyerSelection = !!buyerSelectedOption;\n thumbUrl = options.find(o => o.isAcceptableProduct)?.thumbUrl;\n isValid = options.every(o => o.isValidSelection);\n isRecommendable = options.every(\n o => !o.isBuyerSelection || o.isRecommendable\n );\n isConfigurable =\n isVisible && options.some(o => o.isAcceptableProduct && o.isVisible);\n isDecided = isValid && (!isConfigurable || !!selectedOption);\n isSelectable = true;\n isProgressed = false;\n }\n\n const productTags = get(selectedOption, \"productTags\", []);\n\n return {\n total,\n totalMin,\n totalBase,\n totalDefault,\n totalRelative,\n isVisible,\n hasBuyerSelection,\n isDecided,\n isValid,\n thumbUrl,\n isConfigurable,\n isProgressed,\n isSelectable,\n isRecommendable,\n isPriceOnRequest,\n productTags,\n defactoSelectedOption,\n validOptions\n };\n};\n\nconst applyAutoDecision = (state, raw, subLineItem) => {\n const account = getAccount(state);\n const enabled = account.isEnabled(\"bp_auto_selection\");\n return {\n isAutoDecidable:\n enabled && !subLineItem.isDecided && subLineItem.validOptions.length === 1\n };\n};\n\nconst MAPPER = [\n applyBaseInfo,\n applyProductGroup,\n applyStatus,\n applyQuantity,\n applyProductOptions,\n applyDerivedInfos,\n applyAutoDecision\n];\n//* *****************************************************************************\n\nexport const getSubLineItems = createSelector(\n [getFlatRoomBook, getState],\n (roomBook, state) => {\n return roomBook.subLineItems.map(raw => {\n return MAPPER.reduce((subLineItem, mapper) => {\n return Object.assign(subLineItem, mapper(state, raw, subLineItem));\n }, {});\n });\n }\n);\n\nexport const getSubLineItemsById = createSelector(\n [getSubLineItems],\n subLineItems => {\n return keyBy(subLineItems, \"id\");\n }\n);\n\nexport const getSubLineItemsByLineItemId = createSelector(\n [getSubLineItems],\n subLineItems => {\n return groupBy(subLineItems, \"lineItemId\");\n }\n);\n\nexport const findSubLineItems = state => {\n return (lineItemId, filterFn = () => true) => {\n return (getSubLineItemsByLineItemId(state)[lineItemId] || []).filter(\n filterFn\n );\n };\n};\n\nexport const findSubLineItem = state => {\n return subLineItemId => {\n return getSubLineItemsById(state)[subLineItemId];\n };\n};\n\nconst truePredicate = () => true;\n\nexport const getPrevSibling = (\n state,\n subLineItem,\n predicate = truePredicate\n) => {\n const siblings =\n getSubLineItemsByLineItemId(state)[subLineItem.lineItemId] || [];\n return reverse(\n takeWhile(siblings, sibling => sibling.id !== subLineItem.id)\n ).filter(predicate)[0];\n};\n\nexport const getNextSibling = (\n state,\n subLineItem,\n predicate = truePredicate\n) => {\n const siblings =\n getSubLineItemsByLineItemId(state)[subLineItem.lineItemId] || [];\n return takeRightWhile(siblings, sibling => {\n return sibling.id !== subLineItem.id;\n }).filter(predicate)[0];\n};\n\nexport const getAffectingSubLineItems = createSelector(\n [getSubLineItemDependencies, getSubLineItemsById],\n (dependencyMap, subLineItems) => {\n return subLineItem => {\n return (dependencyMap[subLineItem.id] || []).map(id => {\n return subLineItems[id];\n });\n };\n }\n);\n\nexport const getSubLineItemForProductLineTag = createSelector(\n [getSubLineItems],\n subLineItems => productLineTag => {\n return subLineItems.find(({ options }) => {\n return options.find(({ productTags }) =>\n productTags.includes(productLineTag)\n );\n });\n }\n);\n","import { object } from \"prop-types\";\n\n/*\nTODO migration plan\n1. replace the \"object\" with a comprehensive shape in your proptypes!\n2. Use DEPRECATED_PageContentShape only when pageContent is passed into children components without actual use\n*/\n\nexport const DEPRECATED_PageContentShape = object;\n\nexport default DEPRECATED_PageContentShape;\n","import { UPDATE_I18N } from \"../constants/appConstants\";\n\nexport const i18n = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_I18N:\n return action.payload;\n default:\n return state;\n }\n};\n","import { UPDATE_LOCALE } from \"../constants/appConstants\";\n\nexport const locale = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_LOCALE:\n return action.payload;\n default:\n return state;\n }\n};\n","// import APM from \"../middlewares/apm\";\nimport { get } from \"lodash\";\nimport * as Sentry from \"@sentry/react\";\nimport { UPDATE_ACCOUNT } from \"../constants/appConstants\";\n\nexport function getAccountId(state) {\n return get(state, \"account.account.id\", undefined);\n}\nexport const account = (state = \"\", action) => {\n let anonymousUser = {};\n switch (action.type) {\n case UPDATE_ACCOUNT:\n if (action.payload && action.payload.user) {\n anonymousUser = {\n group: action.payload.user.group,\n role: action.payload.user.role,\n account_id: action.payload.account.id,\n id: action.payload.user.id,\n email: action.payload.user.email.replace(/^(.).*(@.+)$/, \"$1*$2\")\n };\n }\n Sentry.setUser(anonymousUser);\n // APM.setUserContext(anonymousUser);\n\n return action.payload;\n default:\n return state;\n }\n};\n","import { createSelector } from \"reselect\";\nimport { get, orderBy } from \"lodash\";\nimport Branding from \"./branding\";\n\nconst getBranding = state => state.branding;\n\nexport const getProject = state => get(state, [\"pageContent\", \"project\"], null);\nexport const getProjectStatistics = state =>\n get(state, [\"pageContent\", \"project\", \"statistics\"], null);\nexport const getProjectSlug = (state, props) =>\n get(props, \"projectId\") ||\n get(props, [\"params\", \"projectId\"]) ||\n get(props, [\"router\", \"params\", \"projectId\"]) ||\n get(state, [\"pageContent\", \"project\", \"slug\"], null);\nexport const getProjects = state => get(state, [\"pageContent\", \"projects\"], []);\nexport const getProjectsSorted = state =>\n orderBy(get(state, [\"pageContent\", \"projects\"], []), \"id\");\nexport const getProjectNameById = (state, projectId) =>\n state.pageContent?.projects?.find(project => {\n return project.slug === projectId;\n })?.name;\n\nconst DEFAULT_PROJECT_BRANDING = {};\nexport const getProjectBranding = createSelector(\n [getBranding, getProjectSlug],\n (branding, projectSlug) => {\n return new Branding(get(branding, projectSlug, DEFAULT_PROJECT_BRANDING));\n }\n);\n\nexport const getProjectId = (state, props) => {\n return props.routeParams?.projectId ?? props.params?.projectId;\n};\n\nexport const getProjectMembers = state =>\n get(state, [\"pageContent\", \"members\"], []);\n\nexport const getAllProjectOptions = createSelector([getProjects], projects =>\n projects.map(p => ({ id: p.id, value: p.id, text: p.name }))\n);\n\nexport const getImages = state => get(state, [\"pageContent\", \"images\"], []);\n\nexport const getProjectAcitvityContacts = state =>\n get(state, [\"pageContent\", \"activityContacts\", \"contacts\"], []);\n","import { UPDATE_MESSAGE } from \"shared/constants/appConstants\";\n\nexport const message = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_MESSAGE:\n return action.payload;\n default:\n return state;\n }\n};\n","import { UPDATE_IS_LOADING } from \"../constants/appConstants\";\n\nexport const isLoading = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_IS_LOADING: {\n let loaders = { ...state, ...action.payload };\n Object.keys(loaders).map(key => {\n if (!loaders[key]) {\n delete loaders[key];\n }\n });\n if (JSON.stringify(loaders) === \"{}\") {\n loaders = false;\n }\n return loaders;\n }\n default:\n return state;\n }\n};\n","import { UPDATE_LOGO_PATH } from \"../constants/appConstants\";\n\nexport const logoPath = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_LOGO_PATH:\n return action.payload;\n default:\n return state;\n }\n};\n","import { UPDATE_FILTER } from \"../constants/appConstants\";\nimport localStorage from \"../helpers/localStorage\";\n\nexport const filter = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_FILTER: {\n const newFilter = { ...state, ...action.payload };\n if (!action.transient) {\n localStorage.set(\"filter\", JSON.stringify(newFilter));\n }\n return newFilter;\n }\n default:\n return state;\n }\n};\n","import { UPDATE_DIALOG } from \"../constants/appConstants\";\n\nexport const dialog = (state = \"\", action) => {\n switch (action.type) {\n case UPDATE_DIALOG:\n return { ...state, ...action.payload };\n default:\n return state;\n }\n};\n","const cloudinaryEnv = (state = \"\") => {\n return state;\n};\n\nexport default cloudinaryEnv;\n","import {\n ADD_CONFIGURATOR_SELECTION,\n REMOVE_CONFIGURATOR_SELECTION,\n SET_CONFIGURATOR_SELECTION,\n TOGGLE_CONFIGURATOR_SELECTION\n} from \"../../shared/constants/appConstants\";\n\n/*\n ** State Typings\n * {\n * [subLineItemId]: selectedOptionId\n * }\n */\nconst INIT_STATE = {};\n\nconst configuratorPreviewSelection = (selection = INIT_STATE, action) => {\n const { type, payload } = action;\n if (payload) {\n const { subLineItemId, optionId } = payload;\n switch (type) {\n case TOGGLE_CONFIGURATOR_SELECTION:\n return {\n ...selection,\n [subLineItemId]:\n selection[subLineItemId] === optionId ? null : optionId\n };\n case ADD_CONFIGURATOR_SELECTION:\n return {\n ...selection,\n [subLineItemId]: optionId\n };\n case REMOVE_CONFIGURATOR_SELECTION:\n return {\n ...selection,\n [subLineItemId]: null\n };\n case SET_CONFIGURATOR_SELECTION:\n return payload;\n default:\n return selection;\n }\n }\n\n return selection;\n};\n\nexport default configuratorPreviewSelection;\n","export default class SubLineItemSearchUpdate {\n constructor(state, events) {\n this.state = state;\n this.events = events;\n }\n\n apply() {\n return this.events.reduce((state, event) => {\n switch (event.type) {\n case \"sub_line_item_updated\":\n return this.applyUpdate(state, event.payload);\n case \"sub_line_item_deleted\":\n return this.applyDelete(state, event.payload);\n default:\n return state;\n }\n }, this.state);\n }\n\n applyUpdate(state, new_item) {\n const {\n sub_line_items_search_results: oldSubLineItemsSearchResults = {}\n } = state;\n const { results: oldResults = [] } = oldSubLineItemsSearchResults;\n const results = oldResults.map(item =>\n item.id !== new_item.id ? item : new_item\n );\n return {\n ...state,\n sub_line_items_search_results: {\n ...oldSubLineItemsSearchResults,\n results\n }\n };\n }\n\n applyDelete(state, deleted_item) {\n const {\n sub_line_items_search_results: oldSubLineItemsSearchResults = {}\n } = state;\n const {\n meta: oldMeta = {},\n results: oldResults = []\n } = oldSubLineItemsSearchResults;\n let limit_value = oldMeta.limit_value || 0;\n const results = oldResults.filter(item => {\n const isDeleted = item.id === deleted_item.id;\n if (isDeleted) {\n limit_value--;\n }\n return !isDeleted;\n });\n const total_count = (oldMeta.total_count || 0) - 1;\n return {\n ...state,\n sub_line_items_search_results: {\n ...oldSubLineItemsSearchResults,\n meta: {\n ...oldMeta,\n limit_value,\n total_count\n },\n results\n }\n };\n }\n}\n","import { cloneDeep } from \"lodash\";\n\nconst ROOM_BOOK_META = {\n line_item: {\n parent: \"section\"\n },\n sub_line_item: {\n parent: \"line_item\"\n },\n section: {\n parent: \"parent\"\n }\n};\n\nexport default class RoomBookUpdate {\n constructor(state, events) {\n this.state = state;\n this.events = events;\n }\n\n apply() {\n return this.events.reduce((state, event) => {\n switch (event.type) {\n case \"room_book_updated\":\n return this.applyRoomBookUpdate(state, event);\n case \"section_deleted\":\n return this.applySectionDelete(state, event);\n case \"line_item_created\":\n return this.applyLineItemCreate(state, event);\n case \"line_item_updated\":\n return this.applyUpdate(state, \"line_item\", event);\n case \"line_item_deleted\":\n return this.applyDelete(state, \"line_item\", event);\n case \"line_item_moved\":\n return this.applyMove(state, \"line_item\", event);\n case \"line_item_parent_changed\":\n return this.applyLineItemParentChanged(state, event);\n case \"sub_line_item_created\":\n return this.applySubLineItemCreate(state, event);\n case \"sub_line_item_updated\":\n return this.applyUpdate(state, \"sub_line_item\", event);\n case \"sub_line_item_deleted\":\n return this.applyDelete(state, \"sub_line_item\", event);\n case \"sub_line_item_moved\":\n return this.applyMove(state, \"sub_line_item\", event);\n default:\n return state;\n }\n }, this.state);\n }\n\n applyLineItemCreate(state, event) {\n return this.updateRoomBook(state, \"section\", (section, cb) => {\n if (section.id === event.payload.section_id) {\n section.line_items.push(event.payload);\n cb(section);\n }\n });\n }\n\n applySubLineItemCreate(state, event) {\n return this.updateRoomBook(state, \"line_item\", (lineItem, cb) => {\n if (lineItem.id === event.payload.line_item_id) {\n lineItem.sub_line_items.push(event.payload);\n cb(lineItem);\n }\n });\n }\n\n applyRoomBookUpdate(state, event) {\n return this.updateRoomBook(state, \"room_book\", (roomBook, cb) => {\n cb(event.payload);\n });\n }\n\n applyUpdate(state, entity_type, event) {\n return this.updateRoomBook(state, entity_type, (item, cb) => {\n if (item.id === event.payload.id) {\n cb(event.payload);\n }\n });\n }\n\n applySectionDelete(state, event) {\n return [\"room_book\", \"section\"].reduce((s, parentType) => {\n return this.updateRoomBook(s, parentType, (parent, cb) => {\n parent.sections = parent.sections.filter(item => {\n return item.id !== event.payload.id;\n });\n cb(parent);\n });\n }, state);\n }\n\n applyDelete(state, entity_type, event) {\n const meta = ROOM_BOOK_META[entity_type];\n return this.updateRoomBook(state, meta.parent, (parent, cb) => {\n parent[`${entity_type}s`] = parent[`${entity_type}s`].filter(item => {\n return item.id !== event.payload.id;\n });\n // Must be better!\n cb(parent);\n });\n }\n\n move(array, elementId, newPosition) {\n const item = array.filter(e => e.id === elementId)[0];\n const oldPosition = array.indexOf(item);\n array.splice(oldPosition, 1);\n array.splice(newPosition - 1, 0, item);\n }\n\n applyMove(state, entity_type, event) {\n const meta = ROOM_BOOK_META[entity_type];\n return this.updateRoomBook(state, meta.parent, (parent, cb) => {\n const element = event.payload;\n if (parent.id === element[`${meta.parent}_id`]) {\n this.move(parent[`${entity_type}s`], element.id, element.position);\n cb(parent);\n }\n });\n }\n\n applyLineItemParentChanged(state, event) {\n const {\n payload: { element, newSectionId, oldSectionId }\n } = event;\n return this.updateRoomBook(state, \"section\", (section, cb) => {\n if (section.id === newSectionId) {\n element.section_id = newSectionId;\n section.line_items.push(element);\n\n cb(section);\n }\n if (section.id === oldSectionId) {\n const item = section.line_items.filter(e => e.id === element.id)[0];\n const oldPosition = section.line_items.indexOf(item);\n section.line_items.splice(oldPosition, 1);\n\n cb(section);\n }\n });\n }\n\n touch(path) {\n path.forEach(element => {\n element.updated_at = new Date().toISOString();\n });\n }\n\n updateRoomBook(state, elementType, func) {\n if (elementType == \"room_book\") {\n func(state.room_book, updated => {\n state.room_book = updated;\n });\n return state;\n }\n if (!state.room_book) return state;\n const room_book = cloneDeep(state.room_book);\n\n room_book.sections.forEach((primarySection, idx) => {\n if (elementType === \"section\") {\n func(primarySection, updated => {\n room_book.sections[idx] = updated;\n this.touch([room_book, primarySection]);\n });\n }\n primarySection.sections.forEach((secondarySection, idx) => {\n if (elementType === \"section\") {\n func(secondarySection, updated => {\n primarySection.sections[idx] = updated;\n this.touch([room_book, primarySection, secondarySection]);\n });\n }\n secondarySection.line_items.forEach((lineItem, idx) => {\n if (elementType === \"line_item\") {\n func(lineItem, updated => {\n secondarySection.line_items[idx] = updated;\n this.touch([\n room_book,\n primarySection,\n secondarySection,\n lineItem\n ]);\n });\n }\n lineItem.sub_line_items.forEach((subLineItem, idx) => {\n if (elementType === \"sub_line_item\") {\n func(subLineItem, updated => {\n lineItem.sub_line_items[idx] = updated;\n this.touch([\n room_book,\n primarySection,\n secondarySection,\n lineItem,\n subLineItem\n ]);\n });\n }\n });\n });\n });\n });\n\n return { ...state, room_book: this.recalculate(room_book) };\n }\n\n recalculate(roomBook) {\n let roomBookTotal = 0.0;\n roomBook.sections.forEach((primarySection, idx) => {\n let primarySectionTotal = 0.0;\n primarySection.sections.forEach((secondarySection, idx) => {\n let secondarySectionTotal = 0.0;\n secondarySection.line_items.forEach((lineItem, idx) => {\n let lineItemTotal = 0.0;\n let lineItemTotalBase = -lineItem.replacement_total;\n\n lineItem.sub_line_items.forEach((subLineItem, idx) => {\n lineItem.sub_line_items[idx].position = idx + 1;\n\n if (!lineItem.cancelled) {\n lineItemTotal += lineItem.sub_line_items[idx].total;\n }\n\n if (lineItem.optional) {\n lineItemTotalBase += lineItem.sub_line_items[idx].default_total;\n }\n });\n\n lineItem.buyer_selection_pending = lineItem.sub_line_items.some(\n sli => {\n return sli.buyer_selection_pending;\n }\n );\n\n secondarySection.line_items[idx].position = idx + 1;\n secondarySection.line_items[idx].total =\n lineItemTotal + lineItemTotalBase;\n\n if (\n !lineItem.replaced &&\n (!lineItem.optional || lineItem.activated)\n ) {\n secondarySectionTotal += secondarySection.line_items[idx].total;\n }\n });\n\n secondarySection.position = idx + 1;\n secondarySection.total = secondarySectionTotal;\n primarySectionTotal += secondarySectionTotal;\n });\n\n primarySection.position = idx + 1;\n primarySection.total = primarySectionTotal;\n roomBookTotal += primarySectionTotal;\n });\n roomBook.total = roomBookTotal;\n\n return roomBook;\n }\n}\n","import {\n ADD_PAGE_CONTENT,\n DELETE_PAGE_CONTENT,\n UPDATE_PAGE_CONTENT,\n UPDATE_PAGE_CONTENT_MESSAGE_FORM,\n UPDATE_ROOM_BOOK,\n UPDATE_SUB_LINE_ITEM_SEARCH_RESULT,\n REMOVE_ID_FROM_PAGE_CONTENT\n} from \"shared/constants/appConstants\";\nimport { isObject, mergeWith, cloneDeep } from \"lodash\";\nimport SubLineItemSearchUpdate from \"shared/reducers/pageContent/subLineItemSearchUpdate\";\nimport RoomBookUpdate from \"./pageContent/roomBookUpdate\";\n\nfunction deepConcat(objValue, srcValue) {\n if (Array.isArray(objValue)) {\n return [...srcValue, ...objValue];\n }\n if (isObject(objValue)) {\n return mergeWith(objValue, srcValue, deepConcat);\n }\n}\n\nfunction removeId(state, { property, id }) {\n const oldData = state[property] || [];\n if (!oldData.filter) return state; // if state[property] is object, not an array\n const newData = oldData.filter(object => object.id !== id);\n\n return { ...state, [property]: newData };\n}\n\nexport const pageContent = (state = {}, action) => {\n switch (action.type) {\n case DELETE_PAGE_CONTENT:\n return {};\n\n case UPDATE_PAGE_CONTENT:\n return { ...state, ...action.payload };\n\n case ADD_PAGE_CONTENT:\n return mergeWith(cloneDeep(state), action.payload, deepConcat);\n\n case REMOVE_ID_FROM_PAGE_CONTENT:\n return removeId(state, action.payload);\n\n case UPDATE_ROOM_BOOK:\n return new RoomBookUpdate(state, action.payload).apply();\n\n case UPDATE_SUB_LINE_ITEM_SEARCH_RESULT:\n return new SubLineItemSearchUpdate(state, action.payload).apply();\n\n case UPDATE_PAGE_CONTENT_MESSAGE_FORM:\n return { ...state, messageForm: action.payload || {} };\n\n default:\n return state;\n }\n};\n","import { number, shape, string } from \"prop-types\";\n\nexport const ContractorAssignmentShape = shape({\n id: number,\n contractor_id: number,\n trade: string,\n parent_id: number,\n parent_type: string\n});\n\nexport default ContractorAssignmentShape;\n","import { string, number, shape, bool } from \"prop-types\";\n\nconst PriceCatalogShape = shape({\n id: number,\n name: string,\n deletable: bool,\n external_id: string\n});\n\nexport default PriceCatalogShape;\n","import { number, string, shape } from \"prop-types\";\n\nexport const DesignLineGroupShape = shape({\n id: number,\n name: string,\n title: string,\n description: string,\n severity: string,\n scope: string\n});\n\nexport const DesignLineShape = shape({\n id: number,\n name: string,\n title: string,\n description: string,\n image: string\n});\n","import { shape, string } from \"prop-types\";\n\nconst StyleVariableShape = shape({\n name: string,\n type: string\n});\n\nexport default StyleVariableShape;\n","import {\n bool,\n shape,\n number,\n string,\n oneOfType,\n object,\n array,\n objectOf\n} from \"prop-types\";\n\nconst ProjectWithContentShape = shape({\n id: oneOfType([string, number]),\n name: string,\n content: shape({\n styles: string,\n additional_html: string,\n configurators: oneOfType([string, object]),\n glencoeURL: string,\n product_mapping: oneOfType([string, object]),\n product_lines: oneOfType([string, array]),\n sections: oneOfType([string, array]),\n logo_medium_url: string,\n logo_large_url: string,\n banner_image_url: string,\n section_combos: oneOfType([string, array])\n }),\n features: objectOf(bool)\n});\n\nexport default ProjectWithContentShape;\n","import toggleDialogCreator from \"shared/helpers/toggleDialogCreator\";\nimport { get } from \"lodash\";\n\nexport const COMPLETION_DIALOG = \"COMPLETION_DIALOG\";\n\nexport const getCompletionDialogModel = state => {\n return get(state, [\n \"dialog\",\n \"buyer_portal\",\n COMPLETION_DIALOG,\n COMPLETION_DIALOG\n ]);\n};\n\nexport const toggleCompletionDialog = dispatch => {\n const toggle = toggleDialogCreator(\n dispatch,\n COMPLETION_DIALOG,\n \"buyer_portal\"\n );\n return show => {\n toggle(COMPLETION_DIALOG, show);\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar ImagePreviewOverlay = function ImagePreviewOverlay(props) {\n var previewWidth = props.previewWidth,\n previewHeight = props.previewHeight,\n previewPosLeft = props.previewPosLeft,\n previewPosRight = props.previewPosRight,\n previewPosTop = props.previewPosTop,\n previewPosBottom = props.previewPosBottom,\n imageWidth = props.imageWidth,\n imageHeight = props.imageHeight,\n overlayOpacity = props.overlayOpacity,\n overlayBoxOpacity = props.overlayBoxOpacity,\n active = props.active,\n transitionSpeed = props.transitionSpeed,\n overlayBackgroundColor = props.overlayBackgroundColor,\n overlayBoxColor = props.overlayBoxColor,\n overlayBoxImage = props.overlayBoxImage,\n overlayBoxImageSize = props.overlayBoxImageSize;\n var opacity = active ? overlayOpacity : 0;\n var boxOpacity = active ? overlayBoxOpacity : 0;\n return /*#__PURE__*/_react[\"default\"].createElement(_react[\"default\"].Fragment, null, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _styles[\"default\"].getOverlayCenterStyle(previewWidth, previewHeight, previewPosLeft, previewPosTop, boxOpacity, transitionSpeed, overlayBoxColor, overlayBoxImage, overlayBoxImageSize)\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _styles[\"default\"].getOverlayTopStyle(imageWidth, previewPosTop, opacity, transitionSpeed, overlayBackgroundColor)\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _styles[\"default\"].getOverlayLeftStyle(previewPosLeft, previewHeight, previewPosTop, opacity, transitionSpeed, overlayBackgroundColor)\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _styles[\"default\"].getOverlayRightStyle(imageWidth - previewPosRight, previewHeight, previewPosTop, opacity, transitionSpeed, overlayBackgroundColor)\n }), /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: _styles[\"default\"].getOverlayBottomStyle(imageWidth, imageHeight - previewPosBottom, previewPosBottom, opacity, transitionSpeed, overlayBackgroundColor)\n }));\n};\n\nImagePreviewOverlay.defaultProps = {\n overlayOpacity: 0.5,\n overlayBoxOpacity: 0.8,\n transitionSpeed: 0.4,\n overlayBackgroundColor: \"#000\",\n overlayBoxColor: \"#fff\",\n overlayBoxImage: \"\",\n overlayBoxImageSize: \"\"\n};\nvar _default = ImagePreviewOverlay;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.MagnifierContext = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactInputPosition = require(\"react-input-position\");\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\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\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar MagnifierContext = /*#__PURE__*/_react[\"default\"].createContext();\n\nexports.MagnifierContext = MagnifierContext;\n\nvar MagnifierContainer = /*#__PURE__*/function (_Component) {\n _inherits(MagnifierContainer, _Component);\n\n var _super = _createSuper(MagnifierContainer);\n\n function MagnifierContainer() {\n var _this;\n\n _classCallCheck(this, MagnifierContainer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n inputPositionState: _reactInputPosition.defaultState\n });\n\n _defineProperty(_assertThisInitialized(_this), \"zoomContainerRef\", /*#__PURE__*/_react[\"default\"].createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"zoomImageRef\", /*#__PURE__*/_react[\"default\"].createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"zoomImageDimensions\", {\n width: 0,\n height: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getZoomContainerDimensions\", function () {\n if (!_this.zoomContainerRef.current) {\n return {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n }\n\n var _this$zoomContainerRe = _this.zoomContainerRef.current.getBoundingClientRect(),\n width = _this$zoomContainerRe.width,\n height = _this$zoomContainerRe.height,\n left = _this$zoomContainerRe.left,\n right = _this$zoomContainerRe.right,\n top = _this$zoomContainerRe.top,\n bottom = _this$zoomContainerRe.bottom;\n\n return {\n width: width,\n height: height,\n left: left,\n right: right,\n top: top,\n bottom: bottom\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onUpdate\", function (changes) {\n _this.setState({\n inputPositionState: changes\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onZoomImageLoad\", function (e) {\n var rect = e.target.getBoundingClientRect();\n _this.zoomImageDimensions = {\n width: rect.width,\n height: rect.height\n };\n });\n\n return _this;\n }\n\n _createClass(MagnifierContainer, [{\n key: \"getZoomImageDimensions\",\n value: function getZoomImageDimensions() {\n if (!this.zoomImageDimensions.width && this.zoomImageRef.current) {\n var rect = this.zoomImageRef.current.getBoundingClientRect();\n this.zoomImageDimensions = {\n width: rect.width,\n height: rect.height\n };\n }\n\n return this.zoomImageDimensions;\n }\n }, {\n key: \"getContextValue\",\n value: function getContextValue() {\n return _objectSpread({\n stateOverride: this.state.inputPositionState,\n isActive: this.state.inputPositionState.active,\n onUpdate: this.onUpdate,\n zoomImageDimensions: this.zoomImageDimensions,\n zoomRef: this.zoomContainerRef,\n zoomImageRef: this.zoomImageRef,\n onZoomImageLoad: this.onZoomImageLoad\n }, this.calculatePositions());\n }\n }, {\n key: \"calculatePositions\",\n value: function calculatePositions() {\n var _this$state$inputPosi = this.state.inputPositionState,\n elementDimensions = _this$state$inputPosi.elementDimensions,\n itemPosition = _this$state$inputPosi.itemPosition;\n var zoomContainerDimensions = this.getZoomContainerDimensions();\n var zoomImageDimensions = this.getZoomImageDimensions();\n var inPlace = false;\n var _this$props = this.props,\n autoInPlace = _this$props.autoInPlace,\n inPlaceMinBreakpoint = _this$props.inPlaceMinBreakpoint;\n\n if (autoInPlace || inPlaceMinBreakpoint) {\n try {\n var left = zoomContainerDimensions.left,\n right = zoomContainerDimensions.right;\n var windowWidth = window.innerWidth;\n\n if (windowWidth < inPlaceMinBreakpoint || left < 0 || right > windowWidth) {\n inPlace = true;\n }\n } catch (e) {}\n }\n\n var smallImageSize = {\n width: elementDimensions.width,\n height: elementDimensions.height\n };\n var previewSize = {\n width: Math.floor(smallImageSize.width * (zoomContainerDimensions.width / zoomImageDimensions.width)),\n height: Math.floor(smallImageSize.height * (zoomContainerDimensions.height / zoomImageDimensions.height))\n };\n var position = {\n x: 0,\n y: 0\n };\n\n var itemPositionAdj = _objectSpread({}, itemPosition);\n\n var previewOffset = {\n x: inPlace ? 0 : previewSize.width / 2,\n y: inPlace ? 0 : previewSize.height / 2\n };\n itemPositionAdj.x = Math.max(previewOffset.x, itemPositionAdj.x);\n itemPositionAdj.x = Math.min(smallImageSize.width - previewOffset.x, itemPositionAdj.x);\n itemPositionAdj.y = Math.max(previewOffset.y, itemPositionAdj.y);\n itemPositionAdj.y = Math.min(smallImageSize.height - previewOffset.y, itemPositionAdj.y);\n position = _objectSpread({}, itemPositionAdj);\n var zoomContainerSize = inPlace ? smallImageSize : zoomContainerDimensions;\n position.x = _utils[\"default\"].convertRange(previewOffset.x, smallImageSize.width - previewOffset.x, zoomImageDimensions.width * -1 + zoomContainerSize.width, 0, position.x);\n position.y = _utils[\"default\"].convertRange(previewOffset.y, smallImageSize.height - previewOffset.y, zoomImageDimensions.height * -1 + zoomContainerSize.height, 0, position.y);\n position.x = _utils[\"default\"].invertNumber(zoomImageDimensions.width * -1 + zoomContainerSize.width, 0, position.x);\n position.y = _utils[\"default\"].invertNumber(zoomImageDimensions.height * -1 + zoomContainerSize.height, 0, position.y);\n previewSize.left = Math.floor(itemPositionAdj.x - previewOffset.x) || 0;\n previewSize.right = Math.floor(itemPositionAdj.x + previewOffset.x) || 0;\n previewSize.top = Math.floor(itemPositionAdj.y - previewOffset.y) || 0;\n previewSize.bottom = Math.floor(itemPositionAdj.y + previewOffset.y) || 0;\n return {\n position: position,\n smallImageSize: smallImageSize,\n previewSize: previewSize,\n zoomContainerDimensions: zoomContainerDimensions,\n inPlace: inPlace\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n style = _this$props2.style,\n className = _this$props2.className;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n style: style,\n className: className\n }, /*#__PURE__*/_react[\"default\"].createElement(MagnifierContext.Provider, {\n value: this.getContextValue()\n }, this.props.children));\n }\n }]);\n\n return MagnifierContainer;\n}(_react.Component);\n\n_defineProperty(MagnifierContainer, \"propTypes\", {\n className: _propTypes[\"default\"].string,\n style: _propTypes[\"default\"].object,\n autoInPlace: _propTypes[\"default\"].bool,\n inPlaceMinBreakpoint: _propTypes[\"default\"].number\n});\n\n_defineProperty(MagnifierContainer, \"defaultProps\", {\n inPlaceMinBreakpoint: 0\n});\n\nvar _default = MagnifierContainer;\nexports[\"default\"] = _default;","import { createSelector } from \"reselect\";\nimport moment from \"moment\";\nimport { get, sortBy } from \"lodash\";\n\nimport { getPageContent } from \"shared/selectors\";\n\nconst getDueMessage = deadline => {\n if (deadline.due_in > 0) {\n return `Fällig in ${deadline.due_in} Tagen.`;\n }\n if (deadline.due_in < 0) {\n return `Seit ${Math.abs(deadline.due_in)} Tagen überfällig.`;\n }\n return \"Heute fällig\";\n};\n\nconst getIcon = deadline => {\n if (deadline.completed) {\n return {\n name: \"check circle outline\",\n color: \"green\",\n title: \"Erledigt\"\n };\n }\n if (deadline.due_in > 7) {\n return {\n name: \"circle outline\",\n color: null,\n title: getDueMessage(deadline)\n };\n }\n if (deadline.due_in >= 0) {\n return {\n name: \"circle\",\n color: \"orange\",\n title: getDueMessage(deadline)\n };\n }\n return {\n name: \"circle\",\n color: \"red\",\n title: getDueMessage(deadline)\n };\n};\n\nexport const getDeadlines = createSelector([getPageContent], pageContent => {\n const dls = get(pageContent, [\"deadlines\", \"unit\", \"deadlines\"], [])\n .filter(deadline => {\n return deadline.scheduled_for === \"buyer\";\n })\n .map(deadline => ({\n title: deadline.title,\n description: deadline.description,\n due_in: deadline.due_in,\n expires_at: moment(deadline.expires_at),\n completed: deadline.completed,\n icon: getIcon(deadline)\n }));\n\n return sortBy(dls, deadline => {\n return deadline.due_in;\n });\n});\n\nexport const getDeadlineStatistics = createSelector(\n [getDeadlines],\n deadlines => {\n const base = {\n close: 0,\n overdue: 0\n };\n return deadlines.reduce((accu, deadline) => {\n if (deadline.due_in < 7 && deadline.due_in >= 0) {\n accu.close += 1;\n }\n if (deadline.due_in < 0) {\n accu.overdue += 1;\n }\n return accu;\n }, base);\n }\n);\n\nexport const getDeadlinesCount = createSelector([getDeadlines], deadlines => {\n return deadlines.length;\n});\n","import React from \"react\";\nimport { Button, Card, Icon, Image } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport DOMPurify from \"dompurify\";\nimport { bool, func } from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { ProductLineTagDescriptionShape } from \"../../shapes/productLine.shape\";\nimport SubLineItemPicker from \"../roomBook/pickers/SubLineItemPicker\";\nimport { SubLineItemShape } from \"../configurator/roomBook.shape\";\nimport { getActiveProductTag } from \"../../selectors/unit/productLines\";\nimport { getSubLineItemForProductLineTag } from \"../../selectors/unit/subLineItems\";\nimport { ProductOptionShape } from \"../../shapes\";\n\nfunction ProductTagModalCard({\n tagDescription,\n subLineItem,\n isActive,\n productOption,\n onSelect\n}) {\n const {\n id: tagDescriptionId,\n images,\n displayName,\n description: unsafeHtmlDescription\n } = tagDescription;\n\n const handleProductLineSelect = selectProductOption => {\n return () => {\n if (isActive) {\n onSelect(tagDescriptionId);\n } else {\n selectProductOption(productOption).then(apiResponse => {\n if (apiResponse !== undefined) onSelect(tagDescriptionId);\n });\n }\n };\n };\n\n const selectedString = (\n <>\n  (\n \n )\n \n );\n\n if (!(subLineItem && productOption)) return <>;\n return (\n \n {({ select: selectProductOption, loadingId }) => {\n return (\n \n \n \n \n {displayName}\n {isActive && selectedString}\n \n \n {/* We sanitize the value */}\n {/* eslint-disable react/no-danger */}\n \n {/* eslint-enable react/no-danger */}\n \n \n \n \n \n \n \n \n \n );\n }}\n \n );\n}\nProductTagModalCard.propTypes = {\n tagDescription: ProductLineTagDescriptionShape.isRequired,\n subLineItem: SubLineItemShape,\n isActive: bool.isRequired,\n onSelect: func,\n productOption: ProductOptionShape\n};\n\nProductTagModalCard.defaultProps = {\n subLineItem: undefined,\n productOption: undefined,\n onSelect: () => {}\n};\n\nconst mapStateToProps = (state, props) => {\n const tagId = props.tagDescription.id;\n const activeProductTag = getActiveProductTag(state, props);\n const isActive = activeProductTag === tagId;\n const subLineItem = getSubLineItemForProductLineTag(state)(tagId);\n if (!subLineItem) {\n // give a hint why no ProductCard is displayed\n // eslint-disable-next-line no-console\n console.warn(`Could not find any matching subLineItem for tag ${tagId}`);\n }\n\n const productOption = subLineItem?.options.find(({ productTags }) =>\n productTags.includes(tagId)\n );\n\n return { isActive, subLineItem, productOption };\n};\n\nexport default connect(mapStateToProps)(ProductTagModalCard);\n","import { Card, Container, Divider, Header } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport React from \"react\";\nimport { func } from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { ProductLineShape } from \"../../shapes/productLine.shape\";\nimport ProductTagModalCard from \"./productTagModalCard\";\nimport { getProductLine } from \"../../selectors/unit/productLines\";\nimport { getUnitPath } from \"../../selectors/unit\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nfunction ProductLinePicker({ productLine, onSelect }) {\n return (\n \n \n
    \n \n
    \n
    \n
    \n );\n}\n\nProductLinePicker.propTypes = {\n productLine: ProductLineShape,\n onSelect: func\n};\nProductLinePicker.defaultProps = {\n productLine: undefined,\n onSelect: undefined\n};\n\nconst mapStateToProps = (state, props) => {\n const productLine = getProductLine(state, props);\n const unitPath = getUnitPath(props);\n const onSelect = props.onSelect\n ? props.onSelect\n : () => {\n props.router.push(unitPath);\n };\n\n return {\n productLine,\n onSelect\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(ProductLinePicker));\n","import { createSelector } from \"reselect\";\nimport { get, keyBy } from \"lodash\";\n\nimport Account from \"../models/account\";\nimport { getAccountData, getI18N, getPageContent } from \"./base\";\n\nexport const getSalutations = [\n \"mr\",\n \"mrs\",\n \"mr+mrs\",\n \"family\",\n \"spouses\",\n \"other\"\n];\nexport const getTitles = [\"dr\", \"prof_dr\", \"dipl_ing\"];\n\nexport const getAccount = createSelector(\n [getAccountData, getI18N, getPageContent],\n (accountData, i18n, pageContent) =>\n new Account(accountData, i18n, pageContent)\n);\n\nexport const getUserToken = createSelector([getAccount], account =>\n get(account, [\"data\", \"auth_token\"], \"\")\n);\n\nexport const getTrades = createSelector([getAccount], account =>\n account.getTrades()\n);\n\nexport const getFormattedTrades = createSelector([getTrades], trades =>\n trades.map(trade => {\n return {\n key: trade.id,\n value: trade.id,\n text: trade.label\n };\n })\n);\n\nexport const getTradesDictionary = createSelector([getAccount], account =>\n account.getTradesDictionary()\n);\n\nexport const getLineItemLifeCycle = createSelector([getAccount], account =>\n account.getLineItemLifeCycle()\n);\n\nexport const getProcessDefinitions = createSelector([getAccount], account =>\n account.getProcessDefinitions()\n);\n\nexport const getFeatureToggles = createSelector([getAccount], account =>\n account.getFeatureToggles()\n);\n\nexport const getDocumentTypes = createSelector([getAccount], account =>\n account.getDocumentTypes()\n);\n\nexport const getProjectsConfig = createSelector([getAccountData], data =>\n keyBy(get(data, [\"account\", \"projects\"], []), \"slug\")\n);\n\nexport const getProjectConfig = (state, projectId) => {\n return getProjectsConfig(state)[projectId];\n};\n\nexport const getAccountProjects = state => {\n return get(state, [\"account\", \"account\", \"projects\"], []);\n};\n\nexport const getPageContentAccount = state => {\n return get(state, \"pageContent.account\", {});\n};\n\nexport const getDeletableTypes = state => {\n return get(state, [\"pageContent\", \"deletable_types\"], []);\n};\n\nexport const getUsers = state => {\n return get(state, [\"pageContent\", \"users\"], []);\n};\n\nexport const getAccountMemberships = createSelector(\n [getPageContent],\n pageContent => get(pageContent, \"account_memberships\", [])\n);\n","import apiRequest from \"shared/network/apiRequest\";\nimport Resources from \"shared/actions/resourcesActions\";\nimport Resource from \"shared/actions/resourceActions\";\nimport { BaseSubLineItemResource } from \"shared/actions/roomBookActions\";\nimport { isEmpty } from \"lodash\";\n\nexport function buyerSelectionToResourceValues(buyerSelections) {\n const values = {};\n Object.entries(buyerSelections).forEach(([key, productIdOrObject]) => {\n if (productIdOrObject === \"_destroy\") {\n values[key] = \"_destroy\";\n } else if (\n productIdOrObject.quantity !== undefined ||\n productIdOrObject.product_id !== undefined\n ) {\n values[key] = productIdOrObject;\n } else {\n values[key] = { product_id: productIdOrObject };\n }\n });\n return values;\n}\nexport class RoomBooksResource extends Resources {\n constructor(dispatch) {\n super(dispatch, \"unit\", `/bp/api/v1/room_books`);\n }\n}\n\nexport class ProductLineResource extends Resource {\n constructor(dispatch, unitId) {\n super(dispatch, \"unit\", `/bp/api/v1/units/${unitId}/product_line`);\n }\n\n select(productLine) {\n const payload = {\n product_line: {\n tag: productLine\n }\n };\n return apiRequest\n .patch(this.url, this.dispatch, payload)\n .then(this.propagateUpdate.bind(this));\n }\n}\n\nexport class SubLineItemResource extends BaseSubLineItemResource {\n constructor(dispatch, unitId) {\n super(dispatch, \"line_item\", `/bp/api/v1/units/${unitId}`);\n\n this.refreshPageContentAfterCommit = true;\n }\n\n selectProduct(lineItemId, product) {\n return this.selectProducts({ [lineItemId]: product.id });\n }\n\n selectProducts(buyerSelections) {\n const values = buyerSelectionToResourceValues(buyerSelections);\n\n return this.selectProductsAndQuantities(values);\n }\n\n deselectProducts(lineItemIds) {\n return this.selectProducts(\n lineItemIds.reduce((a, id) => {\n return { ...a, [id]: \"_destroy\" };\n }, {})\n );\n }\n\n deselectProduct(lineItemId) {\n return this.deselectProducts([lineItemId]);\n }\n\n selectProductsAndQuantities = buyer_selections => {\n if (isEmpty(buyer_selections)) {\n return Promise.resolve();\n }\n const url = `${this.url}/buyer_selections`;\n const payload = {\n buyer_selections\n };\n return apiRequest\n .patch(url, this.dispatch, payload)\n .then(this.propagateUpdate.bind(this));\n };\n}\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Button } from \"semantic-ui-react\";\nimport SectionMenu from \"shared/components/unit/SectionMenu\";\nimport Configurator from \"shared/components/configurator/Configurator\";\nimport LineItemList from \"./LineItemList\";\nimport CatalogPage from \"./CatalogPage\";\n\nimport \"./sectionPage.scss\";\n\nclass SectionPage extends React.Component {\n static propTypes = {\n i18n: PropTypes.object,\n user: PropTypes.object,\n actions: PropTypes.object,\n pageName: PropTypes.string,\n unitPath: PropTypes.string\n };\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { section } = this.props;\n\n return (\n
    \n \n {this.renderConfigurator(section)}\n {(section.isRoot && this.renderSectionMenu()) ||\n this.renderLineItems(section)}\n \n
    \n );\n }\n\n renderSectionMenu() {\n const { unitPath } = this.props;\n return ;\n }\n\n renderLineItems(section) {\n if (section) {\n return (\n
    \n \n
    \n );\n }\n }\n\n renderConfigurator(section) {\n if (section.configuratorId) {\n return (\n
    \n }\n />\n
    \n );\n }\n }\n}\n\nexport default SectionPage;\n","import { connect } from \"react-redux\";\n\nimport SectionPage from \"shared/components/roomBook/SectionPage\";\nimport { getUnit, getUnitPath, findSection } from \"shared/selectors/unit\";\n\n// Which part of the Redux global state does our component want to receive as props?\nconst mapStateToProps = (state, props) => {\n const { i18n } = state;\n const { sectionId } = props.params;\n const unitPath = getUnitPath(props);\n const unit = getUnit(state);\n const section = findSection(state)(sectionId);\n const parentSection = findSection(state)(section.parentId);\n\n return {\n i18n,\n section,\n parentSection,\n unitPath,\n unit,\n isReady: true\n };\n};\n\nexport default connect(mapStateToProps)(SectionPage);\n","import React from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport PropTypes, { bool, oneOf, object, shape, func } from \"prop-types\";\nimport { FormattedList, FormattedMessage } from \"react-intl\";\nimport { If } from \"shared/components/elements/Conditions\";\nimport { get, uniq, keyBy } from \"lodash\";\nimport { Header, Label, Grid, Loader } from \"semantic-ui-react\";\nimport FeatureToggleActive from \"shared/components/elements/FeatureToggleActive\";\nimport { SubLineItemShape } from \"shared/components/configurator/roomBook.shape\";\nimport { ProductShape } from \"shared/shapes/product.shape\";\nimport { getAccount, getAllDesignLines } from \"../../../shared/selectors\";\nimport { getTagNames } from \"../../helpers/getTagNames\";\n\nimport \"./productInfoItem.scss\";\n\nconst ProductInfoItem = ({\n product,\n renderSku,\n mode,\n style,\n standardSelection,\n account,\n hidePrice,\n model,\n renderPrice,\n buyerPortalRenderSku\n}) => {\n const approvedSelection =\n model.selection_is_confirmed && model.product_id === product.id;\n const buyerSelection = model.buyer_selection?.product_id === product.id;\n const productStatus = [];\n const selectionStatusText = [];\n const designLines = keyBy(useSelector(getAllDesignLines), \"id\");\n\n if (standardSelection) {\n productStatus.push(\"product-status-default\");\n selectionStatusText.push(\n \n );\n }\n if (buyerSelection) {\n productStatus.push(\"product-status-buyer\");\n selectionStatusText.push(\n \n );\n }\n if (approvedSelection) {\n productStatus.push(\"product-status-approved\");\n selectionStatusText.push(\n \n );\n }\n let taxonomies;\n let renderTagNames;\n let renderDesignLineNames;\n let productTagNames;\n let productGroupTags;\n let combinedTags;\n\n const renderSelectionStatusText = () => (\n

    \n ()\n

    \n );\n\n switch (mode) {\n case \"compact\":\n return (\n \n {product.name}\n {product.supplier && `, ${product.supplier}, ${product.series}`}\n \n );\n case \"reverse\":\n return (\n \n {product.supplier && (\n \n {product.supplier}, {product.series}\n \n )}\n {!product.supplier && (\n \n {product.name}\n \n )}\n {product.supplier && (\n \n \n {product.name}\n {renderSku && product.supplier && `, ${product.sku}`}\n \n \n )}\n {selectionStatusText.length > 0 && renderSelectionStatusText()}\n
    \n );\n case \"detailed-reverse\": {\n taxonomies = get(account, \"data.account.config.taxonomies\");\n productTagNames = getTagNames(product.product_tags, taxonomies);\n productGroupTags = getTagNames(product.group.product_tags, taxonomies);\n combinedTags = uniq([...productTagNames, ...productGroupTags]);\n renderTagNames = () =>\n combinedTags.map(tag => (\n \n ));\n\n renderDesignLineNames = () => {\n if (\n !Object.keys(designLines).length &&\n product.group.design_line_ids.length > 0\n )\n return ;\n\n return product.group.design_line_ids.map(dline => (\n \n ));\n };\n\n return (\n \n \n \n
    \n
    \n {product.supplier && (\n \n {product.supplier}, {product.series}\n \n )}\n {!product.supplier && (\n \n {product.name}\n \n )}\n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n {!hidePrice && model && renderPrice(model, product, hidePrice)}\n \n
    \n \n \n
    \n {product.supplier && (\n \n \n {product.name}\n {renderSku && product.supplier && `, ${product.sku}`}\n \n \n )}\n {selectionStatusText.length > 0 && renderSelectionStatusText()}\n
    \n
    \n \n \n
    \n {renderTagNames()}\n
    \n
    \n \n
    \n {renderDesignLineNames()}\n
    \n
    \n
    \n
    \n \n );\n }\n case \"bp_card\":\n return (\n
    \n \n {product.supplier && (\n {product.supplier}\n )}\n {product.supplier && -}\n {product.series && (\n {product.series}\n )}\n {buyerPortalRenderSku && (\n
    {product.sku}
    \n )}\n
    \n \n {product.name}\n \n
    \n );\n default:\n return (\n \n {product.supplier && (\n \n
    \n {product.supplier}, {product.series}\n
    \n
    \n )}\n \n {product.name}\n {renderSku && product.supplier && `, ${product.sku}`}\n \n \n );\n }\n};\n\nProductInfoItem.propTypes = {\n product: ProductShape.isRequired,\n renderSku: PropTypes.bool,\n renderPrice: func,\n buyerPortalRenderSku: bool,\n mode: oneOf([\"compact\", \"reverse\", \"detailed-reverse\", \"bp_card\", \"default\"]),\n style: shape({\n object\n }),\n standardSelection: bool,\n account: shape({\n object\n }).isRequired,\n hidePrice: bool,\n model: SubLineItemShape\n};\n\nProductInfoItem.defaultProps = {\n mode: \"default\",\n renderPrice: () => {},\n hidePrice: false,\n standardSelection: false,\n style: {},\n model: {},\n renderSku: false,\n buyerPortalRenderSku: false\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n renderSku:\n ownProps.renderSku === undefined\n ? getAccount(state).isEnabled(\"product_option_render_sku\")\n : ownProps.renderSku,\n buyerPortalRenderSku:\n ownProps.buyerPortalRenderSku === undefined\n ? getAccount(state).isEnabled(\"bp_render_sku\")\n : ownProps.buyerPortalRenderSku,\n account: getAccount(state)\n };\n};\n\nexport default connect(mapStateToProps)(ProductInfoItem);\n","import { createSelector } from \"reselect\";\nimport { get, keyBy, groupBy } from \"lodash\";\n\nimport { getState } from \"../base\";\nimport { getFlatRoomBook } from \"./base\";\nimport { findLineItems } from \"./lineItems\";\nimport { getProjectBranding } from \"../project\";\n\nconst getSectionCompletion = createSelector([getState], state => {\n return get(state, [\"pageContent\", \"sectionCompleted\"], {});\n});\n\nexport const getSections = createSelector(\n [getFlatRoomBook, getProjectBranding, getState, getSectionCompletion],\n (roomBook, branding, state, completion) => {\n const subSectionsBySection = groupBy(roomBook.subSections, \"section_id\");\n return roomBook.sections.reduce((accu, section) => {\n const subSections = subSectionsBySection[section.id] || [];\n let sectionTotal = 0;\n let subSectionCount = 0;\n let isSectionDecided = true;\n let isSectionValid = true;\n let isSectionConfigurable = false;\n let isSectionPriceOnRequest = false;\n\n subSections.forEach(subSection => {\n const subSectionVisible = branding.isVisible([section, subSection]);\n const subSectionImage = branding.getImageUrl([section, subSection]);\n const configuratorId = branding.getConfiguratorId([\n section,\n subSection\n ]);\n const selector = branding.getSelector([section, subSection]);\n\n const lineItems = findLineItems(state)(subSection.id);\n\n let lineItemCount = 0;\n let subSectionTotal = 0;\n let isValid = true;\n let isConfigurable = false;\n let isPriceOnRequest = false;\n\n lineItems.forEach(lineItem => {\n if (lineItem.isVisible) {\n lineItemCount += 1;\n isValid = isValid && lineItem.isValid;\n isConfigurable = isConfigurable || lineItem.isConfigurable;\n\n if (lineItem.isActivated) {\n isPriceOnRequest = isPriceOnRequest || lineItem.isPriceOnRequest;\n }\n\n if (!lineItem.isCancelled && !lineItem.isReplaced) {\n subSectionTotal += lineItem.total;\n }\n }\n });\n\n const isDecided = lineItems.every(li => {\n if (!li.isVisible) {\n return true;\n }\n if (li.isReplacement && !li.isActivated) {\n return true;\n }\n if (li.isDecided) {\n return true;\n }\n return li.isOptional && !!completion[subSection.id];\n });\n const isMandatoryDisplay = lineItems.every(li => li.isMandatoryDisplay);\n\n accu.push({\n id: subSection.id,\n parentId: section.id,\n title: subSection.title,\n image: subSectionImage,\n imageClass: \"sectionImage\",\n total: subSectionTotal,\n isVisible: subSectionVisible,\n hasChildren: lineItemCount > 0,\n isRoot: false,\n isDecided,\n isValid,\n isConfigurable,\n isMandatoryDisplay,\n isPriceOnRequest,\n configuratorId,\n selector,\n position: subSection.position\n });\n\n if (subSectionVisible) {\n sectionTotal += subSectionTotal;\n subSectionCount += 1;\n isSectionDecided = isSectionDecided && isDecided;\n isSectionValid = isSectionValid && isValid;\n isSectionConfigurable = isSectionConfigurable || isConfigurable;\n isSectionPriceOnRequest = isSectionPriceOnRequest || isPriceOnRequest;\n }\n });\n\n const sectionVisible = branding.isVisible([section]);\n const sectionImage = branding.getImageUrl([section]);\n const sectionGroup = branding.getGroup([section]);\n const configuratorId = branding.getConfiguratorId([section]);\n const selector = branding.getSelector([section]);\n\n const isMandatoryDisplay = subSections.every(sS =>\n sS.line_items.every(li => li.display_mode === \"mandatory\")\n );\n\n accu.push({\n id: section.id,\n title: section.title,\n image: sectionImage,\n imageClass: \"sectionImage\",\n group: sectionGroup,\n total: sectionTotal,\n isVisible: sectionVisible,\n hasChildren: subSectionCount > 0,\n isRoot: true,\n isDecided: isSectionDecided,\n isMandatoryDisplay,\n isValid: isSectionValid,\n isConfigurable: isSectionConfigurable,\n isPriceOnRequest: isSectionPriceOnRequest,\n configuratorId,\n selector,\n position: section.position\n });\n\n return accu;\n }, []);\n }\n);\n\nconst getSectionsById = createSelector([getSections], sections => {\n return keyBy(sections, \"id\");\n});\n\nconst getSectionsByParentId = createSelector([getSections], sections => {\n return groupBy(sections, \"parentId\");\n});\n\nexport const getRootSections = createSelector([getSections], sections => {\n return sections.filter(s => s.isRoot);\n});\n\nexport const findSection = createSelector([getSectionsById], sectionsById => {\n return sectionId => {\n return sectionsById[sectionId];\n };\n});\n\nexport const findSubSections = (state, sectionId) => {\n return getSectionsByParentId(state)[sectionId] || [];\n};\n\nconst getPageContentSections = createSelector([getState], state => {\n return get(state, [\"pageContent\", \"sections\"], {});\n});\n\nexport const getPageContentSectionsById = createSelector(\n [getPageContentSections],\n sections => {\n return keyBy(sections, \"id\");\n }\n);\n","import scrollToElement from \"scroll-to-element\";\n\nexport const scrollTo = selector => {\n setTimeout(() => {\n const element = window.document.querySelector(selector);\n scrollToElement(element, {\n offset: -10,\n ease: \"out-circ\",\n duration: 2000\n });\n }, 50);\n};\n\nexport const handleScrollTop = (offset = -75) => {\n const element = window.document.querySelector('[data-component=\"pageBody\"]');\n window.scrollTo(0, element.offsetTop + offset);\n};\n\nexport const jumpTo = selector => {\n const element = window.document.querySelector(selector);\n window.requestAnimationFrame(() => {\n return scrollToElement(element, {\n offset: -10,\n ease: \"out-circ\",\n duration: 50\n });\n });\n};\n\nexport const jumpToElement = selector => {\n const element = window.document.querySelector(selector);\n element?.scrollIntoView({\n block: \"start\",\n inline: \"nearest\",\n behavior: \"smooth\"\n });\n};\n","import { createSelector } from \"reselect\";\nimport { get, keyBy } from \"lodash\";\n\nconst getProducts = state => get(state, \"pageContent.products\", []);\nexport const getProductsById = createSelector(getProducts, products =>\n keyBy(products, \"id\")\n);\n\nexport const getProductGroups = state =>\n get(state, \"pageContent.product_groups\", []);\n\nexport const getTradesForProductGroups = createSelector(\n getProductGroups,\n productGroups =>\n productGroups.reduce((acc, group) => {\n const { trades } = group;\n trades.forEach(trade => {\n if (acc.indexOf(trade) === -1) acc.push(trade);\n });\n return acc;\n }, [])\n);\n\nexport const getProductGroupsById = createSelector(\n getProductGroups,\n productGroups => keyBy(productGroups, \"id\")\n);\n\nexport const getProductGroupsWithProductIds = createSelector(\n getProductGroups,\n productGroups =>\n Object.assign(\n {},\n ...productGroups.map(({ id, name, thumb_url, prices }) => ({\n [id]: {\n id,\n name,\n thumb_url,\n productIds: prices.map(price => price.product_id)\n }\n }))\n )\n);\n","const logger = store => next => action => {\n console.group(action.type);\n console.debug(\"dispatching\", action);\n // console.debug(`dispatching ${JSON.stringify(action, null, 2)}`);\n const result = next(action);\n console.debug(\"next state\", store.getState());\n // console.debug(`next pageContent ${JSON.stringify(store.getState().pageContent, null, 2)}`);\n console.groupEnd(action.type);\n return result;\n};\n\nexport default logger;\n","import { createSelector } from \"reselect\";\nimport {\n get,\n sortBy,\n keyBy,\n flatMap,\n uniq,\n intersection,\n max,\n countBy,\n groupBy\n} from \"lodash\";\nimport { getProjectBranding } from \"../project\";\nimport { getBuyerSelections, getFlatRoomBook } from \"./base\";\nimport { getProductsById, getProductGroupsById } from \"./productData\";\n\nconst getTaxonomies = state => {\n return get(state, [\"account\", \"account\", \"taxonomies\"], []);\n};\n\nconst getTags = createSelector([getTaxonomies], taxonomies => {\n return flatMap(taxonomies, taxonomy => taxonomy.tags);\n});\n\nconst getTagsById = createSelector([getTags], tags => {\n return keyBy(tags, \"composite_id\");\n});\n\nexport const getProductLineGroups = createSelector(\n [getProjectBranding],\n branding => {\n return keyBy(get(branding, [\"productLines\"], []), \"id\");\n }\n);\n\nconst getProductLineTags = createSelector(\n [getProductLineGroups],\n productLineGroups => {\n return uniq(\n Object.values(productLineGroups).reduce((accu, group) => {\n return accu.concat(group.tags);\n }, [])\n );\n }\n);\n\nexport const getHasProductGroupTags = createSelector(\n [getProductsById, getProductGroupsById, getProductLineGroups],\n (productsById, productGroupsById, productLineGroups) => {\n return (productGroupId, productLineGroupId) => {\n const productLineTags = productLineGroups[productLineGroupId].tags;\n const productGroup = productGroupsById[productGroupId];\n\n return productGroup.prices.some(price => {\n const product = productsById[price.product_id];\n return (\n intersection(\n product.product_tags.concat(price.product_tags),\n productLineTags\n ).length > 0\n );\n });\n };\n }\n);\n\nconst getSelectedProductTagsWithAssociatedSubLineItem = createSelector(\n [getBuyerSelections, getFlatRoomBook, getProductsById, getProductGroupsById],\n (buyerSelections, flatRoomBook, productsById, productGroupsById) => {\n const subLineItemsById = keyBy(flatRoomBook.subLineItems, \"id\");\n return Object.keys(buyerSelections)\n .map(sliId => {\n const subLineItem = subLineItemsById[sliId];\n if (subLineItem) {\n const productGroup = productGroupsById[subLineItem.product_group_id];\n const productId = buyerSelections[sliId].product_id;\n const product = productsById[productId];\n\n if (product && productGroup) {\n const productPrice = productGroup.prices.find(\n price => price.product_id === product.id\n );\n if (productPrice) {\n return {\n subLineItem,\n product_tags: product.product_tags.concat(\n productPrice.product_tags\n )\n };\n }\n return {\n subLineItem,\n product_tags: product.product_tags\n };\n }\n }\n return {\n subLineItem: undefined,\n product_tags: []\n };\n })\n .filter(group => group.product_tags.length);\n }\n);\n\n/*\n * Returns the tags associated with selected products.\n */\nconst getSelectedProductTags = createSelector(\n [getSelectedProductTagsWithAssociatedSubLineItem],\n selectedProductTagsWithAssociatedSubLineItem => {\n return selectedProductTagsWithAssociatedSubLineItem.map(\n ({ product_tags: productTags }) => productTags\n );\n }\n);\n\nconst getCountedProductTags = createSelector(\n [getSelectedProductTags],\n selectedProductTags => {\n return countBy(flatMap(selectedProductTags));\n }\n);\n\n/* counts usages of the productTags and returns the most used one */\nexport const getActiveProductTag = createSelector(\n [getCountedProductTags],\n countedProductTags =>\n Object.entries(countedProductTags).reduce(\n (activeProductTag, [compositeId, currentCount]) => {\n return activeProductTag.currentCount >= currentCount\n ? activeProductTag\n : [compositeId, currentCount];\n },\n [null, 0]\n )[0] // only return the composite_id\n);\n\nconst getSelectedTagGroupsForProductLineGroup = createSelector(\n [getSelectedProductTags, getProductLineGroups],\n (selectedTagGroups, productLineGroups) => {\n return productLineGroupId => {\n const currentRestriction = productLineGroups[productLineGroupId].tags;\n return selectedTagGroups\n .map(group => intersection(currentRestriction, group))\n .filter(group => group.length);\n };\n }\n);\n\nconst getCountedTagsForProductLineGroup = createSelector(\n [getSelectedTagGroupsForProductLineGroup],\n getApplicableGroups => {\n return productLineGroupId => {\n const applicableGroups = getApplicableGroups(productLineGroupId);\n return countBy(flatMap(applicableGroups));\n };\n }\n);\n\nconst getActiveProductLines = createSelector(\n [getSelectedTagGroupsForProductLineGroup, getProductLineGroups],\n (getApplicableGroups, productLineGroups) => {\n return Object.keys(productLineGroups).reduce((accu, id) => {\n const group = productLineGroups[id];\n const applicableGroups = getApplicableGroups(id);\n const selectedTags = flatMap(applicableGroups);\n const countedTags = countBy(selectedTags);\n const uniqSelectedTags = uniq(selectedTags);\n const maxTagCount = max(Object.values(countedTags));\n const commonTags = uniqSelectedTags.filter(t => {\n return countedTags[t] === maxTagCount;\n });\n\n accu[id] = {\n ...group,\n validTags: commonTags.length > 1 ? [] : commonTags,\n selectedTags: uniqSelectedTags,\n selection: uniq(flatMap(applicableGroups)).length > 0\n };\n return accu;\n }, {});\n }\n);\n\nexport const getActivatedProductLines = createSelector(\n [\n getActiveProductLines,\n getProductLineGroups,\n getCountedTagsForProductLineGroup,\n getTagsById\n ],\n (selections, productLineGroups, countedTags, tagMapping) => {\n const ids = Object.keys(selections);\n return ids.map(id => {\n const countedProductTags = countedTags(id);\n const selectedTagData = selections[id].selectedTags.map(t => {\n return { id: t, count: countedProductTags[t], ...tagMapping[t] };\n });\n return {\n ...productLineGroups[id],\n ...selections[id],\n selectedTagData\n };\n });\n }\n);\n\nexport const getProductLine = createSelector(\n [getActivatedProductLines],\n productLines => {\n return productLines[0];\n }\n);\n\nexport const getActivatedProductLine = createSelector(\n [getActivatedProductLines],\n productLines => {\n return tags => {\n return productLines.find(pl => {\n return intersection(pl.selectedTags, tags).length > 0;\n });\n };\n }\n);\n\nexport const isProductAcceptable = createSelector(\n [getActiveProductLines],\n activeProductLines => {\n return (subLineItem, option) => {\n if (!option.product_tags.length) {\n return true;\n }\n\n return Object.keys(activeProductLines).every(id => {\n const productLineInfo = activeProductLines[id];\n const isAffectedByProductLine =\n productLineInfo.mode === \"warn\" &&\n intersection(productLineInfo.tags, option.product_tags).length > 0;\n const matchesCurrentConstraints =\n intersection(productLineInfo.validTags, option.product_tags).length >\n 0;\n\n return (\n !isAffectedByProductLine ||\n !productLineInfo.selection ||\n matchesCurrentConstraints\n );\n });\n };\n }\n);\n\nexport const isProductRecommendable = createSelector(\n [getActiveProductLines],\n activeProductLines => {\n return (subLineItem, option) => {\n if (!option.product_tags.length) {\n return true;\n }\n\n return Object.keys(activeProductLines).every(id => {\n const productLineInfo = activeProductLines[id];\n const isAffectedByProductLine =\n productLineInfo.mode === \"recommend\" &&\n intersection(productLineInfo.tags, option.product_tags).length > 0;\n const matchesCurrentConstraints =\n intersection(productLineInfo.validTags, option.product_tags).length >\n 0;\n return (\n !isAffectedByProductLine ||\n !productLineInfo.selection ||\n matchesCurrentConstraints\n );\n });\n };\n }\n);\n\nexport const getProductLinesForTags = createSelector(\n [\n getProductLineTags,\n getProductLineGroups,\n getTagsById,\n getCountedProductTags,\n getHasProductGroupTags\n ],\n (\n productLineTags,\n productLineGroups,\n tagsById,\n countedTags,\n hasProductGroupTags\n ) => {\n return (productGroupId, tags) => {\n const relevantTags = intersection(tags, productLineTags);\n const relevantTagsByLineGroup = groupBy(relevantTags, tag => {\n return Object.keys(productLineGroups).find(id => {\n return productLineGroups[id].tags.includes(tag);\n });\n });\n\n return Object.keys(productLineGroups).reduce((accu, groupId) => {\n const applicableTags = relevantTagsByLineGroup[groupId] || [];\n const { exclusive, scope } = productLineGroups[groupId];\n if (applicableTags.length) {\n const sortedGroupTags = sortBy(productLineGroups[groupId].tags, t => {\n return -countedTags[t];\n });\n const totalSelection = productLineGroups[groupId].tags.reduce(\n (s, t) => {\n return s + (countedTags[t] || 0);\n },\n 0\n );\n return accu.concat(\n sortBy(\n applicableTags.map(t => {\n return {\n ...tagsById[t],\n productLineGroup: groupId,\n active: totalSelection === 0 || t === sortedGroupTags[0],\n count: countedTags[t],\n scope,\n exclusive\n };\n }),\n t => -t.count\n )\n );\n }\n if (hasProductGroupTags(productGroupId, groupId)) {\n return accu.concat([\n {\n name: `Alle ${productLineGroups[groupId].name_plural}`,\n productLineGroup: groupId,\n active: true,\n count: 0,\n scope,\n exclusive\n }\n ]);\n }\n return accu;\n }, []);\n };\n }\n);\n\nexport const getProductLineScopeForTags = createSelector(\n [getProductLinesForTags],\n productLinesForTags => {\n return (productGroupId, acceptedProductLineTags) => {\n return productLinesForTags(productGroupId, acceptedProductLineTags)[0]\n ?.scope; // TODO #1473 fix this later for more than one Product_line there is no use for it now... I suggest to fix it on a clean rewrite\n };\n }\n);\n","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _clsx = require('clsx');\n\nvar _clsx2 = _interopRequireDefault(_clsx);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactSwipeable = require('react-swipeable');\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.debounce');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _lodash5 = require('lodash.isequal');\n\nvar _lodash6 = _interopRequireDefault(_lodash5);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _propTypes = require('prop-types');\n\nvar _SVG = require('./SVG');\n\nvar _SVG2 = _interopRequireDefault(_SVG);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof(call) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar screenChangeEvents = ['fullscreenchange', 'MSFullscreenChange', 'mozfullscreenchange', 'webkitfullscreenchange'];\nvar imageSetType = (0, _propTypes.arrayOf)((0, _propTypes.shape)({\n srcSet: _propTypes.string,\n media: _propTypes.string\n}));\n\nfunction isEnterOrSpaceKey(event) {\n var key = parseInt(event.keyCode || event.which || 0, 10);\n var ENTER_KEY_CODE = 66;\n var SPACEBAR_KEY_CODE = 62;\n return key === ENTER_KEY_CODE || key === SPACEBAR_KEY_CODE;\n}\n\nvar ImageGallery = function (_React$Component) {\n _inherits(ImageGallery, _React$Component);\n\n function ImageGallery(props) {\n _classCallCheck(this, ImageGallery);\n\n var _this = _possibleConstructorReturn(this, (ImageGallery.__proto__ || Object.getPrototypeOf(ImageGallery)).call(this, props));\n\n _this.state = {\n currentIndex: props.startIndex,\n thumbsTranslate: 0,\n currentSlideOffset: 0,\n galleryWidth: 0,\n thumbnailsWrapperWidth: 0,\n thumbnailsWrapperHeight: 0,\n isFullscreen: false,\n isPlaying: false\n };\n _this.loadedImages = {};\n _this.imageGallery = _react2[\"default\"].createRef();\n _this.thumbnailsWrapper = _react2[\"default\"].createRef();\n _this.thumbnails = _react2[\"default\"].createRef();\n _this.imageGallerySlideWrapper = _react2[\"default\"].createRef(); // bindings\n\n _this.handleKeyDown = _this.handleKeyDown.bind(_this);\n _this.handleMouseDown = _this.handleMouseDown.bind(_this);\n _this.handleOnSwiped = _this.handleOnSwiped.bind(_this);\n _this.handleScreenChange = _this.handleScreenChange.bind(_this);\n _this.handleSwiping = _this.handleSwiping.bind(_this);\n _this.onThumbnailMouseLeave = _this.onThumbnailMouseLeave.bind(_this);\n _this.handleImageError = _this.handleImageError.bind(_this);\n _this.pauseOrPlay = _this.pauseOrPlay.bind(_this);\n _this.renderThumbInner = _this.renderThumbInner.bind(_this);\n _this.renderItem = _this.renderItem.bind(_this);\n _this.slideLeft = _this.slideLeft.bind(_this);\n _this.slideRight = _this.slideRight.bind(_this);\n _this.toggleFullScreen = _this.toggleFullScreen.bind(_this);\n _this.togglePlay = _this.togglePlay.bind(_this); // Used to update the throttle if slideDuration changes\n\n _this.unthrottledSlideToIndex = _this.slideToIndex;\n _this.slideToIndex = (0, _lodash2[\"default\"])(_this.unthrottledSlideToIndex, props.slideDuration, {\n trailing: false\n });\n\n if (props.lazyLoad) {\n _this.lazyLoaded = [];\n }\n\n return _this;\n }\n\n _createClass(ImageGallery, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var autoPlay = this.props.autoPlay;\n\n if (autoPlay) {\n this.play();\n }\n\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('mousedown', this.handleMouseDown);\n this.initResizeObserver(this.imageGallerySlideWrapper);\n this.addScreenChangeEvent();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _props = this.props,\n items = _props.items,\n lazyLoad = _props.lazyLoad,\n slideDuration = _props.slideDuration,\n startIndex = _props.startIndex,\n thumbnailPosition = _props.thumbnailPosition,\n showThumbnails = _props.showThumbnails;\n var currentIndex = this.state.currentIndex;\n var itemsSizeChanged = prevProps.items.length !== items.length;\n var itemsChanged = !(0, _lodash6[\"default\"])(prevProps.items, items);\n var startIndexUpdated = prevProps.startIndex !== startIndex;\n var thumbnailsPositionChanged = prevProps.thumbnailPosition !== thumbnailPosition;\n var showThumbnailsChanged = prevProps.showThumbnails !== showThumbnails;\n\n if (thumbnailsPositionChanged) {\n // re-initialize resizeObserver because slides was unmounted and mounted again\n this.removeResizeObserver();\n this.initResizeObserver(this.imageGallerySlideWrapper);\n }\n\n if (itemsSizeChanged || showThumbnailsChanged) {\n this.handleResize();\n }\n\n if (prevState.currentIndex !== currentIndex) {\n this.slideThumbnailBar(prevState.currentIndex);\n } // if slideDuration changes, update slideToIndex throttle\n\n\n if (prevProps.slideDuration !== slideDuration) {\n this.slideToIndex = (0, _lodash2[\"default\"])(this.unthrottledSlideToIndex, slideDuration, {\n trailing: false\n });\n }\n\n if (lazyLoad && (!prevProps.lazyLoad || itemsChanged)) {\n this.lazyLoaded = [];\n }\n\n if (startIndexUpdated || itemsChanged) {\n // TODO: this should be fix/removed if all it is doing\n // is resetting the gallery currentIndext state\n this.setState({\n currentIndex: startIndex\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('mousedown', this.handleMouseDown);\n this.removeScreenChangeEvent();\n this.removeResizeObserver();\n\n if (this.playPauseIntervalId) {\n window.clearInterval(this.playPauseIntervalId);\n this.playPauseIntervalId = null;\n }\n\n if (this.transitionTimer) {\n window.clearTimeout(this.transitionTimer);\n }\n }\n }, {\n key: 'onSliding',\n value: function onSliding() {\n var _this2 = this;\n\n var _state = this.state,\n currentIndex = _state.currentIndex,\n isTransitioning = _state.isTransitioning;\n var _props2 = this.props,\n onSlide = _props2.onSlide,\n slideDuration = _props2.slideDuration;\n this.transitionTimer = window.setTimeout(function () {\n if (isTransitioning) {\n _this2.setState({\n isTransitioning: !isTransitioning\n });\n\n if (onSlide) {\n onSlide(currentIndex);\n }\n }\n }, slideDuration + 50);\n }\n }, {\n key: 'onThumbnailClick',\n value: function onThumbnailClick(event, index) {\n var onThumbnailClick = this.props.onThumbnailClick;\n this.slideToIndex(index, event);\n\n if (onThumbnailClick) {\n onThumbnailClick(event, index);\n }\n }\n }, {\n key: 'onThumbnailMouseOver',\n value: function onThumbnailMouseOver(event, index) {\n var _this3 = this;\n\n if (this.thumbnailMouseOverTimer) {\n window.clearTimeout(this.thumbnailMouseOverTimer);\n this.thumbnailMouseOverTimer = null;\n }\n\n this.thumbnailMouseOverTimer = window.setTimeout(function () {\n _this3.slideToIndex(index);\n\n _this3.pause();\n }, 300);\n }\n }, {\n key: 'onThumbnailMouseLeave',\n value: function onThumbnailMouseLeave() {\n if (this.thumbnailMouseOverTimer) {\n var autoPlay = this.props.autoPlay;\n window.clearTimeout(this.thumbnailMouseOverTimer);\n this.thumbnailMouseOverTimer = null;\n\n if (autoPlay) {\n this.play();\n }\n }\n }\n }, {\n key: 'setScrollDirection',\n value: function setScrollDirection(dir) {\n var _state2 = this.state,\n scrollingUpDown = _state2.scrollingUpDown,\n scrollingLeftRight = _state2.scrollingLeftRight;\n\n if (!scrollingUpDown && !scrollingLeftRight) {\n if (dir === _reactSwipeable.LEFT || dir === _reactSwipeable.RIGHT) {\n this.setState({\n scrollingLeftRight: true\n });\n } else {\n this.setState({\n scrollingUpDown: true\n });\n }\n }\n }\n }, {\n key: 'setThumbsTranslate',\n value: function setThumbsTranslate(thumbsTranslate) {\n this.setState({\n thumbsTranslate: thumbsTranslate\n });\n }\n }, {\n key: 'setModalFullscreen',\n value: function setModalFullscreen(state) {\n var onScreenChange = this.props.onScreenChange;\n this.setState({\n modalFullscreen: state\n }); // manually call because browser does not support screenchange events\n\n if (onScreenChange) {\n onScreenChange(state);\n }\n }\n }, {\n key: 'getThumbsTranslate',\n value: function getThumbsTranslate(indexDifference) {\n var _props3 = this.props,\n disableThumbnailScroll = _props3.disableThumbnailScroll,\n items = _props3.items;\n var _state3 = this.state,\n thumbnailsWrapperWidth = _state3.thumbnailsWrapperWidth,\n thumbnailsWrapperHeight = _state3.thumbnailsWrapperHeight;\n var totalScroll = void 0;\n var thumbElement = this.thumbnails && this.thumbnails.current;\n if (disableThumbnailScroll) return 0;\n\n if (thumbElement) {\n // total scroll required to see the last thumbnail\n if (this.isThumbnailVertical()) {\n if (thumbElement.scrollHeight <= thumbnailsWrapperHeight) {\n return 0;\n }\n\n totalScroll = thumbElement.scrollHeight - thumbnailsWrapperHeight;\n } else {\n if (thumbElement.scrollWidth <= thumbnailsWrapperWidth || thumbnailsWrapperWidth <= 0) {\n return 0;\n }\n\n totalScroll = thumbElement.scrollWidth - thumbnailsWrapperWidth;\n } // scroll-x required per index change\n\n\n var perIndexScroll = totalScroll / (items.length - 1);\n return indexDifference * perIndexScroll;\n }\n\n return 0;\n }\n }, {\n key: 'getAlignmentClassName',\n value: function getAlignmentClassName(index) {\n // Necessary for lazing loading\n var currentIndex = this.state.currentIndex;\n var _props4 = this.props,\n infinite = _props4.infinite,\n items = _props4.items;\n var alignment = '';\n var leftClassName = 'left';\n var centerClassName = 'center';\n var rightClassName = 'right';\n\n switch (index) {\n case currentIndex - 1:\n alignment = ' ' + leftClassName;\n break;\n\n case currentIndex:\n alignment = ' ' + centerClassName;\n break;\n\n case currentIndex + 1:\n alignment = ' ' + rightClassName;\n break;\n\n default:\n break;\n }\n\n if (items.length >= 3 && infinite) {\n if (index === 0 && currentIndex === items.length - 1) {\n // set first slide as right slide if were sliding right from last slide\n alignment = ' ' + rightClassName;\n } else if (index === items.length - 1 && currentIndex === 0) {\n // set last slide as left slide if were sliding left from first slide\n alignment = ' ' + leftClassName;\n }\n }\n\n return alignment;\n }\n }, {\n key: 'getTranslateXForTwoSlide',\n value: function getTranslateXForTwoSlide(index) {\n // For taking care of infinite swipe when there are only two slides\n var _state4 = this.state,\n currentIndex = _state4.currentIndex,\n currentSlideOffset = _state4.currentSlideOffset,\n previousIndex = _state4.previousIndex;\n var indexChanged = currentIndex !== previousIndex;\n var firstSlideWasPrevSlide = index === 0 && previousIndex === 0;\n var secondSlideWasPrevSlide = index === 1 && previousIndex === 1;\n var firstSlideIsNextSlide = index === 0 && currentIndex === 1;\n var secondSlideIsNextSlide = index === 1 && currentIndex === 0;\n var swipingEnded = currentSlideOffset === 0;\n var baseTranslateX = -100 * currentIndex;\n var translateX = baseTranslateX + index * 100 + currentSlideOffset; // keep track of user swiping direction\n // important to understand how to translateX based on last direction\n\n if (currentSlideOffset > 0) {\n this.direction = 'left';\n } else if (currentSlideOffset < 0) {\n this.direction = 'right';\n } // when swiping between two slides make sure the next and prev slides\n // are on both left and right\n\n\n if (secondSlideIsNextSlide && currentSlideOffset > 0) {\n // swiping right\n translateX = -100 + currentSlideOffset;\n }\n\n if (firstSlideIsNextSlide && currentSlideOffset < 0) {\n // swiping left\n translateX = 100 + currentSlideOffset;\n }\n\n if (indexChanged) {\n // when indexChanged move the slide to the correct side\n if (firstSlideWasPrevSlide && swipingEnded && this.direction === 'left') {\n translateX = 100;\n } else if (secondSlideWasPrevSlide && swipingEnded && this.direction === 'right') {\n translateX = -100;\n }\n } else {\n // keep the slide on the correct side if the swipe was not successful\n if (secondSlideIsNextSlide && swipingEnded && this.direction === 'left') {\n translateX = -100;\n }\n\n if (firstSlideIsNextSlide && swipingEnded && this.direction === 'right') {\n translateX = 100;\n }\n }\n\n return translateX;\n }\n }, {\n key: 'getThumbnailBarHeight',\n value: function getThumbnailBarHeight() {\n if (this.isThumbnailVertical()) {\n var gallerySlideWrapperHeight = this.state.gallerySlideWrapperHeight;\n return {\n height: gallerySlideWrapperHeight\n };\n }\n\n return {};\n }\n }, {\n key: 'getSlideStyle',\n value: function getSlideStyle(index) {\n var _state5 = this.state,\n currentIndex = _state5.currentIndex,\n currentSlideOffset = _state5.currentSlideOffset,\n slideStyle = _state5.slideStyle;\n var _props5 = this.props,\n infinite = _props5.infinite,\n items = _props5.items,\n useTranslate3D = _props5.useTranslate3D,\n isRTL = _props5.isRTL;\n var baseTranslateX = -100 * currentIndex;\n var totalSlides = items.length - 1; // calculates where the other slides belong based on currentIndex\n // if it is RTL the base line should be reversed\n\n var translateX = (baseTranslateX + index * 100) * (isRTL ? -1 : 1) + currentSlideOffset;\n\n if (infinite && items.length > 2) {\n if (currentIndex === 0 && index === totalSlides) {\n // make the last slide the slide before the first\n // if it is RTL the base line should be reversed\n translateX = -100 * (isRTL ? -1 : 1) + currentSlideOffset;\n } else if (currentIndex === totalSlides && index === 0) {\n // make the first slide the slide after the last\n // if it is RTL the base line should be reversed\n translateX = 100 * (isRTL ? -1 : 1) + currentSlideOffset;\n }\n } // Special case when there are only 2 items with infinite on\n\n\n if (infinite && items.length === 2) {\n translateX = this.getTranslateXForTwoSlide(index);\n }\n\n var translate = 'translate(' + translateX + '%, 0)';\n\n if (useTranslate3D) {\n translate = 'translate3d(' + translateX + '%, 0, 0)';\n }\n\n return _extends({}, {\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n transform: translate\n }, slideStyle);\n }\n }, {\n key: 'getCurrentIndex',\n value: function getCurrentIndex() {\n var currentIndex = this.state.currentIndex;\n return currentIndex;\n }\n }, {\n key: 'getThumbnailStyle',\n value: function getThumbnailStyle() {\n var translate = void 0;\n var _props6 = this.props,\n useTranslate3D = _props6.useTranslate3D,\n isRTL = _props6.isRTL;\n var thumbsTranslate = this.state.thumbsTranslate;\n var verticalTranslateValue = isRTL ? thumbsTranslate * -1 : thumbsTranslate;\n\n if (this.isThumbnailVertical()) {\n translate = 'translate(0, ' + thumbsTranslate + 'px)';\n\n if (useTranslate3D) {\n translate = 'translate3d(0, ' + thumbsTranslate + 'px, 0)';\n }\n } else {\n translate = 'translate(' + verticalTranslateValue + 'px, 0)';\n\n if (useTranslate3D) {\n translate = 'translate3d(' + verticalTranslateValue + 'px, 0, 0)';\n }\n }\n\n return {\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n transform: translate\n };\n }\n }, {\n key: 'getSlideItems',\n value: function getSlideItems() {\n var _this4 = this;\n\n var currentIndex = this.state.currentIndex;\n var _props7 = this.props,\n infinite = _props7.infinite,\n items = _props7.items,\n slideOnThumbnailOver = _props7.slideOnThumbnailOver,\n onClick = _props7.onClick,\n lazyLoad = _props7.lazyLoad,\n onTouchMove = _props7.onTouchMove,\n onTouchEnd = _props7.onTouchEnd,\n onTouchStart = _props7.onTouchStart,\n onMouseOver = _props7.onMouseOver,\n onMouseLeave = _props7.onMouseLeave,\n renderItem = _props7.renderItem,\n renderThumbInner = _props7.renderThumbInner,\n showThumbnails = _props7.showThumbnails,\n showBullets = _props7.showBullets;\n var slides = [];\n var thumbnails = [];\n var bullets = [];\n items.forEach(function (item, index) {\n var alignment = _this4.getAlignmentClassName(index);\n\n var originalClass = item.originalClass ? ' ' + item.originalClass : '';\n var thumbnailClass = item.thumbnailClass ? ' ' + item.thumbnailClass : '';\n var handleRenderItem = item.renderItem || renderItem || _this4.renderItem;\n var handleRenderThumbInner = item.renderThumbInner || renderThumbInner || _this4.renderThumbInner;\n var showItem = !lazyLoad || alignment || _this4.lazyLoaded[index];\n\n if (showItem && lazyLoad && !_this4.lazyLoaded[index]) {\n _this4.lazyLoaded[index] = true;\n }\n\n var slideStyle = _this4.getSlideStyle(index);\n\n var slide = _react2[\"default\"].createElement('div', {\n 'aria-label': 'Go to Slide ' + (index + 1),\n key: 'slide-' + item.original + '-' + index,\n tabIndex: '-1',\n className: 'image-gallery-slide ' + alignment + ' ' + originalClass,\n style: slideStyle,\n onClick: onClick,\n onKeyUp: _this4.handleSlideKeyUp,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onTouchStart: onTouchStart,\n onMouseOver: onMouseOver,\n onFocus: onMouseOver,\n onMouseLeave: onMouseLeave,\n role: 'button'\n }, showItem ? handleRenderItem(item) : _react2[\"default\"].createElement('div', {\n style: {\n height: '100%'\n }\n }));\n\n if (infinite) {\n // don't add some slides while transitioning to avoid background transitions\n if (_this4.shouldPushSlideOnInfiniteMode(index)) {\n slides.push(slide);\n }\n } else {\n slides.push(slide);\n }\n\n if (showThumbnails) {\n var igThumbnailClass = (0, _clsx2[\"default\"])('image-gallery-thumbnail', thumbnailClass, {\n active: currentIndex === index\n });\n thumbnails.push(_react2[\"default\"].createElement('button', {\n key: 'thumbnail-' + item.original + '-' + index,\n type: 'button',\n tabIndex: '0',\n 'aria-pressed': currentIndex === index ? 'true' : 'false',\n 'aria-label': 'Go to Slide ' + (index + 1),\n className: igThumbnailClass,\n onMouseLeave: slideOnThumbnailOver ? _this4.onThumbnailMouseLeave : null,\n onMouseOver: function onMouseOver(event) {\n return _this4.handleThumbnailMouseOver(event, index);\n },\n onFocus: function onFocus(event) {\n return _this4.handleThumbnailMouseOver(event, index);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.handleThumbnailKeyUp(event, index);\n },\n onClick: function onClick(event) {\n return _this4.onThumbnailClick(event, index);\n }\n }, handleRenderThumbInner(item)));\n }\n\n if (showBullets) {\n // generate bullet elements and store them in array\n var bulletOnClick = function bulletOnClick(event) {\n if (item.bulletOnClick) {\n item.bulletOnClick({\n item: item,\n itemIndex: index,\n currentIndex: currentIndex\n });\n }\n\n return _this4.slideToIndex.call(_this4, index, event);\n };\n\n var igBulletClass = (0, _clsx2[\"default\"])('image-gallery-bullet', item.bulletClass, {\n active: currentIndex === index\n });\n bullets.push(_react2[\"default\"].createElement('button', {\n type: 'button',\n key: 'bullet-' + item.original + '-' + index,\n className: igBulletClass,\n onClick: bulletOnClick,\n 'aria-pressed': currentIndex === index ? 'true' : 'false',\n 'aria-label': 'Go to Slide ' + (index + 1)\n }));\n }\n });\n return {\n slides: slides,\n thumbnails: thumbnails,\n bullets: bullets\n };\n }\n }, {\n key: 'ignoreIsTransitioning',\n value: function ignoreIsTransitioning() {\n /*\n Ignore isTransitioning because were not going to sibling slides\n e.g. center to left or center to right\n */\n var items = this.props.items;\n var _state6 = this.state,\n previousIndex = _state6.previousIndex,\n currentIndex = _state6.currentIndex;\n var totalSlides = items.length - 1; // we want to show the in between slides transition\n\n var slidingMoreThanOneSlideLeftOrRight = Math.abs(previousIndex - currentIndex) > 1;\n var notGoingFromFirstToLast = !(previousIndex === 0 && currentIndex === totalSlides);\n var notGoingFromLastToFirst = !(previousIndex === totalSlides && currentIndex === 0);\n return slidingMoreThanOneSlideLeftOrRight && notGoingFromFirstToLast && notGoingFromLastToFirst;\n }\n }, {\n key: 'isFirstOrLastSlide',\n value: function isFirstOrLastSlide(index) {\n var items = this.props.items;\n var totalSlides = items.length - 1;\n var isLastSlide = index === totalSlides;\n var isFirstSlide = index === 0;\n return isLastSlide || isFirstSlide;\n }\n }, {\n key: 'slideIsTransitioning',\n value: function slideIsTransitioning(index) {\n /*\n returns true if the gallery is transitioning and the index is not the\n previous or currentIndex\n */\n var _state7 = this.state,\n isTransitioning = _state7.isTransitioning,\n previousIndex = _state7.previousIndex,\n currentIndex = _state7.currentIndex;\n var indexIsNotPreviousOrNextSlide = !(index === previousIndex || index === currentIndex);\n return isTransitioning && indexIsNotPreviousOrNextSlide;\n }\n }, {\n key: 'shouldPushSlideOnInfiniteMode',\n value: function shouldPushSlideOnInfiniteMode(index) {\n /*\n Push (show) slide if slide is the current slide and the next slide\n OR\n The slide is going more than one slide left or right, but not going from\n first to last and not going from last to first\n Edge case:\n If you go to the first or last slide, when they're\n not left, or right of each other they will try to catch up in the background\n so unless were going from first to last or vice versa we don't want the first\n or last slide to show up during the transition\n */\n return !this.slideIsTransitioning(index) || this.ignoreIsTransitioning() && !this.isFirstOrLastSlide(index);\n }\n }, {\n key: 'slideThumbnailBar',\n value: function slideThumbnailBar(previousIndex) {\n var _state8 = this.state,\n thumbsTranslate = _state8.thumbsTranslate,\n currentIndex = _state8.currentIndex;\n\n if (currentIndex === 0) {\n this.setThumbsTranslate(0);\n } else {\n var indexDifference = Math.abs(previousIndex - currentIndex);\n var scroll = this.getThumbsTranslate(indexDifference);\n\n if (scroll > 0) {\n if (previousIndex < currentIndex) {\n this.setThumbsTranslate(thumbsTranslate - scroll);\n } else if (previousIndex > currentIndex) {\n this.setThumbsTranslate(thumbsTranslate + scroll);\n }\n }\n }\n }\n }, {\n key: 'canSlide',\n value: function canSlide() {\n var items = this.props.items;\n return items.length >= 2;\n }\n }, {\n key: 'canSlideLeft',\n value: function canSlideLeft() {\n var _props8 = this.props,\n infinite = _props8.infinite,\n isRTL = _props8.isRTL;\n return infinite || (isRTL ? this.canSlideNext() : this.canSlidePrevious());\n }\n }, {\n key: 'canSlideRight',\n value: function canSlideRight() {\n var _props9 = this.props,\n infinite = _props9.infinite,\n isRTL = _props9.isRTL;\n return infinite || (isRTL ? this.canSlidePrevious() : this.canSlideNext());\n }\n }, {\n key: 'canSlidePrevious',\n value: function canSlidePrevious() {\n var currentIndex = this.state.currentIndex;\n return currentIndex > 0;\n }\n }, {\n key: 'canSlideNext',\n value: function canSlideNext() {\n var currentIndex = this.state.currentIndex;\n var items = this.props.items;\n return currentIndex < items.length - 1;\n }\n }, {\n key: 'handleSwiping',\n value: function handleSwiping(_ref) {\n var event = _ref.event,\n absX = _ref.absX,\n dir = _ref.dir;\n var _props10 = this.props,\n preventDefaultTouchmoveEvent = _props10.preventDefaultTouchmoveEvent,\n disableSwipe = _props10.disableSwipe,\n stopPropagation = _props10.stopPropagation;\n var _state9 = this.state,\n galleryWidth = _state9.galleryWidth,\n isTransitioning = _state9.isTransitioning,\n scrollingUpDown = _state9.scrollingUpDown,\n scrollingLeftRight = _state9.scrollingLeftRight;\n if (disableSwipe) return;\n var swipingTransitionDuration = this.props.swipingTransitionDuration;\n this.setScrollDirection(dir);\n if (stopPropagation) event.stopPropagation();\n\n if ((preventDefaultTouchmoveEvent || scrollingLeftRight) && event.cancelable) {\n event.preventDefault();\n }\n\n if (!isTransitioning && !scrollingUpDown) {\n var side = dir === _reactSwipeable.RIGHT ? 1 : -1;\n var currentSlideOffset = absX / galleryWidth * 100;\n\n if (Math.abs(currentSlideOffset) >= 100) {\n currentSlideOffset = 100;\n }\n\n var swipingTransition = {\n transition: 'transform ' + swipingTransitionDuration + 'ms ease-out'\n };\n this.setState({\n currentSlideOffset: side * currentSlideOffset,\n slideStyle: swipingTransition\n });\n } else {\n // don't move the slide\n this.setState({\n currentSlideOffset: 0\n });\n }\n }\n }, {\n key: 'sufficientSwipe',\n value: function sufficientSwipe() {\n var currentSlideOffset = this.state.currentSlideOffset;\n var swipeThreshold = this.props.swipeThreshold;\n return Math.abs(currentSlideOffset) > swipeThreshold;\n }\n }, {\n key: 'handleOnSwiped',\n value: function handleOnSwiped(_ref2) {\n var event = _ref2.event,\n dir = _ref2.dir,\n velocity = _ref2.velocity;\n var _props11 = this.props,\n disableSwipe = _props11.disableSwipe,\n stopPropagation = _props11.stopPropagation,\n flickThreshold = _props11.flickThreshold;\n var _state10 = this.state,\n scrollingUpDown = _state10.scrollingUpDown,\n scrollingLeftRight = _state10.scrollingLeftRight;\n if (disableSwipe) return;\n var isRTL = this.props.isRTL;\n if (stopPropagation) event.stopPropagation();\n\n if (scrollingUpDown) {\n // user stopped scrollingUpDown\n this.setState({\n scrollingUpDown: false\n });\n }\n\n if (scrollingLeftRight) {\n // user stopped scrollingLeftRight\n this.setState({\n scrollingLeftRight: false\n });\n }\n\n if (!scrollingUpDown) {\n // don't swipe if user is scrolling\n // if it is RTL the direction is reversed\n var swipeDirection = (dir === _reactSwipeable.LEFT ? 1 : -1) * (isRTL ? -1 : 1);\n var isFlick = velocity > flickThreshold;\n this.handleOnSwipedTo(swipeDirection, isFlick);\n }\n }\n }, {\n key: 'handleOnSwipedTo',\n value: function handleOnSwipedTo(swipeDirection, isFlick) {\n var _state11 = this.state,\n currentIndex = _state11.currentIndex,\n isTransitioning = _state11.isTransitioning;\n var slideTo = currentIndex;\n\n if ((this.sufficientSwipe() || isFlick) && !isTransitioning) {\n // slideto the next/prev slide\n slideTo += swipeDirection;\n } // If we can't swipe left or right, stay in the current index (noop)\n\n\n if (swipeDirection === -1 && !this.canSlideLeft() || swipeDirection === 1 && !this.canSlideRight()) {\n slideTo = currentIndex;\n }\n\n this.unthrottledSlideToIndex(slideTo);\n }\n }, {\n key: 'handleMouseDown',\n value: function handleMouseDown() {\n // keep track of mouse vs keyboard usage for a11y\n this.imageGallery.current.classList.add('image-gallery-using-mouse');\n }\n }, {\n key: 'handleKeyDown',\n value: function handleKeyDown(event) {\n var _props12 = this.props,\n disableKeyDown = _props12.disableKeyDown,\n useBrowserFullscreen = _props12.useBrowserFullscreen;\n var isFullscreen = this.state.isFullscreen; // keep track of mouse vs keyboard usage for a11y\n\n this.imageGallery.current.classList.remove('image-gallery-using-mouse');\n if (disableKeyDown) return;\n var LEFT_ARROW = 37;\n var RIGHT_ARROW = 39;\n var ESC_KEY = 27;\n var key = parseInt(event.keyCode || event.which || 0, 10);\n\n switch (key) {\n case LEFT_ARROW:\n if (this.canSlideLeft() && !this.playPauseIntervalId) {\n this.slideLeft(event);\n }\n\n break;\n\n case RIGHT_ARROW:\n if (this.canSlideRight() && !this.playPauseIntervalId) {\n this.slideRight(event);\n }\n\n break;\n\n case ESC_KEY:\n if (isFullscreen && !useBrowserFullscreen) {\n this.exitFullScreen();\n }\n\n break;\n\n default:\n break;\n }\n }\n }, {\n key: 'handleImageError',\n value: function handleImageError(event) {\n var onErrorImageURL = this.props.onErrorImageURL;\n\n if (onErrorImageURL && event.target.src.indexOf(onErrorImageURL) === -1) {\n /* eslint-disable no-param-reassign */\n event.target.src = onErrorImageURL;\n /* eslint-enable no-param-reassign */\n }\n }\n }, {\n key: 'removeResizeObserver',\n value: function removeResizeObserver() {\n if (this.resizeObserver && this.imageGallerySlideWrapper && this.imageGallerySlideWrapper.current) {\n this.resizeObserver.unobserve(this.imageGallerySlideWrapper.current);\n }\n }\n }, {\n key: 'handleResize',\n value: function handleResize() {\n var currentIndex = this.state.currentIndex;\n\n if (this.imageGallery && this.imageGallery.current) {\n this.setState({\n galleryWidth: this.imageGallery.current.offsetWidth\n });\n }\n\n if (this.imageGallerySlideWrapper && this.imageGallerySlideWrapper.current) {\n this.setState({\n gallerySlideWrapperHeight: this.imageGallerySlideWrapper.current.offsetHeight\n });\n }\n\n if (this.thumbnailsWrapper && this.thumbnailsWrapper.current) {\n if (this.isThumbnailVertical()) {\n this.setState({\n thumbnailsWrapperHeight: this.thumbnailsWrapper.current.offsetHeight\n });\n } else {\n this.setState({\n thumbnailsWrapperWidth: this.thumbnailsWrapper.current.offsetWidth\n });\n }\n } // Adjust thumbnail container when thumbnail width or height is adjusted\n\n\n this.setThumbsTranslate(-this.getThumbsTranslate(currentIndex));\n }\n }, {\n key: 'initResizeObserver',\n value: function initResizeObserver(element) {\n var _this5 = this;\n\n this.resizeObserver = new _resizeObserverPolyfill2[\"default\"]((0, _lodash4[\"default\"])(function (entries) {\n if (!entries) return;\n entries.forEach(function () {\n _this5.handleResize();\n });\n }, 300));\n this.resizeObserver.observe(element.current);\n }\n }, {\n key: 'toggleFullScreen',\n value: function toggleFullScreen() {\n var isFullscreen = this.state.isFullscreen;\n\n if (isFullscreen) {\n this.exitFullScreen();\n } else {\n this.fullScreen();\n }\n }\n }, {\n key: 'togglePlay',\n value: function togglePlay() {\n if (this.playPauseIntervalId) {\n this.pause();\n } else {\n this.play();\n }\n }\n }, {\n key: 'handleScreenChange',\n value: function handleScreenChange() {\n /*\n handles screen change events that the browser triggers e.g. esc key\n */\n var _props13 = this.props,\n onScreenChange = _props13.onScreenChange,\n useBrowserFullscreen = _props13.useBrowserFullscreen;\n var fullScreenElement = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement; // check if screenchange element is the gallery\n\n var isFullscreen = this.imageGallery.current === fullScreenElement;\n if (onScreenChange) onScreenChange(isFullscreen);\n if (useBrowserFullscreen) this.setState({\n isFullscreen: isFullscreen\n });\n }\n }, {\n key: 'slideToIndex',\n value: function slideToIndex(index, event) {\n var _state12 = this.state,\n currentIndex = _state12.currentIndex,\n isTransitioning = _state12.isTransitioning;\n var _props14 = this.props,\n items = _props14.items,\n slideDuration = _props14.slideDuration,\n onBeforeSlide = _props14.onBeforeSlide;\n\n if (!isTransitioning) {\n if (event) {\n if (this.playPauseIntervalId) {\n // user triggered event while ImageGallery is playing, reset interval\n this.pause(false);\n this.play(false);\n }\n }\n\n var slideCount = items.length - 1;\n var nextIndex = index;\n\n if (index < 0) {\n nextIndex = slideCount;\n } else if (index > slideCount) {\n nextIndex = 0;\n }\n\n if (onBeforeSlide && nextIndex !== currentIndex) {\n onBeforeSlide(nextIndex);\n }\n\n this.setState({\n previousIndex: currentIndex,\n currentIndex: nextIndex,\n isTransitioning: nextIndex !== currentIndex,\n currentSlideOffset: 0,\n slideStyle: {\n transition: 'all ' + slideDuration + 'ms ease-out'\n }\n }, this.onSliding);\n }\n }\n }, {\n key: 'slideLeft',\n value: function slideLeft(event) {\n var isRTL = this.props.isRTL;\n\n if (isRTL) {\n this.slideNext(event);\n } else {\n this.slidePrevious(event);\n }\n }\n }, {\n key: 'slideRight',\n value: function slideRight(event) {\n var isRTL = this.props.isRTL;\n\n if (isRTL) {\n this.slidePrevious(event);\n } else {\n this.slideNext(event);\n }\n }\n }, {\n key: 'slidePrevious',\n value: function slidePrevious(event) {\n var _this6 = this;\n\n var _state13 = this.state,\n currentIndex = _state13.currentIndex,\n currentSlideOffset = _state13.currentSlideOffset,\n isTransitioning = _state13.isTransitioning;\n var items = this.props.items;\n var nextIndex = currentIndex - 1;\n if (isTransitioning) return;\n\n if (items.length === 2) {\n /*\n When there are only 2 slides fake a tiny swipe to get the slides\n on the correct side for transitioning\n */\n this.setState({\n currentSlideOffset: currentSlideOffset + 0.001,\n // this will reset once index changes\n slideStyle: {\n transition: 'none'\n } // move the slide over instantly\n\n }, function () {\n // add 25ms timeout to avoid delay in moving slides over\n window.setTimeout(function () {\n return _this6.slideToIndex(nextIndex, event);\n }, 25);\n });\n } else {\n this.slideToIndex(nextIndex, event);\n }\n }\n }, {\n key: 'slideNext',\n value: function slideNext(event) {\n var _this7 = this;\n\n var _state14 = this.state,\n currentIndex = _state14.currentIndex,\n currentSlideOffset = _state14.currentSlideOffset,\n isTransitioning = _state14.isTransitioning;\n var items = this.props.items;\n var nextIndex = currentIndex + 1;\n if (isTransitioning) return;\n\n if (items.length === 2) {\n // same as above for 2 slides\n this.setState({\n currentSlideOffset: currentSlideOffset - 0.001,\n slideStyle: {\n transition: 'none'\n }\n }, function () {\n window.setTimeout(function () {\n return _this7.slideToIndex(nextIndex, event);\n }, 25);\n });\n } else {\n this.slideToIndex(nextIndex, event);\n }\n }\n }, {\n key: 'handleThumbnailMouseOver',\n value: function handleThumbnailMouseOver(event, index) {\n var slideOnThumbnailOver = this.props.slideOnThumbnailOver;\n if (slideOnThumbnailOver) this.onThumbnailMouseOver(event, index);\n }\n }, {\n key: 'handleThumbnailKeyUp',\n value: function handleThumbnailKeyUp(event, index) {\n // a11y support ^_^\n if (isEnterOrSpaceKey(event)) this.onThumbnailClick(event, index);\n }\n }, {\n key: 'handleSlideKeyUp',\n value: function handleSlideKeyUp(event) {\n // a11y support ^_^\n if (isEnterOrSpaceKey(event)) {\n var onClick = this.props.onClick;\n onClick(event);\n }\n }\n }, {\n key: 'isThumbnailVertical',\n value: function isThumbnailVertical() {\n var thumbnailPosition = this.props.thumbnailPosition;\n return thumbnailPosition === 'left' || thumbnailPosition === 'right';\n }\n }, {\n key: 'addScreenChangeEvent',\n value: function addScreenChangeEvent() {\n var _this8 = this;\n\n screenChangeEvents.forEach(function (eventName) {\n document.addEventListener(eventName, _this8.handleScreenChange);\n });\n }\n }, {\n key: 'removeScreenChangeEvent',\n value: function removeScreenChangeEvent() {\n var _this9 = this;\n\n screenChangeEvents.forEach(function (eventName) {\n document.removeEventListener(eventName, _this9.handleScreenChange);\n });\n }\n }, {\n key: 'fullScreen',\n value: function fullScreen() {\n var useBrowserFullscreen = this.props.useBrowserFullscreen;\n var gallery = this.imageGallery.current;\n\n if (useBrowserFullscreen) {\n if (gallery.requestFullscreen) {\n gallery.requestFullscreen();\n } else if (gallery.msRequestFullscreen) {\n gallery.msRequestFullscreen();\n } else if (gallery.mozRequestFullScreen) {\n gallery.mozRequestFullScreen();\n } else if (gallery.webkitRequestFullscreen) {\n gallery.webkitRequestFullscreen();\n } else {\n // fallback to fullscreen modal for unsupported browsers\n this.setModalFullscreen(true);\n }\n } else {\n this.setModalFullscreen(true);\n }\n\n this.setState({\n isFullscreen: true\n });\n }\n }, {\n key: 'exitFullScreen',\n value: function exitFullScreen() {\n var isFullscreen = this.state.isFullscreen;\n var useBrowserFullscreen = this.props.useBrowserFullscreen;\n\n if (isFullscreen) {\n if (useBrowserFullscreen) {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n // fallback to fullscreen modal for unsupported browsers\n this.setModalFullscreen(false);\n }\n } else {\n this.setModalFullscreen(false);\n }\n\n this.setState({\n isFullscreen: false\n });\n }\n }\n }, {\n key: 'pauseOrPlay',\n value: function pauseOrPlay() {\n var infinite = this.props.infinite;\n var currentIndex = this.state.currentIndex;\n\n if (!infinite && !this.canSlideRight()) {\n this.pause();\n } else {\n this.slideToIndex(currentIndex + 1);\n }\n }\n }, {\n key: 'play',\n value: function play() {\n var shouldCallOnPlay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var _props15 = this.props,\n onPlay = _props15.onPlay,\n slideInterval = _props15.slideInterval,\n slideDuration = _props15.slideDuration;\n var currentIndex = this.state.currentIndex;\n\n if (!this.playPauseIntervalId) {\n this.setState({\n isPlaying: true\n });\n this.playPauseIntervalId = window.setInterval(this.pauseOrPlay, Math.max(slideInterval, slideDuration));\n\n if (onPlay && shouldCallOnPlay) {\n onPlay(currentIndex);\n }\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n var shouldCallOnPause = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var onPause = this.props.onPause;\n var currentIndex = this.state.currentIndex;\n\n if (this.playPauseIntervalId) {\n window.clearInterval(this.playPauseIntervalId);\n this.playPauseIntervalId = null;\n this.setState({\n isPlaying: false\n });\n\n if (onPause && shouldCallOnPause) {\n onPause(currentIndex);\n }\n }\n }\n }, {\n key: 'isImageLoaded',\n value: function isImageLoaded(item) {\n /*\n Keep track of images loaded so that onImageLoad prop is not\n called multiple times when re-render the images\n */\n var imageExists = this.loadedImages[item.original];\n\n if (imageExists) {\n return true;\n } // add image as loaded\n\n\n this.loadedImages[item.original] = true;\n return false;\n }\n }, {\n key: 'handleImageLoaded',\n value: function handleImageLoaded(event, item) {\n var onImageLoad = this.props.onImageLoad;\n var imageExists = this.loadedImages[item.original];\n\n if (!imageExists && onImageLoad) {\n this.loadedImages[item.original] = true; // prevent from call again\n // image just loaded, call onImageLoad\n\n onImageLoad(event);\n }\n }\n }, {\n key: 'renderItem',\n value: function renderItem(item) {\n var _this10 = this;\n\n var isFullscreen = this.state.isFullscreen;\n var onImageError = this.props.onImageError;\n var handleImageError = onImageError || this.handleImageError;\n var itemSrc = isFullscreen ? item.fullscreen || item.original : item.original;\n return _react2[\"default\"].createElement('div', null, item.imageSet ? _react2[\"default\"].createElement('picture', {\n onLoad: function onLoad(event) {\n return _this10.handleImageLoaded(event, item);\n },\n onError: handleImageError\n }, item.imageSet.map(function (source, index) {\n return _react2[\"default\"].createElement('source', {\n key: 'media-' + source.srcSet + '-' + index,\n media: source.media,\n srcSet: source.srcSet,\n type: source.type\n });\n }), _react2[\"default\"].createElement('img', {\n className: 'image-gallery-image',\n alt: item.originalAlt,\n src: itemSrc\n })) : _react2[\"default\"].createElement('img', {\n className: 'image-gallery-image',\n src: itemSrc,\n alt: item.originalAlt,\n srcSet: item.srcSet,\n sizes: item.sizes,\n title: item.originalTitle,\n onLoad: function onLoad(event) {\n return _this10.handleImageLoaded(event, item);\n },\n onError: handleImageError\n }), item.description && _react2[\"default\"].createElement('span', {\n className: 'image-gallery-description'\n }, item.description));\n }\n }, {\n key: 'renderThumbInner',\n value: function renderThumbInner(item) {\n var onThumbnailError = this.props.onThumbnailError;\n var handleThumbnailError = onThumbnailError || this.handleImageError;\n return _react2[\"default\"].createElement('div', {\n className: 'image-gallery-thumbnail-inner'\n }, _react2[\"default\"].createElement('img', {\n className: 'image-gallery-thumbnail-image',\n src: item.thumbnail,\n alt: item.thumbnailAlt,\n title: item.thumbnailTitle,\n onError: handleThumbnailError\n }), item.thumbnailLabel && _react2[\"default\"].createElement('div', {\n className: 'image-gallery-thumbnail-label'\n }, item.thumbnailLabel));\n }\n }, {\n key: 'render',\n value: function render() {\n var _state15 = this.state,\n currentIndex = _state15.currentIndex,\n isFullscreen = _state15.isFullscreen,\n modalFullscreen = _state15.modalFullscreen,\n isPlaying = _state15.isPlaying;\n var _props16 = this.props,\n additionalClass = _props16.additionalClass,\n indexSeparator = _props16.indexSeparator,\n isRTL = _props16.isRTL,\n items = _props16.items,\n thumbnailPosition = _props16.thumbnailPosition,\n renderFullscreenButton = _props16.renderFullscreenButton,\n renderCustomControls = _props16.renderCustomControls,\n renderLeftNav = _props16.renderLeftNav,\n renderRightNav = _props16.renderRightNav,\n showBullets = _props16.showBullets,\n showFullscreenButton = _props16.showFullscreenButton,\n showIndex = _props16.showIndex,\n showThumbnails = _props16.showThumbnails,\n showNav = _props16.showNav,\n showPlayButton = _props16.showPlayButton,\n renderPlayPauseButton = _props16.renderPlayPauseButton;\n var thumbnailStyle = this.getThumbnailStyle();\n\n var _getSlideItems = this.getSlideItems(),\n slides = _getSlideItems.slides,\n thumbnails = _getSlideItems.thumbnails,\n bullets = _getSlideItems.bullets;\n\n var slideWrapperClass = (0, _clsx2[\"default\"])('image-gallery-slide-wrapper', thumbnailPosition, {\n 'image-gallery-rtl': isRTL\n });\n\n var slideWrapper = _react2[\"default\"].createElement('div', {\n ref: this.imageGallerySlideWrapper,\n className: slideWrapperClass\n }, renderCustomControls && renderCustomControls(), this.canSlide() ? _react2[\"default\"].createElement(_react2[\"default\"].Fragment, null, showNav && _react2[\"default\"].createElement(_react2[\"default\"].Fragment, null, renderLeftNav(this.slideLeft, !this.canSlideLeft()), renderRightNav(this.slideRight, !this.canSlideRight())), _react2[\"default\"].createElement(_reactSwipeable.Swipeable, {\n className: 'image-gallery-swipe',\n delta: 0,\n onSwiping: this.handleSwiping,\n onSwiped: this.handleOnSwiped\n }, _react2[\"default\"].createElement('div', {\n className: 'image-gallery-slides'\n }, slides))) : _react2[\"default\"].createElement('div', {\n className: 'image-gallery-slides'\n }, slides), showPlayButton && renderPlayPauseButton(this.togglePlay, isPlaying), showBullets && _react2[\"default\"].createElement('div', {\n className: 'image-gallery-bullets'\n }, _react2[\"default\"].createElement('div', {\n className: 'image-gallery-bullets-container',\n role: 'navigation',\n 'aria-label': 'Bullet Navigation'\n }, bullets)), showFullscreenButton && renderFullscreenButton(this.toggleFullScreen, isFullscreen), showIndex && _react2[\"default\"].createElement('div', {\n className: 'image-gallery-index'\n }, _react2[\"default\"].createElement('span', {\n className: 'image-gallery-index-current'\n }, currentIndex + 1), _react2[\"default\"].createElement('span', {\n className: 'image-gallery-index-separator'\n }, indexSeparator), _react2[\"default\"].createElement('span', {\n className: 'image-gallery-index-total'\n }, items.length)));\n\n var igClass = (0, _clsx2[\"default\"])('image-gallery', additionalClass, {\n 'fullscreen-modal': modalFullscreen\n });\n var igContentClass = (0, _clsx2[\"default\"])('image-gallery-content', thumbnailPosition, {\n fullscreen: isFullscreen\n });\n var thumbnailWrapperClass = (0, _clsx2[\"default\"])('image-gallery-thumbnails-wrapper', thumbnailPosition, {\n 'thumbnails-wrapper-rtl': !this.isThumbnailVertical() && isRTL\n });\n return _react2[\"default\"].createElement('div', {\n ref: this.imageGallery,\n className: igClass,\n 'aria-live': 'polite'\n }, _react2[\"default\"].createElement('div', {\n className: igContentClass\n }, (thumbnailPosition === 'bottom' || thumbnailPosition === 'right') && slideWrapper, showThumbnails && _react2[\"default\"].createElement('div', {\n className: thumbnailWrapperClass,\n style: this.getThumbnailBarHeight()\n }, _react2[\"default\"].createElement('div', {\n className: 'image-gallery-thumbnails',\n ref: this.thumbnailsWrapper\n }, _react2[\"default\"].createElement('div', {\n ref: this.thumbnails,\n className: 'image-gallery-thumbnails-container',\n style: thumbnailStyle,\n 'aria-label': 'Thumbnail Navigation'\n }, thumbnails))), (thumbnailPosition === 'top' || thumbnailPosition === 'left') && slideWrapper));\n }\n }]);\n\n return ImageGallery;\n}(_react2[\"default\"].Component);\n\nImageGallery.propTypes = {\n flickThreshold: _propTypes.number,\n items: (0, _propTypes.arrayOf)((0, _propTypes.shape)({\n bulletClass: _propTypes.string,\n bulletOnClick: _propTypes.func,\n description: _propTypes.string,\n original: _propTypes.string.isRequired,\n fullscreen: _propTypes.string,\n originalAlt: _propTypes.string,\n originalTitle: _propTypes.string,\n thumbnail: _propTypes.string,\n thumbnailAlt: _propTypes.string,\n thumbnailLabel: _propTypes.string,\n thumbnailTitle: _propTypes.string,\n originalClass: _propTypes.string,\n thumbnailClass: _propTypes.string,\n renderItem: _propTypes.func,\n renderThumbInner: _propTypes.func,\n imageSet: imageSetType,\n srcSet: _propTypes.string,\n sizes: _propTypes.string\n })).isRequired,\n showNav: _propTypes.bool,\n autoPlay: _propTypes.bool,\n lazyLoad: _propTypes.bool,\n infinite: _propTypes.bool,\n showIndex: _propTypes.bool,\n showBullets: _propTypes.bool,\n showThumbnails: _propTypes.bool,\n showPlayButton: _propTypes.bool,\n showFullscreenButton: _propTypes.bool,\n disableThumbnailScroll: _propTypes.bool,\n disableKeyDown: _propTypes.bool,\n disableSwipe: _propTypes.bool,\n useBrowserFullscreen: _propTypes.bool,\n preventDefaultTouchmoveEvent: _propTypes.bool,\n onErrorImageURL: _propTypes.string,\n indexSeparator: _propTypes.string,\n thumbnailPosition: (0, _propTypes.oneOf)(['top', 'bottom', 'left', 'right']),\n startIndex: _propTypes.number,\n slideDuration: _propTypes.number,\n slideInterval: _propTypes.number,\n slideOnThumbnailOver: _propTypes.bool,\n swipeThreshold: _propTypes.number,\n swipingTransitionDuration: _propTypes.number,\n onSlide: _propTypes.func,\n onBeforeSlide: _propTypes.func,\n onScreenChange: _propTypes.func,\n onPause: _propTypes.func,\n onPlay: _propTypes.func,\n onClick: _propTypes.func,\n onImageLoad: _propTypes.func,\n onImageError: _propTypes.func,\n onTouchMove: _propTypes.func,\n onTouchEnd: _propTypes.func,\n onTouchStart: _propTypes.func,\n onMouseOver: _propTypes.func,\n onMouseLeave: _propTypes.func,\n onThumbnailError: _propTypes.func,\n onThumbnailClick: _propTypes.func,\n renderCustomControls: _propTypes.func,\n renderLeftNav: _propTypes.func,\n renderRightNav: _propTypes.func,\n renderPlayPauseButton: _propTypes.func,\n renderFullscreenButton: _propTypes.func,\n renderItem: _propTypes.func,\n renderThumbInner: _propTypes.func,\n stopPropagation: _propTypes.bool,\n additionalClass: _propTypes.string,\n useTranslate3D: _propTypes.bool,\n isRTL: _propTypes.bool\n};\nImageGallery.defaultProps = {\n onErrorImageURL: '',\n additionalClass: '',\n showNav: true,\n autoPlay: false,\n lazyLoad: false,\n infinite: true,\n showIndex: false,\n showBullets: false,\n showThumbnails: true,\n showPlayButton: true,\n showFullscreenButton: true,\n disableThumbnailScroll: false,\n disableKeyDown: false,\n disableSwipe: false,\n useTranslate3D: true,\n isRTL: false,\n useBrowserFullscreen: true,\n preventDefaultTouchmoveEvent: false,\n flickThreshold: 0.4,\n stopPropagation: false,\n indexSeparator: ' / ',\n thumbnailPosition: 'bottom',\n startIndex: 0,\n slideDuration: 450,\n swipingTransitionDuration: 0,\n onSlide: null,\n onBeforeSlide: null,\n onScreenChange: null,\n onPause: null,\n onPlay: null,\n onClick: null,\n onImageLoad: null,\n onImageError: null,\n onTouchMove: null,\n onTouchEnd: null,\n onTouchStart: null,\n onMouseOver: null,\n onMouseLeave: null,\n onThumbnailError: null,\n onThumbnailClick: null,\n renderCustomControls: null,\n renderThumbInner: null,\n renderItem: null,\n slideInterval: 3000,\n slideOnThumbnailOver: false,\n swipeThreshold: 30,\n renderLeftNav: function renderLeftNav(onClick, disabled) {\n return _react2[\"default\"].createElement('button', {\n type: 'button',\n className: 'image-gallery-icon image-gallery-left-nav',\n disabled: disabled,\n onClick: onClick,\n 'aria-label': 'Previous Slide'\n }, _react2[\"default\"].createElement(_SVG2[\"default\"], {\n icon: 'left',\n viewBox: '6 0 12 24'\n }));\n },\n renderRightNav: function renderRightNav(onClick, disabled) {\n return _react2[\"default\"].createElement('button', {\n type: 'button',\n className: 'image-gallery-icon image-gallery-right-nav',\n disabled: disabled,\n onClick: onClick,\n 'aria-label': 'Next Slide'\n }, _react2[\"default\"].createElement(_SVG2[\"default\"], {\n icon: 'right',\n viewBox: '6 0 12 24'\n }));\n },\n renderPlayPauseButton: function renderPlayPauseButton(onClick, isPlaying) {\n return _react2[\"default\"].createElement('button', {\n type: 'button',\n className: 'image-gallery-icon image-gallery-play-button',\n onClick: onClick,\n 'aria-label': 'Play or Pause Slideshow'\n }, _react2[\"default\"].createElement(_SVG2[\"default\"], {\n strokeWidth: 2,\n icon: isPlaying ? 'pause' : 'play'\n }));\n },\n renderFullscreenButton: function renderFullscreenButton(onClick, isFullscreen) {\n return _react2[\"default\"].createElement('button', {\n type: 'button',\n className: 'image-gallery-icon image-gallery-fullscreen-button',\n onClick: onClick,\n 'aria-label': 'Open Fullscreen'\n }, _react2[\"default\"].createElement(_SVG2[\"default\"], {\n strokeWidth: 2,\n icon: isFullscreen ? 'minimize' : 'maximize'\n }));\n }\n};\nexports[\"default\"] = ImageGallery;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"SideBySideMagnifier\", {\n enumerable: true,\n get: function get() {\n return _SideBySideMagnifier[\"default\"];\n }\n});\nObject.defineProperty(exports, \"Magnifier\", {\n enumerable: true,\n get: function get() {\n return _Magnifier[\"default\"];\n }\n});\nObject.defineProperty(exports, \"GlassMagnifier\", {\n enumerable: true,\n get: function get() {\n return _GlassMagnifier[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PictureInPictureMagnifier\", {\n enumerable: true,\n get: function get() {\n return _PictureInPictureMagnifier[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MagnifierContainer\", {\n enumerable: true,\n get: function get() {\n return _MagnifierContainer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MagnifierPreview\", {\n enumerable: true,\n get: function get() {\n return _MagnifierPreview[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MagnifierZoom\", {\n enumerable: true,\n get: function get() {\n return _MagnifierZoom[\"default\"];\n }\n});\nexports.TOUCH_ACTIVATION = exports.MOUSE_ACTIVATION = void 0;\n\nvar _reactInputPosition = require(\"react-input-position\");\n\nvar _SideBySideMagnifier = _interopRequireDefault(require(\"./SideBySideMagnifier\"));\n\nvar _Magnifier = _interopRequireDefault(require(\"./Magnifier\"));\n\nvar _GlassMagnifier = _interopRequireDefault(require(\"./GlassMagnifier\"));\n\nvar _PictureInPictureMagnifier = _interopRequireDefault(require(\"./PictureInPictureMagnifier\"));\n\nvar _MagnifierContainer = _interopRequireDefault(require(\"./MagnifierContainer\"));\n\nvar _MagnifierPreview = _interopRequireDefault(require(\"./MagnifierPreview\"));\n\nvar _MagnifierZoom = _interopRequireDefault(require(\"./MagnifierZoom\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar MOUSE_ACTIVATION = {\n CLICK: _reactInputPosition.MOUSE_ACTIVATION.CLICK,\n DOUBLE_CLICK: _reactInputPosition.MOUSE_ACTIVATION.DOUBLE_CLICK\n};\nexports.MOUSE_ACTIVATION = MOUSE_ACTIVATION;\nvar TOUCH_ACTIVATION = {\n TAP: _reactInputPosition.TOUCH_ACTIVATION.TAP,\n DOUBLE_TAP: _reactInputPosition.TOUCH_ACTIVATION.DOUBLE_TAP,\n LONG_TOUCH: _reactInputPosition.TOUCH_ACTIVATION.LONG_TOUCH\n};\nexports.TOUCH_ACTIVATION = TOUCH_ACTIVATION;","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { findSubLineItem } from \"shared/selectors/unit\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nimport CatalogPage from \"./CatalogPage\";\nimport ProductOptions from \"./ProductOptions\";\n\nimport \"./productOptions.scss\";\nimport { SubLineItemShape } from \"../configurator/roomBook.shape\";\n\nfunction SubLineItemPage({ subLineItem }) {\n return (\n \n \n \n );\n}\n\nSubLineItemPage.propTypes = {\n subLineItem: SubLineItemShape.isRequired\n};\n\nconst mapStateToProps = (state, props) => {\n const { subLineItemId } = props.params;\n const subLineItem = findSubLineItem(state)(subLineItemId);\n return {\n subLineItem\n };\n};\n\nexport default withRouter(connect(mapStateToProps)(SubLineItemPage));\n","import { string, func, bool } from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { IndexLink } from \"react-router\";\nimport { get } from \"lodash\";\nimport { Container, Menu, Icon, Grid } from \"semantic-ui-react\";\nimport PageMenu from \"./PageMenu\";\n\nimport \"./pageMenu.scss\";\n\nconst PageNavigation = props => {\n const {\n unitId,\n rootPath,\n projectId,\n onToggleSidebar,\n sidebarIsVisible,\n accountLogoUrl\n } = props;\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n \n \n\n \n \n
    \n
    \n
    \n );\n};\n\nPageNavigation.propTypes = {\n onToggleSidebar: func.isRequired,\n projectId: string,\n rootPath: string,\n accountLogoUrl: string.isRequired,\n sidebarIsVisible: bool.isRequired,\n unitId: string\n};\n\nPageNavigation.defaultProps = {\n projectId: null,\n rootPath: \"\",\n unitId: null\n};\n\nconst mapStateToProps = state => ({\n accountLogoUrl: get(state, \"branding.account.logo.half_banner\"),\n i18n: state.i18n\n});\n\nexport default connect(mapStateToProps)(PageNavigation);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { Icon, Label } from \"semantic-ui-react\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\n\nexport const PriceLabel = props => {\n const { amount, isOnRequest } = props;\n\n if (isOnRequest) {\n return ;\n }\n return (\n \n );\n};\n\nPriceLabel.propTypes = {\n amount: PropTypes.number.isRequired,\n isOnRequest: PropTypes.bool\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport \"./imageCanvas.scss\";\n\nexport class ImageCanvas extends React.Component {\n static propTypes = {\n src: PropTypes.string.isRequired\n };\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nimport { PriceLabel } from \"shared/components/currency/PriceLabel\";\nimport FormatNumber from \"shared/components/numbers/FormatNumber\";\nimport FormatQuantity from \"shared/components/quantity/FormatQuantity\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\n\nimport { Header, Button, Grid, Responsive } from \"semantic-ui-react\";\nimport { Unless } from \"shared/components/elements/Conditions\";\nimport { getSectionPath } from \"shared/selectors/unit\";\nimport { getUserRole } from \"shared/selectors\";\nimport { get, compact } from \"lodash\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport { roomBookController } from \"shared/actions/roomBookController\";\nimport AdminMessageDialog from \"./AdminMessageDialog\";\nimport { withRouter } from \"../../helpers/withRouter\";\nimport { ImageCanvas } from \"../images/ImageCanvas\";\n\nclass SubLineItemGrid extends React.Component {\n static propTypes = {\n subLineItems: PropTypes.array.isRequired,\n sectionPath: PropTypes.string.isRequired,\n userRole: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n showAdminMessage: false\n };\n }\n\n handleClose = () => {\n this.setState({ showAdminMessage: false });\n };\n\n render() {\n const { subLineItems } = this.props;\n const { showAdminMessage } = this.state;\n return (\n
    \n \n {this.renderLargeGrid(subLineItems)}\n \n \n {this.renderMobileGrid(subLineItems)}\n \n\n \n
    \n );\n }\n\n renderLargeGrid = subLineItems => {\n const items = subLineItems.map(subLineItem => {\n const validOptions = subLineItem.options.filter(o => o.isValidOption);\n const selectedProduct =\n subLineItem.defactoSelectedOption || validOptions[0];\n const description = (\n
    \n \n {selectedProduct.name}\n \n {compact([selectedProduct.supplier, selectedProduct.series]).join(\n \", \"\n )}\n \n \n
    \n );\n\n return (\n \n \n \n \n \n
    {subLineItem.title}
    \n {description}\n {this.renderProductInfo(subLineItem, selectedProduct)}\n
    \n \n \n \n {\n this.navigateTo(subLineItem);\n }}\n />\n \n \n \n \n {this.renderQuantity(subLineItem)}\n \n \n \n \n
    \n );\n });\n\n return {items};\n };\n\n renderMobileGrid = subLineItems => {\n return subLineItems.map(subLineItem => {\n const validOptions = subLineItem.options.filter(o => o.isValidOption);\n const selectedProduct =\n subLineItem.defactoSelectedOption || validOptions[0];\n\n return (\n \n \n \n
    {subLineItem.title}
    \n
    \n
    \n \n \n \n \n \n
    \n \n {selectedProduct.name}\n \n {compact([\n selectedProduct.supplier,\n selectedProduct.series\n ]).join(\", \")}\n \n \n
    \n {this.renderProductInfo(subLineItem, selectedProduct)}\n
    \n
    \n \n \n \n \n {\n this.navigateTo(subLineItem);\n }}\n />\n \n \n \n \n \n \n {this.renderQuantity(subLineItem)}\n \n \n \n \n \n
    \n );\n });\n };\n\n renderProductInfo = (subLineItem, selectedProduct) => {\n if (subLineItem.priceStrategy !== \"flat\") {\n return (\n

    \n \n {\" \"}\n laut Baubeschreibung\n \n
    \n \n \n \n

    \n );\n }\n };\n\n renderQuantity = subLineItem => {\n return (\n \n \n \n \n \n  \n \n  \n \n \n \n \n \n );\n };\n\n updateQuantityFn = (subLineItem, modifier) => {\n return () => {\n const { ctrl, userRole } = this.props;\n if (![\"admin\", \"buyer\"].includes(userRole)) {\n this.setState({ showAdminMessage: true });\n return;\n }\n\n const quantity = get(subLineItem, \"quantity\", 0) + modifier;\n\n if (quantity >= 0) {\n return ctrl.selectProductsAndQuantities({\n [subLineItem.id]: {\n product_id: get(\n subLineItem,\n [\"defactoSelectedOption\", \"id\"],\n subLineItem.product_id\n ),\n quantity\n }\n });\n }\n };\n };\n\n navigateTo = subLineItem => {\n const { sectionPath, router } = this.props;\n\n handleScrollTop();\n router.push(\n `${sectionPath}/line_item/${subLineItem.lineItemId}/sub_line_item/${subLineItem.id}`\n );\n };\n}\n\nconst mapStateToProps = (state, props) => {\n const sectionPath = getSectionPath(props);\n const userRole = getUserRole(state);\n return { sectionPath, userRole };\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n ctrl: roomBookController(dispatch, props.params.id)\n };\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(SubLineItemGrid)\n);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n findLineItem,\n findReplacementLineItems,\n findSection,\n findSubLineItems,\n getSectionPath\n} from \"shared/selectors/unit\";\nimport { Button, Grid, Header, Icon, Label, Segment } from \"semantic-ui-react\";\n\nimport { FormattedMessage } from \"react-intl\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\nimport { handleScrollTop } from \"shared/helpers/scrollTo\";\nimport { toggleConfirmationDialog } from \"shared/components/dialogs/ConfirmationDialogContainer\";\nimport { roomBookController } from \"shared/actions/roomBookController\";\nimport { withRouter } from \"../../helpers/withRouter\";\nimport CatalogPage from \"./CatalogPage\";\nimport CardGrid from \"../cardGrid/CardGrid\";\nimport ProductOptions from \"./ProductOptions\";\nimport LineItemList from \"./LineItemList\";\n\nimport { navigationButton } from \"../../helpers/navigationButton\";\n\nimport SubLineItemGrid from \"./SubLineItemGrid\";\n\nimport \"./lineItemPage.scss\";\n\nclass LineItemPage extends React.Component {\n renderTopMessage = () => {\n const { lineItem, subLineItems, replacableLineItem } = this.props;\n if (\n !lineItem.isPriceOnRequest &&\n (lineItem.isReplacement ||\n (lineItem.isOptional && subLineItems.length > 1))\n ) {\n return (\n \n \n \n \n
    \n Basispreis {lineItem.title}\n
    \n \n
    \n
    \n {lineItem.isReplacement && (\n \n \n

    \n Der Entfall der Standardleistung \"{replacableLineItem.title}\n \" wurde im Basispreis berücksichtigt.\n

    \n
    \n
    \n )}\n
    \n
    \n );\n }\n };\n\n renderBody = () => {\n const { subLineItems, lineItem } = this.props;\n if (subLineItems.length === 1 && !lineItem.isCompactDisplay) {\n return this.renderProductOptions(subLineItems[0]);\n }\n return this.renderSubLineItemMenu(subLineItems);\n };\n\n renderBottomMessage = () => {\n const { lineItem } = this.props;\n\n if (lineItem.isOptional && !lineItem.isProgressed) {\n return (\n
    \n \n
    \n );\n }\n };\n\n renderReplacementLineItems = () => {\n const { replacementLineItems, lineItem } = this.props;\n\n if (replacementLineItems.length) {\n return (\n
    \n
    Alternative Ausstattungsmöglichkeiten
    \n \n
    \n );\n }\n };\n\n renderProductOptions = subLineItem => {\n const { lineItem } = this.props;\n const field = lineItem.isReplacement ? \"relativeTotal\" : \"total\";\n return ;\n };\n\n renderSubLineItemMenu = subLineItems => {\n const { lineItem, lineItemPath } = this.props;\n if (lineItem.isCompactDisplay) {\n return ;\n }\n const items = subLineItems.map(subLineItem => {\n const isBasePrice = lineItem.isOptional && !subLineItem.isDecided;\n\n return {\n key: subLineItem.id,\n title: subLineItem.title,\n imageUrl: subLineItem.thumbUrl,\n imageClass: \"productImage\",\n total: isBasePrice ? 0 : subLineItem.totalRelative,\n isBasePrice: false,\n isPriceOnRequest: subLineItem.isPriceOnRequest,\n url: `${lineItemPath}/sub_line_item/${subLineItem.id}`,\n button: navigationButton({ ...subLineItem, isOptional: false })\n };\n });\n\n return ;\n };\n\n deactivateLineItem = () => {\n const {\n lineItem,\n subLineItems,\n ctrl,\n confirmationDialog,\n sectionPath,\n router\n } = this.props;\n const subLineItemIds = subLineItems.map(sli => sli.id);\n confirmationDialog({\n title: (\n \n ),\n content: (\n \n ),\n buttons: [\n {\n id: \"remove\",\n label: \"meta.actions.unlink\",\n onClick: cb => {\n ctrl.deselectProducts(subLineItemIds).then(() => {\n ctrl.deactivateLineItem(lineItem.id).then(() => {\n cb();\n handleScrollTop();\n router.push(sectionPath);\n });\n });\n }\n },\n {\n id: \"cancel\",\n label: \"meta.actions.cancel\",\n basic: true\n }\n ]\n });\n };\n\n render() {\n return (\n \n {this.renderTopMessage()}\n {this.renderBody()}\n {this.renderBottomMessage()}\n {this.renderReplacementLineItems()}\n \n );\n }\n}\n\nLineItemPage.propTypes = {\n subLineItems: PropTypes.array.isRequired\n};\n\nconst mapStateToProps = (state, props) => {\n const { sectionId, lineItemId } = props.params;\n const section = findSection(state)(sectionId);\n const lineItem = findLineItem(state)(lineItemId);\n const replacableLineItem = findLineItem(state)(lineItem.replacementToId);\n const subLineItems = findSubLineItems(state)(lineItemId).filter(sli => {\n return sli.isVisible && sli.isConfigurable;\n });\n const replacementLineItems = findReplacementLineItems(state)(\n lineItemId\n ).filter(rli => rli.isVisible);\n const sectionPath = getSectionPath(props);\n const { pathname } = props.location;\n return {\n section,\n lineItem,\n subLineItems,\n sectionPath,\n replacementLineItems,\n replacableLineItem,\n lineItemPath: pathname\n };\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n return {\n ctrl: roomBookController(dispatch, props.params.id),\n confirmationDialog: toggleConfirmationDialog(dispatch)\n };\n};\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(LineItemPage)\n);\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport moment from \"moment\";\nimport { Card, Icon, Grid, Loader } from \"semantic-ui-react\";\n\nimport \"./attachmentCard.scss\";\n\nclass AttachmentCard extends Component {\n static propTypes = {\n attachment: PropTypes.object\n };\n\n constructor(props) {\n super(props);\n\n this.state = { loading: false };\n }\n\n render() {\n const { attachment } = this.props;\n const { loading } = this.state;\n return (\n attachment &&\n attachment.id && (\n \n \n \n \n {loading && }\n \n \n \n \n \n
    {attachment.display_name}
    \n
    \n \n \n \n \n \n
    \n
    \n \n )\n );\n }\n}\n\nexport default AttachmentCard;\n","import PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { Card } from \"semantic-ui-react\";\nimport AttachmentCard from \"./AttachmentCard\";\n\nimport \"./attachmentCards.scss\";\n\nclass AttachmentCards extends Component {\n static propTypes = {\n attachments: PropTypes.array,\n attachmentsPerRow: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n }\n\n render() {\n const { attachments } = this.props;\n return (\n \n {attachments &&\n attachments.length &&\n attachments.map(attachment => (\n \n ))}\n \n );\n }\n}\n\nexport default AttachmentCards;\n","import React, { useState, useEffect } from \"react\";\nimport { get, groupBy } from \"lodash\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Container, Loader, Header, Icon, Grid } from \"semantic-ui-react\";\nimport AttachmentCards from \"./AttachmentCards\";\nimport \"./attachments.scss\";\nimport { I18nShape } from \"../../../shared/shapes/i18n.shape\";\nimport { AccountShape } from \"../../../shared/shapes\";\nimport { DEPRECATED_PageContentShape } from \"../../../shared/shapes/deprecated_pageContent.shape\";\n\nfunction Attachments(props) {\n const [isLoading, setIsLoading] = useState(false);\n\n const { account, pageContent, i18n } = props;\n const attachments = get(pageContent, \"attachments\");\n\n useEffect(() => {\n if (!account) {\n setIsLoading(true);\n } else {\n setIsLoading(false);\n }\n }, [account]);\n if (isLoading) {\n return ;\n }\n\n const groupedAttachments = groupBy(attachments, attachment => {\n return attachment.role;\n });\n\n const attachmentTypes =\n get(account, [\"config\", \"attachment_types\"]) ||\n get(pageContent, [\"attachment_types\"], []);\n\n const groups = attachmentTypes.reduce((accu, attachmentType) => {\n const attachmentsForType = groupedAttachments[attachmentType.id];\n\n if (attachmentsForType?.length > 0) {\n accu.push(\n
    \n
    \n {attachmentType.label}\n
    \n \n
    \n );\n }\n\n return accu;\n }, []);\n\n return (\n \n
    \n \n
    \n \n \n {groups}\n {attachments && attachments.length === 0 && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n );\n}\n\nAttachments.defaultProps = {\n pageContent: {}\n};\n\nAttachments.propTypes = {\n i18n: I18nShape.isRequired,\n pageContent: DEPRECATED_PageContentShape,\n account: AccountShape.isRequired\n};\n\nexport default Attachments;\n","import { connect } from \"react-redux\";\nimport { get } from \"lodash\";\nimport Attachments from \"buyer_portal/components/attachment/Attachments\";\nimport { getPageTitle } from \"shared/selectors/unit\";\n\nconst mapStateToProps = (state, props) => {\n const { id } = props.params;\n const { i18n, pageContent } = state;\n\n return {\n id,\n i18n,\n pageContent,\n account: get(state, \"account.account\"),\n pageTitle: getPageTitle(state, props)\n };\n};\n\nexport default connect(mapStateToProps)(Attachments);\n","const getUnitId = (state, props) => {\n return props.unitId ?? props.routeParams?.id ?? props.params?.id;\n};\n\nexport default getUnitId;\n","import React from \"react\";\nimport { shape, string, func, number, bool } from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport FormatCurrency from \"shared/components/currency/FormatCurrency\";\nimport { Card, Button, Label, Icon } from \"semantic-ui-react\";\nimport ConfiguratorImage from \"shared/components/configurator/ConfiguratorImage\";\nimport { getConfiguratorCardInfo, getI18N } from \"shared/selectors\";\nimport { createStructuredSelector } from \"reselect\";\nimport { I18nShape } from \"../../shapes\";\n\nconst ConfiguratorCard = ({\n i18n,\n configuratorInfo,\n configuratorId,\n roomId,\n configuratorTitle,\n onClick\n}) => {\n const { configured, total } = configuratorInfo;\n const buttonColor = configured ? \"primary\" : null;\n const buttonIcon = configured ? \"checkmark\" : \"cogs\";\n const buttonContent = configured\n ? i18n[\"buyerPortal.actions.configured\"]\n : i18n[\"buyerPortal.actions.configure\"];\n\n const displayAmount = total >= 0 ? total : -total;\n const displayIcon = total >= 0 ? \"plus\" : \"minus\";\n\n return (\n \n \n {configuratorTitle}\n \n \n {({ imageURL }) => {\n return (\n \n \n \n );\n }}\n \n \n \n );\n};\n\nConfiguratorCard.propTypes = {\n i18n: I18nShape.isRequired,\n configuratorInfo: shape({\n total: number,\n configured: bool\n }).isRequired,\n configuratorId: string.isRequired,\n onClick: func.isRequired,\n roomId: string.isRequired,\n configuratorTitle: string.isRequired\n};\n\nconst getConfiguratorInfo = createStructuredSelector({\n i18n: getI18N,\n configuratorInfo: getConfiguratorCardInfo\n});\n\nexport default connect(getConfiguratorInfo)(ConfiguratorCard);\n","import { instanceOf, string } from \"prop-types\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { createStructuredSelector } from \"reselect\";\nimport { Card, Header } from \"semantic-ui-react\";\nimport { FormattedMessage } from \"react-intl\";\nimport getUnitId from \"../v2/getUnitId\";\nimport ConfiguratorCard from \"./ConfiguratorCard\";\nimport { getConfigurators, getProjectId } from \"../../selectors\";\nimport Configurator from \"../configurator/Configurator\";\nimport { withRouter } from \"../../helpers/withRouter\";\n\nfunction ConfiguratorsMenu({ configurators, only3D, projectId, unitId }) {\n const renderConfiguratorCard = configurator => {\n const configuratorId = configurator.id;\n const trigger = (\n \n );\n\n return (\n \n );\n };\n\n if (only3D) {\n // legacy support: fallback to first configurator if just \"true\" was given instead\n const configuratorId = configurators.has(only3D)\n ? only3D\n : configurators.values().next().value.id;\n\n return (\n \n );\n }\n\n return configurators.size === 0 ? null : (\n
    \n
    \n \n
    \n \n {Array.from(configurators.values(), configurator =>\n renderConfiguratorCard(configurator)\n )}\n \n
    \n );\n}\n\nconst mapStateToProps = createStructuredSelector({\n configurators: getConfigurators,\n unitId: getUnitId,\n projectId: getProjectId\n});\n\nConfiguratorsMenu.propTypes = {\n unitId: string.isRequired,\n projectId: string.isRequired,\n configurators: instanceOf(Map).isRequired,\n only3D: string\n};\n\nConfiguratorsMenu.defaultProps = {\n only3D: \"\"\n};\n\nexport default withRouter(connect(mapStateToProps)(ConfiguratorsMenu));\n","import { string } from \"prop-types\";\nimport React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Button, Header } from \"semantic-ui-react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router\";\nimport CatalogPage from \"../roomBook/CatalogPage\";\nimport ConfiguratorsMenu from \"./ConfiguratorsMenu\";\nimport SectionMenu from \"./SectionMenu\";\nimport {\n getPageTitle,\n getUnit,\n getUnitPath,\n isReady\n} from \"../../selectors/unit\";\nimport { getOnly3D } from \"../../selectors/unit/unit\";\nimport { getProductLine } from \"../../selectors/unit/productLines\";\nimport { ProductLineShape } from \"../../shapes/productLine.shape\";\nimport { UnitShape } from \"../../shapes\";\nimport ProductLinePicker from \"../productLine/productLinePicker\";\n\nfunction Unit({ unit, unitPath, only3D, productLine }) {\n const title = unit.sample ? unit.description : unit.display_name;\n\n if (only3D) return ;\n return (\n
    \n {productLine?.mode === \"required\" &&\n !(productLine?.selectedTags.length > 0) ? (\n \n ) : (\n \n
    \n {productLine?.name_plural && (\n \n )}\n
    \n \n\n
    \n - {title}\n
    \n\n \n
    \n )}\n
    \n );\n}\n\nUnit.propTypes = {\n unit: UnitShape.isRequired,\n unitPath: string.isRequired,\n only3D: string,\n productLine: ProductLineShape\n};\nUnit.defaultProps = {\n only3D: \"\",\n productLine: undefined\n};\n\nconst mapStateToProps = (state, props) => {\n return {\n unit: getUnit(state),\n unitPath: getUnitPath(props),\n pageTitle: getPageTitle(state, props),\n isReady: isReady(state),\n only3D: getOnly3D(props),\n productLine: getProductLine(state, props)\n };\n};\n\nexport default connect(mapStateToProps)(Unit);\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport { Header } from \"semantic-ui-react\";\n\nclass ErrorPage extends React.Component {\n render() {\n return (\n
    \n
    404
    \n
    \n \n
    \n
    \n );\n }\n}\n\nexport default ErrorPage;\n","import { connect } from \"react-redux\";\nimport ErrorPage from \"../../components/errorPage/ErrorPage\";\n\n// Which part of the Redux global state does our component want to receive as props?\nconst mapStateToProps = () => {\n return {};\n};\n\nexport default connect(mapStateToProps)(ErrorPage);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Loader, Message } from \"semantic-ui-react\";\nimport Branding from \"shared/selectors/branding\";\n\nexport default class UnitAwarePage extends React.Component {\n static propTypes = {\n i18n: PropTypes.object.isRequired,\n loadUnit: PropTypes.func.isRequired,\n children: PropTypes.object.isRequired,\n isReady: PropTypes.bool.isRequired,\n branding: PropTypes.instanceOf(Branding).isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n componentDidMount() {\n const { loadUnit, branding } = this.props;\n\n this.setState({ isLoading: true });\n loadUnit(true, branding.getGlencoeURL())\n .then(() => this.setState({ isLoading: false }))\n .catch(() => this.setState({ isLoading: false }));\n }\n\n render() {\n const { isLoading } = this.state;\n const { children, isReady, i18n } = this.props;\n\n if (isLoading) {\n return (\n // TODO: formattedMessage\n \n Ihre Wohnung wird geladen\n \n );\n }\n if (isReady) {\n return
    {children}
    ;\n }\n return (\n \n );\n }\n}\n","import { connect } from \"react-redux\";\nimport ConfiguratorActions from \"../../../buyer_portal/actions/configuratorActions\";\nimport UnitAwarePage from \"../../components/roomBook/UnitAwarePage\";\nimport {\n CATALOG_RESOURCE,\n getResource,\n LINE_ITEM_RESOURCE,\n UNIT_RESOURCE\n} from \"../../actions/actionLocator\";\nimport { SectionCompletedResource } from \"../../actions/localTableResource\";\nimport { isReady } from \"../../selectors/unit\";\nimport { getProjectBranding } from \"../../selectors\";\n\nconst mapStateToProps = (state, props) => {\n return {\n i18n: state.i18n,\n isReady: isReady(state),\n branding: getProjectBranding(state, props)\n };\n};\n\nconst mapDispatchToProps = (dispatch, props) => {\n const { id, projectId } = props.params;\n\n const UnitsResource = getResource(UNIT_RESOURCE);\n const CatalogsResource = getResource(CATALOG_RESOURCE);\n const LineItemResource = getResource(LINE_ITEM_RESOURCE);\n\n return {\n loadUnit: (deep, glencoeURL) => {\n return Promise.all([\n new UnitsResource(dispatch, projectId).get(id, deep),\n new ConfiguratorActions(dispatch, glencoeURL).getMapping(),\n new CatalogsResource(dispatch, id).get(),\n new LineItemResource(dispatch, id).get(),\n new SectionCompletedResource(dispatch).get()\n ]);\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UnitAwarePage);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nclass Imprint extends React.Component {\n static propTypes = {\n branding: PropTypes.object\n };\n\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n render() {\n const { branding } = this.props;\n const content = (branding.account.imprint || \"\").replace(/\\n/g, \"
    \");\n return (\n
    \n

    Impressum

    \n
    \n
    \n );\n }\n}\n\nexport default Imprint;\n","import { connect } from \"react-redux\";\nimport { get } from \"lodash\";\nimport Imprint from \"../../components/pages/Imprint\";\n\n// Which part of the Redux global state does our component want to receive as props?\nconst mapStateToProps = state => {\n return {\n branding: get(state, \"branding\")\n };\n};\n\nexport default connect(mapStateToProps)(Imprint);\n","import {\n getHandleDeleteFailed,\n getHandleUpdateFailed\n} from \"shared/actions/resourcesErrorHandling\";\nimport apiRequest from \"../network/apiRequest\";\nimport { UPDATE_PAGE_CONTENT } from \"../constants/appConstants\";\nimport serialize from \"../helpers/serialize\";\n\nclass Resource {\n constructor(dispatch, namespace, url, reduxProperty) {\n this.dispatch = dispatch;\n this.namespace = namespace;\n this.reduxProperty = reduxProperty;\n this.url = url;\n this.handleUpdateFailed = getHandleUpdateFailed(dispatch);\n this.handleDeleteFailed = getHandleDeleteFailed(dispatch);\n }\n\n propagateUpdate(response) {\n switch (response.status) {\n case 401: // unauthorized fall-through\n case 404: // not found fall-through\n case 200: {\n // write data to store\n let payload;\n if (this.reduxProperty) {\n payload = {\n [this.reduxProperty]: response.data || undefined\n };\n } else {\n payload = response.data || undefined;\n }\n this.dispatch({\n type: UPDATE_PAGE_CONTENT,\n payload\n });\n break;\n }\n }\n return response;\n }\n\n save(values) {\n const payload = {};\n payload[this.namespace] = values;\n const request = apiRequest\n .patch(`${this.url}`, this.dispatch, payload)\n .catch(this.handleUpdateFailed);\n if (this.refreshPageContentAfterCommit) {\n return request.then(this.propagateUpdate.bind(this));\n }\n return request;\n }\n\n create(values) {\n const payload = {};\n payload[this.namespace] = values;\n const request = apiRequest.post(`${this.url}`, this.dispatch, payload);\n if (this.refreshPageContentAfterCommit) {\n return request.then(this.propagateUpdate.bind(this));\n }\n return request;\n }\n\n get(deep, params) {\n let { url } = this;\n params = params || {};\n if (deep) {\n params.deep = deep;\n }\n if (params && Object.keys(params).length > 0) {\n url = `${url}?${serialize(params)}`;\n }\n return apiRequest\n .get(url, this.dispatch)\n .then(this.propagateUpdate.bind(this));\n }\n\n remove() {\n return apiRequest\n .delete(this.url, this.dispatch)\n .then(this.propagateUpdate.bind(this))\n .catch(this.handleDeleteFailed);\n }\n\n update(values) {\n const payload = {};\n payload[this.namespace] = values;\n const request = apiRequest.patch(`${this.url}`, this.dispatch, payload);\n\n if (this.refreshPageContentAfterCommit) {\n return request.then(this.propagateUpdate.bind(this));\n }\n return request;\n }\n}\n\nexport default Resource;\n","import { createSelector } from \"reselect\";\n\nexport const getIsLoading = state => state.isLoading;\n\nexport const createIsLoadingSelector = regExp =>\n createSelector(getIsLoading, isLoading =>\n Object.keys(isLoading)\n .filter(key => regExp.test(key))\n .some(key => isLoading[key])\n );\n","import { createSelector } from \"reselect\";\nimport { getPageContent } from \"shared/selectors/base\";\nimport { get } from \"lodash\";\n\nexport const getSupplierIntegrationSuppliers = createSelector(\n getPageContent,\n pageContent => get(pageContent, \"supplierIntegration.suppliers\", [])\n);\n\nexport const getSupplierIntegrationSupplier = createSelector(\n getPageContent,\n pageContent => get(pageContent, \"supplierIntegration.supplier\")\n);\n\nexport const getSupplierIntegrationSeries = createSelector(\n getPageContent,\n pageContent => get(pageContent, \"supplierIntegration.serie\")\n);\n","import { get } from \"lodash\";\n\nexport const getContractors = state => {\n return get(state, \"pageContent.contractors\", []);\n};\n\nexport const getContractorAssignments = state => {\n return get(state, \"pageContent.contractor_assignments\", []);\n};\n","import { createSelector } from \"reselect\";\nimport { get, sortBy } from \"lodash\";\nimport { getPageContent } from \"./base\";\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getMacros = createSelector([getPageContent], pageContent => {\n return sortBy(get(pageContent, \"macros\", []), macro => macro.name);\n});\n","import { get } from \"lodash\";\n\nexport const getProjectCatalogs = state =>\n get(state, [\"pageContent\", \"project_catalogs\"], []);\n\nexport default getProjectCatalogs;\n","/* eslint-disable import/prefer-default-export */\nimport { createSelector } from \"reselect\";\nimport { getPageContent } from \"./base\";\n\nexport const getDocumentationItems = createSelector(\n [getPageContent],\n pageContent => {\n return pageContent?.documentation_items || [];\n }\n);\n","import { arrayOf, number, shape, string } from \"prop-types\";\nimport PriceStrategyShape from \"../buyer_portal/components/inquiry/priceStrategy.shape\";\n\nexport default shape({\n inquiryId: string,\n subLineItemId: string,\n productId: string,\n supplier: string,\n series: string,\n name: string,\n sku: string,\n thumbUrl: string,\n description: string,\n quantity: number,\n priceStrategy: PriceStrategyShape,\n productSpecifications: arrayOf(\n shape({\n specification: string,\n trade: string\n })\n )\n});\n","import {\n arrayOf,\n bool,\n number,\n objectOf,\n oneOf,\n shape,\n string\n} from \"prop-types\";\nimport ProductShape from \"../../../contractor_portal/product.shape\";\n\nexport const ViewShape = shape({\n title: string,\n room: string,\n productCategories: arrayOf(string),\n relevantCategories: objectOf(string),\n defaultImages: objectOf(string) // key is string of Categories\n});\n\nexport const PriceStrategyShape = oneOf([\n \"length\",\n \"pieces\",\n \"area\",\n \"flat\",\n \"hour\",\n \"individual\"\n]);\nexport const SubLineItemShape = shape({\n selection_is_confirmed: bool,\n default_price: number,\n default_product_id: number,\n default_quantity: number,\n description: string,\n display_number: string,\n excess_price: number,\n id: number,\n optional: bool,\n position: number,\n price: number,\n price_strategy: PriceStrategyShape,\n product_group_id: number,\n product_id: number,\n total: number,\n title: string,\n instructions: string,\n quantity: number,\n priceStrategy: PriceStrategyShape,\n displayNumber: string,\n product: ProductShape,\n costTrades: arrayOf(shape({ id: string, label: string }))\n});\n\nexport const LineItemShape = shape({\n activated: bool,\n cancelled: bool,\n display_mode: oneOf([\"cards\", \"compact_list\", \"mandatory\"]),\n display_number: string,\n external_status: oneOf([\"open\"]),\n id: number,\n optional: bool,\n position: number,\n replaced: bool,\n replacement: bool,\n replacement_for_id: number,\n status: string,\n sub_line_items: arrayOf(SubLineItemShape),\n title: string\n});\nconst abstractSectionShape = {\n id: number,\n title: string,\n display_number: string,\n position: number\n};\n\nexport const SubSectionShape = shape({\n ...abstractSectionShape,\n line_items: arrayOf(LineItemShape)\n});\nexport const SectionShape = shape({\n ...abstractSectionShape,\n sections: arrayOf(SubSectionShape)\n});\n\nexport const RoomBookShape = shape({\n id: number,\n source_id: number,\n sections: arrayOf(SectionShape)\n});\n","import { createSelector } from \"reselect\";\nimport {\n get,\n keyBy,\n groupBy,\n takeRightWhile,\n reverse,\n takeWhile,\n max\n} from \"lodash\";\n\nimport { getState } from \"../base\";\nimport { getFlatRoomBook } from \"./base\";\nimport { getLineItemStatus, getStatus } from \"./status\";\nimport { findSubLineItems } from \"./subLineItems\";\n\n//* *****************************************************************************\nconst applyBaseInfo = (state, raw) => {\n return {\n id: raw.id,\n title: raw.title,\n isRoot: false,\n isCancelled: raw.cancelled,\n isOptional: raw.optional,\n isActivated: !raw.optional, // do not care if activated in backend\n isBackendActivated: raw.activated,\n sectionId: raw.section_id,\n replacementToId: raw.replacement_for_id,\n isReplacement: raw.replacement,\n isReplaced: false, // do not care if replaced in backend\n isCompactDisplay: get(raw, \"display_mode\") === \"compact_list\",\n isMandatoryDisplay: get(raw, \"display_mode\") === \"mandatory\"\n };\n};\n\nconst applyDerivedInfos = (state, raw, lineItem) => {\n const subLineItems = findSubLineItems(state)(lineItem.id);\n\n const info = {\n total: 0,\n totalBase: 0,\n totalMin: 0,\n totalDefault: 0,\n subLineItemCount: 0,\n isVisible: false,\n isActivated: lineItem.isActivated,\n isOptional: lineItem.isOptional,\n isReplaced: lineItem.isReplaced,\n isDecided: true,\n hasBuyerSelection: false,\n thumbUrl: null,\n isValid: true,\n isConfigurable: false,\n isProgressed: false,\n isPriceOnRequest: false,\n subLineItemIds: []\n };\n\n subLineItems.forEach(subLineItem => {\n info.totalBase += subLineItem.totalBase;\n info.totalMin += subLineItem.totalMin;\n info.totalDefault += subLineItem.totalDefault;\n\n if (subLineItem.isVisible) {\n info.isActivated =\n info.isActivated ||\n (subLineItem.isConfigurable && subLineItem.isDecided);\n info.subLineItemCount += 1;\n info.total += subLineItem.total;\n info.isVisible = info.isVisible || subLineItem.isVisible;\n info.isDecided = info.isDecided && subLineItem.isDecided;\n info.hasBuyerSelection =\n info.hasBuyerSelection || !!subLineItem.hasBuyerSelection;\n info.thumbUrl = info.thumbUrl || subLineItem.thumbUrl;\n info.imageClass = \"productImage\";\n info.isValid = info.isValid && subLineItem.isValid;\n info.isConfigurable = info.isConfigurable || subLineItem.isConfigurable;\n info.isProgressed = info.isProgressed || subLineItem.isProgressed;\n info.isPriceOnRequest =\n info.isPriceOnRequest || subLineItem.isPriceOnRequest;\n info.subLineItemIds = info.subLineItemIds.concat([subLineItem.id]);\n }\n });\n\n return info;\n};\n\nconst applyStatus = (state, raw, lineItem) => {\n const status = getLineItemStatus(state)(lineItem);\n const finalStatusId = status.selectable\n ? lineItem.hasBuyerSelection\n ? \"selected\"\n : \"open\"\n : status.id;\n const finalStatus = getStatus(state)(finalStatusId);\n\n return {\n status: finalStatus\n };\n};\n\nconst MAPPER = [applyBaseInfo, applyDerivedInfos, applyStatus];\n\n//* *****************************************************************************\n\nconst preparedLineItems = createSelector(\n [getFlatRoomBook, getState],\n (roomBook, state) => {\n const lineItems = roomBook.lineItems.map(raw => {\n return MAPPER.reduce((lineItem, mapper) => {\n return Object.assign(lineItem, mapper(state, raw, lineItem));\n }, {});\n });\n\n const lineItemsById = keyBy(lineItems, \"id\");\n\n // We need to change lineItems and replaced line items here, so we cannot create new objects here\n /* eslint-disable no-param-reassign */\n lineItems.forEach(lineItem => {\n if (lineItem.isReplacement) {\n const replacable = lineItemsById[lineItem.replacementToId];\n lineItem.replacementTo = replacable;\n\n if (!lineItem.isPriceOnRequest) {\n lineItem.totalRefund =\n lineItem.totalDefault - replacable.totalDefault;\n if (lineItem.isActivated) {\n lineItem.total =\n lineItem.totalRefund + max([lineItem.total, lineItem.totalMin]);\n } else {\n lineItem.total = 0;\n }\n lineItem.totalMin = lineItem.totalRefund + lineItem.totalMin;\n }\n replacable.isReplaced = replacable.isReplaced || lineItem.isActivated;\n if (lineItem.isActivated) {\n replacable.replacedById = lineItem.id;\n } else if (replacable.replacedById === lineItem.id) {\n replacable.replacedById = null;\n }\n replacable.isActivated =\n replacable.isActivated && !replacable.isReplaced;\n replacable.isDecided = replacable.isDecided || replacable.isReplaced;\n }\n if (lineItem.isOptional) {\n if (lineItem.isActivated) {\n lineItem.total = max([lineItem.total, lineItem.totalMin]);\n } else {\n lineItem.total = 0;\n }\n }\n });\n /* eslint-enable no-param-reassign */\n\n return lineItems;\n }\n);\n\nexport const getLineItems = createSelector([preparedLineItems], lineItems => {\n return lineItems;\n});\n\nconst getLineItemsById = createSelector([getLineItems], lineItems => {\n return keyBy(lineItems, \"id\");\n});\n\nconst getLineItemsBySectionId = createSelector([getLineItems], lineItems => {\n return groupBy(lineItems, \"sectionId\");\n});\n\nexport const findLineItem = state => {\n return lineItemId => {\n return getLineItemsById(state)[lineItemId];\n };\n};\n\nexport const findLineItems = state => {\n return sectionId => {\n return getLineItemsBySectionId(state)[sectionId] || [];\n };\n};\n\nexport const getPrevSibling = (state, lineItem) => {\n const siblings = getLineItemsBySectionId(state)[lineItem.sectionId] || [];\n return reverse(takeWhile(siblings, sibling => sibling.id !== lineItem.id))[0];\n};\n\nexport const getNextSibling = (state, lineItem) => {\n const siblings = getLineItemsBySectionId(state)[lineItem.sectionId] || [];\n return takeRightWhile(siblings, sibling => sibling.id !== lineItem.id)[0];\n};\n\nexport const findReplacementLineItems = createSelector(\n [getLineItems],\n lineItems => {\n const lineItemsByReplacementId = groupBy(\n lineItems.filter(li => li.replacementToId),\n \"replacementToId\"\n );\n\n return lineItemId => {\n return lineItemsByReplacementId[lineItemId] || [];\n };\n }\n);\n","import apiRequest from \"../../shared/network/apiRequest\";\nimport Resources from \"../../shared/actions/resourcesActions\";\nimport { UPDATE_MESSAGE } from \"../../shared/constants/appConstants\";\n\nexport class ProductResource extends Resources {\n constructor(dispatch) {\n super(dispatch, \"product\", \"/api/v1/products\");\n }\n\n createMultiple(products) {\n return apiRequest\n .put(`${this.url}/create_multiple`, this.dispatch, { products })\n .then(({ data: { count } }) => {\n this.dispatch({\n type: UPDATE_MESSAGE,\n payload: {\n type: \"success\",\n title: \"supplierIntegration.transfer.title\",\n body: \"supplierIntegration.transfer.body\",\n bodyValues: { count }\n }\n });\n })\n .catch(this.handleUpdateFailed);\n }\n\n references(id) {\n return apiRequest\n .get(`${this.url}/${id}/references`, this.dispatch)\n .then(this.propagateUpdate.bind(this));\n }\n\n productsByManufacturerSeries(id, supplierId, series) {\n return apiRequest\n .get(\n `${this.url}/products_by_manufacturer_series?supplier_id=${supplierId}&series=${series}&id=${id}`,\n this.dispatch\n )\n .then(this.propagateUpdate.bind(this));\n }\n}\n\nexport class ProductSpecificationResource extends Resources {\n constructor(dispatch, productId) {\n super(\n dispatch,\n \"specification\",\n `/api/v1/products/${productId}/specifications`\n );\n this.refreshPageContentAfterCommit = true;\n }\n}\n\nexport class ProductImageResource extends Resources {\n constructor(dispatch, productId) {\n super(dispatch, \"image\", `/api/v1/products/${productId}/images`);\n }\n}\n\nexport class ProductVideosResource extends Resources {\n constructor(dispatch, productId) {\n super(dispatch, \"video\", `/api/v1/products/${productId}/videos`);\n }\n}\n\nexport class ProductFilesResource extends Resources {\n constructor(dispatch, productId) {\n super(\n dispatch,\n \"product_file\",\n `/api/v1/products/${productId}/product_files`\n );\n }\n}\n\nexport class ProductMetaDataResource extends Resources {\n constructor(dispatch) {\n super(\n dispatch,\n \"products_meta_data\",\n `/api/v1/products/products_meta_data`\n );\n }\n}\n\nexport class SupplierResource extends Resources {\n constructor(dispatch) {\n super(dispatch, \"supplier\", \"/api/v1/suppliers\");\n }\n}\n","// requires withRouter() properties\nimport { findSection } from \"./sections\";\nimport { findLineItem } from \"./lineItems\";\n\nexport const getUnitPath = props => {\n const { projectId, id } = props.params;\n // basename may `undefined` on Testing environment, using `createMemoryHistory`\n const { pathname, basename } = props.location;\n\n const isMarketingUnit =\n basename?.includes(\"/mp/\") &&\n pathname?.includes(`${projectId}/musterwohnung/`);\n\n if (isMarketingUnit) {\n return `/${projectId}/musterwohnung/${id}`;\n }\n\n return `/${projectId}/unit/${id}`;\n};\n\nexport const makeSectionPath = (props, sectionId) => {\n return `${getUnitPath(props)}/section/${sectionId}`;\n};\n\nexport const getSectionPath = props => {\n const { sectionId } = props.params;\n return makeSectionPath(props, sectionId);\n};\n\nexport const makeLineItemPath = (props, lineItemId) => {\n return `${getSectionPath(props)}/line_item/${lineItemId}`;\n};\n\nexport const getLineItemPath = props => {\n const { lineItemId } = props.params;\n return makeLineItemPath(props, lineItemId);\n};\n\nexport const makeSubLineItemPath = (props, subLineItemId) => {\n return `${getLineItemPath(props)}/sub_line_item/${subLineItemId}`;\n};\n\nexport const getSubLineItemPath = props => {\n const { subLineItemId } = props.params;\n return makeSubLineItemPath(props, subLineItemId);\n};\n\nexport const getProductLinesPath = props => {\n return `${getUnitPath(props)}/product_line`;\n};\n\nexport function getBreadcrumbPartials(state) {\n return ({ to }) => {\n const section = findSection(state)(to.section_id);\n const subSection = findSection(state)(to.sub_section_id);\n const lineItem = findLineItem(state)(to.line_item_id);\n const subLineItem = to;\n\n return [\n { key: `${section.id}`, content: `${section.title}` },\n { key: `${subSection.id}`, content: `${subSection.title}` },\n { key: `${lineItem.id}`, content: `${lineItem.title}` },\n { key: `${subLineItem.id}`, content: `${subLineItem.title}` }\n ];\n };\n}\n","import { get, keyBy } from \"lodash\";\nimport ProcessDefinition from \"./processDefinition\";\n\nexport class Account {\n constructor(data, i18n, pageContent) {\n this.data = data;\n this.i18n = i18n;\n this.pageContent = pageContent;\n this.processDefinitions = {};\n }\n\n getProcessDefinitions() {\n return get(this.data, \"account.config.processes\", []).map(proc => {\n return this.getProcessDefinition(proc.process_type);\n });\n }\n\n getAssignableProcessDefinitions(status) {\n return this.getProcessDefinitions().filter(pd => {\n return !pd.isDeprecated() && pd.handlesStatus(status);\n });\n }\n\n getProcessDefinition(name) {\n this.processDefinitions[name] =\n this.processDefinitions[name] ||\n new ProcessDefinition(name, this, this.i18n);\n return this.processDefinitions[name];\n }\n\n getLineItemLifeCycle() {\n const data = get(this.data, \"account.config.line_items\", {\n phases: [],\n states: []\n });\n const lc = {\n getPhases: () => {\n return data.phases;\n },\n getPhase: id => {\n return data.phases.filter(phase => {\n return phase.id == id;\n })[0];\n },\n getStateById: id => {\n return lc.getStates().filter(state => {\n return state.id == id;\n })[0];\n },\n getStates: () => {\n return data.states.map(state => {\n const phase = lc.getPhase(state.phase);\n return {\n ...state,\n phase_id: phase.id,\n phase_label: phase.label,\n phase_color: phase.color\n };\n });\n },\n getReportGroups: () => {\n return data.states.reduce((accu, state) => {\n (state.report_groups || []).forEach(group => {\n if (!accu[group]) {\n accu[group] = [];\n }\n accu[group].push(state.id);\n });\n\n return accu;\n }, {});\n }\n };\n\n return lc;\n }\n\n getTrades(includeNone) {\n const trades = get(this.data, \"account.config.contractors.trades\", []);\n\n if (includeNone) {\n trades.push({\n id: \"__NONE__\",\n label: \"Ohne Gewerk\"\n });\n }\n\n return trades;\n }\n\n getTradeById(id) {\n return this.getTradesDictionary()[id];\n }\n\n getProjects() {\n return get(this.data, \"account.projects\", []);\n }\n\n getTaxonomies() {\n return get(this.data, \"account.config.taxonomies\", []);\n }\n\n getTradesDictionary() {\n return keyBy(this.getTrades(), \"id\");\n }\n\n getDocumentTypes() {\n return get(this.data, [\"account\", \"config\", \"attachment_types\"], []);\n }\n\n getProjectStatusOptions() {\n return get(this.data, \"account.config.projects.status\", []).map(item => {\n return {\n key: item.id,\n value: item.id,\n text: item.label\n };\n });\n }\n\n getCurrentUser() {\n return get(this.data, \"user\", {});\n }\n\n getUsers() {\n return get(this.pageContent, \"users\", []);\n }\n\n getCurrentAccountRole() {\n return get(this.getCurrentAccount(), \"account_role\");\n }\n\n getCurrentAccount() {\n return get(this.data, \"account\", {});\n }\n\n isSystemAdmin() {\n return this.getCurrentUser().group === \"admin\";\n }\n\n isAdmin() {\n return this.getCurrentUser().role === \"admin\";\n }\n\n isProjectPage = () => {\n const path = window.location.pathname;\n const regexProjects = /^\\/projects/;\n return !!path.match(regexProjects);\n };\n\n getFeatureToggles() {\n const projectFeatureToggles = get(\n this.pageContent,\n \"project.features\",\n null\n );\n if (this.isProjectPage() && !!projectFeatureToggles)\n return projectFeatureToggles;\n return get(this.data, \"account.feature_toggles\", {});\n }\n\n isEnabled(feature) {\n return get(this.getFeatureToggles(), feature, false);\n }\n\n hasProjectRoles() {\n return this.getProjectRoles().length > 0;\n }\n\n hasProjectRoleRight(projectId, right) {\n const project = get(this.data, \"account.projects\", []).find(\n p => p.id === projectId || p.slug === projectId\n );\n return project && project.project_role[right];\n }\n\n getProjectRoles() {\n return get(this.data, \"account.config.project_roles\", []);\n }\n\n isNetAccounting() {\n return !get(\n this.getFeatureToggles(),\n \"show_reports_with_gross_amounts\",\n false\n );\n }\n\n hasAccountRoleRight(right) {\n return get(this.getCurrentAccountRole(), right, false);\n }\n\n hasEditProductsRight() {\n return this.hasAccountRoleRight(\"allow_edit_products\");\n }\n\n hasEditAccountsSettingsRight() {\n return this.hasAccountRoleRight(\"allow_edit_account_settings\");\n }\n\n hasEditContractorRoles() {\n return this.hasAccountRoleRight(\"allow_edit_contractors\");\n }\n\n hasAccessProjectCatalogRight() {\n return this.hasAccountRoleRight(\"allow_access_project_catalogs\");\n }\n\n hasAccessStatisticsCenterRight() {\n return this.hasAccountRoleRight(\"allow_access_statistics_center\");\n }\n\n hasAccessUnassignedEmailsRight() {\n return this.hasAccountRoleRight(\"allow_access_unassigned_emails\");\n }\n\n hasBetaPreviewRight() {\n return get(this.getCurrentUser(), \"beta_preview_right\", false);\n }\n\n hasAccessAPIDocumentationRight() {\n return this.hasAccountRoleRight(\"ext_allow_api_documentation\");\n }\n}\n\nexport default Account;\n","var map = {\n\t\"./af\": 369,\n\t\"./af.js\": 369,\n\t\"./ar\": 370,\n\t\"./ar-dz\": 371,\n\t\"./ar-dz.js\": 371,\n\t\"./ar-kw\": 372,\n\t\"./ar-kw.js\": 372,\n\t\"./ar-ly\": 373,\n\t\"./ar-ly.js\": 373,\n\t\"./ar-ma\": 374,\n\t\"./ar-ma.js\": 374,\n\t\"./ar-sa\": 375,\n\t\"./ar-sa.js\": 375,\n\t\"./ar-tn\": 376,\n\t\"./ar-tn.js\": 376,\n\t\"./ar.js\": 370,\n\t\"./az\": 377,\n\t\"./az.js\": 377,\n\t\"./be\": 378,\n\t\"./be.js\": 378,\n\t\"./bg\": 379,\n\t\"./bg.js\": 379,\n\t\"./bm\": 380,\n\t\"./bm.js\": 380,\n\t\"./bn\": 381,\n\t\"./bn-bd\": 382,\n\t\"./bn-bd.js\": 382,\n\t\"./bn.js\": 381,\n\t\"./bo\": 383,\n\t\"./bo.js\": 383,\n\t\"./br\": 384,\n\t\"./br.js\": 384,\n\t\"./bs\": 385,\n\t\"./bs.js\": 385,\n\t\"./ca\": 386,\n\t\"./ca.js\": 386,\n\t\"./cs\": 387,\n\t\"./cs.js\": 387,\n\t\"./cv\": 388,\n\t\"./cv.js\": 388,\n\t\"./cy\": 389,\n\t\"./cy.js\": 389,\n\t\"./da\": 390,\n\t\"./da.js\": 390,\n\t\"./de\": 391,\n\t\"./de-at\": 392,\n\t\"./de-at.js\": 392,\n\t\"./de-ch\": 393,\n\t\"./de-ch.js\": 393,\n\t\"./de.js\": 391,\n\t\"./dv\": 394,\n\t\"./dv.js\": 394,\n\t\"./el\": 395,\n\t\"./el.js\": 395,\n\t\"./en-au\": 396,\n\t\"./en-au.js\": 396,\n\t\"./en-ca\": 397,\n\t\"./en-ca.js\": 397,\n\t\"./en-gb\": 398,\n\t\"./en-gb.js\": 398,\n\t\"./en-ie\": 399,\n\t\"./en-ie.js\": 399,\n\t\"./en-il\": 400,\n\t\"./en-il.js\": 400,\n\t\"./en-in\": 401,\n\t\"./en-in.js\": 401,\n\t\"./en-nz\": 402,\n\t\"./en-nz.js\": 402,\n\t\"./en-sg\": 403,\n\t\"./en-sg.js\": 403,\n\t\"./eo\": 404,\n\t\"./eo.js\": 404,\n\t\"./es\": 405,\n\t\"./es-do\": 406,\n\t\"./es-do.js\": 406,\n\t\"./es-mx\": 407,\n\t\"./es-mx.js\": 407,\n\t\"./es-us\": 408,\n\t\"./es-us.js\": 408,\n\t\"./es.js\": 405,\n\t\"./et\": 409,\n\t\"./et.js\": 409,\n\t\"./eu\": 410,\n\t\"./eu.js\": 410,\n\t\"./fa\": 411,\n\t\"./fa.js\": 411,\n\t\"./fi\": 412,\n\t\"./fi.js\": 412,\n\t\"./fil\": 413,\n\t\"./fil.js\": 413,\n\t\"./fo\": 414,\n\t\"./fo.js\": 414,\n\t\"./fr\": 415,\n\t\"./fr-ca\": 416,\n\t\"./fr-ca.js\": 416,\n\t\"./fr-ch\": 417,\n\t\"./fr-ch.js\": 417,\n\t\"./fr.js\": 415,\n\t\"./fy\": 418,\n\t\"./fy.js\": 418,\n\t\"./ga\": 419,\n\t\"./ga.js\": 419,\n\t\"./gd\": 420,\n\t\"./gd.js\": 420,\n\t\"./gl\": 421,\n\t\"./gl.js\": 421,\n\t\"./gom-deva\": 422,\n\t\"./gom-deva.js\": 422,\n\t\"./gom-latn\": 423,\n\t\"./gom-latn.js\": 423,\n\t\"./gu\": 424,\n\t\"./gu.js\": 424,\n\t\"./he\": 425,\n\t\"./he.js\": 425,\n\t\"./hi\": 426,\n\t\"./hi.js\": 426,\n\t\"./hr\": 427,\n\t\"./hr.js\": 427,\n\t\"./hu\": 428,\n\t\"./hu.js\": 428,\n\t\"./hy-am\": 429,\n\t\"./hy-am.js\": 429,\n\t\"./id\": 430,\n\t\"./id.js\": 430,\n\t\"./is\": 431,\n\t\"./is.js\": 431,\n\t\"./it\": 432,\n\t\"./it-ch\": 433,\n\t\"./it-ch.js\": 433,\n\t\"./it.js\": 432,\n\t\"./ja\": 434,\n\t\"./ja.js\": 434,\n\t\"./jv\": 435,\n\t\"./jv.js\": 435,\n\t\"./ka\": 436,\n\t\"./ka.js\": 436,\n\t\"./kk\": 437,\n\t\"./kk.js\": 437,\n\t\"./km\": 438,\n\t\"./km.js\": 438,\n\t\"./kn\": 439,\n\t\"./kn.js\": 439,\n\t\"./ko\": 440,\n\t\"./ko.js\": 440,\n\t\"./ku\": 441,\n\t\"./ku.js\": 441,\n\t\"./ky\": 442,\n\t\"./ky.js\": 442,\n\t\"./lb\": 443,\n\t\"./lb.js\": 443,\n\t\"./lo\": 444,\n\t\"./lo.js\": 444,\n\t\"./lt\": 445,\n\t\"./lt.js\": 445,\n\t\"./lv\": 446,\n\t\"./lv.js\": 446,\n\t\"./me\": 447,\n\t\"./me.js\": 447,\n\t\"./mi\": 448,\n\t\"./mi.js\": 448,\n\t\"./mk\": 449,\n\t\"./mk.js\": 449,\n\t\"./ml\": 450,\n\t\"./ml.js\": 450,\n\t\"./mn\": 451,\n\t\"./mn.js\": 451,\n\t\"./mr\": 452,\n\t\"./mr.js\": 452,\n\t\"./ms\": 453,\n\t\"./ms-my\": 454,\n\t\"./ms-my.js\": 454,\n\t\"./ms.js\": 453,\n\t\"./mt\": 455,\n\t\"./mt.js\": 455,\n\t\"./my\": 456,\n\t\"./my.js\": 456,\n\t\"./nb\": 457,\n\t\"./nb.js\": 457,\n\t\"./ne\": 458,\n\t\"./ne.js\": 458,\n\t\"./nl\": 459,\n\t\"./nl-be\": 460,\n\t\"./nl-be.js\": 460,\n\t\"./nl.js\": 459,\n\t\"./nn\": 461,\n\t\"./nn.js\": 461,\n\t\"./oc-lnc\": 462,\n\t\"./oc-lnc.js\": 462,\n\t\"./pa-in\": 463,\n\t\"./pa-in.js\": 463,\n\t\"./pl\": 464,\n\t\"./pl.js\": 464,\n\t\"./pt\": 465,\n\t\"./pt-br\": 466,\n\t\"./pt-br.js\": 466,\n\t\"./pt.js\": 465,\n\t\"./ro\": 467,\n\t\"./ro.js\": 467,\n\t\"./ru\": 468,\n\t\"./ru.js\": 468,\n\t\"./sd\": 469,\n\t\"./sd.js\": 469,\n\t\"./se\": 470,\n\t\"./se.js\": 470,\n\t\"./si\": 471,\n\t\"./si.js\": 471,\n\t\"./sk\": 472,\n\t\"./sk.js\": 472,\n\t\"./sl\": 473,\n\t\"./sl.js\": 473,\n\t\"./sq\": 474,\n\t\"./sq.js\": 474,\n\t\"./sr\": 475,\n\t\"./sr-cyrl\": 476,\n\t\"./sr-cyrl.js\": 476,\n\t\"./sr.js\": 475,\n\t\"./ss\": 477,\n\t\"./ss.js\": 477,\n\t\"./sv\": 478,\n\t\"./sv.js\": 478,\n\t\"./sw\": 479,\n\t\"./sw.js\": 479,\n\t\"./ta\": 480,\n\t\"./ta.js\": 480,\n\t\"./te\": 481,\n\t\"./te.js\": 481,\n\t\"./tet\": 482,\n\t\"./tet.js\": 482,\n\t\"./tg\": 483,\n\t\"./tg.js\": 483,\n\t\"./th\": 484,\n\t\"./th.js\": 484,\n\t\"./tk\": 485,\n\t\"./tk.js\": 485,\n\t\"./tl-ph\": 486,\n\t\"./tl-ph.js\": 486,\n\t\"./tlh\": 487,\n\t\"./tlh.js\": 487,\n\t\"./tr\": 488,\n\t\"./tr.js\": 488,\n\t\"./tzl\": 489,\n\t\"./tzl.js\": 489,\n\t\"./tzm\": 490,\n\t\"./tzm-latn\": 491,\n\t\"./tzm-latn.js\": 491,\n\t\"./tzm.js\": 490,\n\t\"./ug-cn\": 492,\n\t\"./ug-cn.js\": 492,\n\t\"./uk\": 493,\n\t\"./uk.js\": 493,\n\t\"./ur\": 494,\n\t\"./ur.js\": 494,\n\t\"./uz\": 495,\n\t\"./uz-latn\": 496,\n\t\"./uz-latn.js\": 496,\n\t\"./uz.js\": 495,\n\t\"./vi\": 497,\n\t\"./vi.js\": 497,\n\t\"./x-pseudo\": 498,\n\t\"./x-pseudo.js\": 498,\n\t\"./yo\": 499,\n\t\"./yo.js\": 499,\n\t\"./zh-cn\": 500,\n\t\"./zh-cn.js\": 500,\n\t\"./zh-hk\": 501,\n\t\"./zh-hk.js\": 501,\n\t\"./zh-mo\": 502,\n\t\"./zh-mo.js\": 502,\n\t\"./zh-tw\": 503,\n\t\"./zh-tw.js\": 503\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 994;"],"sourceRoot":""}