{"version":3,"sources":["components/Layout.js","components/Strings.ts","helpers.ts","api.ts","components/ItemImage.tsx","components/ItemGridView.tsx","components/ItemListView.tsx","components/ItemsView.tsx","components/ListItems.tsx","hooks/useTheme.tsx","hooks/useObserveCode.tsx","hooks/useObserveMessages.tsx","hooks/useObserveStrings.tsx","hooks/useObserveUser.tsx","hooks/useObserveStore.tsx","components/Header.tsx","components/Content.tsx","components/QRcodeImage.tsx","components/Controls.tsx","components/ListFreezerItems.tsx","components/ListHtmltems.tsx","components/ListLostFoundItems.tsx","components/ListBoxes.tsx","components/TagTypeOverview.tsx","components/ListStoreItems.tsx","components/FeedbackForm.tsx","components/ShowInfoOnly.tsx","components/MultiItemSelect.tsx","components/ListsDropdown.tsx","components/TabSettings.tsx","components/TabSettingsPanel.tsx","components/Home.tsx","components/Privacy.tsx","components/FetchData.js","components/Counter.js","components/About.tsx","components/Admin.tsx","components/RegisterUser.tsx","components/Register.tsx","components/Purchasing.tsx","components/TitleWithInfo.tsx","components/RegisterItemManually.tsx","components/ItemFound.tsx","components/ConfigLost.tsx","components/ConfigRent.tsx","components/BuyTagsPage.tsx","components/BuyTags.tsx","components/BuyPhysicalTags.tsx","components/BuyTagsPhysicalOnly.tsx","components/BuyDigitalTags.tsx","components/SendMessage.tsx","components/ListMessages.tsx","components/UploadDialog.tsx","components/ImagesPanel.tsx","components/ItemFooterEdit.tsx","components/HandleItemBorrowedByMe.tsx","components/HandleItemBorrowedByOther.tsx","components/HandleBorrowingItem.tsx","components/HandleOwnItem.tsx","components/RegisterItem.tsx","components/HandleOwnHtml.tsx","components/HandleOthersHtml.tsx","components/HandleOtherLostFound.tsx","components/HandleOwnLostFound.tsx","components/ShowWhatBoxIconsMean.tsx","components/HandleOwnBoxes.tsx","components/HandleOthersBoxes.tsx","components/HandleItemOtherBorrowedByOther.tsx","components/HandleFreezer.tsx","components/ItemView.tsx","components/EditItem.tsx","components/ListItemsHelp.tsx","components/CreateStoreDialog.tsx","components/StoreContextualMenu.tsx","components/ListStores.tsx","components/Stores.tsx","components/AccessAddUserDialog.tsx","components/AccessChangeOwnerDialog.tsx","components/AccessTableNew.tsx","components/EditStore.tsx","components/ViewStore.tsx","components/ItemFooterSave.tsx","components/EditTypeModal.tsx","components/EditFreezer.tsx","components/EditLostFound.tsx","components/InfoBar.tsx","components/ErrorBar.tsx","components/ScanDialog.tsx","components/EditStatic.tsx","components/EditHtml.tsx","components/EditBoxes.tsx","components/UserSettings.tsx","components/Scan.tsx","components/JoinStore.tsx","App.js","registerServiceWorker.js","index.js"],"names":["Layout","Component","render","this","props","children","displayName","name","Language","strings","getLanguage","swedish","english","static","language","localStorage","setItem","getItem","navigator","QRitDefault","Shureguard","generic_yes","generic_no","generic_description","generic_edit","generic_copy","generic_name","generic_cancel","generic_save","generic_share","generic_properties","generic_back","generic_close","generic_PageInfo","generic_noCodes","generic_ListsShow","generic_QRCode","generic_noLists","generic_noTypeSet","generic_phone","generic_add","generic_noMessages","generic_user","generic_manageImages","generic_quickAddImage","header_whatIsQRit","header_buyQRcodes","header_scan","header_manualQRentry","header_termsAndConditions","header_feedback","header_itemFound","header_account","header_logout","header_login","header_stores","header_settings","welcome","environmentFuture","found","home_loginRegister","home_lostFound","home_WarnMsgYouHaveNewCode","home_WarnMsgYouHaveExistingCode","home_ButtonSignIn","home_ButtonItemFound","home_codeDetailsFailedGetInfo","home_items","home_FreezerReuse","home_LostFound","home_Freetext","home_Boxes","home_Search","home_iconTableWhatDoTheIconsMean","home_iconTableHeaderIcon","home_iconTableHeaderDescription","home_iconTableStaticHome","home_iconTableStaticHomeAtOther","home_iconTableStaticMyBorrowedByOther","home_iconTableStaticOtherBorrowedByMe","home_iconTableStaticOtherBorrowedByOther","home_iconTableBoxOpen","home_iconTableBoxPacking","home_iconTableBoxClosed","home_iconTableBoxStorageHome","home_iconTableBoxStorageAway","home_iconTableBoxUnpacking","home_iconTableBoxWhatAreTagTypes","home_tagTypeTableWhatAreTheTagTypes","home_tagTypeTableOtherTextOnly","home_tagTypeTableCodeTypeName","home_tagTypeTableDescription","home_tagTypeTableStatic","home_tagTypeTableBoxes","home_tagTypeTableLostFound","home_tagTypeTableFreezer","home_tagTypeTableMessage","home_tagTypeTableOther","item_shareItemText","item_status","item_whoBorrowed","handleBorrowingItem_whenGiveBack1","handleBorrowingItem_whenGiveBack2","item_photo","item_atHome","item_isPublicViewable","itemView_CodeDoesNotExist","listItems_state","listItems_loading","listItems_home","listItems_giveBack1","listItems_giveBack2","listItems_awayFor1","listItems_awayFor2","listItems_photo","listHtmlItems_created","listHtmlItems_description","itemImage_NoImage","listPurchases_errorMsgUpdatePurchases","listPurchases_purchaseCompletedColText","listPurchases_tagSentColText","listPurchases_stateOrActionColText","listPurchases_digitalColText","listPurchases_createdColText","handleBorrowedItem_reportReturned","handleBorrowingItem_infoHeader","handleBorrowingItem_Info1","handleBorrowingItem_Info2","handleBorrowingItem_Info3","handleBorrowingItem_Info4","handleBorrowingItem_Info5","handleBorrowingItem_wantToBorrowFrom","handleBorrowingItem_oneDay","handleBorrowingItem_threDays","handleBorrowingItem_oneWeek","handleBorrowingItem_onemonth","handleBorrowingItem_threeMonths","handleBorrowingItem_oneYear","handleBorrowingItem_noEndDate","handleBorrowingItem_borrow","handleBorrowingItem_OwnerName","handleBorrowingItem_TypeOfItem","handleBorrowingItem_ItemName","handleBorrowingItem_InfoAboutRent","handleBorrowingItem_SendMessToOwner","handleBorrowingItem_whenReturnItem","handleBorrowingItem_Category","handleItemBorrowedBy_reportItemBack","handleItemBorrowedByMe_YouBorrowedThis","handleItemBorrowedByMe_Info1","handleItemBorrowedByMe_Info2","handleItemBorrowedByMe_Info3","handleItemBorrowedByMe_ShouldBeReturnedBy","handleItemBorrowedByMe_ReturnIn","handleItemBorrowedByMe_Days","handleItemBorrowedByMe_RentCost","handleItemBorrowedByMe_infoHeader","handleItemBorrowedByMe_oneDay","handleItemBorrowedByMe_threDays","handleItemBorrowedByMe_oneWeek","handleItemBorrowedByMe_onemonth","handleItemBorrowedByMe_threeMonth","handleItemBorrowedByMe_oneYear","handleItemBorrowedByMe_noEndDate","handleItemBorrowedByMe_extend","handleItemBorrowedByMe_extendDate","handleItemBorrowedByMe_addNumDays","handleItemBorrowedByOther_ReportReturned","handleItemBorrowedByOther_BorrowedItem","handleItemBorrowedByOther_BorrowedBy","handleItemBorrowedByOther_ShouldBeReturnedBy","handleItemBorrowedByOther_ReturnIn","handleItemBorrowedByOther_Days","handleItemBorrowedByOther_info1","handleItemBorrowedByOther_info2","handleItemBorrowedByOther_info3","handleItemBorrowedByOther_rentCost","handleItemOtherBorrowedByOther_Title","handleItemOtherBorrowedByOther_infoHeader","handleItemOtherBorrowedByOther_info1","handleItemOtherBorrowedByOther_info2","handleOwnItem_itemHeader","handleOwnItem_unregisterItem","handleOwnItem_TypeOfItem","handleOwnItem_unregister","handleOwnItem_close","handleOwnItem_realyUnregister","handleOwnItem_resetCode","handleOwnItem_QRnumber","handleOwnItem_QRCode","handleOwnItem_PageHeader","handleHtmlItem_PageHeader","handleHtmlItem_reset","handleHtmlItem_QRCode","handleHtmlItem_TagId","handleOwnHtml_infoHeader","handleOwnHtml_TextOrHTML","handleOwnHtml_info1","handleOwnHtml_info2","handleOwnHtml_info3","handleOwnHtml_info4","handleOwnHtml_info5","handleOwnHtml_info6","handleOwnLostFound_LostFound","handleOwnLostFound_ShowFindersFee","handleOwnLostFound_FindersFee","handleOwnLostFound_ShowYourPhoneNum","handleOwnLostFound_MessageSendingEnabled","handleOwnLostFound_ResetCode","handleOwnLostFound_FinderCanSendGPS","handleOwnLostFound_infoOnLostFound","handleOwnLostFound_thisIsLostFoundCode","handleOwnLostFound_whenYouMarkSometingWithTag","handleOwnLostFound_whenYouEditThisTag","handleOtherLostFound_HowToReturnItem","handleOtherLostFound_YouHaveScannedCode","handleOtherLostFound_FindersFee","handleOtherLostFound_ThereIsAFindersFee","handleOtherLostFound_OwnersPhoneNum","handleOtherLostFound_PhoneNum","handleOtherLostFound_PleaseCallOrSend","handleOtherLostFound_SendMessToOwner","handleOtherLostFound_YouCanChooseSendMess","handleOtherLostFound_SendMess","handleOtherLostFound_infoHeader","handleOtherLostFound_info1","handleOtherLostFound_info2","handleOtherLostFound_info3","handleOtherLostFound_info4","handleOtherLostFound_info5","handleOtherLostFound_info6","handleOtherLostFound_SendGPSPosToOwnerHeader","handleOtherLostFound_SendGPSPositionToOwnerInfo","handleOtherLostFound_SendGPSPosToOwnerButton","handleOtherLostFound_SendingGPSPosToOwner","handleOtherLostFound_GeolocationIsNotSupported","handleOtherLostFound_HasSentGPSPosToOwner","handleOtherLostFound_GpsLinkMessage","handleOthersFreezer_infoHeader","handleOthersFreezer_info1","handleOthersFreezer_info2","handleOthersFreezer_info3","handleOthersFreezer_PageHeader","handleOthersFreezer_Owner","handleOthersFreezer_ContentType","handleOthersFreezer_FoodType","handleOthersFreezer_FreezDate","handleOthersFreezer_ExparationDate","handleOthersFreezer_ForHowMany","handleOthersFreezer_HowMuch","handleOthersFreezer_Location","handleOthersBoxes_PageHeader","handleOthersBoxes_Info1","handleOthersBoxes_Info2","handleOthersBoxes_Info3","handleOthersBoxes","handleOwnBoxes_PageHeader","handleOwnBoxes_infoHeader","handleOwnBoxes_PageHeaderEdit","handleBoxes_Owner","handleBoxes_ShortID","handleBoxes_ContentType","handleBoxes_Content","handleBoxes_Description","handleBoxes_Location","handleBoxes_Room","handleBoxes_Category","handleBoxes_Fragility","handleBoxes_Priority","handleBoxes_QRcode","handleBoxes_BoxColor","handleBoxes_BoxState","handleBoxes_StorageDate","handleBoxes_ShortId","handleBoxes_0","handleBoxes_1","handleBoxes_2","handleBoxes_3","handleBoxes_4","handleBoxes_5","handleBoxes_6","handleBoxes_7","handleBoxes_8","handleBoxes_9","handleBoxes_10","EditBoxes_ContentTypeHeader","EditBoxes_ContentHeader","EditBoxes_BoxName","EditBoxes_Location","EditBoxes_Room","EditBoxes_QRID","EditBoxes_BoxID","EditBoxes_QRcode","EditBoxes_LocationHeader","EditBoxes_RoomHeader","EditBoxes_CategoryHeader","EditBoxes_BoxStateHeader","EditBoxes_BoxPriorityHeader","EditBoxes_BoxColorHeader","EditBoxes_InfoHeader","EditBoxInfo_BoxInfoHeader","EditBoxInfo_PlaceQR","EditBoxInfo_ScanQR","EditBoxInfo_Packing","EditBoxInfo_AddingCatDetails","EditBoxInfo_BackLater","EditBoxInfo_FinishedPacking","EditBoxInfo_AddingPrioFrag","EditBoxInfo_PutInStorage","handleFreezer_freezing_date","handleFreezer_persons","handleFreezer_noDateSet","homePageText_howWorks","homePageText_prices","homePageText_toThinkAbout","homePageText_tagsFromUs","homePageText_tagOntoTool","homePageText_scanWithCell","homePageText_addDescript","homePageText_ifSomoneBorrow","homePageText_weKeepTrack","homePageText_qritIsServiceSubscr","homePageText_subscript8kr","homePageText_subscript8krEnd","homePageText_12TagsCost","homePageText_12TagsCostEnd","homePageText_24TagsCost","homePageText_24TagsCostEnd","homePageText_buyPhysicalTags","homePageText_alsoJusgtPrintAndTejp","homePageText_attTankaPa","homePageText_ifNotPrintWeSend","homePageText_ifNotPrintWeSendEnd","homePageText_tagsMustPlanar","homePageText_size2x4","homePageText_partOfTagsWhite","homePageText_ifPDF","homePageText_priceTablePrice","homePageText_priceTableCurrency","homePage_infoHeader","homePage_infoGeneralHelp","homePage_info0","homePage_info1","homePage_info2","homePage_info3","homePage_info4","homePage_info5","homePage_info6","homePage_info7","homePage_info8","homePage_grid","homePage_list","tagTypeOverview_pageHeader","tagTypeOverview_intro","tagTypeOverview_RegisterLoginInfo","tagTypeOverview_RegisterLogin","tagTypeOverview_lblHeaderQRitStorage","tagTypeOverview_QRitStorage1","tagTypeOverview_QRitStorage2","tagTypeOverview_QRitStorage3","tagTypeOverview_lblHeaderQRitKeys","tagTypeOverview_QRitKeys1","tagTypeOverview_QRitKeys2","tagTypeOverview_lblHeaderQRitStatic","tagTypeOverview_QRitStatic1","tagTypeOverview_QRitStatic2","tagTypeOverview_QRitStatic3","tagTypeOverview_lblHeaderQRitLostFound","tagTypeOverview_QRitLostFound1","tagTypeOverview_QRitLostFound2","tagTypeOverview_lblHeaderQRitFreezer","tagTypeOverview_QRitFreezer1","tagTypeOverview_QRitFreezer2","tagTypeOverview_QRitFreezer3","tagTypeOverview_lblHeaderQRitHtml","tagTypeOverview_QRitHtml1","tagTypeOverview_QRitHtml2","tagTypeOverview_business","tagTypeOverview_private","tagTypeOverview_pageHeader_BB","tagTypeOverview_intro_BB","tagTypeOverview_RegisterLoginInfo_BB","tagTypeOverview_lblHeaderQRitStorage_BB","tagTypeOverview_lblHeaderQRitKeys_BB","tagTypeOverview_lblHeaderQRitStatic_BB","tagTypeOverview_lblHeaderQRitLostFound_BB","tagTypeOverview_lblHeaderQRitFreezer_BB","tagTypeOverview_lblHeaderQRitHtml_BB","tagTypeOverview_lblHeaderQRitRestaurant_BB","tagTypeOverview_QRitStorage1_BB","tagTypeOverview_QRitStorage2_BB","tagTypeOverview_QRitOrderCodesHere_BB","tagTypeOverview_QRitKeys1_BB","tagTypeOverview_QRitKeys2_BB","tagTypeOverview_QRitStatic1_BB","tagTypeOverview_QRitStatic2_BB","tagTypeOverview_QRitStatic_BB","tagTypeOverview_QRitLostFound1_BB","tagTypeOverview_QRitLostFound2_BB","tagTypeOverview_QRitHtml1_BB","tagTypeOverview_QRitRestaurant1_BB","tagTypeOverview_QRitRestaurant2_BB","privacy_deliveryTermsHeader","privacy_deliveryTerms","privacy_deliveryTermsMissDelivery","privacy_personalInfoHeader","privacy_personalInfoUseInfo","privacy_cookies","privacy_cookiesInfo","privacy_infoStorageHeader","privacy_infoStorageInfoSSL","privacy_infoStorageInfoEncrypt","privacy_personalInfoPurchaseHeading","privacy_personalInfoPurchaseInfo","privacy_pricesHeader","privacy_pricesInfo","privacy_giveBackHeader","privacy_giveInfo","privacy_returningHeader","privacy_returningInfo","privacy_exchangeHeader","privacy_exchangeInfo","privacy_payBackHeader","privacy_payBackInfo","privacy_payBackInfoDelivery","privacy_goodToHaveLinksHeader","privacy_goodToHaveLinksConsumerService","privacy_goodToHaveLinksConsumerARN","privacy_goodToHaveLinksArbitration","privacy_complaintsHeader","privacy_complaintsInfo","purchasing_payment","purchasing_ifPurchaseDigital","purchasing_ifPurchasePhysical","purchasing_order","puchasing_youLoggedInLoginNow","purchasing_payPaypal","purchasing_paySwish","purchasing_payKlarna","purchasing_paySwishInstructions","purchasing_fullName","purchasing_firstName","purchasing_lastName","purchasing_address","purchasing_zipCode","purchasing_city","purchasing_country","purchasing_emailPlaceholder","purchasing_email","purchasing_phone","purchasing_username","registerItem_itemRegistration","registerItem_freezerItemRegistration","registerItem_boxItemRegistration","registerItem_lostFoundItemRegistration","registerItem_messageTagItemRegistration","registerItem_messageHtml","registerItem_messageName","registerItem_alwaysConfirmReturn","registerItem_registrerMustHaveBankID","registerItem_putItemForRent","registerItem_rentInfo","registerItem_lostFound","registerItem_lostFoundInfo","registerItem_configRent","registerItem_configLostFound","registerItem_itemRegister","registerItem_failedRegisterCode","editHtml_PageHeaderEdit","editItem_PageHeaderEdit","editHtml_Instructions","editHtml_infoHeader","editHtml_Info1","editHtml_Info2","editHtml_Info3","editHtml_Info4","editHtml_Info5","titleWithInfo","titleWithInfo_reportMisuse","titleWithInfo_reportMisuseDescript","titleWithInfo_reportMisuseSent","titleWithInfo_reportMisuseError","editItem_typeStatic","editItem_typeReuse","editItem_typeReuseLostFound","editItem_typeReuseFreetext","editItem_typeStorage","editItem_typeLabel","editItem_failedSaveCode","editStatic_infoHeader","editStatic_PageHeaderEdit","editStatic_1","editStatic_2","editStatic_3","editStatic_3_1","editStatic_3_2","editStatic_4","editStatic_5","editStatic_6","editStatic_7","editStatic_photo","editStatic_photoChoice","editStatic_ISBNScanningInfo","editStatic_alwaysConfirmReturn","editStatic_registrerMustHaveBankID","editStatic_putItemForRent","editStatic_configLostFound","editStatic_configRent","editStatic_lostFound","editStatic_lostFoundInfo","EditStatic_ItemTypesListHeader","EditStatic_ItemTypesHeader","editStatic_ListsHeader","editStatic_codeCannotBelongToMoreThanOne","editStatic_codeWillChangeOwner","editStatic_ISBNScanningError","uploadDialogImageChoice","uploadDialogChooseImage","uploadDialogUpload","uploadDialogRotate","scanDialog_manualEnter","useObserveCode_ErroTryRefresh","registerUser_registerUser","registerUser_InfoAboutFree","registerUser_registerUserName","registerUser_registerPhone","registerUser_registerEmail","registerUser_registerphoneNumMustStartWith","registerUser_registerUsernameNeeded","registerUser_sendCode","registerUser_code","registerUser_privacyAgreement","registerUser_privacyAgreementHere","registerUser_iAgreeTerms","registerUser_iAgreeTermsEnd","registerUser_registerUserButton","registerUser_networkErrorTryAgain","registerUser_checkCodeTryAgain","registerUser_networkErrorTryAgain2","registerUser_goToPayment","registerUser_smsTextCode","registerUser_organization","registerUser_meAsUser","buyDigialTags_buyTags","buyDigialTags_fillInEmail","buyDigialTags_email","buyDigialTags_howHandlePersonaInfoHere","buyDigialTags_howHandlePersonaInfo","buyPhysicalTags_buyPhysicalTags","buyPhysicalTags_fillInAddressInfo","buyPhysicalTags_firstName","buyPhysicalTags_lastName","buyPhysicalTags_address","buyPhysicalTags_zipCode","buyPhysicalTags_city","buyPhysicalTags_country","listMessages_Messages","buyTags_headerBuyQRcodes","buyTags_toUseMustHaveInfo","buyTags_chooseHereToBuyDigitalPhysical","buyTags_ifYouBuyDigial1","buyTags_ifYouBuyDigialPdfExampleHere","buyTags_ifYouBuyDigialPdfExampleURL","buyTags_ifYouBuyDigial2","buyTags_ifYouBuyDigialAveryExampleURLHere","buyTags_ifYouBuyDigialAveryExampleURL","buyTags_ifYouBuyDigial3","buyTags_selectedTagEmpty","buyTags_selectedTagLostFound","buyTags_selectedTagNumber","buyTags_unSelectedTagEmpty","buyTags_unSelectedTagLostFound","buyTags_unSelectedTagNumber","buyTags_ifYouBuyPhysical","buyTags_ifYouBuyPhysical2","buyTags_downloadPdf","buyTags_downloadPhysical","buyTags_qrCodeToX1","buyTags_qrCodeToX2","buyTags_chooseNumCodes","buyTags_ChoosePhysDigit","buyTags_ChooseTagLayout","buyTags_Price","buyTags_emptyTag","buyTags","buyTags_lostAndFound","buyTags_numbered","buyTags_numberedForeezer","buyTagsPhysicalOnly_toUseMustHaveInfo","buyTagsPhysicalOnly_chooseNumCodes","buyTagsPhysicalOnly_selectedFormatSimple","buyTagsPhysicalOnly_unSelectedFormatSimple","buyTagsPhysicalOnly_selectedFormatRugged","buyTagsPhysicalOnly_unSelectedFormatRugged","buyTagsPhysicalOnly_simpleTagFormat","buyTagsPhysicalOnly_ruggedTagFormatInfo","buyTagsPhysicalOnly_freeText","buyTagsPhysicalOnly_normalOrThickSticker","buyTagsPhysicalOnly_typeOfTagYouWant","buyTagsPhysicalOnly_theNumberOfTagsYouWant","registerItemManually_infoHeader","registerItemManually_manualRegisteringItem","registerItemManually_manualRegisteringItemInfo1","registerItemManually_manualRegisteringItemInfo2","registerItemManually_writeQRcode8Char","registerItemManually_code","registerItemManually_register","registerItemManually_codeDoesNotExist","itemFound_youFoundQR","itemFound_someoneMarkedItem","itemFound_ownersPhoneNumber","itemFound_whatMessageDoYouWantToSend","itemFound_ownersOffersThisAmount","itemFound_insteadSendMessageToOwner","itemFound_sendMessage","itemFound_sendGPS","itemFound_sendGPSInfo","configRent_choiceRentHeading","configRent_howMuchCostLbl","configRent_enableChatLbl","configRent_allowTimeExtent","configRent_enableRentQueue","editLostFound_settingsLost","editLostFound_settingsLostText","editLostFound_IwantFinderToSeePhoneNumber","editLostFound_IwantFinderAbleSendMess","configLost_withThisSettingFinderShowPos","editLostFound_IwantOfferLostPay","configLost_IwantOfferLostPayInfo","editLostFound_IwantFinderSeeHowMuchPay","configLost_IwantFinderSeeHowMuchPayInfo","editLostFound_HowMuchLostPay","editLostFound_HowMuchLostPayInfo","configLost_IwantEnablePosition","configLost_IwantEnablePositionInfo","editLostFound_infoHeader","editLostFound_info0","editLostFound_info1","editLostFound_info2","editLostFound_info3","editLostFound_info4","editLostFound_info5","editLostFound_info6","editLostFound_info7","editLostFound_info8","editLostFound_info10","editLostFound_info11","itemFooter_unregisterItem","itemFooter_unregister","itemFooter_close","itemFooter_realyUnregister","itemFooter_ShowAdvSettings","itemFooter_WarningDataLostRegisterNew","itemFooter_ChangeCodeType","itemFooter_areYouReadyToLeavePage","listItemHelp_Header","listItemHelp_WhereIconHeader","listItemHelp_WhereIconDescr","listItemHelp_WhereIcon_Home","listItemHelp_WhereIcon_In","listItemHelp_WhereIcon_Out","listItemHelp_WhereIcon_Freezer","listItemHelp_OtherHeader","listItemHelp_Descr","listItemHelp_Image","freezer_DateHeader","freezer_ExpDateHeader","freezer_SelectADateDotDot","freezer_SelectADate","freezer_PersonCntHeader","freezer_10Persons","freezer_0Of1Persons","freezer_FoodTypeHeader","freezer_ContentTypeHeader","freezer_AmountHeader","freezer_EditFoodChoiceList","freezer_EditFoodTypeList","freezer_EditLocationList","freezer_Location","freezer_PageHeaderEdit","editFreezer_infoHeader","editFreezer_info0","editFreezer_info1","editFreezer_info2","editFreezer_info3","editFreezer_info4","editFreezer_info5","editFreezer_info6","editFreezer_info7","editFreezer_info8","editFreezer_info9","editFreezer_info10","editTypeModal_Delete","editTypeModal_Add","Helpers_Scanned","Helpers_Unregistered","Helpers_Home","Helpers_BorrowedByOther","Helpers_BorrowedByMe","Helpers_OtherBorrowedByOther","Helpers_AwaitingReturnAccept","Helpers_Found","Helpers_ManageCategories","listFreezerItems_Frozen","listFreezerItems_Expiration","listLostFoundItems_created","listLostFoundItems_photo","listLostFoundItems_photoDescription","listBoxes_TagID","listBoxes_Content","listBoxes_Location","listBoxes_Room","listBoxes_Stored","listBoxes_Photo","createStoreDialog_Create","createStoreDialog_CreateStoreQuestion","createStoreDialog_StoreName","ListStores_loading","editStores_allowResharingOfList","joinStore_acceptJoinList","joinStore_rejectJoinList","imagePanel_panelHeader","imagePanel_mainImage","imagePanel_addNewImage","imagePanel_removeImage","imagePanel_private","imagePanel_deleteImage","imagePanel_deleteSelectedImages","imagePanel_title","imagePanel_text","imagePanel_disableInFuture","viewStore_infoHeader","viewStore_info1","viewStore_info2","viewStore_info3","viewStore_info4","viewStore_info5","viewStore_info7","viewStore_info8","viewStore_info9","viewStore_info10","viewStore_info11","viewStore_DeleteStore","viewStore_Delete","viewStore_DeleteStoreQuestion","viewStore_Cancel","viewStore_SelectCodes","viewStore_MultiSelectControlled","viewStore_CodesTitle","viewStore_EditList","viewStore_RequireCodesOwnerChangeInfo","viewStore_RequireCodesOwnerChangeInfoNot","viewStore_RequireCodesOwnerChange","viewStore_AccessHandling","viewStore_Join","viewStore_CannotReqestJoinList","stores_CreateStore","stores_ManageLists","stores_infoHeader","stores_listBelongsToYou","stores_listBelongsToSomeoneElse","stores_info1","stores_info2","stores_info3","stores_info4","userSettings_infoHeader","userSettings_manageUserSettings","userSettings_manageViewTabs","userSettings_ChooseWhichTabsToShow","userSettings_ChooseWhichListsToShow","userSettings_Stuff","userSettings_boxes","userSettings_lostFound","userSettings_freezer","userSettings_messages","userSettings_listChoices","userSettings_enableSMRecievingOnIncommingMessages","userSettings_enableSMSRecieveLabel","userSettings_whereYouManageSettings","userSettings_theWarningIcon","userSettings_chooseToDisableReception","userSettings_UserContactInfo","userSettings_FeedbackSupport","userSettings_organizationAccount","userSettings_organizationsYouAreAdminFor","accessChangeOwnerDialog_ChangeOwner","accessChangeOwnerDialog_SubText","storeContextualMenu_listProperties","storeContextualMenu_moreOptions","storeContextualMenu_listName","storeContextualMenu_listOwner","accessAddUserDialog_addUser","accessAddUserDialog_subText","accessTable_FaildAddUser","accessTable_InviteUser","accessTable_ChangeOwner","accessTable_changeRole","accessTable_changeRoleInfo","accessTable_roleAdmin","accessTable_roleMaintain","accessTable_roleEditor","accessTable_rolePending","accessTable_roleMember","accessTable_setRole","accessTable_role","accessTable_command","accessTable_delete","accessTable_removeUser","accessTable_removeUserFromList","messages_footerMessage","messages_messageTitle","messages_send","messages_reply","messages_replyTitle","messages_replyText","messages_delete","messages_deleteTitle","messages_deleteText","currency_prefix","currency_suffix","pricePhysicalDelviery","skuList","freezer_FoodChoiceList","freezer_FoodTypeList","freezer_locationChoicesList","freezer_AmountTypeList","EditBoxes_ContentTypeList","EditBoxes_ContentList","EditBoxes_SiteList","EditBoxes_RoomList","EditBoxes_CategoryList","EditBoxes_DefaultContentType","EditBoxes_DefaultPriority","EditBoxes_DefaultFragility","EditBoxes_DefaultLocation","EditBoxes_DefaultBoxState","EditBoxes_BoxStateList2","tagged","packing","closed","storedHome","storedAway","unpacking","unpacked","EditBoxes_PriorityList2","low","normal","high","EditBoxes_BoxColorChoices","green","blue","red","black","yellow","pink","brown","EditStatic_ItemTypesList","AccessTypes","listAdmin","addUser","editCodes","listUser","pendingUser","Helpers","removeItem","userId","state","isMine","item","isUnregistered","getCurrentUserId","isBorrowed","borrowerUserId","type","isRegistered","isAwaitingOwnerReturnAccept","isBorrowedByMe","boxState","iconType","Api","getUserInfo","username","getCode","id","phone","qrCode","verifyCode","verifyCodeUnregistered","user","firstName","lastName","date1","date2","timeDiff","Math","abs","getTime","ceil","days","now","Date","title","text","share","url","features","split","feature","getFeatures","includes","propertiesJson","JSON","parse","date","expirationDate","options","unshift","key","getCodeTypeString","codeType","getCodeType","getRole","accessType","claims","postFeedbackMessage","async","message","e","alert","prepDropdownOptionsWithAddItem","onAddClick","data","icon","onClick","stopPropagation","preventDefault","filename","formData","response","fetch","encodeURIComponent","method","headers","getToken","body","handleResponse","code","contentType","metadataJson","json","fileId","ok","status","blob","window","URL","createObjectURL","file","stringify","handleUnauthorized","clear","location","href","pathname","Error","statusText","createHeader","httpGet","httpPost","payload","httpPut","httpDelete","returnDate","codeInfo","properties","parsePropertiesJsonCode","shortID","registerCode","description","updateCode","reportMisuse","registerLostCfg","rentValue","showHowMuchPay","offerPay","possibleSendMess","showPhoneNumber","registerRentCfg","rentCostDescr","enableRenterChatRent","enableRenterExtensionRent","enableQueForItemRent","getCodesForUser","resp","map","ci","requestRegistrationCode","email","getPurchases","getSkus","registerPurchase","buyDigital","tagSent","stateOrAction","paymentCompleted","userID","userInfo","freezerFoodChoiceListJson","freezerFoodTypeListJson","setProperty","domain","value","propertyValue","getProperty","getProperties","filter","p","propertyDomain","getPropertiesDict","propertyKey","registerUser","registrationCode","companyPhone","getUsernameByPhone","registerBuyerInfo","address","zipCode","city","country","registerBuyerEmail","returnCode","acceptPendingReturn","unregisterCode","resetCode","registerBorrowing","borrowerUserID","toISOString","getFileUrl2","getStores","getStore","storeId","store","codes","access","Promise","all","a","createStore","removeStore","updateStore","getStoresByCode","updateCodeStores","storeIds","postMessage","getMessages","codeId","length","deleteChatMessage","chatMessageId","canChangeOwner","changeOwner","newOwnerUserId","changeStoreOwner","addUserToStore","canDoStoreOperation","operation","updateStoreAccess","accessId","deleteStoreAccess","requestJoinList","hasCodeEditAccess","getBookDetails","isbn","sendStoreInvite","handleStoreInvite","inviteId","command","theme","getTheme","styles","mergeStyleSets","itemImage","marginBottom","width","height","backgroundColor","itemImageSmall","maxWidth","minHeight","shimmerImage","semanticColors","buttonBackgroundDisabled","ItemImage","setUrl","useState","isSmall","useEffect","getFileUrl","then","catch","style","display","flexDirection","justifyContent","Image","className","src","alt","imageFit","ImageFit","contain","Stack","ItemGridView","items","onItemInvoked","columnCount","React","useRef","rowHeight","FocusZone","List","onRenderCell","useCallback","overflow","Item","root","ParagraphTitle","nowrap","ParagraphText","align","foodType","getItemCountForPage","itemIndex","visibleRect","current","floor","getPageHeight","renderedWindowsAhead","ItemListView","busy","columns","ShimmeredDetailsList","enableShimmer","ariaLabelForShimmer","compact","selectionMode","SelectionMode","none","layoutMode","DetailsListLayoutMode","justified","isHeaderVisible","onActiveItemChanged","ItemsView","viewList","tokens","childrenGap","classNames","fileIconHeaderIcon","padding","fontSize","fileIconCell","textAlign","selectors","content","verticalAlign","visibility","fileIconImg","maxHeight","controlWrapper","flexWrap","exampleToggle","marginRight","selectionDetails","iconClassName","ariaLabel","isIconOnly","fieldName","minWidth","onRender","statusIconFilename","getStatusIconFilename","isRowHeader","isResizable","sortAscendingAriaLabel","sortDescendingAriaLabel","isPadded","isCollapsible","ListItems","viewDetailedList","onSelected","myTheme","createTheme","palette","themePrimary","themeLighterAlt","themeLighter","themeLight","themeTertiary","themeSecondary","themeDarkAlt","themeDark","themeDarker","neutralLighterAlt","neutralLighter","neutralLight","neutralQuaternaryAlt","neutralQuaternary","neutralTertiaryAlt","neutralTertiary","neutralSecondary","neutralPrimaryAlt","neutralPrimary","neutralDark","white","shugardTheme","useTheme","initialOrigin","showStaticCodes","setShowStaticCodes","showStorageCodes","setShowStorageCodes","showKeyCodes","setShowKeyCodes","showLostAndFoundCodes","setShowLostAndFoundCodes","showFreezerCodes","setShowFreezerCodes","showHtmlCodes","setShowHtmlCodes","showBuy","setShowBuy","aboutPage","setAboutPage","origin","setOrigin","setTheme","imageDir","setImageDir","useObserveCode","onSaved","onUnregistered","setBusy","setCode","setCodeInfo","error","setError","setHasCodeEditAccess","setName","setType","setState","setDescription","changeDate","setChangeDate","setStatusIconFilename","images","setImages","defaultImageId","setDefaultImageId","defaultImage","setDefaultImage","setHasImage","lostPayValue","setLostPayValue","setShowHowMuchPay","enablePosition","setEnablePosition","setOfferPay","setPossibleSendMess","setShowPhoneNumber","showInfoSendMess","setShowInfoSendMess","showInfoOfferPay","setShowInfoOfferPay","showInfoShowHowMuchPay","setShowInfoShowHowMuchPay","ownerUserId","setOwnerUserId","ownerUserName","setOwnerUserName","ownerPhone","setOwnerPhone","setIsMine","setIsBorrowed","setIsRegistered","setIsAwaitingOwnerReturnAccept","borrowerUserName","setBorrowerUserName","codeStores","setCodeStores","shortId","setShortId","storageDate","setStorageDate","setContent","setContentType","setLocation","room","setRoom","category","setCategory","setBoxState","priority","setPriority","fragility","setFragility","boxColor","setBoxColor","requireUserRemovalApproval","setRequireUserRemovalApproval","requireBankID","setRequireBankID","rentable","setRentable","isPublicViewable","setIsPublicViewable","itemType","setItemType","setReturnDate","returnNumDays","setReturnNumDays","rentMessToOwner","setRentMessToOwner","setRentCostDescr","setEnableRenterChatRent","boxStateIconFilename","setBoxStateIconFilename","setIsBorrowedByMe","setFoodType","persons","setPersons","setExpirationDate","amount","setAmount","amountType","setAmountType","changed","setChanged","getFiles","getBoxStatusIconFilename","getBorrowerUserName","console","warn","find","image","_save","trim","s","success","reload","canCopyCodeFromLocalSettings","itemCopy","save","unregister","returnItem","borrow","borrower","getDateWithDaysAdded","createdAt","addImage","refreshImages","copyCodeFromLocalSettings","confirm","undefined","copyCodeToLocalSettings","itemProperties","useObserveMessages","messages","setMessages","readMessages","deleteMessage","useObserveStrings","useObserveUser","setUserId","lock","setLock","setUsername","setCodes","stores","setStores","setFirstName","setLastName","setAddress","setZipCode","setCity","setCountry","setEmail","setPhone","tabChoices","setTabChoices","contentTypeChoices","setContentTypeChoices","typeChoices","setTypeChoices","contentChoices","setContentChoices","locationChoices","setLocationChoices","roomChoices","setRoomChoices","categoryChoices","setCategoryChoices","enableSMRecievingOnIncommingMessages","setEnableSMRecievingOnIncommingMessages","disableShowReallyChangeImageToPrivate","setDisableShowReallyChangeImageToPrivate","info","updateUserInfo","newInfo","updatedFields","finally","onTabChoiceChange","onEnableSMRecievingOnIncommingMessagesChange","onFirstNameChange","onLastNameChange","onAddressChange","onCityChange","onZipCodeChange","onCountryChange","onEmailChange","useObserveStore","onRemoved","setStore","requireCodesOwnerChange","setRequireCodesOwnerChange","isPrivateList","setIsPrivateList","allowResharing","setAllowResharing","canDeleteStore","setCanDeleteStore","canAskToRequireCodeOwnerChange","setCanAskToRequireCodeOwnerChange","hasListAccess","setHasListAccess","canEditCodes","setCanEditCodes","canListUsers","setCanListUsers","isPendingUser","setIsPendingUser","setAccess","storeCodes","setStoreCodes","userCodes","setUserCodes","selectedKeys","setSelectedKeys","ownerRole","setOwnerRole","storeOwnerAccess","can","updateCodes","updatedCodes","updatedStore","otherStoreCodes","c","concat","formatCodeInfo","setOptions","deleteStore","join","removeUser","Menu","withRouter","showMenu","onDismiss","history","isLoggedIn","links","push","iconProps","iconName","disable","codicent","setup","show","logout","Panel","isOpen","PanelType","custom","closeButtonAriaLabel","customWidth","isLightDismiss","Nav","groups","Label","version","Header","setShowMenu","userName","accentButtonBackground","color","position","top","left","right","horizontal","grow","disableShrink","to","textDecoration","primaryButtonText","margin","setLanguage","Text","substring","FontIcon","Content","bottom","QRcodeImage","PageTitle","variant","textOverflow","ParagraphTextPre","ItemInfoStacked","header","ParagraphLabel","CodeShowAndLinkToQRImage","setShow","Link","underline","Dialog","hidden","modalProps","isBlocking","DialogContent","ShowList","codesLists","StackVert","classNamesIconTableRow","table","fontFamily","borderCollapse","td_th","border","IconTableRow","paddingRight","TableRow2ColsText","StackHorizontal","wrap","OnRenderOptionDropdown","option","Icon","ListFreezerItems","toLocaleDateString","ListHtmlItems","constructor","super","_onItemInvoked","ListLostFoundItems","ListBoxes","TagTypeOverview","useHistory","viewPrivateMode","setviewPrivateMode","Toggle","checked","onChange","_event","onText","offText","shrink","PrimaryButton","ListStoreItems","search","filteredCodes","toLowerCase","FeedbackForm","extra","feedback","setFeedback","sent","setSent","TextField","multiline","rows","resizable","_e","newValue","horizontalAlign","marginTop","Spinner","MessageBar","messageBarType","MessageBarType","disabled","ShowInfoOnly","infoTitle","showHelp","setShowHelp","IconButton","headerText","dropdownStyles","dropdown","MultiItemSelect","placeholder","label","selectedItems","Dropdown","selected","multiSelect","onRenderTitle","ListsDropdown","lists","selectedLists","setInfo","requireCodesOwnerChangeCountTotal","requireCodesOwnerChangeCount","k","TabSettings","tabState","setTabState","showTabStatic","showTabBoxes","showTabLostFound","showTabFreezer","showTabMessages","some","x","newState","getTabChoices","Checkbox","_ev","cs","TabSettingsPanel","Home","list","queryString","_qrCode","setItems","setQrCode","view","setView","setSearch","staticItems","setStaticItems","freezeItems","setFreezeItems","lostFoundItems","setLostFoundItems","htmlItems","setHtmlItems","boxesItems","setBoxesItems","setViewDetailedList","pivotItems","setPivotItems","showTabSettingsPanel","setShowTabSettingsPanel","i","index","indexOf","toString","pushState","document","newTabChoices","_getCodeDetails","err","_updateCodes","openItem","match","toLocaleUpperCase","every","matches","selectList","itemKey","t","start","touchStart","event","touches","clientX","touchEnd","changedTouches","end","addEventListener","removeEventListener","SearchBox","underlined","onSearch","_","marginLeft","Pivot","selectedKey","onLinkClick","pi","overflowBehavior","PivotItem","itemIcon","Privacy","FetchData","forecasts","loading","componentDidMount","populateWeatherData","forecast","temperatureC","temperatureF","summary","contents","renderForecastsTable","Counter","currentCount","incrementCounter","bind","About","Admin","_getBuyerInfo","log","userIsAdmin","isAdmin","buyerGUID","buyerInfo","numTags","purchases","prevProps","prevState","RegisterUser","_requestCode","companies","codeSent","company","usernameNeeded","_register","token","replace","onRegister","_getFilteredPhoneNumber","privacyChecked","isUsPhone","startsWith","emailOk","test","fieldGroup","autoFocus","required","autoComplete","target","Register","redirect","Purchasing","_getUserOrderInfo","_payWithPaypal","_payWithSwich","_payWithKlarna","fullname","TitleWithInfo","iconFileName","onClose","showMisuseButton","setShowMisuseButton","RegisterItemManually","_verifyCode","verifyCodeExists","codeExist","itemTitle","itemDescription","pictureOfEquip","MaskedTextField","toUpperCase","mask","maskFormat","size","SpinnerSize","large","callout","ItemFound","_infoTargetElement","createRef","_infoSendMessageElement","showInfoTargetMess","showPhoneNumberLost","showHowMuchLostPay","ref","Callout","preventDismissOnLostFocus","ConfigLost","_infoSendMess","_infoOfferPay","_infoShowHowMuchPay","_registerLostCfg","onChanged","ConfigRent","_registerRentCfg","autoAdjustHeight","BuyTagsPage","buyButton","whiteSpace","setSkuList","selectedSku","findIndex","sku","tagTypeOptions","imageSrc","imageAlt","selectedImageSrc","imageSize","ComboBox","ChoiceGroup","defaultSelectedKey","price","BuyPhysicalTags","_registerAddress","onStartPurchase","BuyTagsPhysicalOnly","tagFormatOptions","BuyDigitalTags","SendMessage","sendButtonText","onMessageSent","setMessage","ListMessages","showSendMessage","showReply","setShowReply","showDeleteConfirm","setShowDeleteConfirm","messageToDelete","setMessageToDelete","m","borderLeft","paddingLeft","dangerouslySetInnerHTML","__html","cursor","dialogContentProps","subText","DialogFooter","DefaultButton","container","UploadDialog","uploading","setUploading","hasImage","setImage","cropper","setCropper","ext","setExt","fileInput","quickAdd","setQuickAdd","click","dismiss","DialogType","main","viewMode","minCropBoxHeight","minCropBoxWidth","background","responsive","rotatable","autoCropArea","checkOrientation","onInitialized","instance","guides","isMultiline","multiple","accept","files","dataTransfer","reader","FileReader","onload","result","readAsDataURL","rotate","dataURI","byteString","atob","mimeString","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","dataURItoBlob","getCroppedCanvas","toDataURL","FormData","append","uploadFile2","ImagesPanel","onImageAdded","onImageDeleted","showUploadDialog","setShowUploadDialog","urls","setUrls","imageId","setImageId","showDeleteDialog","setShowDeleteDialog","metadata","setMetadata","isPrivate","setIsPrivate","showReallyChangeImageToPrivate","setShowReallyChangeImageToPrivate","closeShowReallyChangeToPrivate","private","boxSizing","boxShadow","objectFit","updateFile","_image","float","deleteFile","imageIndex","splice","ItemFooterEdit","showUnregister","setShowUnregister","closeUnregister","goBack","HandleItemBorrowedByMe","onReturnItem","numDaysToAdd","setNumDaysToAdd","showExtendDialog","setShowExtendDialog","returnDateList","stateToString","defaultValue","currentReturnDate","setDate","getDate","HandleItemBorrowedByOther","HandleBorrowingItem","onBorrow","HandleOwnItem","hasFeature","RegisterItem","onChangeType","EditFreezer","EditBoxes","EditLostFound","EditHtml","EditStatic","HandleOwnHtml","isHtml","setIsHtml","hasHtmlTags","HandleOthersHtml","HandleOtherLostFound","geolocation","getCurrentPosition","coords","latitude","longitude","HandleOwnLostFound","Boolean","ShowWhatBoxIconsMean","HandleOwnBoxes","HandleOthersBoxes","HandleItemOtherBorrowedByOther","HandleFreezer","ItemView","params","EditItem","ListItemsHelp","getStatusIconByName","StackItem","CreateStoreDialog","onCreateStore","nameOk","descriptionOk","StoreContextualMenu","menuVisible","setMenuVisible","setTarget","setUserName","dialogHidden","setDialogHidden","hideDialog","menuProps","shareStore","onItemClick","currentTarget","menuIcon","ListStores","Stores","setHidden","AccessAddUserDialog","onAddUser","close","AccessChangeOwnerDialog","onChangeOwner","users","setValue","optionsFoodTypes","AccessRow","owner","onRemoveUser","setClaims","showChangeRoleDialog","setShowChangeRoleDialog","showRemoveRoleDialog","setShowRemoveRoleDialog","role","setRole","ev_","newRole","updateAccess","AccessTableNew","showDialog","setShowDialog","hideOwnerDialog","setHideOwnerDialog","canChangeStoreOwner","setCanChangeStoreOwner","canInviteStoreUser","setCanInviteStoreUser","highestAccessLevel","setHighestAccessLevel","userAccess","Object","keys","reduce","prev","curr","EditStore","useParams","onUpdateCodes","o","editstores_allowResharingOfList","ViewStore","ItemFooterSave","onSave","isValid","onUnregister","canSave","onPasteCode","showChangeCodeType","setShowChangeCodeType","setCodeType","showAdvancedSettings","setShowAdvancedSettings","closeChangeCodeType","_onToggelShowAdvancedSettings","ev","when","EditTypeModal","showAdd","setShowAdd","valid","v","Modal","titleAriaId","onFocus","select","setIsValid","showEditFoodChoice","setShowEditFoodChoice","showEditFoodType","setShowEditFoodType","showEditLocationChoices","setShowEditLocationChoices","foodChoices","setFoodChoices","slice","foodTypes","setFoodTypes","optionsFoodChoice","setOptionsFoodChoice","optionsFoodType","setOptionsFoodType","optionsLocationChoices","setOptionsLocationChoices","fc","ft","lc","optionsAmountTypes","onRenderOption","DatePicker","minDate","onSelectDate","d","Rating","RatingSize","Large","rating","max","ariaLabelFormat","unselectedIcon","showEditImagesPanel","setShowEditImagesPanel","InfoBar","setText","ErrorBar","ScanDialog","onScanned","readerRef","setReaderRef","setData","html5QrcodeScanner","Html5QrcodeScanner","fps","qrbox","showScanner","setShowScanner","showEditItemTypeChoices","setshowEditItemTypeChoices","showEditRoomChoices","setShowEditRoomChoices","showEditCategoryChoices","setShowEditCategoryChoices","optionsRoomChoices","setOptionsRoomChoices","mapChoices","onAdd","insertNoChoiceOption","optionsItemTypeChoices","optionsCategoryChoices","updateChoices","listName","setFunction","values","book","volumeInfo","authors","_authorsToString","publisher","publishedDate","showEditContentChoices","setShowEditContentChoices","showEditContentTypeChoices","setShowEditContentTypeChoices","optionsContentChoices","optionsContentTypeChoices","optionsBoxStateChoices","optionsPrioryChoices","optionsBoxColorChoices","UserSettings","Scan","onScanSuccess","JoinStore","initializeIcons","App","loadTheme","exact","path","component","isLocalhost","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","basename","process","get","ready","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.741ec6cd.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport { Container } from 'reactstrap';\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render () {\n return (\n
\n \n {this.props.children}\n \n
\n );\n }\n}\n","interface IStrings {\n QRitDefault: boolean;\n Shureguard: boolean;\n\n // Generic\n generic_yes: string;\n generic_no: string;\n generic_description: string;\n generic_edit: string;\n generic_copy: string;\n generic_name: string;\n generic_cancel: string;\n generic_save: string;\n generic_share: string;\n generic_properties: string;\n generic_back: string;\n generic_close: string;\n generic_PageInfo: string;\n generic_noCodes: string;\n generic_ListsShow: string;\n generic_QRCode: string;\n generic_noLists: string;\n generic_noTypeSet: string;\n generic_phone: string;\n generic_add: string;\n generic_noMessages: string;\n generic_user: string;\n generic_manageImages: string;\n generic_quickAddImage: string;\n\n // Chat messages\n messages_footerMessage: string;\n messages_messageTitle: string;\n messages_send: string;\n messages_reply: string;\n messages_replyTitle: string;\n messages_replyText: string;\n messages_delete: string;\n messages_deleteTitle: string;\n messages_deleteText: string;\n\n // header.txs\n header_whatIsQRit: string;\n header_buyQRcodes: string;\n header_manualQRentry: string;\n header_scan: string;\n header_termsAndConditions: string;\n header_feedback: string;\n header_itemFound: string;\n header_account: string;\n header_logout: string;\n header_login: string;\n header_stores: string;\n header_settings: string;\n\n // Home.ts - TODO: THIS IS NOT COMPLETE\n welcome: string;\n environmentFuture: string;\n found: string;\n home_loginRegister: string;\n home_lostFound: string;\n home_WarnMsgYouHaveNewCode: string;\n home_WarnMsgYouHaveExistingCode: string;\n home_ButtonSignIn: string;\n home_ButtonItemFound: string;\n home_codeDetailsFailedGetInfo: string;\n home_items: string;\n home_FreezerReuse: string;\n home_LostFound: string;\n home_Freetext: string;\n home_Boxes: string;\n home_Search: string;\n\n home_iconTableWhatDoTheIconsMean: string;\n home_iconTableHeaderIcon: string;\n home_iconTableHeaderDescription: string;\n home_iconTableStaticHome: string;\n home_iconTableStaticHomeAtOther: string;\n home_iconTableStaticMyBorrowedByOther: string;\n home_iconTableStaticOtherBorrowedByMe: string;\n home_iconTableStaticOtherBorrowedByOther: string;\n home_iconTableBoxOpen: string;\n home_iconTableBoxPacking: string;\n home_iconTableBoxClosed: string;\n home_iconTableBoxStorageHome: string;\n home_iconTableBoxStorageAway: string;\n home_iconTableBoxUnpacking: string;\n home_iconTableBoxWhatAreTagTypes: string;\n home_tagTypeTableWhatAreTheTagTypes: string;\n home_tagTypeTableOtherTextOnly: string;\n home_tagTypeTableCodeTypeName: string;\n home_tagTypeTableDescription: string;\n home_tagTypeTableStatic: string;\n home_tagTypeTableBoxes: string;\n home_tagTypeTableLostFound: string;\n home_tagTypeTableFreezer: string;\n home_tagTypeTableMessage: string;\n home_tagTypeTableOther: string;\n\n // Item.tsx\n item_shareItemText: string;\n item_status: string;\n item_whoBorrowed: string;\n handleBorrowingItem_whenGiveBack1: string;\n handleBorrowingItem_whenGiveBack2: string;\n item_photo: string;\n item_atHome: string;\n item_isPublicViewable: string;\n\n // ItemView\n itemView_CodeDoesNotExist: string;\n\n // ListItems\n listItems_state: string;\n listItems_loading: string;\n listItems_home: string;\n listItems_giveBack1: string;\n listItems_giveBack2: string;\n listItems_awayFor1: string;\n listItems_awayFor2: string;\n listItems_photo: string;\n\n // listHtmlItems\n listHtmlItems_created: string;\n listHtmlItems_description: string;\n\n // itemImage\n itemImage_NoImage: string;\n\n //ListPuchases\n listPurchases_errorMsgUpdatePurchases: string;\n listPurchases_purchaseCompletedColText: string;\n listPurchases_tagSentColText: string;\n listPurchases_stateOrActionColText: string;\n listPurchases_digitalColText: string;\n listPurchases_createdColText: string;\n\n // HandleBorrowedItem.ts\n handleBorrowedItem_reportReturned: string;\n\n // HandleBorrowingItem\n handleBorrowingItem_infoHeader: string;\n handleBorrowingItem_Info1: string;\n handleBorrowingItem_Info2: string;\n handleBorrowingItem_Info3: string;\n handleBorrowingItem_Info4: string;\n handleBorrowingItem_Info5: string;\n handleBorrowingItem_wantToBorrowFrom: string;\n handleBorrowingItem_oneDay: string;\n handleBorrowingItem_threDays: string;\n handleBorrowingItem_oneWeek: string;\n handleBorrowingItem_onemonth: string;\n handleBorrowingItem_threeMonths: string;\n handleBorrowingItem_oneYear: string;\n handleBorrowingItem_noEndDate: string;\n handleBorrowingItem_borrow: string;\n handleBorrowingItem_OwnerName: string;\n handleBorrowingItem_TypeOfItem: string;\n handleBorrowingItem_ItemName: string;\n handleBorrowingItem_InfoAboutRent: string;\n handleBorrowingItem_SendMessToOwner: string;\n handleBorrowingItem_whenReturnItem: string;\n handleBorrowingItem_Category: string;\n\n // HandleItemBorrowedByMe.ts\n handleItemBorrowedBy_reportItemBack: string;\n handleItemBorrowedByMe_YouBorrowedThis: string;\n handleItemBorrowedByMe_Info1: string;\n handleItemBorrowedByMe_Info2: string;\n handleItemBorrowedByMe_Info3: string;\n handleItemBorrowedByMe_ShouldBeReturnedBy: string;\n handleItemBorrowedByMe_ReturnIn: string;\n handleItemBorrowedByMe_Days: string;\n handleItemBorrowedByMe_RentCost: string;\n handleItemBorrowedByMe_infoHeader: string;\n handleItemBorrowedByMe_oneDay: string;\n handleItemBorrowedByMe_threDays: string;\n handleItemBorrowedByMe_oneWeek: string;\n handleItemBorrowedByMe_onemonth: string;\n handleItemBorrowedByMe_threeMonth: string;\n handleItemBorrowedByMe_oneYear: string;\n handleItemBorrowedByMe_noEndDate: string;\n handleItemBorrowedByMe_extend: string;\n handleItemBorrowedByMe_extendDate: string;\n handleItemBorrowedByMe_addNumDays: string;\n\n //HandleItemBorrowedByOther.ts\n handleItemBorrowedByOther_ReportReturned: string;\n handleItemBorrowedByOther_BorrowedItem: string;\n handleItemBorrowedByOther_BorrowedBy: string;\n handleItemBorrowedByOther_ShouldBeReturnedBy: string;\n handleItemBorrowedByOther_ReturnIn: string;\n handleItemBorrowedByOther_Days: string;\n handleItemBorrowedByOther_info1: string;\n handleItemBorrowedByOther_info2: string;\n handleItemBorrowedByOther_info3: string;\n handleItemBorrowedByOther_rentCost: string;\n\n // HandleItemOtherBorrowedByOther.tsx\n handleItemOtherBorrowedByOther_Title: string;\n handleItemOtherBorrowedByOther_infoHeader: string;\n handleItemOtherBorrowedByOther_info1: string;\n handleItemOtherBorrowedByOther_info2: string;\n\n // HandleOwnItem.ts\n handleOwnItem_itemHeader: string;\n handleOwnItem_unregisterItem: string;\n handleOwnItem_unregister: string;\n handleOwnItem_TypeOfItem: string;\n handleOwnItem_close: string;\n handleOwnItem_realyUnregister: string;\n handleOwnItem_resetCode: string;\n handleOwnItem_QRnumber: string;\n handleOwnItem_QRCode: string;\n handleOwnItem_PageHeader: string;\n\n // handleOwnHtmlItem.ts\n handleHtmlItem_PageHeader: string;\n handleHtmlItem_reset: string;\n handleHtmlItem_QRCode: string;\n handleHtmlItem_TagId: string;\n handleOwnHtml_infoHeader: string;\n handleOwnHtml_TextOrHTML: string;\n handleOwnHtml_info1: string;\n handleOwnHtml_info2: string;\n handleOwnHtml_info3: string;\n handleOwnHtml_info4: string;\n handleOwnHtml_info5: string;\n handleOwnHtml_info6: string;\n\n // handleOwnLostFound\n handleOwnLostFound_LostFound: string;\n handleOwnLostFound_ShowFindersFee: string;\n handleOwnLostFound_FindersFee: string;\n handleOwnLostFound_ShowYourPhoneNum: string;\n handleOwnLostFound_MessageSendingEnabled: string;\n handleOwnLostFound_ResetCode: string;\n handleOwnLostFound_FinderCanSendGPS: string;\n handleOwnLostFound_infoOnLostFound: string;\n handleOwnLostFound_thisIsLostFoundCode: string;\n handleOwnLostFound_whenYouMarkSometingWithTag: string;\n handleOwnLostFound_whenYouEditThisTag: string;\n\n handleOtherLostFound_HowToReturnItem: string;\n handleOtherLostFound_YouHaveScannedCode: string;\n handleOtherLostFound_FindersFee: string;\n handleOtherLostFound_ThereIsAFindersFee: string;\n handleOtherLostFound_OwnersPhoneNum: string;\n handleOtherLostFound_PhoneNum: string;\n handleOtherLostFound_PleaseCallOrSend: string;\n handleOtherLostFound_SendMessToOwner: string;\n handleOtherLostFound_YouCanChooseSendMess: string;\n handleOtherLostFound_SendMess: string;\n handleOtherLostFound_infoHeader: string;\n handleOtherLostFound_info1: string;\n handleOtherLostFound_info2: string;\n handleOtherLostFound_info3: string;\n handleOtherLostFound_info4: string;\n handleOtherLostFound_info5: string;\n handleOtherLostFound_info6: string;\n handleOtherLostFound_SendGPSPosToOwnerHeader: string;\n handleOtherLostFound_SendGPSPositionToOwnerInfo: string;\n handleOtherLostFound_SendGPSPosToOwnerButton: string;\n handleOtherLostFound_SendingGPSPosToOwner: string;\n handleOtherLostFound_GeolocationIsNotSupported: string;\n handleOtherLostFound_HasSentGPSPosToOwner: string;\n handleOtherLostFound_GpsLinkMessage: string;\n\n // HandleOthersFreezer\n handleOthersFreezer_infoHeader: string;\n handleOthersFreezer_info1: string;\n handleOthersFreezer_info2: string;\n handleOthersFreezer_info3: string;\n handleOthersFreezer_PageHeader: string;\n handleOthersFreezer_Owner: string;\n handleOthersFreezer_ContentType: string;\n handleOthersFreezer_FoodType: string;\n handleOthersFreezer_FreezDate: string;\n handleOthersFreezer_ExparationDate: string;\n handleOthersFreezer_ForHowMany: string;\n handleOthersFreezer_HowMuch: string;\n handleOthersFreezer_Location: string;\n\n //handleOthersBoxes\n handleOthersBoxes_Info1: string;\n handleOthersBoxes_Info2: string;\n handleOthersBoxes_Info3: string;\n handleOthersBoxes: string;\n handleOthersBoxes_PageHeader: string;\n handleOwnBoxes_PageHeader: string;\n handleOwnBoxes_infoHeader: string;\n handleOwnBoxes_PageHeaderEdit: string;\n\n // HandleBoxes\n handleBoxes_Owner: string;\n handleBoxes_ShortID: string;\n handleBoxes_ContentType: string;\n handleBoxes_Content: string;\n handleBoxes_Description: string;\n handleBoxes_Location: string;\n handleBoxes_Room: string;\n handleBoxes_Category: string;\n handleBoxes_Fragility: string;\n handleBoxes_Priority: string;\n handleBoxes_QRcode: string;\n handleBoxes_BoxColor: string;\n handleBoxes_BoxState: string;\n handleBoxes_StorageDate: string;\n handleBoxes_ShortId: string;\n handleBoxes_0: string;\n handleBoxes_1: string;\n handleBoxes_2: String;\n handleBoxes_3: string;\n handleBoxes_4: string;\n handleBoxes_5: string;\n handleBoxes_6: string;\n handleBoxes_7: string;\n handleBoxes_8: string;\n handleBoxes_9: string;\n handleBoxes_10: string;\n\n // EditBoxes.ts\n EditBoxes_ContentTypeHeader: string;\n EditBoxes_ContentHeader: string;\n EditBoxes_BoxName: string;\n EditBoxes_Location: string;\n EditBoxes_Room: string;\n EditBoxes_QRID: string;\n EditBoxes_BoxID: string;\n EditBoxes_QRcode: string;\n EditBoxes_LocationHeader: string;\n EditBoxes_RoomHeader: string;\n EditBoxes_CategoryHeader: string;\n EditBoxes_BoxStateHeader: string;\n EditBoxes_BoxPriorityHeader: string;\n EditBoxes_BoxColorHeader: string;\n EditBoxes_InfoHeader: string;\n\n // EditBoxInfo\n EditBoxInfo_BoxInfoHeader: string;\n EditBoxInfo_PlaceQR: string;\n EditBoxInfo_ScanQR: string;\n EditBoxInfo_Packing: string;\n EditBoxInfo_AddingCatDetails: string;\n EditBoxInfo_BackLater: string;\n EditBoxInfo_FinishedPacking: string;\n EditBoxInfo_AddingPrioFrag: string;\n EditBoxInfo_PutInStorage: string;\n\n // HandleFreezer.ts\n handleFreezer_freezing_date: string;\n handleFreezer_persons: string;\n handleFreezer_noDateSet: string;\n\n // HomePageText.ts\n homePageText_howWorks: string;\n homePageText_prices: string;\n homePageText_toThinkAbout: string;\n homePageText_tagsFromUs: string;\n homePageText_tagOntoTool: string;\n homePageText_scanWithCell: string;\n homePageText_addDescript: string;\n homePageText_ifSomoneBorrow: string;\n homePageText_weKeepTrack: string;\n homePageText_qritIsServiceSubscr: string;\n homePageText_subscript8kr: string;\n homePageText_subscript8krEnd: string;\n homePageText_12TagsCost: string;\n homePageText_12TagsCostEnd: string;\n homePageText_24TagsCost: string;\n homePageText_24TagsCostEnd: string;\n homePageText_buyPhysicalTags: string;\n homePageText_alsoJusgtPrintAndTejp: string;\n homePageText_attTankaPa: string;\n homePageText_ifNotPrintWeSend: string;\n homePageText_ifNotPrintWeSendEnd: string;\n homePageText_tagsMustPlanar: string;\n homePageText_size2x4: string;\n homePageText_partOfTagsWhite: string;\n homePageText_ifPDF: string;\n homePageText_priceTablePrice: string;\n homePageText_priceTableCurrency: string;\n\n // HomePage\n homePage_infoHeader: string;\n homePage_infoGeneralHelp: string;\n homePage_info0: string;\n homePage_info1: string;\n homePage_info2: string;\n homePage_info3: string;\n homePage_info4: string;\n homePage_info5: string;\n homePage_info6: string;\n homePage_info7: string;\n homePage_info8: string;\n homePage_grid: string;\n homePage_list: string;\n\n // tagTypeOverview\n tagTypeOverview_pageHeader: string;\n tagTypeOverview_intro: string;\n tagTypeOverview_RegisterLoginInfo: string;\n tagTypeOverview_RegisterLogin: string;\n tagTypeOverview_lblHeaderQRitStorage: string;\n tagTypeOverview_QRitStorage1: string;\n tagTypeOverview_QRitStorage2: string;\n tagTypeOverview_QRitStorage3: string;\n tagTypeOverview_lblHeaderQRitKeys: string;\n tagTypeOverview_QRitKeys1: string;\n tagTypeOverview_QRitKeys2: string;\n tagTypeOverview_lblHeaderQRitStatic: string;\n tagTypeOverview_QRitStatic1: string;\n tagTypeOverview_QRitStatic2: string;\n tagTypeOverview_QRitStatic3: string;\n tagTypeOverview_lblHeaderQRitLostFound: string;\n tagTypeOverview_QRitLostFound1: string;\n tagTypeOverview_QRitLostFound2: string;\n tagTypeOverview_lblHeaderQRitFreezer: string;\n tagTypeOverview_QRitFreezer1: string;\n tagTypeOverview_QRitFreezer2: string;\n tagTypeOverview_QRitFreezer3: string;\n tagTypeOverview_lblHeaderQRitHtml: string;\n tagTypeOverview_QRitHtml1: string;\n tagTypeOverview_QRitHtml2: string;\n tagTypeOverview_business: string;\n tagTypeOverview_private: string;\n\n tagTypeOverview_pageHeader_BB: string;\n tagTypeOverview_intro_BB: string;\n tagTypeOverview_RegisterLoginInfo_BB: string;\n tagTypeOverview_lblHeaderQRitStorage_BB: string;\n tagTypeOverview_lblHeaderQRitKeys_BB: string;\n tagTypeOverview_lblHeaderQRitLostFound_BB: string;\n tagTypeOverview_lblHeaderQRitFreezer_BB: string;\n\n tagTypeOverview_lblHeaderQRitRestaurant_BB: string;\n tagTypeOverview_QRitStorage1_BB: string;\n tagTypeOverview_QRitStorage2_BB: string;\n tagTypeOverview_QRitOrderCodesHere_BB: string;\n tagTypeOverview_QRitKeys1_BB: string;\n tagTypeOverview_QRitKeys2_BB: string;\n tagTypeOverview_lblHeaderQRitStatic_BB: string;\n tagTypeOverview_QRitStatic1_BB: string;\n tagTypeOverview_QRitStatic2_BB: string;\n tagTypeOverview_QRitStatic_BB: string;\n tagTypeOverview_QRitLostFound1_BB: string;\n tagTypeOverview_QRitLostFound2_BB: string;\n tagTypeOverview_lblHeaderQRitHtml_BB: string;\n tagTypeOverview_QRitHtml1_BB: string;\n tagTypeOverview_QRitRestaurant1_BB: string;\n tagTypeOverview_QRitRestaurant2_BB: string;\n\n // Privacy.ts\n privacy_deliveryTerms: string;\n privacy_deliveryTermsHeader: string;\n privacy_deliveryTermsMissDelivery: string;\n privacy_personalInfoHeader: string;\n privacy_personalInfoUseInfo: string;\n privacy_cookies: string;\n privacy_cookiesInfo: string;\n privacy_infoStorageHeader: string;\n privacy_infoStorageInfoSSL: string;\n privacy_infoStorageInfoEncrypt: string;\n privacy_personalInfoPurchaseHeading: string;\n privacy_personalInfoPurchaseInfo: string;\n privacy_pricesHeader: string;\n privacy_pricesInfo: string;\n privacy_giveBackHeader: string;\n privacy_giveInfo: string;\n privacy_returningHeader: string;\n privacy_returningInfo: string;\n privacy_exchangeHeader: string;\n privacy_exchangeInfo: string;\n privacy_payBackHeader: string;\n privacy_payBackInfo: string;\n privacy_payBackInfoDelivery: string;\n privacy_goodToHaveLinksHeader: string;\n privacy_goodToHaveLinksConsumerService: string;\n privacy_goodToHaveLinksConsumerARN: string;\n privacy_goodToHaveLinksArbitration: string;\n privacy_complaintsHeader: string;\n privacy_complaintsInfo: string;\n\n // Purchasing.ts\n purchasing_payment: string;\n purchasing_ifPurchaseDigital: string;\n purchasing_ifPurchasePhysical: string;\n purchasing_order: string;\n puchasing_youLoggedInLoginNow: string;\n purchasing_payPaypal: string;\n purchasing_paySwish: string;\n purchasing_payKlarna: string;\n purchasing_paySwishInstructions: string;\n purchasing_fullName: string;\n purchasing_firstName: string;\n purchasing_lastName: string;\n purchasing_address: string;\n purchasing_zipCode: string;\n purchasing_city: string;\n purchasing_country: string;\n purchasing_emailPlaceholder: string;\n purchasing_email: string;\n purchasing_phone: string;\n purchasing_username: string;\n\n // RegisterItem.ts\n registerItem_itemRegistration: string;\n registerItem_freezerItemRegistration: string;\n registerItem_boxItemRegistration: string;\n registerItem_lostFoundItemRegistration: string;\n registerItem_messageTagItemRegistration: string;\n registerItem_messageHtml: string;\n registerItem_messageName: string;\n registerItem_alwaysConfirmReturn: string;\n registerItem_registrerMustHaveBankID: string;\n registerItem_putItemForRent: string;\n registerItem_rentInfo: string;\n registerItem_lostFound: string;\n registerItem_lostFoundInfo: string;\n registerItem_configRent: string;\n registerItem_configLostFound: string;\n registerItem_itemRegister: string;\n registerItem_failedRegisterCode: string;\n\n // EditHtml\n editHtml_PageHeaderEdit: string;\n editItem_PageHeaderEdit: string;\n\n editHtml_Instructions: string;\n editHtml_infoHeader: string;\n editHtml_Info1: string;\n editHtml_Info2: string;\n editHtml_Info3: string;\n editHtml_Info4: string;\n editHtml_Info5: string;\n\n // titleWithInfo\n titleWithInfo: string;\n titleWithInfo_reportMisuse: string;\n titleWithInfo_reportMisuseDescript: string;\n titleWithInfo_reportMisuseSent: string;\n titleWithInfo_reportMisuseError: string;\n\n // EditItem.ts\n editItem_typeStatic: string;\n editItem_typeReuse: string;\n editItem_typeReuseLostFound: string;\n editItem_typeReuseFreetext: string;\n editItem_typeStorage: string;\n editItem_typeLabel: string;\n editItem_failedSaveCode: string;\n\n // EditStatic\n editStatic_infoHeader: string;\n editStatic_PageHeaderEdit: string;\n editStatic_1: string;\n editStatic_2: string;\n editStatic_3: string;\n editStatic_3_1: string;\n editStatic_3_2: string;\n editStatic_4: string;\n editStatic_5: string;\n editStatic_6: string;\n editStatic_7: string;\n editStatic_photo: string;\n editStatic_photoChoice: string;\n editStatic_ISBNScanningInfo: string;\n editStatic_alwaysConfirmReturn: string;\n editStatic_registrerMustHaveBankID: string;\n editStatic_putItemForRent: string;\n editStatic_configLostFound: string;\n editStatic_configRent: string;\n editStatic_lostFound: string;\n editStatic_lostFoundInfo: string;\n EditStatic_ItemTypesListHeader: string;\n EditStatic_ItemTypesHeader: string;\n editStatic_ListsHeader: string;\n editStatic_codeCannotBelongToMoreThanOne: string;\n editStatic_codeWillChangeOwner: string;\n editStatic_ISBNScanningError: string;\n\n // UploadDialog\n uploadDialogImageChoice: string;\n uploadDialogChooseImage: string;\n uploadDialogUpload: string;\n uploadDialogRotate: string;\n\n // ScanDialog\n scanDialog_manualEnter: string;\n\n // useObserveCode\n useObserveCode_ErroTryRefresh: string;\n\n // RegisterUser.ts\n registerUser_registerUser: string;\n registerUser_InfoAboutFree: string;\n registerUser_registerUserName: string;\n registerUser_registerPhone: string;\n registerUser_registerEmail: string;\n registerUser_registerphoneNumMustStartWith: string;\n registerUser_registerUsernameNeeded: string;\n registerUser_sendCode: string;\n registerUser_code: string;\n registerUser_privacyAgreement: string;\n registerUser_privacyAgreementHere: string;\n registerUser_iAgreeTerms: string;\n registerUser_iAgreeTermsEnd: string;\n registerUser_registerUserButton: string;\n registerUser_networkErrorTryAgain: string;\n registerUser_checkCodeTryAgain: string;\n registerUser_networkErrorTryAgain2: string;\n registerUser_goToPayment: string;\n registerUser_smsTextCode: string;\n registerUser_organization: string;\n registerUser_meAsUser: string;\n\n //buyDigitalTags\n buyDigialTags_buyTags: string;\n buyDigialTags_fillInEmail: string;\n buyDigialTags_email: string;\n buyDigialTags_howHandlePersonaInfoHere: string;\n buyDigialTags_howHandlePersonaInfo: string;\n\n // BuyPhysicalTags\n buyPhysicalTags_buyPhysicalTags: string;\n buyPhysicalTags_country: string;\n buyPhysicalTags_fillInAddressInfo: string;\n buyPhysicalTags_firstName: string;\n buyPhysicalTags_lastName: string;\n buyPhysicalTags_address: string;\n buyPhysicalTags_zipCode: string;\n buyPhysicalTags_city: string;\n\n // listMessages\n listMessages_Messages: string;\n\n // BuyTags\n buyTags_headerBuyQRcodes: string;\n buyTags_toUseMustHaveInfo: string;\n buyTags_chooseHereToBuyDigitalPhysical: string;\n //buyTags_ifYouBuyDigial: string\n buyTags_ifYouBuyDigial1: string;\n buyTags_ifYouBuyDigialPdfExampleURL: string;\n buyTags_ifYouBuyDigialPdfExampleHere: string;\n buyTags_ifYouBuyDigial2: string;\n buyTags_ifYouBuyDigialAveryExampleURL: string;\n buyTags_ifYouBuyDigialAveryExampleURLHere: string;\n buyTags_ifYouBuyDigial3: string;\n buyTags_ifYouBuyPhysical: string;\n buyTags_ifYouBuyPhysical2: string;\n buyTags_downloadPdf: string;\n buyTags_downloadPhysical: string;\n buyTags_qrCodeToX1: string;\n buyTags_qrCodeToX2: string;\n buyTags_chooseNumCodes: string;\n\n // BuyTags\n buyTags_ChoosePhysDigit: string;\n buyTags_ChooseTagLayout: string;\n buyTags_Price: string;\n buyTags_emptyTag: string;\n buyTags: string;\n buyTags_lostAndFound: string;\n buyTags_numbered: string;\n buyTags_numberedForeezer: string;\n\n buyTagsPhysicalOnly_toUseMustHaveInfo: string;\n buyTagsPhysicalOnly_chooseNumCodes: string;\n buyTagsPhysicalOnly_selectedFormatSimple: string;\n buyTagsPhysicalOnly_unSelectedFormatSimple: string;\n buyTagsPhysicalOnly_selectedFormatRugged: string;\n buyTagsPhysicalOnly_unSelectedFormatRugged: string;\n buyTagsPhysicalOnly_simpleTagFormat: string;\n buyTagsPhysicalOnly_ruggedTagFormatInfo: string;\n buyTagsPhysicalOnly_freeText: string;\n buyTagsPhysicalOnly_normalOrThickSticker: string;\n buyTagsPhysicalOnly_typeOfTagYouWant: string;\n buyTagsPhysicalOnly_theNumberOfTagsYouWant: string;\n\n buyTags_selectedTagEmpty: string;\n buyTags_selectedTagLostFound: string;\n buyTags_selectedTagNumber: string;\n buyTags_unSelectedTagEmpty: string;\n buyTags_unSelectedTagLostFound: string;\n buyTags_unSelectedTagNumber: string;\n\n // RegisterItemManually\n registerItemManually_infoHeader: string;\n registerItemManually_manualRegisteringItem: string;\n registerItemManually_manualRegisteringItemInfo1: string;\n registerItemManually_manualRegisteringItemInfo2: string;\n registerItemManually_writeQRcode8Char: string;\n registerItemManually_code: string;\n registerItemManually_register: string;\n registerItemManually_codeDoesNotExist: string;\n\n // Itemfound\n itemFound_youFoundQR: string;\n itemFound_someoneMarkedItem: string;\n itemFound_ownersPhoneNumber: string;\n itemFound_whatMessageDoYouWantToSend: string;\n itemFound_ownersOffersThisAmount: string;\n itemFound_insteadSendMessageToOwner: string;\n itemFound_sendMessage: string;\n itemFound_sendGPS: string;\n itemFound_sendGPSInfo: string;\n\n // ConfigRent\n configRent_choiceRentHeading: string;\n configRent_howMuchCostLbl: string;\n configRent_enableChatLbl: string;\n configRent_allowTimeExtent: string;\n configRent_enableRentQueue: string;\n\n // EditLostFound\n // TODO: Clean up naming\n editLostFound_settingsLost: string;\n editLostFound_settingsLostText: string;\n editLostFound_IwantFinderToSeePhoneNumber: string;\n editLostFound_IwantFinderAbleSendMess: string;\n configLost_withThisSettingFinderShowPos: string;\n editLostFound_IwantOfferLostPay: string;\n configLost_IwantOfferLostPayInfo: string;\n editLostFound_IwantFinderSeeHowMuchPay: string;\n configLost_IwantFinderSeeHowMuchPayInfo: string;\n editLostFound_HowMuchLostPay: string;\n editLostFound_HowMuchLostPayInfo: string;\n configLost_IwantEnablePosition: string;\n configLost_IwantEnablePositionInfo: string;\n editLostFound_infoHeader: string;\n editLostFound_info0: string;\n editLostFound_info1: string;\n editLostFound_info2: string;\n editLostFound_info3: string;\n editLostFound_info4: string;\n editLostFound_info5: string;\n editLostFound_info6: string;\n editLostFound_info7: string;\n editLostFound_info8: string;\n // editLostFound_info9: string\n editLostFound_info10: string;\n editLostFound_info11: string;\n\n // ItemFooter\n itemFooter_unregisterItem: string;\n itemFooter_unregister: string;\n itemFooter_close: string;\n itemFooter_realyUnregister: string;\n itemFooter_ShowAdvSettings: string;\n itemFooter_WarningDataLostRegisterNew: string;\n itemFooter_ChangeCodeType: string;\n itemFooter_areYouReadyToLeavePage: string;\n\n // ListTimeHelp\n // TODO: Andvänd dess på en hjälpsida för listItem\n listItemHelp_WhereIconHeader: string;\n listItemHelp_Header: string;\n listItemHelp_WhereIconDescr: string;\n listItemHelp_WhereIcon_Home: string;\n listItemHelp_WhereIcon_In: string;\n listItemHelp_WhereIcon_Out: string;\n listItemHelp_WhereIcon_Freezer: string;\n listItemHelp_OtherHeader: string;\n listItemHelp_Descr: string;\n listItemHelp_Image: string;\n\n // Freezwe\n freezer_DateHeader: string;\n freezer_ExpDateHeader: string;\n freezer_SelectADateDotDot: string;\n freezer_SelectADate: string;\n freezer_PersonCntHeader: string;\n freezer_10Persons: string;\n freezer_0Of1Persons: string;\n freezer_FoodTypeHeader: string;\n freezer_ContentTypeHeader: string;\n freezer_AmountHeader: string;\n freezer_EditFoodChoiceList: string;\n freezer_EditFoodTypeList: string;\n freezer_EditLocationList: string;\n freezer_Location: string;\n freezer_PageHeaderEdit: string;\n\n // EditFreezer\n editFreezer_infoHeader: string;\n editFreezer_info0: string;\n editFreezer_info1: string;\n editFreezer_info2: string;\n editFreezer_info3: string;\n editFreezer_info4: string;\n editFreezer_info5: string;\n editFreezer_info6: string;\n editFreezer_info7: string;\n editFreezer_info8: string;\n editFreezer_info9: string;\n editFreezer_info10: string;\n\n // editTypeModal\n editTypeModal_Delete: string;\n editTypeModal_Add: string;\n\n // Helpers\n Helpers_Scanned: string;\n Helpers_Unregistered: string;\n Helpers_Home: string;\n Helpers_BorrowedByOther: string;\n Helpers_BorrowedByMe: string;\n Helpers_OtherBorrowedByOther: string;\n Helpers_AwaitingReturnAccept: string;\n Helpers_Found: string;\n Helpers_ManageCategories: string;\n\n //listReuseItems\n listFreezerItems_Frozen: string;\n listFreezerItems_Expiration: string;\n\n // ListLostFoundItems\n listLostFoundItems_created: string;\n listLostFoundItems_photo: string;\n listLostFoundItems_photoDescription: string;\n\n // lostBoxes\n listBoxes_TagID: string;\n listBoxes_Content: string;\n listBoxes_Location: string;\n listBoxes_Room: string;\n listBoxes_Stored: string;\n listBoxes_Photo: string;\n\n // CreateStoreDialog\n createStoreDialog_Create: string;\n createStoreDialog_CreateStoreQuestion: string;\n createStoreDialog_StoreName: string;\n\n // ListStores\n ListStores_loading: string;\n\n // editStores\n editStores_allowResharingOfList: string;\n\n // joinStore\n joinStore_acceptJoinList: string;\n joinStore_rejectJoinList: string;\n\n //ImagePanel\n imagePanel_panelHeader: string;\n imagePanel_mainImage: string;\n imagePanel_addNewImage: string;\n imagePanel_removeImage: string;\n imagePanel_private: string;\n imagePanel_deleteImage: string;\n imagePanel_deleteSelectedImages: string;\n imagePanel_title: string;\n imagePanel_text: string;\n imagePanel_disableInFuture: string;\n\n // ViewStore\n viewStore_infoHeader: string;\n viewStore_info1: string;\n viewStore_info2: string;\n viewStore_info3: string;\n viewStore_info4: string;\n viewStore_info5: string;\n viewStore_info7: string;\n viewStore_info8: string;\n viewStore_info9: string;\n viewStore_info10: string;\n viewStore_info11: string;\n viewStore_DeleteStore: string;\n viewStore_Delete: string;\n viewStore_DeleteStoreQuestion: string;\n viewStore_Cancel: string;\n viewStore_SelectCodes: string;\n viewStore_MultiSelectControlled: string;\n viewStore_CodesTitle: string;\n viewStore_EditList: string;\n viewStore_RequireCodesOwnerChangeInfo: string;\n viewStore_RequireCodesOwnerChangeInfoNot: string;\n viewStore_RequireCodesOwnerChange: string;\n viewStore_AccessHandling: string;\n viewStore_Join: string;\n viewStore_CannotReqestJoinList: string;\n\n // Stores\n stores_CreateStore: string;\n stores_ManageLists: string;\n stores_infoHeader: string;\n stores_listBelongsToYou: string;\n stores_listBelongsToSomeoneElse: string;\n stores_info1: string;\n stores_info2: string;\n stores_info3: string;\n stores_info4: string;\n\n // UserSettings\n userSettings_infoHeader: string;\n userSettings_manageUserSettings: string;\n userSettings_manageViewTabs: string;\n userSettings_ChooseWhichTabsToShow: string;\n userSettings_ChooseWhichListsToShow: string;\n userSettings_Stuff: string;\n userSettings_boxes: string;\n userSettings_lostFound: string;\n userSettings_freezer: string;\n userSettings_messages: string;\n userSettings_listChoices: string;\n userSettings_enableSMRecievingOnIncommingMessages: string;\n userSettings_enableSMSRecieveLabel: string;\n userSettings_whereYouManageSettings: string;\n userSettings_theWarningIcon: string;\n userSettings_chooseToDisableReception: string;\n userSettings_UserContactInfo: string;\n userSettings_FeedbackSupport: string;\n userSettings_organizationAccount: string;\n userSettings_organizationsYouAreAdminFor: string;\n\n // AccesChangeOwnerDialog\n accessChangeOwnerDialog_ChangeOwner: string;\n accessChangeOwnerDialog_SubText: string;\n\n // StoreContextualMenu\n storeContextualMenu_listProperties: string;\n storeContextualMenu_moreOptions: string;\n storeContextualMenu_listName: string;\n storeContextualMenu_listOwner: string;\n\n // AccessAddUSerDialot\n accessAddUserDialog_addUser: string;\n accessAddUserDialog_subText: string;\n\n // AccessTable\n accessTable_FaildAddUser: string;\n accessTable_InviteUser: string;\n accessTable_ChangeOwner: string;\n accessTable_changeRole: string;\n accessTable_changeRoleInfo: string;\n accessTable_roleAdmin: string;\n accessTable_roleMaintain: string;\n accessTable_roleEditor: string;\n accessTable_rolePending: string;\n accessTable_roleMember: string;\n accessTable_setRole: string;\n accessTable_role: string;\n accessTable_command: string;\n accessTable_delete: string;\n accessTable_removeUser: string;\n accessTable_removeUserFromList: string;\n\n // Prices\n currency_prefix: string;\n currency_suffix: string;\n pricePhysicalDelviery: number;\n skuList: string[];\n\n freezer_FoodChoiceList: string[];\n freezer_FoodTypeList: string[];\n freezer_locationChoicesList: string[];\n freezer_AmountTypeList: string[];\n\n EditBoxes_ContentTypeList: string[];\n EditBoxes_ContentList: string[];\n EditBoxes_SiteList: string[];\n EditBoxes_RoomList: string[];\n EditBoxes_CategoryList: string[];\n // EditBoxes_PriorityList: string[];\n // EditBoxes_BoxStateList: string[];\n EditBoxes_DefaultContentType: string;\n EditBoxes_DefaultPriority: string;\n EditBoxes_DefaultFragility: boolean;\n EditBoxes_DefaultLocation: string;\n EditBoxes_DefaultBoxState: string;\n EditBoxes_BoxStateList2: { [key: string]: string };\n EditBoxes_PriorityList2: { [key: string]: string };\n EditBoxes_BoxColorChoices: { [key: string]: string };\n EditStatic_ItemTypesList: string[];\n AccessTypes: { [key: string]: string };\n}\n\nexport class Language {\n static get strings() {\n switch (this.getLanguage()) {\n case \"sv\":\n return this.swedish;\n case \"en\":\n return this.english;\n default:\n return this.english;\n }\n }\n\n static setLanguage(language: \"gb\" | \"sv\" | \"de\" | \"en\") {\n localStorage.setItem(\"language\", language);\n }\n\n static getLanguage() {\n const language = localStorage.getItem(\"language\") || navigator.language;\n return language;\n }\n\n static english: IStrings = {\n QRitDefault: true,\n Shureguard: false,\n\n // Generic\n generic_yes: \"Yes\",\n generic_no: \"No\",\n generic_description: \"Description\",\n generic_edit: \"Edit\",\n generic_copy: \"Copy\",\n generic_name: \"Name\",\n generic_cancel: \"Cancel\",\n generic_save: \"Save\",\n generic_share: \"Share\",\n generic_properties: \"Properties\",\n generic_back: \"Close\",\n generic_close: \"Close\",\n generic_PageInfo: \"Information\",\n generic_noCodes: \"No codes\",\n generic_ListsShow: \"Member of the following lists\",\n generic_QRCode: \"QR-code: \",\n generic_noLists: \"No lists\",\n generic_noTypeSet: \"No type chosen\",\n generic_phone: \"Phone\",\n generic_add: \"Add\",\n generic_noMessages: \"No messages\",\n generic_user: \"User\",\n generic_manageImages: \"Manage images\",\n generic_quickAddImage: \"Quick add\",\n\n // Header\n header_whatIsQRit: \"What is QRit?\",\n header_buyQRcodes: \"Buy QR-codes\",\n header_scan: \"Scan\",\n header_manualQRentry: \"Manual code entry\",\n header_termsAndConditions: \"Terms\",\n header_feedback: \"BETA Feedback\",\n header_itemFound: \"Item found\",\n header_account: \"Account\",\n header_logout: \"Logout\",\n header_login: \"Login\",\n header_stores: \"Lists\",\n header_settings: \"Settings\",\n\n // Home.ts\n welcome: \"Welcome to QRit!\",\n environmentFuture:\n \"Dare to take care of the enviroment and a work for a sustainable future – lend or rent your stuff to family, friends, and neighbours! This app can, with the help of unique QR-codes, help you keep track of things you lend and rent, or just use it to keep track of your own stuff.\",\n found:\n 'If you have scanned a QR-code on something you found and want to help the owned get it back, press \"Lost&Found\".',\n home_loginRegister: \"Register/log in\",\n home_lostFound: \"Found lost item\",\n home_WarnMsgYouHaveNewCode: \"You have scanned a new QR code. Register/log in to register it.\",\n home_WarnMsgYouHaveExistingCode: \"You have scanned an existing qr code. Register/login to register it.\",\n home_ButtonSignIn: \"Sign in\",\n home_ButtonItemFound: \"Item found\",\n home_codeDetailsFailedGetInfo: \"Failed to get QR code details.\",\n home_items: \"Stuff\",\n home_FreezerReuse: \"Freezer\",\n home_LostFound: \"Lost & Found\",\n home_Freetext: \"Message\",\n home_Boxes: \"Boxes\",\n home_Search: \"Search\",\n\n home_iconTableWhatDoTheIconsMean: \"What do the icons mean?\",\n home_iconTableHeaderIcon: \"Icon\",\n home_iconTableHeaderDescription: \"Description\",\n home_iconTableStaticHome: 'The item is currently \"at home\" (with you)',\n home_iconTableStaticHomeAtOther: 'This is someone elses item that is \"at home\" for that person',\n home_iconTableStaticMyBorrowedByOther: \"This is your item that somone else is borrowing from you\",\n home_iconTableStaticOtherBorrowedByMe: \"This is someone elses item that you currently are borrowing\",\n home_iconTableStaticOtherBorrowedByOther: \"This is someone elses item that someone else is borrowing\",\n home_iconTableBoxOpen:\n 'This box is tagged and is \"open\" (e.g., typically just waiting to be packed, or have been unpacked)',\n home_iconTableBoxPacking: 'This boxed has status \"being packed\"',\n home_iconTableBoxClosed: \"This box is currently closed (possibly full after having been packed)\",\n home_iconTableBoxStorageHome: \"This box is currently in storage in your home\",\n home_iconTableBoxStorageAway: \"This box is currently in storage somewhere else (not in your home)\",\n home_iconTableBoxUnpacking: \"This box is currently being unpacked\",\n home_iconTableBoxWhatAreTagTypes: \"What are the code types?\",\n home_tagTypeTableWhatAreTheTagTypes: \"What are the code types?\",\n home_tagTypeTableOtherTextOnly: \"Other\",\n home_tagTypeTableCodeTypeName: \"Code type name\",\n home_tagTypeTableDescription: \"Description\",\n home_tagTypeTableStatic:\n \"This is a tag on an item to keep track of it. It can be a tool, a computer, a book, or something else\",\n home_tagTypeTableBoxes:\n \"This is a tag on a box that has some content. Typically the content is described (in text and/or photo) when clicking on it\",\n home_tagTypeTableLostFound:\n \"This is a tag on an item that is explicity taged for it to be easier to be returned to it's owner\",\n home_tagTypeTableFreezer: \"This is a tag for items you put in the freezer. It is to keep track of your food\",\n home_tagTypeTableMessage:\n \"This is a tag that simply has a text (or html) message attached to it. A text that anyone that the owner will see as just the message/html\",\n home_tagTypeTableOther:\n \"If it is not one of the standard tags, the sheets (at the top of the page) can also be lists (go to 'Manage lists' in the menu to learn more)\",\n\n //Item.tsx\n item_shareItemText: \"I want to share my item with you.\",\n item_status: \"Status:\",\n item_whoBorrowed: \"Who borrowed the item?:\",\n handleBorrowingItem_whenGiveBack1: \"When should it be returned? in \",\n handleBorrowingItem_whenGiveBack2: \"days\",\n item_photo: \"Image:\",\n item_atHome: \"At home\",\n item_isPublicViewable: \"Is publicly visible\",\n\n // ItemView\n itemView_CodeDoesNotExist: \"This code does not exist or cannot be scanned properly\",\n\n // ListItems.ts\n listItems_state: \"State\",\n listItems_loading: \"Loading...\",\n listItems_home: \"Home\",\n listItems_giveBack1: \"Should be returned in \",\n listItems_giveBack2: \"days\",\n listItems_awayFor1: \"Borrowed in \",\n listItems_awayFor2: \" days more\",\n listItems_photo: \"\",\n\n // ListHtmlItems\n listHtmlItems_created: \"Created\",\n listHtmlItems_description: \"Message\",\n\n //ItemImage\n itemImage_NoImage: \"No image\",\n\n //ListPuchases\n listPurchases_errorMsgUpdatePurchases: \"Unable to read purchasing data from database.\",\n listPurchases_purchaseCompletedColText: \"Paid\",\n listPurchases_tagSentColText: \"Sent\",\n listPurchases_stateOrActionColText: \"Action\",\n listPurchases_digitalColText: \"Pdf\",\n listPurchases_createdColText: \"Created\",\n\n // HandleBorrowedItem.ts\n handleBorrowedItem_reportReturned: \"Report as returned\",\n\n // HandleBorrowingItem.ts\n handleBorrowingItem_infoHeader: \"About view borrowed item\",\n handleBorrowingItem_Info1: \"You have scanned a code from someone else.\",\n handleBorrowingItem_Info2: \"This page shows information about that code, but you can also choose to borrow it.\",\n handleBorrowingItem_Info3: \"Before clicking Borrow, choose how long you would like to borrow it.\",\n handleBorrowingItem_Info4:\n \"When you click Borrow, the owner will have the information that you now are borrwing the item.\",\n handleBorrowingItem_Info5: \"You and the owner will get a notification when you are to return it.\",\n handleBorrowingItem_wantToBorrowFrom: \"Borrow item?\",\n handleBorrowingItem_oneDay: \"in one day\",\n handleBorrowingItem_threDays: \"in three days\",\n handleBorrowingItem_oneWeek: \"in one week\",\n handleBorrowingItem_onemonth: \"in one month\",\n handleBorrowingItem_threeMonths: \"in three months\",\n handleBorrowingItem_oneYear: \"in one year\",\n handleBorrowingItem_noEndDate: \"no end date\",\n handleBorrowingItem_borrow: \"Borrow\",\n handleBorrowingItem_OwnerName: \"Owners name: \",\n handleBorrowingItem_TypeOfItem: \"Type of item\",\n handleBorrowingItem_ItemName: \"Item name: \",\n handleBorrowingItem_InfoAboutRent: \"Information about renting\",\n handleBorrowingItem_SendMessToOwner: \"Send message to owner\",\n handleBorrowingItem_whenReturnItem: \"When do you plan to return the item?\",\n handleBorrowingItem_Category: \"Category: \",\n\n // HandleItemBorrowedByMe.ts\n handleItemBorrowedBy_reportItemBack: \"Report item as returned\",\n handleItemBorrowedByMe_YouBorrowedThis: \"You borrow this item\",\n handleItemBorrowedByMe_Info1: \"You have scanned a code on an item that you have borrowed from someone else.\",\n handleItemBorrowedByMe_Info2: \"This page shows information about that code.\",\n handleItemBorrowedByMe_Info3:\n \"By clicking on the confirm return you mark this item as returned. It may be that the owner is requiring to confirm it his/herself.\",\n handleItemBorrowedByMe_ShouldBeReturnedBy: \"Should be returned by: \",\n handleItemBorrowedByMe_ReturnIn: \"Return in \",\n handleItemBorrowedByMe_Days: \"days STR\",\n handleItemBorrowedByMe_RentCost: \"Rent cost\",\n handleItemBorrowedByMe_infoHeader: \"About view item borrowed by me\",\n handleItemBorrowedByMe_oneDay: \"one day\",\n handleItemBorrowedByMe_threDays: \"three days\",\n handleItemBorrowedByMe_oneWeek: \"one week\",\n handleItemBorrowedByMe_onemonth: \"one month\",\n handleItemBorrowedByMe_threeMonth: \"three months\",\n handleItemBorrowedByMe_oneYear: \"one year\",\n handleItemBorrowedByMe_noEndDate: \"no end date\",\n handleItemBorrowedByMe_extend: \"Extend\",\n handleItemBorrowedByMe_extendDate: \"Extend return date\",\n handleItemBorrowedByMe_addNumDays: \"Add number of days\",\n\n //HandleItemBorrowedByOther.ts\n handleItemBorrowedByOther_ReportReturned: \"Report item as returned\",\n handleItemBorrowedByOther_BorrowedItem: \"Someone is borrowng this item\",\n handleItemBorrowedByOther_BorrowedBy: \"Borrowed by:\",\n handleItemBorrowedByOther_ShouldBeReturnedBy: \"Should be returned by: \",\n handleItemBorrowedByOther_ReturnIn: \"Return in\",\n handleItemBorrowedByOther_Days: \"days\",\n handleItemBorrowedByOther_info1: \"You have scanned a code that somone else has borrowed from you\",\n handleItemBorrowedByOther_info2: \"This page shows information about that code\",\n handleItemBorrowedByOther_info3:\n \"By clicking on the confirm return you mark this as returned. Do not do this unless you have gotten the item back.\",\n handleItemBorrowedByOther_rentCost: \"Rent cost\",\n\n // HandleItemOtherBorrowedByOther.tsx\n handleItemOtherBorrowedByOther_Title: \"Someone elses item borrowed by other\",\n handleItemOtherBorrowedByOther_infoHeader: \"About item borrowed by other\",\n handleItemOtherBorrowedByOther_info1: \"You scanned an item that somone else is borrowing from someone else\",\n handleItemOtherBorrowedByOther_info2:\n \"You could contact the owner and ask if you can borrow it after it is returned\",\n\n // HandleOwnItem.ts\n handleOwnItem_itemHeader: \"About view own item\",\n handleOwnItem_unregisterItem: \"Unregister item\",\n handleOwnItem_TypeOfItem: \"Type of item:\",\n handleOwnItem_unregister: \"Unregister\",\n handleOwnItem_close: \"Close\",\n handleOwnItem_realyUnregister: \"Do you really want to unregister the item?\",\n handleOwnItem_resetCode: \"Removed from freezer\",\n handleOwnItem_QRnumber: \"QR number\",\n handleOwnItem_QRCode: \"QR code: \",\n handleOwnItem_PageHeader: \"Item info\",\n\n // handleOwnHtmlItem.ts\n handleHtmlItem_PageHeader: \"Message\",\n handleHtmlItem_reset: \"Unregister\",\n handleHtmlItem_QRCode: \"QR-code: \",\n handleHtmlItem_TagId: \"Short id: \",\n handleOwnHtml_infoHeader: \"About view own message\",\n handleOwnHtml_TextOrHTML: \"Message (Text or HTML):\",\n handleOwnHtml_info1: \"You have scanned one of your own QR-codes with a message. \",\n handleOwnHtml_info2: \"The short message name is the name this message will have in your message list.\",\n handleOwnHtml_info3:\n 'The \"Free text or HTML\" is what others will see when they scan this code, in addition to any added images',\n handleOwnHtml_info4:\n \"If you have choosen to just write text, it will be seen by the person scanning it as just like that.\",\n handleOwnHtml_info5: \"If you have choosen to write HTML, the person scanning it will see that formated HTML.\",\n handleOwnHtml_info6: \"If you want to edit the text, press Edit.\",\n\n // HandleOwnLostFound\n handleOwnLostFound_LostFound: \"Lost&found info\",\n handleOwnLostFound_ShowFindersFee: \"Show finders fee: \",\n handleOwnLostFound_FindersFee: \"Finder's fee: \",\n handleOwnLostFound_ShowYourPhoneNum: \"Show your phone number: \",\n handleOwnLostFound_MessageSendingEnabled: \"Message sending to owner enabled: \",\n handleOwnLostFound_ResetCode: \"Reset code\",\n handleOwnLostFound_FinderCanSendGPS: \"Finder can send GPS position\",\n handleOwnLostFound_infoOnLostFound: \"Info on view own lost&found\",\n handleOwnLostFound_thisIsLostFoundCode: \"This is a lost&found code.\",\n handleOwnLostFound_whenYouMarkSometingWithTag:\n \"When you mark something with this tag, anyone that finds it will be able to help you bring this back. \",\n handleOwnLostFound_whenYouEditThisTag:\n \"When you edit this tag you will be able to set all the options you can see on this page, and possibly more.\",\n\n // HandleOtherLostFound\n handleOtherLostFound_HowToReturnItem: \"How to return item to owner?\",\n handleOtherLostFound_YouHaveScannedCode:\n \"You have scanned a code on an item that the owner really would like to get back. This page explains how you can help returning it to the owner. Please help out, the owner will be super happy!\",\n handleOtherLostFound_FindersFee: \"Finder's fee\",\n handleOtherLostFound_ThereIsAFindersFee: \"There is a finder's fee! If you return item to the owner you will get \",\n handleOtherLostFound_OwnersPhoneNum: \"The owner's phone number is \",\n handleOtherLostFound_PhoneNum: \"Phone number\",\n handleOtherLostFound_PleaseCallOrSend: \". Please call or send a message to return the item to the owner!\",\n handleOtherLostFound_SendMessToOwner: \"Send a message to owner\",\n handleOtherLostFound_YouCanChooseSendMess:\n \"You can choose to send an anonymous message to the owner through this app. You can for example explain where the item can be picked up, or arrange a meeting/pickup.\",\n handleOtherLostFound_SendMess: \"Send message\",\n handleOtherLostFound_infoHeader: \"About view other's lost&found\",\n handleOtherLostFound_info1: \"You have found something that someone else has lost.\",\n handleOtherLostFound_info2: \"This app can help you get the item back to the owner, who will be very happy!\",\n handleOtherLostFound_info3: \"There is a finders fee that you will recieve it you get the item back to the owner.\",\n handleOtherLostFound_info4: \"You can call or text the owner on the phone number shown.\",\n handleOtherLostFound_info5:\n \"You can send a message to the owner anonymously. There you can write where to pick it up (e.g., if you brought it to some lost&found venue (police or other).\",\n handleOtherLostFound_info6:\n \"You can mark the spot where you placed/found the item for the owner by sending a GPS position.\",\n handleOtherLostFound_SendGPSPosToOwnerHeader: \"Send a GPS position to the owner\",\n handleOtherLostFound_SendGPSPositionToOwnerInfo:\n \"You can choose to send a GPS position to the owner so that he/she can easily find where you left the item.\",\n handleOtherLostFound_SendGPSPosToOwnerButton: \"Send GPS positon\",\n handleOtherLostFound_SendingGPSPosToOwner: \"Sending GPS position to owner\",\n handleOtherLostFound_GeolocationIsNotSupported: \"Geolocation is not supported by your browser\",\n handleOtherLostFound_HasSentGPSPosToOwner: \"GPS position sent!\",\n handleOtherLostFound_GpsLinkMessage: \"Someone has sent you a GPS position this item \",\n\n // HandleOthersFreezer\n handleOthersFreezer_infoHeader: \"About view others' freezer\",\n handleOthersFreezer_info1: \"You have scanned someone elses food/box.\",\n handleOthersFreezer_info2: \"This page shows information about the item.\",\n handleOthersFreezer_info3:\n \"If you have the right to edit the information about this item, there will be Edit button that you can press.\",\n handleOthersFreezer_PageHeader: \"Someone elses food\",\n handleOthersFreezer_Owner: \"Owner:\",\n handleOthersFreezer_ContentType: \"Type of food:\",\n handleOthersFreezer_FoodType: \"Content:\",\n handleOthersFreezer_FreezDate: \"Freeze date:\",\n handleOthersFreezer_ExparationDate: \"Expiration date:\",\n handleOthersFreezer_ForHowMany: \"For how many persons:\",\n handleOthersFreezer_HowMuch: \"How much:\",\n handleOthersFreezer_Location: \"Location\",\n\n //handleOthersBoxes\n handleOthersBoxes_PageHeader: \"Someone elses box\",\n handleOthersBoxes_Info1: \"You have scanned someone elses storage box.\",\n handleOthersBoxes_Info2: \"This page shows information about that box.\",\n handleOthersBoxes_Info3:\n \"If you have the right to edit the information about this box, there will be Edit button that you can press.\",\n handleOthersBoxes: \"About view other's box\",\n\n //handleOthersBoxes\n handleOwnBoxes_PageHeader: \"My box\",\n handleOwnBoxes_infoHeader: \"About view own box\",\n handleOwnBoxes_PageHeaderEdit: \"Edit\",\n\n // HandleBoxes\n handleBoxes_Owner: \"Owner: \",\n handleBoxes_ShortID: \"Short id: \",\n handleBoxes_ContentType: \"Content type: \",\n handleBoxes_Content: \"Content: \",\n handleBoxes_Description: \"Details: \",\n handleBoxes_Location: \"Site: \",\n handleBoxes_Room: \"Room/location: \",\n handleBoxes_Category: \"Category: \",\n handleBoxes_Fragility: \"Fragile\",\n handleBoxes_Priority: \"Priority: \",\n handleBoxes_QRcode: \"QR-code\",\n handleBoxes_BoxColor: \"Color marking: \",\n handleBoxes_BoxState: \"Box state: \",\n handleBoxes_StorageDate: \"Last updated: \",\n handleBoxes_ShortId: \"Short id:\",\n handleBoxes_0: \"This is where you see the detailed information about the box/storage container.\",\n handleBoxes_1: \"The box has a short ID of 2-4 letters, which is the marker on the right part of the sticker.\",\n handleBoxes_2:\n \"The Box State tells you if the box is being packed, if it is closed, stored, or being unpacked, for example.\",\n handleBoxes_3: \"The Category is general description/categorization of what the box containt.\",\n handleBoxes_4: \"The Description is describing the content to the extent that you wish.\",\n handleBoxes_5:\n \"The Site is the information about what general physical location the box is at (for example adress).\",\n handleBoxes_6: \"The Room/Location tells you where in the Site it is located.\",\n handleBoxes_7: \"Fragility is a simple flag that will tell you about if the content is fragile or not.\",\n handleBoxes_8:\n \"Priority is for you to indicate if this box should be moved as soon as possibly (high) or normally, or if it can be moved whenever (later).\",\n handleBoxes_9: \"The last edit date tells you when you last updated this item' information.\",\n handleBoxes_10: \"The QR-code is the unique code associated with the tag.\",\n\n // EditBoxes\n EditBoxes_ContentTypeHeader: \"Box content type\",\n EditBoxes_ContentHeader: \"Content\",\n EditBoxes_BoxName: \"Box name\",\n EditBoxes_Location: \"Site\",\n EditBoxes_Room: \"Room/location\",\n EditBoxes_QRID: \"Short ID\",\n EditBoxes_BoxID: \"Short ID\",\n EditBoxes_QRcode: \"QR-code\",\n EditBoxes_LocationHeader: \"Site\",\n EditBoxes_RoomHeader: \"Room\",\n EditBoxes_CategoryHeader: \"Category\",\n EditBoxes_BoxStateHeader: \"Box state\",\n EditBoxes_BoxPriorityHeader: \"Box priority\",\n EditBoxes_BoxColorHeader: \"Box color\",\n EditBoxes_InfoHeader: \"About edit box\",\n\n // EditBoxInfo\n EditBoxInfo_BoxInfoHeader: \"How does QR-tagging boxes work?\",\n EditBoxInfo_PlaceQR: \"Place a QR code on your moving box.\",\n EditBoxInfo_ScanQR: \"Scan the QRcode and register/log in as needed.\",\n EditBoxInfo_Packing: \"Now you can start packing and maybe set the box state to Packing, to keep track.\",\n EditBoxInfo_AddingCatDetails:\n \"As you pack it you can add either one or more Categories or write the content under Details.\",\n EditBoxInfo_BackLater:\n \"If you come back at a later time, just scan the label again and continue packing and edit the content in the app.\",\n EditBoxInfo_FinishedPacking:\n \"When you have finished packing a box, set the Box State as Closed. If you want it moved to a specific room in the move, you can set the Room/Place.\",\n EditBoxInfo_AddingPrioFrag: \"You can in the app set the box Priority and Fragility on a box\",\n EditBoxInfo_PutInStorage:\n \"If you put it in storage, you can set Box State to Stored. Then it is also good to set the Location, and if applicable, the Room/Place.\",\n\n // HandleFreezer.ts\n handleFreezer_freezing_date: \"Freezing date\",\n handleFreezer_persons: \"Persons\",\n handleFreezer_noDateSet: \"No date set\",\n\n // HomePageText.ts\n homePageText_howWorks: \"How does it work?\",\n homePageText_prices: \"Prices\",\n homePageText_toThinkAbout: \"To think about\",\n homePageText_tagsFromUs: \"Order tags from us - digitally or sent to you via mail.\",\n homePageText_tagOntoTool: \"Stick a unique QR-code on, for example a tool.\",\n homePageText_scanWithCell:\n \"Scan the QR-code with your smartphone - if it is the first time you use QRit, register.\",\n homePageText_addDescript: \"Add a description of the item and maybe add a photo.\",\n homePageText_ifSomoneBorrow:\n \"If someone wants to borrow or rentthe item, it is only for them to scan the QR-code and register a borrowing/renting with their smart phone. No app installation is needed.\",\n homePageText_weKeepTrack:\n \"We keep track of when it should be returned and give reminders to both you and the borrower when it is time to return it.\",\n homePageText_qritIsServiceSubscr:\n \"QRit.app is a subscription service where you subscribe to QR-code usage on a yearly basis.\",\n homePageText_subscript8kr: \" tags cost \",\n homePageText_subscript8krEnd: \"/tag and year\",\n homePageText_12TagsCost: \" tags cost \",\n homePageText_12TagsCostEnd: \"/year\",\n homePageText_24TagsCost: \" tags cost \",\n homePageText_24TagsCostEnd: \"/year\",\n homePageText_buyPhysicalTags:\n \"If you want to buy printed tags that you print yourself on standard stickers, order Avery L4778 - for example here: \",\n homePageText_alsoJusgtPrintAndTejp: \"You can also just print the tags on normal paper, and use scissors and tejp.\",\n homePageText_attTankaPa: \"To think about\",\n homePageText_ifNotPrintWeSend:\n \"If you do not want to print the tags yourself you can order them from us as physical sticky tags for \",\n homePageText_ifNotPrintWeSendEnd: \" (up to 48 stickers per shipment) – this is on-top of the subscription fee.\",\n homePageText_tagsMustPlanar: \"The tags must be attached to a fairly planar surface for the QR-scanning to work\",\n homePageText_size2x4: \"The tags are today available in the size 2x4 cm\",\n homePageText_partOfTagsWhite:\n \"Part of the tags are white – you can use it to write on, or remove it with scissors.\",\n homePageText_ifPDF:\n \"If you choose to download digital (pdf) tags, you can print them yourself directly – the tags are available in standard formats, but you can also just print it yourself and use tejp.\",\n homePageText_priceTablePrice: \"Price\",\n homePageText_priceTableCurrency: \"Currency\",\n\n // HomePage\n homePage_infoHeader: \"About home view\",\n homePage_infoGeneralHelp: \"General help\",\n homePage_info0: \"This is the main page of the QRit app\",\n homePage_info1: \"You can click on an item\",\n homePage_info2: \"or you can choose to switch between types of tags by clicking on the tabs\",\n homePage_info3: \"You can also switch between tag types by swiping left or right\",\n homePage_info4: \"If you want to search all tags, just start typing what you want to find in the search field\",\n homePage_info5:\n \"You can switch between viewing the items as lists or as a grid. The latter works best when all items has images\",\n homePage_info6:\n \"You can add more types of tags as additional tabs or change what types are shown in the tabs in Settings in the menu\",\n homePage_info7: \"You can click on the header of an item to sort it\",\n homePage_info8: \"If you want to purchase tags on-line, you do that through the menu at the top right\",\n homePage_grid: \"Grid\",\n homePage_list: \"List\",\n\n // TagTypeOverview\n tagTypeOverview_pageHeader: \"QRit - bridge the physical/digital gap\",\n tagTypeOverview_intro:\n \"QRit is a set of services that through the use of QR-codes helps you keeping track of things in your life. The services fits both private persons and companies. See our services below:\",\n tagTypeOverview_RegisterLoginInfo:\n \"To be able to use QRit services you need to register (or, if you are registered, log in).\",\n tagTypeOverview_RegisterLogin: \"Register/log in\",\n tagTypeOverview_lblHeaderQRitStorage: \"QRit Storage\",\n tagTypeOverview_QRitStorage1:\n \"Don’t forget where you keep your stuff! With QRit Storage tags you can keep track of where you store what. Tag the boxes in the attic, in the garage, or where it is in your apartment or house. By scanning the QR-code you can then set for example the location and the content of the box.\",\n tagTypeOverview_QRitStorage2:\n \"You can also add images - for example showing the content of the box, or where you keep it. Through the QRit-app you can search for content and find out where you keep it.\",\n tagTypeOverview_QRitStorage3: \"Pick up a kit of QRit Storage at your local retailer (find nearest here). \", //, or buy tags directly from us here (either digitally or physically)\n tagTypeOverview_lblHeaderQRitKeys: \"QRit keys\",\n tagTypeOverview_QRitKeys1:\n \"Make it easier to get you keys back if you lose them! Put a QRit Keys tag on you keychain and when you lose it, the finder can scan the tag and communicate with your anonymously. That is, you get direct communication (chat) with the person finding the keys, without them knowing who you are.\",\n tagTypeOverview_QRitKeys2:\n \"Pick up a kit of QRit Keys tags at your local retailer (find nearest here). QRit Keys is a subscription service.\", //, or buy tags directly from us here\n tagTypeOverview_lblHeaderQRitStatic: \"QRit Stuff\",\n tagTypeOverview_QRitStatic1:\n \"Let neighbors, friends and family borrow your tools, books, and other stuff, while keeping track of it all. You can even make public lists of stuff and rent it out. Start with tagging your stuff with our QR tags. Then scan them and add information about what it is and maybe add a photo of it.\",\n tagTypeOverview_QRitStatic2:\n \"When someone else than the owner scans the tag after it has been registered, the 'scanner' ask to borrow or rent it, including indicating how long they want it. When the return date is getting close both you and the borrower will get a notification. You can also indicate how much someone that rents it should pay per day or maybe week. \",\n tagTypeOverview_QRitStatic3:\n \"Pick up a kit of QRit Keys tags at your local retailer (find nearest here). QRit Stuff is a subscription service.\",\n tagTypeOverview_lblHeaderQRitLostFound: \"QRit Lost&Found\",\n tagTypeOverview_QRitLostFound1:\n \"Increase the chance of getting back items you lose! With QRit Lost&Found you tag stuff with QRit QR-codes so that when you loose it, others can scan the code and get it back to you. By using QRit you can have the finders communicate with you anonymously and even have them mark the spot they found it with their phone’s GPS so that you can go it.\",\n tagTypeOverview_QRitLostFound2:\n \"Pick up a kit of QRit Keys tags at your local retailer (find nearest here). QRit Lost&Found is a subscription service.\",\n tagTypeOverview_lblHeaderQRitFreezer: \"QRit Freezer\",\n tagTypeOverview_QRitFreezer1:\n \"Tired of not know knowing what is the freezer? With QRit Freezer you can QR-tag your food, list the content of the freezer, and get notifications when items are about to expire. You just tag your food items, scan the QR-code, and then enter what it is (e.g., the type of food or dish), how much (e.g., servings or weight, and, if you want, when it expires. \",\n tagTypeOverview_QRitFreezer2:\n \"When you take it out of the freezer you quickly scan the QR-code and update to “Removed from freezer”. \",\n tagTypeOverview_QRitFreezer3:\n \"Pick up a kit of QRit Keys tags at your local retailer (find nearest here). QRit Stuff is a subscription service.\",\n tagTypeOverview_lblHeaderQRitHtml: \"QRit Message codes\",\n tagTypeOverview_QRitHtml1:\n \"A QRit Message code can contain a webpage with information, or simply some text or an image.\",\n tagTypeOverview_QRitHtml2: \"[TODO: Write]\",\n tagTypeOverview_business: \"Business\",\n tagTypeOverview_private: \"Private\",\n\n tagTypeOverview_pageHeader_BB: \"QRit - bridge the physical/digital gap\",\n tagTypeOverview_intro_BB:\n \"QRit is a set of services that through the use of QR-codes helps you keeping track of things in your life:\",\n tagTypeOverview_RegisterLoginInfo_BB:\n \"To be able to use QRit services you need to register (or, if you are registered, log in). To create a business account, log in with your phone number and go to settings. If you are a QRit admin for an organisation already, you will get the option to choose if you want to log in privately or for the company when you have filled in the verification code.\",\n tagTypeOverview_lblHeaderQRitStorage_BB: \"QRit Storage\",\n\n tagTypeOverview_lblHeaderQRitKeys_BB: \"QRit Anonymous\",\n tagTypeOverview_lblHeaderQRitStatic_BB: \"QRit ItemTracking\",\n tagTypeOverview_lblHeaderQRitLostFound_BB: \"QRit Lost&Found\",\n tagTypeOverview_lblHeaderQRitFreezer_BB: \"QRit Restaurant\",\n tagTypeOverview_lblHeaderQRitHtml_BB: \"QRit Information\",\n\n tagTypeOverview_lblHeaderQRitRestaurant_BB: \"QRit Restaurant (future service/feature)\",\n tagTypeOverview_QRitStorage1_BB:\n \"Don’t forget where you keep your boxes! With QRit Storage tags you can keep track of what you store where. Tag the boxes in offices, storage, when moving, or across office buildings. By scanning the QR-code you can then set for example the location and the content of the box.\",\n tagTypeOverview_QRitStorage2_BB:\n \"You can also add images - for example showing the content of the box, or an image of where it is stored. Through the QRit-app you and your collegues can search for content and find out where you keep what.\",\n tagTypeOverview_QRitOrderCodesHere_BB: \"\",\n tagTypeOverview_QRitKeys1_BB:\n \"Make it easier to get keys, cards or other sensitive items at your organisation back if they are lost. Put a QRit Anonymous tag on you keychain, your RFid card, and when anythng is lost, the finder can scan the tag and communicate with you anonymously. You can also set a finders fee that a finder can see, incentivicing them to get it back to you. You can also include information about the item that only authorized people in your organisation can see. This may include what the key is for, a password (but care should always be taken with passwords), or the content (e.g., if a USB-stick or hard drive).\",\n tagTypeOverview_QRitKeys2_BB: \"\",\n tagTypeOverview_QRitStatic1_BB:\n \"Keep track of equipment across your organisation. Tag your tools, books, computers, and other items with QRit ItemTracking tags and add information about it, such as what it is and including pictures of it. Anyone that scans the code will get custom information about the item. For example, if someone on the companies trusted list (e.g., employees) scans the QR-code, he/she may get information about where it is located or who has it now. If anyone external scans it, it is possible to set it up in several differnet ways, such as making it possibel for 'scanners' to communicate with you to hand it back (if it is lost), or the code is used as a way to keep track of items that customers are borrwing (with the possibility to add how long they shoudl borrow it, and with hand-back notifications).\",\n tagTypeOverview_QRitStatic2_BB:\n \"When someone else than the owner scans the tag after it has been registered, the 'scanner' can ask to borrow or rent it, including indicating when they should return it. When the return date is getting close both you and the borrower will get a notification. You can also indicate how much someone that rents it should pay per day or maybe week. \",\n tagTypeOverview_QRitStatic_BB: \"\",\n tagTypeOverview_QRitLostFound1_BB:\n \"Increase the chance of getting back items that are lost. With QRit Lost&Found you tag stuff with QRit QR-codes so that when you loose it, others can scan the code and get it back to you. By using QRit you can have the finders communicate with you anonymously and even have them mark the spot they found it with their phone’s GPS so that you can go it. This is similar to QRit Anonymous, but as stickers.\",\n tagTypeOverview_QRitLostFound2_BB:\n \"This is useful for keys, cards, and other items that are easily lost - with the added benefit of the finder being able to communicate without knowing who you are. This type of code can also be used to add information for yourself (or others in your organisation), that no one else can see. It may be a password (but still take care...), or what akey is for, or the content of a USB-stick or hard drive.\",\n tagTypeOverview_QRitHtml1_BB:\n \"A QRit Information code can contain a webpage with information, or simply some text. This can directly be contact information, instructions on how to work a piece of equipmnet, or it can be used as a custom price tag (this typically require some integration of your priceing database with the QRit service). \",\n tagTypeOverview_QRitRestaurant1_BB:\n \"A QRit Restaurant code is a way to hande recycling of for example take-away boxes in restaurants (http://publications.europa.eu/resource/cellar/7ec2bc0d-e5b2-4c09-bf6f-dce483160b6d.0015.03/DOC_2)\",\n tagTypeOverview_QRitRestaurant2_BB:\n \"The restaurant tags 'hard shell' boxes with a QRit Restaurant code and when the cutomer gets it, he or she scans it, confirming that they have recieved it. When it is returned, the restaurant scans it again, for reuse with other customers.\",\n\n // Privacy.ts\n privacy_deliveryTermsHeader: \"Terms of delivery\",\n privacy_deliveryTerms:\n \"QR-codes that are ordered as a digital file (pdf) is typically fil (pdf) is typically sent within two working days. QR-codes that are ordered at printed tags (via normal mail) is typically sent as as an economy letter within 4 dagar. Deviations may occur. For the printed tags, if the address you supply is wrong (and thus the tags do not arrive) we reserve the right to charge a new full delivery cost for a second shipment. If the given email address is wrong, send us the correct one via email (order@qrit.app) and we will update it and send it again.\",\n privacy_deliveryTermsMissDelivery:\n \"If we cannot deliver within withing the agreed time, we have the responsbility to inform you about a new approximate delivery time. If we cannot deliver in a reasonable time, you have the right to cancel the purchase via email (order@qrit.app – provide the the registered phone number and the date or your order). If you want to cancel your purchase, the payed amount will be payed back, including potential delivery fees. QRit will return it as soon as possible, but no later than 14 days after the cancelation date. Repayment will be done via the same payment option that you payed with.\",\n privacy_personalInfoHeader: \"Personal details\",\n privacy_personalInfoUseInfo:\n \"Personal data that you provide when you use the QRit.app is used to fullfill our obligation (service) towards you, and, in general provide you good service. Ths includes contacting you if there are problems with our service (e.g., delivery), and, if you choose physical delivery, make it possible for us to send you a package with QR-tags via mail. QRit will, as personal data responsbile , not hand over your personal details to any third party for marketing purposes. However, data may be be sent to a third party, if needed to fullfill our obligations to you. We may, for example, print tags at a third party (printer compary). You can at any time recall your consent to QRit.app use of your data. You can contact us via email on info@qrit.app.\",\n privacy_cookies: \"Cookies\",\n privacy_cookiesInfo:\n \"QRit.app are using cookies on our website to make sure we can fullfill our services toward you. When you in the future visit us (e.g., our website), or when you open an email message from us, QRit.app may get access to the cookies that are stored on your computer/phone. If you want to remove cookies that are already on your computer/phone, we ask you to go through the instructions on your device. Removal of our cookies and/or do not allowing cookies from QRit.app, we may not be able to provide you with the full service (e.g., not getting access to all functions or having to log in manually every time). QRitapp will also store your user information on your device (phone), to enable scanning of codes etc. Such registration will happen as soon as the registration is stored, and for all our services.\",\n privacy_infoStorageHeader: \"Storage and security\",\n privacy_infoStorageInfoSSL:\n \"Our site www.QRit.app uses the HTTPS-protocol with SSL-certifikat, to protect our and your data.\",\n privacy_infoStorageInfoEncrypt:\n \"QRit.app protect data, phone number, address, etc, from others access, using techneques such as dynamic data masking and transparent data encryption.\",\n privacy_personalInfoPurchaseHeading: \"Personal information on payment\",\n privacy_personalInfoPurchaseInfo:\n \"We use Klarna (www.klarna.se) for payments with creditcard. See https://www.klarna.com/se/dataskydd/. Klarna fullfills the requirements for PCI DSS\",\n privacy_pricesHeader: \"Prices\",\n privacy_pricesInfo:\n \"When purchasing via the webservice/app (QRit) it is the prices that are shown on the website that are used. The unit of the currency is the one shown, and include VAT. The subscription prices does not include any additional costs, such as the costs of physical tags (sent via mail). That is, you will, if you purchase pre-printed tags pay a handling cost for printing and delivery (economy mail), and this cost is not included in the subscription fee. You can only pay in the ways shown on the website. QRit.app reserves the right not to offer all shown ways of payment, if, for some reason, it does not work, or you are not eligible to pay in that particular way. Confirmation of your payment will be sent via email.\",\n privacy_giveBackHeader: \"Reklamation\",\n privacy_giveInfo:\n \"For any complaint, contact us at info@qrit.app, and we will inform you how to proceed (e.g., to get a refund, when applicable).\",\n privacy_returningHeader: \"Product return right\",\n privacy_returningInfo:\n \"Consumers typically have 14 days right-to-return a product when purchased on-line. However, digital content is not included in this right. By accepting these terms you confirm that you understand that you cannot return QR-codes purchased digitally for a refund. However, if you purchase the QR-codes physically (via mail – physical delivery), you have the right to return the product (tags) within 14 days for a full refund.\",\n privacy_exchangeHeader: \"Exchange rights\",\n privacy_exchangeInfo: \"It is not possible to exchange/switch services.\",\n privacy_payBackHeader: \"Refund\",\n privacy_payBackInfo:\n \"We want to make you aware that it may take a few days before the refund arrives in your account. Any refund will be paid through the same payment method as the original payment was made in.\",\n privacy_payBackInfoDelivery:\n \"Refund of shipping costs after complaint – if the user returns tags unused (or damaged on arrival), any mail costs (cheapest option) should be returned (payed) to the user within 14 days from when QRit recieves the tags.\",\n privacy_goodToHaveLinksHeader: \"Links\",\n privacy_goodToHaveLinksConsumerService: \"Ångerblankett från Konsumentverket \",\n privacy_goodToHaveLinksConsumerARN: \"ARN (ARN) Postadress: Box 174, 101 23 Stockholm \",\n privacy_goodToHaveLinksArbitration: \"Tvistelösning på Internet (Tvist)\",\n privacy_complaintsHeader: \"Complaints\",\n privacy_complaintsInfo: \"Complaints should be send to info@QRit.app\",\n\n // Purchasing.tx\n purchasing_payment: \"Payment\",\n purchasing_ifPurchaseDigital: \"If you order QR-codes digitally (pdf-file), verify the email address.\",\n purchasing_ifPurchasePhysical: \"If you order physical tags that we sent to you, verify your postal address.\",\n purchasing_order: \"Order\",\n puchasing_youLoggedInLoginNow: \"You have to be logged in in order to make a purchase. Please login/register first.\",\n purchasing_payPaypal: \"Pay with Paypal\",\n purchasing_paySwish: \"Pay with Swish\",\n purchasing_payKlarna: \"Pay with Klarna\",\n purchasing_paySwishInstructions: \"Pay with the Swish app by scanning the QR code.\",\n purchasing_fullName: \"Full name\",\n purchasing_firstName: \"First name\",\n purchasing_lastName: \"Last name\",\n purchasing_address: \"Address\",\n purchasing_zipCode: \"Zip code\",\n purchasing_city: \"City\",\n purchasing_country: \"Country\",\n purchasing_emailPlaceholder: \"Write email address here\",\n purchasing_email: \"Email\",\n purchasing_phone: \"Phone\",\n purchasing_username: \"Username\",\n\n // RegisterItem.ts\n registerItem_itemRegistration: \"Register item tag\",\n registerItem_freezerItemRegistration: \"Register freezer tag\",\n registerItem_boxItemRegistration: \"Register box tag\",\n registerItem_lostFoundItemRegistration: \"Register lost&found tag\",\n registerItem_messageTagItemRegistration: \"Register message tag\",\n registerItem_messageHtml: \"Free text or HTML\",\n registerItem_messageName: \"Short message name\",\n registerItem_alwaysConfirmReturn: \"I always want to confirm item return:\",\n registerItem_registrerMustHaveBankID: \"The borrower must be registered with BankID ([framtida funkt.])\",\n registerItem_putItemForRent: \"I want to make this item as rentable\",\n registerItem_rentInfo: \"Info about rent/cost\",\n registerItem_lostFound: \"I want to configure this item for Lost&Found\",\n registerItem_lostFoundInfo: \"If this item is lost, enabling this setting will help getting it back.\",\n registerItem_configRent: \"Settings Renting\",\n registerItem_configLostFound: \"Settings Lost&Found\",\n registerItem_itemRegister: \"Register\",\n registerItem_failedRegisterCode: \"Failed to register the code. Try again later!\",\n\n // EditHtml\n editHtml_PageHeaderEdit: \"Edit message\",\n editItem_PageHeaderEdit: \"Edit\",\n editHtml_Instructions: \"Instructions\",\n editHtml_infoHeader: \"Message edit info\",\n editHtml_Info1: \"Here you can write a message that a person scanning the QR-code will see. \",\n editHtml_Info2: \"The short name is what you will see when you list your message codes.\",\n editHtml_Info3: 'The \"Free text or HTML\" is where you add your messag:',\n editHtml_Info4: \"If you choose to just write text, it will be seen by the person scanning it as just like that.\",\n editHtml_Info5: \"If you choose to write HTML, the person scanning it will see that formated HTML.\",\n\n // titleWithInfo\n titleWithInfo: \"Information\",\n titleWithInfo_reportMisuse: \"Give feedback/report misuse\",\n titleWithInfo_reportMisuseDescript:\n \"Here you can also give us feedback on specific issues with QRit, or general feedback about the services we provide. It is also where you can report misuse, such as when a code has offensive images or in other ways violate our policies.\",\n titleWithInfo_reportMisuseSent: \"Your feedback has been sent to us. Thank you!\",\n titleWithInfo_reportMisuseError: \"Error! Try again later!\",\n\n // EditItem.ts\n editItem_typeStatic: \"Static (e.g., tools)\",\n editItem_typeReuse: \"Freezer content handling)\",\n editItem_typeReuseLostFound: \"Lost&Found\",\n editItem_typeReuseFreetext: \"Free text\",\n editItem_typeStorage: \"Storage\",\n editItem_typeLabel: \"Choose item type\",\n editItem_failedSaveCode: \" Failed to save code\",\n\n // Edit Static\n editStatic_infoHeader: \"About edit item\",\n editStatic_PageHeaderEdit: \"Edit\",\n editStatic_1: \"This is where you edit the information about the item that you have tagged with a QR-code.\",\n editStatic_2: \"Choose a name that makes it easy for you to recognize the item by it.\",\n editStatic_3: \"Describe the item as much as you want.\",\n editStatic_3_1: \"Choose if you want to post this item as rentable\",\n editStatic_3_2:\n \"If you post this item as rentable, add a description about the costs for renting it. For example, describe the cost for renting it a day and/or a week and/or a weekend, and maybe information about how you would like to be paid (e.g. cash, SWISH, apple pay etc).\",\n editStatic_4: \"You can add a photo, if you wish.\",\n editStatic_5:\n \"If you want our service to notify you when the return time is approaching (when someone has borrowed it), check the box.\",\n editStatic_6: \"if you want others to be able to rent this item, check the appropriate box.\",\n editStatic_7: \"You can also change code type, but then you need to turn on advanced settings.\",\n editStatic_photo: \"Image\",\n editStatic_photoChoice: \"Select image\",\n editStatic_ISBNScanningInfo: \" - scan/add ISBN number\",\n editStatic_alwaysConfirmReturn: \"I always want to confirm item return\",\n editStatic_registrerMustHaveBankID: \"The borrower must be registered with BankID ([framtida funkt.])\",\n editStatic_putItemForRent: \"I want to post this item for rental \",\n editStatic_configLostFound: \"Settings Lost&Found\",\n editStatic_configRent: \"Settings Renting\",\n editStatic_lostFound: \"I want to configure this item for Lost&Found\",\n editStatic_lostFoundInfo: \"If this item is lost, enabling this setting will help getting it back.\",\n EditStatic_ItemTypesListHeader: \"Type of item\",\n EditStatic_ItemTypesHeader: \"Type of item\",\n editStatic_ListsHeader: \"Lists\",\n editStatic_codeCannotBelongToMoreThanOne:\n \"Code cannot belong to more than one list (when it requires ownershop change\",\n editStatic_codeWillChangeOwner: \"Code will change its owner to the list owner when saved\",\n editStatic_ISBNScanningError: \"Scanning error, or ISBN not found.\",\n\n // UploadDialog\n uploadDialogImageChoice: \"Image selection\",\n uploadDialogChooseImage: \"Select image\",\n uploadDialogUpload: \"Save image\",\n uploadDialogRotate: \"Rotate\",\n\n // ScanDialog\n scanDialog_manualEnter: \"or, enter number (e.g., ISBN) here...\",\n\n // useObserveCode\n useObserveCode_ErroTryRefresh: \"Error! Try refreshing the page...\",\n\n // RegisterUser.ts\n registerUser_registerUser: \"Register/login\",\n registerUser_InfoAboutFree:\n \"Registering is free, as is using others QR-codes. You must be logged in to purchase tags.\",\n registerUser_registerUserName: \"Name\",\n registerUser_registerPhone: \"Phone number\",\n registerUser_registerEmail: \"Email\",\n registerUser_registerphoneNumMustStartWith: \"The phone number must start with the country code (e.g., +1)\",\n registerUser_registerUsernameNeeded:\n \"Username needed to register/login (note that it will be visible to all that scans your codes)\",\n registerUser_sendCode: \"Send code\",\n registerUser_code: \"Code\",\n registerUser_privacyAgreement: \"agreement on personal integrity\",\n registerUser_privacyAgreementHere: \"Here \",\n registerUser_iAgreeTerms: \"By registering I agree to the QRit \",\n registerUser_iAgreeTermsEnd: \" (including GDPR agreement).\",\n\n // registerUser\n registerUser_registerUserButton: \"Register/login\",\n registerUser_networkErrorTryAgain: \"Network error! Wait some and try again!\",\n registerUser_checkCodeTryAgain: \"Check the registration code and try again!\",\n registerUser_networkErrorTryAgain2: \"Network error! Wait some and try again!\",\n registerUser_goToPayment: \"Go to payment\",\n registerUser_smsTextCode: \"Here is your qrit.app activation code:\\n\",\n registerUser_organization: \"Organisation\",\n registerUser_meAsUser: \"Me as a person\",\n\n // BuyDigitalTags\n buyDigialTags_buyTags: \"Buy digital tags (pdf)\",\n buyDigialTags_fillInEmail: \"Write your email address here\",\n buyDigialTags_email: \"Email\",\n buyDigialTags_howHandlePersonaInfoHere: \"Here\",\n buyDigialTags_howHandlePersonaInfo: \"you can read about how we handle personal integrity.\",\n\n // BuyPhysicalTags\n buyPhysicalTags_buyPhysicalTags: \"Buy tags for printing\",\n buyPhysicalTags_fillInAddressInfo: \"Fill in address information\",\n buyPhysicalTags_firstName: \"First name\",\n buyPhysicalTags_lastName: \"Last name\",\n buyPhysicalTags_address: \"Address\",\n buyPhysicalTags_zipCode: \"Zip code\",\n buyPhysicalTags_city: \"City\",\n buyPhysicalTags_country: \"Country\",\n\n // listMessages\n listMessages_Messages: \"Messages\",\n\n // BuyTags\n buyTags_headerBuyQRcodes: \"Buying QR-codes\",\n buyTags_toUseMustHaveInfo:\n \"UNDER DEVELOPMENT (NOT POSSIBLE TO PURCHASE) To use QRit.app you must have unique QR codes to attach to your stuff. Here you order the codes, either for download (pdf-files) for you to print yourselves, or as adhesive labels/tags with the QR codes printed on them. All codes are valid for a year from the registration of the first tag in a purchase (for example 12 tags in a batch/purchase). After a year the subscription of the tags can be renewed.\",\n buyTags_chooseHereToBuyDigitalPhysical:\n \"Choose here if you want to order QR codes digitally, or ready-made adhesive tags\",\n //buyTags_ifYouBuyDigial: 'If you buy the QR-codes digitally we create a pdf for printing. The tag page will look like this [link to example pdf]. It is possible to buy adhesive tags/labels in this format (Avery L4778) both in physical stores and on-line [https://www.amazon.com/Avery-L4778-20-Ultra-Resistant-Labels-Printers/dp/B0040SP0AS]. If you instead want to print the tags on normal paper and use tejp, that works too. There are no additional costs if you choose digital tags.',\n buyTags_ifYouBuyDigial1:\n \"If you buy the QR-codes digitally we create a pdf for printing. An example of the tag page can be downloaded \",\n buyTags_ifYouBuyDigialPdfExampleHere: \"here\",\n buyTags_ifYouBuyDigialPdfExampleURL: \"/DemoDemo_ExampleSheet_Empty_90a53177-696a-4905-aa8a-b3815e108ac5.pdf\",\n buyTags_ifYouBuyDigial2:\n \" (pdf). It is possible to buy adhesive tags/labels in this format (Avery L4778) both in physical stores and \",\n buyTags_ifYouBuyDigialAveryExampleURLHere: \"on-line\",\n buyTags_ifYouBuyDigialAveryExampleURL:\n \"https://www.amazon.com/Avery-L4778-20-Ultra-Resistant-Labels-Printers/dp/B0040SP0AS\",\n buyTags_ifYouBuyDigial3:\n \". If you instead want to print the tags on normal paper and use tejp, that works too. There are no additional costs if you choose digital tags.\",\n buyTags_selectedTagEmpty: \"/buyTags_selectedTagEmptyEng.png\",\n buyTags_selectedTagLostFound: \"/buyTags_selectedTagLostFoundEng.png\",\n buyTags_selectedTagNumber: \"/buyTags_selectedTagLostNumberEng.png\",\n buyTags_unSelectedTagEmpty: \"/buyTags_UnSelectedTagEmptyEng.png\",\n buyTags_unSelectedTagLostFound: \"/buyTags_unSelectedTagLostFoundEng.png\",\n buyTags_unSelectedTagNumber: \"/buyTags_unSelectedTagLostNumberEng.png\",\n buyTags_ifYouBuyPhysical: \"To buy printed adhesive tags cost \",\n buyTags_ifYouBuyPhysical2:\n \" (up to 96 tags in one purchase). If you buy them ready-made you will in the next step be asked to add (or verify) your postal address. After you have payed the subscription + the cost for the physical pages, we print them and send them to you.\",\n buyTags_downloadPdf: \"Next\", //'Download a pdf with the tags (price:',\n buyTags_downloadPhysical: \"Buy physical tags (price:\",\n buyTags_qrCodeToX1: \"QR-codes for \",\n buyTags_qrCodeToX2: \" items (price: \",\n buyTags_chooseNumCodes: \"Select number of codes you want to purchase\",\n buyTags_ChoosePhysDigit: \"Choose physical or digital tags\",\n buyTags_ChooseTagLayout: \"Choose tag layout\",\n buyTags_Price: \"Price: \",\n buyTags_emptyTag: \"Empty tag\",\n buyTags: \"Empty (white)\",\n buyTags_lostAndFound: \"Lost & found\",\n buyTags_numbered: \"Unique short id\",\n buyTags_numberedForeezer: \"Unique short id\",\n\n buyTagsPhysicalOnly_toUseMustHaveInfo:\n \"UNDER DEVELOPMENT (NOT POSSIBLE TO PURCHASE). To use QRit.app you must have unique QR codes from us. Here you order them (as adhesive tags with the QR codes printed on them). The codes are valid for a year from the registration of the first tag in a purchase. After a year the subscription of the tags can be renewed. You need to choose...\",\n buyTagsPhysicalOnly_chooseNumCodes: \"Select the number of codes you want to buy\",\n buyTagsPhysicalOnly_selectedFormatSimple: \"/selectedSimplePhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_unSelectedFormatSimple: \"/unSelectedSimplePhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_selectedFormatRugged: \"/selectedRuggedPhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_unSelectedFormatRugged: \"/unSelectedRuggedPhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_simpleTagFormat: \"Simple/thinner\",\n buyTagsPhysicalOnly_ruggedTagFormatInfo: \"Rugged/thicker\",\n buyTagsPhysicalOnly_freeText: \"Free text\",\n buyTagsPhysicalOnly_normalOrThickSticker:\n \"if you want a normal sticker or a thicker sterdier one. The normal is cheaper.\",\n buyTagsPhysicalOnly_typeOfTagYouWant: \"the type of tag you want\",\n buyTagsPhysicalOnly_theNumberOfTagsYouWant: \"the number of tags you want to buy\",\n\n // RegisterItemManually\n registerItemManually_infoHeader: \"About manual registering\",\n registerItemManually_manualRegisteringItem: \"Enter code manually\",\n registerItemManually_manualRegisteringItemInfo1:\n \"You should only need to do this if a QR-code cannot be scanned. The reason why it cannot may be that the code is damaged, or it is not placed on a flat enough surface (for the camera to be able to scan it properly).\",\n registerItemManually_manualRegisteringItemInfo2:\n \"Type the 8 character code (found on the tag, next to the QR-code) into the box below. After you press Send you will be sent to the page equivallent to scanning the QR-code. We will check that the code is correct before sending you on. Note, only the characters a-z, A-Z, and 0-9 are allowed.\",\n registerItemManually_writeQRcode8Char: \"Enter the 8 character long code next to the QR code.\",\n registerItemManually_code: \"Code\",\n registerItemManually_register: \"Continue\",\n registerItemManually_codeDoesNotExist: \"This QR code does not exist. Check the code and try again.\",\n\n // ItemFound\n itemFound_youFoundQR: \"You have found an item with a QRit-code!\",\n itemFound_someoneMarkedItem:\n \"Someone has marked the item you have scanned the QR-code on to make it possible to someone that finds it to return it, if it is lost. You now have the opportunity to make the owner happy and make sure he/she gets it back!\",\n itemFound_ownersPhoneNumber: \"Owners phone number\",\n itemFound_whatMessageDoYouWantToSend: \"What message do you want to send to the owner?\",\n itemFound_ownersOffersThisAmount: \"The owner offers the following reward on returning the item\",\n itemFound_insteadSendMessageToOwner:\n \"Instead of calling the owner (of the phone number is available) you can send a message anonymously to the owner. In it you can, for example write where you left the item, so that the owner can pick it up him/herself. You can also send your own phone number, if you want to.\",\n itemFound_sendMessage: \"Send message\",\n itemFound_sendGPS: \"Send GPS position\",\n itemFound_sendGPSInfo:\n 'Instead of (or in addition to) sending a message, you can choose to send a GPS message to the owner. You can, for example, place the item somewhere and \"tag\" it with a GPS position. After you press \"Send GPS-position\", you will be redirected to allow for GPS-position sharing through QRit. When the owner gets the position, he/she can pick it up where you placed it, without you having to do anything. You can choose to send only the position, or include a message (recommended). If you want to include a message, write it above, before you press the button.',\n\n // ConfigRent\n configRent_choiceRentHeading: \"Settings for renting\",\n configRent_howMuchCostLbl: \"How much should it cost to rent this item?\",\n configRent_enableChatLbl: \"I want to be able to disucuss price via chat\",\n configRent_allowTimeExtent: \"I want the renter to be able to extend the renting time\",\n configRent_enableRentQueue: \"It should be possible to queue for renting this item\",\n\n // EditLostFound\n // TODO: Clean up\n editLostFound_settingsLost: \"Edit\",\n editLostFound_settingsLostText:\n 'This is where you set the ways a finder can get back to you, making it easier for you to get the item back if you loose it- especially if you have chosen to provide a finders fee (the \"finder\" will see how much you offer\").',\n editLostFound_IwantFinderToSeePhoneNumber: \"I want the person that finds it to see my phone number\",\n editLostFound_IwantFinderAbleSendMess:\n \"I want the person that finds it to be able to send an anonymous message to me\",\n configLost_withThisSettingFinderShowPos:\n \"With this setting, the person finding the item can send a message to you about where he/she have put it, without revealing his/her phone number.\",\n editLostFound_IwantOfferLostPay: \"I want to offer a finders fee\",\n configLost_IwantOfferLostPayInfo:\n \"If you choose to offere a finders fee, the person that find it will know that you offer a finders fee.\",\n editLostFound_IwantFinderSeeHowMuchPay: \"I want the person finding the item to see how much they will get.\",\n configLost_IwantFinderSeeHowMuchPayInfo:\n \"If you check this box, the person finding the item will see how much they get in finders fee.\",\n editLostFound_HowMuchLostPay: \"How much do you want to offer as finders fee for this item?\",\n editLostFound_HowMuchLostPayInfo:\n \"Make sure you are prepared to pay this when the item is returned! Include currency (e.g., $ or €)\",\n configLost_IwantEnablePosition: \"I want to enable GPS positioning \",\n configLost_IwantEnablePositionInfo:\n \"Enabling GPS positioning means that the person finding the item can choose to only mark the spot where they left it, so that you can find it there (you will get the GPS position). This may make it easier to get it back, as it is a hazzle to meet up/bring something found to an owner.\",\n editLostFound_infoHeader: \"About edit lost&found\",\n editLostFound_info0: \"This is where you can edit the lost&fond tag information\",\n editLostFound_info1: \"Name is just the name if the tag, which will be visible in the code list\",\n editLostFound_info2:\n \"In the descrption field you can write a description of the item. Note that id someone finds it, this infomration (as well as then name) will be visible to the finder. Consider not revieling you identity in any way there, if you want the tag to be anonymous\",\n editLostFound_info3:\n 'The \"I want the person... phone number\" means that whomever scans this code will see the phone number',\n editLostFound_info4:\n 'The \"Finder can send GPS position\" means that the finder will be able to chose a GPS position, which will be sent to you. In this way the finder can mark the place of finding the item',\n editLostFound_info5:\n 'The \"I want the person... anonymous message\" means that whomever scans this code will have the possiblity to send an anonymous message to you',\n editLostFound_info6:\n 'The \"I want to offer a finders fee\" means that you will be able to set a finders fee, which anyone that scans this will get information about. Make sure you are willing to pay!',\n editLostFound_info7:\n 'If the \"I want the person... see how much they get\" i checked, the person scanning the code will see the finders fee value',\n editLostFound_info8:\n \"You can then set the value of the finders fee, but do not forget to set the unit (e.g., $, € or kr)\",\n // editLostFound_info9: 'The \"I want the person... phone number\" means that whomever scans this code will see the phone number',\n editLostFound_info10:\n \"If you enable advanced settings you will be able to change the type of code to something that is not a freezer tag\",\n editLostFound_info11:\n \"If you click unregister the code will be unregistered That is, all information will be removed and it will disapear from the app alltogether, including all lists\",\n\n // ItemFooter\n itemFooter_unregisterItem: \"Unregister item\",\n itemFooter_unregister: \"Unregister\",\n itemFooter_close: \"Close\",\n itemFooter_realyUnregister:\n \"Really unregister? When unregistering all data will be removed from the app. It will not be visible and you need to scan and add again for it to be useful.\",\n itemFooter_ShowAdvSettings: \"Show advanced settings\",\n itemFooter_WarningDataLostRegisterNew:\n \"Warning! If you change code type data for this code will be lost. It will be as if you are registering a code. See details about the code types here [link].\",\n itemFooter_ChangeCodeType: \"Change code type\",\n itemFooter_areYouReadyToLeavePage: \"Are you sure you want to leave this page? You will lose unsaved changes.\",\n\n // ListItemHelp\n listItemHelp_Header: \"Help on item list\",\n listItemHelp_WhereIconHeader: \"Understanding where my items are\",\n listItemHelp_WhereIconDescr:\n \"The icons to the left tell you where the item is. The following describe their meanings\",\n listItemHelp_WhereIcon_Home:\n 'The item is \"at home\". That is, you no one is borrowing or renting it. It should be available to you.',\n listItemHelp_WhereIcon_In: \"You have borrowed or rented this item from someone. It shoudl be available to you.\",\n listItemHelp_WhereIcon_Out:\n \"Someone has borrowed or rented this item from you. You should not have it at home now.\",\n listItemHelp_WhereIcon_Freezer:\n \"This is a QR-tag that you reuse. Typically used to keep track of what is in your freezer. It can be reused multiple times.\",\n listItemHelp_OtherHeader: \"Other\",\n listItemHelp_Descr: \"You can add a description to each item.\",\n listItemHelp_Image:\n \"You can add an image to each item (except for reuse-items). Go to edit if you want to change it. Note that when you change the image the old one is immediatelly removed. \",\n\n // Freezer\n freezer_DateHeader: \"Freeze date\",\n freezer_ExpDateHeader: \"Expiration date (default 90 days)\",\n freezer_SelectADateDotDot: \"Select a date...\",\n freezer_SelectADate: \"Select a date\",\n freezer_PersonCntHeader: \"For how many\",\n freezer_10Persons: \"10 persons\",\n freezer_0Of1Persons: \"{0} of {1} persons\",\n freezer_FoodTypeHeader: \"Type of food\",\n freezer_ContentTypeHeader: \"Content\",\n freezer_AmountHeader: \"Amount\",\n freezer_EditFoodChoiceList: \"Edit food choice list\",\n freezer_EditFoodTypeList: \"Edit food type list\",\n freezer_EditLocationList: \"Edit site list\",\n freezer_Location: \"Site\",\n freezer_PageHeaderEdit: \"Edit\",\n\n // EditFreezer\n editFreezer_infoHeader: \"About edit freezer info\",\n editFreezer_info0: \"This is where you set the content of the item you want to put in the freezer\",\n editFreezer_info1: 'Type of food is a short name of the content of the freezer item (e.g, \"meat\" or \"soup\"',\n editFreezer_info2: \"Content is information about the overall type of dish\",\n editFreezer_info3: \"Description is where you write the detailed information about what it contains\",\n editFreezer_info4:\n \"Expriation date is the date you set to be able to get notifications. The day of the expiration date you will get a message about its expiration\",\n editFreezer_info5: \"How many persons is exactly what is says is is...\",\n editFreezer_info6:\n \"In the Amount field you can add weight, volume or any other metric, you can then choose the unit\",\n editFreezer_info7: \"The Site is where you say which freezer (or where the freezeris) you put the item in\",\n editFreezer_info8:\n \"Note that you can choose to customize the list option for Type of food, Content and Site by pressing Edit\",\n editFreezer_info9:\n \"If you enable advanced settings you will be able to change the type of code to something that is not a freezer tag\",\n editFreezer_info10:\n \"If you click unregister the code will be unregistered That is, all information will be removed and it will disapear from the app alltogether, including all lists\",\n\n // editTypeModal\n editTypeModal_Delete: \"Delete\",\n editTypeModal_Add: \"Add\",\n\n // Helpers\n Helpers_Scanned: \"Scanned\",\n Helpers_Unregistered: \"Unregistered\",\n Helpers_Home: \"Home\", // ':Inte ,utlånad'\n Helpers_BorrowedByOther: \"Borrowed by other\",\n Helpers_BorrowedByMe: \"Borrowed by you\",\n Helpers_OtherBorrowedByOther: \"Someone else borrowing someone elses item\",\n Helpers_AwaitingReturnAccept: \"Awaiting confirmation\",\n Helpers_Found: \"Found!\",\n Helpers_ManageCategories: \"Manage choices\",\n\n //listReuseItems\n listFreezerItems_Frozen: \"Frozen\",\n listFreezerItems_Expiration: \"Expiration\",\n\n // ListLostFoundItems\n listLostFoundItems_created: \"Created\",\n listLostFoundItems_photo: \"Photo\",\n listLostFoundItems_photoDescription: \"Photo/description\",\n\n // lostBoxes\n listBoxes_TagID: \"Box id\",\n listBoxes_Content: \"Content\",\n listBoxes_Location: \"Site\",\n listBoxes_Room: \"Room/location\",\n listBoxes_Stored: \"Stored\",\n listBoxes_Photo: \"Photo\",\n\n // CreateStoreDialog\n createStoreDialog_Create: \"Create\",\n createStoreDialog_CreateStoreQuestion: \"Create new list?\",\n createStoreDialog_StoreName: \"Name\",\n\n //listStores\n ListStores_loading: \"Loading\",\n\n // editStores\n editStores_allowResharingOfList: \"Allow resharing of list\",\n\n // joinStore\n joinStore_acceptJoinList: \"Accept joining list\",\n joinStore_rejectJoinList: \"Reject joining list\",\n\n //ImagePanel\n imagePanel_panelHeader: \"Main image\",\n imagePanel_mainImage: \"Main image\",\n imagePanel_addNewImage: \"Add new image\",\n imagePanel_removeImage: \"Remove image\",\n imagePanel_private: \"Private\",\n imagePanel_deleteImage: \"Delete image\",\n imagePanel_deleteSelectedImages: \"Delete image\",\n imagePanel_title: \"Really make this non-private?\",\n imagePanel_text:\n \"Are you sure you want to turn this image non-private? If you do, anyone that scans the code will be able to see it.\",\n imagePanel_disableInFuture: \"Disable this warning in the future?\",\n\n // ViewStore\n viewStore_infoHeader: \"About view store\",\n viewStore_info1: \"This is where you can edit the information and access rights for a list\",\n viewStore_info2:\n \"The name is the text you will see in the lists overview. It is also the name that others will see about the list, if you share it. Be careful when you choose the name of a list that you will share\",\n viewStore_info3:\n \"Description is where you add details about what this list is for/about. If you are to share it (more or less) publically, consider not adding any personal identifiable information in the description, if you want to be anonymous\",\n viewStore_info4:\n \"The checkbox 'Require code owner transfer when adding code to list' is about handling joint lists where one person or organisation will be the owner of both the list and the QR-code information about all items in that list. This may be if you in the family have one person that handles all tools, or at work, where your organisation should be the QRit-owner of all inforamtion added about work (e.g., books or equipment), regarless of who adds the item to the list. Use this option sparsely\",\n viewStore_info5:\n \"You can choose to delete the store. Note however that if you do that all information about the store will be gone. The codes in it will still exist, but there will be no way back, except adding all codes again\",\n viewStore_info7: \"You can add users and manage their access by checking the different types of access\",\n viewStore_info8:\n \"'Administator' means that the user can remove the list, add and remove users, and do everything else, is if he/she were the owner\",\n viewStore_info9: \"'Edit codes' means that the user can add and remove codes from the list\",\n viewStore_info10: \"'List users' means that the user can see the users that have access to the list\",\n viewStore_info11: \"'Pending new user' means that ????\",\n viewStore_DeleteStore: \"Delete\",\n viewStore_Delete: \"Delete\",\n viewStore_DeleteStoreQuestion: \"Delete list?\",\n viewStore_Cancel: \"Close\",\n viewStore_SelectCodes: \"Select codes\",\n viewStore_MultiSelectControlled: \"Codes\",\n viewStore_CodesTitle: \"Codes\",\n viewStore_EditList: \"Edit list\",\n viewStore_RequireCodesOwnerChangeInfo:\n \"Important: Any code that is added to this list will change owner to that of the list owner (this behavior can only be changed when the list is empty).\",\n viewStore_RequireCodesOwnerChangeInfoNot:\n \"A user adding a code to the list will still be the owner of the code (this behavior can only be changed when the list is empty).\",\n viewStore_RequireCodesOwnerChange:\n \"If checked, any added code will change owner to the list owner (this behavior can only be changed when the list is empty). If unchecked, the user adding a code to the list will still be the owner of the code.\",\n viewStore_AccessHandling: \"Manage list access\",\n viewStore_Join: \"Ask to join list\",\n viewStore_CannotReqestJoinList: \"Cannot request to join list, please contact support\",\n\n // Stores\n stores_CreateStore: \"Create\",\n stores_ManageLists: \"Manage lists\",\n stores_infoHeader: \"About managing lists view\",\n stores_listBelongsToYou: \"This list belongs to you\",\n stores_listBelongsToSomeoneElse: \"This list belongs to someone else\",\n stores_info1: \"This is where you can create and manage lists\",\n stores_info2:\n \"A List is a list of items, where you, or others, have explicilty associated an item with a specific list\",\n stores_info3:\n \"An owner of a list can add access rights to a list (e.g., view, edit, admin), so that lists can be managed jointly, i.e., by family members, friends, or co-workers\",\n stores_info4: \"In this view you can create new lists or click on already existing lists to manage them\",\n\n // UserSettings\n userSettings_infoHeader: \"About user settings\",\n userSettings_manageUserSettings: \"User settings\",\n userSettings_manageViewTabs: \"Manage view tabs\",\n userSettings_ChooseWhichTabsToShow: \"Choose which code types to show:\",\n userSettings_ChooseWhichListsToShow: \"Choose which code types to show:\",\n userSettings_Stuff: \"Stuff\",\n userSettings_boxes: \"Boxes\",\n userSettings_lostFound: \"Lost&found\",\n userSettings_freezer: \"Freezer\",\n userSettings_messages: \"Message codes\",\n userSettings_listChoices: \"ListChoices\",\n userSettings_enableSMRecievingOnIncommingMessages:\n \"Allow reception of text messages (SMS) when somone sends a message to you\",\n userSettings_enableSMSRecieveLabel: \"Messaging\",\n userSettings_whereYouManageSettings: \"This is where you manage settings for your QRit.\",\n userSettings_theWarningIcon:\n \"The triangle/warning icon means that when you add an item to that list the ownership of the QRit entry will be handed over to the owner of the list (if it is not your list).\",\n userSettings_chooseToDisableReception:\n \"You can choose to disable the reception of SMS messages from other users. Note, however, that it is good to enable it when you have lost something and wait for someone to contact you!\",\n userSettings_UserContactInfo: \"Contact information\",\n userSettings_FeedbackSupport: \"Feedback and support\",\n userSettings_organizationAccount: \"Organization account\",\n userSettings_organizationsYouAreAdminFor: \"Organisations you are administrator for\",\n\n // AccesChangeOwnerDialog\n accessChangeOwnerDialog_ChangeOwner: \"Change list owner\",\n accessChangeOwnerDialog_SubText: \"Change owner of list\",\n\n // StoreContextualMenu\n storeContextualMenu_listProperties: \"List properties\",\n storeContextualMenu_moreOptions: \"More options\",\n storeContextualMenu_listName: \"List name\",\n storeContextualMenu_listOwner: \"List owner\",\n\n // AccessAddUSerDialot\n accessAddUserDialog_addUser: \"Add user\",\n accessAddUserDialog_subText: \"Add user to list\",\n\n // Accesstable\n accessTable_FaildAddUser: \"Failed to add user to list\",\n accessTable_InviteUser: \"Invite user\",\n accessTable_ChangeOwner: \"Change owner\",\n accessTable_changeRole: \"Change role\",\n accessTable_changeRoleInfo: \"The role controls what access a user has to the list.\",\n accessTable_roleAdmin: \"Role administrator\",\n accessTable_roleMaintain: \"Maintainer\",\n accessTable_roleEditor: \"Editor\",\n accessTable_rolePending: \"Pending\",\n accessTable_roleMember: \"Member\",\n accessTable_setRole: \"Set role\",\n accessTable_role: \"Role\",\n accessTable_command: \"Edit\",\n accessTable_delete: \"Delete\",\n accessTable_removeUser: \"Remove user\",\n accessTable_removeUserFromList: \"Remove user from list?\",\n\n // Chat messages\n messages_footerMessage: \"-- sent from QRit.app\\n\",\n messages_messageTitle: \"Message\",\n messages_send: \"Send\",\n messages_reply: \"Reply\",\n messages_replyTitle: \"Reply\",\n messages_replyText: \"Reply...\",\n messages_delete: \"Delete\",\n messages_deleteTitle: \"Delete Message\",\n messages_deleteText: \"Are you sure you want to delete this message?\",\n\n //prices: [[12, 9], [24, 18], [36, 27], [48, 36]],\n //pricePhyical: 10,\n currency_prefix: \"$\",\n currency_suffix: \"\",\n pricePhysicalDelviery: 10,\n skuList: [\n \"00000000-0001-0002-0003-000000000001\",\n \"00000000-0001-0002-0003-000000000002\",\n \"00000000-0001-0002-0003-000000000003\",\n \"00000000-0001-0002-0003-000000000004\",\n \"00000000-0001-0002-0003-000000000005\",\n \"00000000-0001-0002-0003-000000000006\",\n \"00000000-0001-0002-0003-000000000007\",\n \"00000000-0001-0002-0003-000000000008\",\n ],\n\n freezer_FoodChoiceList: [\n \"Meat\",\n \"Fish\",\n \"Vegitarian\",\n \"Soup\",\n \"Pasta sause\",\n \"Vegetables\",\n \"Bread\",\n \"Ice cream\",\n \"Berries or fruit\",\n ],\n freezer_FoodTypeList: [\"Full dish\", \"Main\", \"Side\", \"Raw\"],\n freezer_locationChoicesList: [\"Kitchen freezer\", \"Freezer box\"],\n freezer_AmountTypeList: [\"g\", \"styck\", \"kg\", \"liters\", \"ml\"],\n\n EditBoxes_ContentTypeList: [\"Moving\", \"Storage\"],\n EditBoxes_ContentList: [\"Childrens clothes\", \"Memories\"],\n //TODO: Make the content list dependent on content type.\n EditBoxes_SiteList: [\"Home\", \"Summer house\"],\n EditBoxes_RoomList: [\"Kitchen\", \"Bedroom\", \"Attic\", \" Garage\"],\n EditBoxes_CategoryList: [\"Uncategorized\"],\n\n // EditBoxes_PriorityList: ['High','Normal','Low'],\n // EditBoxes_BoxStateList: ['Tagged','Packing','Closed','Stored','Unpacked'],\n EditBoxes_DefaultContentType: \"Storage\",\n EditBoxes_DefaultPriority: \"Normal\",\n EditBoxes_DefaultFragility: false,\n EditBoxes_DefaultLocation: \"Home\",\n EditBoxes_DefaultBoxState: \"Tagged\",\n EditBoxes_BoxStateList2: {\n tagged: \"Tagged\",\n packing: \"Packing\",\n closed: \"Closed\",\n storedHome: \"Stored at home\",\n storedAway: \"Stored (not at home)\",\n unpacking: \"Unpacking\",\n unpacked: \"Unpacked\",\n },\n EditBoxes_PriorityList2: {\n low: \"Low\",\n normal: \"Normal\",\n high: \"High\",\n },\n\n EditBoxes_BoxColorChoices: {\n green: \"Green\",\n blue: \"Blue\",\n red: \"Red\",\n black: \"Black\",\n yellow: \"Yellow\",\n pink: \"Pink\",\n brown: \"Brown\",\n },\n\n EditStatic_ItemTypesList: [\"Books\", \"Tools\"],\n\n AccessTypes: {\n listAdmin: \"Administrator\",\n addUser: \"Add users\",\n editCodes: \"Edit codes\",\n // \"addCode\",\n // \"deleteCode\",\n // \"viewCode\",\n // \"editCode\",\n // \"viewLimitCode\",\n // \"anonView\",\n // \"borrow\",\n // \"request\",\n // \"confirm\",\n // \"invite\",\n // \"approve\",\n listUser: \"List users\",\n pendingUser: \"Pending new user\",\n },\n };\n\n static swedish: IStrings = {\n QRitDefault: true,\n Shureguard: false,\n\n // Generic\n generic_yes: \"Ja\",\n generic_no: \"Nej\",\n generic_description: \"Beskrivning\",\n generic_edit: \"Ändra\",\n generic_copy: \"Kopiera\",\n generic_name: \"Namn\",\n generic_cancel: \"Avbryt\",\n generic_save: \" Spara\",\n generic_share: \"Dela\",\n generic_properties: \"Properties\",\n generic_back: \"Stäng\",\n generic_close: \"Stäng\",\n generic_PageInfo: \"Information\",\n generic_noCodes: \"Inga koder\",\n generic_ListsShow: \"Medlem i följande listor\",\n generic_QRCode: \"QR-kod: \",\n generic_noLists: \"Inga listor\",\n generic_noTypeSet: \"Ingen typ vald\",\n generic_phone: \"Telefon\",\n generic_add: \"Lägg till\",\n generic_noMessages: \"Inga meddelanden\",\n generic_user: \"Användare\",\n generic_manageImages: \"Hantera bilder\",\n generic_quickAddImage: \"Snabbt tillägg\",\n\n // Header\n header_whatIsQRit: \"Vad är QRit?\",\n header_buyQRcodes: \"Köp QR-koder\",\n header_scan: \"Skanna\",\n header_manualQRentry: \"Manuell inmatning\",\n header_termsAndConditions: \"Villkor\",\n header_feedback: \"BETA-feedback\",\n header_itemFound: \"Hittat pryl\",\n header_account: \"Konto\",\n header_logout: \"Logga ut\",\n header_login: \"Logga in\",\n header_stores: \"Listor\",\n header_settings: \"Inställningar\",\n\n // Home.ts\n welcome: \"Välkommen till QRit!\",\n environmentFuture:\n \"Våga värna om miljön och en hållbar framtid – låna eller hyr ut dina saker till familj, vänner och grannar! Denna app kan, med hjälp av unika QR-koder hjälpa dig att hålla reda på utlånade och uthyrda prylar, eller om du vill, bara hjälpa dig hålla koll på dina prylar.\",\n found:\n 'Om du skannat en QR-kod på något du hittat och vill hjälpa till att lämna tillbaka detta, tryck på \"Upphittat\".',\n home_loginRegister: \"Logga in / registrera dig\",\n home_lostFound: \"Upphittat\",\n home_WarnMsgYouHaveNewCode: \"Du har skannat en ny QR-kod. Registrera dig/logga in för att registrera den.\",\n home_WarnMsgYouHaveExistingCode:\n \"Du har skannat en existerande QR-kod. Registrera dig/logga in för att registrera den.\",\n home_ButtonSignIn: \"Logga in\",\n home_ButtonItemFound: \"Upphittat\",\n home_codeDetailsFailedGetInfo: \"Misslyckades med att hämta QR-kod info.\",\n home_items: \"Prylar\",\n home_FreezerReuse: \"Frysen\",\n home_LostFound: \"Borttappat\",\n home_Freetext: \"Meddelande\",\n home_Boxes: \"Lådor\",\n home_Search: \"Sök\",\n\n home_iconTableWhatDoTheIconsMean: \"Vad betyder ikonerna?\",\n home_iconTableHeaderIcon: \"Ikon\",\n home_iconTableHeaderDescription: \"Beskrivning\",\n home_iconTableStaticHome: \"Denna pryl är just nu hos dig\",\n home_iconTableStaticHomeAtOther: \"Detta är någon annans pryl som har den hos sig\",\n home_iconTableStaticMyBorrowedByOther: \"Detta är din pryl som någon annan just nu lånar\",\n home_iconTableStaticOtherBorrowedByMe: \"Detta är någon annans pryl som du just nu lånar\",\n home_iconTableStaticOtherBorrowedByOther: \"Detta är någon annans pryl som någon annan lånar\",\n home_iconTableBoxOpen:\n 'Denna låda är märkt med en kod och är \"öppen\" (t.ex. redo att packas eller har packats upp)',\n home_iconTableBoxPacking: 'Denna låda har status \"packas\"',\n home_iconTableBoxClosed: \"Denna låda är stängd (möjligen för att den är full efter att ha packats)\",\n home_iconTableBoxStorageHome: \"Denna låda lagras just nu hos dig\",\n home_iconTableBoxStorageAway: \"Denna låda lagras just nu någon annastans (inte hos dig)\",\n home_iconTableBoxUnpacking: \"Denna låda packas just nu upp\",\n home_iconTableBoxWhatAreTagTypes: \"Vad är de olika kodtyperna?\",\n home_tagTypeTableWhatAreTheTagTypes: \"Vad är de olika kodtyperna?\",\n home_tagTypeTableOtherTextOnly: \"Annat\",\n home_tagTypeTableCodeTypeName: \"Kodtypnamn\",\n home_tagTypeTableDescription: \"Beskrivning\",\n home_tagTypeTableStatic:\n \"Kod på en pryl som märkt just för att hålla koll på prylen (t.ex. vid utlåning). Det kan vara ett verktyg, en dator, en bok, eller något helt annat\",\n home_tagTypeTableBoxes:\n \"En kod för uppmärking av en låda. Typiskt är innehållet beskrivet (i text och/eller foto) för lådan\",\n home_tagTypeTableLostFound:\n \"En kod på en sak som är uppmärkt just för att det ska vara lättare för någon som hittar den att kunna lämna tillbaka den till ägaren\",\n home_tagTypeTableFreezer: \"En kod att sätta på någon som ska in i frysen, för att hålla koll på vad som finns där\",\n home_tagTypeTableMessage:\n \"En kod som är kopplad till en enkel text eller html kod. Den som skannar koden får se texten (och bara texten)\",\n home_tagTypeTableOther:\n \"Om det inte är en av standardkoderna som kan det vara en en lista som lagts till som en flik (högst upp på sidan). Gå till 'Hantera listor' i menyn för att få veta mer\",\n\n //Item.tsx\n item_shareItemText: \"Jag vill dela min pryl med dig.\",\n item_status: \"Status:\",\n item_whoBorrowed: \"Vem har lånat prylen?:\",\n handleBorrowingItem_whenGiveBack1: \"När ska den lämnas tillbaka? om \",\n handleBorrowingItem_whenGiveBack2: \"dagar\",\n item_photo: \"Bild\",\n item_atHome: \"Hemma\",\n item_isPublicViewable: \"Kan ses av alla\",\n\n // ItemView\n itemView_CodeDoesNotExist: \"Denna QR-kod finns inte eller kan inte skannas korrekt\",\n\n // ListItems.ts\n listItems_state: \"Status\",\n listItems_loading: \"Laddar...\",\n listItems_home: \"Hemma\",\n listItems_giveBack1: \"Ska återlämnas om \",\n listItems_giveBack2: \"dagar\",\n listItems_awayFor1: \"Utlånad i \",\n listItems_awayFor2: \" dagar till\",\n listItems_photo: \"Bild\",\n\n // ListHtmlItems\n listHtmlItems_created: \"Skapad\",\n listHtmlItems_description: \"Meddelande\",\n\n // ItemImage\n itemImage_NoImage: \"Ingen bild\",\n\n //ListPuchases\n listPurchases_errorMsgUpdatePurchases: \"Misslyckades med att läsa köp från databasen.\",\n listPurchases_purchaseCompletedColText: \"Betalt\",\n listPurchases_tagSentColText: \"Skickade\",\n listPurchases_stateOrActionColText: \"Händelse\",\n listPurchases_digitalColText: \"Pdf\",\n listPurchases_createdColText: \"Skapad\",\n\n // HandleBorrowedItem.ts\n handleBorrowedItem_reportReturned: \"Anmäl som tillbakalämnad\",\n\n // HandleBorrowingItem.ts\n handleBorrowingItem_infoHeader: \"Om pryllånevy\",\n handleBorrowingItem_Info1: \"Du har skannat någon annans kod.\",\n handleBorrowingItem_Info2: \"Denna sida visar information om prylen, men du kan också välja att låna prylen.\",\n handleBorrowingItem_Info3: 'Innan du klicka \"Låna\", välj hur länge du vill låna den.',\n handleBorrowingItem_Info4: 'När du klickar \"Låna\" som kommer ägaren att ha information om att du lånat den.',\n handleBorrowingItem_Info5: \"Du och ägaren kommer at få ett meddelande när du ska lämna tillbaka den.\",\n handleBorrowingItem_wantToBorrowFrom: \"Låna pryl?\",\n handleBorrowingItem_oneDay: \"om en dag\",\n handleBorrowingItem_threDays: \"om tre dagar\",\n handleBorrowingItem_oneWeek: \"om en vecka\",\n handleBorrowingItem_onemonth: \"om en månad\",\n handleBorrowingItem_threeMonths: \"om tre månader\",\n handleBorrowingItem_oneYear: \"om ett år\",\n handleBorrowingItem_noEndDate: \"inget slutdatum\",\n handleBorrowingItem_borrow: \"Låna\",\n handleBorrowingItem_OwnerName: \"Ägarens name: \",\n handleBorrowingItem_TypeOfItem: \"Typ av pryl\",\n handleBorrowingItem_ItemName: \"Prylnamn: \",\n handleBorrowingItem_InfoAboutRent: \"Följande information om hyra och hyrkostnader\",\n handleBorrowingItem_SendMessToOwner: \"Skicka meddelande till ägaren\",\n handleBorrowingItem_whenReturnItem: \"När vill du lämna tillbaka prylen?\",\n handleBorrowingItem_Category: \"Kategori: \",\n\n // HandleItemBorrowedBy.ts\n handleItemBorrowedBy_reportItemBack: \"Anmäl prylen som återlämnad\",\n handleItemBorrowedByMe_YouBorrowedThis: \"Du lånar denna pryl\",\n handleItemBorrowedByMe_Info1: \"Du har skannat en kod på en pryl som du lånat från någon annan.\",\n handleItemBorrowedByMe_Info2: \"Denna sida innehåller information om den prylen.\",\n handleItemBorrowedByMe_Info3:\n \"Genom att klicka på returnera så kommer denna att markeras som returnerad hos den du lånder den av. Det kan vara så att ägaren kräver att återlämning ska godkännas av ägaren.\",\n handleItemBorrowedByMe_ShouldBeReturnedBy: \"Ska återlämnas senast: \",\n handleItemBorrowedByMe_ReturnIn: \"Återlämna om\",\n handleItemBorrowedByMe_Days: \"dagar\",\n handleItemBorrowedByMe_RentCost: \"Hyrkostnad\",\n handleItemBorrowedByMe_infoHeader: \"Om pryl som lånats av mig\",\n handleItemBorrowedByMe_oneDay: \"en dag\",\n handleItemBorrowedByMe_threDays: \"tre dagar\",\n handleItemBorrowedByMe_oneWeek: \"en vecka\",\n handleItemBorrowedByMe_onemonth: \"en månad\",\n handleItemBorrowedByMe_threeMonth: \"tre månader\",\n handleItemBorrowedByMe_oneYear: \"ett år\",\n handleItemBorrowedByMe_noEndDate: \"inget slutdatum\",\n handleItemBorrowedByMe_extend: \"Förläng\",\n handleItemBorrowedByMe_extendDate: \"Förläng returdatum\",\n handleItemBorrowedByMe_addNumDays: \"Lägg till antal dagar\",\n\n //HandleItemBorrowedByOther.ts\n handleItemBorrowedByOther_ReportReturned: \"Anmäl prylen som återlämnad\",\n handleItemBorrowedByOther_BorrowedItem: \"Någon lånar denna pryl\",\n handleItemBorrowedByOther_BorrowedBy: \"Lånad av:\",\n handleItemBorrowedByOther_ShouldBeReturnedBy: \"Ska lämnas tillbaka: \",\n handleItemBorrowedByOther_ReturnIn: \"Lämna tillbaka om\",\n handleItemBorrowedByOther_Days: \"dagar\",\n handleItemBorrowedByOther_info1: \"Do har skannat en kod som något som någon annan lånat från dig.\",\n handleItemBorrowedByOther_info2: \"Denna sida visar information om den saken\",\n handleItemBorrowedByOther_info3:\n \"Genom all klocka på Anmäl som återlämnad markeras denna som återlämnad. Gör inte detta om du inte har fått tillbaka prylen.\",\n handleItemBorrowedByOther_rentCost: \"Hyreskostnad\",\n\n // HandleItemOtherBorrowedByOther.tsx\n handleItemOtherBorrowedByOther_Title: \"Någon annans lånad av någon annan\",\n handleItemOtherBorrowedByOther_infoHeader: \"Om annans pryl lånad av annan\",\n handleItemOtherBorrowedByOther_info1: \"Du har skannat en kod på en pryl som någon annan lånar från någon annan\",\n handleItemOtherBorrowedByOther_info2:\n \"Du kan kontakta ägaren för att höra om du kan låna den efter den som nu lånar den\",\n\n // HandleOwnItem.ts\n handleOwnItem_itemHeader: \"Om att titta på min pryl\",\n handleOwnItem_unregisterItem: \"Avregistrera prylen\",\n handleOwnItem_TypeOfItem: \"Typ av pryl:\",\n handleOwnItem_unregister: \"Avregistrera\",\n handleOwnItem_close: \"Stäng\",\n handleOwnItem_realyUnregister: \"Vill du verkligen avregistrera prylen?\",\n handleOwnItem_resetCode: \"Utagen från frysen\",\n handleOwnItem_QRnumber: \"QR nummer\",\n handleOwnItem_QRCode: \"QR-code\",\n handleOwnItem_PageHeader: \"Prylinfo\",\n\n // handleOwnHtmlItem.ts\n handleHtmlItem_PageHeader: \"Medelande\",\n handleHtmlItem_reset: \"Avregistrera\",\n handleHtmlItem_QRCode: \"QR-kod: \",\n handleHtmlItem_TagId: \"Kodmärkning: \",\n handleOwnHtml_infoHeader: \"Om att titta på eget meddelande\",\n handleOwnHtml_TextOrHTML: \"Meddelande (text eller HTML)\",\n handleOwnHtml_info1: \"Du har skannat en av dina egna koder med ett meddelande\",\n handleOwnHtml_info2: \"Kodmärkning är det namn som som kommer att synas i listan av dina meddelanden\",\n handleOwnHtml_info3:\n '\"Meddelande (text eller HTML)\" är den text som andra som skannar koden kommer att se, utöver de bilder du lagt till',\n handleOwnHtml_info4:\n \"Om du har valt att skriva bara en text så kommer den so skannar koden att se exact det du skrev, och ingenting annat (ingen formatering etc.)\",\n handleOwnHtml_info5:\n \"Om du har valt att skriva HTML så kommer personen som skannar den att se den formaterade HTML-texten\",\n handleOwnHtml_info6: \"Om du vill ändra text/HTML, klicka på Ändra\",\n\n // HandleOwnListFound\n handleOwnLostFound_LostFound: \"Om borttappat\",\n handleOwnLostFound_ShowFindersFee: \"Visa hittelön: \",\n handleOwnLostFound_FindersFee: \"Hittelön: \",\n handleOwnLostFound_ShowYourPhoneNum: \"Visa ditt telefonnummer: \",\n handleOwnLostFound_MessageSendingEnabled: \"Möjligt att skicka meddelande till ägaren: \",\n handleOwnLostFound_ResetCode: \"Avregistrera kod\",\n handleOwnLostFound_FinderCanSendGPS: \"Upphittare kan skicka GPS-position\",\n handleOwnLostFound_infoOnLostFound: \"Info om egen Borttappad\",\n handleOwnLostFound_thisIsLostFoundCode: \"Detta är en Borttappat-kod.\",\n handleOwnLostFound_whenYouMarkSometingWithTag:\n \"När du markerar något med denna kod så kan vem som än hittar den hjälpa dig att få tillbaka den.\",\n handleOwnLostFound_whenYouEditThisTag:\n \"När du ändrar informationen för denna kod kan du välja att ändra alla val du kan se på denna sida och möjligen ännu mer.\",\n\n // HandleOtehrsLostFound\n handleOtherLostFound_HowToReturnItem: \"Hur lämna tillbaka saken?\",\n handleOtherLostFound_YouHaveScannedCode:\n \"Du har skannat en kod på en sak som ägaren väldigt gärna till ha tillbaka. Denna sida beskriver hur du kan lämna tillbaka den till ägaren. Ägaren skulle bli jätteglad om du kan hjälpa till!\",\n handleOtherLostFound_FindersFee: \"Hittelön\",\n handleOtherLostFound_ThereIsAFindersFee: \"Du får hittelön om du lämnar tillbaka den! Du kommer att få \",\n handleOtherLostFound_OwnersPhoneNum: \"Ägarens telefonnummer \",\n handleOtherLostFound_PhoneNum: \"Telefonnummer\",\n handleOtherLostFound_PleaseCallOrSend:\n \". Ring eller skicka ett meddelande för att komma i kontakt med ägaren så att saken kan lämnas tillbaka.\",\n handleOtherLostFound_SendMessToOwner: \"Skicka meddelande till ägaren\",\n handleOtherLostFound_YouCanChooseSendMess:\n \"Du kan här välja att skicka ett anonymt meddelande till ägaren via denna app. I meddelandet kan du beskriva vad hen kan hämta saken eller kommunicera för att stämma möte.\",\n handleOtherLostFound_SendMess: \"Skicka meddelande\",\n handleOtherLostFound_infoHeader: \"Om upphittat\",\n handleOtherLostFound_info1: \"Du har hittat något som någon annan har tappat bort\",\n handleOtherLostFound_info2:\n \"Denna app kan hjälpa did att lämna tillbaka saken till ägaren, som kommer att bli jätteglad!\",\n handleOtherLostFound_info3: \"Om du lämnar tillbaka den så kommer du att få hittelön!\",\n handleOtherLostFound_info4: \"Du kan ringa eller skicka ett SMS till ägaren via telefonummret som visas på sidan\",\n handleOtherLostFound_info5:\n \"Du kan skicka ett meddelande till ägaren anonymt. Där kan du skriva var ägaren kan hämta upp pryle (t.ex. om du lägger den någonstans eller lämnar in den någonstans)\",\n handleOtherLostFound_info6:\n \"Du kan markera platsen där du hittade/lämnar prylen så att ägaren kan komma dit och hämta den (du skickar då GPS-positionen till ägaren)\",\n handleOtherLostFound_SendGPSPosToOwnerHeader: \"Skicka GPS-position till ägaren\",\n handleOtherLostFound_SendGPSPositionToOwnerInfo:\n \"Du kan skcka din GPS-position till ägaren så att hen kan ta sig dit för att hämta saken.\",\n handleOtherLostFound_SendGPSPosToOwnerButton: \"Skicka GPS-positon\",\n handleOtherLostFound_SendingGPSPosToOwner: \"Skickar GPS-position till ägaren\",\n handleOtherLostFound_GeolocationIsNotSupported: \"Geolocation is not supported by this browser.\",\n handleOtherLostFound_HasSentGPSPosToOwner: \"GPS-position skickad!\",\n handleOtherLostFound_GpsLinkMessage: \"Någon har skickat den här länken till GPS-position för denna pryl: \",\n\n // HandleOthersFreezer\n handleOthersFreezer_infoHeader: \"Om se annans frysinfo\",\n handleOthersFreezer_info1: \"Do har skannat någon annans mat\",\n handleOthersFreezer_info2: \"Denna sida visar information om denna mat.\",\n handleOthersFreezer_info3: \"Om du har rätt att ändra iniformaitonen så kommer du att kunna klicka på 'Ändra'\",\n\n handleOthersFreezer_PageHeader: \"Någon annans mat\",\n handleOthersFreezer_Owner: \"Ägare:\",\n handleOthersFreezer_ContentType: \"Typ av mat:\",\n handleOthersFreezer_FoodType: \"Innehåll:\",\n handleOthersFreezer_FreezDate: \"infrysningsdatum:\",\n handleOthersFreezer_ExparationDate: \"Utgångsdatum:\",\n handleOthersFreezer_ForHowMany: \"För hur många personer:\",\n handleOthersFreezer_HowMuch: \"Hur mycket:\",\n handleOthersFreezer_Location: \"Var:\",\n\n //handleOthersBoxes\n handleOthersBoxes_PageHeader: \"Någon annans låda\",\n handleOthersBoxes_Info1: \"Du har skannat någon annans låda.\",\n handleOthersBoxes_Info2: \"Denna sida visar information om lådan och dess innehåll.\",\n handleOthersBoxes_Info3:\n 'Om du har rätt att ändra information så kan du även klicka på \"Ändra\" för att göra detta.',\n handleOthersBoxes: \"Om annans låda\",\n\n // HandleOwnBoxes\n handleOwnBoxes_infoHeader: \"Om titta på lådinfo om min låda\",\n handleOwnBoxes_PageHeader: \"Min låda\",\n handleOwnBoxes_PageHeaderEdit: \"Ändra\",\n handleBoxes_Owner: \"Ägare: \",\n handleBoxes_ShortID: \"Lådmärkning: \",\n handleBoxes_ContentType: \"Typ av innehåll: \",\n handleBoxes_Content: \"Innehåll: \",\n handleBoxes_Description: \"Detaljer\",\n handleBoxes_Location: \"Plats: \",\n handleBoxes_Room: \"Rum: \",\n handleBoxes_Category: \"Kategory: \",\n handleBoxes_Fragility: \"Ömtåligt\",\n handleBoxes_Priority: \"Prioritet: \",\n handleBoxes_QRcode: \"QR-kod\",\n handleBoxes_BoxColor: \"Färgmarkering: \",\n handleBoxes_BoxState: \"Lådstatus: \",\n handleBoxes_StorageDate: \"Senast ändrad: \",\n handleBoxes_ShortId: \"Id:\",\n handleBoxes_0: \"Här hittar du detaljerad information om lådan och dess innehåll.\",\n handleBoxes_1:\n \"Varje klistermärka (låda) har ett unikt ID på 2-3 bokstäver som du använder för att identifiera de individuella lådorna.\",\n handleBoxes_2:\n \"Boxstatus informerar dig om om lådan packas, om den till exempel är fylld/stängd, om det är lagrad eller håller på att packas upp.\",\n handleBoxes_3: \"Kategori är en övergripande beskrivning av innehållet i lådan.\",\n handleBoxes_4: \"Beskrivning är vad du kan hitta den detaljerade informationen om lådan och dess innehåll.\",\n handleBoxes_5: \"Plats är var lådan är (till exempel address) TODO: FIXA NAMNEN.\",\n handleBoxes_6: \"Rum/plats talar om var i platsen lådan finns.\",\n handleBoxes_7: \"Om Ömtåligt är iklickat är innehållet ömtåligt.\",\n handleBoxes_8:\n \"Prioritet är för att du ska veta om en låda ska flyttas tidig, om den kan flyttas med övriga, eller om det inte är någon brådska alls.\",\n handleBoxes_9: \"Senaste ändringsdatum är det datum som denna lådas innehåll uppdaterades senast.\",\n handleBoxes_10: \"QR-kod är det unika ID som hör till just denna kod\",\n\n // EditBoxes\n EditBoxes_ContentTypeHeader: \"Typ av innehåll\",\n EditBoxes_ContentHeader: \"Innehåll\",\n EditBoxes_BoxName: \"Lådnamn\",\n EditBoxes_Location: \"Plats\",\n EditBoxes_Room: \"Rum/placering\",\n EditBoxes_QRID: \"Märknings-ID\",\n EditBoxes_BoxID: \"Låd-ID\",\n EditBoxes_QRcode: \"QR-kod\",\n EditBoxes_LocationHeader: \"Plats\",\n EditBoxes_RoomHeader: \"Rum/placering\",\n EditBoxes_CategoryHeader: \"Kategori\",\n EditBoxes_BoxStateHeader: \"Lådstatus\",\n EditBoxes_BoxPriorityHeader: \"Prioritet\",\n EditBoxes_BoxColorHeader: \"Lådfärg\",\n EditBoxes_InfoHeader: \"Info om ändra lådinfo\",\n\n // EditBoxInfo\n EditBoxInfo_BoxInfoHeader: \"Hur fungerar QR-märking av lådor?\",\n EditBoxInfo_PlaceQR: \"Klistra på en QR-kod på din låda.\",\n EditBoxInfo_ScanQR: \"Skanna QR-koden och registrera/logga in, om det behövs.\",\n EditBoxInfo_Packing:\n \"Nu kan du börja packa och kanske sätta lådstatus till Packas, för att hålla koll på dina lådor.\",\n EditBoxInfo_AddingCatDetails:\n \"Medan du packar kan du lägga till en eller flera Kategorier eller skriva innehållet under Detaljer.\",\n EditBoxInfo_BackLater:\n \"Om du kommer tillbaka senare så skanna bara QR-koden igen och fortsätt packa och uppdatera innehållet i appen.\",\n EditBoxInfo_FinishedPacking:\n \"När en låda är färdig så kan du sätta Lådstatus till Stängd. Om du vill att den ska flyttas till ett speciellt rum så kan du uppdatera Rum/Plats för lådan.\",\n EditBoxInfo_AddingPrioFrag: \"Du kan i appen sätta prioritet och hur ömtåligt innehållet är också\",\n EditBoxInfo_PutInStorage:\n \"Om du lagrar lådan någonstans så kan du ändra Lådstatus till Lagrad. Det kan också då vara bra att ändra\",\n\n // HandleFreezer.ts\n handleFreezer_freezing_date: \"Frysdatum\",\n handleFreezer_persons: \"Personer\",\n handleFreezer_noDateSet: \"Inget datum valt\",\n\n // HomePageText.ts\n homePageText_howWorks: \"Hur funkar det?\",\n homePageText_prices: \"Priser\",\n homePageText_toThinkAbout: \"Att tänka på\",\n homePageText_tagsFromUs: \"Beställ klisterlappar från oss - digitalt eller skickade till dig.\",\n homePageText_tagOntoTool: \"Klistra på en unik QR-kod på t.ex. ett verktyg.\",\n homePageText_scanWithCell:\n \"Skanna QR-koden med din mobil - om det är första gången du använder appen, registrera dig.\",\n homePageText_addDescript: \"Lägg till en beskrivning av prylen och kanske lägg till ett foto.\",\n homePageText_ifSomoneBorrow:\n \"Om någon vill låna eller hyra prylen är det bara för dem att skanna QR-koden och registrera uthyrningens med sin smartphone.\",\n homePageText_weKeepTrack:\n \"Vi håller koll på utlån/uthyrningar och ger påminnelser när det är dags att lämna tillbaka.\",\n homePageText_qritIsServiceSubscr: \"QRit.app är än tjänst där du abonnerar på QR-kod användning per år.\",\n homePageText_subscript8kr: \" etiketter kostar \",\n homePageText_subscript8krEnd: \"/etikett och år\",\n homePageText_12TagsCost: \" etiketter kostar \",\n homePageText_12TagsCostEnd: \"/år\",\n homePageText_24TagsCost: \" etiketter kostar \",\n homePageText_24TagsCostEnd: \"/år\",\n homePageText_buyPhysicalTags:\n \"Vill du köpa klisteretiketter färdiga för egen utskrift i vårt format, beställ Avery L4778 - till exempel här: \",\n homePageText_alsoJusgtPrintAndTejp:\n \"Du kan också bara skriva ut etiketterna på vanligt papper, klippa ut dem och sedan använda tejp.\",\n homePageText_attTankaPa: \"Att tänka på\",\n homePageText_ifNotPrintWeSend: \"Vill du inte skriva ut etiketterna själv kan du beställa dem färdiga via brev för \",\n homePageText_ifNotPrintWeSendEnd: \" (upp till 48 etiketter i en sändning) – abonnemangskostnad tillkommer.\",\n homePageText_tagsMustPlanar: \"Klisterlapparna måste fästas på en (ganska) plan yta\",\n homePageText_size2x4: \"Lapparna finns i dagsläget i storleken 2x4 cm\",\n homePageText_partOfTagsWhite:\n \"En del av etiketterna är vita – du kan använda detta att skriva på, eller bara klippa bort det.\",\n homePageText_ifPDF:\n \"Väljer du att ladda hem en PDF-fil med QR-koder så kan du skriva ut dem själv direkt – etiketterna finns i standardformat, men du kan också bara skriva ut och använda tejp.\",\n homePageText_priceTablePrice: \"Pris\",\n homePageText_priceTableCurrency: \"Valuta\",\n\n // HomePage\n homePage_infoHeader: \"Om hemvy\",\n homePage_infoGeneralHelp: \"Generell hjälp\",\n homePage_info0: \"Detta är hemmasidan i QRit-appem\",\n homePage_info1: \"Du kan klicka på en rad (eller ruta) för att se detaljerna om den\",\n homePage_info2: \"eller så kan du välja att byta mellan olika typer av koder genom att klicka på flikarna\",\n homePage_info3: 'Du kan också välja att byta mellan flikar genom att \"swajpa\" höger eller vänster',\n homePage_info4: \"Om du vill söka efter en vis sak, skriv in söktext i sökfältet\",\n homePage_info5:\n \"Du kan byta mellan att se sakerna som en lista eller som ett rutor. Rutor funkar bästa om alla sakerna har bilder\",\n homePage_info6:\n \"Du kan lägga till mer typer av koder eller ändra vilka koder som ska visas i flikarna genom att gå in i Inställningar i menyn upp till höger\",\n homePage_info7: \"Du kan klicka på en rubrik (i listvyn) för att sortera på den\",\n homePage_info8: \"Om du vill köpa coder on-line så gör du det via menyn upp till höger\",\n homePage_grid: \"Rutnät\",\n homePage_list: \"Lista\",\n\n // TagTypeOverview\n tagTypeOverview_pageHeader: \"QRit - Bryggan mellan det fysiska och det digitala\",\n tagTypeOverview_intro:\n \"QRit är en uppsättning tjänster som hjälper dig hålla koll på saker privat i vardagen, eller på jobbet:\",\n tagTypeOverview_RegisterLogin: \"Registrering/inloggning\",\n tagTypeOverview_RegisterLoginInfo:\n \"För att kunna använda tjänster så behöver du registrera dig (eller om du är registrerad, logga in)\",\n tagTypeOverview_lblHeaderQRitStorage: \"QRit Lagring\",\n tagTypeOverview_QRitStorage1:\n \"Glöm inte var du har dina saker! Med QRit Lagring håller du koll på i vilken låda på vinden, i förrådet, garaget, lägenheten eller huset du har lagt dina saker, och var den står. Genom att märka en låda med en QRit-kod och skanna den kan du lägga in information om vad som finns i en låda och var den finns. \",\n tagTypeOverview_QRitStorage2:\n \"Det går även att lägga till en bild, t.ex. med innehållet. QRit Lagring är ett måste för flytten! Med QRit.app can du sedan söka efter innehåll och hitta vilken låda en viss pryl är i, och var den står.\",\n tagTypeOverview_QRitStorage3:\n \"Köp ett QRit Lagrings-kit där du handlar dina flyttlådor (hitta närmaste här). QRit Lagring är en prenumerationstjänst.\",\n tagTypeOverview_lblHeaderQRitKeys: \"QRit Nycklar\",\n tagTypeOverview_QRitKeys1:\n \"Gör det enklare att få tillbaka nycklarna när du tappat bort dem! Sätt en QRit Nycklar-bricka på din nyckelring så att när du tappar bort den så kan den som hittar nyckarna skanna koden och kontakta (chatta med) dig anonymt.\",\n tagTypeOverview_QRitKeys2:\n \"Köp ett QRit Nycklar-kit i butik (hitta närmaste här). QRit Nycklar är en prenumerationstjänst.\",\n tagTypeOverview_lblHeaderQRitStatic: \"QRit Prylar\",\n tagTypeOverview_QRitStatic1:\n \"Låt dina grannar, vänner och familj lätt se vad du har och låna dina dina verktyg, böcker eller annat, samtidigt som då håller koll på dina utlånade prylar. Du kan även göra en lista av pryla publik och hyra ut dem. Börja med att märka upp dina prylar med QRit-koder. Skanna dem sedan och lägg in information om prylen och kanske en bild.\",\n tagTypeOverview_QRitStatic2:\n \"Du kan skriva hur mycket du tänker dig att det ska kosta att hyra/låna prylen. När någon annan skannar QRit-koden kan de be att få låna den och skriva hur länge de vill låna den. När återlämningsdatum närmar sig får du och den som lånar en pryl ett meddelande.\",\n tagTypeOverview_QRitStatic3:\n \"Köp ett QRit Prylar-kit i butik (hitta närmaste här). QRit Prylar är en prenumerationstjänst.\", //, eller köp QR-koder direkt från oss här (antingen digitala eller fysiska)\n tagTypeOverview_lblHeaderQRitLostFound: \"QRit Borttappat\",\n tagTypeOverview_QRitLostFound1:\n \"Öka möjlighen att få tillbaka borttappade saker! Med QRit Borttappat märker du upp dina prylar med QR-koder så att när du tappar dem så kan andra skanna koden och göra så att du får tillbaka den. Upphittaren kan kommunicera med dig anonymt och till och med markera en (GPS) position där prylen finns, för att underlätta.\",\n tagTypeOverview_QRitLostFound2:\n \"Köp ett QRit Borttappat-kit i butik (hitta närmaste här). QRit Borttappat är en prenumerationstjänst.\", //, eller köp QR-koder direkt från oss här (antingen digitala eller fysiska)\n tagTypeOverview_lblHeaderQRitFreezer: \"QRit Frysen\",\n tagTypeOverview_QRitFreezer1:\n \"Trött på att hålla koll på vad som finns i frysen? Med QRit Frysen kan du märka upp din mat, lista vilken mat du har i frysen och och få notifieringar när något börjar bli gammalt. Märk upp. Skanna. Lägg in information som vilken typ av mat, hur mycket, och vad som är bäst-före datum.\",\n tagTypeOverview_QRitFreezer2:\n 'När du tagit ut något ur frysen kan du enkelt skanna koden och välja \"Uttagen ur frysen\". QRit Frysen koder tål maskindisk om klistrad på t.ex. en plastlåda',\n tagTypeOverview_QRitFreezer3:\n \"Köp ett QRit Frysen-kit i butik (hitta närmaste här). QRit Frysen är en prenumerationstjänst.\", //, eller köp QR-koder direkt från oss här (antingen digitala eller fysiska)\n tagTypeOverview_lblHeaderQRitHtml: \"QRit Meddelanden\",\n tagTypeOverview_QRitHtml1:\n \"En QRit Medelanden-kod kan innehålla en webbsida med information, eller bara lite text eller en bild.\",\n tagTypeOverview_QRitHtml2:\n \"Köp ett QRit Medelanden-kit i butik (hitta närmaste här). QRit Frysen är en prenumerationstjänst.\", //, eller köp QR-koder direkt från oss här (antingen digitala eller fysiska)\n tagTypeOverview_business: \"Företag\",\n tagTypeOverview_private: \"Privat\",\n\n tagTypeOverview_pageHeader_BB: \"Bron mellan det digitala och fysiska!\",\n tagTypeOverview_intro_BB:\n \"QRit är en uppsättning tjänster som genom användandet av unika QR-koder hjälper dig att hålla koll på saker i ditt företag. Nedan kan du se vilka tjänster som finns.\",\n tagTypeOverview_RegisterLoginInfo_BB:\n \"För att kunna använda QRits tjänser behöver du registrera dig (om du är registrerad, logga in). För att skapa ett organisationskonto, logga in med ditt telefonnummer och gå till Inställningar. Om du är administratör för en organisation så kommer du att få välja om du vill logga in som dig själv eller som organisationen när du fyllt i verifieringskoden.\",\n tagTypeOverview_lblHeaderQRitStorage_BB: \"QRit Lagring\",\n tagTypeOverview_lblHeaderQRitKeys_BB: \"QRit Anonymt\",\n tagTypeOverview_lblHeaderQRitStatic_BB: \"QRit Inventarier\",\n tagTypeOverview_lblHeaderQRitLostFound_BB: \"QRit Borttappat\",\n tagTypeOverview_lblHeaderQRitFreezer_BB: \"QRit Restaurang\",\n // TODO: Change name from freezer\n tagTypeOverview_lblHeaderQRitHtml_BB: \"QRit Meddelandekoder\",\n\n tagTypeOverview_QRitStorage1_BB:\n \"Glöm inte var du har dina lådor och vad som är i dem! Med QRit Lådor kan du hålla koll på vad du har var. Sätt än kod på lådorna på kontoret, på lagret eller i garaget. När du skannat en QR-kod första gången så kan du lägga upp information om var den är, vad som är i, och kanske också ta ett kort på vad som är i lådan.\",\n tagTypeOverview_QRitStorage2_BB:\n \"Du kan också lägga till bilder. Till exempel på innehållet i en låda eller var den lagras. Genom QRit kan du och dina kollegor leta efter innehåll och titta på pilder för att hitta vad som vinns var.\",\n tagTypeOverview_QRitOrderCodesHere_BB: \"\",\n tagTypeOverview_QRitKeys1_BB:\n \"Gör det lättare att få tillbaka nycklar, nyckelkort, eller andra känsliga saker på ett säkert sätt. sätt en QRit Anonymt kod på dina nycklar eller ditt RFid-kort, och när någon skannar någon av dem så kan de kommunicera med dig anonymt. Du kan också lägga till hittelön så att upphittaren har mer incitament att lämna tillbaka det. Du kan också lägga till information om det du märkt med en anynym kod. Information som bara behöriga personer inom din organisation kan se. Detta kan vara vad en nyckel hör hemma, ett lösenord (var dock försiktig med lösenord) eller innehållet (t.ex. om ett USB-stick eller en hårddisk märks upp).\",\n tagTypeOverview_QRitKeys2_BB: \"\",\n // tagTypeOverview_lblHeaderQRitStatic_BB: \"QRit ItemTracking\",\n tagTypeOverview_QRitStatic1_BB:\n \"Håll koll på utrusting och inventarier i din organisation. Märk upp verktyg, böcker, datorer coh andra saker i med QRit Inventatier-koder, lägg till information om dem, och kanske ta ett kort på dem. Den som skannar koden får information om saker. Till exempel, om någon är på företagets lista (t.ex. anställda) skannar en sådan kod kan han eller hon få information om var saken finns just nu eller vem som har den. Om någon extern skannar den går det att sätta upp det på olika sätt, så som att låta den som skannar kommunicera med dig, eller så går det genom dessa koder att ha koll på vem som lånar vad. Det går då också att sätta låne-(eller hyr)-tid, och skicka meddelanden när lånetiden är på väg att gå ut.\",\n tagTypeOverview_QRitStatic2_BB: \"TBD\",\n tagTypeOverview_QRitStatic_BB: \"\",\n tagTypeOverview_QRitLostFound1_BB:\n \"Öka sannolikheten att få tillbaka saker som du tappar bort. Med QRit Borttappat kan du märka upp saker så att när du tappar bort dem så får andra som skannar koden möjligheten att skicka meddelanden till dig och även skicka GPS position. Detta liknar QRit Nycklar, men är klisterlappar med koder istället.\",\n tagTypeOverview_QRitLostFound2_BB: \"\",\n // tagTypeOverview_lblHeaderQRitHtml_BB: \"QRit Information\",\n tagTypeOverview_QRitHtml1_BB:\n \"En QRit Informaiton kan inehålla en länk till en hemsida, HTML-kod, eller bara enkel text. Du kan ändra texten eller länken änär som helst. Det du skriver kan vara direkt information om en maskin eller en process, eller en länk till ett document eller hemsida med denna informaiton. Man kan även använda det som dynamisk prismärkning (detta kräver troligen integrering mot er backend med prisdata).\",\n tagTypeOverview_lblHeaderQRitRestaurant_BB: \"QRit Restaurang (framtida tjänst/feature)\",\n tagTypeOverview_QRitRestaurant1_BB:\n \"En QRit Restaurang-kod är vägen till att hantera återvinning/pant av till exempel take-away-lådor - något som blir krav i EU 2024 (http://publications.europa.eu/resource/cellar/7ec2bc0d-e5b2-4c09-bf6f-dce483160b6d.0015.03/DOC_2)\",\n tagTypeOverview_QRitRestaurant2_BB:\n \"Det kan till exempel göras genom att restaurangen sätter på en QRit Restaurant-kod på en hårdplastlåda som kunden som tar emot lådan skannar. Då har ni information om vem som har vilken låda. När lådan återlämnas skannar restaurangen den, för att sedan diska och återanvända till nästa kund. Dvs ett pantsystem för take-away-lådor. \",\n\n // Privacy.ts\n privacy_deliveryTermsHeader: \"Leveransvillkor\",\n privacy_deliveryTerms:\n \"QR-koder som beställs som digital fil (pdf) skickas normalt inom 2 arbetsdagar. QR-koder som beställs färdigtryckta skickas normalt som ekonomibrev inom 4 dagar. Avvikelser kan förekomma. För förtryckta etiketter, om adressen är felaktig så att försändelsen inte kommer fram förbehåller vi oss rätten att ta ut full utskickningsavgift för en andra försändelse. Om angiven emailadress är felaktig, skicka oss den korrekta via email (best@qrit.app) så uppdaterar vi.\",\n privacy_deliveryTermsMissDelivery:\n \"Om vi inte kan leverera inom avtalad tid har vi skyldighet att informera om detta och upplysa er om ny tidpunkt. Om vi inte kan leverera inom rimlig tid så har du rätt att häva köpet via email (best@qrit.app – ange registrerat telefonnummer och beställningsdatum). Om du ångrar ditt köp betalas det belopp som du betalat tillbaka till dig, inklusive eventuella leveranskostnader. QRit betalar snarast tillbaka beloppet, dock senast inom 14 dagar från och med det datum ditt meddelande om utövande av ångerrätten mottogs. Återbetalningen kommer att ske till dig via det betalningsalternativ som du valde.\",\n privacy_personalInfoHeader: \"Personuppgifter\",\n privacy_personalInfoUseInfo:\n \"Personuppgifter som lämnas till oss i samband med att du använder QRit.app används för att kunna fullgöra åtaganden (tjänsten) gentemot dig och i övrigt ge dig god service. Härvid avses att komma i kontakt med dig om det uppstår problem vid leverans, samt, vid postförsändelse, kunna leverera QR-koderna till dig. QRit kommer, i egenskap av personuppgiftsansvarig, inte att lämna ut dina uppgifter till tredje part för marknadsändamål. Uppgifter kan däremot komma att vidarebefordras till tredje part uteslutande i syfte att QRit.app ska kunna uppfylla sina åtaganden gentemot dig. Vi kan, till exempel, komma att skriva ut både etiketter och adresslappar hos tredje part. Du kan när som helst återkalla ditt medgivande till att QRit.app använder dina uppgifter i marknadsföringssyfte (t.ex. nyhetsbrev eller erbjudanden). Du kan kontakta oss per e-post till info@qrit.app.\",\n privacy_cookies: \"Cookies\",\n privacy_cookiesInfo:\n \"QRit.app använder cookies på sin webbplats för att se till att vi kan utföra de tjänster som du förväntar dig när du besöker webbplatsen. När du i framtiden besöker vår webbplats eller när du öppnar ett e-postmeddelande från oss kan QRit.app få tillgång till cookies som finns lagrade på din dator. Om du vill radera cookies som redan finns på din dator ber vi dig gå igenom instruktionerna i din webbläsare genom att klicka på Hjälp i webbläsarmenyn. Om du raderar våra cookies eller inte tillåter framtida cookies så kan detta resultera i att du inte får tillgång till eller inte kan använda vissa områden eller funktioner på vår webbplats. QRitapp kommer också att spara din användarinformation på din telefon, för att möjliggöra säker hantering av skanning av koder med mera. Sådan registrering sker så fort användarinformation registreras, och för samtliga tjänster.\",\n privacy_infoStorageHeader: \"Lagring av information och säkerhet\",\n privacy_infoStorageInfoSSL:\n \"Vår sajt www.QRit.app använder HTTPS-protokollet med SSL-certifikat för att skydda information.\",\n privacy_infoStorageInfoEncrypt:\n \"QRit.app skyddar även data, telefonnummer och address, från obehöriga, med tekniker såsom dynamic data masking och transparent data encryption.\",\n privacy_personalInfoPurchaseHeading: \"Personuppgifter vid betalning\",\n privacy_personalInfoPurchaseInfo:\n \"Vi använder Klarna (www.klarna.se) för betalningar med kort. Se https://www.klarna.com/se/dataskydd/. Klarna uppfyller kraven för PCI DSS\",\n privacy_pricesHeader: \"Priser\",\n privacy_pricesInfo:\n \"Vid beställning via webbtjänsten/appen gäller de priser som anges på webbplatsen. Priser anges i svenska kronor och är inklusive moms. Abonnemangspriserna inkluderar inte eventuella betalningavgifter, som anges separat. Dessutom, om du väljer att köra färdigtryckta etiketter betalar du en hanteringskostnad för utskrift och leverans, som inte är inkulderat i abonnemangspriserna. Du kan betala på sätt som anges på webbplatsen. QRit.app förbehåller sig rätten att inte alltid erbjuda alla betalsätt samt att ändra betalsätt om det som du valt av någon anledning inte fungerar vid tillfället för köpet eller du inte godkänns för det valda betalsättet. Bekräftelse på din betalning samt QR-koder kommer skickas via epost till din angivna epost-adress, alternativs via ekonomipost.\",\n privacy_giveBackHeader: \"Reklamation\",\n privacy_giveInfo: \"Vid reklamation Kontakta oss på order@QRit.app, så berättar vi hur du ska gå vidare.\",\n privacy_returningHeader: \"Ångerrätt\",\n privacy_returningInfo:\n \"Konsumenter har normalt 14 dagars ångerrätt men digitalt innehåll innefattas inte i detta. Genom att du accepterar dessa villkor samtycker du till att ångerrätten inte gäller för digitalt innehåll som levereras på annat sätt än på ett fysiskt medium. 14 dagars ångerrätt gäller dock för QR-koder som beställs via ekonomipost (fysisk leverans).\",\n privacy_exchangeHeader: \"Bytesrätt\",\n privacy_exchangeInfo: \"Det går ej att byta tjänster.\",\n privacy_payBackHeader: \"Återbetalning\",\n privacy_payBackInfo:\n \"Vi vill uppmärksamma att det i vissa fall kan ta någon bankdag från det att QRit.app gjort överföringen, innan pengarna kommer in på ditt konto. Återbetalning sker med samma betalningssätt som vid köpet.\",\n privacy_payBackInfoDelivery:\n \"Återbetalning fraktkostnader vid reklamation - Om företaget företar omleverans eller avhjälpande av felet vid reklamation ska eventuella fraktkostnader återbetalas inom 14 dagar från den dag företaget mottagit den reklamerade varan. Retur av vara samt återbetalning ska ske utan onödigt dröjsmål. Konsumenten skall ersättas för eventuella fraktkostnader samt andra kostnader som uppkommit i samband med reklamationen, tex bensinkostnader, parkeringskostnader, telefonkostnader och liknande.\",\n privacy_goodToHaveLinksHeader: \"Nyttiga länkar\",\n privacy_goodToHaveLinksConsumerService: \"Ångerblankett från Konsumentverket \",\n privacy_goodToHaveLinksConsumerARN: \"ARN (ARN) Postadress: Box 174, 101 23 Stockholm \",\n privacy_goodToHaveLinksArbitration: \"Tvistelösning på Internet (Tvist)\",\n privacy_complaintsHeader: \"Klagomål\",\n privacy_complaintsInfo: \"Klagomål kan framföras till info@QRit.app eller med brev till: [fyll i]]\",\n\n // Purchasing.tx\n purchasing_payment: \"Betalning\",\n purchasing_ifPurchaseDigital:\n \"Om du beställt QR-koder digitalt (pdf-fil), kontrollera att emailaddressen är korrekt.\",\n purchasing_ifPurchasePhysical: \"Om du beställt färdiga klisterlappar, kontrollera att addressen är korrekt.\",\n purchasing_order: \"Order\",\n puchasing_youLoggedInLoginNow: \"Du måste vara inloggad för att köpa. Logga in innan du går vidare.\",\n purchasing_payPaypal: \"Betala med Paypal\",\n purchasing_paySwish: \"Betala med Swish\",\n purchasing_payKlarna: \"Betala med Klarna\",\n purchasing_paySwishInstructions: \"Betala med Swish-appen genom att skanna QR-koden.\",\n purchasing_fullName: \"För och efternamn\",\n purchasing_firstName: \"Förnamn\",\n purchasing_lastName: \"Efternamn\",\n purchasing_address: \"Adress\",\n purchasing_zipCode: \"Postkod\",\n purchasing_city: \"Stad\",\n purchasing_country: \"Land\",\n purchasing_emailPlaceholder: \"Skriv email adress här\",\n purchasing_email: \"Epost\",\n purchasing_phone: \"Telefon\",\n purchasing_username: \"Användarnamn\",\n\n // RegisterItem.ts\n registerItem_itemRegistration: \"Registrera pryl\",\n registerItem_freezerItemRegistration: \"Registera infrysning\",\n registerItem_boxItemRegistration: \"Registera låda\",\n registerItem_lostFoundItemRegistration: \"Registera borttappat\",\n registerItem_messageTagItemRegistration: \"Registera meddelande\",\n registerItem_messageHtml: \"Fritext eller HTML\",\n registerItem_messageName: \"Kort namn på meddelande\",\n registerItem_alwaysConfirmReturn: \"Jag vill alltid konfirmera återlämnande:\",\n registerItem_registrerMustHaveBankID: \"Den som lånar måste vara registrerad med BankID ([framtida funkt.])\",\n registerItem_putItemForRent: \"Jag vill lägga ut denna prylen för uthyrning\",\n registerItem_rentInfo: \"Info om hyra/kostnad\",\n registerItem_lostFound: 'Jag vill registrera denna för \"Borttappat\"',\n registerItem_lostFoundInfo:\n \"Om denna pryl tappas bort kommer denna inställning att göra det lättare att få tillbaka den.\",\n registerItem_configRent: \"Inställningar hyra\",\n registerItem_configLostFound: \"Inställningar borttappat\",\n registerItem_itemRegister: \"Registrera\",\n registerItem_failedRegisterCode: \"Misslyckades med att registrera koden. Försök igen senare!\",\n\n // EditHtml\n editHtml_PageHeaderEdit: \"Ändra\",\n editItem_PageHeaderEdit: \"Ändra\",\n editHtml_Instructions: \"Instruktioner\",\n editHtml_infoHeader: \"Om meddelandeändring\",\n editHtml_Info1: \"Här skriver du in det meddelande du vill att personen som skannar koden ska se.\",\n editHtml_Info2: \"Meddelandenamnet är det som du kommer att se när du listar meddelandet.\",\n editHtml_Info3: \"Du kan sedan skriva in meddelandet.:\",\n editHtml_Info4: \"Om du vänjer att skriva in text så kommer den som skannar koden att se texten precis som den är.\",\n editHtml_Info5: \"Om du väljer att använda HTML som kommer den som skannar koden att se formaterad HTML.\",\n\n // titleWithInfo\n titleWithInfo: \"Information\",\n titleWithInfo_reportMisuse: \"Ge återkoppling/rapportera missbruk\",\n titleWithInfo_reportMisuseDescript:\n \"Här kan du också ge oss återkoppling om problem med QRit, eller bara ge oss generell återkoppling om tjänsterna. Här kan du också rapportera missbruk av våra tjänster, som när någon lägger ut bilder eller annat innehåll som är stötande eller på annat sätt är olämpligt eller bryter mot våra regler. Vi kommer att granska ditt meddelande och återkommer till dig så snart vi kan.\",\n titleWithInfo_reportMisuseSent: \"Tack för din återkoppling!\",\n titleWithInfo_reportMisuseError: \"Något gick fel när vi försökte skicka din återkoppling. Försök igen senare.\",\n\n // EditItem.ts\n editItem_typeStatic: \"Statisk (t.ex. verktyg)\",\n editItem_typeReuse: \"Hålla koll på frysen)\",\n editItem_typeReuseLostFound: \"Borttappat\",\n editItem_typeReuseFreetext: \"Free text\",\n editItem_typeStorage: \"förvaring\",\n editItem_typeLabel: \"Välj typ\",\n editItem_failedSaveCode: \"Misslyckades att spara koden!\",\n\n // Edit Static\n editStatic_infoHeader: \"Om att ändra prylinfo\",\n editStatic_PageHeaderEdit: \"Ändra\",\n editStatic_1: \"Här kan du ändra informationen om prylen du har märkt med QR-kod.\",\n editStatic_2: \"Välj ett namn som gör det lätt att komma ihåg vad det är.\",\n editStatic_3: \"Beskriv prylen så detajerat du vill.\",\n editStatic_3_1: 'Välj om du vill lägga ut denna som \"hyrbar (dvs. att du vill ha betalt om någon lånar den)\"',\n editStatic_3_2:\n 'Om du lägger ut den som \"hyrbar\" så lägg till en beskrivning av hyrkostnad (t.ex. kostnad per dag och/eller per vecka, eller kanske kostnader för en helg), samt kanske information om hur du vill ha betalt (t.ex. kontakt eller SWISH)',\n editStatic_4: \"Du kan också välja att ta ett kort på prylen.\",\n editStatic_5:\n \"Om du vill att vi ska skicka dig en notifiering när det är dags för den som lånat prylen att lämna tillbaka den, klicka i rutan för det.\",\n editStatic_6: \"Om du vill att andra ska kunna hyra denna pryl, klicka i den rutan.\",\n editStatic_7: \"Du kan även ändra kodtyp, men då får du slå på avancerade inställningar.\",\n editStatic_photo: \"Bild\",\n editStatic_photoChoice: \"Välj bild\",\n editStatic_ISBNScanningInfo: \" - skanna/lägg till ISBN-nummer\",\n editStatic_alwaysConfirmReturn: \"Jag vill alltid konfirmera återlämnande\",\n editStatic_registrerMustHaveBankID: \"Den som lånar måste vara registrerad med BankID ([framtida funkt.])\",\n editStatic_putItemForRent: \"Jag vill lägga ut denna prylen för uthyrning\",\n editStatic_lostFound: 'Jag vill registrera denna för \"Borttappat\"',\n editStatic_lostFoundInfo:\n \"Om denna pryl tappas bort kommer denna inställning att göra det lättare att få tillbaka den.\",\n editStatic_configRent: \"Settings Renting\",\n editStatic_configLostFound: \"Settings Lost&Found\",\n EditStatic_ItemTypesListHeader: \"Typ av pryl\",\n EditStatic_ItemTypesHeader: \"Typ av pryl\",\n editStatic_ListsHeader: \"Listor\",\n editStatic_codeCannotBelongToMoreThanOne: \"En kod kan inte tillhöra mer än en lista (när den kräver ägarändring)\",\n editStatic_codeWillChangeOwner: \"Koden kommer att ändra ägare till listägaren när den sparas\",\n editStatic_ISBNScanningError: \"Problem med skan. ISBN nummret hittas inte.\",\n\n // UploadDialog\n uploadDialogImageChoice: \"Bildval\",\n uploadDialogChooseImage: \"Välj bild\",\n uploadDialogUpload: \"Spara bilden\",\n uploadDialogRotate: \"Rotera\",\n\n // ScanDialog\n scanDialog_manualEnter: \"eller skriv in nummer (t.ex. ISBN) här...\",\n\n // useObserveCode\n useObserveCode_ErroTryRefresh: \"Fel! Försök att ladda om sidan...\",\n\n // RegisterUser.ts\n registerUser_registerUser: \"Registrera/logga in\",\n registerUser_registerUserName: \"Namn\",\n registerUser_InfoAboutFree:\n \"Registrering är gratis, liksom att använda andras QR-koder. Du behöver vara inloggad för att köpa och hantera koder.\",\n registerUser_registerPhone: \"Telefonnummer\",\n registerUser_registerEmail: \"Epost\",\n registerUser_registerphoneNumMustStartWith: \"Telefonnummer måste börja med +46\",\n registerUser_registerUsernameNeeded:\n \"Fyll i ett användarnamn (notera att detta kommer att ses av alla som skannar dina koder)\",\n registerUser_sendCode: \"Skicka kod\",\n registerUser_code: \"Kod\",\n registerUser_privacyAgreement: \"Personuppgiftsavtal\",\n registerUser_privacyAgreementHere: \"Här \",\n registerUser_iAgreeTerms: \"Jag godkänner ovanstående QRit:s personuppgiftsavtal (dvs, standard GDPR-avtal).\",\n registerUser_iAgreeTermsEnd: \" (dvs, standard GDPR-avtal)\",\n registerUser_registerUserButton: \"Registrera/logga in\",\n registerUser_networkErrorTryAgain: \"Nätverksfel! Vänta lite och försök igen!\",\n registerUser_checkCodeTryAgain: \"Kontrollera registreringskoden och försök igen!\",\n registerUser_networkErrorTryAgain2: \"Nätverksfel! Vänta lite och försök igen!\",\n registerUser_goToPayment: \"Gå till betalning\",\n registerUser_smsTextCode: \"Här kommer din qrit.app aktiveringskod:\\n\",\n registerUser_organization: \"Organisation\",\n registerUser_meAsUser: \"Jag som person\",\n\n // BuyDigitalTags\n buyDigialTags_buyTags: \"Köp klisterlappar\",\n buyDigialTags_fillInEmail: \"Fyll i epost nedan så vi kan skicka dig qr-koderna\",\n buyDigialTags_email: \"Epost\",\n buyDigialTags_howHandlePersonaInfoHere: \"Här\",\n buyDigialTags_howHandlePersonaInfo: \"kan du läsa om hur vi hanterar dina personuppgifter\",\n\n // BuyPhysicalTags\n buyPhysicalTags_buyPhysicalTags: \"Köp färdiga klisterlappar\",\n buyPhysicalTags_fillInAddressInfo: \"Fyll i adressuppgifter nedan så vi kan skicka dig QR-koderna\",\n buyPhysicalTags_firstName: \"Förnamn\",\n buyPhysicalTags_lastName: \"Efternamn\",\n buyPhysicalTags_address: \"Adress\",\n buyPhysicalTags_zipCode: \"Postnummer\",\n buyPhysicalTags_city: \"Stad\",\n buyPhysicalTags_country: \"Land\",\n\n // listMessages\n listMessages_Messages: \"Meddelanden\",\n\n // BuyTags\n buyTags_headerBuyQRcodes: \"Köpa QR-koder\",\n buyTags_toUseMustHaveInfo:\n \"UNDER UTVECKLING (INTE MÖJLIGT ATT KÖPA) För att använda qrit.app måste du ha unika QR-koder att fästa på dina prylar. Här beställer du koder, antingen som för nerladdning av PDF för egen utskrift, eller färdiga klisterlappar. Alla koder gäller i ett år från tidpunkten för registreringen av den första koden i en beställning. Efter ett år kan abonemanget för koderna förlängas.\",\n buyTags_chooseHereToBuyDigitalPhysical:\n \"Välj här om du vill beställa QR-koderna digitalt eller färdiga klisterlappar\",\n //buyTags_ifYouBuyDigial: 'Köper du QR-koderna digitalt skapar vi en fil för utskrift (pdf). Utskriften kommer att se ut så här [länk till exempel-pdf]. Det går att köpa färdiga klisterlappar i detta format (Avery L4778) både i butik och online [länk]. Om du istället vill skriva ut på vanligt papper och sätta fast med tejp, så ska det också fungera bra. Digitala etiketter ingår i QR-kod kostnaden.',\n buyTags_ifYouBuyDigial1:\n \"Köper du QR-koderna digitalt skapar vi en fil för utskrift (pdf). Ett exempel kan laddas ner \",\n buyTags_ifYouBuyDigialPdfExampleHere: \"här\",\n buyTags_ifYouBuyDigialPdfExampleURL:\n \"https://www.amazon.com/Avery-L4778-20-Ultra-Resistant-Labels-Printers/dp/B0040SP0AS\",\n buyTags_ifYouBuyDigial2:\n \" (pdf). Det går att köpa färdiga klisterlappar i detta format (Avery L4778) både i butik och \",\n buyTags_ifYouBuyDigialAveryExampleURLHere: \"online\",\n buyTags_ifYouBuyDigialAveryExampleURL:\n \"https://www.amazon.com/Avery-L4778-20-Ultra-Resistant-Labels-Printers/dp/B0040SP0AS\",\n buyTags_ifYouBuyDigial3:\n \" för ett exempel).. Om du istället vill skriva ut på vanligt papper och sätta fast med tejp, så ska det också fungera bra. Digitala etiketter ingår i QR-kod kostnaden.\",\n buyTags_selectedTagEmpty: \"/buyTags_selectedTagEmptyEng.png\",\n buyTags_selectedTagLostFound: \"/buyTags_selectedTagLostFoundEng.png\",\n buyTags_selectedTagNumber: \"/buyTags_selectedTagLostNumberEng.png\",\n buyTags_unSelectedTagEmpty: \"/buyTags_UnSelectedTagEmptyEng.png\",\n buyTags_unSelectedTagLostFound: \"/buyTags_unSelectedTagLostFoundEng.png\",\n buyTags_unSelectedTagNumber: \"/buyTags_unSelectedTagLostNumberEng.png\",\n buyTags_ifYouBuyPhysical: \"Att köpa färdiga etiketter kostar \",\n buyTags_ifYouBuyPhysical2:\n \" (upp till 96 coder vid ett inköp). Om du köper dem färdiga kommer du i nästa steg att bli ombedd att skriva in (eller, om de redan finns, verifiera) din postadress. Efter att du betalat för coderna samt kostanden för skickandet så skriver vi ut dem och skickar dem till dig.\",\n buyTags_downloadPdf: \"Ladda hem PDF med klisterlappar (pris:\",\n buyTags_downloadPhysical: \"Köpa färdiga klisterlappar (pris:\",\n buyTags_qrCodeToX1: \"QR-koder till \",\n buyTags_qrCodeToX2: \" prylar (pris: \",\n buyTags_chooseNumCodes: \"Välj antal koder\",\n buyTags_ChoosePhysDigit: \"Välj fysiska eller digitala etiketter\",\n buyTags_ChooseTagLayout: \"Välj hur etiketterna ska se ut\",\n buyTags_Price: \"Pris: \",\n buyTags_emptyTag: \"Tom etikett\",\n buyTags: \"Tom (vit)\",\n buyTags_lostAndFound: \"Borttappat\",\n buyTags_numbered: \"Unikt id\",\n buyTags_numberedForeezer: \"Unikt id\",\n\n buyTagsPhysicalOnly_toUseMustHaveInfo:\n \"UNDER UTVECKLING (INTE MÖJLIGHT ATT KÖPA).För att använda QRit.app måste du ha unika QR-koder från oss. Här beställer du dem (som klistermärken med QR-koderna tryckta på dem). Koderna är giltiga i ett år från registreringen av det första märket i en köp. Efter ett år kan prenumerationen på märkena förnyas. Du behöver välja...\",\n buyTagsPhysicalOnly_chooseNumCodes: \"Välj antal koder du vill köpa\",\n buyTagsPhysicalOnly_selectedFormatSimple: \"/selectedSimplePhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_unSelectedFormatSimple: \"/unSelectedSimplePhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_selectedFormatRugged: \"/selectedRuggedPhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_unSelectedFormatRugged: \"/unSelectedRuggedPhysicalTagExampleImage.png\",\n buyTagsPhysicalOnly_simpleTagFormat: \"Enkel/tunnare\",\n buyTagsPhysicalOnly_ruggedTagFormatInfo: \"Robust/tjockare\",\n buyTagsPhysicalOnly_freeText: \"Fritext\",\n buyTagsPhysicalOnly_normalOrThickSticker:\n \"om du vill ha ett vanligt klistermärke eller en mer robust (tjockare). Det vanliga är billigare.\",\n buyTagsPhysicalOnly_typeOfTagYouWant: \"typ av märning du vill ha\",\n buyTagsPhysicalOnly_theNumberOfTagsYouWant: \"antal klistermärken du vill köpa\",\n\n // RegisterItemManually\n registerItemManually_infoHeader: \"Om manuell inmatning av kod\",\n registerItemManually_manualRegisteringItem: \"Manuell inmatning\",\n registerItemManually_manualRegisteringItemInfo1:\n 'Detta ska endast behövas om du inte kan skanna QR-koden. Kanske den är skadad eller den inte sitter tillräckligt \"platt\" för att kameran ska kunna skanna den.',\n registerItemManually_manualRegisteringItemInfo2:\n 'Skriv in koden som står till höger om QR-koden du vill registrera i \"Kod\"-fältet nedan. Övrigt är samma som vid registrering av en pryl när QR-kod skannas. Vi kontrollerar att koden är korrekt innan du kan gå vidare. Vid inmatning tillåts bara a-z och A-Z samt 0-9 som tecken.',\n registerItemManually_writeQRcode8Char: \"Skriv in den 8 tecken långa koden jämte QR-koden.\",\n registerItemManually_code: \"Kod\",\n registerItemManually_register: \"Fortsätt\",\n registerItemManually_codeDoesNotExist: \"Denna QR-kod finns inte. Kontrollera koden och försök igen\",\n\n // ItemFound\n itemFound_youFoundQR: \"Du har hittat en pryl med QRit-kod!\",\n itemFound_someoneMarkedItem:\n \"Någon har märkt prylen du skannat QR-koden på för att underlätta återlämnande om den tappas bort. Du har nu möjlighet att göra ägaren glad och se till att hen får tillbaka den!\",\n itemFound_ownersPhoneNumber: \"Ägarens telefonnummer\",\n itemFound_whatMessageDoYouWantToSend: \"Vilket meddelande vill du skicka till ägaren?\",\n itemFound_ownersOffersThisAmount: \"Ägaren erbjuder följande hittelön vid återlämnande\",\n itemFound_insteadSendMessageToOwner:\n \"Istället för att skicka ett meddelande till telefonnummret (om angivet) kan du här skicka ett meddelande till ägaren. Du kan t.ex. skriva var du lämnat prylen eller lagt den, så att ägaren kan hämta den själv. Du kan också skicka ditt eget telefonnummer.\",\n itemFound_sendMessage: \"Skicka meddelande\",\n itemFound_sendGPS: \"Skicka GPS-position\",\n itemFound_sendGPSInfo:\n \"Istället för att bara skicka ett meddelande så kan du välja att skicka en GPS-position till ägaren istället. Du kan, till exempel, lägga det du hittat på en viss plats, och klicka på knappen nedan. Då kommer du att få välja om du vill dela din GPS-position (telefonens). När du gjort det så kommer ägaren att ha möjlighet att hämta prylen där du lagt den, utan att du behöver göra något. Du kan välja att skicka positionen med eller utan meddelande. Om du vill skicka ett meddelande tillsammans med positionen, skriv in det ovan innan du klickar nedan.\",\n\n // ConfigRent\n configRent_choiceRentHeading: \"Val för pryluthyrning\",\n configRent_howMuchCostLbl: \"Hur mycket ska det kosta att hyra denna pryl\",\n configRent_enableChatLbl: \"Jag vill genom chat kunna diskutera pris\",\n configRent_allowTimeExtent: \"Jag vill att den som hyr ska kunna förlänga hyrtid\",\n configRent_enableRentQueue: \"Jag vill att man ska kunna ställa sig i kö för att hyra denna pryl\",\n\n // EditLostFound\n // TODO: Clean up\n editLostFound_settingsLost: \"Ändra info om borttappat\",\n editLostFound_settingsLostText:\n 'Genom att aktivera \"Upphittad\" funktionen för denna pryl kommer kan lämna tillbaka prylen till dig, och, om du valt att erbjuda hittelön också få veta hur mycket de kan förvänta sig få i hittelön. ',\n editLostFound_IwantFinderToSeePhoneNumber: \"Jag vill att den som hittar denna ska få se mitt telefonnummer\",\n editLostFound_IwantFinderAbleSendMess:\n \"Jag vill att den som hittar prylen anonymt ska kunna skicka meddelande till mig\",\n configLost_withThisSettingFinderShowPos:\n \"Med denna inställning kan den som hittat prylen skicka ett meddelande till dig om var hen lagt den eller lämnat in den, utan att röja sitt telefonnummer.\",\n editLostFound_IwantOfferLostPay: \"Jag vill erbjuda hittelön\",\n configLost_IwantOfferLostPayInfo:\n \"Om du väljer att erbjuda hittelön kommer den som skannar koden att få veta att du erbjuder hittelön. Du kan i nästa steg välja att även visa upphittaren hur mycket denna ska få.\",\n editLostFound_IwantFinderSeeHowMuchPay: \"Jag vill att upphittaren ska se hur mycket hen kommer att få i hittelön\",\n configLost_IwantFinderSeeHowMuchPayInfo:\n \"Om du kryssar för denna ruta kommer den som hittar prylen att få veta hur mycket du tänker ge i hittelön\",\n editLostFound_HowMuchLostPay: \"Hur mycket vill du erbjuda i hittelön för denna pryl?\",\n editLostFound_HowMuchLostPayInfo:\n \"Detta är den information upphittaren får om hittelön. Se till att du är beredd att betala detta till upphittaren.\",\n configLost_IwantEnablePosition: \"Jag vill slå på positionsangivelse?\",\n configLost_IwantEnablePositionInfo:\n 'Positionsangivelse innebär att den som hittar prylen kan välja att bara markera platsen där hen lämnat prylen, så att du kan hämta den där. Detta kan göra att det troligare att du får tillbaka prylen, då det ofta \"tar emot\" att ta tiden att försöka träffas för att lämnad tillbaka prylen.',\n editLostFound_infoHeader: \"Om ändring av borttappat\",\n editLostFound_info0: \"Här kan du ändra informationen om borttappat-koden\",\n editLostFound_info1: \"Namnet är bara namnet på koden. Det är det som blir synligt i listan\",\n editLostFound_info2:\n 'I fältet beskrivning skriver du in detaljer om saken du märkt. Var försiktig med att lägga med information som identifierar dig, om du vill att saken ska kunna vara \"anonym\"',\n editLostFound_info3:\n 'Om \"Jag vill att personnen....telefonnumber\" är iklickat kommer den som skannar koden att se ditt telefonnummer',\n editLostFound_info4:\n 'Om \"Upphittade kan skicka GPS-position\" är iklickat innebär att den som skannar koden kan välja att skicka GPS position, som han/hon kan skicka till dig. På så sätt kan upphittaren markera var saker finns, så att du kan hämta den',\n editLostFound_info5:\n 'Om \"Jag vill att... ska kunna skicka ett anonymt meddelande\" är iklickat innebär det att den som skannar koden kan skicka ett meddelande till dig anonymt vi QRit. Du får då ett SMS',\n editLostFound_info6:\n 'Om \"Jag vill erbjuda hittelön\" är iklickat inbär det att du kan ange en hittelön som den som återlämnar saken ska få från dig. Se till att du är beredd att betala!',\n editLostFound_info7:\n 'Om \"Jag vill att upphittaren ser hur stor hittelönen är\" är iklickad, så kommer den som skannar koden att se beloppet du erbjuder',\n editLostFound_info8: \"Du kan så ange hur stor hittelön du vill ge. Glöm inte att ange enhet (t.ex., kr, eller €)\",\n //editLostFound_info9: 'The \"I want the person... phone number\" means that whomever scans this code will see the phone number',\n editLostFound_info10:\n \"Om du slår på avancerade inställningar kommer du att kunna byta vilken typ av kod just denna kod ska vara\",\n editLostFound_info11:\n \"Om du klikcar på avregistrera så kommer koden att avregistreras. Dvs all information i koden kommer att tas bort (inklusive från alla listor) och du behöver registrera den igen för att använda den\",\n\n // ItemFooter\n itemFooter_unregisterItem: \"Avregistrera\",\n itemFooter_unregister: \"Avregistrera\",\n itemFooter_close: \"Stäng\",\n itemFooter_realyUnregister:\n \"Vill du verkligen avregistrera? När du avregistrerar en kod kommer all information tas bort och du måste skanna och lägga in information igen för att den ska vara användbar.\",\n itemFooter_ShowAdvSettings: \"Visa avancerade inställningar\",\n itemFooter_WarningDataLostRegisterNew:\n \"Varning! Om du ändra typ så kan du förloga informationen om denna kod. Det kommera att vara som om du registrerar den på nytt. Hitta information om kodtyper här [link].\",\n itemFooter_ChangeCodeType: \"Ändra kodtyp\",\n itemFooter_areYouReadyToLeavePage: \"Vill du verkligen lämna denna sida? Du har gjort ändringar som inte sparats.\",\n\n // ListItemHelp\n listItemHelp_Header: \"Var är mina prylar?\",\n listItemHelp_WhereIconHeader: \"Var är mina prylar?\",\n listItemHelp_WhereIconDescr: \"Figurerna till vänster talar om för dig var en pryl är. Följande beskriver dessa.\",\n listItemHelp_WhereIcon_Home:\n 'Denna pryl är \"hemma\". Det vill säga, ingen lånar eller hyr den just nu. Den borde vara tillgänglig för dig.',\n listItemHelp_WhereIcon_In:\n \"Du har lånat eller hyrt denna pryl från någon. Det vill säga, det är någon annans pryl som du har.\",\n listItemHelp_WhereIcon_Out:\n \"Någon har lånat eller hyrt denna pryl från dig. Det vill säga, det är din pryl som någon har lånat eller hyrt, och den är inte tillgänglig för dig nu.\",\n listItemHelp_WhereIcon_Freezer:\n \"Detta är en QR-kod som du kan återanvända. Typiskt används den för att hålla koll på vad som finns i t.ex. frysen.\",\n listItemHelp_OtherHeader: \"Övrigt\",\n listItemHelp_Descr: \"Du kan lägga till en beskrivning till varje pryl.\",\n listItemHelp_Image:\n 'Du kan lägga till en bild till varje pryl (utom för återanvändningskoder). Gå till \"Ändra\" för att lägga till eller byta bild. Notera att när du byter bild tas den andra bort direkt.',\n\n // Freezer\n freezer_DateHeader: \"Infrysningsdatum\",\n freezer_ExpDateHeader: \"Utgångsdatum (standard 90-dagar)\",\n freezer_SelectADateDotDot: \"Välj ett datum...\",\n freezer_SelectADate: \"Välj ett datum\",\n freezer_PersonCntHeader: \"För hur många\",\n freezer_10Persons: \"10 personer\",\n freezer_0Of1Persons: \"{0} av {1} person\",\n freezer_FoodTypeHeader: \"Typ av mat\",\n freezer_ContentTypeHeader: \"Innehåll\",\n freezer_AmountHeader: \"Mängd\",\n freezer_EditFoodChoiceList: \"Ändra matlista\",\n freezer_EditFoodTypeList: \"Ändra mattyper\",\n freezer_EditLocationList: \"Ändra platslistan\",\n freezer_Location: \"Plats\",\n freezer_PageHeaderEdit: \"Ändra\",\n\n // EditFreezer\n // TODO: översätt\n editFreezer_infoHeader: \"Om att ändra frysinfo\",\n editFreezer_info0: \"Det är här du ändrar informationen om det du vill frysa in\",\n editFreezer_info1: 'Typ av mat är kortnamnet på innehållet (t.ex., \"kött\" eller \"soppa\")',\n editFreezer_info2: 'Innehåll är information om vilken typ av innehåll det är (t.ex., \"huvudrätt\" eller \"råvara\"',\n editFreezer_info3: \"I fälter beskrivning skriver du in detaljerad information om innehållet\",\n editFreezer_info4: 'Utgångsdatum är det datum du sätter så att QRit ger dig en notifiering när den \"går ut\"',\n editFreezer_info5:\n \"Hur många personer är helt enkelt hur många personer detta är för. Du kan också skriva i detaljer eller mängden också eller istället\",\n editFreezer_info6: \"I fältet Mängd kan du skriva in vikt, volym eller någon annat värde, för att sedan välja enhet\",\n editFreezer_info7: \"Plats är var (i vilken frys) du lägger denna i\",\n editFreezer_info8:\n 'Notera att du kan välja att ändra (och lägga till) listorna för \"Typ av mat\", \"Innehåll\", och \"Plats\" genom att klicka på ändra',\n editFreezer_info9:\n \"Om du slår på avancerade inställningar kommer du att kunna byta vilken typ av kod just denna kod ska vara\",\n editFreezer_info10:\n \"Om du klikcar på avregistrera så kommer koden att avregistreras. Dvs all information i koden kommer att tas bort (inklusive från alla listor) och du behöver registrera den igen för att använda den\",\n\n // editTypeModal\n editTypeModal_Delete: \"Ta bort\",\n editTypeModal_Add: \"Lägg till\",\n\n // Helpers\n Helpers_Scanned: \"Skannad\",\n Helpers_Unregistered: \"Oregistrerad\",\n Helpers_Home: \"Hemma\", // ':Inte ,utlånad'\n Helpers_BorrowedByOther: \"Utlånad\",\n Helpers_BorrowedByMe: \"Lånad\",\n Helpers_OtherBorrowedByOther: \"Någon annans lånad av någon annan\",\n Helpers_AwaitingReturnAccept: \"Väntar på bekräftelse\",\n Helpers_Found: \"Hittad!\",\n Helpers_ManageCategories: \"Hantera val\",\n\n //listReuseItems\n listFreezerItems_Frozen: \"Infrusen\",\n listFreezerItems_Expiration: \"Bäst före\",\n\n // ListLostFoundItems\n listLostFoundItems_created: \"Skapad\",\n listLostFoundItems_photo: \"Foto\",\n listLostFoundItems_photoDescription: \"Foto/beskrivning\",\n\n // lostBoxes\n listBoxes_TagID: \"Lådnummer\",\n listBoxes_Content: \"Innehåll\",\n listBoxes_Location: \"Plats\",\n listBoxes_Room: \"Rum\",\n listBoxes_Stored: \"Lagrad\",\n listBoxes_Photo: \"Foto\",\n\n // CreateStoreDialog\n createStoreDialog_Create: \"Skapa\",\n createStoreDialog_CreateStoreQuestion: \"Skapa ny lista?\",\n createStoreDialog_StoreName: \"Namn\",\n\n //listStores\n ListStores_loading: \"Laddar\",\n\n // editStores\n editStores_allowResharingOfList: \"Tillåt vidaredelning av lista\",\n\n // joinStore\n joinStore_acceptJoinList: \"Acceptera att gå med i lista\",\n joinStore_rejectJoinList: \"Gå inte med i lista\",\n\n //ImagePanel\n imagePanel_mainImage: \"Visningsbild\",\n imagePanel_panelHeader: \"Visningsbild\",\n imagePanel_addNewImage: \"Lägg till ny bild\",\n imagePanel_removeImage: \"Ta bort bild\",\n imagePanel_private: \"Privat\",\n imagePanel_deleteImage: \"Ta bort bild\",\n imagePanel_deleteSelectedImages: \"Ta bort bild\",\n imagePanel_title: \"Vill du verkligen göra denna publik?\",\n imagePanel_text:\n \"Är du säker på att du vill göra denna bild publik. Om du gör det kan alla som skannar koden se bilden.\",\n imagePanel_disableInFuture: \"Stäng av denna varning i framtiden?\",\n\n // Viewstore\n viewStore_infoHeader: \"Om ändring av lista\",\n viewStore_info1: \"Det är här du kan ändra information och rättigheter för listor\",\n viewStore_info2:\n \"Namn är den text du kommer att se i översikten över listor. Det är också den text som andra kommer att se om de har tillgång till en lista. Tänk till när du väljer namn på en lista. Håll namnet kort men beskrivande \",\n viewStore_info3:\n \"Beskrivning är där du beskiver detaljerna om vad det är för lista (t.ex., innehåll och vad den är till för. Om du tänker dig att dela en lista (mer eller mindre) publikt så tänk till innan du lägger till någon information som identifierar dig, om du vill vara anonym\",\n viewStore_info4:\n \"TODO: FIX The checkbox 'Require code owner transfer when adding code to list' is about handling joint lists where one person or organisation will be the owner of both the list and the QR-code information about all items in that list. This may be if you in the family have one person that handles all tools, or at work, where your organisation should be the QRit-owner of all inforamtion added about work (e.g., books or equipment), regarless of who adds the item to the list. Use this option sparsely\",\n viewStore_info5:\n \"Du kan välja att ta bort en lista. Note dock att all information om listan då försvinner. Koderna finns kvar, men inte länken till listan\",\n viewStore_info7:\n \"Du kan lägga till användare och hantera deras användarrättigheter genom att klicka för de olika typerna av access\",\n viewStore_info8:\n \"'Administatör' betyder att användaren kan ta bort listan, ta bort och lägga till koder, samt allt annat en ägare kan göra\",\n viewStore_info9: \"'Ändra koder' innebär att användaren kan ta bort och lägga till koder från/till\",\n viewStore_info10:\n \"'Lista användare' innebär att användaren kan se vilka användare som har access och vilka rättigheter de har\",\n viewStore_info11: \"'Pending new user' means that ???? TBD\",\n viewStore_DeleteStore: \"Ta bort lista\",\n viewStore_Delete: \"Ta bort\",\n viewStore_DeleteStoreQuestion: \"Ta bort lista?\",\n viewStore_Cancel: \"Stäng\",\n viewStore_SelectCodes: \"Välj koder\",\n viewStore_MultiSelectControlled: \"Välj\",\n viewStore_CodesTitle: \"Koder\",\n viewStore_EditList: \"Ändra i lista\",\n viewStore_RequireCodesOwnerChangeInfo:\n \"Viktigt: Alla koder som läggs till listan kommer att ändra ägare till listägaren (detta beteende kan bara ändras när listan är tom).\",\n viewStore_RequireCodesOwnerChangeInfoNot:\n \"Viktigt: Användaren som lägger till en kod till lisan kommer även fortsättningsvis att vara ägare av den koden (detta beteende kan bara ändras när listan är tom).\",\n viewStore_RequireCodesOwnerChange:\n \"Om ikryssad kommer alla koder som läggs till listan kommer att ändra ägare till listägaren (detta beteende kan bara ändras när listan är tom).\",\n viewStore_AccessHandling: \"Hantera listaccess\",\n viewStore_Join: \"Begär åtkomst till listan\",\n viewStore_CannotReqestJoinList: \"Kan inte skicka förfrågan om att gå med i lista. Kontakta support.\",\n\n // Stores\n stores_CreateStore: \"Skapa lista\",\n stores_ManageLists: \"Hantera listor\",\n stores_infoHeader: \"Om vyn för hantering av listor\",\n stores_listBelongsToYou: \"Denna lista tillhör dig\",\n stores_listBelongsToSomeoneElse: \"Denna list tillhör någon annan\",\n stores_info1: \"Det är här du kan skapa och välja att hantera listor\",\n stores_info2:\n \"En lista är just en lista av saker, där du och andra har explicit 'lagt till' koder till en viss lista\",\n stores_info3:\n \"En ägare av en lista can ändra vem som har rätt att titta på, ändra och administrera en lista, till exempel så att det går att gemensamt inom familjen eller arbetsplatsen hantera och använda en gemensam lista\",\n stores_info4: \"På denna sida kan du skapa nya listor samt klicak på befittliga listor för att hantera dessa\",\n\n // UserSettings\n userSettings_infoHeader: \"Om användarinställningar\",\n userSettings_manageUserSettings: \"Användarinställningar\",\n userSettings_manageViewTabs: \"Hantera flikar\",\n userSettings_ChooseWhichTabsToShow: \"Välj vilka flikar som ska visas:\",\n userSettings_ChooseWhichListsToShow: \"Visa vilka listor some ska visas:\",\n userSettings_Stuff: \"Prylar\",\n userSettings_boxes: \"Lådor\",\n userSettings_lostFound: \"Borttappat\",\n userSettings_freezer: \"Frysen\",\n userSettings_messages: \"Meddelandekoder\",\n userSettings_listChoices: \"ListChoices\",\n userSettings_enableSMRecievingOnIncommingMessages: \"Tillåt mottagande av SMS när någon sänder meddelanden tlll dig\",\n userSettings_enableSMSRecieveLabel: \"Meddelanden\",\n userSettings_whereYouManageSettings: \"Här hanterar du dina inställningar för QRit.\",\n userSettings_theWarningIcon:\n \"Triangeln/varnings-märkningen innebär att om du lägger till en QRit-kod till denna lista så blir ägaren av listan också ägare av den koden. Detta är framför allt till för företag där flera sak kunna lägga till till företagets lista\",\n userSettings_chooseToDisableReception:\n \"Du kan välja bort att få SMS-meddelanden när någon skickar ett meddelande till någon av dina koder. Notera att det dock är bra att slå på det om du tappat bort något och väntar på att någon ska meddela dig att de hittat det.\",\n userSettings_UserContactInfo: \"Kontaktinformation\",\n userSettings_FeedbackSupport: \"Återkoppling och support\",\n userSettings_organizationAccount: \"Organisationskonto\",\n userSettings_organizationsYouAreAdminFor: \"Organisationer du är administratör för\",\n\n // accessChangeOwnerDialog.ts\n accessChangeOwnerDialog_ChangeOwner: \"Ändra ägare\",\n accessChangeOwnerDialog_SubText: \"Ändra ägare av listan\",\n\n // StoreContextualMenu\n storeContextualMenu_listProperties: \"Listans egenskaper\",\n storeContextualMenu_moreOptions: \"More options\",\n storeContextualMenu_listName: \"Listnamn\",\n storeContextualMenu_listOwner: \"Listägare\",\n\n // AccessAddUSerDialot\n accessAddUserDialog_addUser: \"Lägg till användare\",\n accessAddUserDialog_subText: \"Lägg till användare till listan\",\n\n // Accesstable\n accessTable_FaildAddUser: \"Misslyckades med att lägga till användare till lista\",\n accessTable_InviteUser: \"Bjud in användare\",\n accessTable_ChangeOwner: \"Ändra ägare\",\n accessTable_changeRole: \"Ändra roll\",\n accessTable_changeRoleInfo: \"Roll styr vilken åtkomst användaren har till listan.\",\n accessTable_roleAdmin: \"Administratör\",\n accessTable_roleMaintain: \"Hanterare\",\n accessTable_roleEditor: \"Redaktör\",\n accessTable_rolePending: \"Avvaktar\",\n accessTable_roleMember: \"Medlem\",\n accessTable_setRole: \"Sätt roll\",\n accessTable_role: \"Roll\",\n accessTable_command: \"Redigera\",\n accessTable_delete: \"Ta bort\",\n accessTable_removeUser: \"Ta bort användare\",\n accessTable_removeUserFromList: \"Ta bort användare från listan?\",\n\n // Chat messages\n messages_footerMessage: \"-- skickat från QRit.app\\n\",\n messages_messageTitle: \"Meddelande\",\n messages_send: \"Skicka\",\n messages_reply: \"Svara\",\n messages_replyTitle: \"Svara\",\n messages_replyText: \"Svar med...\",\n messages_delete: \"Radera\",\n messages_deleteTitle: \"Radera meddelande\",\n messages_deleteText: \"Är du säker på att du vill radera detta meddelande?\",\n\n //prices: [[12, 99], [24, 169], [36, 249], [48, 339]],\n //pricePhyical: 99,\n currency_prefix: \"\",\n currency_suffix: \"kr\",\n pricePhysicalDelviery: 99,\n skuList: [\n \"00000000-0001-0002-0003-000000000009\",\n \"00000000-0001-0002-0003-000000000010\",\n \"00000000-0001-0002-0003-000000000011\",\n \"00000000-0001-0002-0003-000000000012\",\n \"00000000-0001-0002-0003-000000000013\",\n \"00000000-0001-0002-0003-000000000014\",\n \"00000000-0001-0002-0003-000000000015\",\n \"00000000-0001-0002-0003-000000000016\",\n ],\n\n freezer_FoodChoiceList: [\n \"Kött\",\n \"Fisk\",\n \"Vegetariskt\",\n \"Soppa\",\n \"Pastasås\",\n \"Grönsaker\",\n \"Bröd\",\n \"Glass\",\n \"Frukt eller bär\",\n ],\n freezer_FoodTypeList: [\"Hel maträtt\", \"Huvudrätt\", \"Tillbehör\", \"Råvara\"],\n freezer_locationChoicesList: [\"Köksfrysen\", \"Frysboxen\"],\n freezer_AmountTypeList: [\"g\", \"bitar\", \"kg\", \"liter\", \"ml\"],\n\n EditBoxes_ContentTypeList: [\"Flytt\", \"Förvaring\"],\n EditBoxes_ContentList: [\"Barnkläder\", \"Minnen\"],\n //TODO: Make the content list dependent on content type.\n EditBoxes_SiteList: [\"Hemma\", \"Sommarstugan\"],\n EditBoxes_RoomList: [\"Köket\", \"Vinden\", \" Garaget\"],\n EditBoxes_CategoryList: [\"Okategoriserad\"],\n\n // EditBoxes_PriorityList: ['Hög','Normal','Låg'],\n // EditBoxes_BoxStateList: ['Märkt','Packar','Stängd','Lagrad','Packar upp'],\n EditBoxes_DefaultContentType: \"Förvaring\",\n EditBoxes_DefaultPriority: \"Normal\",\n EditBoxes_DefaultFragility: false,\n EditBoxes_DefaultLocation: \"Hemma\",\n EditBoxes_DefaultBoxState: \"Märkt\",\n EditBoxes_BoxStateList2: {\n tagged: \"Märkt\",\n packing: \"Packar\",\n closed: \"Stängd\",\n storedHome: \"Lagrad hemma\",\n storedAway: \"Lagrad borta\",\n unpacking: \"Packas upp\",\n unpacked: \"Uppackad\",\n },\n EditBoxes_PriorityList2: {\n low: \"Låg\",\n normal: \"Normal\",\n high: \"Hög\",\n },\n\n EditBoxes_BoxColorChoices: {\n green: \"Grön\",\n blue: \"Blå\",\n red: \"Röd\",\n black: \"Svart\",\n yellow: \"Gul\",\n pink: \"Rosa\",\n brown: \"Brun\",\n },\n\n EditStatic_ItemTypesList: [\"Böcker\", \"Verktyg\"],\n\n AccessTypes: {\n listAdmin: \"Administratör\",\n addUser: \"Lägg till användare\",\n editCodes: \"Redigera koder\",\n // \"addCode\",\n // \"deleteCode\",\n // \"viewCode\",\n // \"editCode\",\n // \"viewLimitCode\",\n // \"anonView\",\n // \"borrow\",\n // \"request\",\n // \"confirm\",\n // \"invite\",\n // \"approve\",\n listUser: \"Lista användare\",\n pendingUser: \"Väntar på bekräftelse\",\n },\n };\n}\n\nexport const strings = Language.strings;\n","import { CodeInfo, CodeProps, UserProps, UserInfo, CodePropsType, Roles } from \"./models\";\nimport Api from \"./api\";\nimport { strings } from \"./components/Strings\";\nimport { IComboBoxOption } from \"@fluentui/react\";\n\nexport class Helpers {\n static logout() {\n localStorage.removeItem(\"userId\");\n localStorage.removeItem(\"token\");\n }\n\n static isLoggedIn() {\n const userId = localStorage.getItem(\"userId\");\n return userId ? true : false;\n }\n\n static getCurrentUserId() {\n let userId = localStorage.getItem(\"userId\");\n if (!userId) {\n userId = \"00000000-0000-0000-0000-000000000000\";\n }\n\n return userId;\n }\n\n static stateToString(state: string, isMine: boolean) {\n switch (state) {\n case \"address_scanned\":\n return strings.Helpers_Scanned;\n case \"waiting_for_batch_scan\":\n return strings.Helpers_Unregistered;\n case \"registered\":\n return strings.Helpers_Home;\n case \"borrowed\":\n if (isMine) {\n return strings.Helpers_BorrowedByOther;\n } else {\n // TODO: if (this.isBorrowedByMe)\n return strings.Helpers_BorrowedByMe;\n }\n case \"pendRetAck\":\n return strings.Helpers_AwaitingReturnAccept;\n case \"found\":\n return strings.Helpers_Found;\n default:\n return state;\n }\n }\n\n static isBorrowed(item: CodeInfo) {\n return item.state === \"borrowed\";\n }\n\n static isHtml(item: CodeInfo) {\n return item.state === \"html\";\n }\n\n static isRegistered(item: CodeInfo) {\n return !this.isUnregistered(item);\n }\n\n static isMine(item: CodeInfo) {\n return item.userId === this.getCurrentUserId();\n }\n\n static isAwaitingOwnerReturnAccept(item: CodeInfo) {\n return item.state === \"pendRetAck\";\n }\n\n static isUnregistered(item: CodeInfo) {\n return item.state === \"unregistered\";\n }\n\n static isBorrowedByMe(item: CodeInfo) {\n return Helpers.isBorrowed(item) && item.borrowerUserId === this.getCurrentUserId();\n }\n\n // static isStaticCodeType(item: Partial) {\n // let isXType = true;\n // if (item) {\n // isXType = item.type == 'static';\n // }\n // return isXType;\n // }\n\n // static isFreezerCodeType(item: Partial) {\n // let isXType = true;\n // if (item) {\n // isXType = item.type == 'freezer';\n // }\n // return isXType;\n // }\n\n // static isLostFoundCodeType(item: Partial) {\n // let isXType = true;\n // if (item) {\n // isXType = item.type == 'lostFound';\n // }\n // return isXType;\n // }\n\n // static isHtmlCodeType(item: Partial) {\n // let isXType = true;\n // if (item) {\n // isXType = item.type == 'html';\n // }\n // return isXType;\n // }\n\n // static isBoxesCodeType(item: Partial) {\n // let isXType = true;\n // if (item) {\n // isXType = item.type == 'boxes';\n // }\n // return isXType;\n // }\n\n static getCodeType(item?: CodeInfo): CodePropsType {\n // if (item && item.properties && item.properties.type) {\n if (item) {\n return item.type;\n }\n\n return \"static\";\n }\n\n static getCodeTypeString = (item: CodeInfo) => {\n const codeType = Helpers.getCodeType(item);\n return codeType === \"static\"\n ? strings.home_items\n : codeType === \"freezer\"\n ? strings.home_FreezerReuse\n : codeType === \"lostFound\"\n ? strings.home_LostFound\n : codeType === \"html\"\n ? strings.home_Freetext\n : codeType === \"boxes\"\n ? strings.home_Boxes\n : \"\";\n };\n\n // TODO: Make this obsolete by using the useObserveCode everywhere instead.\n static getStatusIconFilename(item?: CodeInfo) {\n if (!item) {\n return \"/ICON_Freezer_64.png\";\n } // TODO: Change to \"default\" icon\n else if (item.type === \"freezer\") {\n return \"/ICON_Freezer_64.png\";\n } else if (Helpers.isRegistered(item)) {\n if (Helpers.isMine(item)) {\n return \"/ICON_Home_64.png\";\n } else {\n return \"/ICON_HomeAtOther_64.png\";\n }\n } else {\n if (Helpers.isBorrowed(item) && Helpers.isMine(item)) {\n return \"/ICON_MineBorrowedByOther_64.png\";\n } else if (Helpers.isAwaitingOwnerReturnAccept(item) && Helpers.isMine(item)) {\n return \"/ICON_MinePendingReturnAccept_64.png\";\n } else if (Helpers.isAwaitingOwnerReturnAccept(item) && !Helpers.isMine(item)) {\n return \"/ICON_OthersPendingReturnAccept_64.png\";\n } else {\n if (Helpers.isBorrowed(item) && !Helpers.isBorrowedByMe(item)) {\n return \"/ICON_OtherBorrowedByOther_64.png\";\n } else {\n // TODO: make explicit if for this case too, and add also when others have borrowed others\n return \"/ICON_OthersBorrowedByMe_64.png\";\n }\n }\n }\n }\n\n static getBoxStatusIconFilename(boxState: string) {\n switch (boxState) {\n case \"tagged\":\n return \"/BoxOnly_White_32x32.png\";\n case \"packing\":\n return \"/BoxArrowIn_WhiteGreenArrow_32x32.png\";\n case \"closed\":\n return \"/BoxOnlyClosed_White_32x32.png\";\n case \"storedHome\":\n return \"/BoxOnlyClosedStored_green_32x32.png\";\n case \"storedAway\":\n return \"/BoxOnlyClosedStored_red_32x32.png\";\n case \"unpacking\":\n return \"/BoxArrowOut_WhiteBlueArrow_32x32.png\";\n case \"unpacked\":\n return \"/BoxOnly_White_32x32.png\";\n default:\n return \"/BoxOnly_White_32x32.png\";\n }\n }\n\n static getStatusIconByName(iconType: string) {\n // TODO: Remove this from the code, use otehr instead\n if (iconType === \"home\") {\n return \"/ICON_Home_64.png\";\n } else {\n if (iconType === \"out\") {\n return \"/ICON_MineBorrowedByOther_64.png\";\n } else {\n if (iconType === \"in\") {\n return \"/ICON_OthersBorrowedByMe_64.png\";\n } else {\n if (iconType === \"iconTypeOtherByOther\") {\n return \"/ICON_OtherBorrowedByOther_64.png\";\n } else {\n return \"/ICON_Freezer_64.png\";\n }\n }\n }\n }\n }\n\n static async getBorrowerUserName(borrowerUserId: string) {\n if (borrowerUserId) return \"\";\n try {\n const userInfo = await Api.getUserInfo(borrowerUserId);\n return userInfo.username; // this.getFullName(userInfo);\n } catch {\n return \"\";\n }\n }\n static async getDaysUntilReturn(item: CodeInfo) {\n try {\n const code = await Api.getCode(item.id);\n //TODO: get the date when it was borrowed and how long it was borrowed for.\n return code.name;\n } catch {\n return \"\";\n }\n }\n\n static async getOwnerUserName(item: CodeInfo) {\n try {\n const userInfo = await Api.getUserInfo(item.userId);\n return userInfo.username; // this.getFullName(userInfo);\n } catch {\n return \"\";\n }\n }\n\n static async getOwnerPhone(item: CodeInfo) {\n // TODO: move getting of phone no to backend (safer)\n try {\n const userInfo = await Api.getUserInfo(item.userId);\n return userInfo.phone;\n } catch {\n return \"\";\n }\n }\n\n static async verifyCodeExists(qrCode: string) {\n try {\n const item = await Api.verifyCode(qrCode);\n const itemExist = item ? true : false;\n return itemExist;\n } catch {\n return false;\n }\n }\n\n static async verifyCodeUnregistered(qrCode: string) {\n try {\n const item = await Api.verifyCodeUnregistered(qrCode);\n const itemExist = item ? true : false;\n return itemExist;\n } catch {\n return false;\n }\n }\n\n static getFullName(user: UserInfo) {\n return user.firstName + \" \" + user.lastName;\n }\n\n static getDateDiffInDays(date1: Date, date2: Date) {\n var timeDiff = Math.abs(date2.getTime() - date1.getTime());\n var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));\n return diffDays;\n }\n\n static getDateWithDaysAdded(days: number) {\n const now = new Date();\n const date = new Date(now.getTime() + days * 1000 * 3600 * 24);\n return date;\n }\n\n static canShare() {\n return true;\n // // @ts-ignore\n // return navigator.share ? true : false;\n }\n\n static async share(id: string, title: string = \"QRit\", text: string = \"Jag vill dela min pryl med dig.\") {\n // @ts-ignore\n await navigator.share({\n title,\n text,\n url: \"https://qrit.app/\" + id,\n });\n }\n\n static async shareStore(id: string, title: string = \"QRit\", text: string = \"Jag vill dela min lista med dig.\") {\n // @ts-ignore\n await navigator.share({\n title,\n text,\n url: \"https://qrit.app/store/\" + id,\n });\n }\n\n static getFeatures() {\n const features = localStorage.getItem(\"features\");\n return features ? features.split(\",\") : [];\n }\n\n static hasFeature(feature: string) {\n return this.getFeatures().includes(feature);\n }\n\n static parsePropertiesJsonCode(propertiesJson: string) {\n let props = JSON.parse(propertiesJson) || {};\n if (props.date) {\n props.date = new Date(Date.parse(props.date));\n }\n\n if (props.expirationDate) {\n props.expirationDate = new Date(Date.parse(props.expirationDate));\n }\n\n return props as CodeProps;\n }\n\n static parsePropertiesJsonUser(propertiesJson: string) {\n let props = JSON.parse(propertiesJson) || {};\n return props as UserProps;\n }\n\n static insertNoChoiceOption(options: IComboBoxOption[]) {\n options.unshift({ key: \"-\", text: \"-\" });\n return options;\n }\n\n static getRole = (accessType: string): Roles => {\n const claims = accessType.split(\",\");\n if (claims.includes(\"listAdmin\")) return \"administrator\";\n if (claims.includes(\"addUser\")) return \"maintainer\";\n if (claims.includes(\"editCodes\")) return \"editor\";\n if (claims.includes(\"pendingUser\")) return \"pending\";\n return \"member\";\n };\n\n static postFeedbackMessage = async (message: string) => {\n try {\n await Api.postFeedbackMessage(message);\n } catch (e) {\n alert(\"Error posting feedback message: \" + e);\n }\n };\n\n static prepDropdownOptionsWithAddItem = (options: IComboBoxOption[], onAddClick: () => void) => {\n return [\n ...options,\n {\n key: \"+\",\n text: strings.Helpers_ManageCategories,\n data: {\n icon: \"Edit\",\n onClick: (e: any) => {\n e.stopPropagation();\n e.preventDefault();\n onAddClick();\n },\n },\n },\n ];\n };\n}\n","import { Helpers } from \"./helpers\";\nimport {\n CodeInfo,\n RegisterCodeResponse,\n UserInfo,\n Purchase,\n RegisterUserResponse,\n GetUserNameByPhoneResponse,\n Sku,\n Store,\n StoreInfo,\n ChatMessage,\n Files,\n CompanyInfo,\n} from \"./models\";\n\nexport default class Api {\n private static handleUnauthorized = () => {\n localStorage.clear();\n window.location.href = `/register?redirect=${encodeURIComponent(window.location.pathname)}`;\n };\n\n private static handleResponse = (response: Response) => {\n if (!response.ok) {\n if (response.status === 401) {\n Api.handleUnauthorized();\n }\n\n throw new Error(`${response.statusText}`);\n }\n };\n\n private static createHeader = () => {\n return [\n [\"Content-Type\", \"application/json; charset=utf-8\"],\n [\"Authorization\", `Bearer ${Api.getToken()}`],\n ] as [string, string][];\n };\n\n private static httpGet = async (url: string) => {\n const response = await fetch(url, {\n method: \"GET\",\n headers: Api.createHeader(),\n });\n Api.handleResponse(response);\n return response;\n };\n\n private static httpPost = async (url: string, payload: any) => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: Api.createHeader(),\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n throw new Error(`${response.statusText}`);\n }\n\n return await response.json();\n };\n\n private static httpPut = async (url: string, payload: any) => {\n const response = await fetch(url, {\n method: \"PUT\",\n headers: Api.createHeader(),\n body: JSON.stringify(payload),\n });\n\n return response.ok;\n };\n\n private static httpDelete = async (url: string) => {\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: Api.createHeader(),\n });\n\n return response.ok;\n };\n\n static getToken = () => {\n return localStorage.getItem(\"token\") || \"\";\n };\n\n static getCode = async (code: string) => {\n const response = await Api.httpGet(`/qrit/GetCode?code=${code}`);\n const json = await response.json();\n json.returnDate = new Date(Date.parse(json.returnDate));\n let codeInfo = json as CodeInfo;\n codeInfo.properties = Helpers.parsePropertiesJsonCode(codeInfo.propertiesJson);\n codeInfo.shortID = codeInfo.shortID || \"0\";\n return codeInfo;\n };\n\n static verifyCode = async (code: string) => {\n const response = await Api.httpGet(`/qrit/VerifyCode?code=${code}`);\n const ok = await response.json();\n return ok;\n };\n\n static verifyCodeUnregistered = async (code: string) => {\n const response = await Api.httpGet(`/qrit/VerifyCodeUnregistered?code=${code}`);\n const ok = await response.json();\n return ok;\n };\n\n static registerCode = async (code: string, name: string, description: string, properties: any, type: string) => {\n const response = await Api.httpGet(\n `/qrit/RegisterCode?code=${code}&name=${name}&description=${encodeURIComponent(\n description\n )}&properties=${encodeURIComponent(JSON.stringify(properties))}&type=${type}`\n );\n const json = await response.json();\n let resp = json as RegisterCodeResponse;\n return resp;\n };\n\n static updateCode = Api.registerCode; // TODO: change to PUT updateCode in backend API\n\n static reportMisuse = async (code: string, description: string) => {\n const response = await Api.httpGet(`/qrit/ReportMisuse?code=${code}}&name=${encodeURIComponent(description)}`);\n // TODO: What to return?\n const json = await response.json();\n let ok = json as boolean;\n return ok;\n };\n\n static registerLostCfg = async (\n code: string,\n userId: string,\n rentValue: string,\n showHowMuchPay: boolean,\n offerPay: boolean,\n possibleSendMess: boolean,\n showPhoneNumber: boolean\n ) => {\n await Api.httpGet(\n `/qrit/RegisterLostCfg?code=${code}&userId=${encodeURIComponent(\n userId\n )}&rentValue=${rentValue}&showHowMuchPay=${showHowMuchPay}&offerPay=${offerPay}&possibleSendMess=${possibleSendMess}&showPhoneNumber=${showPhoneNumber}`\n );\n };\n\n static registerRentCfg = async (\n code: string,\n userId: string,\n rentCostDescr: string,\n enableRenterChatRent: boolean,\n enableRenterExtensionRent: boolean,\n enableQueForItemRent: boolean\n ) => {\n await Api.httpGet(\n `/qrit/RegisterRentCfg?code=${code}&userId=${encodeURIComponent(\n userId\n )}&rentCostDescr=${rentCostDescr}&enableRenterChatRent=${enableRenterChatRent}&enableRenterExtensionRent=${enableRenterExtensionRent}&enableQueForItemRent=${enableQueForItemRent}`\n );\n };\n\n static getCodesForUser = async () => {\n const response = await Api.httpGet(`/qrit/GetCodesForUser`);\n const json = await response.json();\n let resp = json as CodeInfo[];\n // @ts-ignore\n resp.map((ci) => (ci.returnDate = new Date(Date.parse(ci.returnDate))));\n resp.map((ci) => (ci.properties = Helpers.parsePropertiesJsonCode(ci.propertiesJson)));\n return resp;\n };\n\n static requestRegistrationCode = async (phone: string, message: string, email: string) => {\n const response = await Api.httpGet(\n `/qrit/RequestRegistrationCode?phone=${encodeURIComponent(phone)}&message=${encodeURIComponent(\n message\n )}&email=${encodeURIComponent(email)}`\n );\n const json = await response.json();\n let companies = json as CompanyInfo[];\n return companies;\n };\n\n static getPurchases = async (userId: string) => {\n const response = await Api.httpGet(`/qrit/GetPurchases?userId=${userId}`);\n const json = await response.json();\n let purchases = json as Purchase[];\n return purchases;\n };\n\n static getSkus = async () => {\n const response = await Api.httpGet(`/qrit/GetSkus`);\n const json = await response.json();\n let skus = json as Sku[];\n return skus;\n };\n\n static registerPurchase = async (\n userId: string,\n buyDigital: boolean,\n tagSent: Date,\n stateOrAction: string,\n paymentCompleted: boolean\n ) => {\n await Api.httpGet(\n `/qrit/RegisterPurchase?userId=${userId}&buyDigital=${buyDigital}&tagSent=${tagSent}&stateOrAction=${stateOrAction}&paymentCompleted=${paymentCompleted}`\n );\n };\n\n static getUserInfo = async (userID: string, code: string = \"\") => {\n const response = await Api.httpGet(`/qrit/GetUserInfo?userId=${userID}&code=${code}`);\n const json = await response.json();\n let userInfo = json as UserInfo;\n userInfo.properties = JSON.parse(json.propertiesJson) || {\n freezerFoodChoiceListJson: \"[]\",\n freezerFoodTypeListJson: \"[]\",\n };\n return userInfo;\n };\n\n // static getUserProperties = async () => {\n // const response = await Api.httpGet('/qrit/Properties');\n // const propertiesJson = await response.text();\n // if (!propertiesJson || propertiesJson === '') {\n // return { freezerFoodChoiceListJson: '[]', freezerFoodTypeListJson: '[]' } as UserProps;\n // } else {\n // return JSON.parse(propertiesJson) as UserProps;\n // }\n // }\n\n // static setUserProperty = async (props: Partial) => {\n // let properties = Api.getUserProperties();\n // properties = { ...properties, ...props };\n // const ok = await Api.httpPut(`/qrit/Properties`, { propertiesJson: JSON.stringify(properties) });\n // return ok;\n // }\n\n static setProperty = async (domain: string, key: string, value: string) => {\n let ok = await Api.httpPut(`/qrit/Properties/${domain}.${key}`, {\n propertyValue: value,\n });\n if (!ok) {\n await Api.httpPost(`/qrit/Properties`, {\n id: `${domain}.${key}`,\n propertyValue: value,\n });\n }\n };\n\n static getProperty = async (domain: string, key: string) => {\n const response = await Api.httpGet(`/qrit/Properties/${domain}.${key}`);\n const property = await response.json();\n return property.propertyValue;\n };\n\n static getProperties = async (domain: string) => {\n const response = await Api.httpGet(`/qrit/Properties`);\n const properties: any = await response.json();\n return (properties.value || []).filter((p: any) => p.propertyDomain === domain);\n };\n\n static getPropertiesDict = async (domain: string) => {\n const response = await Api.httpGet(`/qrit/Properties`);\n let properties: any = await response.json();\n properties = (properties.value || []).filter((p: any) => p.propertyDomain === domain);\n let props: { [key: string]: any } = {};\n properties.map(\n (p: { propertyKey: string; propertyValue: string }) => (props[p.propertyKey] = JSON.parse(p.propertyValue))\n );\n return props;\n };\n\n static registerUser = async (\n phone: string,\n email: string,\n username: string,\n registrationCode: string,\n companyPhone = \"\"\n ) => {\n const response = await Api.httpGet(\n `/qrit/RegisterUser?phone=${encodeURIComponent(\n phone\n )}&name=${username}&email=${email}®istrationCode=${registrationCode}&companyPhone=${encodeURIComponent(\n companyPhone\n )}`\n );\n const json = await response.json();\n const registerUserResponse = json as RegisterUserResponse;\n return registerUserResponse;\n };\n\n static getUsernameByPhone = async (phone: string) => {\n const response = await Api.httpGet(`/qrit/GetUsernameByPhone?phone=${encodeURIComponent(phone)}`);\n const json = await response.json();\n const registerUserResponse = json as GetUserNameByPhoneResponse;\n return registerUserResponse.username;\n };\n\n static registerBuyerInfo = async (\n firstName: string,\n lastName: string,\n address: string,\n zipCode: string,\n city: string,\n country: string,\n email: string\n ) => {\n await Api.httpGet(\n `/qrit/RegisterBuyerInfo?firstName=${firstName}&lastName=${lastName}&address=${address}&zipCode=${zipCode}&city=${city}&country=${country}&email=${email}`\n );\n };\n\n static registerBuyerEmail = async (email: string) => {\n await Api.httpGet(`/qrit/RegisterBuyerEmail?email=${email}`);\n };\n\n static returnCode = async (code: string) => {\n await Api.httpGet(`/qrit/returnCode?code=${code}`);\n };\n\n static acceptPendingReturn = async (code: string) => {\n await Api.httpGet(`/qrit/acceptPendingReturn?code=${code}`);\n };\n\n static unregisterCode = async (code: string) => {\n await Api.httpGet(`/qrit/unregisterCode?code=${code}`);\n };\n\n static resetCode = async (code: string) => {\n await Api.httpGet(`/qrit/ResetCode?code=${code}`);\n };\n\n static registerBorrowing = async (id: string, borrowerUserID: string, returnDate: Date) => {\n await Api.httpGet(\n `/qrit/RegisterBorrowing?id=${id}&borrowerUserID=${borrowerUserID}&returnDate=${encodeURIComponent(\n returnDate.toISOString()\n )}`\n );\n };\n\n static async uploadFile(filename: string, formData: FormData) {\n const response = await fetch(`/qrit/UploadFile?filename=${encodeURIComponent(filename)}`, {\n method: \"POST\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n body: formData,\n });\n Api.handleResponse(response); // TODO: needed?\n }\n\n static async uploadFile2(\n filename: string,\n code: string,\n contentType: string,\n formData: FormData,\n metadataJson: string\n ) {\n const response = await fetch(\n `/qrit/UploadFile2?filename=${encodeURIComponent(filename)}&code=${code}&contentType=${encodeURIComponent(\n contentType\n )}&metadataJson=${encodeURIComponent(metadataJson)}`,\n {\n method: \"POST\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n body: formData,\n }\n );\n Api.handleResponse(response);\n const fileId = await response.json();\n return fileId;\n }\n\n // static async getImageUrl(code: string) {\n // const response = await fetch(`/qrit/DownloadFile?code=${code}`, {\n // method: \"GET\",\n // headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n // });\n\n // if (!response.ok) {\n // if (response.status === 401) {\n // // Unauthorized, clear the token?\n // // token = '';\n // }\n\n // // throw new Error(`${response.statusText}`);\n // return \"\";\n // }\n\n // const blob = await response.blob();\n // const url = window.URL.createObjectURL(blob);\n // return url;\n // }\n\n static getFileUrl2 = (fileId: string) => `/qrit/DownloadFile2?fileId=${fileId}`;\n\n static async getFileUrl(fileId: string) {\n const response = await fetch(`/qrit/DownloadFile2?fileId=${fileId}`, {\n method: \"GET\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return \"\";\n }\n\n const blob = await response.blob();\n const url = window.URL.createObjectURL(blob);\n return url;\n }\n\n static async getFiles(code: string) {\n const response = await fetch(`/qrit/GetFiles?code=${code}`, {\n method: \"GET\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return [];\n }\n\n const files = await response.json();\n return files as Files[];\n }\n\n static async getFileInfo(fileId: string) {\n const response = await fetch(`/qrit/GetFileInfo?fileId=${fileId}`, {\n method: \"GET\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return null;\n }\n\n const file = await response.json();\n return file as Files;\n }\n\n static async updateFile(file: Files) {\n const response = await fetch(`/qrit/UpdateFile`, {\n method: \"PUT\",\n headers: [\n [\"Authorization\", `Bearer ${Api.getToken()}`],\n [\"Content-Type\", \"application/json; charset=utf-8\"],\n ],\n body: JSON.stringify(file),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return false;\n }\n\n return true;\n }\n\n static async deleteFile(fileId: string) {\n const response = await fetch(`/qrit/DeleteFile?fileId=${fileId}`, {\n method: \"DELETE\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return false;\n }\n\n return true;\n }\n\n static getStores = async () => {\n const response = await fetch(`/qrit/Stores`, {\n method: \"GET\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return [];\n }\n\n const stores = await response.json();\n return stores.value as Store[];\n };\n\n static getStore = async (storeId: string) => {\n const response = await fetch(`/qrit/Stores/${storeId}?$expand=Codes,Access`, {\n method: \"GET\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n throw new Error(`${response.statusText}`);\n // return [];\n }\n\n const store = (await response.json()) as Store;\n store.codes.map((ci) => (ci.properties = Helpers.parsePropertiesJsonCode(ci.propertiesJson)));\n\n if (store.access) {\n // TODO: fill username in the backend?\n await Promise.all(store.access.map(async (a) => (a.username = (await Api.getUserInfo(a.userId)).username)));\n // store.access.forEach(async (a) => {\n // a.username = (await Api.getUserInfo(a.userId)).username;\n // });\n }\n\n return store;\n };\n\n static createStore = async (store: Store) => {\n const result = await Api.httpPost(`/qrit/Stores`, store);\n return result as Store;\n };\n\n static removeStore = async (storeId: string) => {\n const response = await fetch(`/qrit/Stores/${storeId}`, {\n method: \"DELETE\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return false;\n }\n\n return true;\n };\n\n static updateStore = async (store: Store) => {\n const response = await fetch(`/qrit/Stores/${store.id}`, {\n method: \"PUT\",\n headers: Api.createHeader(),\n body: JSON.stringify(store),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return false;\n }\n\n return true;\n };\n\n static getStoresByCode = async (code: string) => {\n const response = await fetch(`/qrit/GetStoresByCode?code=${code}`, {\n method: \"GET\",\n headers: [[\"Authorization\", `Bearer ${Api.getToken()}`]],\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n // Unauthorized, clear the token?\n // token = '';\n }\n\n // throw new Error(`${response.statusText}`);\n return [];\n }\n\n const stores = await response.json();\n return stores as StoreInfo[];\n };\n\n static updateCodeStores = async (code: string, storeIds: string[]) => {\n return Api.httpPut(`/qrit/UpdateCodeStores?code=${code}`, storeIds);\n };\n\n static postMessage = async (message: ChatMessage) => {\n const result = await Api.httpPost(`/qrit/ChatMessage`, message);\n return result as ChatMessage;\n };\n\n static getMessages = async (userId?: string, codeId?: string) => {\n let filter = \"\";\n\n if (userId) {\n filter += `userId%20eq%20'${userId}'`;\n }\n\n if (codeId) {\n if (filter.length > 0) {\n filter += \"%20and%20\";\n }\n filter += `codeId%20eq%20'${codeId}'`;\n }\n\n if (filter.length > 0) {\n filter = `?$filter=${filter}`;\n }\n\n if (filter.length === 0) {\n return [];\n }\n\n const response = await Api.httpGet(`/qrit/ChatMessage${filter}&$expand=User`);\n const json = await response.json();\n return json.value as ChatMessage[];\n };\n\n static deleteChatMessage = async (chatMessageId: string) => {\n return Api.httpDelete(`/qrit/ChatMessage/${chatMessageId}`);\n };\n\n static canChangeOwner = async (code: string) => {\n const response = await Api.httpGet(`/qrit/CanChangeOwner?code=${code}`);\n const text = await response.text();\n return text === \"true\";\n };\n\n static changeOwner = async (code: string, newOwnerUserId: string) => {\n return Api.httpGet(`/qrit/ChangeOwner?code=${code}&newOwnerUserId=${newOwnerUserId}`);\n };\n\n static changeStoreOwner = async (storeId: string, newOwnerUserId: string) => {\n return Api.httpGet(`/qrit/ChangeStoreOwner?storeId=${storeId}&newOwnerUserId=${newOwnerUserId}`);\n };\n\n static addUserToStore = async (phone: string, storeId: string) => {\n const response = await Api.httpGet(`/qrit/AddUserToStore?phone=${encodeURIComponent(phone)}&storeId=${storeId}`);\n return response.ok;\n };\n\n static canDoStoreOperation = async (storeId: string, operation: string) => {\n const response = await Api.httpGet(`/qrit/CanDoStoreOperation?storeId=${storeId}&operation=${operation}`);\n const text = await response.text();\n return text === \"true\";\n };\n\n static updateStoreAccess = async (accessId: string, storeId: string, userId: string, accessType: string) => {\n return Api.httpPut(`/qrit/Access/${accessId}`, {\n accessId,\n accessType: accessType === \"\" ? \"none\" : accessType,\n storeId,\n userId,\n });\n };\n\n static deleteStoreAccess = async (accessId: string) => {\n return await Api.httpDelete(`/qrit/Access/${accessId}`);\n };\n\n static requestJoinList = async (storeId: string) => {\n const response = await Api.httpGet(`/qrit/RequestJoinList?storeId=${storeId}`);\n const text = await response.text();\n return text === \"true\";\n };\n\n static hasCodeEditAccess = async (code: string) => {\n const response = await Api.httpGet(`/qrit/HasCodeEditAccess?code=${code}`);\n const text = await response.text();\n return text === \"true\";\n };\n\n static getBookDetails = async (isbn: string) => {\n const response = await fetch(\n `https://www.googleapis.com/books/v1/volumes?q=isbn:${isbn}&key=${\"AIzaSyDv8jDPfp7qzWBIa-FGaanwYPIbeW3GEC8\"}`\n );\n const info = await response.json();\n return info;\n };\n\n static postFeedbackMessage = async (text: string) => {\n const response = await Api.httpGet(`/qrit/PostFeedbackItem?text=${encodeURIComponent(text)}`);\n const id = await response.text();\n return id;\n };\n\n static sendStoreInvite = async (storeId: string) => {\n // TODO: make call to API\n return true;\n };\n\n static handleStoreInvite = async (inviteId: string, command: \"reject\" | \"accept\") => {\n // TODO: call API\n return \"storeId\"; // on accept\n };\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Image, mergeStyleSets, ImageFit, Stack, getTheme } from \"@fluentui/react\";\nimport Api from \"../api\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nconst theme = getTheme();\nconst styles = mergeStyleSets({\n itemImage: {\n marginBottom: 6,\n width: \"90vw\",\n // maxWidth: \"200px\",\n height: \"40%\",\n backgroundColor: \"transparent\", // theme.semanticColors.buttonBackgroundDisabled\n },\n itemImageSmall: {\n marginBottom: 6,\n // width: \"40vw\",\n maxWidth: \"200px\",\n minHeight: \"20%\",\n height: \"100%\",\n backgroundColor: \"transparent\", // theme.semanticColors.buttonBackgroundDisabled\n },\n shimmerImage: {\n marginBottom: 6,\n width: 200,\n height: 100,\n backgroundColor: theme.semanticColors.buttonBackgroundDisabled,\n },\n});\n\nexport const ItemImage = (props: { id?: string; isSmall?: boolean }) => {\n const [url, setUrl] = useState(\"\");\n const { id, isSmall } = props;\n\n useEffect(() => {\n if (id) {\n Api.getFileUrl(id)\n .then((url) => setUrl(url))\n .catch(() => {});\n }\n }, [id]);\n\n return (\n
\n {id && url && isSmall === true && (\n \"image\"\n )}\n {id && url && !(isSmall === true) && (\n \"image\"\n )}\n {!id && }\n {!url && id &&

{strings.itemImage_NoImage}

}\n
\n );\n};\n","import React from \"react\";\nimport { FocusZone, IRectangle, List, Stack } from \"@fluentui/react\";\nimport { ParagraphText, ParagraphTitle } from \".\";\nimport { CodeInfo } from \"../models\";\nimport { ItemImage } from \"./ItemImage\";\n\ninterface ItemGridViewProps {\n items: CodeInfo[];\n onItemInvoked: (item?: CodeInfo) => void;\n}\n\nexport const ItemGridView = ({ items, onItemInvoked }: ItemGridViewProps) => {\n const ROWS_PER_PAGE = 3;\n const MAX_ROW_HEIGHT = 250;\n const columnCount = React.useRef(0);\n const rowHeight = React.useRef(0);\n\n const getPageHeight = (): number => {\n return rowHeight.current * ROWS_PER_PAGE;\n };\n\n const getItemCountForPage = (itemIndex?: number, visibleRect?: IRectangle) => {\n if (itemIndex === 0 && visibleRect) {\n columnCount.current = Math.ceil(visibleRect.width / MAX_ROW_HEIGHT);\n rowHeight.current = Math.floor(visibleRect.width / columnCount.current);\n }\n return columnCount.current * ROWS_PER_PAGE;\n };\n\n return (\n \n {\n if (!item) return null;\n const id = item.properties ? item.properties[\"defaultImageId\"] || null : null;\n return (\n onItemInvoked(item)}\n // style={{ borderWidth: 1, width: \"30vw\", position: \"relative\", float: \"left\", height: \"30vw\" }}\n >\n
\n {!id && item.type === \"static\" && (\n \n {item.name && {item.name}}\n {item.description && {item.description}}\n \n )}\n {!id && item.type === \"boxes\" && (\n \n {item.shortID && item.name && (\n {item.shortID + \" - \" + item.name}\n )}\n {item.shortID && !item.name && {item.shortID}}\n {!item.shortID && item.name && {item.name}}\n {item.description && {item.description}}\n \n )}\n {!id && item.type === \"lostFound\" && (\n \n {item.name && {item.name}}\n {item.description && {item.description}}\n \n )}\n {item.type === \"freezer\" && (\n \n \n {item.shortID}\n \n {item.properties.foodType && item.properties.contentType && (\n {item.properties.contentType + \" - \" + item.properties.foodType}\n )}\n {item.properties.foodType && !item.properties.contentType && (\n {item.properties.foodType}\n )}\n {!item.properties.foodType && item.properties.contentType && (\n {item.properties.contentType}\n )}\n {item.description && {item.description}}\n \n )}\n {item.type === \"html\" && (\n \n {item.description && {item.description}}\n \n )}\n {id && item.type === \"static\" && (\n \n \n \n )}\n {id && item.type === \"boxes\" && (\n \n \n {item.shortID}\n \n \n \n )}\n {id && item.type === \"lostFound\" && (\n \n \n \n )}\n
\n \n );\n }, [])}\n getItemCountForPage={getItemCountForPage}\n getPageHeight={getPageHeight}\n renderedWindowsAhead={4}\n />\n
\n );\n};\n","import React from \"react\";\nimport { DetailsListLayoutMode, IColumn, SelectionMode, ShimmeredDetailsList } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { Language } from \"./Strings\";\n\ninterface ItemListViewProps {\n items: CodeInfo[];\n busy: boolean;\n columns: IColumn[];\n onItemInvoked: (item?: CodeInfo) => void;\n}\n\nexport const ItemListView = ({ items, busy, columns, onItemInvoked }: ItemListViewProps) => {\n const strings = Language.strings;\n return (\n \n );\n};\n","import { Stack, FocusZone, IColumn } from \"@fluentui/react\";\nimport React from \"react\";\nimport { CodeInfo } from \"../models\";\nimport { ItemGridView } from \"./ItemGridView\";\nimport { ItemListView } from \"./ItemListView\";\n\ninterface ItemsViewProps {\n busy: boolean;\n viewList: boolean;\n items: CodeInfo[];\n columns: IColumn[];\n onItemInvoked: (item?: CodeInfo) => void;\n}\n\nexport const ItemsView = ({ busy, items, columns, viewList, onItemInvoked }: ItemsViewProps) => (\n \n \n \n {viewList && }\n {!viewList && }\n \n \n \n);\n","import React from \"react\";\nimport { IColumn } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { mergeStyleSets } from \"@fluentui/react/lib/Styling\";\nimport { Helpers } from \"../helpers\";\nimport { ItemImage } from \"./ItemImage\";\nimport { Language } from \"./Strings\";\nimport { ItemsView } from \"./ItemsView\";\n\nconst strings = Language.strings;\n\nconst classNames = mergeStyleSets({\n fileIconHeaderIcon: {\n padding: 0,\n fontSize: \"16px\",\n },\n fileIconCell: {\n textAlign: \"center\",\n selectors: {\n \"&:before\": {\n content: \".\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n height: \"100%\",\n width: \"0px\",\n visibility: \"hidden\",\n },\n },\n },\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n controlWrapper: {\n display: \"flex\",\n flexWrap: \"wrap\",\n },\n exampleToggle: {\n display: \"inline-block\",\n marginBottom: \"10px\",\n marginRight: \"30px\",\n },\n selectionDetails: {\n marginBottom: \"20px\",\n },\n});\n\ninterface ListItemsProps {\n items: CodeInfo[];\n onSelected: (code: string) => void;\n busy: boolean;\n viewDetailedList: boolean;\n}\n\nconst columns: IColumn[] = [\n {\n key: \"column1\",\n name: \"File Type\",\n className: classNames.fileIconCell,\n iconClassName: classNames.fileIconHeaderIcon,\n ariaLabel: \"Column operations for File type, Press to sort on File type\",\n // iconName: 'Page',\n isIconOnly: true,\n fieldName: \"name\",\n minWidth: 24,\n maxWidth: 24,\n onRender: (item: CodeInfo) => {\n const statusIconFilename = Helpers.getStatusIconFilename(item);\n return \"State\";\n },\n },\n {\n key: \"column2\",\n name: strings.generic_name,\n fieldName: \"name\",\n minWidth: 80,\n maxWidth: 110,\n isRowHeader: true,\n isResizable: true,\n // isSorted: true,\n // isSortedDescending: false,\n sortAscendingAriaLabel: \"Sorted A to Z\",\n sortDescendingAriaLabel: \"Sorted Z to A\",\n // onColumnClick: this._onColumnClick,\n data: \"string\",\n isPadded: true,\n },\n // {\n // key: 'column3',\n // name: 'Återlämnas om',\n // fieldName: 'returnDate',\n // minWidth: 40,\n // maxWidth: 90,\n // isResizable: true,\n // isCollapsible: false,\n // data: 'string',\n // onRender: (item: CodeInfo) => {\n // return {this._renderReturnDate(item)};\n // }\n // },\n // {\n // key: 'column3',\n // name: 'Skapad',\n // fieldName: 'createdAt',\n // minWidth: 70,\n // maxWidth: 90,\n // isResizable: true,\n // // onColumnClick: this._onColumnClick,\n // data: 'number',\n // // onRender: (item: CodeInfo) => {\n // // return {item.dateModified};\n // // },\n // isPadded: true\n // },\n // {\n // key: 'column3',\n // name: strings.listItems_state,\n // fieldName: 'state',\n // minWidth: 120,\n // maxWidth: 180,\n // isResizable: true,\n // isCollapsible: false,\n // data: 'string',\n // // onColumnClick: this._onColumnClick,\n // onRender: (item: CodeInfo) => {\n // return {this._renderState(item)};\n // }\n // },\n {\n key: \"column4\",\n name: strings.generic_description,\n fieldName: \"description\",\n minWidth: 120,\n maxWidth: 200,\n isResizable: true,\n isCollapsible: true,\n data: \"string\",\n // onColumnClick: this._onColumnClick,\n // onRender: (item: CodeInfo) => {\n // return {item.modifiedBy};\n // },\n isPadded: true,\n },\n {\n key: \"column5\",\n name: strings.listItems_photo,\n fieldName: \"description\",\n minWidth: 120,\n maxWidth: 200,\n // isResizable: true,\n // isCollapsible: true,\n // data: 'string',\n // onColumnClick: this._onColumnClick,\n onRender: (item: CodeInfo) => {\n if (item.type !== \"freezer\") {\n return ;\n } else {\n return <>;\n }\n },\n isPadded: true,\n },\n];\n\nexport const ListItems = (props: ListItemsProps) => {\n const { items, busy, viewDetailedList } = props;\n const onItemInvoked = (item?: CodeInfo) => {\n if (item) {\n props.onSelected(item.id);\n }\n };\n\n return (\n \n );\n};\n","import { useEffect, useState } from \"react\";\nimport { createTheme } from \"@fluentui/react\";\n\nconst myTheme = createTheme({\n palette: {\n themePrimary: \"#5d7d56\",\n themeLighterAlt: \"#f7faf7\",\n themeLighter: \"#e1eadf\",\n themeLight: \"#c8d8c4\",\n themeTertiary: \"#96b190\",\n themeSecondary: \"#6d8d66\",\n themeDarkAlt: \"#54704e\",\n themeDark: \"#475f42\",\n themeDarker: \"#344630\",\n neutralLighterAlt: \"#faf9f8\",\n neutralLighter: \"#f3f2f1\",\n neutralLight: \"#edebe9\",\n neutralQuaternaryAlt: \"#e1dfdd\",\n neutralQuaternary: \"#d0d0d0\",\n neutralTertiaryAlt: \"#c8c6c4\",\n neutralTertiary: \"#a19f9d\",\n neutralSecondary: \"#605e5c\",\n neutralPrimaryAlt: \"#3b3a39\",\n neutralPrimary: \"#323130\",\n neutralDark: \"#201f1e\",\n black: \"#000000\",\n white: \"#ffffff\",\n },\n});\n\nconst shugardTheme = createTheme({\n palette: {\n themePrimary: \"#D1003B\", // '#5d7d56', Change color scheme to: H,S,L: 343, 100, 41 ; D1003B; R,G,B: 207,0,59;\n themeLighterAlt: \"#f7faf7\",\n themeLighter: \"#e1eadf\",\n themeLight: \"#c8d8c4\",\n themeTertiary: \"#96b190\",\n themeSecondary: \"#6d8d66\",\n themeDarkAlt: \"#54704e\",\n themeDark: \"#475f42\",\n themeDarker: \"#344630\",\n neutralLighterAlt: \"#faf9f8\",\n neutralLighter: \"#f3f2f1\",\n neutralLight: \"#edebe9\",\n neutralQuaternaryAlt: \"#e1dfdd\",\n neutralQuaternary: \"#d0d0d0\",\n neutralTertiaryAlt: \"#c8c6c4\",\n neutralTertiary: \"#a19f9d\",\n neutralSecondary: \"#605e5c\",\n neutralPrimaryAlt: \"#3b3a39\",\n neutralPrimary: \"#323130\",\n neutralDark: \"#201f1e\",\n black: \"#000000\",\n white: \"#ffffff\",\n },\n});\n\nexport type Origin = \"qrit\" | \"shuregard\";\nexport const useTheme = (initialOrigin: Origin = \"qrit\") => {\n const [showStaticCodes, setShowStaticCodes] = useState(true);\n const [showStorageCodes, setShowStorageCodes] = useState(true);\n const [showKeyCodes, setShowKeyCodes] = useState(true);\n const [showLostAndFoundCodes, setShowLostAndFoundCodes] = useState(true);\n const [showFreezerCodes, setShowFreezerCodes] = useState(true);\n const [showHtmlCodes, setShowHtmlCodes] = useState(true);\n\n //Header\n const [showBuy, setShowBuy] = useState(true);\n const [aboutPage, setAboutPage] = useState(\"/about\");\n\n const [origin, setOrigin] = useState(initialOrigin);\n const [theme, setTheme] = useState(myTheme);\n const [imageDir, setImageDir] = useState(\"img\");\n\n useEffect(() => {\n switch (origin) {\n case \"qrit\":\n setShowStaticCodes(true);\n setShowStorageCodes(true);\n setShowKeyCodes(true);\n setShowLostAndFoundCodes(true);\n setShowFreezerCodes(true);\n setShowHtmlCodes(true);\n setShowBuy(true);\n setAboutPage(\"/about\");\n setImageDir(\"img\");\n setTheme(myTheme);\n break;\n case \"shuregard\":\n setShowStaticCodes(false);\n setShowStorageCodes(true);\n setShowKeyCodes(false);\n setShowLostAndFoundCodes(false);\n setShowFreezerCodes(false);\n setShowBuy(false);\n setAboutPage(\"/aboutShure\");\n setImageDir(\"img_shurgard\");\n setTheme(shugardTheme);\n\n break;\n }\n }, [origin]);\n\n return {\n showStaticCodes,\n showStorageCodes,\n showKeyCodes,\n showLostAndFoundCodes,\n showFreezerCodes,\n showHtmlCodes,\n showBuy,\n aboutPage,\n theme,\n imageDir,\n // origin,\n setOrigin,\n };\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport Api from \"../api\";\nimport { Language } from \"../components/Strings\";\nimport { Helpers } from \"../helpers\";\nimport { CodeInfo, CodeProps, CodePropsType, Files, StoreInfo } from \"../models\";\n\nconst strings = Language.strings;\n\ninterface ObserveCodeProps {\n code: string;\n onSaved?: () => void;\n onUnregistered?: () => void;\n}\n\nexport const useObserveCode = ({ code: qrCode, onSaved, onUnregistered }: ObserveCodeProps) => {\n const [busy, setBusy] = useState(false);\n const [code, setCode] = useState(qrCode);\n const [codeInfo, setCodeInfo] = useState();\n // const [stores, setStores] = useState([]);\n const [error, setError] = useState();\n const [hasCodeEditAccess, setHasCodeEditAccess] = useState(false);\n\n // General\n const [name, setName] = useState(\"\");\n const [type, setType] = useState();\n const [state, setState] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [changeDate, setChangeDate] = useState(new Date());\n const [statusIconFilename, setStatusIconFilename] = useState(\"\");\n\n // Files (images)\n const [images, setImages] = useState([]);\n // const [defaultImageIndex, setDefaultImageIndex] = useState(0);\n const [defaultImageId, setDefaultImageId] = useState();\n const [defaultImage, setDefaultImage] = useState();\n const [, setHasImage] = useState(false); // TODO: remove?\n\n // LostFound\n const [lostPayValue, setLostPayValue] = useState(\"\");\n const [showHowMuchPay, setShowHowMuchPay] = useState(false);\n const [enablePosition, setEnablePosition] = useState(false);\n const [offerPay, setOfferPay] = useState(false);\n const [possibleSendMess, setPossibleSendMess] = useState(false);\n const [showPhoneNumber, setShowPhoneNumber] = useState(false);\n const [showInfoSendMess, setShowInfoSendMess] = useState(false);\n const [showInfoOfferPay, setShowInfoOfferPay] = useState(false);\n const [showInfoShowHowMuchPay, setShowInfoShowHowMuchPay] = useState(false);\n\n // User info\n const [ownerUserId, setOwnerUserId] = useState(\"\");\n const [ownerUserName, setOwnerUserName] = useState(\"\");\n const [ownerPhone, setOwnerPhone] = useState(\"\");\n const [isMine, setIsMine] = useState(false);\n const [isBorrowed, setIsBorrowed] = useState(false);\n const [isRegistered, setIsRegistered] = useState(true);\n const [isAwaitingOwnerReturnAccept, setIsAwaitingOwnerReturnAccept] = useState(false);\n\n const [borrowerUserName, setBorrowerUserName] = useState(\"\");\n\n // Stores\n const [codeStores, setCodeStores] = useState([]);\n\n // Boxes\n const [shortId, setShortId] = useState(\"\");\n const [storageDate, setStorageDate] = useState(new Date());\n\n const [content, setContent] = useState(localStorage.getItem(\"boxContent\") || \"\");\n const [contentType, setContentType] = useState(\n localStorage.getItem(\"boxContentType\") || strings.EditBoxes_DefaultContentType\n );\n const [location, setLocation] = useState(localStorage.getItem(\"boxLocation\") || \"\");\n const [room, setRoom] = useState(localStorage.getItem(\"boxRoom\") || \"\");\n const [category, setCategory] = useState(localStorage.getItem(\"boxCategory\") || \"\");\n const [boxState, setBoxState] = useState(localStorage.getItem(\"boxState\") || strings.EditBoxes_DefaultBoxState);\n const [priority, setPriority] = useState(localStorage.getItem(\"boxPriority\") || strings.EditBoxes_DefaultPriority);\n\n // const [storageDate, setStorageDate] = useState(\"\"); // || new Date(new Date().getTime() + 90 * 86400 * 1000)); // TODO: When should date be set?\n const [fragility, setFragility] = useState(false);\n const [boxColor, setBoxColor] = useState(\"Green\");\n\n // Static\n const [requireUserRemovalApproval, setRequireUserRemovalApproval] = useState(false);\n const [requireBankID, setRequireBankID] = useState(false);\n const [rentable, setRentable] = useState(false);\n const [isPublicViewable, setIsPublicViewable] = useState(false);\n const [itemType, setItemType] = useState(\"\");\n const [returnDate, setReturnDate] = useState();\n const [returnNumDays, setReturnNumDays] = useState(3);\n const [rentMessToOwner, setRentMessToOwner] = useState(\"\");\n const [rentCostDescr, setRentCostDescr] = useState(\"\");\n const [enableRenterChatRent, setEnableRenterChatRent] = useState(false);\n const [boxStateIconFilename, setBoxStateIconFilename] = useState(\"\");\n const [isBorrowedByMe, setIsBorrowedByMe] = useState(false);\n\n // Freezer\n const [foodType, setFoodType] = useState(\"\");\n const [persons, setPersons] = useState(0);\n const [expirationDate, setExpirationDate] = useState(new Date(new Date().getTime() + 90 * 86400 * 1000));\n\n const [amount, setAmount] = useState(0);\n const [amountType, setAmountType] = useState(\"\");\n\n const [changed, setChanged] = useState(false);\n\n const getCode = useCallback(() => {\n if (code.length > 0) {\n setBusy(true);\n Promise.all([\n Api.getCode(code)\n .then(setCodeInfo)\n .catch(() => Api.verifyCode(code).catch(() => {})),\n // Api.getStoresByCode(code).then(setStores),\n Api.getFiles(code).then(setImages),\n Api.hasCodeEditAccess(code).then(setHasCodeEditAccess),\n ]).catch(() => {});\n // .finally(() => setBusy(false));\n }\n }, [code]);\n\n useEffect(() => {\n if (code) {\n getCode();\n }\n }, [code, getCode]);\n\n useEffect(() => {\n if (images.length > 0) {\n setHasImage(true);\n }\n }, [images]);\n\n // useEffect(() => {\n // setDefaultImageId(\n // defaultImageIndex !== undefined && defaultImageIndex < images.length ? images[defaultImageIndex].id : undefined\n // );\n // setDefaultImage(\n // defaultImageIndex !== undefined && defaultImageIndex < images.length ? images[defaultImageIndex] : undefined\n // );\n // }, [defaultImageIndex, images]);\n\n useEffect(() => {\n if (codeInfo) {\n (async () => {\n try {\n setBusy(true);\n setState(codeInfo.state);\n setName(codeInfo.name || \"\");\n setType(codeInfo.type);\n setDescription(codeInfo.description || \"\");\n setShortId(codeInfo.shortID);\n setReturnDate(codeInfo.returnDate);\n const {\n showHowMuchPay,\n enablePosition,\n offerPay,\n possibleSendMess,\n showPhoneNumber,\n showInfoSendMess,\n showInfoOfferPay,\n showInfoShowHowMuchPay,\n\n // Boxes\n content,\n contentType,\n location,\n room,\n category,\n boxState,\n priority,\n storageDate,\n fragility,\n boxColor,\n\n // Static\n itemType,\n requireUserRemovalApproval,\n lostPayValue,\n\n // Freezer\n foodType,\n amount,\n amountType,\n persons,\n expirationDate,\n\n // Files (images)\n // defaultImageIndex, // TODO: remove => file index of default image\n defaultImageId, // file id of default image\n\n rentCostDescr,\n rentable,\n\n isPublicViewable,\n } = codeInfo.properties;\n\n setRequireUserRemovalApproval(requireUserRemovalApproval); // TODO: Check if this is both in properties and separate in DB\n setLostPayValue(lostPayValue);\n setShowHowMuchPay(showHowMuchPay);\n setEnablePosition(enablePosition);\n setOfferPay(offerPay);\n setPossibleSendMess(possibleSendMess);\n setShowPhoneNumber(showPhoneNumber);\n setShowInfoOfferPay(showInfoOfferPay);\n setShowInfoSendMess(showInfoSendMess);\n setShowInfoOfferPay(showInfoOfferPay);\n setShowInfoShowHowMuchPay(showInfoShowHowMuchPay);\n setContent(content);\n setContentType(contentType);\n setLocation(location);\n setRoom(room);\n setCategory(category);\n setBoxState(boxState);\n setPriority(priority);\n setStorageDate(storageDate);\n setFragility(fragility);\n setBoxColor(boxColor);\n setItemType(itemType);\n setReturnNumDays(+returnNumDays || 3);\n setRentMessToOwner(rentMessToOwner);\n // setDefaultImageIndex(defaultImageIndex || 0);\n setDefaultImageId(defaultImageId || images[0]?.id);\n setFoodType(foodType);\n setPersons(persons);\n setAmount(amount);\n setAmountType(amountType);\n setExpirationDate(expirationDate);\n setRentCostDescr(rentCostDescr);\n setRentable(rentable === true);\n setIsPublicViewable(isPublicViewable === true);\n\n // Users\n try {\n const userInfo = await Api.getUserInfo(codeInfo.userId, codeInfo.id);\n setOwnerUserId(userInfo.id);\n setOwnerUserName(userInfo.username);\n setOwnerPhone(userInfo.phone);\n } catch {\n if (type !== \"lostFound\" || isPublicViewable) {\n throw new Error(\"Unautorized\");\n }\n }\n\n const isMine = Helpers.isMine(codeInfo);\n const isRegistered = Helpers.isRegistered(codeInfo);\n const isBorrowed = Helpers.isBorrowed(codeInfo);\n const isAwaitingOwnerReturnAccept = Helpers.isAwaitingOwnerReturnAccept(codeInfo);\n const isBorrowedByMe = Helpers.isBorrowedByMe(codeInfo);\n setIsMine(isMine);\n setIsBorrowed(isBorrowed);\n setIsRegistered(isRegistered);\n setIsAwaitingOwnerReturnAccept(isAwaitingOwnerReturnAccept);\n setIsBorrowedByMe(isBorrowedByMe);\n\n // Status icon\n if (!codeInfo) {\n setStatusIconFilename(\"/ICON_Freezer_64.png\");\n } else if (codeInfo.type === \"freezer\") {\n setStatusIconFilename(\"/ICON_Freezer_64.png\");\n } else if (isRegistered) {\n if (isMine) {\n setStatusIconFilename(\"/ICON_Home_64.png\");\n } else {\n setStatusIconFilename(\"/ICON_HomeAtOther_64.png\");\n }\n } else {\n if (isBorrowed && isMine) {\n setStatusIconFilename(\"/ICON_MineBorrowedByOther_64.png\");\n } else if (isAwaitingOwnerReturnAccept && isMine) {\n setStatusIconFilename(\"/ICON_MinePendingReturnAccept_64.png\");\n } else if (isAwaitingOwnerReturnAccept && isMine) {\n setStatusIconFilename(\"/ICON_OthersPendingReturnAccept_64.png\");\n } else {\n if (isBorrowed && !isBorrowedByMe) {\n setStatusIconFilename(\"/ICON_OtherBorrowedByOther_64.png\");\n } else {\n setStatusIconFilename(\"/ICON_OthersBorrowedByMe_64.png\");\n }\n }\n }\n\n if (boxState) {\n setBoxStateIconFilename(Helpers.getBoxStatusIconFilename(boxState));\n } else {\n // TODO: make explicit if for this case too, and add also when others have borrowed others\n setBoxStateIconFilename(\"/BoxOnly_White_32x32.png\");\n }\n\n try {\n setBorrowerUserName(await Helpers.getBorrowerUserName(code));\n } catch {}\n\n // Stores\n try {\n setCodeStores(await Api.getStoresByCode(codeInfo.id));\n } catch {}\n } catch (e) {\n console.warn(e);\n } finally {\n setBusy(false);\n setChanged(false);\n }\n })();\n }\n }, [\n codeInfo,\n code,\n isAwaitingOwnerReturnAccept,\n isBorrowed,\n isMine,\n isRegistered,\n rentMessToOwner,\n returnNumDays,\n isBorrowedByMe,\n ]);\n\n useEffect(() => {\n if (defaultImageId && images) {\n setDefaultImage(images.find((image) => image.id === defaultImageId));\n }\n }, [defaultImageId, images]);\n\n const _save = async () => {\n setBusy(true);\n setChangeDate(new Date());\n setStorageDate(storageDate || new Date());\n\n const properties: CodeProps = {\n ...codeInfo!.properties,\n\n // Generic\n changeDate,\n\n // LostFound\n lostPayValue,\n showHowMuchPay,\n enablePosition,\n offerPay,\n possibleSendMess,\n showPhoneNumber,\n showInfoSendMess,\n showInfoOfferPay,\n showInfoShowHowMuchPay,\n\n // Boxes\n content,\n contentType,\n location,\n room,\n category,\n boxState,\n priority,\n storageDate,\n fragility,\n boxColor,\n\n // Static\n itemType,\n enableRenterChatRent,\n requireUserRemovalApproval,\n\n // Freezer\n foodType,\n persons,\n expirationDate,\n amount,\n amountType,\n\n // Files (images)\n // defaultImageIndex,\n defaultImageId,\n\n rentCostDescr,\n rentable,\n\n isPublicViewable,\n };\n\n const response = await Api.updateCode(\n code,\n name ? name.trim() : \"\",\n description ? description.trim() : \"\",\n properties,\n type || \"static\"\n );\n\n const ok = await Api.updateCodeStores(\n code,\n codeStores.map((s) => s.id)\n );\n\n setChanged(false);\n setBusy(false);\n\n if (response.success && ok) {\n if (onSaved) onSaved();\n } else {\n setError(strings.editItem_failedSaveCode);\n }\n };\n\n useEffect(() => {\n setChanged(true);\n }, [\n // General\n name,\n type,\n description,\n state,\n statusIconFilename,\n borrowerUserName,\n hasCodeEditAccess,\n // Files (images)\n images,\n defaultImageId,\n defaultImage,\n // LostFound\n lostPayValue,\n showHowMuchPay,\n enablePosition,\n offerPay,\n possibleSendMess,\n showPhoneNumber,\n showInfoOfferPay,\n showInfoSendMess,\n showInfoShowHowMuchPay,\n // Boxes\n shortId,\n content,\n contentType,\n location,\n room,\n category,\n boxState,\n priority,\n storageDate,\n fragility,\n boxColor,\n // Static\n requireUserRemovalApproval,\n requireBankID,\n rentable,\n itemType,\n returnDate,\n returnNumDays,\n rentMessToOwner,\n rentCostDescr,\n enableRenterChatRent,\n boxStateIconFilename,\n // Freezer\n foodType,\n persons,\n expirationDate,\n amount,\n amountType,\n // User\n ownerUserId,\n ownerUserName,\n ownerPhone,\n isMine,\n isBorrowed,\n isRegistered,\n isAwaitingOwnerReturnAccept,\n isBorrowedByMe,\n // Stores\n codeStores,\n\n isPublicViewable,\n ]);\n\n useEffect(() => {\n if (type && codeInfo && codeInfo.type !== type) {\n setCodeInfo({ ...codeInfo, type });\n _save();\n }\n }, [type, codeInfo, _save]);\n\n const _unregister = async () => {\n await Api.unregisterCode(code);\n if (onUnregistered) onUnregistered();\n };\n\n const _borrow = async () => {\n const borrower = Helpers.getCurrentUserId();\n const returnDate = Helpers.getDateWithDaysAdded(returnNumDays);\n await Api.registerBorrowing(code, borrower, returnDate);\n reload();\n };\n\n const reload = () => {\n // force refresh of code info\n setCode(\"\");\n setCode(qrCode);\n };\n\n const _return = () => {\n Api.returnCode(code)\n .then(() => {\n reload();\n })\n .catch(() => {\n setError(strings.useObserveCode_ErroTryRefresh);\n });\n };\n\n const postMessage = (message: string) => {\n Api.postMessage({\n userId: ownerUserId,\n codeId: code,\n message: message,\n createdAt: new Date(),\n });\n };\n\n /** Adds an image to the code images */\n const addImage = () => {\n // Reload files for the code\n Api.getFiles(code).then(setImages);\n };\n\n const refreshImages = () => {\n // Reload files for the code\n Api.getFiles(code).then(setImages);\n };\n\n const canCopyCodeFromLocalSettings = useCallback(() => {\n const itemCopy = localStorage.getItem(\"itemCopy\");\n if (!itemCopy) {\n return false;\n }\n\n const props = JSON.parse(itemCopy);\n if (props.type !== type) {\n return false;\n }\n\n return true;\n }, [type]);\n\n const copyCodeFromLocalSettings = () => {\n const text = localStorage.getItem(\"itemCopy\");\n // eslint-disable-next-line no-restricted-globals\n if (text && confirm(\"Are you sure you want to overwrite the current item with the copied item?\")) {\n // navigator.clipboard\n // .readText()\n // .then((text) => {\n const props = JSON.parse(text);\n setName(props.name);\n setDescription(props.description);\n setType(props.type);\n setImages(props.images);\n setDefaultImageId(props.defaultImageId);\n\n switch (props.type) {\n case \"static\":\n setRequireUserRemovalApproval(props.requireUserRemovalApproval);\n setRequireBankID(props.requireBankID);\n setRentable(props.rentable);\n setRentMessToOwner(props.rentMessToOwner);\n setRentCostDescr(props.rentCostDescr);\n setEnableRenterChatRent(props.enableRenterChatRent);\n setReturnDate(props.returnDate);\n setReturnNumDays(props.returnNumDays);\n break;\n case \"boxes\":\n setContent(props.content);\n setContentType(props.contentType);\n setLocation(props.location);\n setRoom(props.room);\n setCategory(props.category);\n setBoxState(props.boxState);\n setPriority(props.priority);\n setStorageDate(props.storageDate);\n setFragility(props.fragility);\n setBoxColor(props.boxColor);\n break;\n case \"lostFound\":\n setLostPayValue(props.lostPayValue);\n setShowHowMuchPay(props.showHowMuchPay);\n setEnablePosition(props.enablePosition);\n setOfferPay(props.offerPay);\n setPossibleSendMess(props.possibleSendMess);\n setShowPhoneNumber(props.showPhoneNumber);\n setShowInfoOfferPay(props.showInfoOfferPay);\n setShowInfoSendMess(props.showInfoSendMess);\n setShowInfoShowHowMuchPay(props.showInfoShowHowMuchPay);\n break;\n case \"freezer\":\n setFoodType(props.foodType);\n setPersons(props.persons);\n setExpirationDate(props.expirationDate);\n setAmount(props.amount);\n setAmountType(props.amountType);\n break;\n case \"html\":\n setIsPublicViewable(props.isPublicViewable);\n break;\n }\n }\n };\n\n const copyCodeToLocalSettings = () => {\n let props: any = {\n type,\n name,\n description,\n images,\n defaultImageId,\n };\n\n switch (type) {\n case \"static\":\n props = {\n ...props,\n requireUserRemovalApproval,\n requireBankID,\n rentable,\n rentMessToOwner,\n rentCostDescr,\n enableRenterChatRent,\n returnDate,\n returnNumDays,\n };\n break;\n case \"boxes\":\n props = {\n ...props,\n content,\n contentType,\n location,\n room,\n category,\n boxState,\n priority,\n storageDate,\n fragility,\n boxColor,\n };\n break;\n case \"lostFound\":\n props = {\n ...props,\n lostPayValue,\n showHowMuchPay,\n enablePosition,\n offerPay,\n possibleSendMess,\n showPhoneNumber,\n showInfoOfferPay,\n showInfoSendMess,\n showInfoShowHowMuchPay,\n };\n break;\n case \"freezer\":\n props = {\n ...props,\n foodType,\n persons,\n expirationDate,\n amount,\n amountType,\n };\n break;\n case \"html\":\n props = {\n ...props,\n };\n break;\n }\n\n const itemProperties = JSON.stringify(props);\n localStorage.setItem(\"itemCopy\", itemProperties);\n // navigator.clipboard\n // .writeText(itemProperties)\n // .then(() => {\n // console.log(\"Item properties copied to clipboard\", props);\n // })\n // .catch((err) => {\n // console.error(\"Error in copying item properties to clipboard: \", err);\n // });\n };\n\n return {\n code: codeInfo /*, stores*/,\n busy,\n save: _save,\n unregister: _unregister,\n returnItem: _return,\n borrow: _borrow,\n postMessage,\n reload,\n\n // General\n name,\n setName,\n error,\n state,\n setState,\n type,\n setType,\n description,\n setDescription,\n changeDate,\n statusIconFilename,\n borrowerUserName,\n hasCodeEditAccess,\n\n // Files (images)\n images,\n // defaultImageIndex,\n // setDefaultImageIndex,\n addImage,\n refreshImages,\n defaultImageId,\n setDefaultImageId,\n defaultImage,\n\n // LostFound\n lostPayValue,\n setLostPayValue,\n showHowMuchPay,\n setShowHowMuchPay,\n enablePosition,\n setEnablePosition,\n offerPay,\n setOfferPay,\n possibleSendMess,\n setPossibleSendMess,\n showPhoneNumber,\n setShowPhoneNumber,\n showInfoOfferPay,\n setShowInfoOfferPay,\n showInfoSendMess,\n setShowInfoSendMess,\n showInfoShowHowMuchPay,\n setShowInfoShowHowMuchPay,\n\n // Boxes\n shortId,\n content,\n setContent,\n contentType,\n setContentType,\n location,\n setLocation,\n room,\n setRoom,\n category,\n setCategory,\n boxState,\n setBoxState,\n priority,\n setPriority,\n storageDate,\n setStorageDate,\n fragility,\n setFragility,\n boxColor,\n setBoxColor,\n\n //Static\n requireUserRemovalApproval,\n setRequireUserRemovalApproval,\n requireBankID,\n setRequireBankID,\n rentable,\n setRentable,\n itemType,\n setItemType,\n returnDate,\n setReturnDate,\n returnNumDays,\n setReturnNumDays,\n rentMessToOwner,\n setRentMessToOwner,\n rentCostDescr,\n setRentCostDescr,\n enableRenterChatRent,\n setEnableRenterChatRent,\n boxStateIconFilename,\n\n // Freezer\n foodType,\n setFoodType,\n persons,\n setPersons,\n expirationDate,\n setExpirationDate,\n amount,\n setAmount,\n amountType,\n setAmountType,\n\n // User\n ownerUserId,\n ownerUserName,\n ownerPhone,\n isMine,\n isBorrowed,\n isRegistered,\n isAwaitingOwnerReturnAccept,\n // borrowerUserName,\n isBorrowedByMe,\n\n // Stores\n setCodeStores,\n codeStores,\n\n // update: async (code: CodeInfo) => {\n // setBusy(true);\n // const {\n // name,\n // description,\n // requireUserRemovalApproval,\n // requireBankID,\n // rentable,\n // } = code;\n // const response = await Api.registerCode(\n // code.id,\n // name.trim(),\n // description.trim(),\n // requireUserRemovalApproval,\n // requireBankID,\n // rentable,\n // true /* TODO: lostFound*/,\n // code.properties\n // );\n // // alert(JSON.stringify(response));\n // setBusy(false);\n // if (response.success) {\n // onChanged();\n // } else {\n // setError(strings.registerItem_failedRegisterCode);\n // }\n // },\n changed,\n copyCodeFromLocalSettings: canCopyCodeFromLocalSettings() ? copyCodeFromLocalSettings : undefined,\n copyCodeToLocalSettings,\n isPublicViewable,\n setIsPublicViewable,\n };\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport Api from \"../api\";\nimport { ChatMessage } from \"../models\";\n\nconst getMessages = (code: string) => Api.getMessages(undefined, code);\n\nexport const useObserveMessages = (code: string) => {\n const [messages, setMessages] = useState([]);\n\n const readMessages = useCallback(() => {\n getMessages(code).then(setMessages);\n }, [code]);\n\n const deleteMessage = (chatMessageId: string) => {\n Api.deleteChatMessage(chatMessageId).then(() => readMessages());\n };\n\n useEffect(() => {\n readMessages();\n }, [code, readMessages]);\n\n return { messages, getMessages: () => readMessages(), deleteMessage };\n};\n","import { Language } from '../components/Strings';\n\nexport const useObserveStrings = () => {\n return Language.strings;\n} ","import { useEffect, useState, useCallback } from \"react\";\nimport { CodeInfo, Store } from \"../models\";\nimport Api from \"../api\";\nimport { Language } from \"../components/Strings\";\n\nconst strings = Language.strings;\n\nexport const useObserveUser = () => {\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState();\n const [userId, setUserId] = useState(localStorage.getItem(\"userId\"));\n const [lock, setLock] = useState();\n\n const [username, setUsername] = useState();\n const [codes, setCodes] = useState();\n const [stores, setStores] = useState([]);\n\n const [firstName, setFirstName] = useState(\"\");\n const [lastName, setLastName] = useState(\"\");\n const [address, setAddress] = useState(\"\");\n const [zipCode, setZipCode] = useState(\"\");\n const [city, setCity] = useState(\"\");\n const [country, setCountry] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n\n // const [purchases, setPurchases] = useState([]);\n\n const [tabChoices, setTabChoices] = useState();\n const [contentTypeChoices, setContentTypeChoices] = useState(strings.EditBoxes_ContentTypeList);\n const [typeChoices, setTypeChoices] = useState(strings.EditStatic_ItemTypesList);\n const [contentChoices, setContentChoices] = useState(strings.EditBoxes_ContentList);\n const [locationChoices, setLocationChoices] = useState(strings.EditBoxes_SiteList);\n const [roomChoices, setRoomChoices] = useState(strings.EditBoxes_RoomList);\n const [categoryChoices, setCategoryChoices] = useState(strings.EditBoxes_CategoryList);\n\n const [enableSMRecievingOnIncommingMessages, setEnableSMRecievingOnIncommingMessages] = useState(true);\n const [disableShowReallyChangeImageToPrivate, setDisableShowReallyChangeImageToPrivate] = useState(true);\n\n // const [colorChoices, setColorChoices] = useState(\n // strings.EditBoxes_BoxColorChoices\n // );\n\n useEffect(() => {\n if (userId) {\n localStorage.setItem(\"userId\", userId);\n (async () => {\n try {\n setLock(true);\n setBusy(true);\n const [codes, stores, props, info] = await Promise.all([\n Api.getCodesForUser(),\n Api.getStores(),\n Api.getPropertiesDict(\"user\"),\n Api.getUserInfo(userId),\n // Api.getPurchases(userId)\n ]);\n setCodes(codes);\n setStores(stores);\n setUsername(info.username);\n setFirstName(info.firstName);\n setLastName(info.lastName);\n setAddress(info.address);\n setZipCode(info.zipCode);\n setCity(info.city);\n setCountry(info.country);\n setEmail(info.email);\n setPhone(info.phone);\n // setPurchases(purchases);\n\n if (props[\"tabChoicesJson\"]) {\n setTabChoices(props[\"tabChoicesJson\"]);\n } else {\n setTabChoices([\"static\", \"boxes\", \"lostFound\"]);\n }\n\n if (props[\"boxContentChoicesList\"] && props[\"boxContentChoicesList\"].length > 0) {\n setContentChoices(props[\"boxContentChoicesList\"]);\n }\n\n if (props[\"boxContentTypeChoicesList\"] && props[\"boxContentTypeChoicesList\"].length > 0) {\n setContentTypeChoices(props[\"boxContentTypeChoicesList\"]);\n }\n\n if (props[\"boxTypeChoicesList\"] && props[\"boxTypeChoicesList\"].length > 0) {\n setTypeChoices(props[\"boxTypeChoicesList\"]);\n }\n\n if (props[\"boxRoomChoicesList\"] && props[\"boxRoomChoicesList\"].length > 0) {\n setRoomChoices(props[\"boxRoomChoicesList\"]);\n }\n\n if (props[\"boxCategoryChoicesList\"] && props[\"boxCategoryChoicesList\"].length > 0) {\n setCategoryChoices(props[\"boxCategoryChoicesList\"]);\n }\n\n // if (\n // props[\"boxColorChoicesList\"] &&\n // props[\"boxColorChoicesList\"].length > 0\n // ) {\n // setColorChoices(props[\"boxColorChoicesList\"]);\n // }\n\n if (props[\"boxLocationChoicesList\"] && props[\"boxLocationChoicesList\"].length > 0) {\n setLocationChoices(props[\"boxLocationChoicesList\"]);\n }\n\n if (props[\"enableSMRecievingOnIncommingMessages\"] !== undefined) {\n setEnableSMRecievingOnIncommingMessages(props[\"enableSMRecievingOnIncommingMessages\"]);\n }\n\n if (props[\"disableShowReallyChangeImageToPrivate\"] !== undefined) {\n setDisableShowReallyChangeImageToPrivate(props[\"disableShowReallyChangeImageToPrivate\"]);\n }\n } catch (error) {\n setError(`Internal error: ${error}`);\n } finally {\n // try {\n // setCodes(await Api.getCodesForUser());\n // } catch {\n // setError(\"Internal error: code retrieval failed\");\n // }\n\n // try {\n // setStores(await Api.getStores());\n // } catch {\n // setError(\"Internal error: store retrieval failed\");\n // }\n setBusy(false);\n setLock(false);\n }\n })();\n }\n }, [userId]);\n\n const onTabChoiceChange = async (tabChoices: string[]) => {\n await Api.setProperty(\"user\", \"tabChoicesJson\", JSON.stringify(tabChoices));\n setTabChoices(tabChoices);\n };\n\n const updateUserInfo = useCallback(\n async (\n updatedFields: Partial<{\n firstName: string;\n lastName: string;\n address: string;\n zipCode: string;\n city: string;\n country: string;\n email: string;\n }>\n ) => {\n const newInfo = {\n firstName: updatedFields.firstName ?? firstName,\n lastName: updatedFields.lastName ?? lastName,\n address: updatedFields.address ?? address,\n zipCode: updatedFields.zipCode ?? zipCode,\n city: updatedFields.city ?? city,\n country: updatedFields.country ?? country,\n email: updatedFields.email ?? email,\n };\n await Api.registerBuyerInfo(\n newInfo.firstName,\n newInfo.lastName,\n newInfo.address,\n newInfo.zipCode,\n newInfo.city,\n newInfo.country,\n newInfo.email\n );\n if (updatedFields.firstName !== undefined) setFirstName(updatedFields.firstName);\n if (updatedFields.lastName !== undefined) setLastName(updatedFields.lastName);\n if (updatedFields.address !== undefined) setAddress(updatedFields.address);\n if (updatedFields.zipCode !== undefined) setZipCode(updatedFields.zipCode);\n if (updatedFields.city !== undefined) setCity(updatedFields.city);\n if (updatedFields.country !== undefined) setCountry(updatedFields.country);\n if (updatedFields.email !== undefined) setEmail(updatedFields.email);\n },\n [firstName, lastName, address, zipCode, city, country, email]\n );\n\n const onFirstNameChange = (firstName: string) => updateUserInfo({ firstName });\n const onLastNameChange = (lastName: string) => updateUserInfo({ lastName });\n const onAddressChange = (address: string) => updateUserInfo({ address });\n const onZipCodeChange = (zipCode: string) => updateUserInfo({ zipCode });\n const onCityChange = (city: string) => updateUserInfo({ city });\n const onCountryChange = (country: string) => updateUserInfo({ country });\n const onEmailChange = (email: string) => updateUserInfo({ email });\n\n const onEnableSMRecievingOnIncommingMessagesChange = async (enableSMRecievingOnIncommingMessages: boolean) => {\n await Api.setProperty(\n \"user\",\n \"enableSMRecievingOnIncommingMessages\",\n JSON.stringify(enableSMRecievingOnIncommingMessages)\n );\n setEnableSMRecievingOnIncommingMessages(enableSMRecievingOnIncommingMessages);\n };\n\n useEffect(() => {\n if (lock === false) {\n setBusy(true);\n Api.setProperty(\n \"user\",\n \"disableShowReallyChangeImageToPrivate\",\n JSON.stringify(disableShowReallyChangeImageToPrivate)\n ).finally(() => setBusy(false));\n }\n }, [disableShowReallyChangeImageToPrivate, lock]);\n\n return {\n busy,\n error,\n codes,\n stores,\n setUserId,\n userId,\n typeChoices,\n contentTypeChoices,\n contentChoices,\n locationChoices,\n roomChoices,\n categoryChoices,\n setTypeChoices,\n setContentTypeChoices,\n setContentChoices,\n setLocationChoices,\n setRoomChoices,\n setCategoryChoices,\n tabChoices,\n onTabChoiceChange,\n username,\n enableSMRecievingOnIncommingMessages,\n onEnableSMRecievingOnIncommingMessagesChange,\n disableShowReallyChangeImageToPrivate,\n setDisableShowReallyChangeImageToPrivate,\n // purchases,\n\n firstName,\n lastName,\n address,\n city,\n zipCode,\n country,\n email,\n onFirstNameChange,\n onLastNameChange,\n onAddressChange,\n onCityChange,\n onZipCodeChange,\n onCountryChange,\n onEmailChange,\n phone,\n };\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport Api from \"../api\";\nimport { Helpers } from \"../helpers\";\nimport { AccessInfo, CodeInfo, Roles, Store } from \"../models\";\nimport { useObserveUser } from \"./useObserveUser\";\n\ninterface ObserveStoreProps {\n storeId: string;\n onSaved: () => void;\n onRemoved: () => void;\n}\n\nexport const useObserveStore = ({ storeId, onSaved, onRemoved }: ObserveStoreProps) => {\n const [name, setName] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const [description, setDescription] = useState(\"\");\n const [codes, setCodes] = useState([]);\n const [store, setStore] = useState();\n const [requireCodesOwnerChange, setRequireCodesOwnerChange] = useState(false);\n const [isPrivateList, setIsPrivateList] = useState(true);\n const [allowResharing, setAllowResharing] = useState(false);\n const [canDeleteStore, setCanDeleteStore] = useState(false);\n const [canAskToRequireCodeOwnerChange, setCanAskToRequireCodeOwnerChange] = useState(false);\n const [hasListAccess, setHasListAccess] = useState(false);\n const [canEditCodes, setCanEditCodes] = useState(false);\n const [canListUsers, setCanListUsers] = useState(false);\n const [isPendingUser, setIsPendingUser] = useState(false);\n const [access, setAccess] = useState([]);\n const [storeCodes, setStoreCodes] = useState([]);\n const [userCodes, setUserCodes] = useState([]);\n const [selectedKeys, setSelectedKeys] = useState([]);\n const [ownerRole, setOwnerRole] = useState(\"pending\");\n\n const { userId } = useObserveUser();\n\n const canDoStoreOperation = useCallback(\n async (\n operation:\n | \"deleteStore\"\n | \"changeStoreOwner\"\n | \"inviteStoreUser\"\n | \"requireCodeOwnerChange\"\n | \"hasListAccess\"\n | \"canEditCodes\"\n | \"pendingUser\"\n | \"listUser\"\n ) => {\n return await Api.canDoStoreOperation(storeId, operation);\n },\n [storeId]\n );\n\n const deleteStore = () => {\n Api.removeStore(storeId)\n .then(onRemoved)\n .catch((error) => console.warn(error));\n };\n\n useEffect(() => {\n Api.getCodesForUser()\n .then(setUserCodes)\n .catch((error) => console.warn(\"Failed to get codes\", error));\n }, []);\n\n const getStore = useCallback(async () => {\n setBusy(true);\n Api.getStore(storeId)\n .then((store: Store) => {\n setStore({ ...store });\n const { name, description, codes } = store;\n setName(name);\n setDescription(description);\n setStoreCodes(store.codes);\n //TODO: How to handle selected keys...\n setSelectedKeys(codes.map((ci) => ci.id));\n setRequireCodesOwnerChange(store.requireCodesOwnerChange);\n setIsPrivateList(store.isPrivateList);\n setAllowResharing(store.allowResharing === true);\n\n setAccess(store.access ? [...store.access] : []);\n const storeOwnerAccess = store.access?.find((a) => a.userId === store.userId)?.accessType!;\n setOwnerRole(Helpers.getRole(storeOwnerAccess));\n setBusy(false);\n })\n .catch(() => {\n console.warn(\"Failed to get store info.\");\n setBusy(false);\n });\n\n canDoStoreOperation(\"deleteStore\").then((can) => setCanDeleteStore(can));\n canDoStoreOperation(\"requireCodeOwnerChange\").then((can) => setCanAskToRequireCodeOwnerChange(can));\n canDoStoreOperation(\"hasListAccess\").then((can) => setHasListAccess(can));\n canDoStoreOperation(\"canEditCodes\").then((can) => setCanEditCodes(can));\n canDoStoreOperation(\"pendingUser\").then((can) => setIsPendingUser(can));\n canDoStoreOperation(\"listUser\").then((can) => setCanListUsers(can));\n }, [storeId, canDoStoreOperation]);\n\n useEffect(() => {\n if (storeId) {\n getStore();\n }\n }, [storeId, canDoStoreOperation, getStore]);\n\n const updateCodes = useCallback(\n (updatedCodes: CodeInfo[]) => {\n const updatedStore: Store = {\n id: storeId,\n userId: Helpers.getCurrentUserId(),\n name,\n description,\n requireCodesOwnerChange,\n isPrivateList,\n allowResharing,\n codes: updatedCodes,\n // TODO: needed here? access,\n };\n Api.updateStore(updatedStore);\n },\n [storeId, name, description, requireCodesOwnerChange, isPrivateList, allowResharing]\n );\n\n //TODO: How to handle this... is this correct?\n // useEffect(() => {\n // updateCodes(codes);\n // }, [codes, updateCodes]);\n\n useEffect(() => {\n const otherStoreCodes = storeCodes.filter((c) => c.userId !== userId);\n setCodes(userCodes.concat(otherStoreCodes));\n }, [userCodes, storeCodes, userId]);\n\n useEffect(() => {\n const options = codes\n .filter((ci) => ci.name && ci.name.trim().length > 0)\n .map((ci) => ({ key: ci.id, text: formatCodeInfo(ci) }));\n setOptions(options);\n }, [codes]);\n\n const [options, setOptions] = useState<\n {\n key: string;\n text: string;\n }[]\n >([]);\n\n const formatCodeInfo = (codeInfo: CodeInfo): string => {\n const { id, name, shortID: shortId } = codeInfo;\n const type = Helpers.getCodeTypeString(codeInfo);\n return `${name} (${id}${shortId ? \" \" + shortId : \"\"}) - ${type}`;\n };\n\n const join = async () => {\n const ok = await Api.requestJoinList(storeId);\n return ok;\n };\n\n const addUser = async (phone: string) => {\n const ok = await Api.addUserToStore(phone.trim(), storeId);\n if (ok) {\n getStore();\n }\n\n return ok;\n };\n\n const removeUser = async (accessId: string) => {\n await Api.deleteStoreAccess(accessId);\n getStore();\n };\n\n const changeOwner = async (ownerUserId: string) => {\n await Api.changeStoreOwner(storeId, ownerUserId);\n getStore();\n };\n\n return {\n busy,\n name,\n setName,\n description,\n setDescription,\n codes,\n setCodes,\n store,\n setStore,\n requireCodesOwnerChange,\n setRequireCodesOwnerChange,\n isPrivateList,\n setIsPrivateList,\n allowResharing,\n setAllowResharing,\n canDeleteStore,\n setCanDeleteStore,\n canAskToRequireCodeOwnerChange,\n setCanAskToRequireCodeOwnerChange,\n hasListAccess,\n setHasListAccess,\n canEditCodes,\n isPendingUser,\n canListUsers,\n access,\n setAccess,\n storeCodes,\n setStoreCodes,\n userCodes,\n setUserCodes,\n options,\n setOptions,\n\n canDoStoreOperation,\n deleteStore,\n updateCodes,\n join,\n\n addUser,\n removeUser,\n changeOwner,\n\n selectedKeys, // TODO: needed, rename?\n\n ownerRole,\n };\n};\n","import * as React from \"react\";\nimport { getTheme, Stack, FontIcon, Panel, PanelType, Nav, Label, Text } from \"@fluentui/react\";\nimport { version } from \"../../package.json\";\nimport { Language, strings } from \"./Strings\";\nimport { Link, withRouter } from \"react-router-dom\";\nimport { Helpers } from \"../helpers\";\nimport { useTheme } from \"../hooks/useTheme\";\nimport { useState } from \"react\";\nimport { useObserveUser } from \"../hooks\";\n// import Flags from 'country-flag-icons' // https://www.npmjs.com/package/country-flag-icons\n\nexport const Menu = withRouter((props: any) => {\n const { showMenu, onDismiss, history } = props;\n const isLoggedIn = Helpers.isLoggedIn();\n\n const { showBuy, aboutPage } = useTheme(strings.Shureguard ? \"shuregard\" : \"qrit\");\n\n let links = [\n {\n key: \"about\",\n name: strings.header_whatIsQRit,\n url: \"\", // \"/about\",\n onClick: () => history.push(aboutPage),\n iconProps: { iconName: \"Info\" },\n },\n {\n key: \"buy\",\n name: strings.header_buyQRcodes,\n url: \"\", // isLoggedIn ? '/buy' : '/register',\n onClick: () => history.push(isLoggedIn ? \"/buy/1\" : \"/register?redirect=/buy/1\"),\n iconProps: { iconName: \"Shop\" },\n disable: showBuy,\n },\n {\n key: \"scan\",\n name: strings.header_scan,\n url: \"\",\n onClick: () => history.push(\"/scan\"),\n iconProps: { iconName: \"QRCode\" },\n },\n {\n key: \"manualEntry\",\n name: strings.header_manualQRentry,\n url: \"\", // isLoggedIn ? '/buy' : '/register',\n onClick: () =>\n history.push(isLoggedIn ? \"/RegisterItemManually\" : \"/RegisterItemManually?redirect=/RegisterItemManually\"),\n iconProps: { iconName: \"Edit\" },\n },\n {\n key: \"stores\",\n name: strings.header_stores,\n url: \"\",\n onClick: () => history.push(\"/stores\"),\n iconProps: { iconName: \"CustomList\" },\n },\n {\n key: \"settings\",\n name: strings.header_settings,\n url: \"\",\n onClick: () => history.push(\"/settings\"),\n iconProps: { iconName: \"PlayerSettings\" }, // TODO: Change icon\n },\n {\n key: \"privacy\",\n name: strings.header_termsAndConditions,\n url: \"\", // \"/privacy\",\n onClick: () => history.push(\"/privacy\"),\n iconProps: { iconName: \"EntitlementPolicy\" },\n },\n {\n key: \"feedback\",\n name: strings.header_feedback,\n url: \"\",\n id: \"codicent-chat\",\n onClick: () => {\n (window as any).codicent.setup(\n `Feedback\\n---\\nJag kommer ge feedback QRit här nedan. Ställ gärna frågor till mig.\\n${Helpers.getCurrentUserId()}`\n );\n (window as any).codicent.show();\n onDismiss();\n },\n iconProps: { iconName: \"OfficeChat\" },\n },\n isLoggedIn\n ? {\n key: \"logout\",\n name: strings.header_logout,\n url: \"/\",\n onClick: () => Helpers.logout(),\n iconProps: { iconName: \"SignOut\" },\n }\n : {\n key: \"login\",\n name: strings.header_login,\n url: \"\",\n onClick: () => history.push(\"/register\"),\n iconProps: { iconName: \"SignIn\" },\n },\n // {\n // key: 'choice2',\n // name: 'Val 2',\n // url: '#'\n // }\n ];\n\n // if (showLostAndFoundCodes) {\n // links.splice(3, 0, {\n // key: \"itemFound\",\n // name: strings.header_itemFound,\n // url: '', // isLoggedIn ? '/buy' : '/register',\n // onClick: () => history.push('/ItemFound'),\n // iconProps: { iconName: \"EntitlementPolicy\" },\n // });\n // }\n\n // class Menu extends React.Component<{\n // showMenu: boolean;\n // onDismiss: () => void;\n // }> {\n // render() {\n // const { showMenu, onDismiss } = this.props;\n return (\n \n \n \n
\n \n );\n});\n\nexport const Header = () => {\n const [showMenu, setShowMenu] = useState(false);\n const { imageDir } = useTheme();\n const theme = getTheme();\n const isLoggedIn = Helpers.isLoggedIn();\n const { firstName, username } = useObserveUser();\n const userName = isLoggedIn ? firstName || username : null;\n\n return (\n \n \n \n \n \n \"LOGO\"{\" \"}\n \n \n \n \n \n \n QRit\n \n \n \n \n \n \n {\n const language = Language.getLanguage() === \"sv\" ? \"gb\" : \"sv\";\n Language.setLanguage(language);\n window.location.reload();\n }}\n />{\" \"}\n \n \n \n {userName && (\n \n \n {userName.length > 12 ? `${userName.substring(0, 15).trim()}...` : userName}\n \n \n )}\n {true && (\n \n {/* this.setState({ showMenu: true })} /> */}\n setShowMenu(true)} />\n {/* this.setState({ userId: null }, () => localStorage.removeItem('userId'))}\n >\n Logout\n */}\n \n )}\n setShowMenu(false)} />\n \n {/* {this.props.children} */}\n
\n );\n};\n","import * as React from \"react\";\n\nexport class Content extends React.Component {\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n","import React from 'react';\nimport { QRCodeSVG } from 'qrcode.react';\n\n// interface QRcodeImageProps {\n// code: string;\n// }\n\nexport const QRcodeImage = ({ code }: { code: string }) => {\n return \n}","import React, { useState } from \"react\";\nimport { Text, Stack, Label, Link, Dialog, DialogContent, PivotItem, mergeStyleSets, Icon } from \"@fluentui/react\";\nimport { CodeInfo, StoreInfo } from \"../models\";\nimport QRCode from \"qrcode.react\";\nimport { strings } from \"./Strings\";\nimport { QRcodeImage } from \"./QRcodeImage\";\nimport { useObserveStore } from \"../hooks/useObserveStore\";\n\nexport const PageTitle = (props: any) => {\n return (\n
\n {props.children}\n
\n );\n};\n\nexport const ParagraphTitle = (props: any) => {\n return (\n
\n \n {props.children}\n \n
\n );\n};\n\nexport const ParagraphText = (props: any) => {\n return (\n
\n {props.children}\n
\n );\n};\n\nexport const ParagraphTextPre = (props: any) => {\n return (\n
\n      {props.children}\n    
\n );\n};\n\nexport const ItemInfoStacked = ({ header, content }: { header: string; content: string }) => {\n if (!content || content === \"-\") {\n return null;\n }\n\n return (\n \n \n {header}\n \n \n {content}\n \n \n );\n};\n\nexport const CodeShowAndLinkToQRImage = ({ code }: { code: string }) => {\n const [show, setShow] = useState(false);\n\n return (\n \n \n {strings.generic_QRCode}\n \n \n setShow(true)} underline>\n {code}\n \n \n \n );\n};\n\nexport const ViewListStores = ({ id }: { id: string }) => {\n const { name, storeCodes } = useObserveStore({ storeId: id, onSaved: () => {}, onRemoved: () => {} });\n return (\n \n
    \n {storeCodes.map((c) => (\n
  • \n {c.name}\n
  • \n ))}\n
\n
\n );\n};\n\nexport const ShowList = ({ header, codesLists }: { header: string; codesLists: StoreInfo[] }) => (\n <>\n {codesLists.length > 0 && (\n \n \n \n {header}\n \n \n {codesLists.length > 0 && (\n
    \n {codesLists.map((store) => (\n
  • \n {store.name}\n
  • \n ))}\n
\n )}\n {codesLists.length === 0 && {strings.generic_noLists}}\n
\n
\n )}\n \n);\n\nexport const ParagraphLabel = (props: any) => {\n return ;\n};\n\nexport const TableRow = ({ title, content }: { title: string; content: string }) => (\n \n \n \n \n {content || \"\"}\n \n);\n\nconst classNamesIconTableRow = mergeStyleSets({\n table: {\n fontFamily: \"arial, sans-serif\",\n borderCollapse: \"collapse\",\n width: \"100%\",\n },\n td_th: {\n border: \"1px solid #dddddd\",\n textAlign: \"left\",\n padding: \"8px\",\n },\n});\n\nexport const IconTableRow = ({ iconName, description }: { iconName: string; description: string }) => (\n \n \n {\"icon\"}\n \n {description}\n \n);\n\nexport const TableRow2ColsText = ({ name, description }: { name: string; description: string }) => (\n \n {name}\n {description}\n \n);\n\nexport const StackVert = (props: any) => {\n return (\n // \n \n {props.children}\n {/* TODO: Should we add the following ? style={{ marginTop: 10 }} */}\n \n );\n};\n\nexport const StackHorizontal = (props: any) => {\n return (\n \n {props.children}\n \n );\n};\n\nexport const QRCodeInfoShow = (props: { code: CodeInfo }) => {\n // TODO: Not used\n return (\n
\n {\" \"}\n {/* TODO - 210729: why is the code here not reachable? because */}\n \n {strings.handleOwnItem_QRnumber + props.code.shortID}\n \n \n {strings.handleOwnItem_QRCode + props.code.id}\n \n \n {/* TODO - 210729: this should be made into a button with a pop-up \"Show QR code image\" */}\n ;\n \n
\n );\n};\n\nexport const OnRenderOptionDropdown = (option: any): JSX.Element => {\n const iconStyles = { marginRight: \"8px\" };\n const textStyles = { width: \"100%\" };\n\n return (\n
\n {option.data && option.data.icon && (\n \n )}\n {option.text}\n
\n );\n};\n","import React from \"react\";\nimport { IColumn, mergeStyleSets } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { ParagraphText } from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { ItemsView } from \"./ItemsView\";\nimport { Helpers } from \"../helpers\";\n\nconst strings = Language.strings;\n\ninterface ListFreezerItemsProps {\n items: CodeInfo[];\n onSelected: (code: string) => void;\n busy: boolean;\n viewDetailedList: boolean;\n}\n\nexport const ListFreezerItems = (props: ListFreezerItemsProps) => {\n const classNames = mergeStyleSets({\n fileIconHeaderIcon: {\n padding: 0,\n fontSize: \"16px\",\n },\n fileIconCell: {\n textAlign: \"center\",\n selectors: {\n \"&:before\": {\n content: \".\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n height: \"100%\",\n width: \"0px\",\n visibility: \"hidden\",\n },\n },\n },\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n });\n\n const { items, busy, viewDetailedList } = props;\n const columns: IColumn[] = [\n {\n key: \"column1\",\n name: \"File Type\",\n className: classNames.fileIconCell,\n iconClassName: classNames.fileIconHeaderIcon,\n ariaLabel: \"Column operations for File type, Press to sort on File type\",\n isIconOnly: true,\n fieldName: \"name\",\n minWidth: 20,\n maxWidth: 20,\n onRender: (item: CodeInfo) => {\n const statusIconFilename = Helpers.getStatusIconFilename(item);\n return \"State\";\n },\n },\n {\n key: \"column2\",\n name: strings.freezer_FoodTypeHeader,\n fieldName: \"name\",\n minWidth: 60,\n maxWidth: 80,\n isRowHeader: true,\n isResizable: true,\n data: \"string\",\n isPadded: true,\n onRender: (item: CodeInfo) => {\n return {item.properties ? item.properties.foodType : \"\"};\n },\n },\n {\n key: \"column3\",\n name: strings.freezer_ContentTypeHeader,\n fieldName: \"name\",\n minWidth: 60,\n maxWidth: 80,\n isRowHeader: true,\n isResizable: true,\n data: \"string\",\n isPadded: true,\n onRender: (item: CodeInfo) => {\n return {item.properties ? item.properties.contentType : \"\"};\n },\n },\n {\n key: \"column4\",\n name: strings.listFreezerItems_Frozen,\n fieldName: \"frozen\",\n minWidth: 50,\n maxWidth: 50,\n isResizable: true,\n isCollapsible: false,\n data: \"string\",\n onRender: (item: CodeInfo) => {\n if (item.properties.storageDate) {\n return {'item.properties.storageDate.toLocaleDateString()'}\n // return {item.properties.storageDate.toLocaleDateString()};\n } else {\n return -;\n }\n },\n isPadded: true,\n },\n {\n key: \"column5\",\n name: strings.listFreezerItems_Expiration,\n fieldName: \"expiration\",\n minWidth: 50,\n maxWidth: 50,\n isResizable: true,\n isCollapsible: false,\n data: \"string\",\n onRender: (item: CodeInfo) => {\n if (item.properties.expirationDate) {\n return {item.properties.expirationDate.toLocaleDateString()};\n } else {\n return -;\n }\n },\n isPadded: true,\n },\n ];\n\n const onItemInvoked = (item?: CodeInfo) => {\n if (item) {\n props.onSelected(item.id);\n }\n };\n\n return (\n \n );\n};\n","import React from \"react\";\nimport { IColumn, Icon, mergeStyleSets } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { Language } from \"./Strings\";\nimport { ItemsView } from \"./ItemsView\";\n\nconst strings = Language.strings;\n\ninterface ListHtmlItemsProps {\n items: CodeInfo[];\n onSelected: (code: string) => void;\n busy: boolean;\n viewDetailedList: boolean;\n}\n\ninterface ListHtmlItemsState {\n columns: IColumn[];\n}\n\nexport class ListHtmlItems extends React.Component {\n constructor(props: ListHtmlItemsProps) {\n super(props);\n const classNames = mergeStyleSets({\n fileIconHeaderIcon: {\n padding: 0,\n fontSize: \"16px\",\n },\n fileIconCell: {\n textAlign: \"center\",\n selectors: {\n \"&:before\": {\n content: \".\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n height: \"100%\",\n width: \"0px\",\n visibility: \"hidden\",\n },\n },\n },\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n });\n\n const columns: IColumn[] = [\n {\n key: \"column1\",\n name: \"File Type\",\n className: classNames.fileIconCell,\n iconClassName: classNames.fileIconHeaderIcon,\n ariaLabel: \"Column operations for File type, Press to sort on File type\",\n isIconOnly: true,\n fieldName: \"file\",\n minWidth: 24,\n maxWidth: 24,\n onRender: (item: CodeInfo) => {\n // const statusIconFilename = Helpers.getStatusIconFilename(item);\n return \n },\n },\n {\n key: \"column2\",\n name: strings.generic_name,\n fieldName: \"name\",\n minWidth: 80,\n maxWidth: 110,\n isRowHeader: true,\n isResizable: true,\n sortAscendingAriaLabel: \"Sorted A to Z\",\n sortDescendingAriaLabel: \"Sorted Z to A\",\n data: \"string\",\n isPadded: true,\n },\n {\n key: \"column3\",\n name: strings.listHtmlItems_created,\n fieldName: \"createdAt\",\n minWidth: 70,\n maxWidth: 90,\n isResizable: true,\n data: \"number\",\n isPadded: true,\n onRender: (item: CodeInfo) => {new Date(Date.parse(item.createdAt)).toLocaleDateString()},\n },\n {\n key: \"column4\",\n name: strings.listHtmlItems_description,\n fieldName: \"description\",\n minWidth: 120,\n maxWidth: 300,\n isResizable: true,\n isCollapsible: true,\n data: \"string\",\n isPadded: true,\n },\n ];\n\n this.state = {\n columns,\n };\n }\n\n render() {\n const { items, busy, viewDetailedList } = this.props;\n const { columns } = this.state;\n\n return (\n \n );\n }\n\n private _onItemInvoked = (item?: CodeInfo) => {\n if (item) {\n this.props.onSelected(item.id);\n }\n };\n}\n","import React from \"react\";\nimport { IColumn, Icon } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { mergeStyleSets } from \"@fluentui/react/lib/Styling\";\nimport { Language } from \"./Strings\";\nimport { ItemImage } from \"./ItemImage\";\nimport { ItemsView } from \"./ItemsView\";\nimport { ParagraphText } from \"./Controls\";\n\nconst strings = Language.strings;\n\nconst classNames = mergeStyleSets({\n fileIconHeaderIcon: {\n padding: 0,\n fontSize: \"16px\",\n },\n fileIconCell: {\n textAlign: \"center\",\n selectors: {\n \"&:before\": {\n content: \".\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n height: \"100%\",\n width: \"0px\",\n visibility: \"hidden\",\n },\n },\n },\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n controlWrapper: {\n display: \"flex\",\n flexWrap: \"wrap\",\n },\n exampleToggle: {\n display: \"inline-block\",\n marginBottom: \"10px\",\n marginRight: \"30px\",\n },\n selectionDetails: {\n marginBottom: \"20px\",\n },\n});\n\ninterface ListLostFoundItemsProps {\n items: CodeInfo[];\n onSelected: (code: string) => void;\n busy: boolean;\n viewDetailedList: boolean;\n}\n\ninterface ListLostFoundItemsState {\n columns: IColumn[];\n}\n\nexport class ListLostFoundItems extends React.Component {\n constructor(props: ListLostFoundItemsProps) {\n super(props);\n\n const columns: IColumn[] = [\n {\n key: \"column1\",\n name: \"File Type\",\n className: classNames.fileIconCell,\n iconClassName: classNames.fileIconHeaderIcon,\n ariaLabel: \"\",\n isIconOnly: true,\n fieldName: \"file\",\n minWidth: 20,\n maxWidth: 20,\n onRender: (item: CodeInfo) => {\n return \n },\n },\n {\n key: \"column2\",\n name: strings.generic_name,\n fieldName: \"name\",\n minWidth: 80,\n maxWidth: 110,\n isRowHeader: true,\n isResizable: true,\n sortAscendingAriaLabel: \"Sorted A to Z\",\n sortDescendingAriaLabel: \"Sorted Z to A\",\n data: \"string\",\n isPadded: true,\n },\n // {\n // key: \"column3\",\n // name: strings.listLostFoundItems_created,\n // fieldName: \"createdAt\",\n // minWidth: 70,\n // maxWidth: 90,\n // isResizable: true,\n // data: \"number\",\n // isPadded: true,\n // onRender: (item: CodeInfo) => {new Date(Date.parse(item.createdAt)).toLocaleDateString()},\n // },\n {\n key: \"column4\",\n name: strings.generic_description,\n fieldName: \"description\",\n minWidth: 120,\n maxWidth: 300,\n isResizable: true,\n isCollapsible: true,\n data: \"string\",\n isPadded: true,\n },\n {\n key: \"column5\",\n name: strings.listLostFoundItems_photoDescription,\n fieldName: \"photo\",\n minWidth: 120,\n maxWidth: 200,\n onRender: (item: CodeInfo) => {\n if (item.properties[\"defaultImageId\"]) {\n return ;\n } else {\n return {item.description ? item.description : strings.itemImage_NoImage};\n }\n },\n },\n ];\n\n this.state = {\n columns,\n };\n }\n\n render() {\n const { items, busy, viewDetailedList } = this.props;\n const { columns } = this.state;\n\n return (\n \n );\n }\n\n private _onItemInvoked = (item?: CodeInfo) => {\n if (item) {\n this.props.onSelected(item.id);\n }\n };\n}\n","import React from \"react\";\nimport { IColumn } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { mergeStyleSets } from \"@fluentui/react/lib/Styling\";\nimport { Helpers } from \"../helpers\";\nimport { Language } from \"./Strings\";\nimport { ItemImage } from \"./ItemImage\";\nimport { ItemsView } from \"./ItemsView\";\nimport { ParagraphText } from \"./Controls\";\n\nconst strings = Language.strings;\n\nconst classNames = mergeStyleSets({\n fileIconHeaderIcon: {\n padding: 0,\n fontSize: \"16px\",\n },\n fileIconCell: {\n textAlign: \"center\",\n selectors: {\n \"&:before\": {\n content: \".\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n height: \"100%\",\n width: \"0px\",\n visibility: \"hidden\",\n },\n },\n },\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n controlWrapper: {\n display: \"flex\",\n flexWrap: \"wrap\",\n },\n exampleToggle: {\n display: \"inline-block\",\n marginBottom: \"10px\",\n marginRight: \"30px\",\n },\n selectionDetails: {\n marginBottom: \"20px\",\n },\n});\n\ninterface ListBoxesProps {\n items: CodeInfo[];\n onSelected: (code: string) => void;\n busy: boolean;\n viewDetailedList: boolean;\n}\n\ninterface ListBoxesState {\n columns: IColumn[];\n}\n\nexport class ListBoxes extends React.Component {\n constructor(props: ListBoxesProps) {\n super(props);\n\n const columns: IColumn[] = [\n {\n key: \"column1\",\n name: \"File Type\",\n className: classNames.fileIconCell,\n iconClassName: classNames.fileIconHeaderIcon,\n ariaLabel: \"\",\n // iconName: 'Page',\n isIconOnly: true,\n fieldName: \"file\",\n minWidth: 24,\n maxWidth: 24,\n onRender: (item: CodeInfo) => {\n const statusIconFilename = Helpers.getBoxStatusIconFilename(item.properties.boxState);\n return \"State\";\n },\n },\n {\n key: \"column2\",\n name: strings.listBoxes_TagID,\n fieldName: \"short\",\n minWidth: 17,\n maxWidth: 17,\n isRowHeader: true,\n isResizable: true,\n sortAscendingAriaLabel: \"Sorted A to Z\",\n sortDescendingAriaLabel: \"Sorted Z to A\",\n data: \"string\",\n isPadded: true,\n onRender: (item: CodeInfo) => {\n return {item.shortID ? item.shortID : \"\"};\n },\n },\n {\n key: \"column3\",\n name: strings.listBoxes_Content,\n fieldName: \"Content\",\n minWidth: 30,\n maxWidth: 50,\n isRowHeader: true,\n isResizable: true,\n sortAscendingAriaLabel: \"Sorted A to Z\",\n sortDescendingAriaLabel: \"Sorted Z to A\",\n data: \"string\",\n isPadded: true,\n onRender: (item: CodeInfo) => {\n return {item.properties.content ? item.properties.content : \"\"};\n },\n },\n // {\n // key: \"column4\",\n // name: strings.listBoxes_Location,\n // fieldName: \"location\",\n // minWidth: 60,\n // maxWidth: 100,\n // isResizable: true,\n // isCollapsible: true,\n // data: \"string\",\n // isPadded: true,\n // onRender: (item: CodeInfo) => {\n // return {item.properties.location ? item.properties.location : \"\"};\n // },\n // },\n // {\n // key: \"column5\",\n // name: strings.listBoxes_Stored,\n // fieldName: \"storedAt\",\n // minWidth: 70,\n // maxWidth: 90,\n // isResizable: true,\n // isCollapsible: true,\n // data: \"number\",\n // isPadded: true,\n // onRender: (item: CodeInfo) => {new Date(Date.parse(item.createdAt)).toLocaleDateString()},\n // },\n {\n key: \"column6\",\n name: strings.listBoxes_Photo,\n fieldName: \"photo\",\n minWidth: 120,\n maxWidth: 200,\n // isResizable: true,\n // isCollapsible: true,\n // data: 'string',\n // onColumnClick: this._onColumnClick,\n onRender: (item: CodeInfo) => {\n if (item.properties[\"defaultImageId\"]) {\n return ;\n } else {\n return {item.description ? item.description : strings.itemImage_NoImage};\n }\n },\n isPadded: true,\n },\n ];\n\n this.state = {\n columns,\n };\n }\n\n render() {\n const { items, busy, viewDetailedList } = this.props;\n const { columns } = this.state;\n return (\n \n );\n }\n\n private _onItemInvoked = (item?: CodeInfo) => {\n if (item) {\n this.props.onSelected(item.id);\n }\n };\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Stack, Image, PrimaryButton, Toggle } from \"@fluentui/react\";\nimport { PageTitle, ParagraphLabel, ParagraphText, ParagraphTitle, StackHorizontal, StackVert } from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { useTheme } from \"../hooks/useTheme\";\nimport { useHistory } from \"react-router-dom\";\n\nconst strings = Language.strings;\n\nexport const TagTypeOverview = () => {\n const {\n showStaticCodes,\n showStorageCodes,\n showLostAndFoundCodes,\n showFreezerCodes,\n showHtmlCodes,\n imageDir,\n } = useTheme();\n\n const history = useHistory();\n const [viewPrivateMode, setviewPrivateMode] = useState(localStorage.getItem(\"viewPrivateBusiness\") === \"private\");\n\n useEffect(\n () => localStorage.setItem(\"viewPrivateBusiness\", viewPrivateMode ? \"private\" : \"business\"),\n [viewPrivateMode]\n );\n // TODO: Store the viewPrivateBusiness in userObserveUsers instead/too\n\n return (\n \n {!viewPrivateMode && (\n \n {strings.tagTypeOverview_pageHeader}\n \n setviewPrivateMode(checked || false)}\n onText={strings.tagTypeOverview_business}\n offText={strings.tagTypeOverview_private}\n />\n \n {strings.tagTypeOverview_intro}\n \n \n {strings.tagTypeOverview_RegisterLoginInfo}\n {/* TODO: How to push to register user */}\n {/* \n {strings.tagTypeOverview_RegisterLogin}\n */}\n \n \n history.push(\"/register\")}>{strings.home_loginRegister}\n \n {showStorageCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitStorage}\n {strings.tagTypeOverview_QRitStorage1}\n {/* */}\n \n \n \n \n {strings.tagTypeOverview_QRitStorage2}\n
\n )}\n {/* {showKeyCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitKeys}\n {strings.tagTypeOverview_QRitKeys1}\n \n {strings.tagTypeOverview_QRitKeys2}\n
\n )} */}\n {showStaticCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitStatic}\n {strings.tagTypeOverview_QRitStatic1}\n \n {/* \n \n \n */}\n {strings.tagTypeOverview_QRitStatic2}\n
\n )}\n {showLostAndFoundCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitLostFound}\n {strings.tagTypeOverview_QRitLostFound1}\n {/* */}\n \n \n \n \n \n \n {strings.tagTypeOverview_QRitLostFound2}\n
\n )}\n {showFreezerCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitFreezer}\n {strings.tagTypeOverview_QRitFreezer1}\n \n {strings.tagTypeOverview_QRitFreezer2}\n
\n )}\n {showHtmlCodes && (\n \n
\n
\n {strings.tagTypeOverview_lblHeaderQRitHtml}\n {strings.tagTypeOverview_QRitHtml1}\n {/* \n \n \n */}\n {strings.tagTypeOverview_QRitHtml2}\n \n )}\n \n )}\n\n {viewPrivateMode && (\n \n {strings.tagTypeOverview_pageHeader}\n \n setviewPrivateMode(checked || false)}\n onText={strings.tagTypeOverview_business}\n offText={strings.tagTypeOverview_private}\n />\n \n {strings.tagTypeOverview_intro_BB}\n \n \n {strings.tagTypeOverview_RegisterLoginInfo_BB}\n {/* TODO: How to push to register user */}\n {/* \n {strings.tagTypeOverview_RegisterLogin}\n */}\n \n \n history.push(\"/register\")}>{strings.home_loginRegister}\n \n {showStorageCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitStorage_BB}\n {strings.tagTypeOverview_QRitStorage1_BB}\n {/* */}\n \n \n \n \n {strings.tagTypeOverview_QRitStorage2_BB}\n
\n )}\n {/* {showKeyCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitKeys_BB}\n {strings.tagTypeOverview_QRitKeys1_BB}\n \n {strings.tagTypeOverview_QRitKeys2_BB}\n
\n )} */}\n {showStaticCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitStatic_BB}\n {strings.tagTypeOverview_QRitStatic1_BB}\n \n {/* \n \n \n */}\n {strings.tagTypeOverview_QRitStatic2_BB}\n
\n )}\n {showLostAndFoundCodes && (\n \n
\n {strings.tagTypeOverview_lblHeaderQRitLostFound_BB}\n {strings.tagTypeOverview_QRitLostFound1_BB}\n \n {/* */}\n \n \n \n \n \n \n {strings.tagTypeOverview_QRitLostFound2_BB}\n
\n )}\n {showFreezerCodes && (\n // TODO: This is not a freezer\n \n
\n {strings.tagTypeOverview_lblHeaderQRitRestaurant_BB}\n {strings.tagTypeOverview_QRitRestaurant1_BB}\n {/* */}\n {strings.tagTypeOverview_QRitRestaurant2_BB}\n
\n )}\n {showHtmlCodes && (\n \n
\n
\n {strings.tagTypeOverview_lblHeaderQRitHtml_BB}\n {strings.tagTypeOverview_QRitHtml1_BB}\n {/* \n \n \n */}\n \n )}\n \n )}\n \n );\n};\n","import React from \"react\";\nimport { IColumn } from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport { mergeStyleSets } from \"@fluentui/react/lib/Styling\";\nimport { Helpers } from \"../helpers\";\nimport { ItemImage } from \"./ItemImage\";\nimport { useObserveStore, useObserveStrings } from \"../hooks\";\nimport { ItemsView } from \"./ItemsView\";\n\nconst classNames = mergeStyleSets({\n fileIconHeaderIcon: {\n padding: 0,\n fontSize: \"16px\",\n },\n fileIconCell: {\n textAlign: \"center\",\n selectors: {\n \"&:before\": {\n content: \".\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n height: \"100%\",\n width: \"0px\",\n visibility: \"hidden\",\n },\n },\n },\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n controlWrapper: {\n display: \"flex\",\n flexWrap: \"wrap\",\n },\n exampleToggle: {\n display: \"inline-block\",\n marginBottom: \"10px\",\n marginRight: \"30px\",\n },\n selectionDetails: {\n marginBottom: \"20px\",\n },\n});\n\ninterface ListStoreItemsProps {\n storeId: string;\n onSelected: (code: string) => void;\n busy: boolean;\n viewDetailedList: boolean;\n search?: string;\n}\n\nexport const ListStoreItems = (props: ListStoreItemsProps) => {\n const { storeId, busy, viewDetailedList, search } = props;\n const strings = useObserveStrings();\n const { storeCodes } = useObserveStore({ storeId, onSaved: () => {}, onRemoved: () => {} });\n const filteredCodes =\n search && search.trim().length > 0\n ? storeCodes.filter((c) => c.name.toLowerCase().includes(search.toLowerCase()))\n : storeCodes;\n\n const onItemInvoked = (item?: CodeInfo) => {\n if (item) {\n props.onSelected(item.id);\n }\n };\n\n const columns: IColumn[] = [\n {\n key: \"column1\",\n name: \"File Type\",\n className: classNames.fileIconCell,\n iconClassName: classNames.fileIconHeaderIcon,\n ariaLabel: \"Column operations for File type, Press to sort on File type\",\n isIconOnly: true,\n fieldName: \"name\",\n minWidth: 24,\n maxWidth: 24,\n onRender: (item: CodeInfo) => {\n const statusIconFilename = Helpers.getStatusIconFilename(item);\n return \"State\";\n },\n },\n {\n key: \"column2\",\n name: strings.generic_name,\n fieldName: \"name\",\n minWidth: 80,\n maxWidth: 110,\n isRowHeader: true,\n isResizable: true,\n sortAscendingAriaLabel: \"Sorted A to Z\",\n sortDescendingAriaLabel: \"Sorted Z to A\",\n data: \"string\",\n isPadded: true,\n },\n {\n key: \"column4\",\n name: strings.generic_description,\n fieldName: \"description\",\n minWidth: 120,\n maxWidth: 200,\n isResizable: true,\n isCollapsible: true,\n data: \"string\",\n isPadded: true,\n },\n {\n key: \"column5\",\n name: strings.listItems_photo,\n fieldName: \"photo\",\n minWidth: 120,\n maxWidth: 200,\n onRender: (item: CodeInfo) => {\n // if (item.properties.type !== \"freezer\") {\n const id = item.properties ? item.properties[\"defaultImageId\"] || \"\" : \"\";\n return ;\n // } else {\n // return <>;\n // }\n },\n isPadded: true,\n },\n ];\n\n return (\n \n );\n};\n","import React, { useState } from \"react\";\nimport { Stack, PrimaryButton, TextField, Spinner, MessageBar, MessageBarType } from \"@fluentui/react\";\nimport { ParagraphLabel } from \"./Controls\";\nimport { Helpers } from \"../helpers\";\nimport { strings } from \"./Strings\";\n\nexport const FeedbackForm = ({ extra }: { extra: string }) => {\n const [feedback, setFeedback] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const [sent, setSent] = useState(false);\n const [error, setError] = useState(false);\n\n const sendFeedback = async () => {\n try {\n if (feedback.trim().length !== 0) {\n setSent(false);\n setBusy(true);\n await Helpers.postFeedbackMessage(feedback + \"\\n\\n\" + extra);\n setFeedback(\"\");\n setSent(true);\n }\n } catch {\n setError(true);\n } finally {\n setBusy(false);\n }\n };\n\n return (\n \n \n {strings.titleWithInfo_reportMisuse}\n setFeedback(newValue || \"\")}\n />\n \n \n \n {busy && }\n {sent && (\n setSent(false)}>\n {strings.titleWithInfo_reportMisuseSent}\n \n )}\n {error && (\n setError(false)}>\n {strings.titleWithInfo_reportMisuseError}\n \n )}\n \n \n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { Stack, Panel, IconButton } from \"@fluentui/react\";\nimport { FeedbackForm } from \"./FeedbackForm\";\n\nexport const ShowInfoOnly = ({ infoTitle, children }: { infoTitle: string; children: any }) => {\n const [showHelp, setShowHelp] = useState(false);\n\n return (\n \n setShowHelp(true)} />\n setShowHelp(false)} closeButtonAriaLabel=\"Close\">\n {children}\n \n \n \n );\n};\n","import { IDropdownStyles, IComboBoxOption, IDropdownOption, Dropdown } from \"@fluentui/react\";\nimport React, { useEffect, useState } from \"react\";\n\nconst dropdownStyles: Partial = { dropdown: { width: 300 } };\n\nexport const MultiItemSelect = ({\n placeholder,\n label,\n items,\n // onRenderItem,\n onSelected,\n selectedItems,\n}: {\n // options: [{ key: string; text: string }];\n placeholder?: string;\n label?: string;\n items: IComboBoxOption[];\n // onRenderItem?: (item: any) => JSX.Element;\n onSelected: (selectedKeys: string[]) => void;\n selectedItems: string[];\n}) => {\n const [selectedKeys, setSelectedKeys] = useState(selectedItems);\n\n useEffect(() => {\n setSelectedKeys(selectedItems);\n }, [selectedItems]);\n\n const onChange = (_event: React.FormEvent, item?: IDropdownOption): void => {\n if (item) {\n setSelectedKeys(\n item.selected ? [...selectedKeys, item.key as string] : selectedKeys.filter((key) => key !== item.key)\n );\n }\n };\n\n const onRenderTitle = (options: any) => {\n return (\n \n {(options || []).map(({ key }: { key: any }) => items.find((c) => c.key === key)!.text).join(\", \")}\n {/* .map((o: { key: any }) => items.find((c) => c.id === o.key)!.name)\n .join(\", \")} */}\n \n );\n };\n\n return (\n onSelected(selectedKeys)}\n onRenderTitle={onRenderTitle}\n // onRenderItem={onRenderItem}\n />\n );\n};\n","import React from \"react\";\n\nimport { ParagraphLabel } from \".\";\nimport { Store, StoreInfo } from \"../models\";\nimport { MultiItemSelect } from \"./MultiItemSelect\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface ListsDropdownProps {\n label: string;\n lists: Store[];\n selectedLists: string[];\n setCodeStores: (stores: StoreInfo[]) => void;\n setError: (error: string) => void;\n setInfo: (info: string) => void;\n ownerUserId: string;\n}\n\nexport const ListsDropdown = ({\n label,\n lists: stores,\n selectedLists,\n setCodeStores,\n setInfo,\n setError,\n ownerUserId,\n}: ListsDropdownProps) => {\n const onStoresSelected = (storeIds: string[]) => {\n const requireCodesOwnerChangeCountTotal = storeIds.filter((storeId) => {\n const store = stores.find((s) => s.id === storeId);\n return store && store.requireCodesOwnerChange;\n }).length;\n\n const requireCodesOwnerChangeCount = storeIds.filter((storeId) => {\n const store = stores.find((s) => s.id === storeId);\n return store && store.requireCodesOwnerChange && store.userId !== ownerUserId;\n }).length;\n\n setInfo(\"\");\n setError(\"\");\n if (requireCodesOwnerChangeCountTotal > 1) {\n setError(strings.editStatic_codeCannotBelongToMoreThanOne);\n } else if (requireCodesOwnerChangeCount === 1) {\n setInfo(strings.editStatic_codeWillChangeOwner);\n }\n\n setCodeStores(\n storeIds.map((k) => {\n const store = stores.find((s) => s.id === k)!;\n return {\n id: store.id,\n name: store.name,\n description: store.description,\n } as StoreInfo;\n })\n );\n };\n\n return (\n <>\n {label}\n ({\n key: s.id,\n text: s.name + (s.requireCodesOwnerChange ? \" ⚠\" : \"\"),\n item: s,\n }))}\n onSelected={onStoresSelected}\n />\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Checkbox, Stack } from \"@fluentui/react\";\nimport { ParagraphText, StackVert } from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { useObserveUser } from \"../hooks/useObserveUser\";\nimport { ListsDropdown } from \"./ListsDropdown\";\n\nconst strings = Language.strings;\n\nexport const TabSettings = ({\n tabChoices,\n onTabChoiceChange,\n}: {\n tabChoices: string[];\n onTabChoiceChange: (tabChoices: string[]) => Promise;\n}) => {\n const { stores, userId } = useObserveUser();\n\n const [tabState, setTabState] = useState({\n showTabStatic: false,\n showTabBoxes: false,\n showTabLostFound: false,\n showTabFreezer: false,\n showTabMessages: false,\n selectedLists: [] as string[],\n });\n\n useEffect(() => {\n if (tabChoices) {\n setTabState({\n showTabStatic: tabChoices.some((x) => x === \"static\"),\n showTabBoxes: tabChoices.some((x) => x === \"boxes\"),\n showTabLostFound: tabChoices.some((x) => x === \"lostFound\"),\n showTabFreezer: tabChoices.some((x) => x === \"freezer\"),\n showTabMessages: tabChoices.some((x) => x === \"html\"),\n selectedLists: tabChoices.filter((x) => x.length > 20),\n });\n }\n }, [tabChoices]);\n\n const getTabChoices = (tabState: any) => {\n let tabChoices: string[] = [];\n if (tabState.showTabStatic) tabChoices.push(\"static\");\n if (tabState.showTabBoxes) tabChoices.push(\"boxes\");\n if (tabState.showTabLostFound) tabChoices.push(\"lostFound\");\n if (tabState.showTabFreezer) tabChoices.push(\"freezer\");\n if (tabState.showTabMessages) tabChoices.push(\"html\");\n tabChoices = tabChoices.concat(tabState.selectedLists);\n return tabChoices;\n };\n\n const setState = (newState: any) => {\n setTabState(newState);\n onTabChoiceChange(getTabChoices(newState));\n };\n\n return (\n \n {/* \n {strings.userSettings_manageViewTabs}\n \n \n {strings.userSettings_ChooseWhichTabsToShow}\n */}\n \n \n setState({ ...tabState, showTabStatic: !!checked })}\n />\n setState({ ...tabState, showTabBoxes: !!checked })}\n />\n setState({ ...tabState, showTabLostFound: !!checked })}\n />\n setState({ ...tabState, showTabFreezer: !!checked })}\n />\n setState({ ...tabState, showTabMessages: !!checked })}\n />\n \n \n \n {strings.userSettings_ChooseWhichTabsToShow}\n \n {userId && (\n \n setState({ ...tabState, selectedLists: cs.map((c) => c.id) })}\n label={strings.editStatic_ListsHeader}\n selectedLists={tabState.selectedLists}\n lists={stores}\n ownerUserId={userId!}\n setError={() => {}}\n setInfo={() => {}}\n />\n \n )}\n \n );\n};\n","import React from \"react\";\nimport { Panel } from \"@fluentui/react\";\nimport { TabSettings } from \"./TabSettings\";\nimport { strings } from \"./Strings\";\nimport { ParagraphText } from \"./Controls\";\n\nexport const TabSettingsPanel = ({\n isOpen,\n onDismiss,\n tabChoices,\n onTabChoiceChange,\n}: {\n isOpen: boolean;\n onDismiss: () => void;\n tabChoices: string[];\n onTabChoiceChange: (tabChoices: string[]) => Promise;\n}) => {\n return (\n \n {strings.userSettings_ChooseWhichTabsToShow}\n \n \n );\n};\n","import * as React from \"react\";\nimport {\n IconButton,\n mergeStyleSets,\n MessageBar,\n MessageBarType,\n Pivot,\n PivotItem,\n SearchBox,\n Stack,\n} from \"@fluentui/react\";\nimport { CodeInfo } from \"../models\";\nimport queryString from \"query-string\";\nimport Api from \"../api\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport { ListItems } from \"./ListItems\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { IconTableRow, ParagraphLabel, StackHorizontal, StackVert, TableRow2ColsText } from \"./Controls\";\nimport { ListFreezerItems } from \"./ListFreezerItems\";\nimport { Language } from \"./Strings\";\nimport { ListHtmlItems } from \"./ListHtmltems\";\nimport { ListLostFoundItems } from \"./ListLostFoundItems\";\nimport { ListBoxes } from \"./ListBoxes\";\nimport { useTheme } from \"../hooks/useTheme\";\nimport { useEffect, useState } from \"react\";\nimport { TagTypeOverview } from \"./TagTypeOverview\";\nimport { useObserveUser } from \"../hooks\";\nimport { ListStoreItems } from \"./ListStoreItems\";\nimport { ShowInfoOnly } from \"./ShowInfoOnly\";\nimport { TabSettingsPanel } from \"./TabSettingsPanel\";\n\nconst strings = Language.strings;\n\nexport const Home = (props: RouteComponentProps<{}>) => {\n // Take qr code from query string (format: ?s=xxxxxx) => for backward compability\n const { list, s } = queryString.parse(window.location.search);\n const _qrCode = s ? (s as string) : undefined;\n if (_qrCode) window.location.href = \"/\" + _qrCode;\n\n const { showFreezerCodes, showHtmlCodes, showLostAndFoundCodes, showStaticCodes, showStorageCodes } = useTheme(\n strings.Shureguard ? \"shuregard\" : \"qrit\"\n );\n\n const { tabChoices, stores, onTabChoiceChange } = useObserveUser();\n\n const [userId] = useState(localStorage.getItem(\"userId\"));\n const [items, setItems] = useState([]);\n const [qrCode, setQrCode] = useState(_qrCode);\n const [busy, setBusy] = useState(false);\n const [view, setView] = useState(\"0\");\n const [error, setError] = useState();\n const [search, setSearch] = useState(\"\");\n const [staticItems, setStaticItems] = useState([]);\n const [freezeItems, setFreezeItems] = useState([]);\n const [lostFoundItems, setLostFoundItems] = useState([]);\n const [htmlItems, setHtmlItems] = useState([]);\n const [boxesItems, setBoxesItems] = useState([]);\n const [viewDetailedList, setViewDetailedList] = useState(localStorage.getItem(\"viewMode\") === \"list\");\n // const [_codeInfo, setCodeInfo] = useState();\n const [pivotItems, setPivotItems] = useState([]);\n const [showTabSettingsPanel, setShowTabSettingsPanel] = useState(false);\n\n useEffect(() => {\n if (list && stores && tabChoices && stores.length > 0) {\n const store = stores.find((s) => s.id === list);\n if (store) {\n const hasListInTabChoices = tabChoices.some((id, i) => store.id === id);\n if (!hasListInTabChoices) {\n const newTabChoices = [...tabChoices, list as string];\n onTabChoiceChange(newTabChoices).then(() => {\n const index = newTabChoices.indexOf(store.id);\n setView((index + 5).toString());\n if (window.history !== undefined && window.history.pushState !== undefined) {\n window.history.pushState({}, document.title, window.location.pathname);\n }\n });\n } else {\n const index = tabChoices.indexOf(store.id);\n setView((index + 5).toString());\n if (window.history !== undefined && window.history.pushState !== undefined) {\n window.history.pushState({}, document.title, window.location.pathname);\n }\n }\n }\n }\n }, [list, stores, tabChoices, onTabChoiceChange]);\n\n const classNamesIconTableRow = mergeStyleSets({\n table: {\n fontFamily: \"arial, sans-serif\",\n borderCollapse: \"collapse\",\n width: \"100%\",\n },\n td_th: {\n border: \"1px solid #dddddd\",\n textAlign: \"left\",\n padding: \"8px\",\n },\n });\n\n useEffect(() => {\n const _getCodeDetails = async () => {\n if (qrCode) {\n try {\n // const codeInfo =\n await Api.getCode(qrCode!);\n // console.log('code info = ', codeInfo);\n // setCodeInfo(codeInfo);\n } catch {\n try {\n const ok = await Api.verifyCode(qrCode!);\n if (ok) {\n props.history.push(\"/registerItemManually?s=\" + qrCode);\n } else {\n setError(strings.home_codeDetailsFailedGetInfo);\n }\n } catch {\n setError(strings.home_codeDetailsFailedGetInfo);\n }\n }\n }\n };\n\n const _updateCodes = async () => {\n setBusy(true);\n setError(undefined);\n try {\n const codes = await Api.getCodesForUser();\n setBusy(false);\n setItems(codes);\n } catch (err) {\n setBusy(false);\n setError(\"Internal error: code retrieval failed\");\n }\n };\n\n if (userId) {\n _updateCodes();\n _getCodeDetails();\n } else {\n const { s } = queryString.parse(window.location.search);\n if (s) {\n setQrCode(s as string);\n _getCodeDetails();\n }\n }\n\n const view = localStorage.getItem(\"view\");\n if (view) {\n setView(view);\n }\n }, [props.history, qrCode, userId]);\n\n const openItem = (code: string) => props.history.push(\"/\" + code);\n\n // const staticItems = items.filter(i => Helpers.isStaticCodeType(i.properties));\n // TODO: Update so that all codes hvae a type\n // const staticItems = items.filter(\n // (i) =>\n // i.type === 'static'\n // );\n useEffect(() => localStorage.setItem(\"viewMode\", viewDetailedList ? \"list\" : \"grid\"), [viewDetailedList]);\n useEffect(() => {\n const match = (i: CodeInfo, s: string) =>\n `${i.name} \n ${i.description} \n ${i.id} \n ${i.shortID} \n ${i.properties.content}\n ${i.properties.contentType}\n ${i.properties.boxState}\n ${i.properties.foodType}\n ${i.properties.location}\n ${i.properties.room}\n ${i.properties.type}\n ${i.properties.itemType}\n ${i.properties.content}`\n .toLocaleUpperCase()\n .includes(s.toLocaleUpperCase());\n const matches = (i: CodeInfo) => search.split(\" \").every((s) => match(i, s));\n const filter = (type: string) =>\n items\n .filter((i) => i.type === type)\n .filter((i) => {\n return search.trim().length === 0 || match(i, search) || matches(i);\n });\n setStaticItems(filter(\"static\"));\n setFreezeItems(filter(\"freezer\"));\n setLostFoundItems(filter(\"lostFound\"));\n setHtmlItems(filter(\"html\"));\n setBoxesItems(filter(\"boxes\"));\n }, [search, items]);\n\n const selectList = (itemKey: string) => {\n localStorage.setItem(\"view\", itemKey);\n setView(itemKey);\n // console.log(\"setView\", itemKey);\n };\n\n const onPivotItemClick = (pi?: PivotItem) => {\n if (pi && pi.props.itemKey) {\n if (pi.props.itemKey === \"+\") {\n setShowTabSettingsPanel(true);\n } else {\n selectList(pi.props.itemKey);\n }\n }\n };\n\n useEffect(() => {\n setPivotItems([\n showStaticCodes && (!tabChoices || tabChoices.includes(\"static\")),\n showStorageCodes && (!tabChoices || tabChoices.includes(\"boxes\")),\n showLostAndFoundCodes && (!tabChoices || tabChoices.includes(\"lostFound\")),\n showFreezerCodes && !!tabChoices && tabChoices.includes(\"freezer\"),\n showHtmlCodes && !!tabChoices && tabChoices.includes(\"html\"),\n ...(tabChoices || []).map((t) => t.length > 20),\n ]);\n }, [tabChoices, showStaticCodes, showStorageCodes, showLostAndFoundCodes, showFreezerCodes, showHtmlCodes]);\n\n useEffect(() => {\n let start: number | undefined;\n const touchStart = (event: TouchEvent) => {\n if (event.touches.length === 1) {\n //just one finger touched\n start = event.touches[0].clientX;\n // console.log(\"TOUCH START\", start);\n } else {\n //a second finger hit the screen, abort the touch\n start = undefined;\n }\n };\n\n const touchEnd = (event: TouchEvent) => {\n var offset = 100; //at least 100px are a swipe\n if (start && event.changedTouches.length === 1) {\n //the only finger that hit the screen left it\n var end = event.changedTouches[0].clientX;\n\n let index = view !== undefined ? +view : 0;\n if (end > start + offset) {\n //a left -> right swipe\n do {\n index = (index - 1 + pivotItems.length) % pivotItems.length;\n } while (!pivotItems[index]);\n selectList(index.toString());\n }\n if (end < start - offset) {\n //a right -> left swipe\n do {\n index = (index + 1) % pivotItems.length;\n } while (!pivotItems[index]);\n selectList(index.toString());\n }\n }\n };\n\n window.addEventListener(\"touchstart\", touchStart);\n window.addEventListener(\"touchend\", touchEnd);\n\n return () => {\n window.removeEventListener(\"touchstart\", touchStart);\n window.removeEventListener(\"touchend\", touchEnd);\n };\n }, [pivotItems, view]);\n\n return (\n \n
\n \n {error && (\n setError(undefined)}>\n {error}\n \n )}\n\n {!userId && (\n <>\n \n {/* */}\n \n )}\n\n {userId && (\n \n \n setSearch(s || \"\")}\n />\n \n \n setViewDetailedList(!viewDetailedList)}\n title={viewDetailedList ? strings.homePage_list : strings.homePage_grid}\n />\n \n \n \n \n \n {strings.homePage_infoGeneralHelp}\n \n \n
    \n
  • {strings.homePage_info0}
  • \n
  • {strings.homePage_info1}
  • \n
  • {strings.homePage_info2}
  • \n
  • {strings.homePage_info3}
  • \n
  • {strings.homePage_info4}
  • \n
  • {strings.homePage_info5}
  • \n
  • {strings.homePage_info6}
  • \n
  • {strings.homePage_info7}
  • \n
  • {strings.homePage_info8}
  • \n
\n
\n {(view === \"0\" || view === \"1\") && (\n \n {strings.home_iconTableWhatDoTheIconsMean}\n \n )}\n \n {(view === \"0\" || view === \"1\") && (\n \n \n \n \n \n \n \n {view === \"0\" && (\n \n \n \n \n \n \n \n )}\n {view === \"1\" && (\n \n \n \n \n \n \n \n {/* */}\n \n )}\n
{strings.home_iconTableHeaderIcon}{strings.home_iconTableHeaderDescription}
\n )}\n
\n \n {strings.home_tagTypeTableWhatAreTheTagTypes}\n \n \n
  • \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {strings.home_tagTypeTableCodeTypeName}{strings.home_tagTypeTableDescription}
    \n
  • \n
    \n
    \n
    \n
    \n
    \n )}\n {userId && (\n \n {pivotItems[0] && (\n \n \n \n )}\n {pivotItems[1] && (\n \n \n \n )}\n {pivotItems[2] && (\n \n \n \n )}\n {pivotItems[3] && (\n \n \n \n )}\n {pivotItems[4] && (\n \n \n \n )}\n {tabChoices &&\n tabChoices.map((id, i) => {\n if (id.length <= 20) return null;\n const store = stores.find((s) => s.id === id);\n if (!store) return null;\n return (\n \n \n \n );\n })}\n \n \n )}\n
    \n setShowTabSettingsPanel(false)}\n tabChoices={tabChoices}\n onTabChoiceChange={onTabChoiceChange}\n />\n \n );\n};\n","import * as React from \"react\";\nimport { Stack } from \"@fluentui/react\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { StackVert, PageTitle, ParagraphTitle, ParagraphText } from \"./Controls\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nexport class Privacy extends React.Component {\n render() {\n return (\n \n
    \n {/* */}\n {/* \n \n

    \n qrit.app\n \n */}\n {/*

    */}\n \n \n \n \n {strings.privacy_deliveryTermsHeader}\n {strings.privacy_deliveryTerms}\n {strings.privacy_deliveryTermsMissDelivery}\n {strings.privacy_personalInfoHeader}\n {strings.privacy_personalInfoUseInfo}\n {strings.privacy_cookies}\n {strings.privacy_cookiesInfo}\n {strings.privacy_infoStorageHeader}\n {strings.privacy_infoStorageInfoSSL}\n {strings.privacy_infoStorageInfoEncrypt}\n {strings.privacy_personalInfoPurchaseHeading}\n {strings.privacy_personalInfoPurchaseInfo}\n {strings.privacy_pricesHeader}\n {strings.privacy_pricesInfo}\n {strings.privacy_giveBackHeader}\n {strings.privacy_giveInfo}\n {strings.privacy_returningHeader}\n {strings.privacy_returningInfo}\n {strings.privacy_exchangeHeader}\n {strings.privacy_exchangeInfo}\n {strings.privacy_payBackHeader}\n {strings.privacy_payBackInfo}\n {strings.privacy_payBackInfoDelivery}\n {strings.privacy_goodToHaveLinksHeader}\n
      \n
    • \n {strings.privacy_goodToHaveLinksConsumerService}{\" \"}\n \n (Konsumentverket)\n \n
    • \n
    • \n {strings.privacy_goodToHaveLinksConsumerARN} (ARN)\n
    • \n
    • \n {strings.privacy_goodToHaveLinksArbitration}\n (Konsumentverket)\n
    • \n
    \n {strings.privacy_complaintsHeader}\n {strings.privacy_complaintsInfo}\n
    \n \n
    \n
    \n
    \n {}\n
    \n );\n }\n}\n","import React, { Component } from 'react';\n\nexport class FetchData extends Component {\n static displayName = FetchData.name;\n\n constructor(props) {\n super(props);\n this.state = { forecasts: [], loading: true };\n }\n\n componentDidMount() {\n this.populateWeatherData();\n }\n\n static renderForecastsTable(forecasts) {\n return (\n \n \n \n \n \n \n \n \n \n \n {forecasts.map(forecast =>\n \n \n \n \n \n \n )}\n \n
    DateTemp. (C)Temp. (F)Summary
    {forecast.date}{forecast.temperatureC}{forecast.temperatureF}{forecast.summary}
    \n );\n }\n\n render() {\n let contents = this.state.loading\n ?

    Loading...

    \n : FetchData.renderForecastsTable(this.state.forecasts);\n\n return (\n
    \n

    Weather forecast

    \n

    This component demonstrates fetching data from the server.

    \n {contents}\n
    \n );\n }\n\n async populateWeatherData() {\n const response = await fetch('weatherforecast');\n const data = await response.json();\n this.setState({ forecasts: data, loading: false });\n }\n}\n","import React, { Component } from 'react';\n\nexport class Counter extends Component {\n static displayName = Counter.name;\n\n constructor(props) {\n super(props);\n this.state = { currentCount: 0 };\n this.incrementCounter = this.incrementCounter.bind(this);\n }\n\n incrementCounter() {\n this.setState({\n currentCount: this.state.currentCount + 1\n });\n }\n\n render() {\n return (\n
    \n

    Counter

    \n\n

    This is a simple example of a React component.

    \n\n

    Current count: {this.state.currentCount}

    \n\n \n
    \n );\n }\n}\n","import * as React from \"react\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { StackVert } from \"./Controls\";\nimport { TagTypeOverview } from \"./TagTypeOverview\";\n\nexport const About = () => (\n \n
    \n \n \n \n \n);\n","import * as React from \"react\";\nimport { PrimaryButton, Stack } from \"@fluentui/react\";\nimport { CodeInfo, UserInfo, Purchase } from \"../models\";\nimport queryString from \"query-string\";\nimport Api from \"../api\";\nimport { Content } from \"./Content\";\nimport { ParagraphTitle, ParagraphText } from \"./Controls\";\n\ninterface AdminProps {}\ninterface AdminState {\n userId: string | null;\n userInfo?: UserInfo;\n userIsAdmin: boolean;\n state: \"address_scanned\" | \"waiting_for_batch_scan\" | undefined;\n\n // Buyer\n buyerInfo?: UserInfo;\n buyerGUID?: string;\n purchases: Purchase[];\n\n // QR code (from ?s=xxxxxx)\n qrCode?: string;\n codeInfo?: CodeInfo; // to get the BatchID\n\n // Tag purchase info\n numTags: number;\n buyDigital: boolean;\n}\n\nexport class Admin extends React.Component {\n constructor(props: AdminProps) {\n super(props);\n\n // Take qr code from query string (format: ?s=xxxxxx)\n // TODO: How to parse with /admin in the URL instead\n const { s } = queryString.parse(window.location.search);\n const buyerGUID = s ? (s as string) : undefined;\n\n this.state = {\n userId: localStorage.getItem(\"userId\"),\n state: \"address_scanned\",\n numTags: 0,\n userIsAdmin: false,\n buyerGUID,\n buyDigital: false,\n purchases: [],\n };\n }\n\n async componentDidMount() {\n if (this.state.userId && this.state.buyerGUID) {\n await this._getBuyerInfo();\n }\n }\n\n async componentDidUpdate(prevProps: AdminProps, prevState: AdminState) {\n if (prevState.buyerGUID === null && this.state.buyerGUID !== null) {\n await this._getBuyerInfo();\n }\n }\n\n render() {\n return (\n \n \n \n {/* UserID and scanned address */}\n {!this.state.userId && (\n <>\n {this.state.state !== \"address_scanned\" && this._getBuyerInfo() && (\n <>\n {\n <>\n {/* TODO 1: Get userInfo. Specifically check if userIsAdmin\n TODO 2: Get the buyers Info (address etc)\n TODO 3: Get the information about the buyers purchases */}\n Du har skannat en address med buyerGUID {this.state.buyerGUID}.\n \n Skanna en ny batch inom 2 minuter, eller välj att återställa (för att skanna en annan).\n \n \n }\n this.setState({ state: undefined })}>\n Avbryt denna addresskanning\n \n \n )}\n\n {\n this.state.state === \"waiting_for_batch_scan\" // what to do?\n }\n \n )}\n \n
    \n \n );\n }\n\n // private _registerNewCode = async (title: string, description: string) => {\n // const response = await Api.registerCode(this.state.qrCode!, this.state.userId!, title, description);\n // alert(JSON.stringify(response));\n // if (response.success) {\n // const codes = await Api.getCodesForUser(this.state.userId!);\n // console.log('new codes', codes);\n // this.setState({ qrCode: undefined, codeInfo: undefined, items: codes });\n // }\n // }\n\n private _getBuyerInfo = async () => {\n if (this.state.userId) {\n try {\n const userInfo = await Api.getUserInfo(this.state.userId!);\n console.log(\"userInfo = \", userInfo);\n\n this.setState({ userInfo: userInfo });\n this.setState({ userIsAdmin: userInfo.isAdmin });\n } catch {\n alert(\"Misslyckades att hämta mer userIsAdmin. Försök igen senare!\");\n }\n\n if (this.state.buyerGUID && this.state.userInfo && this.state.userInfo.isAdmin) {\n try {\n const buyerInfo = await Api.getUserInfo(this.state.buyerGUID!);\n console.log(\"buyerInfo = \", buyerInfo);\n\n this.setState({ buyerInfo });\n } catch {\n alert(\"Misslyckades att hämta BuyerInfo. Försök igen senare!\");\n }\n // try {\n // const purchaseInfo = await Api.getPurchases(); // TODO: we can only get this user's purchases via the API\n // console.log('purchaseInfo = ', purchaseInfo);\n\n // this.setState({ purchases: purchaseInfo });\n // }\n // catch {\n // alert('Misslyckades att hämta BuyerInfo. Försök igen senare!');\n // }\n }\n }\n };\n\n // private _updateBuyer = async () => {\n // const codes = await Api.getContactInfoForBuyer(this.buyerGUID!);\n // //this.setState({ items: codes });\n // }\n}\n","import React from \"react\";\nimport { Stack, TextField, PrimaryButton, MessageBar, MessageBarType, Dropdown } from \"@fluentui/react\";\nimport Api from \"../api\";\nimport { PageTitle, ParagraphText, StackVert } from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { CompanyInfo } from \"../models\";\n\nconst strings = Language.strings;\n\ninterface RegisterUserProps {\n onRegister: (userId: string, token: string, companyPhone?: string) => void;\n}\n\ninterface RegisterUserState {\n name: string;\n phone: string;\n code: string;\n codeSent: boolean;\n usernameNeeded: boolean;\n privacyChecked: boolean;\n message?: string;\n error?: string;\n companies: CompanyInfo[];\n company: string;\n email: string;\n}\n\nexport class RegisterUser extends React.Component {\n constructor(props: RegisterUserProps) {\n super(props);\n\n this.state = {\n name: \"\",\n phone: \"\",\n code: \"\",\n codeSent: false,\n privacyChecked: false,\n usernameNeeded: false,\n companies: [],\n company: \"\",\n email: \"\",\n };\n }\n\n render() {\n const { codeSent, companies, company, email } = this.state;\n const isUsPhone = this.state.phone.trim().startsWith(\"+1\");\n const emailOk = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n return (\n \n {/*
    */}\n \n {strings.registerUser_registerUser}\n {strings.registerUser_InfoAboutFree}\n \n \n {/* */}\n {/* */}\n {\n // Johan, hur gör jag detta? Rensar white spaces och -\n // newValue = newValue || '';\n // newValue.replace(/\\s/g, '');\n // newValue.replace(/-/g, '');\n if (!newValue || newValue.length <= 16) {\n this.setState({ phone: newValue || \"\" });\n } else {\n this.setState({ phone: this.state.phone, codeSent: false });\n }\n }}\n required={!this.state.phone.startsWith(\"+\")}\n description={strings.registerUser_registerphoneNumMustStartWith}\n autoComplete=\"on\"\n />\n \n {isUsPhone && (\n \n {\n this.setState({ ...this.state, email: newValue || \"\" });\n }}\n autoComplete=\"on\"\n />\n \n )}\n \n {/* */}\n \n {strings.registerUser_sendCode}\n \n {/* */}\n {/* */}\n \n {companies.length > 0 && (\n ({ key: company.phone, text: company.name })),\n ]}\n selectedKey={company}\n onChange={(_ev, option) => {\n if (option && option.key) this.setState({ company: option.key as string });\n }}\n />\n )}\n {this.state.usernameNeeded && this.state.codeSent && (\n \n {\n if (!newValue || newValue.length <= 32) {\n this.setState({ name: newValue || \"\" });\n } else {\n this.setState({ name: this.state.name });\n }\n }}\n required={this.state.name.length < 5}\n autoComplete=\"on\"\n description={strings.registerUser_registerUsernameNeeded}\n />\n \n )}\n \n {\n if (!newValue || newValue.length <= 4) {\n this.setState({ code: newValue || \"\" });\n } else {\n this.setState({ code: this.state.code });\n }\n }}\n required={this.state.code.trim().length !== 4}\n />\n \n \n {strings.registerUser_iAgreeTerms}\n \n {strings.registerUser_privacyAgreement}\n \n {strings.registerUser_iAgreeTermsEnd}\n {/* this.setState({ privacyChecked: !!checked })} /> */}\n \n \n {this.state.error && {this.state.error}}\n {this.state.message && {this.state.message}}\n \n \n \n {strings.registerUser_registerUserButton}\n \n \n \n );\n }\n\n _requestCode = async () => {\n try {\n const phone = this.state.phone.trim();\n const email = this.state.email.trim();\n const companies = await Api.requestRegistrationCode(phone, strings.registerUser_smsTextCode, email);\n this.setState({ codeSent: true, companies, company: phone });\n\n const username = await Api.getUsernameByPhone(phone);\n this.setState({ name: username, usernameNeeded: username === \"\" });\n } catch {\n this.setState({ error: strings.registerUser_networkErrorTryAgain });\n }\n };\n\n _register = async () => {\n try {\n const { userId, token } = await Api.registerUser(\n this.state.phone.replace(/[^+0-9]/g, \"\").trim(),\n this.state.email.trim(),\n this.state.name.trim(),\n this.state.code.trim(),\n this.state.companies.length > 0 ? this.state.company : \"\"\n );\n if (userId !== \"\") {\n // TODO: save userId here instead?\n this.props.onRegister(userId, token);\n } else {\n this.setState({ message: strings.registerUser_checkCodeTryAgain, codeSent: false });\n }\n } catch {\n this.setState({ error: strings.registerUser_networkErrorTryAgain2 });\n }\n };\n\n _getFilteredPhoneNumber = () => {\n // TODO: implement and use!\n let phone = this.state.phone.trim();\n // TODO: remove spaces and dashes\n return phone;\n };\n}\n","import React from 'react';\nimport { Header } from './Header';\nimport { StackVert } from './Controls';\nimport { Content } from './Content';\nimport { RegisterUser } from './RegisterUser';\nimport { withRouter } from 'react-router-dom';\nimport queryString from 'query-string';\n\nexport const Register = withRouter((props: any) => {\n return \n
    \n \n {\n localStorage.setItem('userId', userId); // TODO: remove, not needed since stored in token?\n localStorage.setItem('token', token);\n const { redirect } = queryString.parse(window.location.search);\n if (redirect) {\n props.history.replace(redirect as string);\n } else {\n props.history.replace('/');\n }\n }} />\n \n ;\n});","import React from \"react\";\nimport { Stack, Image, TextField, MessageBar } from \"@fluentui/react\";\nimport { Helpers } from \"../helpers\";\nimport { Content } from \"./Content\";\nimport { StackVert, ParagraphTitle, ParagraphText } from \"./Controls\";\nimport Api from \"../api\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface PurchasingProps {}\n\ninterface PurchasingState {\n fullname: string;\n address: string;\n zipCode: string;\n city: string;\n country: string;\n numTags?: number;\n buyDigital?: boolean;\n email: string;\n}\n\nexport class Purchasing extends React.Component {\n constructor(props: PurchasingProps) {\n super(props);\n\n this.state = {\n fullname: \"\",\n address: \"\",\n zipCode: \"\",\n city: \"\",\n country: \"\",\n numTags: undefined,\n buyDigital: undefined,\n email: \"\",\n };\n\n // Should we read the address and tag info from the DB already in the constructor? If not, where? Should we get it in as an argument?\n }\n\n async componentDidMount() {\n if (Helpers.isLoggedIn()) {\n const userInfo = await Api.getUserInfo(Helpers.getCurrentUserId());\n const { firstName, lastName, address, zipCode, city, country, email } = userInfo;\n this.setState({ fullname: firstName + \" \" + lastName, address, zipCode, city, country, email });\n }\n }\n\n render() {\n const isLoggedIn = Helpers.isLoggedIn();\n const { fullname, address, zipCode, city, country, email } = this.state;\n return (\n \n {/*
    */}\n \n \n {!isLoggedIn && (\n \n {strings.puchasing_youLoggedInLoginNow}\n
    \n
    \n )}\n \n

    {strings.purchasing_payment}

    \n
    \n \n {strings.purchasing_ifPurchaseDigital}\n {strings.purchasing_ifPurchasePhysical}\n \n \n {strings.purchasing_address}\n \n \n this.setState({ fullname: newValue || \"\" })}\n />\n this.setState({ address: newValue || \"\" })}\n />\n this.setState({ zipCode: newValue || \"\" })}\n />\n this.setState({ city: newValue || \"\" })}\n />\n this.setState({ country: newValue || \"\" })}\n />\n \n \n \n {strings.purchasing_email}\n {email}\n \n \n \n \n {strings.purchasing_order}\n \n \n \n {strings.purchasing_paySwishInstructions}\n \"Swish\"\n \n {/* \n {strings.purchasing_payPaypal}\n \n \n {strings.purchasing_paySwish}\n \n \n \n {strings.purchasing_payKlarna}\n \n */}\n
    \n
    \n \n );\n }\n\n // _getUserContactInfo = async () => {\n // // TODO: Write the requestAddress Api and return it\n // Api.getUserInfo(this.props.userID.trim());\n // }\n\n _getUserOrderInfo = async () => {\n // TODO: Write the getOrderDetails Api\n //Api.getOrderDetails(this.props.userID.trim());\n };\n\n _payWithPaypal = () => {\n // TODO: pay with paypal\n };\n\n _payWithSwich = () => {\n // TODO: pay with Swich\n };\n\n _payWithKlarna = () => {\n // TODO: pay with Klarna\n };\n\n // _register = async () => {\n // const userId = await Api.registerUser(phone.trim(), name.trim(), code.trim());\n // if (userId !== '') {\n // this.props.onRegister(userId);\n // }\n // else {\n // alert('Kontrollera registreringskoden och försök igen!');\n // this.setState({ codeSent: false });\n // }\n // }\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Stack, Panel, PrimaryButton, IconButton, Icon } from \"@fluentui/react\";\nimport { PageTitle } from \"./Controls\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { strings } from \"./Strings\";\nimport { FeedbackForm } from \"./FeedbackForm\";\n\nexport const TitleWithInfo = ({\n title,\n iconFileName,\n infoTitle,\n code,\n children,\n onClose,\n}: React.PropsWithChildren<{\n title: string;\n iconFileName?: string;\n infoTitle: string;\n code?: string;\n onClose?: () => void;\n}>) => {\n const [showHelp, setShowHelp] = useState(false);\n const [showMisuseButton, setShowMisuseButton] = useState(false);\n const { isMine } = useObserveCode({ code: code || \"\" });\n\n useEffect(() => {\n setShowMisuseButton(!isMine && code !== undefined);\n }, [isMine, code]);\n\n const reportMisuse = () => {\n // TODO: Report misuse\n alert(\"Report misuse: \" + code);\n };\n\n return (\n \n \n \n {iconFileName === \"SearchIssue\" && }\n {iconFileName === \"FileHTML\" && }\n {iconFileName !== \"SearchIssue\" && iconFileName !== \"FileHTML\" && iconFileName && (\n \"icon\"\n )}\n \n \n {title}\n \n \n setShowHelp(true)} />\n \n {onClose && (\n \n \n \n )}\n \n setShowHelp(false)}\n closeButtonAriaLabel=\"Close\"\n >\n {children}\n
      \n
    • {strings.titleWithInfo_reportMisuseDescript}
    • \n
    \n {showMisuseButton && {strings.titleWithInfo_reportMisuseDescript}}\n {showMisuseButton && (\n \n \n \n )}\n \n \n
    \n );\n};\n","import React from \"react\";\nimport {\n Stack,\n MessageBar,\n MessageBarType,\n PrimaryButton,\n SpinnerSize,\n Spinner,\n MaskedTextField,\n} from \"@fluentui/react\";\nimport { Helpers } from \"../helpers\";\nimport { Header } from \"./Header\";\nimport { StackVert, ParagraphText } from \"./Controls\";\nimport { Content } from \"./Content\";\nimport queryString from \"query-string\";\nimport { Language } from \"./Strings\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\n\nconst strings = Language.strings;\n\ninterface RegisterItemManuallyProps {\n onChanged: () => void;\n}\n\ninterface RegisterItemManuallyState {\n qrCode: string;\n itemTitle: string;\n itemDescription: string;\n filename: string;\n pictureOfEquip: string; // wrong type we want to store the \"blob\" of the image somewhere\n busy: boolean;\n error?: string;\n requireUserRemovalApproval: boolean;\n requireBankID: boolean;\n rentable: boolean;\n codeExist: boolean;\n}\n\nexport class RegisterItemManually extends React.Component {\n constructor(props: RegisterItemManuallyProps) {\n super(props);\n\n // Take qr code from query string (format: ?s=xxxxxx)\n const { s } = queryString.parse(window.location.search);\n const qrCode = s ? (s as string) : \"\";\n\n this.state = {\n qrCode: qrCode,\n itemTitle: \"\",\n itemDescription: \"\",\n filename: \"\",\n pictureOfEquip: \"\",\n busy: false,\n requireUserRemovalApproval: false,\n requireBankID: false,\n rentable: false,\n codeExist: false,\n };\n\n this._verifyCode();\n\n const isLoggedIn = Helpers.isLoggedIn();\n if (!isLoggedIn) {\n window.location.href = \"/register?redirect=/RegisterItemManually\";\n }\n }\n\n render() {\n const { busy } = this.state;\n return (\n \n
    \n \n \n \n \n
      \n {/* TODO: Add the information and add in strings */}\n
    • {strings.registerItemManually_manualRegisteringItemInfo1}
    • \n
    • {strings.registerItemManually_manualRegisteringItemInfo2}
    • \n
    \n \n
    \n \n {strings.registerItemManually_writeQRcode8Char}\n \n \n \n this.setState({ qrCode: (value || \"\").toUpperCase() }, () => this._verifyCode())\n }\n mask=\"********\"\n maskFormat={maskFormat}\n />\n \n\n \n {this.state.error && {this.state.error}}\n \n \n \n \n {strings.registerItemManually_register}\n \n {busy && }\n \n \n (window.location.href = \"/\")}>{strings.generic_cancel}\n \n \n
    \n
    \n \n );\n }\n\n private _verifyCode = async () => {\n if (this.state.qrCode.replace(\"_\", \"\").trim().length !== 8) {\n this.setState({ codeExist: false, error: undefined });\n return;\n }\n\n // Exists?\n var exists = await Helpers.verifyCodeExists(this.state.qrCode);\n // if (!exists) {\n // // Try creating the code\n // const userId = localStorage.getItem('userId');\n // await Api.createCode(this.state.qrCode, userId!);\n // exists = await Helpers.verifyCodeExists(this.state.qrCode);\n // }\n\n if (exists) {\n this.setState({ codeExist: true, error: undefined });\n } else {\n this.setState({ codeExist: false, error: strings.registerItemManually_codeDoesNotExist });\n }\n };\n}\n\nconst maskFormat: { [key: string]: RegExp } = {\n \"*\": /[a-zA-Z0-9]/,\n};\n","import React from \"react\";\nimport { mergeStyleSets, Stack, TextField, PrimaryButton, FontIcon, Callout } from \"@fluentui/react\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { StackVert, PageTitle, ParagraphTitle, ParagraphText } from \"./Controls\";\nimport { CodeInfo } from \"../models\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface ItemFoundProps {\n value: CodeInfo;\n onChanged: (value: CodeInfo, userId: string) => void;\n}\n\ninterface ItemFoundState {\n showInfoTargetMess: boolean;\n showInfoSendMess: boolean;\n}\n\nconst styles = mergeStyleSets({\n callout: {\n maxWidth: 300,\n },\n});\n\nexport class ItemFound extends React.Component {\n constructor(props: ItemFoundProps) {\n super(props);\n\n this.state = {\n showInfoTargetMess: false,\n showInfoSendMess: false,\n };\n }\n\n private _infoTargetElement = React.createRef();\n private _infoSendMessageElement = React.createRef();\n\n render() {\n const { value } = this.props;\n return (\n \n
    \n \n \n \n {strings.itemFound_youFoundQR}\n {strings.itemFound_someoneMarkedItem}\n \n {value.showPhoneNumberLost && (\n \n {strings.itemFound_ownersPhoneNumber}\n {/* TODO: Read phone number from database */}\n 031-1234567\n \n )}\n {value.showHowMuchLostPay && (\n \n {strings.itemFound_ownersOffersThisAmount} \n {value.lostPayValue}\n \n )}\n \n \n \n
    \n this.setState({ showInfoTargetMess: true })} />\n {this.state.showInfoTargetMess && (\n \n {strings.itemFound_insteadSendMessageToOwner}\n \n )}\n
    \n
    \n
    \n \n {strings.itemFound_sendMessage}\n \n {/* \n \n {strings.itemFound_sendGPS}\n
    \n this.setState({ showInfoSendMess: true })}\n />\n {this.state.showInfoSendMess && \n {strings.itemFound_sendGPSInfo}\n }\n
    \n
    \n
    */}\n
    \n
    \n \n );\n }\n}\n","import React from \"react\";\nimport { Stack, TextField, PrimaryButton, Checkbox, FontIcon } from \"@fluentui/react\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { StackVert, PageTitle, ParagraphText } from \"./Controls\";\nimport { Helpers } from \"../helpers\";\nimport Api from \"../api\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface ConfigLostProps {\n onChanged: () => void;\n qrCode: string;\n}\n\ninterface ConfigLostState {\n busy: boolean;\n lostPayValue: string;\n showHowMuchPay: boolean;\n enablePosition: boolean;\n offerPay: boolean;\n possibleSendMess: boolean;\n showPhoneNumber: boolean;\n\n showInfoSendMess: boolean;\n showInfoOfferPay: boolean;\n showInfoShowHowMuchPay: boolean;\n}\n\nexport class ConfigLost extends React.Component {\n constructor(props: ConfigLostProps) {\n super(props);\n\n this.state = {\n busy: false,\n lostPayValue: \"\",\n showHowMuchPay: false,\n enablePosition: false,\n offerPay: false,\n possibleSendMess: false,\n showPhoneNumber: false,\n showInfoSendMess: false,\n showInfoOfferPay: false,\n showInfoShowHowMuchPay: false,\n };\n }\n\n private _infoSendMess = React.createRef();\n private _infoOfferPay = React.createRef();\n private _infoShowHowMuchPay = React.createRef();\n\n render() {\n const { showHowMuchPay, offerPay, possibleSendMess, showPhoneNumber } = this.state;\n return (\n \n
    \n \n \n {strings.editLostFound_settingsLost}\n {strings.editLostFound_settingsLostText}\n \n \n this.setState({ showPhoneNumber: !!checked })}\n />\n \n \n \n this.setState({ possibleSendMess: !!checked })}\n />\n
    \n this.setState({ showInfoSendMess: true })} />\n {/* {this.state.showInfoSendMess && \n {strings.configLost_withThisSettingFinderShowPos}\n } */}\n
    \n {/* Med denna inställning kan den som hittat prylen skicka ett meddelande till\n dig om var hen lagt den eller lämnat in den, utan att röja sitt telefonnummer.\n Det kan göra att fler återlämnar prylen.\n */}\n
    \n
    \n \n \n this.setState({ offerPay: !!checked })}\n />\n
    \n this.setState({ showInfoOfferPay: true })} />\n {/* {this.state.showInfoOfferPay && \n {strings.configLost_IwantOfferLostPayInfo}\n } */}\n
    \n
    \n
    \n \n \n this.setState({ showHowMuchPay: !!checked })}\n />\n
    \n this.setState({ showInfoShowHowMuchPay: true })} />\n {/* {this.state.showInfoShowHowMuchPay && \n {strings.configLost_IwantFinderSeeHowMuchPayInfo}\n } */}\n
    \n
    \n
    \n \n this.setState({ lostPayValue: value || \"\" })}\n />\n {strings.editLostFound_HowMuchLostPayInfo}\n \n {/* \n this.setState({ enablePosition: !!checked })} />\n {strings.configLost_HowMuchLostPayInfo}\n \n */}\n {\n \n {strings.generic_save}\n \n }\n
    \n \n );\n }\n\n private _registerLostCfg = async () => {\n this.setState({ busy: true });\n const userId = Helpers.getCurrentUserId();\n\n await Api.registerLostCfg(\n this.props.qrCode!,\n userId,\n this.state.lostPayValue.trim(),\n this.state.showHowMuchPay,\n this.state.offerPay,\n this.state.possibleSendMess,\n this.state.showPhoneNumber\n );\n this.setState({ busy: false });\n this.props.onChanged();\n };\n}\n","import React from \"react\";\nimport { Stack, TextField, Checkbox, PrimaryButton } from \"@fluentui/react\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { StackVert, PageTitle } from \"./Controls\";\nimport { Helpers } from \"../helpers\";\nimport Api from \"../api\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface ConfigRentProps {\n onChanged: () => void;\n qrCode: string;\n}\n\ninterface ConfigRentState {\n busy: boolean;\n enableRenterChatRent: boolean;\n enableRenterExtensionRent: boolean;\n enableQueForItemRent: boolean;\n rentCostDescr: string;\n}\n\nexport class ConfigRent extends React.Component {\n constructor(props: ConfigRentProps) {\n super(props);\n\n this.state = {\n busy: false,\n enableRenterChatRent: false,\n enableRenterExtensionRent: false,\n enableQueForItemRent: false,\n rentCostDescr: \"\",\n };\n }\n\n render() {\n const { enableRenterChatRent, enableRenterExtensionRent, enableQueForItemRent } = this.state;\n return (\n \n
    \n \n \n {strings.configRent_choiceRentHeading}\n \n \n this.setState({ rentCostDescr: value || \"\" })}\n />\n \n \n this.setState({ enableRenterChatRent: !!checked })}\n />\n \n \n this.setState({ enableRenterExtensionRent: !!checked })}\n />\n \n \n this.setState({ enableQueForItemRent: !!checked })}\n />\n \n \n Spara\n \n \n \n );\n }\n\n private _registerRentCfg = async () => {\n this.setState({ busy: true });\n const userId = Helpers.getCurrentUserId();\n\n await Api.registerRentCfg(\n this.props.qrCode!,\n userId,\n this.state.rentCostDescr.trim(),\n this.state.enableRenterChatRent,\n this.state.enableRenterExtensionRent,\n this.state.enableQueForItemRent\n );\n this.setState({ busy: false });\n this.props.onChanged();\n };\n}\n","import React from 'react';\nimport { StackVert } from './Controls';\nimport { Header } from './Header';\nimport { Content } from './Content';\n// import Api from '../api';\n\nexport const BuyTagsPage = () => {\n // const [] = useState(0);\n // const [] = useState(false);\n // const [] = useState(1);\n\n // const registerPurchase = (skuId: string) => {\n // // TODO: call Api.registerPurchase(skuId)\n // }\n\n return \n
    \n \n {/* TODO: split this up and use App.js routes instead => done!\n {'STR: Buy tags page title'}\n {step === 1 && {\n setNumTags(numTags);\n setbuyDigital(buyDigital);\n setStep(2);\n }}\n />}\n {step === 2 && !buyDigital && {\n setStep(3);\n }}\n />}\n {step === 2 && buyDigital && {\n setStep(3);\n }}\n />}\n {step === 3 && } */}\n\n {/* TODO: Get and set purchase when done. This is just sample code */}\n {/* {purchases = Api.getPurchases(userID)} \n {Api.registerPurchase(userId, buyDigital, tagSent, stateOrAction, paymentCompleted)} \n TODO: send the createcodebatch request to the phyton code. \n # Parameters:\n # purchaseID is the purchase ID for the just registered purchase. \n # userBatchCnt = is the number of batches that this user has purchased in this transaction. May not be needed. to discuss\n # nrQRs = the number of tags purchased this time (how many should be created as pdfs. If more than 48, there will be multiple pdfs, with the first named\n [batchID]_1.pdf, the second [batchID]_2.pdf, etc)\n # CreaceCodeBatch retrieves the userID and the user email from the database, based on the purchaseID.\n http://localhost:7071/api/CreateCodeBatch?purchaseID=8648dc6a-2f29-469c-bcd8-08d8b0b1a0fc&userBatchCnt=1&nrQRs=12 \n */}\n \n ;\n}","import React, { useEffect, useState } from \"react\";\nimport { Stack, ComboBox, PrimaryButton, mergeStyleSets, ChoiceGroup, IChoiceGroupOption } from \"@fluentui/react\";\nimport { Header } from \"./Header\";\nimport { StackVert, PageTitle, ParagraphText } from \"./Controls\";\nimport { Content } from \"./Content\";\nimport { withRouter } from \"react-router-dom\";\nimport { Sku } from \"../models\";\nimport Api from \"../api\";\nimport { Helpers } from \"../helpers\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nconst styles = mergeStyleSets({\n buyButton: {\n whiteSpace: \"nowrap\",\n },\n});\n\nexport const BuyTags = withRouter(({ history }) => {\n const [item, setItem] = useState(\"\");\n const [skuList, setSkuList] = useState([]);\n const selectedSku = skuList.findIndex((sku) => sku.id === item);\n // const price = selectedSku >= 0 ? skuList[selectedSku].price : 0;\n const sku = selectedSku >= 0 ? skuList[selectedSku] : null;\n\n const isLoggedIn = Helpers.isLoggedIn();\n if (!isLoggedIn) {\n history.replace(\"/register?redirect=/Buy/1\");\n }\n\n const tagTypeOptions: IChoiceGroupOption[] = [\n {\n key: \"empty\",\n imageSrc: strings.buyTags_unSelectedTagEmpty,\n imageAlt: strings.buyTags_emptyTag,\n selectedImageSrc: strings.buyTags_selectedTagEmpty,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTags, // This text is long to show text wrapping.\n },\n {\n key: \"lostFound\",\n imageSrc: strings.buyTags_unSelectedTagLostFound,\n imageAlt: strings.buyTags_lostAndFound,\n selectedImageSrc: strings.buyTags_selectedTagLostFound,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTags_lostAndFound,\n },\n {\n key: \"number\",\n imageAlt: strings.buyTags_numbered,\n imageSrc: strings.buyTags_unSelectedTagNumber,\n selectedImageSrc: strings.buyTags_selectedTagNumber,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTags_numberedForeezer,\n },\n ];\n\n const physDigitoptions: IChoiceGroupOption[] = [\n { key: \"digital\", text: \"Digial\" },\n { key: \"physical\", text: \"Physical\" },\n ];\n\n useEffect(() => {\n Api.getSkus().then((s) => setSkuList(s));\n }, []);\n\n return (\n \n
    \n \n {strings.buyTags_headerBuyQRcodes}\n \n \n \n \n {strings.buyTags_toUseMustHaveInfo}\n \n \n \n \n \n strings.skuList.includes(sku.id))\n .map((sku) => {\n return {\n key: sku.id,\n text: `${sku.name}`,\n };\n })}\n label={strings.buyTags_chooseNumCodes}\n onChange={(_e, option) => {\n if (option) setItem(option.key as string);\n }}\n // TODO: Set the chosen number of tags in this.state.numTags\n />\n \n \n \n \n \n \n \n {/* \n {strings.buyTags_chooseHereToBuyDigitalPhysical}\n */}\n \n {sku && (\n \n {strings.buyTags_Price} {strings.currency_prefix} {sku.price} {strings.currency_suffix}\n \n )}\n {!sku && {strings.buyTags_Price}}\n \n \n {\n // TODO: Add if sku.isDigital\n history.push(\"/buy/3?numTags=\" + item); // + '&isDigital=' + sku?.isDigital // + '&tagLayout=TODO:how to get the option?');\n // else history.push('/buy/2?numTags=' + item);\n // TODO: Also update the price somewhere\n //\n }}\n >\n {strings.buyTags_downloadPdf}\n \n \n \n \n \n \n \n );\n});\n\n// function _onChangePhysDigit(ev: React.FormEvent, option: IChoiceGroupOption): void {\n// console.dir(option);\n// }\n","import React from \"react\";\nimport { Stack, TextField, PrimaryButton } from \"@fluentui/react\";\nimport Api from \"../api\";\nimport { UserInfo } from \"../models\";\nimport { Helpers } from \"../helpers\";\nimport { Header } from \"./Header\";\nimport { StackVert, PageTitle, ParagraphText } from \"./Controls\";\nimport { Content } from \"./Content\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface RegisterAddressProps {\n onStartPurchase: () => void;\n}\n\ntype RegisterAddressState = UserInfo;\n\nexport class BuyPhysicalTags extends React.Component {\n constructor(props: RegisterAddressProps) {\n super(props);\n\n this.state = {\n id: \"\",\n username: \"\",\n phone: \"\",\n firstName: \"\",\n lastName: \"\",\n address: \"\",\n zipCode: \"\",\n city: \"\",\n country: \"\",\n email: \"\",\n isAdmin: false,\n properties: { freezerFoodChoiceListJson: \"[]\", freezerFoodTypeListJson: \"[]\" },\n };\n }\n\n async componentDidMount() {\n const userInfo = await Api.getUserInfo(Helpers.getCurrentUserId());\n this.setState(userInfo);\n }\n\n render() {\n const { firstName, lastName, address, zipCode, city, country } = this.state;\n\n return (\n \n
    \n \n \n {strings.buyPhysicalTags_buyPhysicalTags}\n {strings.buyPhysicalTags_fillInAddressInfo}\n \n \n {\n if (!newValue || newValue.length <= 50) {\n this.setState({ firstName: newValue || \"\" });\n } else {\n this.setState({ firstName: firstName });\n }\n }}\n required={firstName.length < 1}\n autoComplete=\"on\"\n />\n \n \n {\n if (!newValue || newValue.length <= 50) {\n this.setState({ lastName: newValue || \"\" });\n } else {\n this.setState({ lastName: lastName });\n }\n }}\n required={lastName.length < 1}\n autoComplete=\"on\"\n />\n \n \n {\n if (!newValue || newValue.length <= 50) {\n this.setState({ address: newValue || \"\" });\n } else {\n this.setState({ address: address });\n }\n }}\n required={address.length < 1}\n autoComplete=\"on\"\n />\n \n \n {\n if (!newValue || newValue.length < 7 || newValue.length > 9) {\n this.setState({ zipCode: newValue || \"\" });\n } else {\n this.setState({ zipCode: zipCode });\n }\n }}\n required={zipCode.trim().length < 4}\n autoComplete=\"on\"\n />\n \n \n {\n if (!newValue || newValue.length <= 50) {\n this.setState({ city: newValue || \"\" });\n } else {\n this.setState({ city });\n }\n }}\n required={city.length < 1}\n autoComplete=\"on\"\n />\n \n \n {\n if (!newValue || newValue.length <= 50) {\n this.setState({ country: newValue || \"\" });\n } else {\n this.setState({ country });\n }\n }}\n // required={country.length < 1}\n autoComplete=\"on\"\n />\n \n \n \n \n \n {strings.buyDigialTags_howHandlePersonaInfoHere}\n \n {\" \" + strings.buyDigialTags_howHandlePersonaInfo}\n \n \n \n {strings.registerUser_goToPayment}\n \n \n \n \n );\n }\n\n _registerAddress = async () => {\n await Api.registerBuyerInfo(\n this.state.firstName.trim(),\n this.state.lastName.trim(),\n this.state.address.trim(),\n this.state.zipCode.trim(),\n this.state.city.trim(),\n (this.state.country || \"\").trim(),\n this.state.email.trim()\n );\n this.props.onStartPurchase();\n };\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Stack, ComboBox, PrimaryButton, mergeStyleSets, ChoiceGroup, IChoiceGroupOption } from \"@fluentui/react\";\nimport { Header } from \"./Header\";\nimport { StackVert, PageTitle, ParagraphText } from \"./Controls\";\nimport { Content } from \"./Content\";\nimport { withRouter } from \"react-router-dom\";\nimport { Sku } from \"../models\";\nimport Api from \"../api\";\nimport { Helpers } from \"../helpers\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nconst styles = mergeStyleSets({\n buyButton: {\n whiteSpace: \"nowrap\",\n },\n});\n\nexport const BuyTagsPhysicalOnly = withRouter(({ history }) => {\n const [item, setItem] = useState(\"\");\n const [skuList, setSkuList] = useState([]);\n const selectedSku = skuList.findIndex((sku) => sku.id === item);\n // const price = selectedSku >= 0 ? skuList[selectedSku].price : 0;\n const sku = selectedSku >= 0 ? skuList[selectedSku] : null;\n\n const isLoggedIn = Helpers.isLoggedIn();\n if (!isLoggedIn) {\n history.replace(\"/register?redirect=/Buy/1\");\n }\n\n const tagFormatOptions: IChoiceGroupOption[] = [\n {\n key: \"simple\",\n imageSrc: strings.buyTagsPhysicalOnly_unSelectedFormatSimple,\n imageAlt: strings.buyTagsPhysicalOnly_simpleTagFormat,\n selectedImageSrc: strings.buyTagsPhysicalOnly_selectedFormatSimple,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTagsPhysicalOnly_simpleTagFormat, // This text is long to show text wrapping.\n },\n {\n key: \"rugged\",\n imageSrc: strings.buyTagsPhysicalOnly_unSelectedFormatRugged,\n imageAlt: strings.buyTagsPhysicalOnly_ruggedTagFormatInfo,\n selectedImageSrc: strings.buyTagsPhysicalOnly_selectedFormatRugged,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTagsPhysicalOnly_ruggedTagFormatInfo,\n },\n ];\n\n\n\n const tagTypeOptions: IChoiceGroupOption[] = [\n {\n key: \"empty\",\n imageSrc: strings.buyTags_unSelectedTagEmpty,\n imageAlt: strings.buyTags_emptyTag,\n selectedImageSrc: strings.buyTags_selectedTagEmpty,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTags, // This text is long to show text wrapping.\n },\n {\n key: \"lostFound\",\n imageSrc: strings.buyTags_unSelectedTagLostFound,\n imageAlt: strings.buyTags_lostAndFound,\n selectedImageSrc: strings.buyTags_selectedTagLostFound,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTags_lostAndFound,\n },\n {\n key: \"number\",\n imageAlt: strings.buyTags_numbered,\n imageSrc: strings.buyTags_unSelectedTagNumber,\n selectedImageSrc: strings.buyTags_selectedTagNumber,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTags_numberedForeezer,\n },\n {\n key: \"freeText\",\n imageAlt: strings.buyTagsPhysicalOnly_freeText,\n imageSrc: strings.buyTags_unSelectedTagNumber,\n selectedImageSrc: strings.buyTags_selectedTagNumber,\n imageSize: { width: 100, height: 49 },\n text: strings.buyTagsPhysicalOnly_freeText,\n }, \n ];\n\n // const physDigitoptions: IChoiceGroupOption[] = [\n // { key: \"digital\", text: \"Digial\" },\n // { key: \"physical\", text: \"Physical\" },\n // ];\n\n useEffect(() => {\n Api.getSkus().then((s) => setSkuList(s));\n }, []);\n\n return (\n \n
    \n \n {strings.buyTags_headerBuyQRcodes}\n \n \n \n {strings.buyTagsPhysicalOnly_toUseMustHaveInfo}\n \n
      \n
    • \n
      \n {strings.buyTagsPhysicalOnly_normalOrThickSticker}\n
      \n
    • \n
    • \n
      \n {strings.buyTagsPhysicalOnly_typeOfTagYouWant}\n
      \n
    • \n
    • \n
      \n {strings.buyTagsPhysicalOnly_theNumberOfTagsYouWant}\n
      \n
    • \n
    \n
    \n \n \n \n \n \n \n \n strings.skuList.includes(sku.id))\n .map((sku) => {\n return {\n key: sku.id,\n text: `${sku.name}`,\n };\n })}\n label={strings.buyTagsPhysicalOnly_chooseNumCodes}\n onChange={(_e, option) => {\n if (option) setItem(option.key as string);\n }}\n // TODO: Set the chosen number of tags in this.state.numTags\n />\n \n \n \n \n {/* \n {strings.buyTags_chooseHereToBuyDigitalPhysical}\n */}\n \n {sku && (\n \n {strings.buyTags_Price} {strings.currency_prefix} {sku.price} {strings.currency_suffix}\n \n )}\n {!sku && {strings.buyTags_Price}}\n \n \n {\n // TODO: Add if sku.isDigital\n history.push(\"/buy/3?numTags=\" + item); // + '&isDigital=' + sku?.isDigital // + '&tagLayout=TODO:how to get the option?');\n // else history.push('/buy/2?numTags=' + item);\n // TODO: Also update the price somewhere\n //\n }}\n >\n {strings.buyTags_downloadPdf}\n \n \n
    \n
    \n
    \n
    \n \n );\n});\n\n// function _onChangePhysDigit(ev: React.FormEvent, option: IChoiceGroupOption): void {\n// console.dir(option);\n// }\n","import React, { useState, useEffect } from \"react\";\nimport { Stack, TextField, PrimaryButton } from \"@fluentui/react\";\nimport Api from \"../api\";\nimport { Helpers } from \"../helpers\";\nimport { Header } from \"./Header\";\nimport { StackVert, PageTitle, ParagraphText } from \"./Controls\";\nimport { Content } from \"./Content\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nexport const BuyDigitalTags = (props: any) => {\n // const [userInfo, setUserInfo] = useState({\n // id: '',\n // username: '',\n // phone: '',\n // firstName: '',\n // lastName: '',\n // address: '',\n // zipCode: '',\n // city: '',\n // country: 'Sweden',\n // email: '',\n // isAdmin: false\n // });\n\n const [email, setEmail] = useState(\"\");\n\n useEffect(() => {\n Api.getUserInfo(Helpers.getCurrentUserId())\n .then((userInfo) => setEmail(userInfo.email))\n .catch((error) => {}); // TODO: set error and show in MessageBar\n }, []);\n\n // const { firstName, lastName, address, zipCode, city, country, email } = userInfo;\n\n const registerEmail = async () => {\n await Api.registerBuyerEmail(email.trim());\n props.onStartPurchase();\n };\n\n return (\n \n
    \n \n \n \n {strings.buyDigialTags_buyTags}\n {strings.buyDigialTags_fillInEmail}\n \n \n {\n if (!newValue || newValue.length <= 50) {\n setEmail(newValue || \"\");\n } else {\n setEmail(email);\n }\n }}\n id=\"email\"\n type=\"email\"\n required={email.length < 5}\n autoComplete=\"on\"\n />\n \n \n \n \n {strings.buyDigialTags_howHandlePersonaInfoHere}\n \n {\" \" + strings.buyDigialTags_howHandlePersonaInfo}\n \n \n \n {strings.registerUser_goToPayment} \n \n \n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { Stack, TextField, PrimaryButton } from \"@fluentui/react\";\nimport { StackHorizontal } from \"./Controls\";\nimport Api from \"../api\";\nimport { Helpers } from \"../helpers\";\nimport { useObserveStrings } from \"../hooks/useObserveStrings\";\n\nexport const SendMessage = ({\n sendButtonText,\n code,\n onMessageSent,\n}: {\n sendButtonText: string;\n code: string;\n onMessageSent: () => void;\n}) => {\n const strings = useObserveStrings();\n\n const sendMessage = async () => {\n await Api.postMessage({\n userId: Helpers.getCurrentUserId(),\n codeId: code,\n message: message,\n createdAt: new Date(),\n });\n setMessage(\"\");\n onMessageSent();\n };\n\n const [message, setMessage] = useState(\"\");\n\n return (\n \n \n setMessage(value || \"\")}\n />\n \n \n \n {sendButtonText}\n \n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { Dialog, DialogContent, DialogFooter, PrimaryButton, DefaultButton, Stack, IconButton } from \"@fluentui/react\";\nimport { ParagraphLabel, StackVert } from \"./Controls\";\nimport { SendMessage } from \"./SendMessage\";\nimport { useObserveMessages } from \"../hooks/useObserveMessages\";\nimport { useObserveStrings } from \"../hooks/useObserveStrings\";\nimport { Helpers } from \"../helpers\";\nexport const ListMessages = ({ code, showSendMessage }: { code: string; showSendMessage: boolean }) => {\n const { messages, getMessages, deleteMessage } = useObserveMessages(code);\n const [showReply, setShowReply] = useState(false);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n const [messageToDelete, setMessageToDelete] = useState();\n const strings = useObserveStrings();\n\n const replaceLinksWithAnchorTags = (text: string) => {\n const urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n return text.replace(urlRegex, function (url) {\n return `${url}`;\n });\n };\n\n return (\n \n \n {messages.length > 0 && {strings.listMessages_Messages}}\n \n {messages.length > 0 &&\n messages.map((m) => (\n \n \n
    - (\n {m.user!.username})\n \n \n setShowReply(true)}>{strings.messages_reply}\n \n \n {\n setMessageToDelete(m.chatMessageId);\n setShowDeleteConfirm(true);\n }}\n />\n \n \n ))}\n \n \n {showSendMessage && (\n \n )}\n \n
    \n
    \n\n {/* {!showUploadDialog && code && } */}\n {/* TODO: Fix the code! issue.... */}\n {!viewMode && (\n <>\n \n \n \n {\n setShowUploadDialog(true);\n }}\n >\n {strings.imagePanel_addNewImage}\n \n \n \n {\n setShowDeleteDialog(true);\n }}\n >\n {strings.imagePanel_removeImage}\n \n \n \n \n \n \n \n \n \n {/* \n setDefaultImageId(images[0].id)}>SAVESAVE\n */}\n \n
    \n {images.length > 1 && (\n \n
    \n {images.map((_image, i) => {\n // TODO: use images and urls dictionary\n // const md = JSON.parse(images[i].metadataJson);\n return (\n setImageId(images[i].id)}\n >\n \n
    \n );\n })}\n
    \n
    \n )}\n
    \n );\n};\n","import { Stack, PrimaryButton, DialogFooter, DefaultButton, Dialog, DialogType } from \"@fluentui/react\";\nimport React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helpers } from \"../helpers\";\nimport { useObserveCode } from \"../hooks\";\nimport { StackHorizontal } from \"./Controls\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface ItemFooterProps {\n code: string;\n}\n\n// const changeCodeOwner = async (code: string, newUserID: string) => {\n// Api.changeOwner(code, newUserID)\n// };\n\n// const canChangeCodeOwner = async (code: string) => {\n// return await Api.canChangeOwner(code)\n// };\n\nexport const ItemFooterEdit = ({ code }: ItemFooterProps) => {\n const history = useHistory();\n const { isMine, type, unregister, copyCodeToLocalSettings } = useObserveCode({ code });\n const [showUnregister, setShowUnregister] = useState(false);\n const closeUnregister = () => setShowUnregister(false);\n\n // TODO: move to helpers? Or to new observable (that uses useHistory)\n const close = () => {\n console.log(\"close\", history.length);\n if (history.length > 1) {\n history.goBack();\n } else {\n history.replace(\"/\");\n }\n };\n\n return (\n \n \n history.push(\"/edit/\" + code)}>{strings.generic_edit}\n \n \n {strings.generic_copy}\n \n {/* {{ canChangeCodeOwner(code) } && \n { changeCodeOwner(code,) }}>\n {'STR: Change code owner'}\n \n } */}\n \n {type === \"freezer\" && (\n setShowUnregister(true)}>{strings.itemFooter_unregisterItem}\n )}\n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { ComboBox, DefaultButton, Dialog, DialogContent, DialogFooter, IComboBoxProps, PrimaryButton, Stack } from \"@fluentui/react\";\nimport {\n CodeShowAndLinkToQRImage,\n ItemInfoStacked,\n ParagraphLabel,\n ParagraphText,\n ShowList,\n StackHorizontal,\n StackVert,\n} from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\nimport { Helpers } from \"../helpers\";\nimport { ImagesPanel } from \"./ImagesPanel\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\n\nconst strings = Language.strings;\n\ninterface HandleItemBorrowedByMeProps extends RouteComponentProps {\n code: string;\n onReturnItem: () => void;\n}\n\nexport const HandleItemBorrowedByMe = withRouter(({ history, code, onReturnItem }: HandleItemBorrowedByMeProps) => {\n const {\n name,\n description,\n itemType,\n returnNumDays,\n setReturnNumDays,\n returnDate,\n rentable,\n codeStores,\n rentCostDescr,\n statusIconFilename,\n state,\n defaultImageId,\n setDefaultImageId,\n images,\n hasCodeEditAccess,\n category,\n } = useObserveCode({ code: code, onSaved: () => history.goBack() });\n\n\n const [numDaysToAdd, setNumDaysToAdd] = useState(7);\n const [showExtendDialog, setShowExtendDialog] = useState(false);\n // const [numDaysToAdd, setNumDaysToAdd] = useState(7);\n const returnDateList = [\n { key: 1, text: strings.handleItemBorrowedByMe_oneDay },\n { key: 3, text: strings.handleItemBorrowedByMe_threDays },\n { key: 7, text: strings.handleItemBorrowedByMe_oneWeek },\n { key: 30, text: strings.handleItemBorrowedByMe_onemonth },\n { key: 90, text: strings.handleItemBorrowedByMe_threeMonth },\n { key: 365, text: strings.handleItemBorrowedByMe_oneYear },\n { key: 3650, text: strings.handleItemBorrowedByMe_noEndDate },\n ];\n\n\n const _onChange: IComboBoxProps[\"onChange\"] = (event, option) => {\n if (option) {\n setNumDaysToAdd(+option.key);\n }\n };\n\n\n return (\n \n \n
      \n
    • {strings.handleItemBorrowedByMe_Info1}
    • \n
    • {strings.handleItemBorrowedByMe_Info2}
    • \n
    • {strings.handleItemBorrowedByMe_Info3}
    • \n
    \n \n \n \n \n \n \n \n \n \n setShowExtendDialog(true)}>{strings.handleItemBorrowedByMe_extend}\n \n \n {description && description !== \"-\" && (\n \n {strings.generic_description}\n {description}\n \n )}\n {rentable && rentCostDescr && rentCostDescr !== \"-\" && (\n \n {strings.registerItem_rentInfo}\n {rentCostDescr}\n \n )}\n {/* {rentable && ()} */}\n \n {strings.item_photo}\n \n \n {/* */}\n \n \n \n {/* TODO: Make separate ItemFooter that takes a function in? for HandleItems... */}\n \n \n \n {strings.handleItemBorrowedByOther_ReportReturned}\n \n {!hasCodeEditAccess && (\n \n history.goBack()}>{strings.generic_close}\n \n )}\n {hasCodeEditAccess && }\n \n \n
    \n );\n\n});\n","import React from \"react\";\nimport { Stack, PrimaryButton } from \"@fluentui/react\";\nimport {\n StackVert,\n ParagraphText,\n ItemInfoStacked,\n ParagraphLabel,\n StackHorizontal,\n ShowList,\n CodeShowAndLinkToQRImage,\n} from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\nimport { Helpers } from \"../helpers\";\nimport { ImagesPanel } from \"./ImagesPanel\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\n\nconst strings = Language.strings;\n\ninterface HandleItemBorrowedByOtherProps extends RouteComponentProps {\n code: string;\n returnItem: () => void;\n}\n\n// interface HandleItemBorrowedByOtherState {\n// error?: string;\n// }\n\nexport const HandleItemBorrowedByOther = withRouter(({ history, code, returnItem }: HandleItemBorrowedByOtherProps) => {\n const {\n name,\n description,\n itemType,\n returnNumDays,\n returnDate,\n rentable,\n rentCostDescr,\n codeStores,\n statusIconFilename,\n borrowerUserName,\n state,\n defaultImageId,\n setDefaultImageId,\n images,\n hasCodeEditAccess,\n category,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n // TODO: Which handleItemReturn to use?\n // const _handleItemReturn = async () => {\n // const value = this.props.value;\n // if (value.state === 'pendRetAck') {\n // await Api.acceptPendingReturn(value.id);\n // }\n // else {\n // await Api.returnCode(value.id); // TODO: change API call when confirm return required is set for the item\n // if (value.state === 'pendRetAck') {\n // await Api.acceptPendingReturn(value.id);\n // }\n // }\n\n // this.props.onChanged(value);\n // };\n\n // const { error } = state;\n return (\n \n \n
      \n
    • {strings.handleItemBorrowedByOther_info1}
    • \n
    • {strings.handleItemBorrowedByOther_info2}
    • \n
    • {strings.handleItemBorrowedByOther_info3}
    • \n
    \n \n \n \n \n \n \n \n \n \n {strings.generic_description}\n {description}\n \n {rentable && (\n \n {strings.handleItemBorrowedByOther_rentCost}\n {rentCostDescr}\n \n )}\n \n {strings.item_photo}\n \n \n \n {/* */}\n \n \n \n \n \n {strings.handleItemBorrowedByOther_ReportReturned}\n \n {/* \n {\n try {\n await Helpers.share(this.props.value.id);\n }\n catch (error) {\n this.setState({ error: error.message });\n }\n }}>{strings.generic_share}\n */}\n\n \n {!hasCodeEditAccess && (\n history.goBack()}>{strings.generic_close}\n )}\n {hasCodeEditAccess && }\n \n \n \n
    \n );\n});\n","import React from \"react\";\nimport { Stack, ComboBox, PrimaryButton, IComboBoxProps } from \"@fluentui/react\";\nimport { StackVert, ParagraphText, ItemInfoStacked, ShowList, CodeShowAndLinkToQRImage } from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ParagraphLabel } from \".\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ImagesPanel } from \"./ImagesPanel\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\n\nconst strings = Language.strings;\n\ninterface HandleBorrowingItemProps {\n code: string;\n onBorrow: () => void;\n}\n\ninterface HandleBorrowingItemProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleBorrowingItem = withRouter(({ code, onBorrow }: HandleBorrowingItemProps) => {\n const {\n name,\n description,\n itemType,\n category,\n ownerUserName,\n returnNumDays,\n rentable,\n codeStores,\n images,\n setReturnNumDays,\n rentCostDescr,\n statusIconFilename,\n defaultImageId,\n setDefaultImageId,\n hasCodeEditAccess,\n } = useObserveCode({ code });\n\n const _onChange: IComboBoxProps[\"onChange\"] = (event, option) => {\n if (option) {\n const days = +option.key;\n setReturnNumDays(days);\n }\n };\n\n const returnDateList = [\n { key: 1, text: strings.handleBorrowingItem_oneDay },\n { key: 3, text: strings.handleBorrowingItem_threDays },\n { key: 7, text: strings.handleBorrowingItem_oneWeek },\n { key: 30, text: strings.handleBorrowingItem_onemonth },\n { key: 90, text: strings.handleBorrowingItem_threeMonths },\n { key: 365, text: strings.handleBorrowingItem_oneYear },\n { key: 3650, text: strings.handleBorrowingItem_noEndDate },\n ];\n\n return (\n \n \n
      \n
    • {strings.handleBorrowingItem_Info1}
    • \n
    • {strings.handleBorrowingItem_Info2}
    • \n
    • {strings.handleBorrowingItem_Info3}
    • \n
    • {strings.handleBorrowingItem_Info4}
    • \n
    • {strings.handleBorrowingItem_Info5}
    • \n
    \n \n \n \n \n \n \n \n {description && (\n \n {strings.generic_description}\n {description}\n \n )}\n {rentable && rentCostDescr && rentCostDescr !== \"-\" && (\n \n {strings.registerItem_rentInfo}\n {rentCostDescr}\n \n )}\n {images.length > 0 && (\n \n {strings.item_photo}\n \n \n )}\n {/* \n {returnDate && {strings.handleBorrowingItem_whenGiveBack1} {Helpers.getDateDiffInDays(new Date(), returnDate)} {strings.handleBorrowingItem_whenGiveBack2}}\n */}\n {/* */}\n {/* */}\n {/* Visas endast om prylen inte är utlånad */}\n {/* */}\n\n {/* TODO: show this in a dialog, incl. rent price 0=free, >0 a fee has to be paid */}\n \n \n \n\n {/* TODO: add dialog for purchase (if possible) */}\n\n {/* {Helpers.hasFeature('rent') && rentable && \n {strings.handleBorrowingItem_InfoAboutRent}\n {rentCostDescr}\n {enableRenterChatRent && \n setRentMessToOwner(value || '')} />\n }\n } */}\n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n {/* TODO: show only if rentable */}\n {strings.handleBorrowingItem_borrow}\n \n {/* TODO: add purchase button if possible */}\n\n {/* \n await Helpers.share(value.id)}>{strings.handleBorrowedItem_share}\n */}\n \n {!hasCodeEditAccess && (\n /*window.history.back()*/ (window.location.href = \"/\")}>\n {strings.generic_close}\n \n )}\n {hasCodeEditAccess && }\n \n \n \n \n \n
    \n );\n});\n","import React, { useState } from \"react\";\nimport { Stack, MessageBar, MessageBarType, Spinner, SpinnerSize } from \"@fluentui/react\";\nimport { Helpers } from \"../helpers\";\nimport {\n StackVert,\n ParagraphText,\n ParagraphLabel,\n ItemInfoStacked,\n ShowList,\n CodeShowAndLinkToQRImage,\n} from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ImagesPanel } from \"./ImagesPanel\";\n\nconst strings = Language.strings;\n\ninterface HandleOwnItemProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleOwnItem = withRouter(({ history, code }: HandleOwnItemProps) => {\n const {\n description,\n name,\n busy,\n itemType,\n codeStores,\n statusIconFilename,\n requireUserRemovalApproval,\n state,\n defaultImageId,\n setDefaultImageId,\n rentCostDescr,\n images,\n location,\n room,\n category,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n const [error, setError] = useState(undefined);\n\n return (\n \n {!busy && (\n \n {error && (\n setError(undefined)}>\n {error}\n \n )}\n \n )}\n \n {/* iconFileName={Helpers.getStatusIconFilename(codeInfo)} */}\n
      \n {/* TODO: Add the information and add in strings - this is for Edit */}\n
    • {strings.editStatic_1}
    • \n
    • {strings.editStatic_2}
    • \n
    • {strings.editStatic_3}
    • \n
    • {strings.editStatic_4}
    • \n
    • {strings.editStatic_5}
    • \n {Helpers.hasFeature(\"rent\") &&
    • {strings.editStatic_6}
    • }\n
    \n \n \n \n \n {description && description !== \"-\" && (\n \n {strings.generic_description}\n {description}\n \n )}\n {/* TODO: only show if item is rentable */}\n {rentCostDescr && rentCostDescr !== \"-\" && (\n \n {strings.registerItem_rentInfo}\n {rentCostDescr}\n \n )}\n {/* TODO: add sell information here if the item is sellable */}\n {images.length > 0 && (\n \n {strings.item_photo}\n \n \n )}\n {/* TODO: Read from the codelog and add a list here of all transactions that you were involved\n in. That is, for an owner it is everything. For a borrower (that borrowed it at any time)\n it is the list of the times he/she borrowed it. */}\n \n \n \n \n \n {/* */}\n \n \n {busy && }\n \n
    \n );\n});\n","import React from \"react\";\nimport { Language } from \"./Strings\";\nimport { EditBoxes, EditFreezer, EditHtml, EditLostFound, EditStatic, StackVert } from \".\";\nimport { CodePropsType } from \"../models\";\n\nconst strings = Language.strings;\n\nexport const RegisterItem = ({\n code,\n type,\n onSaved,\n onChangeType,\n}: {\n code: string;\n type: string;\n onSaved: () => void;\n onChangeType: (type: CodePropsType) => void;\n}) => (\n \n {type === \"freezer\" && (\n \n )}\n {type === \"boxes\" && (\n \n )}\n {type === \"lostFound\" && (\n \n )}\n {type === \"html\" && (\n \n )}\n {type === \"static\" && (\n \n )}\n \n);\n","import React, { useEffect, useState } from \"react\";\nimport { Stack, MessageBar, MessageBarType } from \"@fluentui/react\";\nimport { StackVert, ParagraphText, ShowList, CodeShowAndLinkToQRImage } from \"./Controls\";\nimport { strings } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ParagraphLabel } from \".\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ImagesPanel } from \"./ImagesPanel\";\n\ninterface HandleOwnHtmlProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleOwnHtml = withRouter(({ history, code }: HandleOwnHtmlProps) => {\n const { description, codeStores, images, defaultImageId, setDefaultImageId } = useObserveCode({\n code,\n onSaved: () => history.goBack(),\n });\n\n const [error, setError] = useState(undefined);\n const [isHtml, setIsHtml] = useState(false);\n\n useEffect(() => {\n const hasHtmlTags = description.includes(\"<\") && description.includes(\">\") && description.includes(\"/\");\n setIsHtml(hasHtmlTags);\n }, [description]);\n\n return (\n \n \n {error && (\n setError(undefined)}>\n {error}\n \n )}\n \n \n {strings.generic_PageInfo}\n
      \n
    • {strings.handleOwnHtml_info1}
    • \n
    • {strings.handleOwnHtml_info2}
    • \n
    • {strings.handleOwnHtml_info3}
    • \n
    • {strings.handleOwnHtml_info4}
    • \n
    • {strings.handleOwnHtml_info5}
    • \n
    • {strings.handleOwnHtml_info6}
    • \n
    \n \n \n {/* {strings.handleOwnHtml_TextOrHTML} */}\n \n {isHtml &&
    }\n {!isHtml && {description}}\n
    \n {images.length > 0 && (\n \n {/* {strings.item_photo} */}\n \n \n )}\n
    \n \n \n \n
    \n );\n});\n","import { Stack, MessageBarType, MessageBar } from \"@fluentui/react\";\nimport React, { useEffect, useState } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ParagraphTextPre, StackVert } from \"./Controls\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { ImagesPanel } from \"./ImagesPanel\";\n\ninterface HandleOthersHtmlProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleOthersHtml = withRouter(({ history, code }: HandleOthersHtmlProps) => {\n const { description, hasCodeEditAccess, images, defaultImageId, setDefaultImageId } = useObserveCode({\n code,\n onSaved: () => history.goBack(),\n });\n\n const [error, setError] = useState(undefined);\n const [isHtml, setIsHtml] = useState(false);\n\n useEffect(() => {\n const hasHtmlTags = description.includes(\"<\") && description.includes(\">\") && description.includes(\"/\");\n setIsHtml(hasHtmlTags);\n }, [description]);\n\n // TODO: if the html is only an url then navigate to that url\n\n return (\n \n {/* \n {'STR: Instructions'}\n
      \n
    • {'STR: 1 '}
    • \n
    • {'STR: 2'}
    • \n
    • {'STR: 3'}
    • \n
    • {'STR: 4'}
    • \n
    • {'STR: '}
    • \n
    \n
    */}\n \n {error && (\n setError(error)}>\n {error}\n \n )}\n \n \n {isHtml &&
    }\n {!isHtml && {description}}\n
    \n {images.length > 0 && (\n \n \n \n )}\n {hasCodeEditAccess && }\n
    \n );\n});\n","import React, { useState } from \"react\";\nimport { Stack, MessageBarType, MessageBar, PrimaryButton, Label } from \"@fluentui/react\";\nimport { StackVert, ParagraphText, ParagraphTitle, ItemInfoStacked } from \"./Controls\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { Language } from \"./Strings\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ImagesPanel } from \"./ImagesPanel\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\n\nconst strings = Language.strings;\n\ninterface HandleOtherLostFoundProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleOtherLostFound = withRouter(({ history, code }: HandleOtherLostFoundProps) => {\n const {\n ownerPhone,\n showHowMuchPay,\n lostPayValue,\n showPhoneNumber,\n possibleSendMess,\n enablePosition,\n // name,\n // description,\n defaultImageId,\n setDefaultImageId,\n images,\n hasCodeEditAccess,\n postMessage,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n // const [messToOwer, setMessToOwer] = useState('');\n\n // const sendMessToOwner = async () => {\n // // TODO: Write this....\n // };\n const [error, setError] = useState(undefined);\n const [message, setMessage] = useState(undefined);\n\n const sendGPSToOwner = () => {\n if (navigator.geolocation) {\n setMessage(strings.handleOtherLostFound_SendingGPSPosToOwner);\n navigator.geolocation.getCurrentPosition(function (position) {\n const latitude = position.coords.latitude;\n const longitude = position.coords.longitude;\n const url = \"https://www.google.com/maps/?q=\" + latitude + \",\" + longitude;\n postMessage(strings.handleOtherLostFound_GpsLinkMessage + url);\n setMessage(strings.handleOtherLostFound_HasSentGPSPosToOwner);\n });\n } else {\n setError(strings.handleOtherLostFound_GeolocationIsNotSupported);\n setMessage(undefined);\n console.log(\"Geolocation is not supported by this browser.\");\n }\n };\n\n return (\n \n \n {error && (\n setError(error)}>\n {error}\n \n )}\n \n {/*

    TODO: fix what to show, if nothing is shown...show only send found message to user...

    */}\n\n {\n \n \n
      \n
    • {strings.handleOtherLostFound_info1}
    • \n
    • {strings.handleOtherLostFound_info2}
    • \n {showHowMuchPay &&
    • {strings.handleOtherLostFound_info3}
    • }\n {showPhoneNumber &&
    • {strings.handleOtherLostFound_info4}
    • }\n {possibleSendMess &&
    • {strings.handleOtherLostFound_info5}
    • }\n
    • {strings.handleOtherLostFound_info6}
    • \n
    \n \n {strings.handleOtherLostFound_YouHaveScannedCode}\n \n {/* */}\n {/* \n {strings.generic_description}\n {description}\n */}\n\n {showHowMuchPay && (\n \n )}\n {showPhoneNumber && (\n \n )}\n {possibleSendMess && (\n \n \n \n {strings.handleOtherLostFound_SendMessToOwner}\n {strings.handleOtherLostFound_YouCanChooseSendMess}\n \n {/* setMessToOwer(value || '')} /> */}\n \n {/* \n \n {strings.handleOtherLostFound_SendMess}\n \n */}\n \n \n )}\n {enablePosition && (\n \n {strings.handleOtherLostFound_SendGPSPosToOwnerHeader}\n {strings.handleOtherLostFound_SendGPSPositionToOwnerInfo}\n \n {message && (\n setMessage(undefined)}>\n {message}\n \n )}\n \n \n \n {strings.handleOtherLostFound_SendGPSPosToOwnerButton}\n \n \n \n )}\n {images.length > 0 && (\n \n \n \n \n )}\n {hasCodeEditAccess && }\n \n
    \n }\n
    \n );\n});\n","import React, { useState } from \"react\";\nimport { Stack, MessageBarType, MessageBar, Label } from \"@fluentui/react\";\n// import { MailIcon, SettingsIcon } from '@fluentui/react-icons'\nimport {\n StackVert,\n ItemInfoStacked,\n ParagraphLabel,\n ShowList,\n CodeShowAndLinkToQRImage,\n ParagraphText,\n} from \"./Controls\";\nimport { strings } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ImagesPanel } from \"./ImagesPanel\";\n\ninterface HandleOwnLostFoundProps extends RouteComponentProps {\n code: string;\n}\nexport const HandleOwnLostFound = withRouter(({ history, code }: HandleOwnLostFoundProps) => {\n const {\n showHowMuchPay,\n lostPayValue,\n showPhoneNumber,\n codeStores,\n possibleSendMess,\n enablePosition,\n description,\n name,\n defaultImageId,\n setDefaultImageId,\n images,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n const [error, setError] = useState(undefined);\n\n return (\n <>\n \n \n {error && (\n setError(error)}>\n {error}\n \n )}\n \n \n \n \n {strings.generic_PageInfo}\n
      \n
    • {strings.handleOwnLostFound_thisIsLostFoundCode}
    • \n
    • \n {\n strings.handleOwnLostFound_whenYouMarkSometingWithTag\n }\n
    • \n
    • \n {\n strings.handleOwnLostFound_whenYouEditThisTag\n }\n
    • \n
    \n \n {/* */}\n \n \n {strings.generic_description}\n {description}\n \n {images.length > 0 && (\n \n \n \n \n )}\n {/* {Boolean(showHowMuchPay) && } */}\n {Boolean(showHowMuchPay) && (\n \n )}\n \n \n \n \n \n
    \n
    \n \n \n \n \n
    \n \n );\n});\n","import React from \"react\";\nimport { mergeStyleSets, Stack } from \"@fluentui/react\";\nimport { IconTableRow, ParagraphLabel } from \"./Controls\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nexport const ShowWhatBoxIconsMean = () => {\n const classNamesIconTableRow = mergeStyleSets({\n table: {\n fontFamily: \"arial, sans-serif\",\n borderCollapse: \"collapse\",\n width: \"100%\",\n },\n td_th: {\n border: \"1px solid #dddddd\",\n textAlign: \"left\",\n padding: \"8px\",\n },\n });\n\n return (\n \n \n {strings.home_iconTableWhatDoTheIconsMean}\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
    {strings.home_iconTableHeaderIcon}{strings.home_iconTableHeaderDescription}
    \n
  • \n
    \n
    \n );\n};\n","import React from \"react\";\nimport { Stack, Label } from \"@fluentui/react\";\nimport { StackVert, ParagraphTextPre, ItemInfoStacked, CodeShowAndLinkToQRImage } from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ImagesPanel } from \"./ImagesPanel\";\nimport { ShowWhatBoxIconsMean } from \"./ShowWhatBoxIconsMean\";\n\nconst strings = Language.strings;\n\ninterface HandleOwnBoxesProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleOwnBoxes = withRouter(({ history, code }: HandleOwnBoxesProps) => {\n const {\n contentType,\n location,\n content,\n description,\n room,\n fragility,\n priority,\n boxColor,\n boxState,\n storageDate,\n shortId,\n boxStateIconFilename,\n defaultImageId,\n setDefaultImageId,\n images,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n return (\n \n \n
      \n
    • {strings.handleBoxes_0}
    • \n
    • {strings.handleBoxes_1}
    • \n
    • {strings.handleBoxes_2}
    • \n
    • {strings.handleBoxes_3}
    • \n
    • {strings.handleBoxes_4}
    • \n
    • {strings.handleBoxes_5}
    • \n
    • {strings.handleBoxes_6}
    • \n
    • {strings.handleBoxes_7}
    • \n
    • {strings.handleBoxes_8}
    • \n
    • {strings.handleBoxes_9}
    • \n
    • {strings.handleBoxes_10}
    • \n
    \n \n \n \n \n \n {/* */}\n {/* */}\n {/* */}\n \n \n \n {description && (\n \n \n {description}\n \n )}\n {images.length > 0 && (\n \n \n \n \n )}\n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n \n
    \n );\n});\n","import { Stack } from \"@fluentui/react\";\nimport {\n StackVert,\n ParagraphText,\n ItemInfoStacked,\n ParagraphLabel,\n ShowList,\n CodeShowAndLinkToQRImage,\n} from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport React from \"react\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ShowWhatBoxIconsMean } from \"./ShowWhatBoxIconsMean\";\n\nconst strings = Language.strings;\n\ninterface HandleOthersBoxesProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleOthersBoxes = withRouter(({ history, code }: HandleOthersBoxesProps) => {\n const {\n ownerUserName,\n contentType,\n location,\n content,\n description,\n room,\n fragility,\n priority,\n boxColor,\n boxState,\n codeStores,\n storageDate,\n shortId,\n boxStateIconFilename,\n hasCodeEditAccess,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n return (\n \n \n
      \n
    • {strings.handleOthersBoxes_Info1}
    • \n
    • {strings.handleOthersBoxes_Info2}
    • \n
    • {strings.handleOthersBoxes_Info3}
    • \n
    \n \n \n \n \n {/* {name && }\n */}\n \n \n \n \n \n \n {description && (\n \n \n {strings.handleBoxes_Description}\n \n \n {description} \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n {hasCodeEditAccess && }\n \n \n
    \n );\n});\n","import React from \"react\";\nimport { Stack, PrimaryButton } from \"@fluentui/react\";\nimport { StackVert, ParagraphText, ItemInfoStacked, ParagraphLabel, CodeShowAndLinkToQRImage } from \"./Controls\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { useObserveStrings } from \"../hooks/useObserveStrings\";\nimport { ListMessages } from \"./ListMessages\";\nimport { ImagesPanel } from \"./ImagesPanel\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\n\ninterface HandleItemOtherBorrowedByOtherProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleItemOtherBorrowedByOther = withRouter(({ history, code }: HandleItemOtherBorrowedByOtherProps) => {\n const {\n name,\n description,\n itemType,\n rentable,\n rentCostDescr,\n statusIconFilename,\n defaultImageId,\n setDefaultImageId,\n images,\n hasCodeEditAccess,\n } = useObserveCode({ code: code, onSaved: () => history.goBack() });\n const strings = useObserveStrings();\n return (\n \n \n
      \n
    • {strings.handleItemOtherBorrowedByOther_info1}
    • \n
    • {strings.handleItemOtherBorrowedByOther_info2}
    • \n
    \n \n \n {/* */}\n \n {/* \n */}\n {/* */}\n {description && description !== \"-\" && (\n \n {strings.generic_description}\n {description}\n \n )}\n {rentable && rentCostDescr && rentCostDescr !== \"-\" && (\n \n {strings.registerItem_rentInfo}\n {rentCostDescr}\n \n )}\n \n {strings.item_photo}\n \n \n \n \n\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* \n \n {strings.handleItemBorrowedByOther_ReportReturned}\n \n */}\n {/* \n {\n try {\n await Helpers.share(this.props.value.id);\n }\n catch (error) {\n this.setState({ error: error.message });\n }\n }}>{strings.generic_share}\n */}\n\n {!hasCodeEditAccess && (\n \n history.goBack()}>{strings.generic_close}\n \n )}\n {hasCodeEditAccess && }\n {/* */}\n {/* */}\n
    \n );\n});\n","import React, { useState } from \"react\";\nimport { Stack, MessageBar, MessageBarType, Spinner, SpinnerSize } from \"@fluentui/react\";\nimport {\n StackVert,\n ParagraphText,\n ParagraphLabel,\n ItemInfoStacked,\n ShowList,\n CodeShowAndLinkToQRImage,\n} from \"./Controls\";\nimport { Language } from \"./Strings\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { ItemFooterEdit } from \"./ItemFooterEdit\";\nimport { TitleWithInfo } from \"./TitleWithInfo\";\nimport { ListMessages } from \"./ListMessages\";\n\nconst strings = Language.strings;\n\ninterface HandleFreezerProps extends RouteComponentProps {\n code: string;\n}\n\nexport const HandleFreezer = withRouter(({ history, code }: HandleFreezerProps) => {\n const {\n shortId,\n foodType,\n contentType,\n description,\n persons,\n amount,\n amountType,\n storageDate,\n expirationDate,\n busy,\n codeStores,\n location,\n } = useObserveCode({ code, onSaved: () => history.goBack() });\n\n const [error, setError] = useState(undefined);\n\n return (\n \n {!busy && (\n \n {error && (\n setError(undefined)}>\n {error}\n \n )}\n \n )}\n \n
      \n {/* TODO: update this list */}\n
    • \"{strings.editFreezer_info0}\"
    • \n
    • \"{strings.editFreezer_info1}\"
    • \n
    \n \n \n \n {description && description !== \"-\" && (\n \n {strings.generic_description}\n {description}\n \n )}\n \n \n \n \n \n \n \n \n {busy && }\n \n
    \n );\n});\n","import React from \"react\";\nimport { Stack, Spinner, SpinnerSize } from \"@fluentui/react\";\nimport queryString from \"query-string\";\nimport { HandleItemBorrowedByMe } from \"./HandleItemBorrowedByMe\";\nimport { HandleItemBorrowedByOther } from \"./HandleItemBorrowedByOther\";\nimport { HandleBorrowingItem } from \"./HandleBorrowingItem\";\nimport { HandleOwnItem } from \"./HandleOwnItem\";\nimport { Header } from \"./Header\";\nimport { Content } from \"./Content\";\nimport { StackVert } from \"./Controls\";\nimport { withRouter } from \"react-router-dom\";\nimport { RegisterItem } from \"./RegisterItem\";\nimport { HandleOwnHtml } from \"./HandleOwnHtml\";\nimport { HandleOthersHtml } from \"./HandleOthersHtml\";\nimport { HandleOtherLostFound } from \"./HandleOtherLostFound\";\nimport { HandleOwnLostFound } from \"./HandleOwnLostFound\";\n// import { HandleOthersFreezer } from \"./HandleOthersFreezer\";\nimport { HandleOwnBoxes } from \"./HandleOwnBoxes\";\nimport { HandleOthersBoxes } from \"./HandleOthersBoxes\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { HandleItemOtherBorrowedByOther } from \"./HandleItemOtherBorrowedByOther\";\n// import { EditFreezer } from \"./EditFreezer\";\n// import { strings } from \"./Strings\";\nimport { HandleFreezer } from \"./HandleFreezer\";\n\nexport const ItemView = withRouter((props) => {\n const { params } = props.match;\n const { code } = params.code ? params : queryString.parse(window.location.search);\n // const history = useHistory();\n const {\n busy,\n isBorrowed,\n isRegistered,\n isAwaitingOwnerReturnAccept,\n isBorrowedByMe,\n type,\n isMine,\n returnItem,\n borrow,\n setType,\n } = useObserveCode({ code });\n // TODO: Fix RegisterItemManually\n // useEffect(() => {\n // if (code) {\n // Api.getCode(code)\n // .then((ci) => {\n // setCodeInfo(ci);\n // setOrigin((ci.origin || \"qrit\") as Origin);\n // })\n // .catch(() => {\n // Api.verifyCode(code)\n // .then(() => props.history.push(\"/registerItemManually?s=\" + code))\n // .catch(() => {});\n // });\n // }\n // }, [code, props]);\n return (\n \n
    \n \n {busy && (\n \n \n \n )}\n {!busy && (\n <>\n {/* {codeInfo && codeInfo.userId === null && (\n \n \n {strings.itemView_CodeDoesNotExist}\n \n \n )} */}\n {!isRegistered && (\n \n window.location.reload()} onChangeType={setType} />\n \n )}\n {isRegistered && (\n \n {type === \"static\" && (\n <>\n {!isBorrowed && isRegistered && !isMine && }\n\n {(isBorrowed || isAwaitingOwnerReturnAccept) && isMine && (\n \n )}\n\n {isBorrowed && !isBorrowedByMe && !isMine && }\n\n {isBorrowed && isBorrowedByMe && !isMine && (\n \n )}\n\n {!isBorrowed && isRegistered && isMine && }\n \n )}\n\n {type === \"lostFound\" && (\n <>\n {!isMine && }\n {isMine && }\n \n )}\n\n {type === \"boxes\" && (\n <>\n {!isMine && }\n {isMine && }\n \n )}\n\n {type === \"freezer\" && (\n <>{}\n // <>\n // {isMine && (\n // {\n // if (history.length > 1) {\n // history.goBack();\n // } else {\n // history.replace(\"/\");\n // }\n // }}\n // onChangeType={setType}\n // />\n // )}\n // {!isMine && }\n // \n )}\n\n {type === \"html\" && (\n <>\n {isMine && }\n {!isMine && }\n \n )}\n \n )}\n \n )}\n \n \n );\n});\n","import React from \"react\";\nimport { EditFreezer, EditBoxes, EditLostFound, EditHtml, EditStatic, Content, Header, StackVert } from \".\";\nimport { RouteComponentProps, useHistory, withRouter } from \"react-router-dom\";\nimport { useObserveCode } from \"../hooks/useObserveCode\";\nimport { Language } from \"./Strings\";\nimport { CodePropsType } from \"../models\";\n\nconst strings = Language.strings;\n\ninterface EditItemProps extends RouteComponentProps {\n code: string;\n}\n\nexport const EditItem = withRouter(({ code, match }: EditItemProps) => {\n //@ts-ignore\n const qrCode = match.params.code || code;\n const { type, setType, hasCodeEditAccess } = useObserveCode({ code: qrCode, onSaved: () => {} });\n const history = useHistory();\n\n const onSaved = () => {\n if (history.length > 1) {\n history.goBack();\n } else {\n history.replace(\"/\");\n }\n };\n\n const onChangeType = (type: CodePropsType) => {\n setType(type);\n history.replace(\"/edit/\" + qrCode);\n };\n\n return (\n <>\n {hasCodeEditAccess && (\n \n
    \n \n {qrCode && (\n <>\n {type === \"freezer\" && (\n \n )}\n {type === \"boxes\" && (\n \n )}\n {type === \"lostFound\" && (\n \n )}\n {type === \"html\" && (\n \n )}\n {type === \"static\" && (\n \n )}\n \n )}\n \n \n )}\n \n );\n});\n","import { mergeStyleSets, Stack, StackItem } from \"@fluentui/react\";\nimport React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { Helpers } from \"../helpers\";\nimport { Content } from \"./Content\";\nimport { PageTitle, ParagraphText, StackVert, StackHorizontal, ParagraphLabel } from \"./Controls\";\nimport { Header } from \"./Header\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\nconst classNames = mergeStyleSets({\n fileIconImg: {\n verticalAlign: \"middle\",\n maxHeight: \"16px\",\n maxWidth: \"16px\",\n },\n});\nexport const ListItemsHelp = withRouter((props: any) => {\n //const statusIconFilename = Helpers.getStatusIconByName('in')\n\n return (\n \n
    \n \n {strings.listItemHelp_Header}\n {strings.listItemHelp_WhereIconHeader}\n \n \n \"Home\"\n \n \n {strings.listItemHelp_WhereIcon_Home}\n
    \n
    \n
    \n \n \n \"In\"\n \n \n {strings.listItemHelp_WhereIcon_In}\n
    \n
    \n
    \n \n \n \"Out\"\n \n \n {strings.listItemHelp_WhereIcon_Out}\n
    \n
    \n
    \n \n \n \"Freezer\"\n \n \n {strings.listItemHelp_WhereIcon_Freezer}\n
    \n
    \n
    \n\n {strings.listItemHelp_OtherHeader}\n \n \n {strings.generic_name}\n {strings.listItemHelp_Descr}\n {strings.listItemHelp_Image}\n \n \n
    \n
    \n \n );\n});\n","import { Dialog, DialogFooter, PrimaryButton, DefaultButton, DialogContent, TextField } from \"@fluentui/react\";\nimport React, { useState } from \"react\";\nimport { Store } from \"../models\";\nimport { Language } from \"./Strings\";\n\nconst strings = Language.strings;\n\ninterface CreateStoreDialogProps {\n hidden: boolean;\n onDismiss: () => void;\n onCreateStore: (store: Store) => void;\n}\n\nexport const CreateStoreDialog = (props: CreateStoreDialogProps) => {\n const { onCreateStore, onDismiss, hidden } = props;\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n\n const createStore = () => {\n onCreateStore({ name: name, description: description } as Store);\n // onDismiss();\n };\n\n const nameOk = name.trim().length > 2;\n const descriptionOk = description.trim().length > 2;\n\n return (\n