PageSourceSearch

https://admin.nutrislice.com/39.bb62551b16691e7e.js

js nutrislice.com collected 2026-09-24 09:34:00 UTC 28,390 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkadmin=self.webpackChunkadmin||[]).push([[39],{21478(M,p,l){l.d(p,{H:()=>a,h:()=>N});var m=l(6164),b=l(72629),e=l(92661),o=l(59365),t=l(26099),f=l(26501),n=l(28413),y=l(90997);const a=[{label:"None",value:e.kR.None},{label:"Agilysis Eatec",value:e.kR.Eatec},{label:"Aramark Activate",value:e.kR.AramarkActivate},{label:"Aramark Prima",value:e.kR.AramarkPrima},{label:"Aramark Prima V2",value:e.kR.AramarkPrimaV2},{label:"Cafe Bon Appetit",value:e.kR.CafeBonAppetit},{label:"CBORD NetMenu",value:e.kR.CbordNetmenu},{label:"CBORD FSS",value:e.kR.CbordFSS},{label:"CBORD FSS (On-Premise)",value:e.kR.CbordFSSOnprem},{label:"CentricOS",value:e.kR.CentricOS},{label:"Computrition",value:e.kR.Computrition},{label:"Computrition (On-Premise)",value:e.kR.ComputritionOnprem},{label:"Culinary Digital",value:e.kR.CulinaryDigital},{label:"Delegate",value:e.kR.Delegate},{label:"Galley",value:e.kR.Galley},{label:"Infor",value:e.kR.Infor},{label:"JAMIX",value:e.kR.Jamix},{label:"JAMIX V2",value:e.kR.JamixV2},{label:"Lightning Sync",value:e.kR.LightningSync},{label:"Menu Works",value:e.kR.MenuWorks},{label:"PCS TrakNow Cloud",value:e.kR.PCSTraknowCloud},{label:"PCS TrakNow OnPremise",value:e.kR.PCSTraknowOnpremise},{label:"Primero Edge",value:e.kR.PrimeroEdge},{label:"Titan School Solutions",value:e.kR.Titan},{label:"Webtrition 2.0 Menu Works",value:e.kR.WebtritionMenuWorks},{label:"Webtrition 3.0",value:e.kR.Webtrition3}],u=[{label:"Food Pro",value:e.wd.FoodPro},{label:"MCS",value:e.wd.MCS},{label:"Mosaic",value:e.wd.Mosaic},{label:"Nutrikids (Foods Only)",value:e.wd.NutrikidsFoodsOnly},{label:"Nutrikids (Sync Menus and Foods on Menus",value:e.wd.NutrikidsMenuPlusFoods},{label:"Nutrislice",value:e.wd.Nutrislice},{label:"Primero",value:e.wd.Primero},{label:"Sodexo ",value:e.wd.Sodexo}],k=[{label:"Site + Age Group + Serving Location + Meal Type",value:e.pF.SiteAgeGroupServingLocationMealType},{label:"Site Name + Age Group Name",value:e.pF.SiteNameAgeGroupName},{label:"Site Name + Menu Name",value:e.pF.SiteNameAndMenuName},{label:"Menu Name",value:e.pF.MenuName}],i=[{label:"Location Name + Service Area Name + Meal Period Name",value:e.ZY.MenuNameAsId},{label:"Location ID + Service Area ID + Meal Period ID",value:e.ZY.MenuNameAndId}
1],c=[{label:"Station Name + Menu Name + MenuID",value:e.hK.StationMenuId},{label:"Station Name + Brand Name + Menu Name + Menu ID",value:e.hK.StationBrandMenuId}],d=[{label:"Menu Name",value:e.kL.MenuName},{label:"Site Name + Menu Name",value:e.kL.SiteNameAndMenuName}],h=[{label:"Location Name + Menu Name + Meal Option Name",value:e.CA.LocationAndMenuAndMealOption},{label:"Location Name + Menu Type Name",value:e.CA.LocationAndMenuType},{label:"Location Name + Menu Type Name + Meal Option Name",value:e.CA.LocationAndMenuTypeAndMealOption},{label:"Location Name + Menu Name",value:e.CA.LocationAndMenuName}],w=[{label:"Store + Menu Name",value:e.qe.StoreAndMenuName}],C=[{label:"Location + Meal Period",value:e.dl.LocationAndMealPeriod},{label:"Menu Collection Name",value:e.dl.MenuCollectionName}],S=[{label:"Location + Meal Period",value:e.e9.LocationAndMealPeriod},{label:"Menu Collection Name + Meal Period",value:e.e9.MenuCollectionNameAndMealPeriod},{label:"Menu Collection Name",value:e.e9.MenuCollectionName}],v=[{label:"Menu Plan Template Name Only",value:e.Ev.TemplateNameOnly},{label:"Cost Center + Menu Plan Template Name",value:e.Ev.CostCenterAndTemplate}],_=[{label:"Logo Info",value:e.Yl.LogoInfo},{label:"Category Info",value:e.Yl.CategoryInfo}],I=[{label:"2 Weeks",value:e.Px.TwoWeek},{label:"3 Weeks",value:e.Px.ThreeWeek},{label:"4 Weeks",value:e.Px.FourWeek},{label:"5 Weeks",value:e.Px.FiveWeek},{label:"6 Weeks",value:e.Px.SixWeek},{label:"7 Weeks",value:e.Px.SevenWeek},{label:"8 Weeks",value:e.Px.EightWeek}],R=[{label:"Default",value:e.ag.Default},{label:"All Foods Nightly",value:e.ag.AllFoodsNightly},{label:"All Foods Weekly",value:e.ag.AllFoodsWeekly}],A=[{label:"Canada K12",value:e.xU.K12},{label:"Canada Non-K12",value:e.xU.NonK12},{label:'Off ("US"-style - location-based rates)',value:e.xU.Off}];function N(O,T){return{[e.RZ.appendUnitIdToImportId]:{control:()=>new o.O({label:"Use MDI unit ID and recipe ID to set Imported IDs for synchronized foods",tooltip:"Toggle this option on if recipes shared across units in CBORD are customized for each unit."}),lockable:!0},[e.RZ.aramarkPrimaV2EnabledLocations]:{control:()=>new t.l(t.g.Text,{label:"Enabled Locations",tooltip:"A semi-colon separated list of location ids that will sync menus. All locations with wanted menus need to be in this list"}),lockable:!0},[e.RZ.aramarkPrimaV2UseOrigCountToRemoveFoods]:{control:()=>new o.O({label:"Use Orig Count To Remove Foods",tooltip:'Off (default) - Foods stay on menus regardless of the Aramark Prima V2 "orig count" values.On - Menu items with an "orig count" of 0 (or no orig count) will be removed from menus during syncing.'}),lockable:!0},[e.RZ.centricOsFoodListStations]:{control:()=>new t.l(t.g.Text,{label:"Menu Categories that import as collapsed menus",tooltip:'A semicolon-delimited list of remote Menu Category IDs or Menu Category names that should be turned into collapsible stations within the menu (Ex: "2124;1567;1568" or "Condiments;Beverages").'}),lockable:!0},[e.RZ.centricOsStationsAsMenus]:{control:()=>new o.O({label:"Integrated Menu Categories created as separate Menus",tooltip:"Indicates whether the CentricOS integration should synchronize Menu Categories as stations or Menu Categories as Menus."}),lockable:!0},[e.RZ.dayToPublishNextMonth]:{control:()=>new n.T(new Array(31).fill(void 0).map((r,g)=>({label:`${g+1}`,value:g+1})),{label:"Automatic monthly menu publishing day of month",tooltip:"By default, menus for the following month become visible to clients on the 23rd of each month.\n                            Use this setting to change that to an earlier day."}),lockable:!0},[e.RZ.delegateCostCenterIds]:{control:()=>new t.l(t.g.Text,{label:"Cost Center IDs",tooltip:"A semicolon-delimited list of Cost Center IDs to sync. IDs can be alphanumeric."}),lockable:!0},[e.RZ.delegateImportComponentGroupsAsStations]:{control:()=>new o.O({label:"Import Component Groups as Stations"}),lockable:!0},[e.RZ.delegateMenuNameStyle]:{control:()=>new n.T(v,{label:"Menu Name Style",tooltip:"Indicates which data fields from Delegate are used when assigning a Menu Name to each menu that will be displayed in Nutrislice.",defaultValue:e.Ev.TemplateNameOnly}),lockable:!0},[e.RZ.delegateMenusToIgnore]:{control:()=>new t.l(t.g.Text,{label:"Menus to Ignore",tooltip:"A semicolon-delimited list of Template IDs to ignore during syncing. IDs can be alphanumeric."}),lockable:!0},[e.RZ.delegateSpecialDietsField]:{condition:r=>r.delegateSyncSpecialDiets,control:()=>new n.T(_,{label:"Special Diets Field",tooltip:"The field from Delegate used to populate special diets data.",defaultValue:e.Yl.LogoInfo}),lockable:!0},[e.RZ.delegateStationsAsCollapsed]:{control:()=>new t.l(t.g.Text,{label:"Stations to import as collapsed menus",tooltip:"A semicolon-delimited list of Component Group names to import as collapsed 
1stations."}),lockable:!0},[e.RZ.delegateStationsToIgnore]:{control:()=>new t.l(t.g.Text,{label:"Stations to Ignore",tooltip:"A semicolon-delimited list of Component Group names to ignore during syncing."}),lockable:!0},[e.RZ.delegateSyncMenuType]:{control:()=>new o.O({label:"Sync Menu Type"}),lockable:!0},[e.RZ.delegateSyncSpecialDiets]:{control:()=>new o.O({label:"Sync Special Diets"}),lockable:!0},[e.RZ.foodCategoryName]:{control:()=>new t.l(t.g.Text,{label:"Food Category Name",tooltip:"The category name of the tag that will be used to pull in default category values for integrated foods from the Galley system"}),lockable:!1},[e.RZ.foodOnlySyncSchedule]:{condition:r=>!r.syncMenus,control:()=>new n.T(R,{label:"Foods Synchronization Schedule",tooltip:"If Default or All Foods Weekly is set, existing foods on menus will sync nightly while new foods synced on the weekend. If All Foods Nightly is selected, new foods will sync every day. Only use the nightly option if needed by the customer as it creates a larger demand on the 3rd Party API and our systems."}),lockable:!1},[e.RZ.ignoreMenuItemsWithoutMdiCategory]:{control:()=>new o.O({label:"Ignore Menu Items without an assigned MDI category",tooltip:"Toggle this option on if any menu items without an assigned MDI Category in CBORD should not be included in integrated menus."}),lockable:!0},[e.RZ.ignoredRemoteStations]:{control:()=>new t.l(t.g.Text,{label:"Stations to ignore when syncing menus",tooltip:"A semicolon-delimited list of remote Station IDs or Station names that should be ignored when syncing menus (Ex: \u201c2124;1567;1568\u201d or \u201cCondiments;Beverages\u201d)."}),lockable:!0},[e.RZ.importMenusAsCollapsible]:{control:()=>new o.O({label:"Import Menus as Collapsible"}),lockable:!0},[e.RZ.importStationsAsMenus]:{control:()=>new o.O({label:"Integrated stations created as separate Menus",tooltip:"Indicates whether the integration should synchronize stations as stations or stations as menus."}),lockable:!0},[e.RZ.integratedFoodsAreLocked]:{control:()=>new o.O({label:"All integrated foods are locked"}),lockable:!0},[e.RZ.integratedMenusAreLocked]:{control:()=>new o.O({label:"All integrated menus are locked"}),lockable:!0},[e.RZ.integrationApiEndpoint]:{control:()=>new t.l(t.g.Text,{label:"Endpoint",tooltip:"The full API URL of this org\u2019s API installation"}),lockable:!1},[e.RZ.integrationApiCredentialList]:{condition:(r,g)=>g,control:()=>new y.B({label:"Api Credential List",tooltip:"A list of store|username|password combinations - one set per line."}),lockable:!1},[e.RZ.integrationApiClientId]:{control:()=>new t.l(t.g.Text,{label:"Client ID",tooltip:"Client/location-specific STS Gen2 client id."}),lockable:!1},[e.RZ.integrationApiPassword]:{control:()=>new t.l(t.g.Password,{label:"Password / API Key",tooltip:"The password or API key to be used to authenticate with the external system.",revealable:!0}),lockable:!1},[e.RZ.integrationApiUsername]:{control:()=>new t.l(t.g.Text,{label:"Username",tooltip:"The username provided for authenticating with the selected integration."}),lockable:!1},[e.RZ.integrationIncludeIngredients]:{control:()=>new o.O({label:"Sync ingredient lists for foods",tooltip:"If checked, common named ingredients will be included with the imported food."}),lockable:!0},[e.RZ.lightningSyncSystem]:{control:()=>new n.T(u,{label:"Lightning Sync System"}),lockable:!0},[e.RZ.lightningIsNameNormalizing]:{control:()=>new o.O({label:"Normalize Imported Food Names",tooltip:"Toggling this option on will result in the casing for food names to normalize to set a capital letter for the first letter of each word within food names.  Lower case values are then set for subsequent characters. "}),lockable:!1},[e.RZ.manufacturerLabelLinkText]:{control:()=>new t.l(t.g.Text,{label:"Manufacturer label link text",tooltip:"The text you would like to display with the download link for synced manufacturer labels"}),lockable:!1},[e.RZ.menuCategoryName]:{control:()=>new t.l(t.g.Text,{label:"Menu Category Name",tooltip:"The category name of the tag that will be used to aggregate menu data synced from the Galley system"}),lockable:!1},[e.RZ.menuNameStyle]:{control:()=>new n.T(k,{label:"Menu Name Style",tooltip:"Indicates which data fields, from a third-party integration partner, are used when assigning a Menu Name to each menu that will be displayed in Nutrislice. "}),lockable:!0},[e.RZ.menuNameStyleAramarkPrima]:{control:()=>new n.T(i,{label:"Menu Name Style",tooltip:"Indicates which data fields are used when assigning a menu name to menus synced to Nutrislice. "}),lockable:!0},[e.RZ.menuNameStyleCentricOs]:{control:()=>
1new n.T(c,{label:"Menu Name Style",tooltip:"Controls how menu names include station/category information from CentricOS"}),lockable:!0},[e.RZ.menuNameStyleJamix]:{control:()=>new n.T(h,{label:"Menu Name Style",tooltip:"Indicates which data fields are used when assigning a menu name to menus synced to Nutrislice. "}),lockable:!0},[e.RZ.menuNameStyleJamixV2]:{control:()=>new n.T(w,{label:"Menu Name Style",tooltip:"Indicates which data fields are used when assigning a menu name to menus synced to Nutrislice. ",defaultValue:e.qe.StoreAndMenuName}),lockable:!0},[e.RZ.menuNameStyleMenuWorks]:{control:()=>new n.T(S,{label:"Menu Name Style",tooltip:"Indicates which data fields from Menu Works are used when assigning a Menu Name to each menu that will be displayed in Nutrislice. "}),lockable:!0},[e.RZ.menuNameStylePrimeroEdge]:{control:()=>new n.T(d,{label:"Menu Name Style",tooltip:"Indicates which fields in PrimeroEdge will be used to create menus in Nutrislice."}),lockable:!0},[e.RZ.menuNameStyleWebtrition3]:{control:()=>new n.T(C,{label:"Menu Name Style",tooltip:"Indicates which data fields from Webtrition are used when assigning a Menu Name to each menu that will be displayed in Nutrislice. "}),lockable:!0},[e.RZ.menuSyncAccountIds]:{control:()=>new t.l(t.g.Text,{label:"Account IDs",tooltip:"Multiple IDs can be set in the textbox separated by commas"}),lockable:!0},[e.RZ.menuSyncDuration]:{condition:(r,g)=>g,control:()=>new n.T(I,{label:"Menu Sync Duration",tooltip:"Indicates how many weeks will sync during the weekend automated menu sync "}),lockable:!0},[e.RZ.menuSyncCanBlankOutMenuData]:{control:()=>new o.O({label:"Menu syncs can blank out menu data",tooltip:"When this setting is enabled, menu data can be blanked out via the menu sync process if no menu data is received from the external system for the associated menu day."}),lockable:!0},[e.RZ.menuSyncFoodImageBaseUrl]:{control:()=>new t.l(t.g.Text,{label:"Food image base URL",tooltip:"Client-specific base URL is input in this field in order to pull back food images"}),lockable:!0},[e.RZ.menuSyncLocationIds]:{control:()=>new t.l(t.g.Text,{label:"Location IDs",tooltip:"Multiple IDs can be set in the textbox separated by commas"}),lockable:!0},[e.RZ.menuSyncMealPeriodIds]:{control:()=>new t.l(t.g.Text,{label:"Meal Period IDs",tooltip:"Multiple IDs can be set in the textbox separated by commas"}),lockable:!0},[e.RZ.nameValueFilterFlag]:{control:()=>new o.O({label:"Enable Custom Menu Processing",tooltip:"Toggling on this feature allows for customized processing of menu name data in order to consolidate menus from the PCS and Titan systems."}),lockable:!0},[e.RZ.nameValueFilter]:{condition:r=>r.nameValueFilterFlag,control:()=>new t.l(t.g.Text,{label:"Custom Menu Name Processing Regex",tooltip:"A regex to be applied against menu data synced from Titan and PCS.  The regex code used to process the data can be coordinated with a member of the Nutrislice development team."}),lockable:!0},[e.RZ.nameValueFilterEmptyDefault]:{condition:r=>r.nameValueFilterFlag,control:()=>new t.l(t.g.Text,{label:"Custom Menu Name Default Value",tooltip:"Default when regex removes all data from Menu Name for PCS or Meal name for Titan."}),lockable:!0},[e.RZ.primaDisableIconSyncLogic]:{condition:(r,g)=>g,control:()=>new o.O({label:"Disable Icon Sync Logic",tooltip:"This option disables the logic of deleting the approver/date fields when an allergen statement is unavailable in Prima or an icon comes with an Unknown status."}),lockable:!1},[e.RZ.recipeCodeAsImportedId]:{control:()=>new o.O({label:"Use RecipeCode as Imported ID"}),lockable:!0},[e.RZ.skipPlannedMealCountMenuItems]:{control:()=>new o.O({label:"Skip menu items with zero planned count during syncing",tooltip:"Off - Planned count values are not checked when determining if items are to be included on a menu. On - Any menu items with a planned count of 0 will not be included on menus"}),lockable:!0},[e.RZ.stationCategoryName]:{control:()=>new t.l(t.g.Text,{label:"Station Category Name",tooltip:"The category name of the tag that will be used to assign stations in Nutrislice for menu items pulled in from the Galley system"}),lockable:!1},[e.RZ.syncAtRiskAllergens]:{control:()=>new o.O({label:"Sync At-risk Allergens",tooltip:'Indicates if allergens marked as "AtRisk" will be synced to integrated foods.'}),lockable:!0},[e.RZ.syncEatToExcelIcons]:{control:()=>new o.O({label:"Sync Eat to Excel Icons",tooltip:"If checked, the Eat to Excel icons will be synced for integrated foods when the required sync names are set up for each icon."}),lockable:!0},[e.RZ.syncFoodCategories]:{control:()=>new o.O({label:"Sync Food Categories",tooltip:"Indicates if food categories from the remote backend will be synced to integrated foods."}),lockable:!0},[e.RZ.syncFoodDescription]:{control:()=>new o.O({label:"Sync Food Description",tooltip:"Indicates if we will sync Food Description with the selected remote backend."}),lockable:!1},[e.RZ.syncFoodImages]:{control:()=>new o.O({label:"Sync Food Images",tooltip:"Indicates whether images available from the integration will be imported."}),lockable:!0},[e.RZ.syncFoods]:{control:()=>new f.D({customList:()=>O.asObservable(),label:"Foods Integration",labelGetter:r=>r.label||"",tooltip:"**Off**disables food sync with the remote backend. **On - Sync foods From Menus** indicates that foods placed on menus will be created and synced within this organization. **On - Sync Foods With Menus From Enterprise** indicates that foods placed on menus will be created and synced within the primary Enterprise account for this organization and then shared with all child organizations.",valueGetter:r=>r.value}),lockable:!0},[e.RZ.syncManufacturerLabelFiles]:{control:()=>new o.O({label:"Sync manufacturer label files"}),lockable:!0},[e.RZ.syncMenus]:{control:()=>new o.O({label:"Menus Integration",tooltip:"Indicated whether we will sync menus within the selected remote backend"}),lockable:!0},[e.RZ.syncMenuItemPrice]:{control:()=>new o.O({label:"Sync Menu Item Price",tooltip:"Indicates if we will sync price (either as a menu level override or within a specific food record) with the selected remote backend."}),lockable:!0},[e.RZ.syncMenusManually]:{control:()=>new o.O({label:"Sync Menus Only Manually",tooltip:"Indicated whether we will sync menus automatically or only on demand."}),lockable:!0},[e.RZ.syncRecipesOnly]:{control:()=>new o.O({label:"Sync Recipes Only",tooltip:"If checked, Nutrislice will only sync Recipes not other food types"}),lockable:!0},[e.RZ.taxCalculatorMode]:{condition:(r,g)=>g,control:()=>new n.T(A,{label:"Tax Calculator Mode",tooltip:'The Canadian Tax Calculator will only be applied when the location and/or organization is set to a Canadian province or territory, unless set to "Off". The specific province/territory\'s rules will be applied automatically when enbled.'}),lockable:!0},[e.RZ.titanMultiMealCollapsing]:{control:()=>new o.O({label:"Menus With Multiple Meals In Titan Set As Collapsible",tooltip:"If checked, menus with multiple meals in Titan will be imported as collapsible with the associated menu display name. If unchecked, menus with multiple meals in Titan will be synced as expanded menus with the associated menu display names. "}),lockable:!0},[e.RZ.titanSetMenuDisplayNamesAutomatically]:{control:()=>new o.O({label:"Set Menu Display Names Automatically",tooltip:"Toggling this option on will automatically set the Meal Name in Titan as the menu display name in Nutrislice for those integrated menus in Titan that use multiple meals."}),lockable:!0},[e.RZ.titanUseCategoriesAsStations]:{control:()=>new o.O({label:"Create Stations From Titan Recipe Categories",tooltip:"If checked, foods on menus will be inside stations named from the associated Titan Recipe Categories"}),lockable:!0},[e.RZ.translationTag]:{condition:r=>r.useRecipeNameTranslation,control:()=>new t.l(t.g.Text,{label:"Translation Tag",defaultValue:"FR",validation:{maxLength:{message:`Translation Tag must be ${b.M} characters or fewer`,validator:m.k0.maxLength(b.M)}}}),lockable:!1},[e.RZ.useLocationSpecificRecipes]:{control:()=>new o.O({label:"Use location-specific recipes",tooltip:"If checked, location-specific recipes will be synced from Galley based on the nutritional data assigned for that associated location."}),lockable:!0},[e.RZ.useMenuPlannedCount]:{control:()=>new o.O({label:"Check planned count during menu syncing",tooltip:"On - Total planned count for each menu item is checked and menu items with value of zero are skipped.  Off - Total planned count for each menu item is not checked and all menu items are included in the menu sync regardless of total planned count."}),lockable:!0},[e.RZ.useRecipeNameTranslation]:{control:()=>new o.O({label:"Utilize Name Translations",tooltip:'Selecting this option will set the recipe and ingredient names from the desired translation tag in the Jamix API response instead of using the "Recipe Name" or "Ingredient Name".'}),lockable:!1},[e.RZ.useStaticSizeForSyncedFoods]:{control:()=>new o.O({label:"Use Base Serving Size For All Foods",tooltip:"Selecting this option will lock in all recipes synced from the remote service to use the base serving size for all menu items."}),lockable:!0},[e.RZ.useSyncedCategoryAsMenuDisplayName]:{control:()=>new o.O({label:"Set Menu Display Name Using Menu Category",tooltip:"Selecting this option will cause the menu Display Name to be automatically populated with the incoming Menu Category or Menu Category Name sync field."}),lockable:!0},[e.RZ.utilizeIngredientListTranslations]:{control:()=>new o.O({label:"Utilize Ingredient List Translations",tooltip:"Selecting this option will allow supp
1ort for using translated ingredient lists when available."}),lockable:!0},[e.RZ.webtritionFoodListStations]:{control:()=>new t.l(t.g.Text,{label:"Stations that import as collapsed menus",tooltip:"A semicolon-delimited list of remote Station IDs or Station names that should be turned into collapsible stations within the menu (Ex: \u201c2124;1567;1568\u201d or \u201cCondiments;Beverages\u201d)."}),lockable:!0},[e.RZ.webtritionMenusToIgnore]:{control:()=>new t.l(t.g.Text,{label:"Menus to ignore when syncing menus",tooltip:"A semicolon-delimited list of remote Menu IDs (NOT Nutrislice IDs) for menus that should not be synchronized with Nutrislice (Ex: \u201c2124;1567;1568). Adding an ID to this list will not remove the menu from Nutrislice, if it was synchronized previously. It will simply stop synching it. "}),lockable:!0},[e.RZ.webtritionStationsAsMenus]:{control:()=>new o.O({label:"Integrated stations created as separate Menus",tooltip:"Indicates whether the Webtrition integrations should synchronize stations as stations or stations as menus."}),lockable:!0},[e.RZ.webtrition3LocationFilter]:{control:()=>new t.l(t.g.Text,{label:"Location Filter",tooltip:'A semicolon-delimited list of Webtrition Location IDs (NOT Nutrislice IDs) for locations to synchronized with Nutrislice (Ex: "2124;1567;1568). Adding an ID to this list will mean integration syncs will start for that location. If blank ALL locations accessible will be synced.'}),lockable:!0}}}},59160(M,p,l){l.d(p,{f:()=>u});var m=l(32479),b=l(99388),e=l(60211),o=l(59365),t=l(3822),f=l(87131),n=l(62552);let y=(()=>{class s{dialogRef;data;buttons=[{action:()=>this.cancel(),text:"Cancel"},{action:()=>this.confirm(),text:"Confirm"}];dontAskAgainFormControl;constructor(i,c){this.dialogRef=i,this.data=c}cancel(){this.dialogRef.close({dontAskAgain:this.dontAskAgainFormControl.control.value,locked:!1})}confirm(){this.dialogRef.close({dontAskAgain:this.dontAskAgainFormControl.control.value,locked:!0})}ngOnInit(){this.dontAskAgainFormControl=new o.O({defaultValue:this.data.dontAskAgain,label:"Don't ask me again"})}static \u0275fac=function(c){return new(c||s)(n.rXU(e.m),n.rXU(e.e))};static \u0275cmp=n.VBU({type:s,selectors:[["admin-global-settings-confirmation-dialog"]],decls:4,vars:2,consts:[["dialogTitle","Are you sure?",3,"dialogButtons"],[3,"nsControl"]],template:function(c,d){1&c&&(n.j41(0,"ns-dialog-content",0)(1,"p"),n.EFF(2," By locking this setting, all of your organizations will lose any customized value they may have. This cannot be undone. Would you like to continue? "),n.k0s(),n.nrm(3,"ns-checkbox-component",1),n.k0s()),2&c&&(n.Y8G("dialogButtons",d.buttons),n.R7$(3),n.Y8G("nsControl",d.dontAskAgainFormControl))},dependencies:[t.G,f.S],styles:["p[_ngcontent-%COMP%]{padding-bottom:2.4rem}"]})}return s})();var a=l(63770);let u=(()=>{class s{dialogService;dontAskAgain=!1;constructor(i){this.dialogService=i}confirm(i){return i?this.dontAskAgain?(0,b.of)(i):this.dialogService.open(y,{data:{locked:i,dontAskAgain:this.dontAskAgain}}).pipe((0,m.T)(c=>!!c&&(this.dontAskAgain=c.dontAskAgain,c.locked))):(0,b.of)(!1)}static \u0275fac=function(c){return new(c||s)(n.KVO(a.R))};static \u0275prov=n.jDH({token:s,factory:s.\u0275fac})}return s})()},44507(M,p,l){l.d(p,{I:()=>f});var m=l(83756),o=(l(99364),l(59160),l(35502)),t=l(62552);let f=(()=>{class n extends o.x{authService;confirmationDialog;isSuperUser=!1;lockableFields={};model;constructor(a,u,s){super(s),this.authService=a,this.confirmationDialog=u}ngOnInit(){this.isSuperUser=this.authService.get().isSuperUser(),super.ngOnInit()}addLockableField(a,u,s){this.lockableFields[a]=this.lockableFields[a]||{},this.lockableFields[a].lock={locked:this.model[u],toggleAsync:k=>this.openConfirmationDialog(k).pipe((0,m.M)(i=>{this.model[u]=i,s&&s.forEach(c=>{this.model[c]=i})}))}}addRemoveControl(a){super.addRemoveControl(a),a.add?(this.lockableFields[a.formKey]=this.lockableFields[a.formKey]||{},this.lockableFields[a.formKey].field=this.nsForm.nsControls[a.formKey],this.lockableFields[a.formKey].canUnlock=this.authService.get().actingOrg.is_enterprise):this.lockableFields[a.formKey]&&delete this.lockableFields[a.formKey].field}initForm(){super.initForm(),this.initLockableFields()}
1initLockableFields(){Object.keys(this.nsForm.nsControls).forEach(a=>{this.lockableFields[a]={field:this.nsForm.nsControls[a],canUnlock:this.authService.get().actingOrg.is_enterprise}}),this.defineLockableFields()}get isEnterprise(){return!this.authService.get()?.actingOrg.primary_enterprise_id}openConfirmationDialog(a){return this.confirmationDialog.confirm(a)}static \u0275fac=function(u){t.QTQ()};static \u0275dir=t.FsC({type:n,features:[t.Vt3]})}return n})()},98874(M,p,l){l.d(p,{g:()=>k});var m=l(6164),b=l(99364),o=(l(53321),l(59160)),t=l(44507),f=l(97552),n=l(26099),y=l(73007),a=l(62552);const s=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let k=(()=>{class i extends t.I{model;parentForm;constructor(d,h){super(d,h,"orgContactInfo")}buildForm(){const d={directorName:new n.l(n.g.Text,{label:"Contact Name",tooltip:"Will be displayed as part of the contact info panel contained in the page menu.",tooltipPosition:"above",validation:{required:{validator:m.k0.required},maxLength:{message:"Your Contact Name needs to be 100 or fewer characters",validator:m.k0.maxLength(100)}}}),contactEmail:new n.l(n.g.Text,{label:"Contact Email",tooltip:"Primary contact email for customers to get in touch with your organization. If provided, will be displayed as part of the contact info panel contained in the page menu.",tooltipPosition:"above",validation:{required:{validator:m.k0.required},pattern:{message:"Must be a valid email address",validator:m.k0.pattern(s)}}})};return new f.$(d)}defineLockableFields(){this.addLockableField("directorName","directorNameLock"),this.addLockableField("contactEmail","contactEmailLock")}formChange(d){void 0!==d.directorName&&(this.model.directorName=d.directorName),void 0!==d.contactEmail&&(this.model.contactEmail=d.contactEmail)}getInitialFormValues(){return{directorName:this.model.directorName,contactEmail:this.model.contactEmail}}static \u0275fac=function(h){return new(h||i)(a.rXU(b.u),a.rXU(o.f))};static \u0275cmp=a.VBU({type:i,selectors:[["admin-org-contact-info-subform"]],inputs:{model:"model",parentForm:"parentForm"},features:[a.Vt3],decls:4,vars:2,consts:[[1,"org-contact-info-subform"],[1,"org-contact-info-subform__row"],[3,"config"]],template:function(h,w){1&h&&(a.j41(0,"div",0)(1,"div",1),a.nrm(2,"ns-lockable-field",2)(3,"ns-lockable-field",2),a.k0s()()),2&h&&(a.R7$(2),a.Y8G("config",w.lockableFields.directorName),a.R7$(),a.Y8G("config",w.lockableFields.contactEmail))},dependencies:[y.q],styles:[".org-contact-info-subform__row[_ngcontent-%COMP%]{display:flex;gap:16px}.org-contact-info-subform__row[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1;max-width:48%}"]})}return i})()}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.